OSDN Git Service

* cfgcleanup.c (old_insns_match_p): Remove code to substitute
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
2
3         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
4         REG_EQUAL/REG_EQUIV notes.
5
6 2009-06-14  Richard Guenther  <rguenther@suse.de>
7
8         PR middle-end/40389
9         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
10         has its address taken if NRV was applied and it is addressable.
11         * tree-ssa-structalias.c (get_constraint_for_address_of): New
12         function split out from ...
13         (get_constraint_for_1): ... here.
14         (handle_rhs_call): Use it to mark the return slot escaped if
15         it is addressable and NRV was applied.
16
17 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18
19         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
20         Change first argument type to location_t.
21         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
22         Do not set input_location.
23         Use loc instead of input_location throughout.
24
25 2009-06-13  Richard Guenther  <rguenther@suse.de>
26
27         PR tree-optimization/40421
28         * tree-predcom.c (should_unroll_loop_p): Remove.
29         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
30
31 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
32
33         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
34         Add location argument.
35
36 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
37
38         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
39         build_decl.
40         * config/s390/s390.c (s390_build_builtin_va_list): Same.
41         (s390_gimplify_va_arg): Pass location to create_artificial_label.
42         * config/spu/spu-protos.h: Add location to
43         spu_resolve_overloaded_builtin.
44         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
45         spu_build_builtin_va_list.
46         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
47         argument.  Pass location to build_function_call_vec.
48         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
49         build_decl.
50         (emit_fpu_switch): Same.
51         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
52         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
53         to build_decl and create_artificial_label.
54         (xtensa_gimplify_va_arg_expr): Same.
55         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
56         (xstormy16_gimplify_va_arg_expr): Same.
57         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
58         * config/arm/arm.c (arm_build_builtin_va_list): Same.
59         * config/mips/mips.c (mips_build_builtin_va_list): Same.
60         (mips16_build_function_stub): Same.
61         (mips16_build_call_stub): Same.
62
63 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
64
65         PR target/40327
66         * arm/constraints.md (Pa, Pb): New constraints.
67         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
68         split pattern to deal with them.
69
70 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
71
72         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
73         fix index entry for -Xpreprocessor.
74
75 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
76
77         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
78         Add location argument to build_decl call.
79         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
80         (rs6000_init_builtins): Same.
81         (spe_init_builtins): Same.
82         (rs6000_gimplify_va_arg): Add location argument to
83         create_artificial_label call.
84
85 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
86
87         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
88         * combine-stack-adj.c (pass_stack_adjustments): Use it.
89         * Makefile.in: Fix GGC dependency for gcse.o.
90
91 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
92
93         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
94         * gimple-pretty-print.c (dump_gimple_stmt): Same.
95         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
96         created.
97         * c-parser.c (c_parser_binary_expression): Use current column while
98         building binary operations.
99         * common.opt (fshow-column): Enable by default.
100         * tree-vrp.c (check_array_ref): Use warning_at.
101         (check_array_bounds): Use location from call back if expr has no
102         location.
103         * tree.h: Add location argument to maybe_fold_*.
104         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
105         (maybe_fold_offset_to_array_ref): Add location argument and use it.
106         (maybe_fold_offset_to_component_ref): Same.
107         (maybe_fold_offset_to_reference): Same.
108         (maybe_fold_offset_to_address): Same.
109         (maybe_fold_stmt_indirect): Same.
110         (maybe_fold_stmt_addition): Same.
111         (fold_stmt_r): Pass location to maybe_fold_*.
112         (fold_gimple_assign): Same.
113         * c-tree.h: Add location argument to finish_decl,
114         default_function_array_conversion, store_init_value.
115         * c-decl.c (define_label): Use error_at.
116         (c_make_fname_decl): Pass location to finish_decl.
117         (finish_decl): New location argument.
118         (build_compound_literal): Pass location to store_init_value.
119         (grokdeclarator): Pass location to finish_decl.
120         (grokfield): Same.
121         * c-typeck.c (array_to_pointer_conversion): New location argument.
122         (function_to_pointer_conversion): Same.
123         (default_function_array_conversion): Same.
124         (parser_build_unary_op): Pass location to overflow_warning.
125         (parser_build_binary_op): Same.  Use warning_at.
126         (build_unary_op): Pass location to array_to_pointer_conversion.
127         (build_c_cast): Pass location to digest_init.
128         (build_modify_expr): New location argument.
129         (convert_for_assignment): Same.
130         (store_init_value): Same.
131         (digest_init): Same.
132         (output_init_element): Pass location to digest_init and
133         array_to_pointer_conversion.
134         (c_finish_return): Pass location to convert_for_assignment.
135         * gimplify.c (gimplify_conversion): Pass location to
136         maybe_fold_offset_to_address.
137         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
138         to maybe_fold_stmt_addition.
139         * c-omp.c (c_finish_omp_atomic): Pass new location to
140         build_modify_expr.
141         (c_finish_omp_for): Same.
142         * c-common.c (overflow_warning): New argument.
143         * c-common.h: New argument to build_modify_expr, overflow_warning.
144         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
145         finish_decl.
146         (c_parser_initializer): Pass location to
147         default_function_array_conversion.
148         (c_parser_initelt): Same.
149         (c_parser_initval): Same.
150         (c_parser_asm_operands): Same.
151         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
152         (c_parser_conditional_expression): Same.
153         (c_parser_binary_expression): Add location info to stack.  Use it.
154         (c_parser_unary_expression): Pass location to
155         default_function_array_conversion, parser_build_unary_op,
156         build_indirect_ref, c_parser_postfix_expression_after_primary.
157         (c_parser_postfix_expression_after_primary): New location argument.
158         Use it.
159         (c_parser_expression_conv): Pass location to
160         default_function_array_conversion.
161         (c_parser_expr_list): Same.
162         (c_parser_omp_atomic): Same.
163         (c_parser_omp_for_loop): Same.
164         * c-tree.h: (struct c_declarator): Add comment to id_loc.
165         (build_array_declarator): New argument.
166         * c-decl.c (build_array_declarator): Add location argument.
167         (grokdeclarator): Set id_loc for cdk_array.
168         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
169         build_array_declarator.
170         * tree.c (build_omp_clause): Add location argument.
171         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
172         (OMP_CLAUSE_LOCATION): New macro.
173         (struct tree_omp_clause): Add location field.
174         (build_omp_clause): Add argument.
175         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
176         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
177         build_omp_clause.
178         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
179         (cp_parser_omp_clause_collapse): Same.
180         (cp_parser_omp_clause_default): Same.
181         (cp_parser_omp_clause_if): Same.
182         (cp_parser_omp_clause_nowait): Same.
183         (cp_parser_omp_clause_num_threads): Same.
184         (cp_parser_omp_clause_ordered): Same.
185         (cp_parser_omp_clause_schedule): Same.
186         (cp_parser_omp_clause_untied): Same.
187         (cp_parser_omp_for_loop): Same.
188         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
189         * c-tree.h (c_start_case): Add location argument.
190         (c_process_expr_stmt): Same.
191         (c_finish_goto_*): Same.
192         * tree-parloops.c (initialize_reductions): Pass location to
193         build_omp_clause.
194         (create_parallel_loop): Same.
195         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
196         (gfc_trans_omp_reduction_list): Same.
197         (gfc_trans_omp_clauses): Same.
198         (gfc_trans_omp_do): Same.
199         * c-typeck.c (c_finish_goto_label): Same.
200         (c_finish_goto_ptr): New location argument.
201         (c_start_case): Same.
202         (emit_side_effect_warnings): Same.
203         (c_process_expr_stmt): Same.
204         (c_finish_stmt_expr): Same.
205         (c_finish_omp_clauses): Use error_at instead of error.
206         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
207         build_omp_clause.
208         * c-omp.c (c_split_parallel_clauses): New location argument.
209         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
210         to build_omp_clause.
211         (convert_local_reference_stmt): Same.
212         (convert_gimple_call): Same.
213         * c-common.h (c_split_parallel_clauses): New argument.
214         * c-parser.c (c_parser_statement_after_labels): Pass location to
215         c_finish_goto_label.
216         (c_parser_switch_statement): Pass location to c_start_case.
217         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
218         and c_process_expr_stmt.
219         (c_parser_omp_variable_list): Add location argument.
220         (c_parser_omp_clause_collapse): Pass location to
221         build_omp_clause.
222         (c_parser_omp_clause_default): Same.
223         (c_parser_omp_clause_if): Same.
224         (c_parser_omp_clause_num_threads): Same.
225         (-c_parser_omp_clause_ordered): Same.
226         (c_parser_omp_clause_reduction): Pass location to
227         c_parser_omp_variable_list.
228         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
229         (c_parser_omp_clause_untied): Same.
230         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
231         (c_parser_omp_parallel): Pass location to
232         c_split_parallel_clauses.
233
234         * c-tree.h (check_for_loop_decls, undeclared_variable,
235         build_component_ref, build_array_ref, build_external_ref,
236         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
237         build_conditional_expr, build_compound_expr, c_cast_expr,
238         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
239         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
240         argument.
241         * c-semantics.c (build_stmt): Same.
242         (build_case_label): Same.
243         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
244         (undeclared_variable): New argument.
245         (make_label): Same.
246         (lookup_label): Pass location on down.
247         (define_label): Same.
248         (finish_decl): Same.
249         (build_compound_literal): Same.
250         (finish_struct): Same.
251         (finish_function): Do not set location here.
252         (check_for_loop_decls): New argument.
253         * tree.c (save_expr): Set location.
254         (build_empty_stmt): New argument.
255         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
256         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
257         * builtins.c (gimplify_va_arg_expr): Use locations.
258         (expand_builtin_sync_operation): Same.
259         * c-typeck.c (build_component_ref): New argument.
260         (build_array_ref): Same.
261         (build_external_ref): Same.
262         (c_expr_sizeof_expr): Same.
263         (c_expr_sizeof_type): Same.
264         (parser_build_unary_op): Same.
265         (build_conditional_expr): Same.
266         (build_compound_expr): Pass location on down.
267         (build_compound_expr): New argument.
268         (build_c_cast): Same.
269         (c_cast_expr): Same.
270         (build_asm_expr): Same.
271         (c_finish_return): Same.
272         (c_process_expr_stmt): Pass location on down.
273         (c_finish_stmt_expr): New argument.
274         (push_clenaup): Same.
275         (c_finish_omp_parallel): Same.
276         (c_finish_omp_task): Same.
277         * gimplify.c (gimplify_call_expr): Pass location on down.
278         * c-omp.c (c_finish_omp_master): New argument.
279         (c_finish_omp_critical): Same.
280         (c_finish_omp_ordered): Same.
281         (c_finish_omp_barrier): Same.
282         (-c_finish_omp_taskwait): Same.
283         (c_finish_omp_atomic): Same.
284         (c_finish_omp_flush): Same.
285         * tree-inline.c (copy_tree_body_r): Pass location on down.
286         (inline_forbidden_p): Remove use of input_location.
287         * c-gimplify.c (c_build_bind_expr): New argument.
288         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
289         (c_sizeof_or_alignof_type): New argument.
290         (c_alignof_expr): Same.
291         (build_va_arg): Same.
292         (c_add_case_label): Same.
293         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
294         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
295         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
296         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
297         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
298         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
299         New argument.
300         * stub-objc.c (objc_build_selector_expr): Same.
301         (objc_build_throw_stmt): Same.
302         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
303         (c_parser_initelt): Same.
304         (c_parser_compound_statement): Same.
305         (c_parser_compound_statement_nostart): Same.
306         (c_parser_label): Same.
307         (c_parser_statement_after_labels): Same.
308         (c_parser_if_body): Same.
309         (c_parser_else_body): Same.
310         (c_parser_if_statement): Same.
311         (c_parser_switch_statement): Same.
312         (c_parser_while_statement): Same.
313         (c_parser_do_statement): Same.
314         (c_parser_for_statement): Same.
315         (c_parser_asm_statement): Same.
316         (c_parser_conditional_expression): Same.
317         (c_parser_binary_expression): Same.
318         (c_parser_cast_expression): Same.
319         (c_parser_unary_expression): Same.
320         (c_parser_sizeof_expression): Same.
321         (c_parser_alignof_expression): Same.
322         (c_parser_postfix_expression): Same.
323         (c_parser_expression): Same.
324         (c_parser_objc_receiver): Same.
325         (c_parser_omp_variable_list): Same.
326         (c_parser_omp_structured_block): Same.
327         (c_parser_omp_atomic): New argument.
328         (c_parser_omp_barrier): Same.
329         (c_parser_omp_critical): Same.
330         (c_parser_omp_flush): Pass location on down.
331         (c_parser_omp_for_loop): New argument.
332         (c_parser_omp_for): Same.
333         (c_parser_omp_master): Same.
334         (c_parser_omp_ordered): Same.
335         (c_parser_omp_sections_scope): Same.
336         (c_parser_omp_sections): Same.
337         (c_parser_omp_parallel): Same.
338         (c_parser_omp_single): Same.
339         (c_parser_omp_task): Same.
340         (c_parser_omp_taskwait): Pass location on down.
341         (c_parser_omp_construct): Same.
342         (c_parser_omp_threadprivate): Same.
343         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
344         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
345         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
346         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
347         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
348         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
349         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
350         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
351         config/i386/i386.c, stmt.c:
352         Add location argument to the following function definitions and/or
353         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
354         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
355         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
356         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
357         do_case, c_finish_bc_stmt, build_compound_literal,
358         build_function_call.
359         * c-decl.c (build_compound_literal): Add location argument.
360         Make all diagnostic calls use location.
361         (start_struct): Same.
362         (finish_struct): Same.
363         (start_enum): Same.
364         (build_enumerator): Same.
365         (start_function): Same.
366         (grokdeclarator): Make all diagnostic calls use location.
367         (store_parm_decls_oldstyle): Same.
368         * c-typeck.c (build_function_call): Add location argument.
369         Make all diagnostic calls use location.
370         (do_case): Same.
371         (c_finish_bc_stmt): Same.
372         * tree-nested.c (get_trampoline_type): Add argument.
373         Pass location to build_decl.
374         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
375         * rtl.h (RTL_LOCATION): New.
376         * c-common.c (c_add_case_label): Add location argument.
377         Make all diagnostic calls use location.
378         * c-common.h: Add location argument to make_fname_decl, do_case,
379         c_add_case_label, build_function_call, resolve_overloaded_builtin.
380         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
381         Set it appropriately for every case.  Pass enum_loc to start_enum
382         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
383         parser_xref_tag.
384         (c_parser_struct_or_union_specifier): Save location.  Use it for
385         start_struct, finish_struct, and parser_xref_tag.
386
387 2009-06-12  Ian Lance Taylor  <iant@google.com>
388
389         * fold-const.c (fold_unary): Rename local variable and to
390         and_expr.
391
392         * c-opts.c (c_common_handle_option): For -Wc++-compat set
393         cpp_opts->warn_cxx_operator_names.
394
395 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
396
397         PR tree-opt/38865
398         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
399         is returns NULL and OP is a VCE, look through the VCE.
400
401 2009-06-12  Ian Lance Taylor  <iant@google.com>
402
403         PR bootstrap/40430
404         * collect2.c (main): Use CONST_CAST2 in code inside #if
405         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
406
407 2009-06-12  Joey Ye  <joey.ye@intel.com>
408
409         PR middle-end/39146
410         * cfgexpand.c (get_decl_align_unit): Update
411         max_used_stack_slot_alignment with align instead of
412         stack_alignment_needed.
413
414         * function.c (assign_stack_local_1): Update
415         max_used_stack_slot_alignment with alignment_in_bits instead
416         of stack_alignment_needed.
417         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
418         here.
419
420 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
421
422         * dwarf2out.c (last_var_location_insn): New variable.
423         (dwarf2out_end_epilogue): Clear last_var_location_insn.
424         (dwarf2out_var_location): Don't record anything after last real
425         insn.  Only change labels if there were any real instructions
426         in between last note and this one, or if changed sections.
427
428 2009-06-11  Richard Henderson  <rth@redhat.com>
429
430         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
431         note when storing the frame pointer in a register.
432         (FRP): Don't redefine to nothing for epilogue.
433         (alpha_expand_epilogue): Mark register and sp restores.
434         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
435
436         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
437         when gen_lowpart is needed.
438
439 2009-06-11  Richard Henderson  <rth@redhat.com>
440
441         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
442
443         * dwarf2out.c (need_data_align_sf_opcode): New.
444         (div_data_align): Move earlier.
445         (def_cfa_1, reg_save): Use it.
446
447 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
448
449         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
450         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
451         (ix86_handle_option): Handle OPT_mcrc32.
452         (ix86_target_string): Add -mcrc32.
453         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
454
455         * config/i386/i386.h (TARGET_CRC32): New.
456
457         * config/i386/i386.md (sse4_2_crc32<mode>): Also check
458         TARGET_CRC32.
459         (sse4_2_crc32di): Likewise.
460
461         * config/i386/i386.opt (mcrc32: New.
462
463         * doc/invoke.texi: Document -mcrc32.
464
465 2009-06-11  Richard Henderson  <rth@redhat.com>
466
467         * common.opt (gdwarf-): Accept a version number.
468         * doc/invoke.texi (gdwarf-): Update docs.
469         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
470         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
471         version level, and record it.
472
473         * dwarf2.h (DW_CIE_VERSION): Remove.
474         * dwarf2out.c (DWARF_VERSION): Remove.
475         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
476         (output_call_frame_info): Use CIE version 3 for dwarf3,
477         or if the return register column is out of range for version 1.
478         (dwarf_stack_op_name): Add all dwarf3 values.
479         (DEBUG_PUBTYPES_SECTION): New.
480         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
481         encoding change for dwarf3.
482         (output_die) [dw_val_class_die_ref]: Likewise.
483         (output_compilation_unit_header): Emit correct version for dwarf3.
484         (output_line_info): Likewise.
485         (output_pubnames): Update for DWARF_VERSION removal.
486         (output_aranges): Likewise.
487         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
488         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
489         (dwarf2out_finish): Likewise.
490
491 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
492
493         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
494         in r148403.
495
496 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
497
498         PR c/39252
499         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
500         * builtins.c (expand_builtin_unreachable): New function.
501         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
502         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
503         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
504         successors.
505         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
506         searching for missing barriers.
507
508 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
509
510         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
511         when -fprofile-generate* was passed.
512         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
513
514 2009-06-11  Anthony Green  <green@moxielogic.com>
515
516         * config/moxie/moxie.md: Define length attribute for all
517         instructions.
518         (rCC): Define.
519         (*b<cond:code>): Support limited branch ranges for new PC-relative
520         branch instructions.
521         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
522
523 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
524
525         * config/i386/i386.c (min_insn_size): Use get_attr_length
526         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
527         For __asm return 0.
528
529         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
530         instead of emit_insn_before.
531
532 2009-06-10  Ian Lance Taylor  <iant@google.com>
533
534         PR bootstrap/40408
535         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
536         GIMPLE_SWITCH.
537
538 2009-06-10  Revital Eres  <eres@il.ibm.com>
539
540         * passes.c (init_optimization_passes): Reschedule
541         predictive-commoning pass before complete unroll pass.
542
543 2009-06-10  Martin Jambor  <mjambor@suse.cz>
544
545         * cgraph.c (cgraph_node_can_be_local_p): New function.
546         (cgraph_make_node_local): New function.
547         * cgraph.h (cgraph_node_can_be_local_p): Declare.
548         (cgraph_make_node_local): Declare.
549
550 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
551
552         * tree.h (tree_base): Add packed_flag and user_align fields.
553         Decrease size of spare field.
554         (TYPE_USER_ALIGN): Use user_align from tree_base.
555         (DECL_USER_ALIGN): Likewise.
556         (TYPE_PACKED): Use packed_flag from tree_base.
557         (DECL_PACKED): Likewise.
558         (tree_type): Delete packed_flag and user_align fields.  Widen
559         precision field.  Widen mode field and shuffle fields to align
560         mode on an 8-bit boundary.
561         (tree_decl_common): Delete decl_flag_1 and user_align fields.
562         Renumber decl_flag_* fields.  Fix comments.  Widen
563         decl_common_unused field.
564         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_*
565         fields.
566         (DECL_EXTERNAL): Likewise.
567         (DECL_BIT_FIELD): Likewise.
568         (DECL_NONADDRESSABLE_P): Likewise.
569         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
570         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
571
572 2009-06-10  Ian Lance Taylor  <iant@google.com>
573
574         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
575         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
576         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
577         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
578         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
579         DEF_VEC_ALLOC_FUNC_P.
580         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
581         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
582         DEF_VEC_ALLOC_FUNC_O.
583         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
584         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
585         DEF_VEC_ALLOC_FUNC_I.
586         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
587         (vec_stack_p_reserve_exact_1): Declare.
588         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
589         (vec_stack_free): Declare.
590         (VEC_stack_alloc): Define.
591         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
592         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
593         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
594         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
595         for void_p.
596         (stack_vecs): New static variable.
597         (vec_stack_p_reserve_exact_1): New function.
598         (vec_stack_o_reserve_1): New static function.
599         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
600         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
601         (vec_stack_free): New function.
602         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
603         (VEC_df_ref_stack_alloc): Define.
604         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
605         DEF_VEC_ALLOC_P_STACK.
606         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
607         (struct df_collection_rec): Change _vec fields to VEC.  Remove
608         _use fields.
609         (df_free_collection_rec): Adjust for new fields.
610         (df_insn_rescan): Use new df_collection_rec fields.
611         (df_notes_rescan, df_canonize_collection_rec): Likewise.
612         (df_ref_create_structure, df_ref_record): Likewise.
613         (df_get_conditional_uses, df_get_call_refs): Likewise.
614         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
615         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
616         (df_record_exit_block_uses, df_bb_verify): Likewise.
617         (df_swap_refs): Change ref_vec parameter to VEC.  Change all
618         callers.
619         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
620         Remove count parameter.  Change return type to void.  Change all
621         callers.
622         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
623         Remove count parameter.  Change return type to void.  Change all
624         callers.
625         (df_install_refs): Change old_vec parameter to VEC.  Remove count
626         parameter.  Change all callers.
627         (df_install_mws): Change old_vec parameter to VEC.  Remove count
628         parameter.  Change all callers.
629         (df_refs_verify): Change new_rec parameter to VEC.  Change call
630         callers.
631         (df_mws_verify): Likewise.
632
633 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
634
635         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
636
637 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
638
639         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
640
641 2009-06-10  Anthony Green  <green@moxielogic.com>
642
643         * config/moxie/crti.asm: New file.
644         * config/moxie/crtn.asm: New file.
645         * config/moxie/moxie.c: New file.
646         * config/moxie/moxie.h: New file.
647         * config/moxie/sfp-machine.h: New file.
648         * config/moxie/moxie-protos.h: New file.
649         * config/moxie/t-moxie: Created.
650         * config/moxie/t-moxie-softfp: Created.
651         * config/moxie/moxie.md: Created.
652         * config/moxie/constraints.md: Created.
653         * config.gcc: Add moxie support.
654         * doc/md.texi (Machine Constraints): Add moxie constraints.
655         * doc/contrib.texi (Contributors): Mention moxie port.
656         * doc/install.texi (Specific): Mention the moxie port.
657
658 2009-06-09  Ian Lance Taylor  <iant@google.com>
659
660         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
661         compiling with C++.
662         * optabs.c (optab_table): Only use designated initializers if
663         HAVE_DESIGNATED_INITIALIZERS is defined.
664         (convert_optab_table): Likewise.
665         (init_optabs): Always call init_insn_codes if
666         HAVE_DESIGNATED_INITIALIZERS is not defined.
667
668 2009-06-09  Ian Lance Taylor  <iant@google.com>
669
670         * targhooks.c (default_builtin_vectorized_function): Change fn
671         parameter to unsigned int.
672         (default_builtin_vectorized_conversion): Change code parameter to
673         unsigned int.
674         (default_builtin_reciprocal): Change fn parameter to unsigned int.
675         * targhooks.h: Update declarations.
676         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
677         parameter to unsigned int.
678
679         * c-typeck.c (comptypes_check_enum_int): New static function.
680         (comptypes_internal): Add enum_and_int_p parameter.  Change all
681         callers.
682         (comp_target_types): Add location parameter.  Change all callers.
683         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
684         Change all callers.
685         (function_types_compatible_p, type_lists_compatible_p): Likewise.
686         (build_conditional_expr): Add colon_loc parameter.  Change all
687         callers.
688         (convert_for_assignment): Add location parameter.  Change all
689         callers.
690         * c-parser.c (c_parser_conditional_expression): Pass location of
691         colon to build_conditional_expr.
692         * c-tree.h (build_conditional_expr): Update declaration.
693
694 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
695
696         * graphite.c: Revert previous patch.
697
698 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
699
700         PR bootstrap/40103
701         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
702
703 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
704
705         * tree-ssa-loop-prefetch.c
706         (loop_prefetch_arrays): Fixed a portability problem in printf format
707         string.
708
709 2009-06-09  Martin Jambor  <mjambor@suse.cz>
710
711         PR tree-optimization/40351
712         * tree-sra.c (propagate_subacesses_accross_link): Check that a refrence
713         to a potential artifical subaccess can be constructed.
714
715 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
716
717         * config/sh/sh-protos.h (sh_optimization_options): Declare.
718         (sh_override_options): Likewise.
719         * config/sh/sh.c: Include params.h.
720         (sh_optimization_options): New.
721         (sh_override_options): Likewise.
722         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
723         (OVERRIDE_OPTIONS): Use sh_override_options.
724
725 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
726
727         * dwarf2out.c (emit_cfa_remember): New variable.
728         (add_fde_cfi): If emit_cfa_remember, recurse to add
729         DW_CFA_remember_state first.
730         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
731         instead just set emit_cfa_remember.
732
733 2009-06-08  Jan Hubicka  <jh@suse.cz>
734
735         PR debug/40126
736         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
737
738 2009-06-08  Jan Hubicka  <jh@suse.cz>
739
740         PR middle-end/39834
741         * cgraphunit.c (save_inline_function_body): Do not copy transform hooks
742         for saved inline bodies.
743         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
744         for given function.
745
746 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
747
748         * jump.c (returnjump_p): Handle delayed branches.  Add missing
749         function comment.
750
751 2009-06-08  Jan Hubicka  <jh@suse.cz>
752
753         PR middle-end/40102
754         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
755         original node might've been modified.
756         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
757
758 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
759
760         * tree-object-size.c (addr_object_size): Add OSI argument.
761         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
762         (compute_builtin_object_size, expr_object_size): Adjust callers.
763         (plus_stmt_object_size): Call addr_object_size instead of
764         compute_builtin_object_size.
765
766 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
767             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
768         
769         * tree-ssa-loop-prefetch.c 
770         (gather_memory_references): Introduced a counter for the number of 
771         memory references.
772         (anything_to_prefetch_p): Introduced a counter for the number of 
773         prefetches.
774         (is_loop_prefetching_profitable): New function with a cost model 
775         for prefetching.
776         (loop_prefetch_arrays): Use the new cost model to determine if 
777         prefetching is profitable.
778         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
779         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
780         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
781         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
782         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
783         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
784         
785 2009-06-08  Michael Matz  <matz@suse.de>
786
787         PR debug/40012
788         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
789         partitions use the same.
790         (expand_one_var): Deal with DECL_RTL sometimes begin set also
791         for basevars of SSA_NAMEs.
792         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
793         to not expand them twice.
794         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
795         multiple places.
796
797 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
798
799         * common.opt (fcompare-debug=, fcompare-debug-second): New.
800         (fdump-final-insns=, gtoggle): New.
801         * doc/invoke.texi: Document them.
802         * final.c (rest_of_clean_state): Dump final insn stream.
803         * gcc.c (invoke_as): Hook in -fcompare-debug.
804         (static_spec_functions): Add compare-debug-dump-opt,
805         compare-debug-self-opt and compare-debug-auxbase-opt.
806         (compare_debug, compare_debug_second, compare_debug_opt): New.
807         (switches_debug_check, n_switches_debug_check): New.
808         (debug_auxbase_opt, debug_check_temp_file): New.
809         (process_command): Handle -fno-compare-debug, -fcompare-debug and
810         -fcompare-debug=*.
811         (do_self_spec): Handle arguments after switches.
812         (do_spec_1): Add .gk extension to temp file basenames for compare.
813         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
814         (cc1_options): Use it instead of normal auxbase computation for
815         the second compare-debug compilation.
816         (compare_files): New.
817         (main): Set up and implement compare debug mode.
818         (compare_debug_dump_opt_spec_function): New.
819         (compare_debug_self_opt_spec_function): New.
820         (compare_debug_auxbase_opt_spec_function): New.
821         * toplev.c (process_options): Handle flag_gtoggle,
822         flag_dump_final_insns.
823         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
824         during -fcompare-debug-second compilation.
825
826 2009-06-07  Ian Lance Taylor  <iant@google.com>
827
828         * dwarf2.h (enum dwarf_location_atom): Add
829         INTERNAL_DW_OP_tls_addr.
830         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
831
832         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
833         with no default node.  Change warning with %H to warning_at.
834         Don't clear warn_switch around case checking.
835         * doc/invoke.texi (Warning Options): Clarify distinction between
836         -Wswitch and -Wswitch-enum.
837
838 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
839
840         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
841
842 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
843
844         * gbl-ctors.h: Add header guard.
845
846 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
847
848         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
849         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
850         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
851         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
852         prototypes for removed functions.
853         (expressions_equal_p): Move to ...
854         * tree-ssa-sccvn.h: ... here and ...
855         * matrix-reorg.c: ... adjust includes.
856
857 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
858
859         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
860
861 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
862
863         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
864         (finish_function): Remove erroneous whitespace.
865
866 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
867
868         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
869         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
870
871 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
872
873         * errors.c (internal_error): Commentary typo fix.
874         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
875         * tree-ssa-pre.c: Ditto.
876
877 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
878
879         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
880         them is supposed to hold actual statements.
881
882 2009-06-06  Ian Lance Taylor  <iant@google.com>
883
884         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
885         empty statements can now have attributes.
886
887 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
888
889         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
890         * config/mips/mips.md: Ditto.
891
892 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
893
894         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
895         _RELOCATABLE.
896         (__eabi_uconvert): Likewise.
897
898 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
899
900         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
901         CFI_* definitions with IN_GCC.
902
903 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
904
905         * xcoffout.h (xcoffout_source_line): Update prototype.
906
907 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
908
909         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
910         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
911
912 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
913
914         PR middle-end/40340
915         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
916         inlined_function_outer_scope_p blocks for artificial inlines
917         even at -g0/-g1.
918         * tree.c (tree_nonartificial_location): Rewrite using
919         block_nonartificial_location.
920
921 2009-06-05  Revital Eres  <eres@il.ibm.com>
922             Leehod Baruch  <leehod@il.ibm.com>
923
924         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
925         (expand_expr_real_1): Remove comment.
926         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
927         Vectorize misaligned access when the target supports it.
928         (vect_supportable_dr_alignment): Check for unaligned access
929         support.
930         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
931         and remove asset.
932
933 2009-06-05  Julian Brown  <julian@codesourcery.com>
934
935         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
936         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
937
938 2009-06-05  Richard Guenther  <rguenther@suse.de>
939
940         PR bootstrap/40350
941         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
942         as possibly unused.
943
944 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
945
946         * config/s390/s390.c (global_not_special_regno_p): New static inline.
947         (save_gprs): Don't tell unwinder when a global register is saved.
948         (s390_emit_epilogue): Emit needed epilogue unwind info.
949
950 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
951
952         * dwarf2out.c (deferred_asm_name): New.
953         (add_name_and_src_coords_attributes): Defer creation of
954         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
955         computed yet.
956         (move_linkage_attr): New.
957         (dwarf2out_finish): Revisit deferrals and emit attributes at the
958         right place.
959
960 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
961
962         * tree-nested.c (finalize_nesting_tree_1): Declare the
963         frame_decl in the binding tree.
964
965 2009-06-04  Cary Coutant  <ccoutant@google.com>
966
967         * basic-block.h (struct basic_block_def): Add discriminator field.
968         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
969         callers.
970         * debug.c (do_nothing_debug_hooks): Add additional entry.
971         (debug_nothing_int_charstar_int): New function.
972         * debug.h (struct gcc_debug_hooks): Add parameter to source_line
973         hook.
974         (debug_nothing_int_charstar_int): New declaration.
975         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
976         discriminator value in .loc directive.
977         * final.c (last_discriminator): New variable.
978         (discriminator): New variable.
979         (final_start_function): Initialize above variables, pass current
980         discriminator to debug hook.
981         (notice_source_line): Check for discriminator change.
982         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
983         * sdbout.c (sdbout_source_line): New parameter.
984         * tree-cfg.c (struct locus_discrim_map): New structure type.
985         (discriminator_per_locus): New hash table.
986         (build_gimple_cfg): Allocate and free discriminator hash table.
987         (make_edges): Call assign_discriminator.
988         (locus_map_hash): New function.
989         (locus_map_eq): New function.
990         (next_discriminator_for_locus): New function.
991         (same_line_p): New function.
992         (assign_discriminator): New function.
993         (make_cond_expr_edges): Call assign_discriminator.
994         (make_gimple_switch_edges): Likewise.
995         (first_non_label_stmt): New function.
996         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
997         all callers.
998         * xcoffout.c (xcoffout_source_line): Add new parameter.
999
1000         * configure.ac (gcc_cv_as_discriminator): New configury check for
1001         gas support for discriminator.
1002         * configure: Regenerate.
1003         * config.in: Regenerate.
1004
1005 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1006
1007         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
1008         val after checking for integers.
1009
1010 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
1011
1012         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
1013         X64_REGPARM_MAX.
1014         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
1015         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
1016         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
1017         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
1018         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
1019         X64_SSE_REGPARM_MAX.
1020         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
1021         X64_SSE_REGPARM_MAX.
1022
1023 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
1024
1025         * gcc.c (report_times_to_file): New.
1026         (execute): Implement it.
1027         (process_command): Support -time=.
1028         * doc/invoke.texi: Document it.
1029
1030 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
1031
1032         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
1033         that have value exprs.
1034
1035 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
1036
1037         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
1038         declarations for constants until...
1039         (dw2_output_indirect_constant_1): ... this point.
1040
1041 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
1042
1043         PR target/10242
1044         * arm.md (arm_addsi3): Don't try to split an add with an
1045         eliminable register until after reload has completed.
1046
1047 2009-06-03  Ian Lance Taylor  <iant@google.com>
1048
1049         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
1050         * genattrtab.c (write_length_unit_log): Likewise.
1051         * genchecksum.c (dosum): Likewise.
1052         * gengtype.c (write_rtx_next): Likewise.
1053         (finish_root_table, write_roots): Likewise.
1054         * gimple.c (gimple_ops_offset_): Likewise.
1055         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
1056         * config/arc/arc.c (arc_attribute_table): Likewise.
1057         * config/arm/arm.c (arm_attribute_table): Likewise.
1058         * config/avr/avr.c (avr_attribute_table): Likewise.
1059         * config/crx/crx.c (crx_attribute_table): Likewise.
1060         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
1061         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
1062         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
1063         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
1064         * config/sh/sh.c (sh_attribute_table): Likewise.
1065         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
1066         * config/spu/spu.c (spu_attribute_table): Likewise.
1067         * config/v850/v850.c (v850_attribute_table): Likewise.
1068
1069         * config/alpha/alpha.c (vms_attribute_table): Make static.
1070         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
1071         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
1072         * config/mips/mips.c (mips_attribute_table): Likewise.
1073
1074         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
1075         $(SYSTEM_H).
1076         (cc1-checksum.o): Likewise.
1077
1078 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
1079
1080         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
1081
1082 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
1083
1084         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
1085         insn if it is changing sp.  Use gen_add3_insn instead of
1086         conditionally gen_addsi3 and gen_adddi3.
1087         (offset_below_red_zone_p): New static inline function.
1088         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
1089         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
1090         * config/rs6000/ppc-asm.h: Include auto-host.h.
1091         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
1092         CFI_RESTORE): Define.
1093         * config/rs6000/crtresxgpr.asm: Add unwind info.
1094         * config/rs6000/crtresxfpr.asm: Likewise.
1095         * config/rs6000/crtresgpr.asm: Likewise.
1096         * config/rs6000/crtresfpr.asm: Likewise.
1097         * config/rs6000/crtsavgpr.asm: Likewise.
1098         * config/rs6000/crtsavfpr.asm: Likewise.
1099
1100         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
1101         0 to second argument of DWARF2_FRAME_REG_OUT macros.
1102
1103 2009-06-03  Julian Brown  <julian@codesourcery.com>
1104
1105         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
1106         words or less (including TImode) in core registers.
1107
1108 2009-06-03  Richard Guenther  <rguenther@suse.de>
1109
1110         PR middle-end/40328
1111         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
1112
1113 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
1114
1115         * statistics.c (statistics_counter_event): Do not record event 
1116         in pass dump if its number == -1.
1117         (curr_statistics_hash): Add assert that we never get passes 
1118         with static number == -1.
1119
1120 2009-06-03  Richard Guenther  <rguenther@suse.de>
1121             Andrey Belevantsev  <abel@ispras.ru>
1122
1123         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
1124         non-BLKmode arrays addressable.
1125
1126 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
1127
1128         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
1129         * config/m68k/m68k.h: ... here.
1130         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
1131         m68k and fido.
1132
1133 2009-06-03  Martin Jambor  <mjambor@suse.cz>
1134
1135         PR tree-optimization/40323
1136         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
1137         assignment.
1138
1139 2009-06-03  Richard Guenther  <rguenther@suse.de>
1140
1141         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
1142         consistently.
1143
1144 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
1145
1146         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
1147         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
1148         JUMP_TABLE_DATA_P where applicable.
1149         * config/sh/sh.c: Ditto.
1150         * config/sh/sh.h: Ditto.
1151         * config/sh/sh.md: Ditto.
1152         * config/sh/symbian.c: Ditto.
1153
1154 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
1155
1156         * config/i386/driver-i386.c (describe_cache): Optimize
1157         concatenation of strings.  Use snprintf instead of sprintf.
1158         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
1159         target when not compiling with GCC.
1160
1161 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
1162
1163         * config/sh/sh.c: Revert last change.
1164         (sh_expand_epilogue): Emit a blockage insn before the frame
1165         pointer adjustment unconditionally.
1166
1167 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1168
1169         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
1170         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
1171         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
1172         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
1173         to COLLECT_GCC_OPTIONS.
1174
1175 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1176
1177         * collect2.c (target_system_root): New variable.
1178         (main): Handle --sysroot=.
1179         (ignore_library): Strip the sysroot from the library path.
1180
1181 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1182
1183         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
1184         (collect2.o): Depend on collect2-aix.h.
1185         (collect2-aix.o): New rule.
1186         * collect2-aix.h: New file.
1187         * collect2-aix.c: Likewise.
1188         * collect2.c: Include collect2-aix.h.  Don't undefine
1189         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
1190         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
1191         Use TARGET_AIX_VERSION instead of _AIX51.
1192         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
1193         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
1194         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
1195         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
1196         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
1197
1198 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1199
1200         * collect2.c (ignore_library): Avoid premature post-increment
1201         and null deference.
1202
1203 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1204
1205         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
1206         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
1207         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
1208         CROSS_DIRECTORY_STRUCTURE too.
1209         (LINK_LIBG_SPEC): Likewise.
1210         (LIB_SPEC): Add %R to sysroot paths.
1211         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
1212         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
1213         * config/rs6000/aix51.h: As for aix43.h.
1214         * config/rs6000/aix52.h: Likewise.
1215         * config/rs6000/aix53.h: Likewise.
1216         * config/rs6000/aix61.h: Likewise.
1217         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
1218         to the beginning of sysroot paths.
1219
1220 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1221
1222         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
1223         INSN_LISTs that are out of the REG_NOTE range.
1224
1225 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1226
1227         * loop-unroll.c (struct iv_to_split): Add pointer to next.
1228         (struct var_to_expand): Likewise.
1229         (struct opt_info): Add head and tail for linked lists of the above.
1230         (analyze_insn_to_expand_var): Initialize next.
1231         (analyze_iv_to_split_insn): Likewise.
1232         (analyze_insns_in_loop): Create linked lists.
1233         (allocate_basic_variable): Simplify for use without hash table.
1234         (insert_var_expansion_initialization): Likewise, make it type-safer.
1235         (combine_var_copies_in_loop_exit): Likewise.
1236         (apply_opt_in_copies): Walk lists rather than hash tables.
1237         (release_var_copies): Simplified and inlined by hand into...
1238         (free_opt_info): ... this function.
1239
1240 2009-06-02  Richard Guenther  <rguenther@suse.de>
1241
1242         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
1243         for field decls.
1244
1245 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1246
1247         * cfgexpand.c (gimple_expand_cfg): Discard the source location
1248         only for builtins that are not overridden.
1249
1250 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1251
1252         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
1253         label string.
1254
1255 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1256
1257         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
1258
1259 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1260
1261         * combine.c (move_deaths): Compare LUIDs within the same BB only.
1262
1263 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1264
1265         * common.opt (fdump-unnumbered-links): New.
1266         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
1267         * print-rtl.c (flag_dump_unnumbered_links): New.
1268         (print_rtx): Test it.
1269
1270 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
1271
1272         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
1273         push/pop multiple to 8-byte alignment.
1274
1275 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
1276
1277         * config/i386/i386.c (queued_cfa_restores): New static variable.
1278         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
1279         functions.
1280         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
1281         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
1282         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
1283         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
1284         note unconditionally.
1285         (ix86_emit_restore_regs_using_mov): Likewise.
1286         (ix86_emit_restore_sse_regs_using_mov): Likewise.
1287         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
1288         it through to ix86_emit_restore_reg_using_pop.
1289         (ix86_emit_leave): Add RED_OFFSET argument.  Call
1290         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
1291         instead of adding REG_CFA_OFFSET note unconditionally.
1292         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
1293         the above functions.  Call ix86_add_queued_cfa_restore_notes when
1294         needed.
1295
1296         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
1297         force output of the label even for dwarf2out_do_cfi_asm.
1298         (add_fde_cfi): If -g2 and above and cfi might change CFA,
1299         force creation of CFI label and chain DW_CFA_set_loc jumping to it
1300         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
1301         caller.
1302         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
1303         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
1304         dwarf2out_cfi_label callers.
1305         * tree.h (dwarf2out_cfi_label): Adjust prototype.
1306         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
1307         Adjust dwarf2out_cfi_label callers.
1308         * config/vax/vax.c (vax_output_function_prologue): Likewise.
1309
1310         * config/i386/i386.h (struct machine_cfa_state,
1311         struct machine_function): Guard with ifndef USED_FOR_TARGET
1312         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
1313
1314         PR other/40024
1315         * emutls.c (__emutls_get_address): Change arr->size to mean number
1316         of allocated arr->data entries instead of # of slots + 1.
1317
1318         PR middle-end/40316
1319         * recog.c (peep2_reinit_state): New function.
1320         (peephole2_init_state): Use it at the end of a basic block and also
1321         when seeing a RTX_FRAME_RELATED_P insn.
1322
1323 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
1324
1325         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
1326         fixuns_truncrfdi2): New.
1327         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
1328         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
1329         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
1330         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
1331         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
1332         *recip_approx): Remove.
1333         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
1334         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
1335         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
1336         move to div.md.
1337         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
1338         setf_exp_rf): New.
1339
1340 2009-06-01  Ian Lance Taylor  <iant@google.com>
1341
1342         * attribs.c (register_attribute): Use CONST_CAST.
1343         * collect2.c (main): Use CONST_CAST2.
1344         (scan_prog_file): Likewise.
1345         * gcc.c (process_command, main): Likewise.
1346         * toplev.c (toplev_main): Likewise.
1347
1348         * c-typeck.c (handle_warn_cast_qual): New static function,
1349         partially broken out of build_c_cast.
1350         (build_c_cast): Call handle_warn_cast_qual.
1351         * doc/invoke.texi (Warning Options): Document new effect of
1352         -Wcast-qual.
1353
1354 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
1355
1356         * diagnostic.c (diagnostic_build_prefix): Always print columns.
1357         (diagnostic_report_current_module): Print columns.
1358         * common.opt (flag_show_column): Enable by default.
1359
1360 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
1361
1362         * alias.c (find_base_term): Check for NULL term before returning.
1363
1364 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
1365
1366         Revert due to PR40320:
1367         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
1368         * calls.c (emit_library_call_value_1): Don't force_operand for move
1369         and push insns.
1370
1371 2009-06-01  Olivier Hainque  <hainque@adacore.com>
1372             Eric Botcazou  <ebotcazou@adacore.com>
1373
1374         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
1375         to be processed as a bitfield for constructor output purposes.
1376         * output.h (initializer_constant_valid_for_bitfield_p): Declare
1377         new function.
1378         * varasm.c (oc_local_state): New type, output_constructor
1379         local state to support communication with helpers.
1380         (oc_outer_state): New type, output_constructor outer state of
1381         relevance in recursive calls.
1382         (output_constructor_array_range): New output_constructor helper,
1383         extracted code for an array range element.
1384         (output_constructor_regular_field): New output_constructor helper,
1385         extracted code for an element that is not a bitfield.
1386         (output_constructor_bitfield): New output_constructor helper,
1387         extracted code for a bitfield element.  Accept an OUTER state
1388         argument for recursive processing.  Recurse on record or array
1389         CONSTRUCTOR values, possibly past noop conversions.
1390         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
1391         VALUE is a valid constant-valued expression for use in a static
1392         bit-field initializer.
1393         (output_constructor): Rework to use helpers.  Accept and honor an
1394         OUTER state argument for recursive calls.  Return total size.  Be
1395         prepared for nested constructors initializing bitfields.
1396         (output_constant): Feed OUTER in calls to output_constructor.
1397
1398 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
1399
1400         * calls.c (emit_library_call_value_1): Don't force_operand for move
1401         and push insns.
1402
1403 2009-06-01  Nick Clifton  <nickc@redhat.com>
1404
1405         * doc/invoke.texi (IA-64 Options): Fix typo.
1406
1407 2009-06-01  Ira Rosen  <irar@il.ibm.com>
1408
1409         PR tree-optimization/39129
1410         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
1411         printed message.
1412         (vect_do_peeling_for_loop_bound): Use 
1413         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
1414         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
1415         (vect_loop_versioning): Likewise.
1416         (vect_create_cond_for_alias_checks): Fix indentation.
1417         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
1418         macros.
1419         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
1420         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
1421         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
1422         "control flow in loop".
1423         (vect_estimate_min_profitable_iters): Use 
1424         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
1425         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
1426         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
1427         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
1428         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
1429         statement belongs to a group of strided accesses with the exact code 
1430         check.
1431         (vectorizable_load): Likewise.
1432         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
1433         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1434
1435 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
1436
1437         * config/freebsd-stdint.h: New file.
1438         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
1439         Add freebsd-stdint.h to tm_file.
1440
1441 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
1442
1443         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
1444         (thumb2_extendhidi2): Likewise.
1445
1446 2009-05-31  Ian Lance Taylor  <iant@google.com>
1447
1448         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
1449
1450 2009-05-31  Ian Lance Taylor  <iant@google.com>
1451
1452         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
1453         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
1454         (ipa-reference.o): Depend upon gt-ipa-reference.h.
1455
1456 2009-05-31  Jason Merrill  <jason@redhat.com>
1457
1458         * tree-pretty-print.c (print_call_name): Take the callee, not the
1459         call itself.  Make non-static.  Use dump_function_name for functions.
1460         (dump_generic_node): Adjust.
1461         * diagnostic.h: Declare print_call_name.
1462         * gimple-pretty-print.c (dump_gimple_call): Use it.
1463
1464 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
1465
1466         * config/sh/sh.md (ashldi3_std): New define_expand.
1467         (ashldi3): Use it.
1468
1469 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
1470
1471         PR target/40313
1472         * config/sh/sh.c: Include debug.h.
1473         (sh_expand_epilogue): Emit a blockage insn before the frame
1474         pointer adjustment also when dwarf2out_do_frame returns true.
1475
1476 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
1477
1478         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
1479         (thumb2_extendqidi2): New pattern.
1480
1481 2009-05-31  Ira Rosen  <irar@il.ibm.com>
1482
1483         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
1484         mark phis for renaming.
1485         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
1486         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
1487         Call mark_sym_for_renaming.
1488         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
1489         * tree-vect-loop.c (vect_transform_loop): Remove
1490         vect_memsyms_to_rename initialization and a call to
1491         mark_set_for_renaming.
1492
1493 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
1494
1495         PR middle-end/40304
1496         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
1497         frame related even if !set_cfa && style < 0.
1498
1499 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
1500
1501         * config/i386/mingw-tls.c: New file.
1502         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
1503         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
1504         defining _WIN32 but not __CYGWIN__.
1505
1506 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1507
1508         * configure.ac: Add MPC support.
1509         
1510         * config.in, configure: Regenerate.     
1511
1512 2009-05-29  Richard Henderson  <rth@redhat.com>
1513
1514         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
1515         NOTE_INSN_BASIC_BLOCK.
1516         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
1517         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
1518         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
1519         to be deleted.
1520         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
1521         add in_use field.
1522         (add_cfi): Disable check redefining cfa away from drap.
1523         (lookup_cfa_1): Add remember argument; handle remember/restore.
1524         (lookup_cfa): Pass remember argument.
1525         (cfa_remember): New.
1526         (compute_barrier_args_size_1): Remove sibcall check.
1527         (dwarf2out_frame_debug_def_cfa): New.
1528         (dwarf2out_frame_debug_adjust_cfa): New.
1529         (dwarf2out_frame_debug_cfa_offset): New.
1530         (dwarf2out_frame_debug_cfa_register): New.
1531         (dwarf2out_frame_debug_cfa_restore): New.
1532         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
1533         (dwarf2out_begin_epilogue): New.
1534         (dwarf2out_frame_debug_restore_state): New.
1535         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
1536         DW_CFA_restore_state.
1537         (output_cfi_directive): Likewise.
1538         (convert_cfa_to_fb_loc_list): Likewise.
1539         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
1540         * dwarf2out.h: Update.
1541         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
1542         (copy_insn_1): Early out for null.
1543         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
1544         and dwarf2out_frame_debug_restore_state.
1545         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
1546         (prologue_insn_hash, epilogue_insn_hash): New.
1547         (free_after_compilation): Adjust freeing accordingly.
1548         (record_insns): Create hash table if needed; push insns into
1549         hash instead of array.
1550         (maybe_copy_epilogue_insn): New.
1551         (contains): Search hash table instead of array.
1552         (sibcall_epilogue_contains): Remove.
1553         (thread_prologue_and_epilogue_insns): Split eh_return insns
1554         and mark them as epilogues.
1555         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
1556         scanning in terms of basic blocks.
1557         * insn-notes.def (CFA_RESTORE_STATE): New.
1558         * jump.c (returnjump_p_1): Accept EH_RETURN.
1559         (eh_returnjump_p_1, eh_returnjump_p): New.
1560         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
1561         CFA_REGISTER, CFA_RESTORE): New.
1562         * rtl.def (EH_RETURN): New.
1563         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
1564
1565         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
1566         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
1567
1568         * config/i386/i386.c (gen_push): Update cfa state.
1569         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
1570         add a CFA_ADJUST_CFA note.
1571         (ix86_dwarf_handle_frame_unspec): Remove.
1572         (ix86_expand_prologue): Update cfa state.
1573         (ix86_emit_restore_reg_using_pop): New.
1574         (ix86_emit_restore_regs_using_pop): New.
1575         (ix86_emit_leave): New.
1576         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
1577         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
1578         * config/i386/i386.h (struct machine_cfa_state): New.
1579         (ix86_cfa_state): New.
1580         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
1581         (eh_return_internal): Merge from eh_return_<mode>,
1582         use eh_return rtx, split w/ epilogue.
1583
1584 2009-05-29  Ian Lance Taylor  <iant@google.com>
1585
1586         * builtins.c (validate_gimple_arglist): Don't use va_arg with
1587         enum type.
1588         * calls.c (emit_library_call_value_1): Likewise.
1589
1590         * c-typeck.c (c_build_va_arg): New function.
1591         * c-tree.h (c_build_va_arg): Declare.
1592         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
1593         instead of build_va_arg.
1594
1595 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
1596
1597         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
1598         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
1599         (ptr_difference_cost): Use affine combinations to compute it.
1600         (difference_cost): Likewise.
1601         (get_computation_cost_at): Compute more accurate cost for addresses
1602         if the ratio is a multiplier allowed in addresses.
1603         For non-addresses, consider that an additional offset or symbol is
1604         added only once.
1605
1606 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1607
1608         * config/i386/i386.c (ix86_decompose_address): Avoid useless
1609         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
1610
1611         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
1612         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
1613         (prefix_rex): For UNIT_MMX don't imply the prefix by default
1614         if MODE_DI.
1615         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
1616         to 1 for TYPE_SSE{IADD1,CVT1}.
1617         (prefix_vex_imm8): Removed.
1618         (length_vex): Only pass 1 as second argument to
1619         ix86_attr_length_vex_default if prefix_extra is 0.
1620         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
1621         (length): For prefix vex computation use length_immediate
1622         attribute instead of prefix_vex_imm8.
1623         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
1624         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
1625         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
1626         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
1627         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
1628         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
1629         a space in between the operands.
1630         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
1631         if one operand is 0xff and the other one si, di, bp or sp.
1632         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
1633         other one si, di, bp or sp.
1634         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
1635         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
1636         type and mode attributes.
1637         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
1638         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
1639         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
1640         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
1641         prefix_data16 attribute iff MODE_DF.
1642         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
1643         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
1644         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
1645         constm128_operand in length_immediate computation.
1646         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
1647         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
1648         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
1649         length_immediate attribute to 1.
1650         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
1651         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
1652         for certain alternatives.
1653         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
1654         prefix_data16 attribute if MODE_V1DF.
1655         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
1656         length_immediate to 1.
1657         (set_got_rex64, set_rip_rex64): Remove length attribute, set
1658         length_address to 4, set mode attribute to MODE_DI.
1659         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
1660         (fxam<mode>2_i387): Set length attribute to 4.
1661         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
1662         *prefetch_3dnow_rex): Override length_address attribute.
1663         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
1664         attributes.
1665         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
1666         (constm128_operand): Removed.
1667         * config/i386/i386.c (memory_address_length): For
1668         disp && !index && !base in 64-bit mode account for SIB byte if
1669         print_operand_address can't optimize disp32 into disp32(%rip)
1670         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
1671         for fs: or gs: segment.
1672         (ix86_attr_length_immediate_default): When checking if shortform
1673         is possible, truncate immediate to the length of the non-shortened
1674         immediate.
1675         (ix86_attr_length_address_default): Ignore MEM_P operands
1676         with X constraint.
1677         (ix86_attr_length_vex_default): Only check for DImode on
1678         GENERAL_REG_P operands.
1679         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
1680         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
1681         (sse_cvttps2pi): Clear prefix_rep attribute.
1682         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
1683         attribute.
1684         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
1685         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
1686         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
1687         iff operand 2 is const_int_operand.
1688         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
1689         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
1690         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
1691         instead of vex.
1692         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
1693         prefix_data16.
1694         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
1695         prefix_data16 attribute for movlpd and movhpd instructions.
1696         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
1697         length_immediate for shufpd instruction.
1698         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
1699         (avx_cmpp<avxmodesuffixf2c><mode>3,
1700         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
1701         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
1702         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
1703         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
1704         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
1705         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
1706         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
1707         prefix_data16 attribute for the first alternative to 1.
1708         (*avx_loadlps): Override length_immediate for the first alternative.
1709         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
1710         attributes for second alternative.
1711         (*vec_concatv2sf_sse4_1): Override length_immediate and
1712         prefix_data16 attributes for second alternative.
1713         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
1714         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
1715         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
1716         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
1717         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
1718         prefix_data16 and length_immediate to 1.
1719         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
1720         to 1.
1721         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
1722         prefix_extra attribute for variants that don't have 0f prefix alone.
1723         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
1724         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
1725         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
1726         *sse4_1_pextrd): Set length_immediate to 1.
1727         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
1728         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
1729         to 1.
1730         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
1731         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
1732         length_immediate to 1 for second alternative.
1733         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
1734         prefix_extra and length_immediate attributes for the first
1735         alternative.
1736         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
1737         first alternative.
1738         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
1739         to 1 for the first and third alternative.
1740         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
1741         alternative.
1742         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
1743         attribute.
1744         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
1745         attribute to 0.
1746         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
1747         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
1748         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
1749         *avx_psign<mode>3): Set prefix_extra attribute to 1.
1750         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
1751         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
1752         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
1753         ssse3_psign<mode>3): Override prefix_rex attribute.
1754         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
1755         (ssse3_palignrti): Override length_immediate to 1.
1756         (ssse3_palignrdi): Override length_immediate to 1, override
1757         prefix_rex attribute.
1758         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
1759         (sse4a_extrqi): Override length_immediate to 2.
1760         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
1761         (sse4a_insertq): Override prefix_data16 to 0.
1762         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
1763         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
1764         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
1765         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
1766         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
1767         and length_immediate to 1.
1768         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
1769         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
1770         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
1771         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
1772         and length_immediate to 1.
1773         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
1774         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
1775         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
1776         avx_ptest256): Override prefix_extra to 1.
1777         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
1778         Override prefix_data16 and length_immediate to 1.
1779         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
1780         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
1781         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
1782         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
1783         prefix_data16 to 0 and prefix_extra to 2.
1784         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
1785         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
1786         attribute.
1787         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
1788         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
1789         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
1790         and prefix_extra to 2.
1791         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
1792         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
1793         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
1794         avx_vpermilvar<mode>3,
1795         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
1796         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
1797         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
1798         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
1799         Override prefix_extra to 1.
1800         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
1801         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
1802         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
1803         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
1804         prefix_extra and length_immediate to 1.
1805         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
1806         modrm to 0.
1807         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
1808         to 1 for the first alternative.
1809         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
1810         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
1811         cases.
1812         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
1813         *movv2sf_internal_avx, *movv2sf_internal): Override
1814         prefix_rep attribute for certain alternatives.
1815         (*mov<mode>_internal): Override prefix_rep or prefix_data16
1816         attributes for certain alternatives.
1817         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
1818         attributes for certain alternatives.
1819         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
1820         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
1821         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
1822         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
1823         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
1824         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
1825         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
1826         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
1827         length_immediate to 1 if operand 2 is const_int_operand.
1828         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
1829         *vec_extractv2si_1): Set length_immediate attribute to 1.
1830         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
1831         using old 3DNOW insn rather than SSE/3DNOW_A.
1832         (mmx_emms, mmx_femms): Clear modrm attribute.
1833
1834 2009-05-29  Martin Jambor  <mjambor@suse.cz>
1835
1836         * tree-sra.c:  New implementation of SRA.
1837
1838         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
1839         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
1840         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
1841         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
1842         (SRA_MAX_STRUCTURE_COUNT): Removed.
1843         (SRA_FIELD_STRUCTURE_RATIO): Removed.
1844         * doc/invoke.texi (sra-max-structure-size): Removed.
1845         (sra-field-structure-ratio): Removed.
1846
1847 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1848
1849         PR middle-end/40291
1850         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
1851         before expansion.
1852
1853 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
1854
1855         PR rtl-optimization/40101
1856         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
1857         seqno.  Adjust comment.
1858         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
1859         inserting bookkeeping before a jump, the jump is not scheduled.
1860         When no positive seqno found, provide a value.  Add comment.
1861
1862 2009-05-29  Richard Guenther  <rguenther@suse.de>
1863
1864         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
1865         short-cutting on the first component.
1866
1867 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1868
1869         PR middle-end/39958
1870         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
1871         for trees other than decls/types.
1872
1873 2009-05-29  Richard Guenther  <rguenther@suse.de>
1874
1875         * tree-ssa-operands.c (get_expr_operands): Do not handle
1876         INDIRECT_REFs in the handled-component case.  Remove
1877         unused get_ref_base_and_extent case.
1878         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
1879         tree_low_cst and host_integerp where possible.
1880         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
1881         codes for equivalence.
1882         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
1883
1884 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
1885
1886         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
1887         to tmake_file for i[34567]86-*-cygwin*. 
1888
1889 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1890
1891         PR target/40017
1892         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
1893         (altivec_categorize_keyword, init_vector_keywords,
1894         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
1895         similar to bool.
1896
1897 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
1898
1899         * tree.c (handle_dll_attribute): Check if node is
1900         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
1901
1902 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
1903
1904         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
1905         component.
1906         (thumb2_zero_extendqidi2): Likewise.
1907
1908 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1909
1910         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
1911         instead of gen_movrt.
1912         * config/sh/sh.md (movrt): Remove.
1913
1914 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
1915
1916         * doc/invoke.texi (IA-64 Options):
1917         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
1918         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
1919         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
1920         -msched-prefer-non-control-spec-insns,
1921         -msched-stop-bits-after-every-cycle,
1922         -msched-count-spec-in-critical-path,
1923         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
1924         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
1925         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
1926         and -msched-spec-verbose.
1927
1928 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
1929
1930         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
1931         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
1932         error if used.
1933         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
1934
1935 2009-05-28  Richard Guenther  <rguenther@suse.de>
1936
1937         * tree-ssa-alias.c (ao_ref_init): New function.
1938         (ao_ref_base): Likewise.
1939         (ao_ref_base_alias_set): Likewise.
1940         (ao_ref_alias_set): Likewise.
1941         (refs_may_alias_p_1): Change signature.
1942         (refs_may_alias_p): Adjust.
1943         (refs_anti_dependent_p): Likewise.
1944         (refs_output_dependent_p): Likewise.
1945         (call_may_clobber_ref_p_1): Change signature.
1946         (call_may_clobber_ref_p): Adjust.
1947         (stmt_may_clobber_ref_p_1): New function split out from ...
1948         (stmt_may_clobber_ref_p): ... here.
1949         (maybe_skip_until): Adjust signature.
1950         (get_continuation_for_phi): Likewise.
1951         (walk_non_aliased_vuses): Likewise.
1952         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
1953         (ao_ref_init): Declare.
1954         (ao_ref_base): Likewise.
1955         (ao_ref_alias_set): Likewise.
1956         (stmt_may_clobber_ref_p_1): Likewise.
1957         (walk_non_aliased_vuses): Adjust.
1958         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
1959         (get_ref_from_reference_ops): remove.
1960         (vn_reference_lookup_2): Adjust signature.
1961         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
1962         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
1963         (vn_reference_lookup): Adjust.
1964         (vn_reference_insert): Likewise.
1965         (vn_reference_insert_pieces): Adjust signature.
1966         (visit_reference_op_call): Adjust.
1967         * tree-ssa-pre.c (get_expr_type): Simplify.
1968         (phi_translate_1): Adjust.
1969         (compute_avail): Likewise.
1970         (translate_vuse_through_block): Do not re-build trees.
1971         (value_dies_in_block_x): Likewise.
1972         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
1973         fields.
1974         (vn_reference_lookup_pieces): Adjust declaration.
1975         (vn_reference_insert_pieces): Likewise.
1976
1977 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
1978
1979         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
1980         with checking disabled.
1981
1982 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
1983
1984         PR target/37216
1985
1986         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
1987         macro definition for support of three-operand format aligned
1988         .comm directive in assembler on cygwin/pe/mingw target OS.
1989         * configure:  Regenerate.
1990         * config.h:  Regenerate.
1991
1992         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
1993         aligned form of .comm directive if -mpe-aligned-commons is in effect.
1994         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
1995
1996         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
1997         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
1998
1999 2009-05-28  Ira Rosen  <irar@il.ibm.com>
2000
2001         PR tree-optimization/40254
2002         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
2003         in analysis of basic blocks.
2004
2005 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
2006
2007         PR middle-end/33699
2008         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
2009         * target-def.h (TARGET_CONST_ANCHOR): New macro.
2010         (TARGET_INITIALIZER): Use it.
2011         * cse.c (CHEAPER): Move it up to the other macros.
2012         (insert): Rename this ...
2013         (insert_with_costs): ... to this.  Add cost parameters.  Update
2014         function comment.
2015         (insert): New function.  Call insert_with_costs.
2016         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
2017         find_reg_offset_for_const, try_const_anchors): New functions.
2018         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
2019         when using a const-anchor.  Call insert_const_anchors.
2020         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
2021         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
2022
2023 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
2024
2025         * tree-inline.c (remap_decls): Enable nonlocalized variables
2026         when not optimizing.
2027
2028 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
2029
2030         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
2031         Simplify other tests involving optimize.
2032
2033 2009-05-27  Tom Tromey  <tromey@redhat.com>
2034
2035         * unwind-dw2.c (_Unwind_DebugHook): New function.
2036         (uw_install_context): Call _Unwind_DebugHook.
2037
2038 2009-05-27  Tom Tromey  <tromey@redhat.com>
2039
2040         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
2041
2042 2009-05-27  Ian Lance Taylor  <iant@google.com>
2043
2044         * Makefile.in (LINKER, LINKER_FLAGS): Define.
2045         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
2046         (ALL_LINKERFLAGS): Define.
2047         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
2048         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
2049         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
2050         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
2051         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
2052         $(LINKER_FOR_BUILD).
2053         (build/gcov-iov$(build_exeext)): Likewise.
2054
2055 2009-05-27  Julian Brown  <julian@codesourcery.com>
2056
2057         * gcse.c (target.h): Include.
2058         (can_assign_to_reg_without_clobbers_p): Check that the target allows
2059         copy of argument to a pseudo register.
2060
2061 2009-05-27  Diego Novillo  <dnovillo@google.com>
2062
2063         * tree-ssa-live.c (dump_scope_block): Document arguments.
2064         (dump_scope_blocks): Document.
2065         (debug_scope_blocks): New.
2066         * tree-flow.h (debug_scope_blocks): Declare.
2067
2068 2009-05-21  Denis Chertykov  <denisc@overta.ru>
2069
2070         * doc/contrib.texi (Contributors): Add myself to the list.
2071
2072 2009-05-27  Olivier Hainque  <hainque@adacore.com>
2073
2074         * expr.c (target_align): New function.  Alignment the TARGET of an
2075         assignment may be assume to have.
2076         (highest_pow2_factor_for_target): Use it instead of relying on
2077         immediate tree attributes of TARGET, not necessarily honored when
2078         intermediate bitfields are involved.
2079         
2080 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2081
2082         PR target/40266
2083         * config/i386/driver-i386.c (host_detect_local_cpu): Support
2084         AVX, SSE4, AES, PCLMUL and POPCNT.
2085
2086 2009-05-27  Diego Novillo  <dnovillo@google.com>
2087
2088         * tree-pretty-print.c (dump_location): New.
2089         (dump_generic_node): Call it.
2090         Factor code to handle BLOCK nodes ...
2091         (dump_block_node): ... here.
2092
2093 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
2094
2095         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
2096         with it.
2097         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
2098         included.
2099         * gcc-plugin.h: Include config.h and system.h.
2100         (IN_GCC): Define if not defined.
2101
2102 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
2103
2104         PR middle-end/40249
2105         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
2106         with -fno-inline.
2107
2108 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
2109
2110         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
2111         applicable.
2112         * config/m32r/m32r.h: Ditto.
2113         * config/m32r/m32r.md: Ditto.
2114         * config/m32r/predicates.md: Ditto.
2115
2116 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
2117
2118         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
2119
2120 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
2121
2122         * doc/plugins.texi
2123         (Loading plugins): typo.
2124         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
2125         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
2126         (Interacting with the GCC Garbage Collector): Added new section.
2127         (Giving information about a plugin): Added new section for
2128         PLUGIN_INFO.
2129         * ggc.h (ggc_register_root_tab): Added declaration.
2130         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
2131         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
2132         (register_callback): Improved comment in declaration.
2133         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
2134         (extra_root_vec) Added static variable for dynamic roots registration.
2135         (ggc_register_root_tab) Added new routine.
2136         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
2137         PLUGIN_GGC_MARKING event.
2138         * ggc-zone.c: Include plugin.h.
2139         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
2140         * ggc-page.c: Include plugin.h.
2141         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
2142         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
2143         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
2144         (register_callback): check lack of callbacks for
2145         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
2146         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
2147         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
2148         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
2149         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
2150         dependency on plugin.h.
2151         (plugin.o): Added dependency on ggc.h...
2152
2153 2009-05-26  Richard Guenther  <rguenther@suse.de>
2154
2155         PR middle-end/40248
2156         Revert
2157         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2158         with mismatched comparison modes.
2159
2160         * expr.c (expand_expr_real_1): Expand the operand of a
2161         VIEW_CONVERT_EXPR in its natural mode.
2162
2163 2009-05-26  Ian Lance Taylor  <iant@google.com>
2164
2165         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
2166         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
2167         (ALL_COMPILERFLAGS): Define.
2168         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
2169         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
2170         (collect2$(exeext), collect2.o): Likewise.
2171         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
2172         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
2173         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
2174         (libbackend.o, intl.o, cppdefault.o): Likewise.
2175         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
2176         (build/%.o): Use $(COMPILER_FOR_BUILD).
2177         (build/gen%$(build_exeext)): Likewise.
2178         (build/gcov-iov$(build_exeext)): LIkewise.
2179         * config/t-darwin (darwin.o): Use $(COMPILER).
2180         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
2181         * config/t-sol2 (sol2-c.o): Likewise.
2182         (sol2.o): Likewise.
2183         * config/t-vxworks (vxworks.o): Likewise.
2184         * config/x-darwin (host-darwin.o): Likewise.
2185         * config/x-hpux (host-hpux.o): Likewise.
2186         * config/x-linux (host-linux.o): Likewise.
2187         * config/x-solaris (host-solaris.o): Likewise.
2188         * config/alpha/x-alpha (driver-alpha.o): Likewise.
2189         * config/arm/t-arm (arm-c.o): Likewise.
2190         * config/arm/t-pe (pe.o): Likewise.
2191         * config/arm/t-wince-pe (pe.o): Likewise.
2192         * config/i386/t-cygming (winnt.o): Likewise.
2193         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
2194         * config/i386/t-cygwin (cygwin1.o): Likewise.
2195         (cygwin2.o): Likewise.
2196         * config/i386/t-i386 (i386-c.o): Likewise.
2197         * config/i386/t-interix (winnt.o): Likewise.
2198         * config/i386/t-netware (netware.o): Likewise.
2199         * config/i386/t-nwld (nwld.o): Likewise.
2200         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
2201         * config/i386/x-i386 (driver-i386.o): Likewise.
2202         * config/i386/x-cygwin (host-cygwin.o): Likewise.
2203         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
2204         * config/ia64/t-ia64 (ia64-c.o): Likewise.
2205         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
2206         * config/mips/x-native (driver-native.o): Likewise.
2207         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
2208         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
2209         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
2210         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
2211         * config/score/t-score-elf (score7.o): Likewise.
2212         (score3.o): Likewise.
2213         * config/sh/t-sh (sh-c.o): Likewise.
2214         * config/sh/t-symbian (sh-c.o): Likewise.
2215         (symbian.o): Likewise.
2216         * config/spu/t-spu-elf (spu-c.o): Likewise.
2217         * config/v850/t-v850 (v850-c.o): Likewise.
2218         * config/v850/t-v850e (v850-c.o): Likewise.
2219
2220 2009-05-26  Richard Guenther  <rguenther@suse.de>
2221
2222         PR tree-optimization/40122
2223         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
2224         VECTOR_CSTs if possible.
2225         (fold_gimple_assign): Likewise.
2226
2227 2009-05-26  Richard Guenther  <rguenther@suse.de>
2228
2229         PR middle-end/40252
2230         * fold-const.c (fold_binary): Use the correct types for building
2231         rotates.
2232
2233 2009-05-26  Richard Guenther  <rguenther@suse.de>
2234
2235         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
2236         redundant calls to merge_alias_info.
2237         (bump_vector_ptr): Likewise.
2238         * tree-ssa-copy.c (merge_alias_info): Remove.
2239         (replace_exp_1): Remove call to merge_alias_info.
2240         (propagate_tree_value): Likewise.
2241         (fini_copy_prop): Propagate points-to info.
2242         * tree-flow.h (merge_alias_info): Remove.
2243
2244 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
2245
2246         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
2247
2248 2009-05-25  Jan Hubicka  <jh@suse.cz>
2249
2250         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2251         * cgraph.h (struct inline_summary): New filed self_wize,
2252         size_inlining_benefit, self_time and time_inlining_benefit.
2253         (struct cgraph_global_info): Replace insns by time ans size fields.
2254         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2255         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2256         (ipcp_update_callgraph): Do not touch function bodies.
2257         * ipa-inline.c: Include except.h
2258         (MAX_TIME): New constant.
2259         (overall_insns): Remove.
2260         (leaf_node_p): New.
2261         (overall_size, max_benefit): New static variables.
2262         (cgraph_estimate_time_after_inlining): New function.
2263         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2264         (cgraph_clone_inlined_nodes): Update size.
2265         (cgraph_mark_inline_edge): Update size.
2266         (cgraph_estimate_growth): Use size info.
2267         (cgraph_check_inline_limits): Check size.
2268         (cgraph_default_inline_p): Likewise.
2269         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2270         (cgraph_decide_recursive_inlining): Check size.
2271         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2272         and times.
2273         (cgraph_decide_inlining): Likewise.
2274         (cgraph_decide_inlining_incrementally): Likewise; honor
2275         PARAM_EARLY_INLINING_INSNS.
2276         (likely_eliminated_by_inlining_p): New predicate.
2277         (estimate_function_body_sizes): New function.
2278         (compute_inline_parameters): Use it.
2279         * except.c (must_not_throw_labels): New function.
2280         * except.h (must_not_throw_labels): Declare.
2281         * tree-inline.c (init_inline_once): Kill inlining_weigths
2282         * tree-ssa-structalias.c: Avoid uninitialized warning.
2283         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2284         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2285         (PARAM_INLINE_CALL_COST): Remove.
2286         (PARAM_EARLY_INLINING_INSNS): New.
2287
2288 2009-05-25  Richard Guenther  <rguenther@suse.de>
2289
2290         PR tree-optimization/36327
2291         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
2292         callback for reference translation or lookup at the point of may-defs.
2293         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
2294         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
2295         for union COMPONENT_REFs.
2296         (vn_reference_lookup_3): New callback.  Lookup from memset
2297         and CONSTRUCTOR assignment, translate through struct copies.
2298         (vn_reference_lookup_pieces): Make sure to not free the
2299         passed operands array.  Adjust walk_non_aliased_vuses call.
2300         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
2301         make sure we do not leak memory.
2302
2303 2009-05-25  Richard Guenther  <rguenther@suse.de>
2304
2305         * tree-ssa-alias.h (dump_points_to_solution): Declare.
2306         * tree-inline.c (expand_call_inline): Reset the escaped and
2307         callused solutions.
2308         * tree-ssa-structalias.c (pass_build_ealias): New.
2309         * tree-pass.h (pass_build_ealias): Declare.
2310         * passes.c (init_optimization_passes): Add PTA during 
2311         early optimizations.
2312         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
2313         and CALLUSED solutions.
2314         (dump_points_to_solution): New function, split out from ...
2315         (dump_points_to_info_for): ... here.
2316         * tree-parloops.c (parallelize_loops): Reset the escaped and
2317         callused solutions.
2318
2319 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2320
2321         PR bootstrap/40027
2322         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
2323         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
2324
2325 2009-05-25  Ira Rosen  <irar@il.ibm.com>
2326
2327         PR tree-optimization/40238
2328         * tree-vect-stmts.c (vect_init_vector): Insert initialization
2329         statements after basic block's labels.
2330         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
2331         to free the allocated memory.
2332
2333 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2334
2335         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
2336         return address with a USE.
2337
2338 2009-05-24  Richard Guenther  <rguenther@suse.de>
2339
2340         PR middle-end/40233
2341         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
2342         array type from the main variant of the inner type.
2343
2344 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2345
2346         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
2347         definition to bool (from int) to un-break build.
2348         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
2349
2350 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
2351
2352         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
2353         discard_stmt_changes): Delete.
2354         * tree-ssa-operands.c (scb_stack): Delete.
2355         (init_ssa_operands): Do not initialize it.
2356         (fini_ssa_operands): Do not free it.
2357         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
2358
2359         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
2360         update_stmt, remove the others.  Fix comments.
2361         * tree-dfa.c (optimize_stack_restore): Likewise.
2362         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
2363         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
2364         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
2365         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
2366         Likewise.
2367         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
2368         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2369         (dom_opt_finalize_block): Likewise, adjusting access to
2370         stmts_to_rescan.
2371         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
2372         (stmts_to_rescan): Change item type to gimple.
2373         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
2374
2375 2009-05-24  Ira Rosen  <irar@il.ibm.com>
2376
2377         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
2378         * tree-pass.h (pass_slp_vectorize): New pass.
2379         * params.h (SLP_MAX_INSNS_IN_BB): Define.
2380         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
2381         * tree-vectorizer.c (timevar.h): Include.
2382         (user_vect_verbosity_level): Declare.
2383         (vect_location): Fix comment.
2384         (vect_set_verbosity_level): Update user_vect_verbosity_level
2385         instead of vect_verbosity_level.
2386         (vect_set_dump_settings): Add an argument. Ignore user defined
2387         verbosity if dump flags require higher level of verbosity. Print to
2388         stderr only for loop vectorization.
2389         (vectorize_loops): Update call to vect_set_dump_settings.
2390         (execute_vect_slp): New function.
2391         (gate_vect_slp): Likewise.
2392         (struct gimple_opt_pass pass_slp_vectorize): New.
2393         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
2394         access its members.
2395         (vec_info_for_bb): New function.
2396         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
2397         (VECTORIZATION_ENABLED): New macro.
2398         (SLP_ENABLED, SLP_DISABLED): Likewise.
2399         (vect_is_simple_use): Add bb_vec_info argument.
2400         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
2401         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
2402         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
2403         vect_schedule_slp, vect_analyze_slp): Likewise.
2404         (vect_analyze_stmt): Add slp_tree argument.
2405         (find_bb_location): Declare.
2406         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
2407         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
2408         (vect_analyze_loop_operations, vect_analyze_loop,
2409         get_initial_def_for_induction, vect_create_epilog_for_reduction,
2410         vect_finalize_reduction, vectorizable_reduction,
2411         vectorizable_live_operation, vect_transform_loop): Likewise.
2412         * tree-data-ref.c (dr_analyze_innermost): Update comment,
2413         skip evolution analysis if analyzing a basic block.
2414         (dr_analyze_indices): Likewise.
2415         (initialize_data_dependence_relation): Skip the test whether the
2416         object is invariant for basic blocks.
2417         (compute_all_dependences): Skip dependence analysis for data
2418         references in basic blocks.
2419         (find_data_references_in_stmt): Don't fail in case of invariant
2420         access in basic block.
2421         (find_data_references_in_bb): New function.
2422         (find_data_references_in_loop): Move code to
2423         find_data_references_in_bb and add a call to it.
2424         (compute_data_dependences_for_bb): New function.
2425         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
2426         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
2427         that STEP is 0.
2428         (vect_analyze_data_ref_dependence): Check for interleaving in case of
2429         unknown dependence in basic block and fail in case of dependence in
2430         basic block.
2431         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
2432         dependence instances from either loop or basic block vectorization
2433         info.
2434         (vect_compute_data_ref_alignment): Check if it is loop vectorization
2435         before calling nested_in_vect_loop_p.
2436         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
2437         dependence instances from either loop or basic block vectorization
2438         info.
2439         (vect_verify_datarefs_alignment): Likewise.
2440         (vect_enhance_data_refs_alignment): Adjust function calls.
2441         (vect_analyze_data_refs_alignment): Likewise.
2442         (vect_analyze_group_access): Fix printing. Skip different checks if
2443         DR_STEP is 0. Keep strided stores either in loop or basic block
2444         vectorization data structure. Fix indentation.
2445         (vect_analyze_data_ref_access): Fix comments, allow zero step in
2446         basic blocks.
2447         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
2448         dependence instances from either loop or basic block vectorization
2449         info.
2450         (vect_analyze_data_refs): Update comment. Call
2451         compute_data_dependences_for_bb to analyze basic blocks.
2452         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
2453         case of loop vectorization. In case of basic block vectorization use
2454         data-ref itself as a base.
2455         (vect_create_data_ref_ptr): In case of basic block vectorization:
2456         don't advance the pointer, add new statements before the current
2457         statement.  Adjust function calls.
2458         (vect_supportable_dr_alignment): Support only aligned accesses in
2459         basic block vectorization.
2460         * common.opt (ftree-slp-vectorize): New flag.
2461         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
2462         (vect_pattern_recog_1): Likewise.
2463         * tree-vect-stmts.c (process_use): Likewise.
2464         (vect_init_vector): Add new statements in the beginning of the basic
2465         block in case of basic block SLP.
2466         (vect_get_vec_def_for_operand): Adjust function calls.
2467         (vect_finish_stmt_generation): Likewise.
2468         (vectorizable_call): Add assert that it is loop vectorization, adjust
2469         function calls.
2470         (vectorizable_conversion, vectorizable_assignment): Likewise.
2471         (vectorizable_operation): In case of basic block SLP, take
2472         vectorization factor from statement's type and skip the relevance
2473         check. Adjust function calls.
2474         (vectorizable_type_demotion): Add assert that it is loop
2475         vectorization, adjust function calls.
2476         (vectorizable_type_promotion): Likewise.
2477         (vectorizable_store): Check for outer loop only in case of loop
2478         vectorization. Adjust function calls. For basic blocks, skip the
2479         relevance check and don't advance pointers.
2480         (vectorizable_load): Likewise.
2481         (vectorizable_condition): Add assert that it is loop vectorization,
2482         adjust function calls.
2483         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
2484         that it is not reduction, get vector type, call only supported
2485         functions, skip loop specific parts.
2486         (vect_transform_stmt): Check for outer loop only in case of loop
2487         vectorization.
2488         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
2489         (vect_is_simple_use): Fix comment, add new argument, fix conditions
2490         for external definition.
2491         * passes.c (pass_slp_vectorize): New pass.
2492         * tree-vect-slp.c (find_bb_location): New function.
2493         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
2494         check for patterns only in loops.
2495         (vect_build_slp_tree): Add argument, adjust function calls, fail in
2496         case of multiple types in basic block SLP.
2497         (vect_mark_slp_stmts_relevant): New function.
2498         (vect_supported_load_permutation_p): Fix comment.
2499         (vect_analyze_slp_instance): Add argument. In case of basic block
2500         SLP, take vectorization factor from statement's type, check that
2501         unrolling factor is 1. Adjust function call. Save SLP instance in
2502         either loop or basic block vectorization structure. Return FALSE,
2503         if SLP failed.
2504         (vect_analyze_slp): Add argument. Get strided stores groups from
2505         either loop or basic block vectorization structure. Return FALSE
2506         if basic block SLP failed.
2507         (new_bb_vec_info): New function.
2508         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
2509         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
2510         (vect_schedule_slp): Add argument. Get SLP instances from either
2511         loop or basic block vectorization structure. Set vectorization factor
2512         to be 1 for basic block SLP.
2513         (vect_slp_transform_bb): New function.
2514         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
2515
2516 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
2517
2518         * final.c (shorten_branches): Do not align labels for jump tables.
2519         (final_scan_insn): Use JUMP_TABLE_DATA_P.
2520
2521 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
2522
2523         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
2524         Remove outdated reference to flow.c and fix nits.
2525         * doc/gccint.texi: Tweak RTL description.
2526         * doc/rtl.texi: Likewise.
2527
2528 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
2529
2530         * config/avr/avr.c: Change my email address.
2531         * config/avr/avr.h: Likewise.
2532         * config/avr/avr.md: Likewise.
2533         * config/avr/avr-protos.h: Likewise.
2534         * config/avr/libgcc.S: Likewise.
2535
2536 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2537
2538         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
2539         (spu_split_load, spu_split_store): Change return type to int.
2540         (spu_split_convert): Declare.
2541         * config/spu/predicates.md (spu_mem_operand): Remove.
2542         (spu_mov_operand): Update.
2543         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
2544         * config/spu/spu.c (regno_aligned_for_load): Remove.
2545         (reg_aligned_for_addr, spu_expand_load): Define.
2546         (spu_expand_extv): Reimplement and handle MEM.
2547         (spu_expand_insv): Handle MEM.
2548         (spu_sched_reorder): Handle insn's with length 0.
2549         (spu_legitimate_address_p): Reimplement.
2550         (store_with_one_insn_p): Return TRUE for any mode with size
2551         larger than 16 bytes.
2552         (address_needs_split): Define.
2553         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
2554         operands.
2555         (spu_convert_move): Define.
2556         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
2557         (spu_split_store): Change all MEM's to TImode.
2558         (spu_init_expanders): Preallocate registers that correspond to
2559         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
2560         mark_reg_pointer.
2561         (spu_split_convert): Define.
2562         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
2563         (_move<mode>, _movdi, _movti): Update predicate and condition.
2564         (load, store): Change to define_split.
2565         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
2566         extend<mode>ti2.
2567         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
2568         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
2569         define_insn_and_split of lshr<mode>3.
2570         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
2571         (<v>ashr<mode>3_imm): Define.
2572         (extv, extzv, insv): Allow MEM operands.
2573         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
2574         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
2575         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
2576         (_spu_convert2): Change to define_insn_and_split and remove the
2577         corresponding define_peephole2.
2578         (stack_protect_set, stack_protect_test, stack_protect_test_si):
2579         Change predicates to memory_operand.
2580
2581 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2582
2583         * config/arm/thumb2.md: Add 16-bit multiply instructions.
2584
2585 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
2586
2587         PR tree-optimization/40219
2588         * tree.c (iterative_hash_expr): Make sure the builtin function is
2589         a normal builtin function and not a front end or back end builtin
2590         before indexing into the built_in_decls array.
2591
2592 2009-05-22  Richard Guenther  <rguenther@suse.de>
2593
2594         PR middle-end/38964
2595         * alias.c (write_dependence_p): Do not use TBAA for answering
2596         anti-dependence or output-dependence.
2597         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
2598         (emit_pointer_definition): Remove.
2599         (emit_alias_warning): Likewise.
2600         (find_what_var_points_to): Remove TBAA pruning code.
2601         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
2602         violations.
2603         (compute_points_to_sets): Remove code computing the set of
2604         dereferenced pointers.
2605         * tree-data-ref.c (dr_may_alias_p): Properly use the split
2606         oracle for querying anti and output dependencies.
2607         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
2608         if TBAA may be applied.
2609         (refs_anti_dependent_p): New function.
2610         (refs_output_dependent_p): Likewise.
2611         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
2612         (refs_output_dependent_p): Likewise.
2613         * doc/tree-ssa.texi (Memory model): New section.
2614         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2615         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2616         * cfgexpand.c (expand_gimple_basic_block): Do not handle
2617         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
2618         * expr.c (expand_expr_real_1): Likewise.
2619         * gimple-low.c (lower_stmt): Likewise.
2620         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
2621         (dump_gimple_cdt): Remove.
2622         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2623         (gimple_size): Likewise.
2624         (walk_gimple_op): Likewise.
2625         (is_gimple_stmt): Likewise.
2626         (walk_stmt_load_store_addr_ops): Likewise.
2627         (gimple_build_cdt): Remove.
2628         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2629         * gimple.h (gimple_cdt_new_type): Remove.
2630         (gimple_cdt_new_type_ptr): Likewise.
2631         (gimple_cdt_set_new_type): Likewise.
2632         (gimple_cdt_location): Likewise.
2633         (gimple_cdt_location_ptr): Likewise.
2634         (gimple_cdt_set_location): Likewise.
2635         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2636         * tree-cfg.c (remove_useless_stmts_1): Do not handle
2637         GIMPLE_CHANGE_DYNAMIC_TYPE.
2638         (verify_types_in_gimple_stmt): Likewise.
2639         * tree-inline.c (estimate_num_insns): Likewise.
2640         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
2641         (copy_decl_to_var): Likewise.
2642         (copy_result_decl_to_var): Likewise.
2643         * tree-pretty-print.c (dump_generic_node): Do not handle
2644         CHANGE_DYNAMIC_TYPE_EXPR.
2645         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2646         * tree-ssa-operands.c (get_expr_operands): Likewise.
2647         * tree-ssa-structalias.c (struct variable_info): Remove
2648         no_tbaa_pruning member.
2649         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
2650         (unify_nodes): Do not copy it.
2651         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2652         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
2653         (set_uids_in_ptset): Do not check it.
2654         (find_what_var_points_to): Likewise.
2655         (compute_tbaa_pruning): Remove.
2656         (compute_points_to_sets): Do not call it.
2657         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2658         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2659         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
2660         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
2661         (DECL_NO_TBAA_P): Likewise.
2662         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
2663         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
2664         (expand_omp_atomic_pipeline): Do not set it.
2665         * print-tree.c (print_node): Do not dump it.
2666         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
2667         redundant check.
2668
2669 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
2670
2671         PR target/39856
2672         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
2673         for clobber.
2674
2675 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2676
2677         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
2678         non-external.
2679
2680 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2681
2682         * Makefile.in (bversion.h, s-bversion): New targets.
2683         (TOPLEV_H): Add bversion.h.
2684         * toplev.h: Include "bversion.h".
2685         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
2686         the __format__ attribute only if compiling with the same version
2687         of GCC as the sources (the "build version").
2688
2689 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2690
2691         * c-format.c (handle_format_attribute): Fix comment typo.
2692
2693 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
2694
2695         PR target/37846
2696         * config/ia64/ia64.opt (mfused-madd): New.
2697         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
2698         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
2699         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
2700         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
2701         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
2702         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
2703         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
2704         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
2705         instruction if !TARGET_FUSED_MADD.
2706         (fpma, fpms): Remove colon from name.
2707
2708 2009-05-22  Richard Guenther  <rguenther@suse.de>
2709
2710         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
2711         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
2712         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
2713         TARGET_MEM_REF.
2714         (create_expression_by_pieces): Only convert if necessary.
2715         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
2716         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
2717
2718 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
2719
2720         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
2721         regular pattern from a template and rename it ...
2722         (*extzv_truncsi_exts): ... to this.
2723
2724 2009-05-21  Richard Guenther  <rguenther@suse.de>
2725
2726         * cgraph.h (struct cgraph_node): Remove inline_decl member.
2727         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
2728         (cgraph_default_inline_p): Likewise.
2729         (cgraph_decide_inlining_incrementally): Likewise.
2730
2731 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
2732             Uros Bizjak  <ubizjak@gmail.com>
2733
2734         * config/i386/cpuid.h (bit_MOVBE): New.
2735
2736         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
2737
2738         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
2739         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
2740         (ix86_handle_option): Handle OPT_mmovbe.
2741         (ix86_target_string): Add -mmovbe.
2742         (pta_flags): Add PTA_MOVBE.
2743         (processor_alias_table): Add PTA_MOVBE to "atom".
2744         (override_options): Handle PTA_MOVBE.
2745
2746         * config/i386/i386.h (TARGET_MOVBE): New.
2747
2748         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
2749         (*bswapsi_movbe): New.
2750         (*bswapdi_movbe): Likewise.
2751         (bswapdi2): Renamed to ...
2752         (*bswapdi_1): This.
2753         (bswapdi2): New expander.
2754
2755         * config/i386/i386.opt (mmovbe): New.
2756
2757         * doc/invoke.texi: Document -mmovbe.
2758
2759 2009-05-21  Taras Glek  <tglek@mozilla.com>
2760
2761         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
2762         * gcc-plugin.h (plugin_init): Updated signature.
2763         * gcc-plugin.h (plugin_name_args): Moved to this header.
2764         * doc/plugins.texi (plugin_init): Updated documention to reflect
2765         API change.
2766         * doc/plugins.texi (plugin_name_args): Added to documention.
2767
2768 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
2769
2770         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
2771         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
2772
2773 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
2774
2775         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
2776         JUMP_TABLE_DATA_P predicates where applicable.
2777         * config/i386/predicates.md: Ditto.
2778         * config/i386/sse.md: Ditto.
2779
2780 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
2781
2782         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
2783         operand2 -128 override length_immediate attribute to 1.
2784         * config/i386/predicates.md (constm128_operand): New predicate.
2785
2786         * config/i386/i386.c (memory_address_length): Handle %r12
2787         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
2788         also check REGNO.
2789         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
2790         mode look through optional ZERO_EXTEND and SUBREG.
2791         * config/i386/i386.md (R12_REG): New define_constant.
2792         (prefix_data16): For sse unit set also for MODE_TI insns.
2793         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
2794         insns set if operand 1 is ext_QIreg_operand.
2795         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
2796         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
2797         immediate.
2798         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
2799         mode from MODE_DI to MODE_SI.
2800         (movdi_1_rex64): Override modrm and length_immediate attributes
2801         only for movabs (TYPE_IMOV, alternative 2).
2802         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
2803         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
2804         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
2805         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
2806         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
2807         prefix_rex attribute if DImode.
2808         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
2809         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
2810         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
2811         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
2812         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
2813         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
2814         Likewise.  For TYPE_IMOV clear length_immediate attribute.
2815         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
2816         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
2817         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
2818         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
2819         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
2820         or one operand TYPE_ISHIFT.
2821         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
2822         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
2823         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
2824         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
2825         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
2826         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
2827         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
2828         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
2829         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
2830         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
2831         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
2832         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
2833         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
2834         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
2835         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
2836         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
2837         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
2838         set mode attribute, don't override length attribute.
2839         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
2840         to 1.
2841         (return_internal_long): Set length attribute to 2 instead of 1.
2842         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
2843         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
2844         prefix_rex attribute.
2845         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
2846         New predicates.
2847         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
2848
2849 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2850
2851         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
2852
2853 2009-05-20  Ian Lance Taylor  <iant@google.com>
2854
2855         * tree.c (build_tree_list_vec_stat): New function.
2856         (ctor_to_vec): New function.
2857         (build_nt_call_vec): New function.
2858         (build_call_array): Change args to be a const pointer.
2859         (build_call_vec): New function.
2860         * tree.h (build_nt_call_vec): Declare.
2861         (build_tree_list_vec_stat): Declare.
2862         (build_tree_list_vec): Define.
2863         (build_call_array): Update declaration.
2864         (build_call_vec): Declare.
2865         (ctor_to_vec): Declare.
2866         * c-common.c (tree_vector_cache): New static variable.
2867         (make_tree_vector): New function.
2868         (release_tree_vector): New function.
2869         (make_tree_vector_single): New function.
2870         (make_tree_vector_copy): New function.
2871         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
2872         (make_tree_vector_single, make_tree_vector_copy): Declare.
2873         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
2874         (c_parser_expr_list): Don't manage cache here, instead call
2875         make_tree_vector.
2876         (c_parser_release_expr_list): Remove static function.
2877         (c_parser_vec_to_tree_list): Remove static function.
2878         (c_parser_attributes): Call build_tree_list_vec instead of
2879         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
2880         c_parser_release_expr_list.
2881         (c_parser_postfix_expression_after_primary): Likewise.
2882         (c_parser_objc_keywordexpr): Likewise.
2883
2884 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
2885
2886         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
2887         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
2888         TARGET_CONVERT_TO_TYPE.
2889         * hooks.c (hook_tree_const_tree_null): Define.
2890         * hooks.h (hook_tree_const_tree_null): Declare.
2891         * target.h (struct gcc_target):  Add invalid_parameter_type,
2892         invalid_return_type, promoted_type, and convert_to_type fields.
2893         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
2894         (TARGET_INVALID_RETURN_TYPE): Define.
2895         (TARGET_PROMOTED_TYPE): Define.
2896         (TARGET_CONVERT_TO_TYPE): Define.
2897         (TARGET_INITIALIZER): Update for new fields.
2898         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
2899         (grokparms): Check targetm.invalid_parameter_type.
2900         * c-typeck.c (default_conversion): Check targetm.promoted_type.
2901         * c-convert.c (convert): Check targetm.convert_to_type.
2902
2903 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
2904
2905         * config/mips/mips.md (*extenddi_truncate<mode>,
2906         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
2907         defintions.
2908         (*extendhi_truncateqi): New define_insn_and_sptit.
2909
2910 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
2911
2912         PR middle-end/40204
2913         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
2914         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
2915
2916 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
2917
2918         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
2919         the operand of VIEW_CONVERT_EXPR.
2920
2921 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
2922
2923         * config/i386/driver-i386.c (host_detect_local_cpu): Check
2924         extended family and model for Intel processors.  Support Intel Atom.
2925
2926 2009-05-20  Olivier Hainque  <hainque@adacore.com>
2927
2928         * gstab.h (stab_code_type): Define, to be used instead of the
2929         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
2930         notice.
2931         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
2932         occurrences by stab_code_type.
2933         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
2934
2935 2009-05-20  Martin Jambor  <mjambor@suse.cz>
2936
2937         * tree-flow.h (insert_edge_copies_seq): Undeclare.
2938         (sra_insert_before): Likewise.
2939         (sra_insert_after): Likewise.
2940         (sra_init_cache): Likewise.
2941         (sra_type_can_be_decomposed_p): Likewise.
2942         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
2943         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
2944         (sra_insert_before): Likewise.
2945         (sra_insert_after): Likewise.
2946         (sra_init_cache): Likewise.
2947         (insert_edge_copies_seq): Made static and moved upwards.
2948
2949         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
2950         case.
2951
2952         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
2953
2954         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
2955         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
2956         simple copies.
2957
2958 2009-05-20  Richard Guenther  <rguenther@suse.de>
2959
2960         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2961         with mismatched comparison modes.
2962
2963 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2964
2965         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
2966         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
2967         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
2968         with shifts for Thumb2.
2969         (orsi_notsi): New for orn.
2970         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
2971         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
2972         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
2973         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
2974         Don't invert remainder for IOR.
2975         
2976 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
2977
2978         PR tree-optimization/40087
2979         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
2980         number_of_iterations_ne): Rename never_infinite argument.
2981         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
2982         number_of_iterations_le): Handle pointer-type ivs when
2983         exit_must_be_taken is false.
2984         (number_of_iterations_cond):  Do not always assume that
2985         exit_must_be_taken if the control variable is a pointer.
2986
2987 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2988
2989         * c-typeck.c (build_binary_op): Allow % on integal vectors.
2990         * doc/extend.texi (Vector Extension): Document that % is allowed too.
2991
2992 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
2993
2994         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
2995         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
2996
2997 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2998
2999         PR c/40172
3000         * c.opt (Wlogical-op): Disabled by default.
3001         * c-opt (c_common_post_options): Do not enable Wlogical-op with
3002         Wextra.
3003         * doc/invoke.texi (Wlogical-op): Likewise.
3004         
3005 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
3006
3007         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
3008         into CASE_CONVERT.
3009         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
3010         Propagate the type of the first operand.
3011         <ASSERT_EXPR>: Simplify.
3012         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
3013         Rewrite using the RHS code as discriminant.
3014         <NOP_EXPR>: Turn into CASE_CONVERT.
3015         <PLUS_EXPR>: Propagate the type of the first operand.
3016
3017 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
3018
3019         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
3020         (ia64_dconst_0_375): New.
3021         * config/ia64/ia64.c (ia64_override_options): Remove
3022         -minline-sqrt-min-latency warning.
3023         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
3024         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
3025         * config/ia64/ia64.md (*sqrt_approx): Remove.
3026         (sqrtsf2): Remove #if 0.
3027         (sqrtsf2_internal_thr): Rewrite and move to div.md.
3028         (sqrtdf): Remove assert.
3029         (sqrtdf2_internal_thr): Rewrite and move to div.md.
3030         (sqrtxf2): Remove #if 0.
3031         (sqrtxf2_internal_thr): Rewrite and move to div.md.
3032         * div.md (sqrt_approx_rf): New.
3033         (sqrtsf2_internal_thr): New implementation.
3034         (sqrtsf2_internal_lat): New.
3035         (sqrtdf2_internal_thr: New implementation.
3036         (sqrtxf2_internal): New implementation.
3037
3038 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
3039             Hans-Peter Nilsson  <hp@axis.com>
3040
3041         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
3042         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
3043         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
3044         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
3045         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
3046         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
3047         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
3048         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
3049         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
3050         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
3051         * c-common.c: ...from here.
3052
3053 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3054
3055         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
3056
3057 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3058
3059         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
3060
3061 2009-05-19  Ben Elliston  <bje@au.ibm.com>
3062
3063         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
3064         assignments with memcpy calls.
3065         (add_fdes): Likewise.
3066         (binary_search_unencoded_fdes): Likewise.
3067         (linear_search_fdes): Eliminate type puns.
3068         
3069 2009-05-19  Richard Guenther  <rguenther@suse.de>
3070
3071         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
3072         not falsely claim to have propagated into all uses.
3073
3074 2009-05-19  Ben Elliston  <bje@au.ibm.com>
3075
3076         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
3077         version to v3.0.
3078
3079 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3080
3081         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
3082         * config/sh/sh.c (sh_legitimate_address_p): Make static.
3083         (TARGET_LEGITIMATE_ADDRESS_P): New.
3084         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3085         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
3086         
3087 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
3088
3089         PR debug/40109
3090         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
3091         child of the containing namespace's DIE.
3092
3093 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
3094
3095         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
3096         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
3097         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
3098         extend patterns.
3099
3100 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
3101
3102         PR target/39942
3103         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
3104         gen_align with gen_pad.
3105         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
3106         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
3107
3108         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
3109         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
3110
3111         * config/i386/i386.md (align): Renamed to ...
3112         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
3113         ASM_OUTPUT_MAX_SKIP_PAD.
3114
3115 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
3116
3117         * config.gcc: Fix variable syntax.
3118
3119         PR target/39531
3120         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
3121         before calling exact_log2.
3122         (output_iorsi3): Likewise.
3123         (output_xorsi3): Likewise.
3124
3125 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3126
3127         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
3128         for the none zero constant operand except for EQ and NE
3129         comprisons even when the first operand is R0.
3130
3131 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
3132
3133         * config/s390/2064.md: Remove trailing whitespaces.
3134         * config/s390/2084.md: Likewise.
3135         * config/s390/constraints.md: Likewise.
3136         * config/s390/fixdfdi.h: Likewise.
3137         * config/s390/libgcc-glibc.ver: Likewise.
3138         * config/s390/s390-modes.def: Likewise.
3139         * config/s390/s390-protos.h: Likewise.
3140         * config/s390/s390.c: Likewise.
3141         * config/s390/s390.h: Likewise.
3142         * config/s390/s390.md: Likewise.
3143         * config/s390/tpf-unwind.h: Likewise.
3144
3145 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3146
3147         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
3148
3149 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3150
3151         M68K TLS support.
3152         * configure.ac (m68k-*-*): Check if binutils support TLS.
3153         * configure: Regenerate.
3154         * config/m68k/predicates.md (symbolic_operand): Extend comment.
3155         * config/m68k/constraints.md (Cu): New constraint.
3156         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
3157         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
3158         (movsi): Handle TLS symbols.
3159         (addsi3_5200): Handle XTLS symbols, indent.
3160         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
3161         (m68k_tls_reference_p): Declare.
3162         (m68k_legitimize_address): Declare.
3163         (m68k_unwrap_symbol): Declare.
3164         * config/m68k/m68k.opt (mxtls): New option.
3165         * config/m68k/m68k.c (ggc.h): Include.
3166         (m68k_output_dwarf_dtprel): Implement hook.
3167         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
3168         (m68k_expand_prologue): Load GOT pointer when function needs it.
3169         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
3170         (m68k_legitimate_constant_address_p): Same.
3171         (m68k_decompose_address): Handle TLS references.
3172         (m68k_get_gp): New static function.
3173         (enum m68k_reloc): New contants.
3174         (TLS_RELOC_P): New macro.
3175         (m68k_wrap_symbol): New static function.
3176         (m68k_unwrap_symbol): New function.
3177         (m68k_final_prescan_insn_1): New static function.
3178         (m68k_final_prescan_insn): New function.
3179         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
3180         functions.
3181         (legitimize_pic_address): Handle TLS references..
3182         (m68k_tls_get_addr, m68k_get_tls_get_addr)
3183         (m68k_libcall_value_in_a0_p)
3184         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
3185         (m68k_call_m68k_read_tp): Helper variables and functions for ...
3186         (m68k_legitimize_tls_address): Handle TLS references.
3187         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
3188         New functions.
3189         (m68k_legitimize_address): Handle TLS symbols.
3190         (m68k_get_reloc_decoration): New static function.
3191         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
3192         UNSPEC_RELOC32.
3193         (m68k_output_dwarf_dtprel): Implement hook.
3194         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
3195         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
3196         m68k_call_* routines.
3197         (sched_attr_op_type): Handle TLS symbols.
3198         (gt-m68k.h): Include.
3199         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
3200         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
3201
3202 2009-05-18  Martin Jambor  <mjambor@suse.cz>
3203
3204         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
3205         (visit_store_addr_for_mod_analysis): New function.
3206         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
3207         (determine_cst_member_ptr): Use gimple_assign_single_p.
3208         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
3209         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
3210         operands.  Don't check number of operands of a NOP_EXPR.
3211
3212 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
3213
3214         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
3215
3216 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3217
3218         PR c/40172
3219         * c-common.c (warn_logical_operator): Don't warn if one of
3220         expression isn't always true or false.
3221
3222 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
3223
3224         * config/i386/biarch32.h: New file.
3225         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
3226
3227 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
3228
3229         * config/mips/mips.md (*zero_extend<mode>_trunchi,
3230         *zero_extend<mode>_truncqi): Merge these into ...
3231         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
3232         Name the pattern following this as *zero_extendhi_truncqi.
3233
3234 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
3235
3236         PR middle-end/39301
3237         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
3238         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
3239         (output_info): Make field HOST_WIDEST_INT.
3240         (print_statistics): Use HOST_WIDEST_INT_PRINT.
3241         (dump_bitmat_statistics): Same.
3242
3243 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
3244
3245         * config.gcc (use_gcc_stdint):  Set to wrap.
3246         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
3247         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
3248         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
3249         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
3250         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
3251         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
3252         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
3253         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
3254
3255 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
3256
3257         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
3258         tune_64.
3259         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
3260         Move definitions earlier.
3261         (OPT_ARCH64, OPT_ARCH32): Define.
3262         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
3263         and tune_64.
3264
3265 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
3266
3267         PR target/40153
3268         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
3269         implies.
3270
3271 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
3272
3273         * arm.md (movdi2): Copy non-reg values to DImode registers.
3274
3275 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
3276
3277         PR target/39942
3278         * final.c (label_to_max_skip): New function.
3279         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
3280         CODE_LABEL_NUMBER <= max_labelno.
3281         * output.h (label_to_max_skip): New prototype.
3282         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
3283         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
3284         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
3285         Handle CODE_LABELs with >= 16 byte alignment or with
3286         max_skip == (1 << align) - 1.
3287         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
3288         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
3289
3290         PR target/39942
3291         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
3292         .p2align 3 if MAX_SKIP is smaller than 7.
3293         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
3294
3295 2009-05-15  Ian Lance Taylor  <iant@google.com>
3296
3297         * alias.c (struct alias_set_entry_d): Rename from struct
3298         alias_set_entry.  Change all uses.
3299         * except.c (struct call_site_record_d): Rename from struct
3300         call_site_record.  Change all uses.
3301         * except.h (struct eh_region_d): Rename from struct eh_region.
3302         Change all uses.
3303         * gcse.c (struct hash_table_d): Rename from struct hash_table.
3304         Change all uses.
3305         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
3306         ivtype_map_elt.  Change all uses.
3307         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
3308         Change all uses.
3309         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
3310         * graphite.h (struct name_tree_d): Rename from struct name_tree.
3311         Change all uses.
3312         (struct sese_d): Rename from struct sese.  Change all uses.
3313         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
3314         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
3315         * optabs.h (struct optab_d): Rename from struct optab.  Change all
3316         uses.
3317         (struct convert_optab_d): Rename from struct convert_optab.
3318         Change all uses.
3319         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
3320         ipa_opt_pass.  Change all uses.
3321         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
3322         all uses.
3323
3324         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
3325         defined as a typedef.
3326         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
3327         defined as a tag.
3328
3329 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3330
3331         PR 16302
3332         * fold-const.c (make_range,build_range_check,merge_ranges): Move
3333         declaration to...
3334         (merge_ranges): Returns bool. 
3335         * tree.h (make_range): .. to here.
3336         (build_range_check): Likewise.
3337         (merge_ranges): Likewise. Renamed from merge_ranges.
3338         * c-typeck.c (parser_build_binary_op): Update calls to
3339         warn_logical_operator.
3340         * c-common.c (warn_logical_operator): Add new warning.
3341         * c-common.h (warn_logical_operator): Update declaration.
3342         
3343 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3344
3345         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
3346         
3347 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3348
3349         * doc/install.texi: Document MPC requirements, flags etc.
3350
3351         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
3352         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
3353         Evaluate constant arguments.
3354         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
3355         (fold_builtin_1): Likewise, also evaluate constant arguments.
3356         Remove superfluous break.
3357         (do_mpc_ckconv): New.
3358         * real.h: Include mpc.h.
3359         * toplev.c (print_version): Output MPC version info if available.
3360
3361 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
3362
3363         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
3364
3365 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
3366
3367         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
3368         only once.
3369
3370 2009-05-15  Jan Hubicka  <jh@suse.cz>
3371
3372         * doc/invoke.texi (max-early-inliner-iterations): New flag.
3373         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.