OSDN Git Service

bb9629a93dec622e233090ccf76e83500092b227
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
2
3         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
4         * combine-stack-adj.c (pass_stack_adjustments): Use it.
5         * Makefile.in: Fix GGC dependency for gcse.o.
6
7 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
8
9         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
10         * gimple-pretty-print.c (dump_gimple_stmt): Same.
11         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
12         created.
13         * c-parser.c (c_parser_binary_expression): Use current column while
14         building binary operations.
15         * common.opt (fshow-column): Enable by default.
16         * tree-vrp.c (check_array_ref): Use warning_at.
17         (check_array_bounds): Use location from call back if expr has no
18         location.
19         * tree.h: Add location argument to maybe_fold_*.
20         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
21         (maybe_fold_offset_to_array_ref): Add location argument and use it.
22         (maybe_fold_offset_to_component_ref): Same.
23         (maybe_fold_offset_to_reference): Same.
24         (maybe_fold_offset_to_address): Same.
25         (maybe_fold_stmt_indirect): Same.
26         (maybe_fold_stmt_addition): Same.
27         (fold_stmt_r): Pass location to maybe_fold_*.
28         (fold_gimple_assign): Same.
29         * c-tree.h: Add location argument to finish_decl,
30         default_function_array_conversion, store_init_value.
31         * c-decl.c (define_label): Use error_at.
32         (c_make_fname_decl): Pass location to finish_decl.
33         (finish_decl): New location argument.
34         (build_compound_literal): Pass location to store_init_value.
35         (grokdeclarator): Pass location to finish_decl.
36         (grokfield): Same.
37         * c-typeck.c (array_to_pointer_conversion): New location argument.
38         (function_to_pointer_conversion): Same.
39         (default_function_array_conversion): Same.
40         (parser_build_unary_op): Pass location to overflow_warning.
41         (parser_build_binary_op): Same.  Use warning_at.
42         (build_unary_op): Pass location to array_to_pointer_conversion.
43         (build_c_cast): Pass location to digest_init.
44         (build_modify_expr): New location argument.
45         (convert_for_assignment): Same.
46         (store_init_value): Same.
47         (digest_init): Same.
48         (output_init_element): Pass location to digest_init and
49         array_to_pointer_conversion.
50         (c_finish_return): Pass location to convert_for_assignment.
51         * gimplify.c (gimplify_conversion): Pass location to
52         maybe_fold_offset_to_address.
53         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
54         to maybe_fold_stmt_addition.
55         * c-omp.c (c_finish_omp_atomic): Pass new location to
56         build_modify_expr.
57         (c_finish_omp_for): Same.
58         * c-common.c (overflow_warning): New argument.
59         * c-common.h: New argument to build_modify_expr, overflow_warning.
60         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
61         finish_decl.
62         (c_parser_initializer): Pass location to
63         default_function_array_conversion.
64         (c_parser_initelt): Same.
65         (c_parser_initval): Same.
66         (c_parser_asm_operands): Same.
67         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
68         (c_parser_conditional_expression): Same.
69         (c_parser_binary_expression): Add location info to stack.  Use it.
70         (c_parser_unary_expression): Pass location to
71         default_function_array_conversion, parser_build_unary_op,
72         build_indirect_ref, c_parser_postfix_expression_after_primary.
73         (c_parser_postfix_expression_after_primary): New location argument.
74         Use it.
75         (c_parser_expression_conv): Pass location to
76         default_function_array_conversion.
77         (c_parser_expr_list): Same.
78         (c_parser_omp_atomic): Same.
79         (c_parser_omp_for_loop): Same.
80         * c-tree.h: (struct c_declarator): Add comment to id_loc.
81         (build_array_declarator): New argument.
82         * c-decl.c (build_array_declarator): Add location argument.
83         (grokdeclarator): Set id_loc for cdk_array.
84         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
85         build_array_declarator.
86         * tree.c (build_omp_clause): Add location argument.
87         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
88         (OMP_CLAUSE_LOCATION): New macro.
89         (struct tree_omp_clause): Add location field.
90         (build_omp_clause): Add argument.
91         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
92         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
93         build_omp_clause.
94         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
95         (cp_parser_omp_clause_collapse): Same.
96         (cp_parser_omp_clause_default): Same.
97         (cp_parser_omp_clause_if): Same.
98         (cp_parser_omp_clause_nowait): Same.
99         (cp_parser_omp_clause_num_threads): Same.
100         (cp_parser_omp_clause_ordered): Same.
101         (cp_parser_omp_clause_schedule): Same.
102         (cp_parser_omp_clause_untied): Same.
103         (cp_parser_omp_for_loop): Same.
104         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
105         * c-tree.h (c_start_case): Add location argument.
106         (c_process_expr_stmt): Same.
107         (c_finish_goto_*): Same.
108         * tree-parloops.c (initialize_reductions): Pass location to
109         build_omp_clause.
110         (create_parallel_loop): Same.
111         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
112         (gfc_trans_omp_reduction_list): Same.
113         (gfc_trans_omp_clauses): Same.
114         (gfc_trans_omp_do): Same.
115         * c-typeck.c (c_finish_goto_label): Same.
116         (c_finish_goto_ptr): New location argument.
117         (c_start_case): Same.
118         (emit_side_effect_warnings): Same.
119         (c_process_expr_stmt): Same.
120         (c_finish_stmt_expr): Same.
121         (c_finish_omp_clauses): Use error_at instead of error.
122         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
123         build_omp_clause.
124         * c-omp.c (c_split_parallel_clauses): New location argument.
125         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
126         to build_omp_clause.
127         (convert_local_reference_stmt): Same.
128         (convert_gimple_call): Same.
129         * c-common.h (c_split_parallel_clauses): New argument.
130         * c-parser.c (c_parser_statement_after_labels): Pass location to
131         c_finish_goto_label.
132         (c_parser_switch_statement): Pass location to c_start_case.
133         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
134         and c_process_expr_stmt.
135         (c_parser_omp_variable_list): Add location argument.
136         (c_parser_omp_clause_collapse): Pass location to
137         build_omp_clause.
138         (c_parser_omp_clause_default): Same.
139         (c_parser_omp_clause_if): Same.
140         (c_parser_omp_clause_num_threads): Same.
141         (-c_parser_omp_clause_ordered): Same.
142         (c_parser_omp_clause_reduction): Pass location to
143         c_parser_omp_variable_list.
144         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
145         (c_parser_omp_clause_untied): Same.
146         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
147         (c_parser_omp_parallel): Pass location to
148         c_split_parallel_clauses.
149
150         * c-tree.h (check_for_loop_decls, undeclared_variable,
151         build_component_ref, build_array_ref, build_external_ref,
152         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
153         build_conditional_expr, build_compound_expr, c_cast_expr,
154         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
155         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
156         argument.
157         * c-semantics.c (build_stmt): Same.
158         (build_case_label): Same.
159         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
160         (undeclared_variable): New argument.
161         (make_label): Same.
162         (lookup_label): Pass location on down.
163         (define_label): Same.
164         (finish_decl): Same.
165         (build_compound_literal): Same.
166         (finish_struct): Same.
167         (finish_function): Do not set location here.
168         (check_for_loop_decls): New argument.
169         * tree.c (save_expr): Set location.
170         (build_empty_stmt): New argument.
171         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
172         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
173         * builtins.c (gimplify_va_arg_expr): Use locations.
174         (expand_builtin_sync_operation): Same.
175         * c-typeck.c (build_component_ref): New argument.
176         (build_array_ref): Same.
177         (build_external_ref): Same.
178         (c_expr_sizeof_expr): Same.
179         (c_expr_sizeof_type): Same.
180         (parser_build_unary_op): Same.
181         (build_conditional_expr): Same.
182         (build_compound_expr): Pass location on down.
183         (build_compound_expr): New argument.
184         (build_c_cast): Same.
185         (c_cast_expr): Same.
186         (build_asm_expr): Same.
187         (c_finish_return): Same.
188         (c_process_expr_stmt): Pass location on down.
189         (c_finish_stmt_expr): New argument.
190         (push_clenaup): Same.
191         (c_finish_omp_parallel): Same.
192         (c_finish_omp_task): Same.
193         * gimplify.c (gimplify_call_expr): Pass location on down.
194         * c-omp.c (c_finish_omp_master): New argument.
195         (c_finish_omp_critical): Same.
196         (c_finish_omp_ordered): Same.
197         (c_finish_omp_barrier): Same.
198         (-c_finish_omp_taskwait): Same.
199         (c_finish_omp_atomic): Same.
200         (c_finish_omp_flush): Same.
201         * tree-inline.c (copy_tree_body_r): Pass location on down.
202         (inline_forbidden_p): Remove use of input_location.
203         * c-gimplify.c (c_build_bind_expr): New argument.
204         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
205         (c_sizeof_or_alignof_type): New argument.
206         (c_alignof_expr): Same.
207         (build_va_arg): Same.
208         (c_add_case_label): Same.
209         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
210         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
211         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
212         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
213         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
214         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
215         New argument.
216         * stub-objc.c (objc_build_selector_expr): Same.
217         (objc_build_throw_stmt): Same.
218         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
219         (c_parser_initelt): Same.
220         (c_parser_compound_statement): Same.
221         (c_parser_compound_statement_nostart): Same.
222         (c_parser_label): Same.
223         (c_parser_statement_after_labels): Same.
224         (c_parser_if_body): Same.
225         (c_parser_else_body): Same.
226         (c_parser_if_statement): Same.
227         (c_parser_switch_statement): Same.
228         (c_parser_while_statement): Same.
229         (c_parser_do_statement): Same.
230         (c_parser_for_statement): Same.
231         (c_parser_asm_statement): Same.
232         (c_parser_conditional_expression): Same.
233         (c_parser_binary_expression): Same.
234         (c_parser_cast_expression): Same.
235         (c_parser_unary_expression): Same.
236         (c_parser_sizeof_expression): Same.
237         (c_parser_alignof_expression): Same.
238         (c_parser_postfix_expression): Same.
239         (c_parser_expression): Same.
240         (c_parser_objc_receiver): Same.
241         (c_parser_omp_variable_list): Same.
242         (c_parser_omp_structured_block): Same.
243         (c_parser_omp_atomic): New argument.
244         (c_parser_omp_barrier): Same.
245         (c_parser_omp_critical): Same.
246         (c_parser_omp_flush): Pass location on down.
247         (c_parser_omp_for_loop): New argument.
248         (c_parser_omp_for): Same.
249         (c_parser_omp_master): Same.
250         (c_parser_omp_ordered): Same.
251         (c_parser_omp_sections_scope): Same.
252         (c_parser_omp_sections): Same.
253         (c_parser_omp_parallel): Same.
254         (c_parser_omp_single): Same.
255         (c_parser_omp_task): Same.
256         (c_parser_omp_taskwait): Pass location on down.
257         (c_parser_omp_construct): Same.
258         (c_parser_omp_threadprivate): Same.
259         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
260         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
261         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
262         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
263         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
264         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
265         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
266         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
267         config/i386/i386.c, stmt.c:
268         Add location argument to the following function definitions and/or
269         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
270         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
271         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
272         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
273         do_case, c_finish_bc_stmt, build_compound_literal,
274         build_function_call.
275         * c-decl.c (build_compound_literal): Add location argument.
276         Make all diagnostic calls use location.
277         (start_struct): Same.
278         (finish_struct): Same.
279         (start_enum): Same.
280         (build_enumerator): Same.
281         (start_function): Same.
282         (grokdeclarator): Make all diagnostic calls use location.
283         (store_parm_decls_oldstyle): Same.
284         * c-typeck.c (build_function_call): Add location argument.
285         Make all diagnostic calls use location.
286         (do_case): Same.
287         (c_finish_bc_stmt): Same.
288         * tree-nested.c (get_trampoline_type): Add argument.
289         Pass location to build_decl.
290         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
291         * rtl.h (RTL_LOCATION): New.
292         * c-common.c (c_add_case_label): Add location argument.
293         Make all diagnostic calls use location.
294         * c-common.h: Add location argument to make_fname_decl, do_case,
295         c_add_case_label, build_function_call, resolve_overloaded_builtin.
296         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
297         Set it appropriately for every case.  Pass enum_loc to start_enum
298         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
299         parser_xref_tag.
300         (c_parser_struct_or_union_specifier): Save location.  Use it for
301         start_struct, finish_struct, and parser_xref_tag.
302
303 2009-06-12  Ian Lance Taylor  <iant@google.com>
304
305         * fold-const.c (fold_unary): Rename local variable and to
306         and_expr.
307
308         * c-opts.c (c_common_handle_option): For -Wc++-compat set
309         cpp_opts->warn_cxx_operator_names.
310
311 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
312
313         PR tree-opt/38865
314         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
315         is returns NULL and OP is a VCE, look through the VCE.
316
317 2009-06-12  Ian Lance Taylor  <iant@google.com>
318
319         PR bootstrap/40430
320         * collect2.c (main): Use CONST_CAST2 in code inside #if
321         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
322
323 2009-06-12  Joey Ye  <joey.ye@intel.com>
324
325         PR middle-end/39146
326         * cfgexpand.c (get_decl_align_unit): Update
327         max_used_stack_slot_alignment with align instead of
328         stack_alignment_needed.
329
330         * function.c (assign_stack_local_1): Update
331         max_used_stack_slot_alignment with alignment_in_bits instead
332         of stack_alignment_needed.
333         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
334         here.
335
336 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
337
338         * dwarf2out.c (last_var_location_insn): New variable.
339         (dwarf2out_end_epilogue): Clear last_var_location_insn.
340         (dwarf2out_var_location): Don't record anything after last real
341         insn.  Only change labels if there were any real instructions
342         in between last note and this one, or if changed sections.
343
344 2009-06-11  Richard Henderson  <rth@redhat.com>
345
346         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
347         note when storing the frame pointer in a register.
348         (FRP): Don't redefine to nothing for epilogue.
349         (alpha_expand_epilogue): Mark register and sp restores.
350         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
351
352         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
353         when gen_lowpart is needed.
354
355 2009-06-11  Richard Henderson  <rth@redhat.com>
356
357         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
358
359         * dwarf2out.c (need_data_align_sf_opcode): New.
360         (div_data_align): Move earlier.
361         (def_cfa_1, reg_save): Use it.
362
363 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
364
365         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
366         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
367         (ix86_handle_option): Handle OPT_mcrc32.
368         (ix86_target_string): Add -mcrc32.
369         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
370
371         * config/i386/i386.h (TARGET_CRC32): New.
372
373         * config/i386/i386.md (sse4_2_crc32<mode>): Also check
374         TARGET_CRC32.
375         (sse4_2_crc32di): Likewise.
376
377         * config/i386/i386.opt (mcrc32: New.
378
379         * doc/invoke.texi: Document -mcrc32.
380
381 2009-06-11  Richard Henderson  <rth@redhat.com>
382
383         * common.opt (gdwarf-): Accept a version number.
384         * doc/invoke.texi (gdwarf-): Update docs.
385         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
386         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
387         version level, and record it.
388
389         * dwarf2.h (DW_CIE_VERSION): Remove.
390         * dwarf2out.c (DWARF_VERSION): Remove.
391         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
392         (output_call_frame_info): Use CIE version 3 for dwarf3,
393         or if the return register column is out of range for version 1.
394         (dwarf_stack_op_name): Add all dwarf3 values.
395         (DEBUG_PUBTYPES_SECTION): New.
396         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
397         encoding change for dwarf3.
398         (output_die) [dw_val_class_die_ref]: Likewise.
399         (output_compilation_unit_header): Emit correct version for dwarf3.
400         (output_line_info): Likewise.
401         (output_pubnames): Update for DWARF_VERSION removal.
402         (output_aranges): Likewise.
403         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
404         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
405         (dwarf2out_finish): Likewise.
406
407 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
408
409         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
410         in r148403.
411
412 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
413
414         PR c/39252
415         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
416         * builtins.c (expand_builtin_unreachable): New function.
417         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
418         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
419         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
420         successors.
421         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
422         searching for missing barriers.
423
424 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
425
426         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
427         when -fprofile-generate* was passed.
428         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
429
430 2009-06-11  Anthony Green  <green@moxielogic.com>
431
432         * config/moxie/moxie.md: Define length attribute for all
433         instructions.
434         (rCC): Define.
435         (*b<cond:code>): Support limited branch ranges for new PC-relative
436         branch instructions.
437         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
438
439 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
440
441         * config/i386/i386.c (min_insn_size): Use get_attr_length
442         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
443         For __asm return 0.
444
445         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
446         instead of emit_insn_before.
447
448 2009-06-10  Ian Lance Taylor  <iant@google.com>
449
450         PR bootstrap/40408
451         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
452         GIMPLE_SWITCH.
453
454 2009-06-10  Revital Eres  <eres@il.ibm.com>
455
456         * passes.c (init_optimization_passes): Reschedule
457         predictive-commoning pass before complete unroll pass.
458
459 2009-06-10  Martin Jambor  <mjambor@suse.cz>
460
461         * cgraph.c (cgraph_node_can_be_local_p): New function.
462         (cgraph_make_node_local): New function.
463         * cgraph.h (cgraph_node_can_be_local_p): Declare.
464         (cgraph_make_node_local): Declare.
465
466 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
467
468         * tree.h (tree_base): Add packed_flag and user_align fields.
469         Decrease size of spare field.
470         (TYPE_USER_ALIGN): Use user_align from tree_base.
471         (DECL_USER_ALIGN): Likewise.
472         (TYPE_PACKED): Use packed_flag from tree_base.
473         (DECL_PACKED): Likewise.
474         (tree_type): Delete packed_flag and user_align fields.  Widen
475         precision field.  Widen mode field and shuffle fields to align
476         mode on an 8-bit boundary.
477         (tree_decl_common): Delete decl_flag_1 and user_align fields.
478         Renumber decl_flag_* fields.  Fix comments.  Widen
479         decl_common_unused field.
480         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_*
481         fields.
482         (DECL_EXTERNAL): Likewise.
483         (DECL_BIT_FIELD): Likewise.
484         (DECL_NONADDRESSABLE_P): Likewise.
485         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
486         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
487
488 2009-06-10  Ian Lance Taylor  <iant@google.com>
489
490         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
491         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
492         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
493         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
494         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
495         DEF_VEC_ALLOC_FUNC_P.
496         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
497         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
498         DEF_VEC_ALLOC_FUNC_O.
499         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
500         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
501         DEF_VEC_ALLOC_FUNC_I.
502         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
503         (vec_stack_p_reserve_exact_1): Declare.
504         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
505         (vec_stack_free): Declare.
506         (VEC_stack_alloc): Define.
507         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
508         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
509         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
510         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
511         for void_p.
512         (stack_vecs): New static variable.
513         (vec_stack_p_reserve_exact_1): New function.
514         (vec_stack_o_reserve_1): New static function.
515         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
516         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
517         (vec_stack_free): New function.
518         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
519         (VEC_df_ref_stack_alloc): Define.
520         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
521         DEF_VEC_ALLOC_P_STACK.
522         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
523         (struct df_collection_rec): Change _vec fields to VEC.  Remove
524         _use fields.
525         (df_free_collection_rec): Adjust for new fields.
526         (df_insn_rescan): Use new df_collection_rec fields.
527         (df_notes_rescan, df_canonize_collection_rec): Likewise.
528         (df_ref_create_structure, df_ref_record): Likewise.
529         (df_get_conditional_uses, df_get_call_refs): Likewise.
530         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
531         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
532         (df_record_exit_block_uses, df_bb_verify): Likewise.
533         (df_swap_refs): Change ref_vec parameter to VEC.  Change all
534         callers.
535         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
536         Remove count parameter.  Change return type to void.  Change all
537         callers.
538         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
539         Remove count parameter.  Change return type to void.  Change all
540         callers.
541         (df_install_refs): Change old_vec parameter to VEC.  Remove count
542         parameter.  Change all callers.
543         (df_install_mws): Change old_vec parameter to VEC.  Remove count
544         parameter.  Change all callers.
545         (df_refs_verify): Change new_rec parameter to VEC.  Change call
546         callers.
547         (df_mws_verify): Likewise.
548
549 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
550
551         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
552
553 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
554
555         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
556
557 2009-06-10  Anthony Green  <green@moxielogic.com>
558
559         * config/moxie/crti.asm: New file.
560         * config/moxie/crtn.asm: New file.
561         * config/moxie/moxie.c: New file.
562         * config/moxie/moxie.h: New file.
563         * config/moxie/sfp-machine.h: New file.
564         * config/moxie/moxie-protos.h: New file.
565         * config/moxie/t-moxie: Created.
566         * config/moxie/t-moxie-softfp: Created.
567         * config/moxie/moxie.md: Created.
568         * config/moxie/constraints.md: Created.
569         * config.gcc: Add moxie support.
570         * doc/md.texi (Machine Constraints): Add moxie constraints.
571         * doc/contrib.texi (Contributors): Mention moxie port.
572         * doc/install.texi (Specific): Mention the moxie port.
573
574 2009-06-09  Ian Lance Taylor  <iant@google.com>
575
576         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
577         compiling with C++.
578         * optabs.c (optab_table): Only use designated initializers if
579         HAVE_DESIGNATED_INITIALIZERS is defined.
580         (convert_optab_table): Likewise.
581         (init_optabs): Always call init_insn_codes if
582         HAVE_DESIGNATED_INITIALIZERS is not defined.
583
584 2009-06-09  Ian Lance Taylor  <iant@google.com>
585
586         * targhooks.c (default_builtin_vectorized_function): Change fn
587         parameter to unsigned int.
588         (default_builtin_vectorized_conversion): Change code parameter to
589         unsigned int.
590         (default_builtin_reciprocal): Change fn parameter to unsigned int.
591         * targhooks.h: Update declarations.
592         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
593         parameter to unsigned int.
594
595         * c-typeck.c (comptypes_check_enum_int): New static function.
596         (comptypes_internal): Add enum_and_int_p parameter.  Change all
597         callers.
598         (comp_target_types): Add location parameter.  Change all callers.
599         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
600         Change all callers.
601         (function_types_compatible_p, type_lists_compatible_p): Likewise.
602         (build_conditional_expr): Add colon_loc parameter.  Change all
603         callers.
604         (convert_for_assignment): Add location parameter.  Change all
605         callers.
606         * c-parser.c (c_parser_conditional_expression): Pass location of
607         colon to build_conditional_expr.
608         * c-tree.h (build_conditional_expr): Update declaration.
609
610 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
611
612         * graphite.c: Revert previous patch.
613
614 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
615
616         PR bootstrap/40103
617         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
618
619 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
620
621         * tree-ssa-loop-prefetch.c
622         (loop_prefetch_arrays): Fixed a portability problem in printf format
623         string.
624
625 2009-06-09  Martin Jambor  <mjambor@suse.cz>
626
627         PR tree-optimization/40351
628         * tree-sra.c (propagate_subacesses_accross_link): Check that a refrence
629         to a potential artifical subaccess can be constructed.
630
631 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
632
633         * config/sh/sh-protos.h (sh_optimization_options): Declare.
634         (sh_override_options): Likewise.
635         * config/sh/sh.c: Include params.h.
636         (sh_optimization_options): New.
637         (sh_override_options): Likewise.
638         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
639         (OVERRIDE_OPTIONS): Use sh_override_options.
640
641 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
642
643         * dwarf2out.c (emit_cfa_remember): New variable.
644         (add_fde_cfi): If emit_cfa_remember, recurse to add
645         DW_CFA_remember_state first.
646         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
647         instead just set emit_cfa_remember.
648
649 2009-06-08  Jan Hubicka  <jh@suse.cz>
650
651         PR debug/40126
652         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
653
654 2009-06-08  Jan Hubicka  <jh@suse.cz>
655
656         PR middle-end/39834
657         * cgraphunit.c (save_inline_function_body): Do not copy transform hooks
658         for saved inline bodies.
659         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
660         for given function.
661
662 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
663
664         * jump.c (returnjump_p): Handle delayed branches.  Add missing
665         function comment.
666
667 2009-06-08  Jan Hubicka  <jh@suse.cz>
668
669         PR middle-end/40102
670         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
671         original node might've been modified.
672         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
673
674 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
675
676         * tree-object-size.c (addr_object_size): Add OSI argument.
677         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
678         (compute_builtin_object_size, expr_object_size): Adjust callers.
679         (plus_stmt_object_size): Call addr_object_size instead of
680         compute_builtin_object_size.
681
682 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
683             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
684         
685         * tree-ssa-loop-prefetch.c 
686         (gather_memory_references): Introduced a counter for the number of 
687         memory references.
688         (anything_to_prefetch_p): Introduced a counter for the number of 
689         prefetches.
690         (is_loop_prefetching_profitable): New function with a cost model 
691         for prefetching.
692         (loop_prefetch_arrays): Use the new cost model to determine if 
693         prefetching is profitable.
694         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
695         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
696         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
697         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
698         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
699         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
700         
701 2009-06-08  Michael Matz  <matz@suse.de>
702
703         PR debug/40012
704         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
705         partitions use the same.
706         (expand_one_var): Deal with DECL_RTL sometimes begin set also
707         for basevars of SSA_NAMEs.
708         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
709         to not expand them twice.
710         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
711         multiple places.
712
713 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
714
715         * common.opt (fcompare-debug=, fcompare-debug-second): New.
716         (fdump-final-insns=, gtoggle): New.
717         * doc/invoke.texi: Document them.
718         * final.c (rest_of_clean_state): Dump final insn stream.
719         * gcc.c (invoke_as): Hook in -fcompare-debug.
720         (static_spec_functions): Add compare-debug-dump-opt,
721         compare-debug-self-opt and compare-debug-auxbase-opt.
722         (compare_debug, compare_debug_second, compare_debug_opt): New.
723         (switches_debug_check, n_switches_debug_check): New.
724         (debug_auxbase_opt, debug_check_temp_file): New.
725         (process_command): Handle -fno-compare-debug, -fcompare-debug and
726         -fcompare-debug=*.
727         (do_self_spec): Handle arguments after switches.
728         (do_spec_1): Add .gk extension to temp file basenames for compare.
729         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
730         (cc1_options): Use it instead of normal auxbase computation for
731         the second compare-debug compilation.
732         (compare_files): New.
733         (main): Set up and implement compare debug mode.
734         (compare_debug_dump_opt_spec_function): New.
735         (compare_debug_self_opt_spec_function): New.
736         (compare_debug_auxbase_opt_spec_function): New.
737         * toplev.c (process_options): Handle flag_gtoggle,
738         flag_dump_final_insns.
739         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
740         during -fcompare-debug-second compilation.
741
742 2009-06-07  Ian Lance Taylor  <iant@google.com>
743
744         * dwarf2.h (enum dwarf_location_atom): Add
745         INTERNAL_DW_OP_tls_addr.
746         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
747
748         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
749         with no default node.  Change warning with %H to warning_at.
750         Don't clear warn_switch around case checking.
751         * doc/invoke.texi (Warning Options): Clarify distinction between
752         -Wswitch and -Wswitch-enum.
753
754 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
755
756         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
757
758 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
759
760         * gbl-ctors.h: Add header guard.
761
762 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
763
764         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
765         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
766         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
767         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
768         prototypes for removed functions.
769         (expressions_equal_p): Move to ...
770         * tree-ssa-sccvn.h: ... here and ...
771         * matrix-reorg.c: ... adjust includes.
772
773 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
774
775         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
776
777 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
778
779         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
780         (finish_function): Remove erroneous whitespace.
781
782 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
783
784         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
785         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
786
787 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
788
789         * errors.c (internal_error): Commentary typo fix.
790         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
791         * tree-ssa-pre.c: Ditto.
792
793 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
794
795         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
796         them is supposed to hold actual statements.
797
798 2009-06-06  Ian Lance Taylor  <iant@google.com>
799
800         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
801         empty statements can now have attributes.
802
803 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
804
805         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
806         * config/mips/mips.md: Ditto.
807
808 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
809
810         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
811         _RELOCATABLE.
812         (__eabi_uconvert): Likewise.
813
814 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
815
816         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
817         CFI_* definitions with IN_GCC.
818
819 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
820
821         * xcoffout.h (xcoffout_source_line): Update prototype.
822
823 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
824
825         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
826         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
827
828 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
829
830         PR middle-end/40340
831         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
832         inlined_function_outer_scope_p blocks for artificial inlines
833         even at -g0/-g1.
834         * tree.c (tree_nonartificial_location): Rewrite using
835         block_nonartificial_location.
836
837 2009-06-05  Revital Eres  <eres@il.ibm.com>
838             Leehod Baruch  <leehod@il.ibm.com>
839
840         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
841         (expand_expr_real_1): Remove comment.
842         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
843         Vectorize misaligned access when the target supports it.
844         (vect_supportable_dr_alignment): Check for unaligned access
845         support.
846         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
847         and remove asset.
848
849 2009-06-05  Julian Brown  <julian@codesourcery.com>
850
851         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
852         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
853
854 2009-06-05  Richard Guenther  <rguenther@suse.de>
855
856         PR bootstrap/40350
857         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
858         as possibly unused.
859
860 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
861
862         * config/s390/s390.c (global_not_special_regno_p): New static inline.
863         (save_gprs): Don't tell unwinder when a global register is saved.
864         (s390_emit_epilogue): Emit needed epilogue unwind info.
865
866 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
867
868         * dwarf2out.c (deferred_asm_name): New.
869         (add_name_and_src_coords_attributes): Defer creation of
870         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
871         computed yet.
872         (move_linkage_attr): New.
873         (dwarf2out_finish): Revisit deferrals and emit attributes at the
874         right place.
875
876 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
877
878         * tree-nested.c (finalize_nesting_tree_1): Declare the
879         frame_decl in the binding tree.
880
881 2009-06-04  Cary Coutant  <ccoutant@google.com>
882
883         * basic-block.h (struct basic_block_def): Add discriminator field.
884         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
885         callers.
886         * debug.c (do_nothing_debug_hooks): Add additional entry.
887         (debug_nothing_int_charstar_int): New function.
888         * debug.h (struct gcc_debug_hooks): Add parameter to source_line
889         hook.
890         (debug_nothing_int_charstar_int): New declaration.
891         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
892         discriminator value in .loc directive.
893         * final.c (last_discriminator): New variable.
894         (discriminator): New variable.
895         (final_start_function): Initialize above variables, pass current
896         discriminator to debug hook.
897         (notice_source_line): Check for discriminator change.
898         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
899         * sdbout.c (sdbout_source_line): New parameter.
900         * tree-cfg.c (struct locus_discrim_map): New structure type.
901         (discriminator_per_locus): New hash table.
902         (build_gimple_cfg): Allocate and free discriminator hash table.
903         (make_edges): Call assign_discriminator.
904         (locus_map_hash): New function.
905         (locus_map_eq): New function.
906         (next_discriminator_for_locus): New function.
907         (same_line_p): New function.
908         (assign_discriminator): New function.
909         (make_cond_expr_edges): Call assign_discriminator.
910         (make_gimple_switch_edges): Likewise.
911         (first_non_label_stmt): New function.
912         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
913         all callers.
914         * xcoffout.c (xcoffout_source_line): Add new parameter.
915
916         * configure.ac (gcc_cv_as_discriminator): New configury check for
917         gas support for discriminator.
918         * configure: Regenerate.
919         * config.in: Regenerate.
920
921 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
922
923         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
924         val after checking for integers.
925
926 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
927
928         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
929         X64_REGPARM_MAX.
930         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
931         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
932         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
933         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
934         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
935         X64_SSE_REGPARM_MAX.
936         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
937         X64_SSE_REGPARM_MAX.
938
939 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
940
941         * gcc.c (report_times_to_file): New.
942         (execute): Implement it.
943         (process_command): Support -time=.
944         * doc/invoke.texi: Document it.
945
946 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
947
948         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
949         that have value exprs.
950
951 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
952
953         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
954         declarations for constants until...
955         (dw2_output_indirect_constant_1): ... this point.
956
957 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
958
959         PR target/10242
960         * arm.md (arm_addsi3): Don't try to split an add with an
961         eliminable register until after reload has completed.
962
963 2009-06-03  Ian Lance Taylor  <iant@google.com>
964
965         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
966         * genattrtab.c (write_length_unit_log): Likewise.
967         * genchecksum.c (dosum): Likewise.
968         * gengtype.c (write_rtx_next): Likewise.
969         (finish_root_table, write_roots): Likewise.
970         * gimple.c (gimple_ops_offset_): Likewise.
971         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
972         * config/arc/arc.c (arc_attribute_table): Likewise.
973         * config/arm/arm.c (arm_attribute_table): Likewise.
974         * config/avr/avr.c (avr_attribute_table): Likewise.
975         * config/crx/crx.c (crx_attribute_table): Likewise.
976         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
977         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
978         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
979         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
980         * config/sh/sh.c (sh_attribute_table): Likewise.
981         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
982         * config/spu/spu.c (spu_attribute_table): Likewise.
983         * config/v850/v850.c (v850_attribute_table): Likewise.
984
985         * config/alpha/alpha.c (vms_attribute_table): Make static.
986         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
987         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
988         * config/mips/mips.c (mips_attribute_table): Likewise.
989
990         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
991         $(SYSTEM_H).
992         (cc1-checksum.o): Likewise.
993
994 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
995
996         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
997
998 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
999
1000         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
1001         insn if it is changing sp.  Use gen_add3_insn instead of
1002         conditionally gen_addsi3 and gen_adddi3.
1003         (offset_below_red_zone_p): New static inline function.
1004         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
1005         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
1006         * config/rs6000/ppc-asm.h: Include auto-host.h.
1007         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
1008         CFI_RESTORE): Define.
1009         * config/rs6000/crtresxgpr.asm: Add unwind info.
1010         * config/rs6000/crtresxfpr.asm: Likewise.
1011         * config/rs6000/crtresgpr.asm: Likewise.
1012         * config/rs6000/crtresfpr.asm: Likewise.
1013         * config/rs6000/crtsavgpr.asm: Likewise.
1014         * config/rs6000/crtsavfpr.asm: Likewise.
1015
1016         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
1017         0 to second argument of DWARF2_FRAME_REG_OUT macros.
1018
1019 2009-06-03  Julian Brown  <julian@codesourcery.com>
1020
1021         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
1022         words or less (including TImode) in core registers.
1023
1024 2009-06-03  Richard Guenther  <rguenther@suse.de>
1025
1026         PR middle-end/40328
1027         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
1028
1029 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
1030
1031         * statistics.c (statistics_counter_event): Do not record event 
1032         in pass dump if its number == -1.
1033         (curr_statistics_hash): Add assert that we never get passes 
1034         with static number == -1.
1035
1036 2009-06-03  Richard Guenther  <rguenther@suse.de>
1037             Andrey Belevantsev  <abel@ispras.ru>
1038
1039         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
1040         non-BLKmode arrays addressable.
1041
1042 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
1043
1044         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
1045         * config/m68k/m68k.h: ... here.
1046         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
1047         m68k and fido.
1048
1049 2009-06-03  Martin Jambor  <mjambor@suse.cz>
1050
1051         PR tree-optimization/40323
1052         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
1053         assignment.
1054
1055 2009-06-03  Richard Guenther  <rguenther@suse.de>
1056
1057         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
1058         consistently.
1059
1060 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
1061
1062         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
1063         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
1064         JUMP_TABLE_DATA_P where applicable.
1065         * config/sh/sh.c: Ditto.
1066         * config/sh/sh.h: Ditto.
1067         * config/sh/sh.md: Ditto.
1068         * config/sh/symbian.c: Ditto.
1069
1070 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
1071
1072         * config/i386/driver-i386.c (describe_cache): Optimize
1073         concatenation of strings.  Use snprintf instead of sprintf.
1074         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
1075         target when not compiling with GCC.
1076
1077 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
1078
1079         * config/sh/sh.c: Revert last change.
1080         (sh_expand_epilogue): Emit a blockage insn before the frame
1081         pointer adjustment unconditionally.
1082
1083 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1084
1085         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
1086         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
1087         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
1088         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
1089         to COLLECT_GCC_OPTIONS.
1090
1091 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1092
1093         * collect2.c (target_system_root): New variable.
1094         (main): Handle --sysroot=.
1095         (ignore_library): Strip the sysroot from the library path.
1096
1097 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1098
1099         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
1100         (collect2.o): Depend on collect2-aix.h.
1101         (collect2-aix.o): New rule.
1102         * collect2-aix.h: New file.
1103         * collect2-aix.c: Likewise.
1104         * collect2.c: Include collect2-aix.h.  Don't undefine
1105         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
1106         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
1107         Use TARGET_AIX_VERSION instead of _AIX51.
1108         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
1109         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
1110         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
1111         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
1112         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
1113
1114 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1115
1116         * collect2.c (ignore_library): Avoid premature post-increment
1117         and null deference.
1118
1119 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
1120
1121         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
1122         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
1123         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
1124         CROSS_DIRECTORY_STRUCTURE too.
1125         (LINK_LIBG_SPEC): Likewise.
1126         (LIB_SPEC): Add %R to sysroot paths.
1127         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
1128         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
1129         * config/rs6000/aix51.h: As for aix43.h.
1130         * config/rs6000/aix52.h: Likewise.
1131         * config/rs6000/aix53.h: Likewise.
1132         * config/rs6000/aix61.h: Likewise.
1133         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
1134         to the beginning of sysroot paths.
1135
1136 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1137
1138         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
1139         INSN_LISTs that are out of the REG_NOTE range.
1140
1141 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1142
1143         * loop-unroll.c (struct iv_to_split): Add pointer to next.
1144         (struct var_to_expand): Likewise.
1145         (struct opt_info): Add head and tail for linked lists of the above.
1146         (analyze_insn_to_expand_var): Initialize next.
1147         (analyze_iv_to_split_insn): Likewise.
1148         (analyze_insns_in_loop): Create linked lists.
1149         (allocate_basic_variable): Simplify for use without hash table.
1150         (insert_var_expansion_initialization): Likewise, make it type-safer.
1151         (combine_var_copies_in_loop_exit): Likewise.
1152         (apply_opt_in_copies): Walk lists rather than hash tables.
1153         (release_var_copies): Simplified and inlined by hand into...
1154         (free_opt_info): ... this function.
1155
1156 2009-06-02  Richard Guenther  <rguenther@suse.de>
1157
1158         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
1159         for field decls.
1160
1161 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1162
1163         * cfgexpand.c (gimple_expand_cfg): Discard the source location
1164         only for builtins that are not overridden.
1165
1166 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1167
1168         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
1169         label string.
1170
1171 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1172
1173         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
1174
1175 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1176
1177         * combine.c (move_deaths): Compare LUIDs within the same BB only.
1178
1179 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
1180
1181         * common.opt (fdump-unnumbered-links): New.
1182         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
1183         * print-rtl.c (flag_dump_unnumbered_links): New.
1184         (print_rtx): Test it.
1185
1186 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
1187
1188         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
1189         push/pop multiple to 8-byte alignment.
1190
1191 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
1192
1193         * config/i386/i386.c (queued_cfa_restores): New static variable.
1194         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
1195         functions.
1196         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
1197         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
1198         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
1199         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
1200         note unconditionally.
1201         (ix86_emit_restore_regs_using_mov): Likewise.
1202         (ix86_emit_restore_sse_regs_using_mov): Likewise.
1203         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
1204         it through to ix86_emit_restore_reg_using_pop.
1205         (ix86_emit_leave): Add RED_OFFSET argument.  Call
1206         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
1207         instead of adding REG_CFA_OFFSET note unconditionally.
1208         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
1209         the above functions.  Call ix86_add_queued_cfa_restore_notes when
1210         needed.
1211
1212         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
1213         force output of the label even for dwarf2out_do_cfi_asm.
1214         (add_fde_cfi): If -g2 and above and cfi might change CFA,
1215         force creation of CFI label and chain DW_CFA_set_loc jumping to it
1216         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
1217         caller.
1218         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
1219         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
1220         dwarf2out_cfi_label callers.
1221         * tree.h (dwarf2out_cfi_label): Adjust prototype.
1222         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
1223         Adjust dwarf2out_cfi_label callers.
1224         * config/vax/vax.c (vax_output_function_prologue): Likewise.
1225
1226         * config/i386/i386.h (struct machine_cfa_state,
1227         struct machine_function): Guard with ifndef USED_FOR_TARGET
1228         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
1229
1230         PR other/40024
1231         * emutls.c (__emutls_get_address): Change arr->size to mean number
1232         of allocated arr->data entries instead of # of slots + 1.
1233
1234         PR middle-end/40316
1235         * recog.c (peep2_reinit_state): New function.
1236         (peephole2_init_state): Use it at the end of a basic block and also
1237         when seeing a RTX_FRAME_RELATED_P insn.
1238
1239 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
1240
1241         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
1242         fixuns_truncrfdi2): New.
1243         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
1244         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
1245         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
1246         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
1247         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
1248         *recip_approx): Remove.
1249         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
1250         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
1251         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
1252         move to div.md.
1253         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
1254         setf_exp_rf): New.
1255
1256 2009-06-01  Ian Lance Taylor  <iant@google.com>
1257
1258         * attribs.c (register_attribute): Use CONST_CAST.
1259         * collect2.c (main): Use CONST_CAST2.
1260         (scan_prog_file): Likewise.
1261         * gcc.c (process_command, main): Likewise.
1262         * toplev.c (toplev_main): Likewise.
1263
1264         * c-typeck.c (handle_warn_cast_qual): New static function,
1265         partially broken out of build_c_cast.
1266         (build_c_cast): Call handle_warn_cast_qual.
1267         * doc/invoke.texi (Warning Options): Document new effect of
1268         -Wcast-qual.
1269
1270 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
1271
1272         * diagnostic.c (diagnostic_build_prefix): Always print columns.
1273         (diagnostic_report_current_module): Print columns.
1274         * common.opt (flag_show_column): Enable by default.
1275
1276 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
1277
1278         * alias.c (find_base_term): Check for NULL term before returning.
1279
1280 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
1281
1282         Revert due to PR40320:
1283         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
1284         * calls.c (emit_library_call_value_1): Don't force_operand for move
1285         and push insns.
1286
1287 2009-06-01  Olivier Hainque  <hainque@adacore.com>
1288             Eric Botcazou  <ebotcazou@adacore.com>
1289
1290         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
1291         to be processed as a bitfield for constructor output purposes.
1292         * output.h (initializer_constant_valid_for_bitfield_p): Declare
1293         new function.
1294         * varasm.c (oc_local_state): New type, output_constructor
1295         local state to support communication with helpers.
1296         (oc_outer_state): New type, output_constructor outer state of
1297         relevance in recursive calls.
1298         (output_constructor_array_range): New output_constructor helper,
1299         extracted code for an array range element.
1300         (output_constructor_regular_field): New output_constructor helper,
1301         extracted code for an element that is not a bitfield.
1302         (output_constructor_bitfield): New output_constructor helper,
1303         extracted code for a bitfield element.  Accept an OUTER state
1304         argument for recursive processing.  Recurse on record or array
1305         CONSTRUCTOR values, possibly past noop conversions.
1306         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
1307         VALUE is a valid constant-valued expression for use in a static
1308         bit-field initializer.
1309         (output_constructor): Rework to use helpers.  Accept and honor an
1310         OUTER state argument for recursive calls.  Return total size.  Be
1311         prepared for nested constructors initializing bitfields.
1312         (output_constant): Feed OUTER in calls to output_constructor.
1313
1314 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
1315
1316         * calls.c (emit_library_call_value_1): Don't force_operand for move
1317         and push insns.
1318
1319 2009-06-01  Nick Clifton  <nickc@redhat.com>
1320
1321         * doc/invoke.texi (IA-64 Options): Fix typo.
1322
1323 2009-06-01  Ira Rosen  <irar@il.ibm.com>
1324
1325         PR tree-optimization/39129
1326         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
1327         printed message.
1328         (vect_do_peeling_for_loop_bound): Use 
1329         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
1330         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
1331         (vect_loop_versioning): Likewise.
1332         (vect_create_cond_for_alias_checks): Fix indentation.
1333         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
1334         macros.
1335         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
1336         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
1337         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
1338         "control flow in loop".
1339         (vect_estimate_min_profitable_iters): Use 
1340         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
1341         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
1342         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
1343         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
1344         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
1345         statement belongs to a group of strided accesses with the exact code 
1346         check.
1347         (vectorizable_load): Likewise.
1348         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
1349         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1350
1351 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
1352
1353         * config/freebsd-stdint.h: New file.
1354         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
1355         Add freebsd-stdint.h to tm_file.
1356
1357 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
1358
1359         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
1360         (thumb2_extendhidi2): Likewise.
1361
1362 2009-05-31  Ian Lance Taylor  <iant@google.com>
1363
1364         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
1365
1366 2009-05-31  Ian Lance Taylor  <iant@google.com>
1367
1368         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
1369         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
1370         (ipa-reference.o): Depend upon gt-ipa-reference.h.
1371
1372 2009-05-31  Jason Merrill  <jason@redhat.com>
1373
1374         * tree-pretty-print.c (print_call_name): Take the callee, not the
1375         call itself.  Make non-static.  Use dump_function_name for functions.
1376         (dump_generic_node): Adjust.
1377         * diagnostic.h: Declare print_call_name.
1378         * gimple-pretty-print.c (dump_gimple_call): Use it.
1379
1380 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
1381
1382         * config/sh/sh.md (ashldi3_std): New define_expand.
1383         (ashldi3): Use it.
1384
1385 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
1386
1387         PR target/40313
1388         * config/sh/sh.c: Include debug.h.
1389         (sh_expand_epilogue): Emit a blockage insn before the frame
1390         pointer adjustment also when dwarf2out_do_frame returns true.
1391
1392 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
1393
1394         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
1395         (thumb2_extendqidi2): New pattern.
1396
1397 2009-05-31  Ira Rosen  <irar@il.ibm.com>
1398
1399         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
1400         mark phis for renaming.
1401         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
1402         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
1403         Call mark_sym_for_renaming.
1404         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
1405         * tree-vect-loop.c (vect_transform_loop): Remove
1406         vect_memsyms_to_rename initialization and a call to
1407         mark_set_for_renaming.
1408
1409 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
1410
1411         PR middle-end/40304
1412         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
1413         frame related even if !set_cfa && style < 0.
1414
1415 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
1416
1417         * config/i386/mingw-tls.c: New file.
1418         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
1419         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
1420         defining _WIN32 but not __CYGWIN__.
1421
1422 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1423
1424         * configure.ac: Add MPC support.
1425         
1426         * config.in, configure: Regenerate.     
1427
1428 2009-05-29  Richard Henderson  <rth@redhat.com>
1429
1430         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
1431         NOTE_INSN_BASIC_BLOCK.
1432         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
1433         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
1434         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
1435         to be deleted.
1436         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
1437         add in_use field.
1438         (add_cfi): Disable check redefining cfa away from drap.
1439         (lookup_cfa_1): Add remember argument; handle remember/restore.
1440         (lookup_cfa): Pass remember argument.
1441         (cfa_remember): New.
1442         (compute_barrier_args_size_1): Remove sibcall check.
1443         (dwarf2out_frame_debug_def_cfa): New.
1444         (dwarf2out_frame_debug_adjust_cfa): New.
1445         (dwarf2out_frame_debug_cfa_offset): New.
1446         (dwarf2out_frame_debug_cfa_register): New.
1447         (dwarf2out_frame_debug_cfa_restore): New.
1448         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
1449         (dwarf2out_begin_epilogue): New.
1450         (dwarf2out_frame_debug_restore_state): New.
1451         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
1452         DW_CFA_restore_state.
1453         (output_cfi_directive): Likewise.
1454         (convert_cfa_to_fb_loc_list): Likewise.
1455         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
1456         * dwarf2out.h: Update.
1457         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
1458         (copy_insn_1): Early out for null.
1459         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
1460         and dwarf2out_frame_debug_restore_state.
1461         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
1462         (prologue_insn_hash, epilogue_insn_hash): New.
1463         (free_after_compilation): Adjust freeing accordingly.
1464         (record_insns): Create hash table if needed; push insns into
1465         hash instead of array.
1466         (maybe_copy_epilogue_insn): New.
1467         (contains): Search hash table instead of array.
1468         (sibcall_epilogue_contains): Remove.
1469         (thread_prologue_and_epilogue_insns): Split eh_return insns
1470         and mark them as epilogues.
1471         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
1472         scanning in terms of basic blocks.
1473         * insn-notes.def (CFA_RESTORE_STATE): New.
1474         * jump.c (returnjump_p_1): Accept EH_RETURN.
1475         (eh_returnjump_p_1, eh_returnjump_p): New.
1476         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
1477         CFA_REGISTER, CFA_RESTORE): New.
1478         * rtl.def (EH_RETURN): New.
1479         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
1480
1481         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
1482         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
1483
1484         * config/i386/i386.c (gen_push): Update cfa state.
1485         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
1486         add a CFA_ADJUST_CFA note.
1487         (ix86_dwarf_handle_frame_unspec): Remove.
1488         (ix86_expand_prologue): Update cfa state.
1489         (ix86_emit_restore_reg_using_pop): New.
1490         (ix86_emit_restore_regs_using_pop): New.
1491         (ix86_emit_leave): New.
1492         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
1493         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
1494         * config/i386/i386.h (struct machine_cfa_state): New.
1495         (ix86_cfa_state): New.
1496         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
1497         (eh_return_internal): Merge from eh_return_<mode>,
1498         use eh_return rtx, split w/ epilogue.
1499
1500 2009-05-29  Ian Lance Taylor  <iant@google.com>
1501
1502         * builtins.c (validate_gimple_arglist): Don't use va_arg with
1503         enum type.
1504         * calls.c (emit_library_call_value_1): Likewise.
1505
1506         * c-typeck.c (c_build_va_arg): New function.
1507         * c-tree.h (c_build_va_arg): Declare.
1508         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
1509         instead of build_va_arg.
1510
1511 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
1512
1513         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
1514         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
1515         (ptr_difference_cost): Use affine combinations to compute it.
1516         (difference_cost): Likewise.
1517         (get_computation_cost_at): Compute more accurate cost for addresses
1518         if the ratio is a multiplier allowed in addresses.
1519         For non-addresses, consider that an additional offset or symbol is
1520         added only once.
1521
1522 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1523
1524         * config/i386/i386.c (ix86_decompose_address): Avoid useless
1525         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
1526
1527         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
1528         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
1529         (prefix_rex): For UNIT_MMX don't imply the prefix by default
1530         if MODE_DI.
1531         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
1532         to 1 for TYPE_SSE{IADD1,CVT1}.
1533         (prefix_vex_imm8): Removed.
1534         (length_vex): Only pass 1 as second argument to
1535         ix86_attr_length_vex_default if prefix_extra is 0.
1536         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
1537         (length): For prefix vex computation use length_immediate
1538         attribute instead of prefix_vex_imm8.
1539         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
1540         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
1541         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
1542         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
1543         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
1544         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
1545         a space in between the operands.
1546         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
1547         if one operand is 0xff and the other one si, di, bp or sp.
1548         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
1549         other one si, di, bp or sp.
1550         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
1551         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
1552         type and mode attributes.
1553         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
1554         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
1555         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
1556         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
1557         prefix_data16 attribute iff MODE_DF.
1558         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
1559         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
1560         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
1561         constm128_operand in length_immediate computation.
1562         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
1563         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
1564         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
1565         length_immediate attribute to 1.
1566         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
1567         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
1568         for certain alternatives.
1569         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
1570         prefix_data16 attribute if MODE_V1DF.
1571         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
1572         length_immediate to 1.
1573         (set_got_rex64, set_rip_rex64): Remove length attribute, set
1574         length_address to 4, set mode attribute to MODE_DI.
1575         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
1576         (fxam<mode>2_i387): Set length attribute to 4.
1577         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
1578         *prefetch_3dnow_rex): Override length_address attribute.
1579         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
1580         attributes.
1581         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
1582         (constm128_operand): Removed.
1583         * config/i386/i386.c (memory_address_length): For
1584         disp && !index && !base in 64-bit mode account for SIB byte if
1585         print_operand_address can't optimize disp32 into disp32(%rip)
1586         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
1587         for fs: or gs: segment.
1588         (ix86_attr_length_immediate_default): When checking if shortform
1589         is possible, truncate immediate to the length of the non-shortened
1590         immediate.
1591         (ix86_attr_length_address_default): Ignore MEM_P operands
1592         with X constraint.
1593         (ix86_attr_length_vex_default): Only check for DImode on
1594         GENERAL_REG_P operands.
1595         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
1596         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
1597         (sse_cvttps2pi): Clear prefix_rep attribute.
1598         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
1599         attribute.
1600         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
1601         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
1602         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
1603         iff operand 2 is const_int_operand.
1604         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
1605         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
1606         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
1607         instead of vex.
1608         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
1609         prefix_data16.
1610         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
1611         prefix_data16 attribute for movlpd and movhpd instructions.
1612         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
1613         length_immediate for shufpd instruction.
1614         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
1615         (avx_cmpp<avxmodesuffixf2c><mode>3,
1616         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
1617         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
1618         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
1619         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
1620         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
1621         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
1622         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
1623         prefix_data16 attribute for the first alternative to 1.
1624         (*avx_loadlps): Override length_immediate for the first alternative.
1625         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
1626         attributes for second alternative.
1627         (*vec_concatv2sf_sse4_1): Override length_immediate and
1628         prefix_data16 attributes for second alternative.
1629         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
1630         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
1631         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
1632         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
1633         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
1634         prefix_data16 and length_immediate to 1.
1635         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
1636         to 1.
1637         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
1638         prefix_extra attribute for variants that don't have 0f prefix alone.
1639         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
1640         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
1641         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
1642         *sse4_1_pextrd): Set length_immediate to 1.
1643         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
1644         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
1645         to 1.
1646         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
1647         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
1648         length_immediate to 1 for second alternative.
1649         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
1650         prefix_extra and length_immediate attributes for the first
1651         alternative.
1652         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
1653         first alternative.
1654         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
1655         to 1 for the first and third alternative.
1656         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
1657         alternative.
1658         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
1659         attribute.
1660         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
1661         attribute to 0.
1662         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
1663         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
1664         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
1665         *avx_psign<mode>3): Set prefix_extra attribute to 1.
1666         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
1667         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
1668         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
1669         ssse3_psign<mode>3): Override prefix_rex attribute.
1670         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
1671         (ssse3_palignrti): Override length_immediate to 1.
1672         (ssse3_palignrdi): Override length_immediate to 1, override
1673         prefix_rex attribute.
1674         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
1675         (sse4a_extrqi): Override length_immediate to 2.
1676         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
1677         (sse4a_insertq): Override prefix_data16 to 0.
1678         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
1679         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
1680         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
1681         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
1682         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
1683         and length_immediate to 1.
1684         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
1685         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
1686         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
1687         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
1688         and length_immediate to 1.
1689         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
1690         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
1691         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
1692         avx_ptest256): Override prefix_extra to 1.
1693         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
1694         Override prefix_data16 and length_immediate to 1.
1695         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
1696         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
1697         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
1698         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
1699         prefix_data16 to 0 and prefix_extra to 2.
1700         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
1701         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
1702         attribute.
1703         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
1704         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
1705         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
1706         and prefix_extra to 2.
1707         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
1708         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
1709         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
1710         avx_vpermilvar<mode>3,
1711         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
1712         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
1713         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
1714         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
1715         Override prefix_extra to 1.
1716         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
1717         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
1718         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
1719         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
1720         prefix_extra and length_immediate to 1.
1721         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
1722         modrm to 0.
1723         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
1724         to 1 for the first alternative.
1725         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
1726         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
1727         cases.
1728         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
1729         *movv2sf_internal_avx, *movv2sf_internal): Override
1730         prefix_rep attribute for certain alternatives.
1731         (*mov<mode>_internal): Override prefix_rep or prefix_data16
1732         attributes for certain alternatives.
1733         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
1734         attributes for certain alternatives.
1735         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
1736         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
1737         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
1738         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
1739         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
1740         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
1741         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
1742         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
1743         length_immediate to 1 if operand 2 is const_int_operand.
1744         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
1745         *vec_extractv2si_1): Set length_immediate attribute to 1.
1746         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
1747         using old 3DNOW insn rather than SSE/3DNOW_A.
1748         (mmx_emms, mmx_femms): Clear modrm attribute.
1749
1750 2009-05-29  Martin Jambor  <mjambor@suse.cz>
1751
1752         * tree-sra.c:  New implementation of SRA.
1753
1754         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
1755         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
1756         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
1757         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
1758         (SRA_MAX_STRUCTURE_COUNT): Removed.
1759         (SRA_FIELD_STRUCTURE_RATIO): Removed.
1760         * doc/invoke.texi (sra-max-structure-size): Removed.
1761         (sra-field-structure-ratio): Removed.
1762
1763 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1764
1765         PR middle-end/40291
1766         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
1767         before expansion.
1768
1769 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
1770
1771         PR rtl-optimization/40101
1772         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
1773         seqno.  Adjust comment.
1774         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
1775         inserting bookkeeping before a jump, the jump is not scheduled.
1776         When no positive seqno found, provide a value.  Add comment.
1777
1778 2009-05-29  Richard Guenther  <rguenther@suse.de>
1779
1780         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
1781         short-cutting on the first component.
1782
1783 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1784
1785         PR middle-end/39958
1786         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
1787         for trees other than decls/types.
1788
1789 2009-05-29  Richard Guenther  <rguenther@suse.de>
1790
1791         * tree-ssa-operands.c (get_expr_operands): Do not handle
1792         INDIRECT_REFs in the handled-component case.  Remove
1793         unused get_ref_base_and_extent case.
1794         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
1795         tree_low_cst and host_integerp where possible.
1796         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
1797         codes for equivalence.
1798         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
1799
1800 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
1801
1802         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
1803         to tmake_file for i[34567]86-*-cygwin*. 
1804
1805 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1806
1807         PR target/40017
1808         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
1809         (altivec_categorize_keyword, init_vector_keywords,
1810         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
1811         similar to bool.
1812
1813 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
1814
1815         * tree.c (handle_dll_attribute): Check if node is
1816         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
1817
1818 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
1819
1820         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
1821         component.
1822         (thumb2_zero_extendqidi2): Likewise.
1823
1824 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1825
1826         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
1827         instead of gen_movrt.
1828         * config/sh/sh.md (movrt): Remove.
1829
1830 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
1831
1832         * doc/invoke.texi (IA-64 Options):
1833         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
1834         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
1835         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
1836         -msched-prefer-non-control-spec-insns,
1837         -msched-stop-bits-after-every-cycle,
1838         -msched-count-spec-in-critical-path,
1839         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
1840         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
1841         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
1842         and -msched-spec-verbose.
1843
1844 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
1845
1846         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
1847         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
1848         error if used.
1849         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
1850
1851 2009-05-28  Richard Guenther  <rguenther@suse.de>
1852
1853         * tree-ssa-alias.c (ao_ref_init): New function.
1854         (ao_ref_base): Likewise.
1855         (ao_ref_base_alias_set): Likewise.
1856         (ao_ref_alias_set): Likewise.
1857         (refs_may_alias_p_1): Change signature.
1858         (refs_may_alias_p): Adjust.
1859         (refs_anti_dependent_p): Likewise.
1860         (refs_output_dependent_p): Likewise.
1861         (call_may_clobber_ref_p_1): Change signature.
1862         (call_may_clobber_ref_p): Adjust.
1863         (stmt_may_clobber_ref_p_1): New function split out from ...
1864         (stmt_may_clobber_ref_p): ... here.
1865         (maybe_skip_until): Adjust signature.
1866         (get_continuation_for_phi): Likewise.
1867         (walk_non_aliased_vuses): Likewise.
1868         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
1869         (ao_ref_init): Declare.
1870         (ao_ref_base): Likewise.
1871         (ao_ref_alias_set): Likewise.
1872         (stmt_may_clobber_ref_p_1): Likewise.
1873         (walk_non_aliased_vuses): Adjust.
1874         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
1875         (get_ref_from_reference_ops): remove.
1876         (vn_reference_lookup_2): Adjust signature.
1877         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
1878         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
1879         (vn_reference_lookup): Adjust.
1880         (vn_reference_insert): Likewise.
1881         (vn_reference_insert_pieces): Adjust signature.
1882         (visit_reference_op_call): Adjust.
1883         * tree-ssa-pre.c (get_expr_type): Simplify.
1884         (phi_translate_1): Adjust.
1885         (compute_avail): Likewise.
1886         (translate_vuse_through_block): Do not re-build trees.
1887         (value_dies_in_block_x): Likewise.
1888         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
1889         fields.
1890         (vn_reference_lookup_pieces): Adjust declaration.
1891         (vn_reference_insert_pieces): Likewise.
1892
1893 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
1894
1895         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
1896         with checking disabled.
1897
1898 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
1899
1900         PR target/37216
1901
1902         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
1903         macro definition for support of three-operand format aligned
1904         .comm directive in assembler on cygwin/pe/mingw target OS.
1905         * configure:  Regenerate.
1906         * config.h:  Regenerate.
1907
1908         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
1909         aligned form of .comm directive if -mpe-aligned-commons is in effect.
1910         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
1911
1912         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
1913         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
1914
1915 2009-05-28  Ira Rosen  <irar@il.ibm.com>
1916
1917         PR tree-optimization/40254
1918         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
1919         in analysis of basic blocks.
1920
1921 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
1922
1923         PR middle-end/33699
1924         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
1925         * target-def.h (TARGET_CONST_ANCHOR): New macro.
1926         (TARGET_INITIALIZER): Use it.
1927         * cse.c (CHEAPER): Move it up to the other macros.
1928         (insert): Rename this ...
1929         (insert_with_costs): ... to this.  Add cost parameters.  Update
1930         function comment.
1931         (insert): New function.  Call insert_with_costs.
1932         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
1933         find_reg_offset_for_const, try_const_anchors): New functions.
1934         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
1935         when using a const-anchor.  Call insert_const_anchors.
1936         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
1937         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
1938
1939 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1940
1941         * tree-inline.c (remap_decls): Enable nonlocalized variables
1942         when not optimizing.
1943
1944 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1945
1946         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
1947         Simplify other tests involving optimize.
1948
1949 2009-05-27  Tom Tromey  <tromey@redhat.com>
1950
1951         * unwind-dw2.c (_Unwind_DebugHook): New function.
1952         (uw_install_context): Call _Unwind_DebugHook.
1953
1954 2009-05-27  Tom Tromey  <tromey@redhat.com>
1955
1956         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1957
1958 2009-05-27  Ian Lance Taylor  <iant@google.com>
1959
1960         * Makefile.in (LINKER, LINKER_FLAGS): Define.
1961         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1962         (ALL_LINKERFLAGS): Define.
1963         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1964         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1965         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1966         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1967         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1968         $(LINKER_FOR_BUILD).
1969         (build/gcov-iov$(build_exeext)): Likewise.
1970
1971 2009-05-27  Julian Brown  <julian@codesourcery.com>
1972
1973         * gcse.c (target.h): Include.
1974         (can_assign_to_reg_without_clobbers_p): Check that the target allows
1975         copy of argument to a pseudo register.
1976
1977 2009-05-27  Diego Novillo  <dnovillo@google.com>
1978
1979         * tree-ssa-live.c (dump_scope_block): Document arguments.
1980         (dump_scope_blocks): Document.
1981         (debug_scope_blocks): New.
1982         * tree-flow.h (debug_scope_blocks): Declare.
1983
1984 2009-05-21  Denis Chertykov  <denisc@overta.ru>
1985
1986         * doc/contrib.texi (Contributors): Add myself to the list.
1987
1988 2009-05-27  Olivier Hainque  <hainque@adacore.com>
1989
1990         * expr.c (target_align): New function.  Alignment the TARGET of an
1991         assignment may be assume to have.
1992         (highest_pow2_factor_for_target): Use it instead of relying on
1993         immediate tree attributes of TARGET, not necessarily honored when
1994         intermediate bitfields are involved.
1995         
1996 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1997
1998         PR target/40266
1999         * config/i386/driver-i386.c (host_detect_local_cpu): Support
2000         AVX, SSE4, AES, PCLMUL and POPCNT.
2001
2002 2009-05-27  Diego Novillo  <dnovillo@google.com>
2003
2004         * tree-pretty-print.c (dump_location): New.
2005         (dump_generic_node): Call it.
2006         Factor code to handle BLOCK nodes ...
2007         (dump_block_node): ... here.
2008
2009 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
2010
2011         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
2012         with it.
2013         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
2014         included.
2015         * gcc-plugin.h: Include config.h and system.h.
2016         (IN_GCC): Define if not defined.
2017
2018 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
2019
2020         PR middle-end/40249
2021         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
2022         with -fno-inline.
2023
2024 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
2025
2026         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
2027         applicable.
2028         * config/m32r/m32r.h: Ditto.
2029         * config/m32r/m32r.md: Ditto.
2030         * config/m32r/predicates.md: Ditto.
2031
2032 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
2033
2034         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
2035
2036 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
2037
2038         * doc/plugins.texi
2039         (Loading plugins): typo.
2040         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
2041         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
2042         (Interacting with the GCC Garbage Collector): Added new section.
2043         (Giving information about a plugin): Added new section for
2044         PLUGIN_INFO.
2045         * ggc.h (ggc_register_root_tab): Added declaration.
2046         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
2047         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
2048         (register_callback): Improved comment in declaration.
2049         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
2050         (extra_root_vec) Added static variable for dynamic roots registration.
2051         (ggc_register_root_tab) Added new routine.
2052         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
2053         PLUGIN_GGC_MARKING event.
2054         * ggc-zone.c: Include plugin.h.
2055         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
2056         * ggc-page.c: Include plugin.h.
2057         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
2058         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
2059         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
2060         (register_callback): check lack of callbacks for
2061         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
2062         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
2063         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
2064         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
2065         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
2066         dependency on plugin.h.
2067         (plugin.o): Added dependency on ggc.h...
2068
2069 2009-05-26  Richard Guenther  <rguenther@suse.de>
2070
2071         PR middle-end/40248
2072         Revert
2073         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2074         with mismatched comparison modes.
2075
2076         * expr.c (expand_expr_real_1): Expand the operand of a
2077         VIEW_CONVERT_EXPR in its natural mode.
2078
2079 2009-05-26  Ian Lance Taylor  <iant@google.com>
2080
2081         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
2082         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
2083         (ALL_COMPILERFLAGS): Define.
2084         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
2085         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
2086         (collect2$(exeext), collect2.o): Likewise.
2087         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
2088         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
2089         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
2090         (libbackend.o, intl.o, cppdefault.o): Likewise.
2091         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
2092         (build/%.o): Use $(COMPILER_FOR_BUILD).
2093         (build/gen%$(build_exeext)): Likewise.
2094         (build/gcov-iov$(build_exeext)): LIkewise.
2095         * config/t-darwin (darwin.o): Use $(COMPILER).
2096         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
2097         * config/t-sol2 (sol2-c.o): Likewise.
2098         (sol2.o): Likewise.
2099         * config/t-vxworks (vxworks.o): Likewise.
2100         * config/x-darwin (host-darwin.o): Likewise.
2101         * config/x-hpux (host-hpux.o): Likewise.
2102         * config/x-linux (host-linux.o): Likewise.
2103         * config/x-solaris (host-solaris.o): Likewise.
2104         * config/alpha/x-alpha (driver-alpha.o): Likewise.
2105         * config/arm/t-arm (arm-c.o): Likewise.
2106         * config/arm/t-pe (pe.o): Likewise.
2107         * config/arm/t-wince-pe (pe.o): Likewise.
2108         * config/i386/t-cygming (winnt.o): Likewise.
2109         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
2110         * config/i386/t-cygwin (cygwin1.o): Likewise.
2111         (cygwin2.o): Likewise.
2112         * config/i386/t-i386 (i386-c.o): Likewise.
2113         * config/i386/t-interix (winnt.o): Likewise.
2114         * config/i386/t-netware (netware.o): Likewise.
2115         * config/i386/t-nwld (nwld.o): Likewise.
2116         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
2117         * config/i386/x-i386 (driver-i386.o): Likewise.
2118         * config/i386/x-cygwin (host-cygwin.o): Likewise.
2119         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
2120         * config/ia64/t-ia64 (ia64-c.o): Likewise.
2121         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
2122         * config/mips/x-native (driver-native.o): Likewise.
2123         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
2124         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
2125         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
2126         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
2127         * config/score/t-score-elf (score7.o): Likewise.
2128         (score3.o): Likewise.
2129         * config/sh/t-sh (sh-c.o): Likewise.
2130         * config/sh/t-symbian (sh-c.o): Likewise.
2131         (symbian.o): Likewise.
2132         * config/spu/t-spu-elf (spu-c.o): Likewise.
2133         * config/v850/t-v850 (v850-c.o): Likewise.
2134         * config/v850/t-v850e (v850-c.o): Likewise.
2135
2136 2009-05-26  Richard Guenther  <rguenther@suse.de>
2137
2138         PR tree-optimization/40122
2139         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
2140         VECTOR_CSTs if possible.
2141         (fold_gimple_assign): Likewise.
2142
2143 2009-05-26  Richard Guenther  <rguenther@suse.de>
2144
2145         PR middle-end/40252
2146         * fold-const.c (fold_binary): Use the correct types for building
2147         rotates.
2148
2149 2009-05-26  Richard Guenther  <rguenther@suse.de>
2150
2151         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
2152         redundant calls to merge_alias_info.
2153         (bump_vector_ptr): Likewise.
2154         * tree-ssa-copy.c (merge_alias_info): Remove.
2155         (replace_exp_1): Remove call to merge_alias_info.
2156         (propagate_tree_value): Likewise.
2157         (fini_copy_prop): Propagate points-to info.
2158         * tree-flow.h (merge_alias_info): Remove.
2159
2160 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
2161
2162         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
2163
2164 2009-05-25  Jan Hubicka  <jh@suse.cz>
2165
2166         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2167         * cgraph.h (struct inline_summary): New filed self_wize,
2168         size_inlining_benefit, self_time and time_inlining_benefit.
2169         (struct cgraph_global_info): Replace insns by time ans size fields.
2170         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2171         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2172         (ipcp_update_callgraph): Do not touch function bodies.
2173         * ipa-inline.c: Include except.h
2174         (MAX_TIME): New constant.
2175         (overall_insns): Remove.
2176         (leaf_node_p): New.
2177         (overall_size, max_benefit): New static variables.
2178         (cgraph_estimate_time_after_inlining): New function.
2179         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2180         (cgraph_clone_inlined_nodes): Update size.
2181         (cgraph_mark_inline_edge): Update size.
2182         (cgraph_estimate_growth): Use size info.
2183         (cgraph_check_inline_limits): Check size.
2184         (cgraph_default_inline_p): Likewise.
2185         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2186         (cgraph_decide_recursive_inlining): Check size.
2187         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2188         and times.
2189         (cgraph_decide_inlining): Likewise.
2190         (cgraph_decide_inlining_incrementally): Likewise; honor
2191         PARAM_EARLY_INLINING_INSNS.
2192         (likely_eliminated_by_inlining_p): New predicate.
2193         (estimate_function_body_sizes): New function.
2194         (compute_inline_parameters): Use it.
2195         * except.c (must_not_throw_labels): New function.
2196         * except.h (must_not_throw_labels): Declare.
2197         * tree-inline.c (init_inline_once): Kill inlining_weigths
2198         * tree-ssa-structalias.c: Avoid uninitialized warning.
2199         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2200         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2201         (PARAM_INLINE_CALL_COST): Remove.
2202         (PARAM_EARLY_INLINING_INSNS): New.
2203
2204 2009-05-25  Richard Guenther  <rguenther@suse.de>
2205
2206         PR tree-optimization/36327
2207         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
2208         callback for reference translation or lookup at the point of may-defs.
2209         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
2210         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
2211         for union COMPONENT_REFs.
2212         (vn_reference_lookup_3): New callback.  Lookup from memset
2213         and CONSTRUCTOR assignment, translate through struct copies.
2214         (vn_reference_lookup_pieces): Make sure to not free the
2215         passed operands array.  Adjust walk_non_aliased_vuses call.
2216         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
2217         make sure we do not leak memory.
2218
2219 2009-05-25  Richard Guenther  <rguenther@suse.de>
2220
2221         * tree-ssa-alias.h (dump_points_to_solution): Declare.
2222         * tree-inline.c (expand_call_inline): Reset the escaped and
2223         callused solutions.
2224         * tree-ssa-structalias.c (pass_build_ealias): New.
2225         * tree-pass.h (pass_build_ealias): Declare.
2226         * passes.c (init_optimization_passes): Add PTA during 
2227         early optimizations.
2228         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
2229         and CALLUSED solutions.
2230         (dump_points_to_solution): New function, split out from ...
2231         (dump_points_to_info_for): ... here.
2232         * tree-parloops.c (parallelize_loops): Reset the escaped and
2233         callused solutions.
2234
2235 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2236
2237         PR bootstrap/40027
2238         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
2239         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
2240
2241 2009-05-25  Ira Rosen  <irar@il.ibm.com>
2242
2243         PR tree-optimization/40238
2244         * tree-vect-stmts.c (vect_init_vector): Insert initialization
2245         statements after basic block's labels.
2246         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
2247         to free the allocated memory.
2248
2249 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2250
2251         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
2252         return address with a USE.
2253
2254 2009-05-24  Richard Guenther  <rguenther@suse.de>
2255
2256         PR middle-end/40233
2257         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
2258         array type from the main variant of the inner type.
2259
2260 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2261
2262         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
2263         definition to bool (from int) to un-break build.
2264         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
2265
2266 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
2267
2268         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
2269         discard_stmt_changes): Delete.
2270         * tree-ssa-operands.c (scb_stack): Delete.
2271         (init_ssa_operands): Do not initialize it.
2272         (fini_ssa_operands): Do not free it.
2273         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
2274
2275         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
2276         update_stmt, remove the others.  Fix comments.
2277         * tree-dfa.c (optimize_stack_restore): Likewise.
2278         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
2279         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
2280         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
2281         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
2282         Likewise.
2283         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
2284         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
2285         (dom_opt_finalize_block): Likewise, adjusting access to
2286         stmts_to_rescan.
2287         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
2288         (stmts_to_rescan): Change item type to gimple.
2289         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
2290
2291 2009-05-24  Ira Rosen  <irar@il.ibm.com>
2292
2293         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
2294         * tree-pass.h (pass_slp_vectorize): New pass.
2295         * params.h (SLP_MAX_INSNS_IN_BB): Define.
2296         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
2297         * tree-vectorizer.c (timevar.h): Include.
2298         (user_vect_verbosity_level): Declare.
2299         (vect_location): Fix comment.
2300         (vect_set_verbosity_level): Update user_vect_verbosity_level
2301         instead of vect_verbosity_level.
2302         (vect_set_dump_settings): Add an argument. Ignore user defined
2303         verbosity if dump flags require higher level of verbosity. Print to
2304         stderr only for loop vectorization.
2305         (vectorize_loops): Update call to vect_set_dump_settings.
2306         (execute_vect_slp): New function.
2307         (gate_vect_slp): Likewise.
2308         (struct gimple_opt_pass pass_slp_vectorize): New.
2309         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
2310         access its members.
2311         (vec_info_for_bb): New function.
2312         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
2313         (VECTORIZATION_ENABLED): New macro.
2314         (SLP_ENABLED, SLP_DISABLED): Likewise.
2315         (vect_is_simple_use): Add bb_vec_info argument.
2316         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
2317         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
2318         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
2319         vect_schedule_slp, vect_analyze_slp): Likewise.
2320         (vect_analyze_stmt): Add slp_tree argument.
2321         (find_bb_location): Declare.
2322         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
2323         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
2324         (vect_analyze_loop_operations, vect_analyze_loop,
2325         get_initial_def_for_induction, vect_create_epilog_for_reduction,
2326         vect_finalize_reduction, vectorizable_reduction,
2327         vectorizable_live_operation, vect_transform_loop): Likewise.
2328         * tree-data-ref.c (dr_analyze_innermost): Update comment,
2329         skip evolution analysis if analyzing a basic block.
2330         (dr_analyze_indices): Likewise.
2331         (initialize_data_dependence_relation): Skip the test whether the
2332         object is invariant for basic blocks.
2333         (compute_all_dependences): Skip dependence analysis for data
2334         references in basic blocks.
2335         (find_data_references_in_stmt): Don't fail in case of invariant
2336         access in basic block.
2337         (find_data_references_in_bb): New function.
2338         (find_data_references_in_loop): Move code to
2339         find_data_references_in_bb and add a call to it.
2340         (compute_data_dependences_for_bb): New function.
2341         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
2342         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
2343         that STEP is 0.
2344         (vect_analyze_data_ref_dependence): Check for interleaving in case of
2345         unknown dependence in basic block and fail in case of dependence in
2346         basic block.
2347         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
2348         dependence instances from either loop or basic block vectorization
2349         info.
2350         (vect_compute_data_ref_alignment): Check if it is loop vectorization
2351         before calling nested_in_vect_loop_p.
2352         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
2353         dependence instances from either loop or basic block vectorization
2354         info.
2355         (vect_verify_datarefs_alignment): Likewise.
2356         (vect_enhance_data_refs_alignment): Adjust function calls.
2357         (vect_analyze_data_refs_alignment): Likewise.
2358         (vect_analyze_group_access): Fix printing. Skip different checks if
2359         DR_STEP is 0. Keep strided stores either in loop or basic block
2360         vectorization data structure. Fix indentation.
2361         (vect_analyze_data_ref_access): Fix comments, allow zero step in
2362         basic blocks.
2363         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
2364         dependence instances from either loop or basic block vectorization
2365         info.
2366         (vect_analyze_data_refs): Update comment. Call
2367         compute_data_dependences_for_bb to analyze basic blocks.
2368         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
2369         case of loop vectorization. In case of basic block vectorization use
2370         data-ref itself as a base.
2371         (vect_create_data_ref_ptr): In case of basic block vectorization:
2372         don't advance the pointer, add new statements before the current
2373         statement.  Adjust function calls.
2374         (vect_supportable_dr_alignment): Support only aligned accesses in
2375         basic block vectorization.
2376         * common.opt (ftree-slp-vectorize): New flag.
2377         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
2378         (vect_pattern_recog_1): Likewise.
2379         * tree-vect-stmts.c (process_use): Likewise.
2380         (vect_init_vector): Add new statements in the beginning of the basic
2381         block in case of basic block SLP.
2382         (vect_get_vec_def_for_operand): Adjust function calls.
2383         (vect_finish_stmt_generation): Likewise.
2384         (vectorizable_call): Add assert that it is loop vectorization, adjust
2385         function calls.
2386         (vectorizable_conversion, vectorizable_assignment): Likewise.
2387         (vectorizable_operation): In case of basic block SLP, take
2388         vectorization factor from statement's type and skip the relevance
2389         check. Adjust function calls.
2390         (vectorizable_type_demotion): Add assert that it is loop
2391         vectorization, adjust function calls.
2392         (vectorizable_type_promotion): Likewise.
2393         (vectorizable_store): Check for outer loop only in case of loop
2394         vectorization. Adjust function calls. For basic blocks, skip the
2395         relevance check and don't advance pointers.
2396         (vectorizable_load): Likewise.
2397         (vectorizable_condition): Add assert that it is loop vectorization,
2398         adjust function calls.
2399         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
2400         that it is not reduction, get vector type, call only supported
2401         functions, skip loop specific parts.
2402         (vect_transform_stmt): Check for outer loop only in case of loop
2403         vectorization.
2404         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
2405         (vect_is_simple_use): Fix comment, add new argument, fix conditions
2406         for external definition.
2407         * passes.c (pass_slp_vectorize): New pass.
2408         * tree-vect-slp.c (find_bb_location): New function.
2409         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
2410         check for patterns only in loops.
2411         (vect_build_slp_tree): Add argument, adjust function calls, fail in
2412         case of multiple types in basic block SLP.
2413         (vect_mark_slp_stmts_relevant): New function.
2414         (vect_supported_load_permutation_p): Fix comment.
2415         (vect_analyze_slp_instance): Add argument. In case of basic block
2416         SLP, take vectorization factor from statement's type, check that
2417         unrolling factor is 1. Adjust function call. Save SLP instance in
2418         either loop or basic block vectorization structure. Return FALSE,
2419         if SLP failed.
2420         (vect_analyze_slp): Add argument. Get strided stores groups from
2421         either loop or basic block vectorization structure. Return FALSE
2422         if basic block SLP failed.
2423         (new_bb_vec_info): New function.
2424         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
2425         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
2426         (vect_schedule_slp): Add argument. Get SLP instances from either
2427         loop or basic block vectorization structure. Set vectorization factor
2428         to be 1 for basic block SLP.
2429         (vect_slp_transform_bb): New function.
2430         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
2431
2432 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
2433
2434         * final.c (shorten_branches): Do not align labels for jump tables.
2435         (final_scan_insn): Use JUMP_TABLE_DATA_P.
2436
2437 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
2438
2439         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
2440         Remove outdated reference to flow.c and fix nits.
2441         * doc/gccint.texi: Tweak RTL description.
2442         * doc/rtl.texi: Likewise.
2443
2444 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
2445
2446         * config/avr/avr.c: Change my email address.
2447         * config/avr/avr.h: Likewise.
2448         * config/avr/avr.md: Likewise.
2449         * config/avr/avr-protos.h: Likewise.
2450         * config/avr/libgcc.S: Likewise.
2451
2452 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2453
2454         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
2455         (spu_split_load, spu_split_store): Change return type to int.
2456         (spu_split_convert): Declare.
2457         * config/spu/predicates.md (spu_mem_operand): Remove.
2458         (spu_mov_operand): Update.
2459         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
2460         * config/spu/spu.c (regno_aligned_for_load): Remove.
2461         (reg_aligned_for_addr, spu_expand_load): Define.
2462         (spu_expand_extv): Reimplement and handle MEM.
2463         (spu_expand_insv): Handle MEM.
2464         (spu_sched_reorder): Handle insn's with length 0.
2465         (spu_legitimate_address_p): Reimplement.
2466         (store_with_one_insn_p): Return TRUE for any mode with size
2467         larger than 16 bytes.
2468         (address_needs_split): Define.
2469         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
2470         operands.
2471         (spu_convert_move): Define.
2472         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
2473         (spu_split_store): Change all MEM's to TImode.
2474         (spu_init_expanders): Preallocate registers that correspond to
2475         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
2476         mark_reg_pointer.
2477         (spu_split_convert): Define.
2478         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
2479         (_move<mode>, _movdi, _movti): Update predicate and condition.
2480         (load, store): Change to define_split.
2481         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
2482         extend<mode>ti2.
2483         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
2484         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
2485         define_insn_and_split of lshr<mode>3.
2486         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
2487         (<v>ashr<mode>3_imm): Define.
2488         (extv, extzv, insv): Allow MEM operands.
2489         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
2490         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
2491         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
2492         (_spu_convert2): Change to define_insn_and_split and remove the
2493         corresponding define_peephole2.
2494         (stack_protect_set, stack_protect_test, stack_protect_test_si):
2495         Change predicates to memory_operand.
2496
2497 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2498
2499         * config/arm/thumb2.md: Add 16-bit multiply instructions.
2500
2501 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
2502
2503         PR tree-optimization/40219
2504         * tree.c (iterative_hash_expr): Make sure the builtin function is
2505         a normal builtin function and not a front end or back end builtin
2506         before indexing into the built_in_decls array.
2507
2508 2009-05-22  Richard Guenther  <rguenther@suse.de>
2509
2510         PR middle-end/38964
2511         * alias.c (write_dependence_p): Do not use TBAA for answering
2512         anti-dependence or output-dependence.
2513         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
2514         (emit_pointer_definition): Remove.
2515         (emit_alias_warning): Likewise.
2516         (find_what_var_points_to): Remove TBAA pruning code.
2517         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
2518         violations.
2519         (compute_points_to_sets): Remove code computing the set of
2520         dereferenced pointers.
2521         * tree-data-ref.c (dr_may_alias_p): Properly use the split
2522         oracle for querying anti and output dependencies.
2523         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
2524         if TBAA may be applied.
2525         (refs_anti_dependent_p): New function.
2526         (refs_output_dependent_p): Likewise.
2527         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
2528         (refs_output_dependent_p): Likewise.
2529         * doc/tree-ssa.texi (Memory model): New section.
2530         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2531         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2532         * cfgexpand.c (expand_gimple_basic_block): Do not handle
2533         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
2534         * expr.c (expand_expr_real_1): Likewise.
2535         * gimple-low.c (lower_stmt): Likewise.
2536         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
2537         (dump_gimple_cdt): Remove.
2538         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2539         (gimple_size): Likewise.
2540         (walk_gimple_op): Likewise.
2541         (is_gimple_stmt): Likewise.
2542         (walk_stmt_load_store_addr_ops): Likewise.
2543         (gimple_build_cdt): Remove.
2544         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2545         * gimple.h (gimple_cdt_new_type): Remove.
2546         (gimple_cdt_new_type_ptr): Likewise.
2547         (gimple_cdt_set_new_type): Likewise.
2548         (gimple_cdt_location): Likewise.
2549         (gimple_cdt_location_ptr): Likewise.
2550         (gimple_cdt_set_location): Likewise.
2551         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2552         * tree-cfg.c (remove_useless_stmts_1): Do not handle
2553         GIMPLE_CHANGE_DYNAMIC_TYPE.
2554         (verify_types_in_gimple_stmt): Likewise.
2555         * tree-inline.c (estimate_num_insns): Likewise.
2556         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
2557         (copy_decl_to_var): Likewise.
2558         (copy_result_decl_to_var): Likewise.
2559         * tree-pretty-print.c (dump_generic_node): Do not handle
2560         CHANGE_DYNAMIC_TYPE_EXPR.
2561         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2562         * tree-ssa-operands.c (get_expr_operands): Likewise.
2563         * tree-ssa-structalias.c (struct variable_info): Remove
2564         no_tbaa_pruning member.
2565         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
2566         (unify_nodes): Do not copy it.
2567         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2568         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
2569         (set_uids_in_ptset): Do not check it.
2570         (find_what_var_points_to): Likewise.
2571         (compute_tbaa_pruning): Remove.
2572         (compute_points_to_sets): Do not call it.
2573         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2574         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2575         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
2576         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
2577         (DECL_NO_TBAA_P): Likewise.
2578         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
2579         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
2580         (expand_omp_atomic_pipeline): Do not set it.
2581         * print-tree.c (print_node): Do not dump it.
2582         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
2583         redundant check.
2584
2585 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
2586
2587         PR target/39856
2588         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
2589         for clobber.
2590
2591 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2592
2593         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
2594         non-external.
2595
2596 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2597
2598         * Makefile.in (bversion.h, s-bversion): New targets.
2599         (TOPLEV_H): Add bversion.h.
2600         * toplev.h: Include "bversion.h".
2601         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
2602         the __format__ attribute only if compiling with the same version
2603         of GCC as the sources (the "build version").
2604
2605 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2606
2607         * c-format.c (handle_format_attribute): Fix comment typo.
2608
2609 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
2610
2611         PR target/37846
2612         * config/ia64/ia64.opt (mfused-madd): New.
2613         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
2614         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
2615         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
2616         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
2617         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
2618         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
2619         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
2620         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
2621         instruction if !TARGET_FUSED_MADD.
2622         (fpma, fpms): Remove colon from name.
2623
2624 2009-05-22  Richard Guenther  <rguenther@suse.de>
2625
2626         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
2627         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
2628         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
2629         TARGET_MEM_REF.
2630         (create_expression_by_pieces): Only convert if necessary.
2631         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
2632         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
2633
2634 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
2635
2636         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
2637         regular pattern from a template and rename it ...
2638         (*extzv_truncsi_exts): ... to this.
2639
2640 2009-05-21  Richard Guenther  <rguenther@suse.de>
2641
2642         * cgraph.h (struct cgraph_node): Remove inline_decl member.
2643         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
2644         (cgraph_default_inline_p): Likewise.
2645         (cgraph_decide_inlining_incrementally): Likewise.
2646
2647 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
2648             Uros Bizjak  <ubizjak@gmail.com>
2649
2650         * config/i386/cpuid.h (bit_MOVBE): New.
2651
2652         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
2653
2654         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
2655         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
2656         (ix86_handle_option): Handle OPT_mmovbe.
2657         (ix86_target_string): Add -mmovbe.
2658         (pta_flags): Add PTA_MOVBE.
2659         (processor_alias_table): Add PTA_MOVBE to "atom".
2660         (override_options): Handle PTA_MOVBE.
2661
2662         * config/i386/i386.h (TARGET_MOVBE): New.
2663
2664         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
2665         (*bswapsi_movbe): New.
2666         (*bswapdi_movbe): Likewise.
2667         (bswapdi2): Renamed to ...
2668         (*bswapdi_1): This.
2669         (bswapdi2): New expander.
2670
2671         * config/i386/i386.opt (mmovbe): New.
2672
2673         * doc/invoke.texi: Document -mmovbe.
2674
2675 2009-05-21  Taras Glek  <tglek@mozilla.com>
2676
2677         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
2678         * gcc-plugin.h (plugin_init): Updated signature.
2679         * gcc-plugin.h (plugin_name_args): Moved to this header.
2680         * doc/plugins.texi (plugin_init): Updated documention to reflect
2681         API change.
2682         * doc/plugins.texi (plugin_name_args): Added to documention.
2683
2684 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
2685
2686         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
2687         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
2688
2689 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
2690
2691         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
2692         JUMP_TABLE_DATA_P predicates where applicable.
2693         * config/i386/predicates.md: Ditto.
2694         * config/i386/sse.md: Ditto.
2695
2696 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
2697
2698         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
2699         operand2 -128 override length_immediate attribute to 1.
2700         * config/i386/predicates.md (constm128_operand): New predicate.
2701
2702         * config/i386/i386.c (memory_address_length): Handle %r12
2703         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
2704         also check REGNO.
2705         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
2706         mode look through optional ZERO_EXTEND and SUBREG.
2707         * config/i386/i386.md (R12_REG): New define_constant.
2708         (prefix_data16): For sse unit set also for MODE_TI insns.
2709         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
2710         insns set if operand 1 is ext_QIreg_operand.
2711         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
2712         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
2713         immediate.
2714         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
2715         mode from MODE_DI to MODE_SI.
2716         (movdi_1_rex64): Override modrm and length_immediate attributes
2717         only for movabs (TYPE_IMOV, alternative 2).
2718         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
2719         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
2720         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
2721         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
2722         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
2723         prefix_rex attribute if DImode.
2724         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
2725         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
2726         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
2727         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
2728         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
2729         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
2730         Likewise.  For TYPE_IMOV clear length_immediate attribute.
2731         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
2732         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
2733         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
2734         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
2735         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
2736         or one operand TYPE_ISHIFT.
2737         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
2738         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
2739         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
2740         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
2741         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
2742         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
2743         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
2744         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
2745         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
2746         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
2747         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
2748         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
2749         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
2750         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
2751         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
2752         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
2753         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
2754         set mode attribute, don't override length attribute.
2755         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
2756         to 1.
2757         (return_internal_long): Set length attribute to 2 instead of 1.
2758         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
2759         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
2760         prefix_rex attribute.
2761         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
2762         New predicates.
2763         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
2764
2765 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2766
2767         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
2768
2769 2009-05-20  Ian Lance Taylor  <iant@google.com>
2770
2771         * tree.c (build_tree_list_vec_stat): New function.
2772         (ctor_to_vec): New function.
2773         (build_nt_call_vec): New function.
2774         (build_call_array): Change args to be a const pointer.
2775         (build_call_vec): New function.
2776         * tree.h (build_nt_call_vec): Declare.
2777         (build_tree_list_vec_stat): Declare.
2778         (build_tree_list_vec): Define.
2779         (build_call_array): Update declaration.
2780         (build_call_vec): Declare.
2781         (ctor_to_vec): Declare.
2782         * c-common.c (tree_vector_cache): New static variable.
2783         (make_tree_vector): New function.
2784         (release_tree_vector): New function.
2785         (make_tree_vector_single): New function.
2786         (make_tree_vector_copy): New function.
2787         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
2788         (make_tree_vector_single, make_tree_vector_copy): Declare.
2789         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
2790         (c_parser_expr_list): Don't manage cache here, instead call
2791         make_tree_vector.
2792         (c_parser_release_expr_list): Remove static function.
2793         (c_parser_vec_to_tree_list): Remove static function.
2794         (c_parser_attributes): Call build_tree_list_vec instead of
2795         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
2796         c_parser_release_expr_list.
2797         (c_parser_postfix_expression_after_primary): Likewise.
2798         (c_parser_objc_keywordexpr): Likewise.
2799
2800 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
2801
2802         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
2803         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
2804         TARGET_CONVERT_TO_TYPE.
2805         * hooks.c (hook_tree_const_tree_null): Define.
2806         * hooks.h (hook_tree_const_tree_null): Declare.
2807         * target.h (struct gcc_target):  Add invalid_parameter_type,
2808         invalid_return_type, promoted_type, and convert_to_type fields.
2809         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
2810         (TARGET_INVALID_RETURN_TYPE): Define.
2811         (TARGET_PROMOTED_TYPE): Define.
2812         (TARGET_CONVERT_TO_TYPE): Define.
2813         (TARGET_INITIALIZER): Update for new fields.
2814         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
2815         (grokparms): Check targetm.invalid_parameter_type.
2816         * c-typeck.c (default_conversion): Check targetm.promoted_type.
2817         * c-convert.c (convert): Check targetm.convert_to_type.
2818
2819 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
2820
2821         * config/mips/mips.md (*extenddi_truncate<mode>,
2822         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
2823         defintions.
2824         (*extendhi_truncateqi): New define_insn_and_sptit.
2825
2826 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
2827
2828         PR middle-end/40204
2829         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
2830         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
2831
2832 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
2833
2834         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
2835         the operand of VIEW_CONVERT_EXPR.
2836
2837 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
2838
2839         * config/i386/driver-i386.c (host_detect_local_cpu): Check
2840         extended family and model for Intel processors.  Support Intel Atom.
2841
2842 2009-05-20  Olivier Hainque  <hainque@adacore.com>
2843
2844         * gstab.h (stab_code_type): Define, to be used instead of the
2845         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
2846         notice.
2847         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
2848         occurrences by stab_code_type.
2849         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
2850
2851 2009-05-20  Martin Jambor  <mjambor@suse.cz>
2852
2853         * tree-flow.h (insert_edge_copies_seq): Undeclare.
2854         (sra_insert_before): Likewise.
2855         (sra_insert_after): Likewise.
2856         (sra_init_cache): Likewise.
2857         (sra_type_can_be_decomposed_p): Likewise.
2858         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
2859         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
2860         (sra_insert_before): Likewise.
2861         (sra_insert_after): Likewise.
2862         (sra_init_cache): Likewise.
2863         (insert_edge_copies_seq): Made static and moved upwards.
2864
2865         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
2866         case.
2867
2868         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
2869
2870         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
2871         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
2872         simple copies.
2873
2874 2009-05-20  Richard Guenther  <rguenther@suse.de>
2875
2876         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2877         with mismatched comparison modes.
2878
2879 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2880
2881         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
2882         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
2883         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
2884         with shifts for Thumb2.
2885         (orsi_notsi): New for orn.
2886         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
2887         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
2888         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
2889         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
2890         Don't invert remainder for IOR.
2891         
2892 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
2893
2894         PR tree-optimization/40087
2895         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
2896         number_of_iterations_ne): Rename never_infinite argument.
2897         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
2898         number_of_iterations_le): Handle pointer-type ivs when
2899         exit_must_be_taken is false.
2900         (number_of_iterations_cond):  Do not always assume that
2901         exit_must_be_taken if the control variable is a pointer.
2902
2903 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2904
2905         * c-typeck.c (build_binary_op): Allow % on integal vectors.
2906         * doc/extend.texi (Vector Extension): Document that % is allowed too.
2907
2908 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
2909
2910         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
2911         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
2912
2913 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2914
2915         PR c/40172
2916         * c.opt (Wlogical-op): Disabled by default.
2917         * c-opt (c_common_post_options): Do not enable Wlogical-op with
2918         Wextra.
2919         * doc/invoke.texi (Wlogical-op): Likewise.
2920         
2921 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
2922
2923         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
2924         into CASE_CONVERT.
2925         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
2926         Propagate the type of the first operand.
2927         <ASSERT_EXPR>: Simplify.
2928         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
2929         Rewrite using the RHS code as discriminant.
2930         <NOP_EXPR>: Turn into CASE_CONVERT.
2931         <PLUS_EXPR>: Propagate the type of the first operand.
2932
2933 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
2934
2935         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
2936         (ia64_dconst_0_375): New.
2937         * config/ia64/ia64.c (ia64_override_options): Remove
2938         -minline-sqrt-min-latency warning.
2939         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
2940         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
2941         * config/ia64/ia64.md (*sqrt_approx): Remove.
2942         (sqrtsf2): Remove #if 0.
2943         (sqrtsf2_internal_thr): Rewrite and move to div.md.
2944         (sqrtdf): Remove assert.
2945         (sqrtdf2_internal_thr): Rewrite and move to div.md.
2946         (sqrtxf2): Remove #if 0.
2947         (sqrtxf2_internal_thr): Rewrite and move to div.md.
2948         * div.md (sqrt_approx_rf): New.
2949         (sqrtsf2_internal_thr): New implementation.
2950         (sqrtsf2_internal_lat): New.
2951         (sqrtdf2_internal_thr: New implementation.
2952         (sqrtxf2_internal): New implementation.
2953
2954 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2955             Hans-Peter Nilsson  <hp@axis.com>
2956
2957         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2958         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2959         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2960         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2961         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2962         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2963         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2964         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2965         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2966         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2967         * c-common.c: ...from here.
2968
2969 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2970
2971         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2972
2973 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2974
2975         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2976
2977 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2978
2979         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2980         assignments with memcpy calls.
2981         (add_fdes): Likewise.
2982         (binary_search_unencoded_fdes): Likewise.
2983         (linear_search_fdes): Eliminate type puns.
2984         
2985 2009-05-19  Richard Guenther  <rguenther@suse.de>
2986
2987         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2988         not falsely claim to have propagated into all uses.
2989
2990 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2991
2992         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2993         version to v3.0.
2994
2995 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2996
2997         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2998         * config/sh/sh.c (sh_legitimate_address_p): Make static.
2999         (TARGET_LEGITIMATE_ADDRESS_P): New.
3000         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3001         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
3002         
3003 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
3004
3005         PR debug/40109
3006         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
3007         child of the containing namespace's DIE.
3008
3009 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
3010
3011         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
3012         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
3013         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
3014         extend patterns.
3015
3016 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
3017
3018         PR target/39942
3019         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
3020         gen_align with gen_pad.
3021         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
3022         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
3023
3024         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
3025         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
3026
3027         * config/i386/i386.md (align): Renamed to ...
3028         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
3029         ASM_OUTPUT_MAX_SKIP_PAD.
3030
3031 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
3032
3033         * config.gcc: Fix variable syntax.
3034
3035         PR target/39531
3036         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
3037         before calling exact_log2.
3038         (output_iorsi3): Likewise.
3039         (output_xorsi3): Likewise.
3040
3041 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3042
3043         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
3044         for the none zero constant operand except for EQ and NE
3045         comprisons even when the first operand is R0.
3046
3047 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
3048
3049         * config/s390/2064.md: Remove trailing whitespaces.
3050         * config/s390/2084.md: Likewise.
3051         * config/s390/constraints.md: Likewise.
3052         * config/s390/fixdfdi.h: Likewise.
3053         * config/s390/libgcc-glibc.ver: Likewise.
3054         * config/s390/s390-modes.def: Likewise.
3055         * config/s390/s390-protos.h: Likewise.
3056         * config/s390/s390.c: Likewise.
3057         * config/s390/s390.h: Likewise.
3058         * config/s390/s390.md: Likewise.
3059         * config/s390/tpf-unwind.h: Likewise.
3060
3061 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3062
3063         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
3064
3065 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
3066
3067         M68K TLS support.
3068         * configure.ac (m68k-*-*): Check if binutils support TLS.
3069         * configure: Regenerate.
3070         * config/m68k/predicates.md (symbolic_operand): Extend comment.
3071         * config/m68k/constraints.md (Cu): New constraint.
3072         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
3073         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
3074         (movsi): Handle TLS symbols.
3075         (addsi3_5200): Handle XTLS symbols, indent.
3076         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
3077         (m68k_tls_reference_p): Declare.
3078         (m68k_legitimize_address): Declare.
3079         (m68k_unwrap_symbol): Declare.
3080         * config/m68k/m68k.opt (mxtls): New option.
3081         * config/m68k/m68k.c (ggc.h): Include.
3082         (m68k_output_dwarf_dtprel): Implement hook.
3083         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
3084         (m68k_expand_prologue): Load GOT pointer when function needs it.
3085         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
3086         (m68k_legitimate_constant_address_p): Same.
3087         (m68k_decompose_address): Handle TLS references.
3088         (m68k_get_gp): New static function.
3089         (enum m68k_reloc): New contants.
3090         (TLS_RELOC_P): New macro.
3091         (m68k_wrap_symbol): New static function.
3092         (m68k_unwrap_symbol): New function.
3093         (m68k_final_prescan_insn_1): New static function.
3094         (m68k_final_prescan_insn): New function.
3095         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
3096         functions.
3097         (legitimize_pic_address): Handle TLS references..
3098         (m68k_tls_get_addr, m68k_get_tls_get_addr)
3099         (m68k_libcall_value_in_a0_p)
3100         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
3101         (m68k_call_m68k_read_tp): Helper variables and functions for ...
3102         (m68k_legitimize_tls_address): Handle TLS references.
3103         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
3104         New functions.
3105         (m68k_legitimize_address): Handle TLS symbols.
3106         (m68k_get_reloc_decoration): New static function.
3107         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
3108         UNSPEC_RELOC32.
3109         (m68k_output_dwarf_dtprel): Implement hook.
3110         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
3111         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
3112         m68k_call_* routines.
3113         (sched_attr_op_type): Handle TLS symbols.
3114         (gt-m68k.h): Include.
3115         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
3116         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
3117
3118 2009-05-18  Martin Jambor  <mjambor@suse.cz>
3119
3120         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
3121         (visit_store_addr_for_mod_analysis): New function.
3122         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
3123         (determine_cst_member_ptr): Use gimple_assign_single_p.
3124         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
3125         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
3126         operands.  Don't check number of operands of a NOP_EXPR.
3127
3128 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
3129
3130         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
3131
3132 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3133
3134         PR c/40172
3135         * c-common.c (warn_logical_operator): Don't warn if one of
3136         expression isn't always true or false.
3137
3138 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
3139
3140         * config/i386/biarch32.h: New file.
3141         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
3142
3143 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
3144
3145         * config/mips/mips.md (*zero_extend<mode>_trunchi,
3146         *zero_extend<mode>_truncqi): Merge these into ...
3147         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
3148         Name the pattern following this as *zero_extendhi_truncqi.
3149
3150 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
3151
3152         PR middle-end/39301
3153         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
3154         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
3155         (output_info): Make field HOST_WIDEST_INT.
3156         (print_statistics): Use HOST_WIDEST_INT_PRINT.
3157         (dump_bitmat_statistics): Same.
3158
3159 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
3160
3161         * config.gcc (use_gcc_stdint):  Set to wrap.
3162         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
3163         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
3164         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
3165         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
3166         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
3167         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
3168         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
3169         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
3170
3171 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
3172
3173         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
3174         tune_64.
3175         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
3176         Move definitions earlier.
3177         (OPT_ARCH64, OPT_ARCH32): Define.
3178         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
3179         and tune_64.
3180
3181 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
3182
3183         PR target/40153
3184         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
3185         implies.
3186
3187 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
3188
3189         * arm.md (movdi2): Copy non-reg values to DImode registers.
3190
3191 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
3192
3193         PR target/39942
3194         * final.c (label_to_max_skip): New function.
3195         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
3196         CODE_LABEL_NUMBER <= max_labelno.
3197         * output.h (label_to_max_skip): New prototype.
3198         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
3199         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
3200         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
3201         Handle CODE_LABELs with >= 16 byte alignment or with
3202         max_skip == (1 << align) - 1.
3203         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
3204         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
3205
3206         PR target/39942
3207         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
3208         .p2align 3 if MAX_SKIP is smaller than 7.
3209         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
3210
3211 2009-05-15  Ian Lance Taylor  <iant@google.com>
3212
3213         * alias.c (struct alias_set_entry_d): Rename from struct
3214         alias_set_entry.  Change all uses.
3215         * except.c (struct call_site_record_d): Rename from struct
3216         call_site_record.  Change all uses.
3217         * except.h (struct eh_region_d): Rename from struct eh_region.
3218         Change all uses.
3219         * gcse.c (struct hash_table_d): Rename from struct hash_table.
3220         Change all uses.
3221         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
3222         ivtype_map_elt.  Change all uses.
3223         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
3224         Change all uses.
3225         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
3226         * graphite.h (struct name_tree_d): Rename from struct name_tree.
3227         Change all uses.
3228         (struct sese_d): Rename from struct sese.  Change all uses.
3229         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
3230         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
3231         * optabs.h (struct optab_d): Rename from struct optab.  Change all
3232         uses.
3233         (struct convert_optab_d): Rename from struct convert_optab.
3234         Change all uses.
3235         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
3236         ipa_opt_pass.  Change all uses.
3237         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
3238         all uses.
3239
3240         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
3241         defined as a typedef.
3242         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
3243         defined as a tag.
3244
3245 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3246
3247         PR 16302
3248         * fold-const.c (make_range,build_range_check,merge_ranges): Move
3249         declaration to...
3250         (merge_ranges): Returns bool. 
3251         * tree.h (make_range): .. to here.
3252         (build_range_check): Likewise.
3253         (merge_ranges): Likewise. Renamed from merge_ranges.
3254         * c-typeck.c (parser_build_binary_op): Update calls to
3255         warn_logical_operator.
3256         * c-common.c (warn_logical_operator): Add new warning.
3257         * c-common.h (warn_logical_operator): Update declaration.
3258         
3259 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3260
3261         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
3262         
3263 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3264
3265         * doc/install.texi: Document MPC requirements, flags etc.
3266
3267         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
3268         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
3269         Evaluate constant arguments.
3270         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
3271         (fold_builtin_1): Likewise, also evaluate constant arguments.
3272         Remove superfluous break.
3273         (do_mpc_ckconv): New.
3274         * real.h: Include mpc.h.
3275         * toplev.c (print_version): Output MPC version info if available.
3276
3277 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
3278
3279         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
3280
3281 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
3282
3283         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
3284         only once.
3285
3286 2009-05-15  Jan Hubicka  <jh@suse.cz>
3287
3288         * doc/invoke.texi (max-early-inliner-iterations): New flag.
3289         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
3290         (try_inline): Fix return value.
3291         (cgraph_decide_inlining_incrementally): Honor new value.
3292         (cgraph_early_inlining): Handle indirect inlining.
3293         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
3294
3295 2009-05-15  Jan Hubicka  <jh@suse.cz>
3296
3297         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
3298         * cgraphunit.c (cgraph_finalize_function): Set it.
3299         (cgraph_expand_function): Use it.
3300
3301 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
3302
3303         * real.c (encode_ieee_half): Define.
3304         (decode_ieee_half): Define.
3305         (ieee_half_format): Define.
3306         (arm_half_format): Define.
3307         * real.h (ieee_half_format): Declare.
3308         (arm_half_format): Declare.
3309
3310 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
3311
3312         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
3313         swapped, and reversed optabs exist before trying to use them.
3314
3315 2009-05-15  Paul Brook  <paul@codesourcery.com>
3316             Sandra Loosemore  <sandra@codesourcery.com>
3317
3318         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
3319         loads.  Allow PRE_DEC.
3320         (output_move_neon): Handle PRE_DEC.
3321         (arm_print_operand): Add 'A' for neon structure loads.
3322         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
3323         * config/arm/neon.md (neon_mov): Update comment.
3324         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
3325         calls.
3326         (Um): New constraint.
3327
3328 2009-05-15  Jan Hubicka  <jh@suse.cz>
3329
3330         Revert the following patch until testsuite fallout is fixed:
3331         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
3332         * cgraph.h (struct inline_summary): New filed self_wize,
3333         size_inlining_benefit, self_time and time_inlining_benefit.
3334         (struct cgraph_global_info): Replace insns by time ans size fields.
3335         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
3336         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
3337         (ipcp_update_callgraph): Do not touch function bodies.
3338         * ipa-inline.c: Include except.h
3339         (MAX_TIME): New constant.
3340         (overall_insns): Remove
3341         (overall_size, max_benefit): New static variables.
3342         (cgraph_estimate_time_after_inlining): New function.
3343         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
3344         (cgraph_clone_inlined_nodes): Update size.
3345         (cgraph_mark_inline_edge): Update size.
3346         (cgraph_estimate_growth): Use size info.
3347         (cgraph_check_inline_limits): Check size.
3348         (cgraph_default_inline_p): Likewise.
3349         (cgraph_edge_badness): Compute badness based on benefit and size cost.
3350         (cgraph_decide_recursive_inlining): Check size.
3351         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
3352         and times.
3353         (cgraph_decide_inlining): Likewise.
3354         (cgraph_decide_inlining_incrementally): Likewise; honor
3355         PARAM_EARLY_INLINING_INSNS.
3356         (likely_eliminated_by_inlining_p): New predicate.
3357         (estimate_function_body_sizes): New function.
3358         (compute_inline_parameters): Use it.
3359         * except.c (must_not_throw_labels): New function.
3360         * except.h (must_not_throw_labels): Declare.
3361         * tree-inline.c (init_inline_once): Kill inlining_weigths
3362         * tree-ssa-structalias.c: Avoid uninitialized warning.
3363         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
3364         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
3365         (PARAM_INLINE_CALL_COST): Remove.
3366         (PARAM_EARLY_INLINING_INSNS): New.
3367
3368 2009-05-15  Richard Guenther  <rguenther@suse.de>
3369
3370         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
3371         not TODO_update_ssa.
3372
3373 2009-05-15  Richard Guenther  <rguenther@suse.de>
3374
3375         PR tree-optimization/39999
3376         * gimple.h (gimple_expr_type): Use the expression type looking
3377         through useless conversions.
3378         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
3379         (vn_nary_op_insert_stmt): Likewise.
3380         (simplify_binary_expression): Likewise.
3381
3382 2009-05-15  Richard Guenther  <rguenther@suse.de>
3383
3384         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
3385         New options, enabled by default.
3386         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
3387         Document.
3388         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
3389         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
3390         * tree-ssa-structalias.c (gate_tree_pta): New function.
3391         (pass_build_alias): Use it.
3392
3393 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
3394
3395         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
3396         recurse on an invariant address if a conversion from a pointer
3397         type to a wider integer type is involved.
3398
3399 2009-05-15  Jan Hubicka  <jh@suse.cz>
3400
3401         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
3402         * cgraph.h (struct inline_summary): New filed self_wize,
3403         size_inlining_benefit, self_time and time_inlining_benefit.
3404         (struct cgraph_global_info): Replace insns by time ans size fields.
3405         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
3406         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
3407         (ipcp_update_callgraph): Do not touch function bodies.
3408         * ipa-inline.c: Include except.h
3409         (MAX_TIME): New constant.
3410         (overall_insns): Remove
3411         (overall_size, max_benefit): New static variables.
3412         (cgraph_estimate_time_after_inlining): New function.
3413         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
3414         (cgraph_clone_inlined_nodes): Update size.
3415         (cgraph_mark_inline_edge): Update size.
3416         (cgraph_estimate_growth): Use size info.
3417         (cgraph_check_inline_limits): Check size.
3418         (cgraph_default_inline_p): Likewise.
3419         (cgraph_edge_badness): Compute badness based on benefit and size cost.
3420         (cgraph_decide_recursive_inlining): Check size.
3421         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
3422         and times.
3423         (cgraph_decide_inlining): Likewise.
3424         (cgraph_decide_inlining_incrementally): Likewise; honor
3425         PARAM_EARLY_INLINING_INSNS.
3426         (likely_eliminated_by_inlining_p): New predicate.
3427         (estimate_function_body_sizes): New function.
3428         (compute_inline_parameters): Use it.
3429         * except.c (must_not_throw_labels): New function.
3430         * except.h (must_not_throw_labels): Declare.
3431         * tree-inline.c (init_inline_once): Kill inlining_weigths
3432         * tree-ssa-structalias.c: Avoid uninitialized warning.
3433         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
3434         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
3435         (PARAM_INLINE_CALL_COST): Remove.
3436         (PARAM_EARLY_INLINING_INSNS): New.
3437         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
3438         (inline-call-cost): Remove.
3439         (early-inlining-insns): New.
3440
3441 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
3442
3443         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
3444         for bounds.
3445         (print_int_cst_bounds_in_octal_p): Likewise.
3446         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
3447         with subtypes.
3448         * dwarf2out.c (base_type_die): Likewise.
3449         (is_subrange_type): Delete.
3450         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
3451         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
3452         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
3453         if the destination type is boolean.
3454         (build_range_check): Do not special-case subtypes.
3455         (fold_sign_changed_comparison): Likewise.
3456         (fold_unary): Likewise.
3457         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
3458         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
3459         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
3460         * tree.c (subrange_type_for_debug_p): New predicate based on the
3461         former is_subrange_type.
3462         * tree.h (subrange_type_for_debug_p): Declare.
3463         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
3464         (convert_affine_scev): Remove call to above function.
3465         (chrec_convert_aggressive): Likewise.
3466         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
3467         false for conversions involving subtypes.
3468         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
3469         (vrp_val_min): Likewise.
3470         (needs_overflow_infinity): Likewise.
3471         (extract_range_from_unary_expr): Likewise.
3472
3473 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
3474
3475         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
3476         * config/frv/frv.c: Likewise.
3477         * config/s390/s390.c: Likewise.
3478         * config/sparc/sparc.h: Likewise.
3479         * config/i386/i386.h: Likewise.
3480         * config/i386/i386.c: Likewise.
3481         * config/crx/crx.c: Likewise.
3482         * config/m68hc11/m68hc11.h: Likewise.
3483         * config/iq2000/iq2000.c: Likewise.
3484         * config/mn10300/mn10300.h: Likewise.
3485         * config/mn10300/mn10300.c: Likewise.
3486         * config/m68k/m68k.c: Likewise.
3487         * config/rs6000/rs6000.c: Likewise.
3488         * config/rs6000/xcoff.h: Likewise.
3489         * config/rs6000/linux64.h: Likewise.
3490         * config/rs6000/sysv4.h: Likewise.
3491         * config/score/score3.c: Likewise.
3492         * config/score/score7.c: Likewise.
3493         * config/score/score.c: Likewise.
3494         * config/arm/arm.md: Likewise.
3495         * config/mips/mips.c: Likewise.
3496         * config/mips/mips.md: Likewise.
3497         * config/bfin/bfin.h: Likewise.
3498         * config/pa/pa.c: Likewise.
3499         * config/pa/constraints.md: Likewise.
3500
3501         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
3502         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
3503         * config/pdp11/pdp11.h: Use memory_address_p instead.
3504
3505 2009-05-14  Ian Lance Taylor  <iant@google.com>
3506
3507         * passes.c (finish_optimization_passes): Change i to int.
3508         * plugin.c (plugins_active_p): Change event to int.
3509         (dump_active_plugins): Likewise.
3510         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
3511         Add cast.
3512         * tree.c (tree_range_check_failed): Change c to unsigned int.
3513         (omp_clause_range_check_failed): Likewise.
3514         (build_common_builtin_nodes): Change mode to int.  Add cast.
3515         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
3516         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
3517
3518         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
3519         ++ or -- with a variable of enum type.
3520
3521 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3522
3523         PR driver/40144
3524         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
3525
3526 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3527
3528         * store-motion.c: Do not include params.h
3529         * Makefile.in: Fix dependencies for various files.
3530
3531 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3532
3533         * auto-inc-dec.c: Fix pass description, remove apparent
3534         accidental duplication.
3535
3536 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
3537
3538         PR middle-end/40147
3539         * ipa-utils.h (memory_identifier_string): Moved to ...
3540         * tree.h (memory_identifier_string): Here.  Add GTY(()).
3541
3542 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
3543
3544         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
3545         in the former documentation of...
3546         (GO_IF_LEGITIMATE_ADDRESS): ... this.
3547         * ira-conflicts.c (get_dup_num): Use address_operand.
3548         * targhooks.c (default_legitimate_address_p): New.
3549         * targhooks.h (default_legitimate_address_p): New.
3550         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
3551         Call hook.
3552         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
3553         * target.h (struct target): Add legitimate_address_p.
3554         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
3555         (TARGET_INITIALIZER): Include it.
3556
3557         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3558         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
3559         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
3560         (TARGET_LEGITIMATE_ADDRESS_P): New.
3561
3562         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3563         (REG_OK_STRICT_P): Delete.
3564         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
3565         (frv_legitimate_address_p_1): ... this.
3566         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
3567         (frv_legitimate_address_p_1): ... the renamed old
3568         frv_legitimate_address_p.
3569         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
3570         (TARGET_LEGITIMATE_ADDRESS_P): New.
3571
3572         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3573         * config/s390/s390-protos.h (legitimate_address_p): Remove.
3574         * config/s390/s390.c (legitimate_address_p): Rename to...
3575         (s390_legitimate_address_p): ... this, make static.
3576         (legitimize_address): Adjust call.
3577         (TARGET_LEGITIMATE_ADDRESS_P): New.
3578         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
3579
3580         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3581         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
3582         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
3583         (TARGET_LEGITIMATE_ADDRESS_P): New.
3584
3585         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3586         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
3587         * config/spu/spu.c (spu_legitimate_address): Rename to...
3588         (spu_legitimate_address_p): ... this, make static.
3589         (TARGET_LEGITIMATE_ADDRESS_P): New.
3590
3591         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3592         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
3593         * config/sparc/sparc.c (legitimate_address_p): Rename to...
3594         (sparc_legitimate_address_p): ... this, make static and return bool.
3595         (legitimize_address): Adjust call.
3596         (TARGET_LEGITIMATE_ADDRESS_P): New.
3597
3598         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3599         * config/i386/i386-protos.h (legitimate_address_p): Remove.
3600         * config/i386/i386.c (legitimate_address_p): Rename to...
3601         (ix86_legitimate_address_p): ... this, make static.
3602         (constant_address_p): Move after it, adjust call.
3603         (TARGET_LEGITIMATE_ADDRESS_P): New.
3604
3605         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3606         * config/avr/avr-protos.h (legitimate_address_p): Remove.
3607         * config/avr/avr.c (legitimate_address_p): Rename to...
3608         (avr_legitimate_address_p): ... this, make static.
3609         (legitimize_address): Adjust call.
3610         (TARGET_LEGITIMATE_ADDRESS_P): New.
3611
3612         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3613         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
3614         * config/crx/crx.c (crx_legitimate_address_p): Make static.
3615         (TARGET_LEGITIMATE_ADDRESS_P): New.
3616
3617         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3618         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
3619         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
3620         (TARGET_LEGITIMATE_ADDRESS_P): New.
3621
3622         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3623         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
3624         Remove.
3625         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
3626         Make static.
3627         (TARGET_LEGITIMATE_ADDRESS_P): New.
3628
3629         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3630         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
3631         Remove.
3632         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
3633         Rename to...
3634         (m68hc11_legitimate_address_p): ... this, make static.
3635         (go_if_legitimate_address_internal): Rename to...
3636         (m68hc11_legitimate_address_p_1): ... this.
3637         (legitimize_address): Adjust call.
3638         (TARGET_LEGITIMATE_ADDRESS_P): New.
3639
3640         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3641         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
3642         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
3643         (TARGET_LEGITIMATE_ADDRESS_P): New.
3644
3645         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3646         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
3647         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
3648         (mn10300_legitimate_address_p): ... this, make static.
3649         (TARGET_LEGITIMATE_ADDRESS_P): New.
3650
3651         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3652         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
3653         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
3654         (TARGET_LEGITIMATE_ADDRESS_P): New.
3655
3656         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3657         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
3658         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
3659         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3660         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
3661         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
3662         (rs6000_legitimate_address_p): ... this, make static.
3663         (TARGET_LEGITIMATE_ADDRESS_P): New.
3664         (REG_MODE_OK_FOR_BASE_P): Delete.
3665         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
3666
3667         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3668         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
3669         Delete.
3670         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
3671         static, adjust types.
3672         (TARGET_LEGITIMATE_ADDRESS_P): New.
3673
3674         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3675         * config/score/score.c (score_address_p): Rename to...
3676         (score_legitimate_address_p): ... this.
3677         (TARGET_LEGITIMATE_ADDRESS_P): New.
3678         * config/score/score3.c (score3_address_p): Rename to...
3679         (score3_legitimate_address_p): ... this.
3680         * config/score/score7.c (score7_address_p): Rename to...
3681         (score7_legitimate_address_p): ... this.
3682
3683         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
3684         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
3685         GO_IF_LEGITIMATE_ADDRESS): Delete.
3686         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
3687         thumb2_legitimate_address_p): Delete.
3688         (arm_legitimate_address_p): Rename to...
3689         (arm_legitimate_address_outer_p): ... this.
3690         * config/arm/constraints.md ("Uq"): Adjust call.
3691         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
3692         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
3693         to...
3694         (arm_legitimate_address_outer_p): ... this.
3695         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
3696         static.
3697         (TARGET_LEGITIMATE_ADDRESS_P): New.
3698
3699         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3700         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
3701         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
3702         (TARGET_LEGITIMATE_ADDRESS_P): New.
3703
3704         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3705         * config/vax/vax-protos.h (legitimate_address_p): Remove.
3706         * config/vax/vax.c (legitimate_address_p): Rename to...
3707         (vax_legitimate_address_p): ... this, make static.
3708         (TARGET_LEGITIMATE_ADDRESS_P): New.
3709
3710         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3711         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
3712         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
3713         (TARGET_LEGITIMATE_ADDRESS_P): New.
3714
3715         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3716         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
3717         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
3718         (mmix_legitimate_address_p): ... this, make static.
3719         (TARGET_LEGITIMATE_ADDRESS_P): New.
3720
3721         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3722         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
3723         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
3724         (TARGET_LEGITIMATE_ADDRESS_P): New.
3725
3726 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
3727
3728         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
3729         of MODE_COMPLEX_INT.
3730
3731 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3732
3733         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
3734         LCT_NORMAL in function call.
3735         * mips-tdump.c (print_file_desc): Add cast to enum type.
3736         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
3737         (mark_stabs): Add casts to enum types.
3738         (parse_stabs_common): Add casts to enum types.
3739
3740 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
3741
3742         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
3743         Check for invalid values of LETTER.
3744
3745 2009-05-13  Taras Glek  <tglek@mozilla.com>
3746
3747         * attribs.c (register_attribute): moved out attribute registration
3748         into register_attribute.
3749         * doc/plugins.texi: Documented register_attribute and
3750         PLUGIN_ATTRIBUTES.
3751         * gcc-plugin.h: Added forward decl for register_attribute.
3752         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
3753         * plugin.c (register_callback, invoke_plugin_callbacks): Added
3754         PLUGIN_ATTRIBUTES boilerplate.
3755
3756 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
3757
3758         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
3759         values even in sentinel and empty entries.
3760         (ms_printf_flag_specs):  Likewise.
3761         (ms_scanf_flag_specs):  Likewise.
3762         (ms_strftime_flag_specs):  Likewise.
3763         (ms_print_char_table):  Likewise.
3764         (ms_scan_char_table):  Likewise.
3765         (ms_time_char_table):  Likewise.
3766
3767 2009-05-13  Doug Kwan  <dougkwan@google.com>
3768
3769         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
3770
3771 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
3772
3773         * config/mips/mips.md (store): Add attributes for QI and HI.
3774         Update comment.
3775         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
3776         (truncdi<mode>2): ... this new pattern.
3777
3778 2009-05-13  Brad Hards  <bradh@kde.org>
3779
3780         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
3781
3782 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
3783             Ben Elliston <bje@au.ibm.com>
3784
3785         PR middle-end/40035
3786         * dse.c (check_mem_read_rtx): Guard against width == -1.
3787
3788 2009-05-13  Michael Matz  <matz@suse.de>
3789
3790         PR middle-end/39976
3791         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
3792         (trivially_conflicts_p): New function.
3793         (insert_backedge_copies): Use it.
3794
3795 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
3796
3797         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
3798         (handle_stdc_pragma): Use new enum constant names.
3799         (handle_pragma_float_const_decimal64): Ditto.
3800
3801 2009-05-13  Ian Lance Taylor  <iant@google.com>
3802
3803         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
3804         tree.def.
3805
3806 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
3807
3808         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
3809         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
3810         multilibs.
3811         * config/m68k/m68k.h (FL_UCLINUX): Define.
3812
3813 2009-05-13  Jan Hubicka  <jh@suse.cz>
3814
3815         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
3816
3817 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3818
3819         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
3820         unless -fschedule-insns is specified.
3821
3822 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3823
3824         PR target/39561
3825         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
3826         TARGET_EXPAND_CBRANCHDI4.
3827         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
3828         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
3829         (cmpeqdi): Fix comment.
3830
3831 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3832
3833         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
3834         (sh_legitimate_address_p): Likewise.
3835         * config/sh/sh.c (sh_legitimate_index_p): New.
3836         (sh_legitimate_address_p): Likewise.
3837         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
3838         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
3839         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
3840         (MAYBE_BASE_REGISTER_RTX_P): New macro.
3841         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
3842         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
3843         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
3844         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
3845         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
3846
3847 2009-05-12  Jan Hubicka  <jh@suse.cz>
3848
3849         * tree-inline.c (estimate_operator_cost): Add operands;
3850         when division happens by constant, it is cheap.
3851         (estimate_num_insns): Loads and stores are not having cost of 0;
3852         EH magic stuff is cheap; when computing runtime cost of switch,
3853         use log2 base of amount of its cases; builtin_expect has cost of 0;
3854         compute cost for moving return value of call.
3855         (init_inline_once): Initialize time_based flags.
3856         * tree-inline.h (eni_weights_d): Add time_based flag.
3857
3858 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3859
3860         * df-core.c: Update head documentation.
3861
3862 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
3863
3864         PR bootstrap/40118
3865         * rs6000.c (rs6000_generate_compare): Use op1b instead of
3866         shadowing exisiting variable op1.
3867
3868 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
3869
3870         PR target/37179
3871         * config/i386/driver-i386.c (processor_signatures): New enum.
3872         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
3873         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
3874         processor signature to detect geode processor.
3875
3876 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3877
3878         Revert:
3879
3880         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3881
3882         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3883         causes spurious differences between trunk and cond-optab branch.
3884
3885 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3886
3887         * dojump.c (compare_from_rtx): Delete.
3888         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
3889         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
3890         if the comparison does not satisfy the predicate; test predicates for
3891         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
3892         further if one existing pattern fails.
3893         * expr.h (compare_from_rtx): Delete.
3894         (prepare_operand): Declare it.
3895         * optabs.c: Change "lib call" to "libcall" throughout.
3896         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
3897         HAVE_conditional_trap, emit_cmp_insn): Delete.
3898         (can_compare_p): Delete cmp_optab case.
3899         (prepare_float_lib_cmp): Return an rtx and a machine mode.
3900         Accept other parameters by value.
3901         (prepare_operand): Make non-static.
3902         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
3903         other parameters by value.  Try to widen operands here based on
3904         an optab_methods argument and looking at cbranch_optab.
3905         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
3906         loop.  Use cbranch_optab directly.
3907         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
3908         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
3909         assertion.
3910         (emit_conditional_move, emit_conditional_add): Inline what's needed
3911         of compare_from_rtx, using new prepare_cmp_insn for the rest.
3912         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
3913         with COMPARE.  Move cmov_optab and cstore_optab above
3914         with cbranch_optab, move cmp_optab down with ucmp_optab,
3915         remove tst_otpab.  Do not initialize trap_rtx.
3916         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
3917         for trap code.  Do not check HAVE_conditional_trap.  Use
3918         prepare_cmp_insn.  Accept no predicate for operand 3.
3919         * optabs.h (OTI_cmp): Mark as used only for libcalls.
3920         (OTI_ctrap, ctrap_optab): New.
3921         (tst_optab): Delete.
3922         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
3923         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
3924         with lookup of ctrap_optab.
3925         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
3926         Delete.
3927         (ctrap_optab): New.
3928
3929         * combine.c (combine_simplify_rtx, simplify_set): Do not
3930         special case comparing against zero for cc0 machines.
3931         * simplify-rtx.c (simplify_binary_operation_1): Never remove
3932         COMPARE on cc0 machines.
3933         (simplify_relational_operation): Return a new expression when
3934         a COMPARE could be removed.
3935         * final.c (final_scan_insn): Compare cc_status values
3936         against LHS of a (compare FOO (const_int 0)) cc0 source.
3937         Also check if cc_status.value is the full compare.
3938
3939         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
3940         (cstoreMM4): Document.
3941         (conditional_trap): Document ctrapMM4 instead.
3942         (sync_compare_and_swapMM): Refer to cbranchcc4.
3943         (Dependent Patterns): Eliminate obsolete information referring to
3944         the old jump optimization phase.
3945         (Canonicalization): Include cbranchcc4 case, omit canonicalization
3946         of compares with 0 on cc0 machines.
3947         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
3948         avoiding references to cc0.  Remove text about storing operands
3949         in cmpMM.
3950         * doc/tm.texi (Condition Codes): Include blurb on different
3951         condition code representations, separate into subsections for
3952         CC0, MODE_CC and conditional execution.
3953
3954         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
3955         alpha_emit_setcc): Accept operands and a machine mode.
3956         * config/alpha/alpha.c (alpha_emit_conditional_branch):
3957         Get code/op0/op1 from operands, use machine mode argument
3958         instead of alpha_compare.fp_p.  Emit the branch here.
3959         (alpha_emit_setcc): Likewise, and return boolean.
3960         (alpha_emit_conditional_move): Likewise.  Assert that
3961         cmp_op_mode == cmp_mode, and simplify accordingly.
3962         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
3963         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
3964         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
3965         Delete.
3966         (stack probe test): Use cbranchdi4.
3967         * config/alpha/predicates.md (alpha_cbranch_operator): New.
3968
3969         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
3970         * config/arc/arc.h (movsicc, movsfcc): Use it.
3971         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
3972         (cbranchsi4, cstoresi4): New.
3973         (cmpsi, bCC and sCC expanders): Remove. 
3974
3975         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
3976         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
3977         * config/arm/predicates.md (arm_comparison_operator): Only include
3978         floating-point operators if there is a hardware floating-point unit.
3979         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
3980         deferring to cbranch_cc and cstore_cc respectively.
3981         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
3982         cbranch_cc, cstore_cc): New.
3983         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
3984         arm_compare_op1.
3985         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
3986
3987         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
3988         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
3989         as an argument.
3990         (adjust_insn_length): Adjust calls.
3991         (avr_reorg): Handle (compare (foo) (const_int 0)).
3992         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
3993         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
3994         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
3995         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
3996         (bCC): Remove.
3997         (cbranchqi4, cbranchhi4, cbranchsi4): New.
3998         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
3999
4000         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
4001         (cbranchsi4, cstorebi4, cstoresi4): New.
4002         (movbisi): This insn is duplicate, split it to zero_extend.
4003         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
4004         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
4005         (bfin_optimize_loop): Use cbranch expander.
4006         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
4007         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
4008         (bfin_bimode_comparison_operator): ... this.
4009         (bfin_direct_comparison_operator): New.
4010  
4011         * config/cris/cris.c (cris_normal_notice_update_cc): Look
4012         inside (compare FOO (const_int 0)).
4013         (cris_rtx_costs): Handle ZERO_EXTRACT.
4014         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
4015         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
4016         (*tstdi_v32): Delete.
4017         (*cmpdi_non_v32): Add M alternative for operand 1.
4018         (cmpsi, cmp<mode>): Make private.
4019         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
4020         with COMPARE.
4021         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
4022
4023         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
4024         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
4025         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
4026         (cc_reg_operand): New.
4027         (any_cond): Delete.
4028         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
4029         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
4030         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
4031         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
4032         crx_expand_scond): Delete.
4033
4034         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
4035         (cbranchsi4): New.
4036         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
4037         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
4038
4039         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
4040         cstoresi4, cstoresf4, cstoredf4): New.
4041         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
4042         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
4043         Receive the entire operands array.
4044         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
4045         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
4046         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
4047         Get test/op0/op1 from the operands array.
4048         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
4049
4050         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
4051         (h8300_expand_store): New.
4052         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
4053         (const_int 0)).
4054         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
4055         (h8300_expand_store): New.
4056         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
4057         or do not try to produce (set (cc0) REG).
4058         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
4059         change a compare into a move to a scratch register.  Disable some
4060         peepholes when comparing with zero.
4061         (tstsi, tsthi, tstsi, cmpqi): Make private.
4062         (cmphi): Delete.
4063         (bCC, sCC): Delete.
4064         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
4065         cstoresi4): New.
4066
4067         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
4068         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
4069         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
4070         (ix86_emit_i387_log1p): Use cbranchxf2.
4071         (ix86_expand_setcc): Return void.
4072         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
4073         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
4074         cmp<MODEF>, cmpcc): Remove.
4075         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
4076         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
4077         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
4078         (sCC and bCC expanders): Remove.
4079         (stack_protect_test): Use cbranchcc4.
4080
4081         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
4082         Delete.
4083         (ia64_expand_compare): Accept three rtx by reference and return void.
4084         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
4085         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
4086         from *expr.  Update *expr with the BImode comparison to do.
4087         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
4088         cmptf, bCC, sCC, conditional_trap): Delete.
4089         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
4090         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
4091         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
4092         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
4093         * config/ia64/predicates.md (ia64_cbranch_operator): New.
4094
4095         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
4096         type of last argument.
4097         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
4098         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
4099         use machine mode argument instead of branch_type.  Remove dead
4100         code for floating-point comparisons.
4101         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
4102         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
4103         Remove.
4104         (cbranchsi4, cstoresi4): New.
4105         * config/iq2000/predicates.md (reg_or_const_operand): New.
4106
4107         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
4108         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
4109         (b<code>_op): Rewrite to...
4110         (bcc_op): ... this, using match_operator.
4111         (s<code>_op): Rewrite to...
4112         (scc_op): ... this, using match_operator.
4113         (s<code>_24_op): Rewrite to...
4114         (scc_op_24): ... this, using match_operator.
4115         (s<code>_<mode>): Rewrite to...
4116         (cstore<mode>4): ... this, using match_operator.
4117         (s<code>_<mode>_24): Rewrite to...
4118         (cstore<mode>4_24): ... this, using match_operator.
4119         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
4120         m32c_unpend_compare, m32c_expand_scc): Delete.
4121         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
4122         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
4123         (m32c_expand_movcc): Change NE to EQ if necessary.
4124         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
4125
4126         * config/m32r/m32r-protos.h (gen_cond_store): New.
4127         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
4128         (gen_cond_store): New, from sCC patterns.
4129         (m32r_expand_block_move): Use cbranchsi4.
4130         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
4131         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
4132         (cbranchsi4, cstoresi4): New.
4133         
4134         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
4135         Delete.
4136         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
4137         (m68hc11_notice_update_cc): Look into a compare with 0.
4138         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
4139         Delete.
4140         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
4141         cmphi, cmpqi, bCC): Delete.
4142         (cbranchsi4, cbranchhi4, cbranchqi4): New.
4143         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
4144         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
4145         sets with COMPARE.
4146
4147         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
4148         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
4149         * config/m68k/constraints.md (H): New.
4150         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
4151         the define_insn below.
4152         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
4153         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
4154         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
4155         patterns): Wrap RHS with COMPARE.
4156         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
4157         (*cmpdi_internal): Name this pattern.
4158         (cmpdi): Change to define_insn.
4159         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
4160         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
4161         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
4162         predicate.
4163         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
4164         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
4165         (conditional_trap): Change to...
4166         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
4167         (*conditional_trap): Use the ordered_comparison_operator and
4168         const1_operand predicates.
4169         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
4170         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
4171         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
4172         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
4173
4174         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
4175         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
4176         (mcore_gen_compare): New. 
4177         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
4178         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
4179         (mcore_gen_compare): ... this.
4180         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
4181         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
4182         (stack probe pattern): Use cbranchsi4.
4183
4184         * config/mips/predicates.md (mips_cstore_operator): New.
4185         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
4186         * config/mips/mips.md (any_cond): Delete.
4187         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
4188         always succeed.
4189         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
4190         fixuns_truncsfdi2): Use cbranch patterns.
4191         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
4192         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
4193         Adjust call to mips_expand_conditional_branch.
4194         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
4195         cstore<GPR:mode>4.
4196         * config/mips/mips-protos.h (mips_expand_conditional_branch,
4197         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
4198         * config/mips/mips.c (cmp_operands): Delete.
4199         (mips_emit_compare): Get comparison operands from *op0/*op1.
4200         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
4201         that it succeeds.  Use op0/op1 instead of cmp_operands.
4202         (mips_expand_conditional_branch, mips_expand_conditional_move,
4203         mips_expand_conditional_trap): Likewise.
4204         (mips_block_move_loop): Use cbranch patterns. 
4205         * config/mips/mips.h (cmp_operands): Delete.
4206
4207         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
4208         (mmix_gen_compare_reg): Just return a register in the right CC mode.
4209         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
4210         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
4211         (*cmpcc_folded): Rename to...
4212         (*cmpdi_folded): this.
4213         (*cmpcc): Rename to...
4214         (*cmps): ... this.
4215         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
4216         (bCC): Remove.
4217         (cbranchdi4): New.
4218         (cbranchdf4): New.  Handle invalid comparisons here.
4219         * config/mmix/predicates.md (float_comparison_operator): New.
4220
4221         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
4222         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
4223         * config/mn10300/mn10300.md (tst): Delete.
4224         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
4225         Name these patterns and wrap RHS in a compare.
4226         (*cmpsi): Make this pattern private.  Include tst.
4227         (*cmpsf): Make this pattern private.
4228         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
4229         (compare with zero peepholes): Likewise.
4230         (bCC): Remove.
4231         (cbranchsi4, cbranchsf4): New.
4232         (casesi): Use cbranchsi4.
4233
4234         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
4235         hppa_branch_type): Delete.
4236         (return_addr_rtx): Use cbranchsi4.
4237         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
4238         Emit CCFPmode comparison here.
4239         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
4240         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
4241         hppa_branch_type): Delete.
4242         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
4243         (movsicc, movdicc): Remove references to hppa_compare_op0,
4244         hppa_compare_op1 and compare_from_rtx.
4245         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
4246         (casesi): Use cbranchsi4.
4247
4248         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
4249         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
4250         * config/pdp11/pdp11.md (register_or_const0_operand): New.
4251         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
4252         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
4253         (bCC): Delete.
4254         (cbranchdf4, cbranchhi4, cbranchqi4): New.
4255         (*branch, *branch_inverted): New.
4256
4257         * config/picochip/picochip.md (cbranchhi4): Use
4258         ordered_comparison_operator.
4259         (cmphi, bCC): Remove.
4260
4261         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
4262         (trap_comparison_operator): Delete.
4263         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
4264         rs6000_emit_cbranch): Accept mode and operands.
4265         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
4266         rs6000_compare_fp_p): Delete.   
4267         (rs6000_generate_compare): Accept mode and comparison.  Extract code
4268         and op0/op1 from there.  Replace references to rs6000_compare_op0
4269         and rs6000_compare_op1.
4270         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
4271         extract result from passed operands.
4272         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
4273         extract loc from passed operands.
4274         (rs6000_emit_cmove): Likewise.
4275         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
4276         rs6000_compare_fp_p): Delete.
4277         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
4278         (cbranch<GPR>4, cbranch<FP>4): New.
4279         (cstore<mode>4): New.  Consolidate here all choices about when to use
4280         portable or specialized sCC sequences.
4281         (stack_protect_test): Use cbranchsi4.
4282         (conditional_trap): Replace with ctrap<GPR>4.
4283         (conditional trap insn): Replace trap_comparison_operator with
4284         ordered_comparison_operator. 
4285
4286         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
4287         (s390_emit_prologue): Use ctrap.
4288         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
4289         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
4290         New predicates replacing...
4291         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
4292         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
4293         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
4294         (add<mode>cc): Do not use s390_compare_op0/op1.
4295         (s<code>): Change to...
4296         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
4297         (seq): Change to...
4298         (cstorecc4): ... this.  Handle EQ or NE equally.
4299         (*sne): Un-privatize for use in cstorecc4.
4300         (b<code>): Change to...
4301         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
4302         (conditional_trap): Replace with...
4303         (ctrap<GPR>4, ctrap<FP>4): ... these.
4304         (stack_protect): Use cbranchcc4.
4305
4306         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
4307         * config/score/score-protos.h (score_gen_cmp): Delete.
4308         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
4309         (score_block_move-loop): Use cbranchsi4.
4310         * config/score/score.md (cbranchsi4): New.
4311         (cmpsi, bCC): Delete.
4312         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
4313         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
4314         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
4315         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
4316         * config/score/score3.h (score3_gen_cmp): Delete.
4317         * config/score/score7.h (score7_gen_cmp): Delete.
4318
4319         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
4320         (sh_emit_scc_to_t): ... this.  Return void.
4321         (from_compare): Rename to...
4322         (sh_emit_compare_and_branch): ... this.
4323         (sh_emit_compare_and_set): New.
4324         (sh_expand_t_scc): Accept operands.
4325         * config/sh/predicates.md (sh_float_comparison_operator): New.
4326         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
4327         (prepare_scc_operands): Rename to...
4328         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
4329         arguments.
4330         (sh_emit_cheap_store_flag): New.
4331         (sh_emit_set_t_insn): New.
4332         (from_compare): Rename to...
4333         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
4334         handling of TARGET_SH2E floating point to avoid recursive call.
4335         Generate branch here.
4336         (sh_emit_compare_and_set): New.
4337         (sh_expand_t_scc): Get op0/op1 from arguments.
4338         (sh_emit_cheap_store_flag): New.
4339         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
4340         cases.
4341         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
4342         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
4343         (movsicc, movdicc): Do nothing when it recreated operands from
4344         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
4345         prepare_scc_operands (now sh_emit_scc_to_t).
4346         (udivdi3): Use cstoresi4.
4347         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
4348         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
4349         (cbranchint4_media, cbranchfp4_media): New.
4350         (casesi): Use cbranchdi4.
4351         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
4352         Delete.
4353         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
4354         (movnegt): Remove second operand.
4355         (cbranchsf4, cbranchdf4): New.
4356         (stack_protect): Use cbranchdi4/cbranchsi4.
4357
4358         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
4359         (gen_compare_reg): Accept comparison, extract part of it to...
4360         (gen_compare_reg_1): ... this. 
4361         (gen_compare_operator): Delete.
4362         (gen_v9_scc): Accept separate destination, comparison code and arms.
4363         Do not use sparc_compare_op0/sparc_compare_op1.
4364         (emit_scc_insn, emit_conditional_branch_insn): New.
4365         (emit_v9_brxx): Make static.  Remove useless assertion.
4366         (sparc_emit_float_lib_cmp): Return RTL instead of calling
4367         emit_cmp_insn.
4368         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
4369         * config/sparc/sparc-protos.h (gen_compare_reg,
4370         sparc_emit_float_lib_cmp): Adjust prototype.
4371         (emit_scc_insn, emit_conditional_branch_insn): New.
4372         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
4373         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
4374         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
4375         iterators to the top.
4376         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
4377         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
4378         snedi_special_trunc): Delete.
4379         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
4380         and snedi_special_trunc.
4381         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
4382         cbranchdi4, cbranch<F:mode>4): New.
4383         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
4384         here.  Use gen_compare_reg instead of gen_compare_operator.
4385         (conditional_trap): Replace with...
4386         (ctrapsi4, ctrapdi4): ... this.
4387         (stack_protect_test): Use cbranchcc4.
4388
4389         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
4390         argument to rtx.
4391         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
4392         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
4393         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
4394         from operands[0] or operands[3] depending on is_set.
4395         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
4396         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
4397         cmpdf, bCC), sCC: Remove.
4398         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
4399         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
4400         cstoredf4): New.
4401         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
4402         spu_emit_branch_or_set.
4403
4404         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
4405         Add two arguments.
4406         * config/stormy16/stormy16.h (xstormy16_compare_op0,
4407         xstormy16_compare_op1): Delete.
4408         * config/stormy16/stormy16.c (xstormy16_compare_op0,
4409         xstormy16_compare_op1): Delete. 
4410         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
4411         Adjust calls.
4412         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
4413         (cmphi, cmpsi, bCC): Remove.
4414
4415         * config/v850/v850.md (tstsi, cmpsi): Fold into...
4416         (*cmpsi): ... this one.
4417         (cbranchsi4, cstoresi4): New.
4418         (bCC expanders): Delete.
4419         (sCC insns): Fold into...
4420         (*setcc): ... this one.
4421         (casesi): Do not use gen_cmpsi and gen_bgtu. 
4422         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
4423         (movsicc): Simplify.
4424         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
4425
4426         * config/vax/vax-protos.h (cond_name): New.
4427         (vax_output_conditional_branch): Remove.
4428         * config/vax/vax.c (cond_name): New.
4429         (vax_output_conditional_branch): Remove.
4430         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
4431         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
4432         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
4433         (bit<VAXint>): Wrap source with (compare).
4434         (b<code> and following unnamed pattern): Rename to *branch and
4435         *branch_reversed.  Change macroization to match_operator.
4436         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
4437
4438         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
4439         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
4440         Change last argument to machine_mode.
4441         (xtensa_expand_scc): Add machine_mode argument.
4442         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
4443         (gen_conditional_move, xtensa_expand_conditional_branch,
4444         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
4445         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
4446         Adjust operand numbers.
4447         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
4448         Delete.
4449         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
4450         (cmpsi, cmpsf, b<code>, s<code>): Delete.
4451         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
4452
4453 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
4454
4455         * optabs.c (prepare_cmp_insn): Temporarily disable test that
4456         causes spurious differences between trunk and cond-optab branch.
4457
4458 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
4459
4460         PR target/37137
4461         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
4462
4463 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
4464
4465         * tree.c (iterative_hash_pointer): Delete.
4466         (iterative_hash_expr): Short-circuit handling of NULL pointer.
4467         Hash UIDs and versions of SSA names.  Don't special-case built-in
4468         function declarations.
4469
4470 2009-05-11  Ian Lance Taylor  <iant@google.com>
4471
4472         PR bootstrap/40103
4473         * graphite.c: Force -Wc++-compat to only be a warning before
4474         #including "cloog/cloog.h".
4475
4476 2009-05-11  Martin Jambor  <mjambor@suse.cz>
4477
4478         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
4479         
4480 2009-05-11  Jan Hubicka  <jh@suse.cz>
4481
4482         * tree-ssa-loop-ivcanon.c: Include target.h
4483         (struct loop_size): new structure.
4484         (constant_after_peeling): New predicate.
4485         (tree_estimate_loop_size): New function.
4486         (estimated_unrolled_size): Rewrite for new estimates.
4487         (try_unroll_loop_completely): Use new estimates.
4488         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
4489
4490 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4491
4492         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
4493         libcpp interface change.
4494         (spu_macro_to_expand): Likewise.
4495
4496 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
4497
4498         PR tree-optimization/40026
4499         * gimplify.c (gimplify_init_constructor): Change initial conditional
4500         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
4501         optimize_compound_literals_in_ctor.
4502
4503 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
4504
4505         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
4506         New devices.
4507         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
4508
4509 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
4510
4511         * tree-vect-data-refs.c (vect_analyze_group_access): Use
4512         HOST_WIDE_INT for gap.
4513
4514 2009-05-11  Ira Rosen  <irar@il.ibm.com>
4515
4516         PR tree-optimization/40074
4517         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
4518         account in group size and step comparison.
4519
4520 2009-05-11  Richard Guenther  <rguenther@suse.de>
4521
4522         * passes.c (init_optimization_passes): Strip now incorrect comment.
4523         (execute_function_todo): Do not set PROP_alias.
4524         * tree-pass.h (PROP_alias): Remove.
4525         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
4526         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
4527         * tree-nrv.c (pass_return_slot): Likewise.
4528         * tree-object-size.c (pass_object_sizes): Likewise.
4529         * tree-ssa-dom.c (pass_dominator): Likewise.
4530         (pass_phi_only_cprop): Likewise.
4531         * tree-ssa-dse.c (pass_dse): Likewise.
4532         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
4533         (pass_cselim): Likewise.
4534         * tree-ssa-pre.c (pass_pre): Likewise.
4535         (pass_fre): Likewise.
4536         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
4537         * tree-ssa-sink.c (pass_sink_code): Likewise.
4538         * tree-stdarg.c (pass_stdarg): Likewise.
4539         * tree-tailcall.c (pass_tail_calls): Likewise.
4540         * tree-vrp.c (pass_vrp): Likewise.
4541
4542 2009-05-10  Ian Lance Taylor  <iant@google.com>
4543
4544         * basic-block.h (enum profile_status): Break out of struct
4545         control_flow_graph.
4546         * cgraph.h (struct inline_summary): Break out of struct
4547         cgraph_local_info.
4548         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
4549         of struct cgraph_order_sort.
4550         * combine.c (enum undo_kind): New enum, broken out of struct undo.
4551         * cse.c (struct branch_path): Break out of struct
4552         cse_basic_block_data.
4553         * except.h (enum eh_region_type): Break out of struct eh_region.
4554         * gcc.c (enum add_del): Break out of struct modify_target.
4555         * genrecog.c (enum decision_type): Break out of struct decision_test.
4556         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
4557         ggc_pch_data.
4558         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
4559         * regmove.c (enum match_use): New enum, broken out of struct match.
4560         * sched-int.h (enum post_call_group): New enum, broken out of
4561         struct deps.
4562         (struct deps_reg): Break out of struct deps.
4563         * target.h (struct asm_int_op): Break out of struct gcc_target.
4564         * tree-eh.c (struct goto_queue_node): Break out of struct
4565         leh_tf_state.
4566         * tree-inline.h (enum copy_body_cge_which): Break out of
4567         copy_body_data.
4568         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
4569
4570         * c-decl.c (in_struct, struct_types): New static variables.
4571         (pushtag): Add loc parameter.  Change all callers.
4572         (lookup_tag): Add ploc parameter.  Change all callers.
4573         (check_compound_literal_type): New function.
4574         (parser_xref_tag): Add loc parameter.  Change all callers.  If
4575         -Wc++-compat, warn about struct/union/enum types defined within a
4576         struct or union.
4577         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
4578         and loc parameters.  Change all callers.  Change error calls to
4579         error_at, using loc.  For a redefinition, if the location of the
4580         original definition is known, report it.  Set in_struct and
4581         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
4582         (finish_struct): Add new parameters enclosing_in_struct and
4583         enclosing_struct_types.  Change all callers.  Set
4584         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
4585         in the struct.  If in a struct, add this struct to struct_types.
4586         (start_enum): Add loc parameter.  Change all callers.  Use
4587         error_at for errors, using loc.  For a redefinition, if the
4588         location of the original definition is known, report it.  If in a
4589         struct, add this enum type to struct_types.  If -Wc++-compat warn
4590         if in sizeof, typeof, or alignof.
4591         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
4592         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
4593         (c_parser_enum_specifier): Get enum location for start_enum.
4594         (c_parser_struct_or_union_specifier): Get struct location for
4595         start_struct.  Save in_struct and struct_types status between
4596         start_struct and finish_struct.
4597         (c_parser_cast_expression): Get location of cast.
4598         (c_parser_alignof_expression): Get location of type.
4599         (c_parser_postfix_expression): Likewise.
4600         (c_parser_postfix_expression_after_paren_type): Add type_loc
4601         parameter.  Change all callers.  Call check_compound_literal_type.
4602         Use type_loc for error about variable size type.
4603         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
4604         of an enum constant from an enum type defined in a struct or union.
4605         (c_cast_expr): Add loc parameter.  Change all callers.  If
4606         -Wc++-compat, warn about defining a type in a cast.
4607         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
4608         (start_enum, start_struct, finish_struct): Update declarations.
4609         (parser_xref_tag, c_cast_expr): Update declarations.
4610         (check_compound_literal_type): Declare.
4611
4612 2009-05-11  Ben Elliston  <bje@au.ibm.com>
4613
4614         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
4615         for recent libcpp interface change.
4616         (rs6000_macro_to_expand): Likewise.
4617
4618 2009-05-10  Michael Matz  <matz@suse.de>
4619
4620         PR target/40031
4621         * config/arm/arm.c (require_pic_register): Emit on entry edge,
4622         not at entry of function.
4623
4624 2009-05-10  Richard Guenther  <rguenther@suse.de>
4625
4626         PR tree-optimization/40081
4627         Revert
4628         * tree-sra.c (instantiate_element): Instantiate scalar replacements
4629         using the main variant of the element type.  Do not fiddle with
4630         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
4631
4632         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
4633         structs with volatile fields.
4634
4635 2009-05-10  Jan Hubicka  <jh@suse.cz>
4636
4637         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
4638         (estimate_move_cost): Assert that it does not get called for
4639         VOID_TYPE_P.
4640         (estimate_num_insns): Skip VOID types in argument handling.
4641         (optimize_inline_calls): Delete unreachable blocks and verify that
4642         callgraph is valid.
4643
4644 2009-05-10  Jan Hubicka  <jh@suse.cz>
4645
4646         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
4647         * cgraph.c (cgraph_mark_address_taken_node): New function.
4648         (dump_cgraph_node): Dump new flag.
4649         * cgraph.h (struct cgraph_node): Add address_taken.
4650         (cgraph_mark_address_taken_node): New function.
4651         * ipa.c (cgraph_postorder): Prioritize functions with address taken
4652         since new direct calls can be born.
4653
4654 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
4655
4656         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
4657         tok->val.node.node.
4658
4659 2009-05-10  Jan Hubicka  <jh@suse.cz>
4660
4661         PR middle-end/40084
4662         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
4663         argument; rewrite.
4664         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
4665         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
4666         * tree-inline.c (copy_bb): Set frequency correctly.
4667         (fold_marked_statements): Update call to
4668         cgraph_update_edges_for_call_stmt.
4669
4670 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
4671
4672         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
4673         identifiers in diagnostics.
4674         * config/arm/arm.c (arm_handle_fndecl_attribute,
4675         arm_handle_isr_attribute): Likewise.
4676         * config/avr/avr.c (avr_handle_progmem_attribute,
4677         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
4678         * config/bfin/bfin.c (handle_int_attribute,
4679         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
4680         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
4681         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
4682         Likewise.
4683         * config/darwin.c (darwin_handle_kext_attribute,
4684         darwin_handle_weak_import_attribute): Likewise.
4685         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
4686         h8300_handle_eightbit_data_attribute,
4687         h8300_handle_tiny_data_attribute): Likewise.
4688         * config/i386/i386.c (ix86_handle_cconv_attribute,
4689         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
4690         * config/i386/winnt.c (ix86_handle_shared_attribute,
4691         ix86_handle_selectany_attribute): Likewise.
4692         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
4693         * config/m32c/m32c.c (function_vector_handler): Likewise.
4694         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
4695         m68hc11_handle_fntype_attribute): Likewise.
4696         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
4697         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
4698         * config/mips/mips.c (mips_insert_attributes,
4699         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
4700         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
4701         rs6000_handle_struct_attribute): Likewise.
4702         * config/sh/sh.c (sh_insert_attributes,
4703         sh_handle_resbank_handler_attribute,
4704         sh_handle_interrupt_handler_attribute,
4705         sh2a_handle_function_vector_handler_attribute,
4706         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
4707         Likewise.
4708         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
4709         * config/spu/spu.c (spu_handle_fndecl_attribute,
4710         spu_handle_vector_attribute): Likewise.
4711         * config/stormy16/stormy16.c
4712         (xstormy16_handle_interrupt_attribute): Likewise.
4713         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
4714         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
4715
4716 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
4717
4718         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
4719         (pp_translate_identifiers): New.
4720         (pp_identifier): Only conditionally translate identifier to locale
4721         character set.
4722         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
4723         (pp_base_tree_identifier): Only conditionally translate identifier
4724         to locale character set.
4725         * c-pretty-print.c (M_): Define.
4726         (pp_c_type_specifier, pp_c_primary_expression): Mark English
4727         fragments for conditional translation with M_.
4728         * tree-pretty-print.c (maybe_init_pretty_print): Disable
4729         identifier translation.
4730
4731 2009-05-10  Richard Guenther  <rguenther@suse.de>
4732
4733         PR tree-optimization/40081
4734         * tree-sra.c (instantiate_element): Instantiate scalar replacements
4735         using the main variant of the element type.  Do not fiddle with
4736         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
4737
4738 2009-05-09  Jan Hubicka  <jh@suse.cz>
4739
4740         PR middle-end/40080
4741         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
4742         indirect calls; verify cgraph afterwards.
4743
4744 2009-05-09  Jan Hubicka  <jh@suse.cz>
4745
4746         PR bootstrap/40082
4747         * ipa.c (update_inlined_to_pointer): New function.
4748         (cgraph_remove_unreachable_nodes): Use it.
4749
4750 2009-05-09  Jan Hubicka  <jh@suse.cz>
4751
4752         * tree-eh.c (struct leh_state): Remove prev_try.
4753         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
4754         not track prev_try.
4755         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
4756         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
4757         remove_eh_handler_and_replace, foreach_reachable_handler,
4758         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
4759         * except.h (struct eh_region): Remove eh_region_u_cleanup.
4760         (gen_eh_region_cleanup): Update prototype.
4761
4762 2009-05-09  Jan Hubicka  <jh@suse.cz>
4763
4764         PR middle-end/40043
4765         * except.c (copy_eh_region): Always set prev_try.
4766         (redirect_eh_edge_to_label): Find outer try.
4767         (foreach_reachable_handler): When looking for prev try
4768         handle case where previous try is not going to be taken.
4769
4770 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
4771
4772         PR tree-optimization/40049
4773         * tree-vect-stmts.c (vectorizable_operation): If the machine has
4774         only vector/vector shifts, convert the type of the constant to the
4775         appropriate type to avoid building incorrect trees, which
4776         eventually have problems with garbage collection.
4777
4778 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
4779
4780         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
4781         -1 for complex floating-point types if honoring signed zeros.
4782
4783 2009-05-08  Jan Hubicka  <jh@suse.cz>
4784
4785         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
4786         argument; handle correctly when profile is absent.
4787         (build_cgraph_edges): Update.
4788         (rebuild_cgraph_edges): Update.
4789         * cgraph.c: Do not include varray.h.
4790         (cgraph_set_call_stmt_including_clones): New function.
4791         (cgraph_create_edge_including_clones): Likewise
4792         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
4793         (cgraph_update_edges_for_call_stmt): Handle clones.
4794         (cgraph_remove_node): Handle clone tree.
4795         (cgraph_remove_node_and_inline_clones): New function.
4796         (dump_cgraph_node): Dump clone tree.
4797         (cgraph_clone_node): Handle clone tree.
4798         (clone_function_name): Bring here from tree-inline.c.
4799         (cgraph_create_virtual_clone): New function.
4800         * cgraph.h (ipa_replace_map): Move here from ipa.h.
4801         (cgraph_clone_info): New function.
4802         (strut cgraph_node): Add clone_info and new clone tree pointers.
4803         (cgraph_remove_node_and_inline_clones,
4804         cgraph_set_call_stmt_including_clones,
4805         cgraph_create_edge_including_clones,
4806         cgraph_create_virtual_clone): Declare.
4807         (cgraph_function_versioning): Use VEC argument.
4808         (compute_call_stmt_bb_frequency): Update prototype.
4809         (cgraph_materialize_all_clones): New function.
4810         * ipa-cp.c (ipcp_update_cloned_node): Remove.
4811         (ipcp_create_replace_map): Update to VECtors.
4812         (ipcp_update_callgraph): Use virtual clones.
4813         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
4814         (ipcp_update_profiling): Do not update local profiling.
4815         (ipcp_insert_stage): Use VECtors and virtual clones.
4816         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
4817         (clone_of_p): New function.
4818         (cgraph_preserve_function_body_p): Use clone tree.
4819         (cgraph_optimize): Materialize clones.
4820         (cgraph_function_versioning): Update for VECtors.
4821         (save_inline_function_body): Use clone tree.
4822         (cgraph_materialize_clone): New function.
4823         (cgraph_materialize_all_clones): Likewise.
4824         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
4825         * ipa.c: Include gimple.h.
4826         (cgraph_remove_unreachable_nodes): Use clone tree.
4827         * ipa-prop.c (ipa_note_param_call): Update call to
4828         compute_call_stmt_bb_frequencycall.
4829         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
4830         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
4831         (copy_bb): Handle updating of clone tree; add new edge when new call
4832         appears.
4833         (expand_call_inline): Be strict about every call having edge.
4834         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
4835         (delete_unreachable_blocks_update_callgraph): New function.
4836         (tree_function_versioning): Use VECtors; always remove unreachable
4837         blocks and fold conditionals.
4838         * tree-inline.h: Do not include varray.h.
4839         (tree_function_versioning): Remove.
4840         * Makefile.in (GTFILES): Remove tree-inline.c
4841         * passes.c (do_per_function): Do only functions having body.
4842         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
4843         tree.
4844
4845 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
4846             Andrew Morrow  <acm@google.com>
4847
4848         PR c/36892
4849         * c-common.c (c_common_attribute_table): Permit deprecated
4850         attribute to take an optional argument.
4851         (handle_deprecated_attribute): If the optional argument to
4852         __attribute__((deprecated)) is not a string ignore the attribute
4853         and emit a warning.
4854
4855         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
4856         * c-typeck.c (build_component_ref): Likewise.
4857         (build_external_ref): Likewise.
4858
4859         * toplev.c (warn_deprecated_use): Add an attribute argument.
4860         Emit the message associated with __attribute__((deprecated)).
4861
4862         * toplev.h (warn_deprecated_use): Updated.
4863
4864         * doc/extend.texi: Document new optional parameter to
4865         __attribute__((deprecated))
4866
4867 2009-05-08  Michael Eager <eager@eagercon.com>
4868
4869         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
4870         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
4871
4872 2009-05-08  Richard Guenther  <rguenther@suse.de>
4873
4874         PR tree-optimization/40062
4875         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
4876         Avoid exponential behavior.
4877
4878 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
4879
4880         PR rtl-optimization/33928
4881         PR 26854
4882         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
4883         process_uses, build_single_def_use_links): New.
4884         (update_df): Update use_def_ref.
4885         (forward_propagate_into): Use get_def_for_use instead of use-def
4886         chains.
4887         (fwprop_init): Call build_single_def_use_links and let it initialize
4888         dataflow.
4889         (fwprop_done): Free use_def_ref.
4890         (fwprop_addr): Eliminate duplicate call to df_set_flags.
4891         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
4892         df_rd_simulate_one_insn): New.
4893         (df_rd_bb_local_compute_process_def): Update head comment.
4894         (df_chain_create_bb): Use the new RD simulation functions.
4895         * df.h (df_rd_simulate_artificial_defs_at_top, 
4896         df_rd_simulate_one_insn): New.
4897         * opts.c (decode_options): Enable fwprop at -O1.
4898         * doc/invoke.texi (-fforward-propagate): Document this.
4899
4900 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
4901
4902         PR c/24581
4903         * c-typeck.c (build_binary_op): Handle arithmetic between one real
4904         and one complex operand specially.
4905         * tree-complex.c (some_nonzerop): Do not identify a real value as
4906         zero if flag_signed_zeros.
4907
4908 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
4909
4910         PR rtl-optimization/33928
4911         * loop-invariant.c (record_use): Fix && vs. || mishap.
4912
4913 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
4914
4915         PR rtl-optimization/33928
4916         * loop-invariant.c (struct use): Add addr_use_p.
4917         (struct def): Add n_addr_uses.
4918         (struct invariant): Add cheap_address.
4919         (create_new_invariant): Set cheap_address.
4920         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
4921         (record_uses): Pass df_ref to record_use.
4922         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
4923         used only as such.
4924
4925 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
4926
4927         * config/sh/sh.c: Do not include c-pragma.h.
4928
4929 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4930
4931         * config/spu/spu.c: Remove include of c-common.h.
4932
4933 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
4934
4935         PR c/39037
4936         * c-common.h (mark_valid_location_for_stdc_pragma,
4937         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
4938         clear_float_const_decimal64, float_const_decimal64_p): New.
4939         * c.opt (Wunsuffixed-float-constants): New.
4940         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
4941         unsuffixed float constant, handle new warning.
4942         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
4943         * c-decl.c (c_scope): New flag float_const_decimal64.
4944         (set_float_const_decimal64, clear_float_const_decimal64,
4945         float_const_decimal64_p): New.
4946         (push_scope): Set new flag.
4947         * c-parser.c (c_parser_translation_unit): Mark when it's valid
4948         to use STDC pragmas.
4949         (c_parser_external_declaration): Ditto.
4950         (c_parser_compound_statement_nostart): Ditto.
4951         * c-pragma.c (valid_location_for_stdc_pragma,
4952         mark_valid_location_for_stdc_pragma,
4953         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
4954         handle_pragma_float_const_decimal64): New.
4955         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
4956         * cp/semantics.c (valid_location_for_stdc_pragma_p,
4957         set_float_const_decimal64, clear_float_const_decimal64,
4958         float_const_decimal64_p): New dummy functions.
4959         * doc/extend.texi (Decimal Float): Remove statement that the
4960         pragma, and suffix for double constants, are not supported.
4961         * doc/invoke.texi (Warning Options): List new option.
4962         (-Wunsuffixed-float-constants): New.
4963
4964 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
4965
4966         * config/i386/i386.c: Do not include c-common.h.
4967
4968 2009-05-07  Mark Heffernan  <meheff@google.com>
4969
4970         * doc/invoke.texi (Debugging Options): Document change of debugging
4971         dump location.
4972         * opts.c (decode_options): Make dump_base_name relative to
4973         aux_base_name directory.
4974
4975 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
4976
4977         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
4978         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
4979
4980 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
4981
4982         * Makefile.in (install-plugin): Simplify a bit.
4983
4984 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
4985
4986         * Makefile.in (OBJS-common): Add regcprop.o.
4987         (regcprop.o): New.
4988         * timevar.def (TV_CPROP_REGISTERS): New.
4989         * regrename.c (regrename_optimize): Return 0.
4990         (rest_of_handle_regrename): Delete.
4991         (pass_rename_registers): Point to regrename_optimize.
4992         (struct value_data_entry, struct value_data, 
4993         kill_value_one_regno, kill_value_regno, kill_value,
4994         set_value_regno, init_value_data, kill_clobbered_value,
4995         kill_set_value, kill_autoinc_value, copy_value,
4996         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
4997         replace_oldest_value_reg, replace_oldest_value_addr,
4998         replace_oldest_value_mem, copyprop_hardreg_forward_1,
4999         debug_value_data, validate_value_data): Move...
5000         * regcprop.c: ... here.
5001         (rest_of_handle_cprop): Delete.
5002         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
5003
5004 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
5005
5006         PR middle-end/40057
5007         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
5008         GEN_INT for 1 << bitnum.
5009         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
5010         build_int_cst_type.
5011
5012 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
5013
5014         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
5015         Remove wrong description of "nand" operation.
5016
5017 2009-05-06  Richard Guenther  <rguenther@suse.de>
5018             Adam Nemet  <anemet@caviumnetworks.com>
5019
5020         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
5021         comment.  Add that if LHS is not a gimple register, then RHS1 has
5022         to be a single object (GIMPLE_SINGLE_RHS).
5023
5024 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
5025
5026         * expr.c (get_def_for_expr): Move it up in the file.
5027         (store_field): When expanding a bit-field store, look at the
5028         defining gimple stmt for the masking conversion.
5029
5030 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
5031
5032         PR middle-end/39986
5033         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
5034         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
5035         32-bit memcpy into long.
5036
5037 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
5038
5039         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
5040         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
5041         new_reg_loc_descr.
5042         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
5043         instead of appending DW_OP_deref*.
5044
5045 2009-05-06  Michael Matz  <matz@suse.de>
5046
5047         PR middle-end/40021
5048         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
5049         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
5050
5051 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
5052
5053         * Makefile.in (install-plugin): Fix srcdir handling.
5054
5055 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
5056
5057         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
5058         when processing for not_regs_needed bitmap.
5059         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
5060         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
5061         handling it for rhs. 
5062
5063 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
5064
5065         * config/i386/i386.md (unnamed inc/dec peephole): Use
5066         optimize_insn_for_size_p instead of optimize_size.
5067         * config/i386/predicates.md (incdec_operand): Likewise.
5068         (aligned_operand): Likewise.
5069         * config/i386/sse.md (divv8sf3): Likewise.
5070         (sqrtv8sf2): Likewise.
5071
5072 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
5073
5074         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
5075
5076         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
5077
5078 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
5079
5080         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
5081         ssemodesuffixf2c with avxmodesuffixf2c.
5082
5083 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
5084
5085         PR c/40032
5086         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
5087
5088 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
5089
5090         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
5091         (struct tree_base): Adjust spacing for 8 bit boundaries.
5092         (struct tree_decl_common): Add decl_by_reference_flag bit.
5093         (DECL_BY_REFERENCE): Adjust.
5094         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
5095         print DECL_BY_REFERENCE bit.
5096         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
5097         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
5098         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
5099         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
5100         unconditionally.
5101
5102         PR middle-end/39666
5103         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
5104         range of the type, but default label is missing, add it with one
5105         of the existing labels instead of adding a new label for it.
5106
5107 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
5108
5109         * dwarf.h: Remove.
5110
5111 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
5112
5113         * Makefile.in (enable_plugin, plugin_includedir): New.
5114         (install): Depend on install-plugin.
5115         (PLUGIN_HEADERS): New.
5116         (install-plugin): New.
5117         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
5118
5119 2009-05-05  Richard Guenther  <rguenther@suse.de>
5120
5121         PR tree-optimization/40022
5122         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
5123         the only vuse.
5124         (phivn_valid_p): Fix tuplification error, simplify.
5125         (phiprop_insert_phi): Add dumps.
5126         (propagate_with_phi): Simplify.
5127
5128 2009-05-05  Richard Guenther  <rguenther@suse.de>
5129
5130         PR middle-end/40023
5131         * builtins.c (gimplify_va_arg_expr): Properly build the address.
5132
5133 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
5134
5135         * tree.h (strip_float_extensions): Remove duplicate declaration.
5136         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
5137         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
5138         block_ultimate_origin): Rearrange the declarations line to match the
5139         comment that indicates the .c file which the functions are defined.
5140         (dwarf2out_*, set_decl_rtl): Add comment.
5141         (get_base_address): Adjust comment.
5142         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
5143         declarations line and add comment.
5144         (is_builtin_name): Add blank after function name, for clarity.
5145
5146 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
5147
5148         * attribs.c (decl_attributes): Use %qE for identifiers in
5149         diagnostics.
5150         * cgraphunit.c (verify_cgraph_node): Translate function names to
5151         locale character set in diagnostics.
5152         * coverage.c (get_coverage_counts): Use %qE for identifiers in
5153         diagnostics.
5154         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
5155         Document that functions are named in UTF-8.
5156         * expr.c (expand_expr_real_1): Translate function names to locale
5157         character set in diagnostics.
5158         * gimplify.c (omp_notice_variable, omp_is_private,
5159         gimplify_scan_omp_clauses): Use %qE for identifiers in
5160         diagnostics.
5161         * langhooks.c (lhd_print_error_function): Translate function names
5162         to locale character set.
5163         * langhooks.h (decl_printable_name): Document that return value is
5164         in internal character set.
5165         * stmt.c: Include pretty-print.h
5166         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
5167         diagnostics.
5168         (resolve_operand_name_1): Translate named operand name to locale
5169         character set.
5170         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
5171         diagnostics.
5172         * toplev.c (announce_function): Translate function names to locale
5173         character set.
5174         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
5175         (default_tree_printer): Use pp_identifier or translate identifiers
5176         to locale character set.  Mark "<anonymous>" for translation.
5177         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
5178         for identifiers in diagnostics.
5179         * tree.c (handle_dll_attribute): Use %qE for identifiers in
5180         diagnostics.
5181         * varasm.c (output_constructor): Use %qE for identifiers in
5182         diagnostics.
5183
5184 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
5185
5186         * configure.ac: use ` ` instead of $()
5187         * configure: Regenerate.
5188
5189 2009-05-05  Ben Elliston  <bje@au.ibm.com>
5190
5191         * config/pa/linux-atomic.c: Eliminate conditional include of
5192         errno.h on non-LP64 systems to simplify build requirements.
5193
5194 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
5195
5196         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
5197         diagnostics.
5198         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
5199         and pass value to identifier_to_locale.
5200         (warn_variable_length_array): Make name a tree.
5201         (grokdeclarator): Separate diagnostic texts for named and unnamed
5202         declarators.  Use %qE for named declarators.
5203         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
5204         diagnostics.
5205         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
5206         identifiers in diagnostics.
5207         * c-typeck.c (push_member_name, start_init): Pass identifiers to
5208         identifier_to_locale.  Mark "anonymous" strings for translation.
5209
5210 2009-05-04  Michael Eager <eager@eagercon.com>
5211
5212         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
5213         address for DImode/DFmode only if double-precision FP regs.
5214
5215 2009-05-04  Michael Eager <eager@eagercon.com>
5216
5217         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
5218         TARGET_SINGLE_FLOAT check.
5219
5220 2009-05-04  Michael Eager <eager@eagercon.com>
5221
5222         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
5223
5224 2009-05-04  Michael Eager <eager@eagercon.com>
5225
5226         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
5227         * config/rs6000/t-xilinx: New
5228
5229 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
5230
5231         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
5232         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
5233         * gcc/explow.c (memory_address): Use target hook.
5234         * gcc/targhooks.c (default_legitimize_address): New.
5235         * gcc/targhooks.h (default_legitimize_address): New.
5236         * gcc/target.h (legitimize_address): New.
5237         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
5238         (TARGET_INITIALIZER): Include it.
5239         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
5240
5241         * config/bfin/bfin-protos.h (legitimize_address): Remove.
5242         * config/bfin/bfin.c (legitimize_address): Remove.
5243         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
5244         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
5245         Remove.
5246         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
5247         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
5248
5249         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
5250         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
5251         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
5252         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
5253         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
5254         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
5255         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
5256         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
5257         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
5258         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
5259         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
5260         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
5261         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
5262         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
5263         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
5264         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
5265         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
5266         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
5267         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
5268         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
5269         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
5270         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
5271         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
5272
5273         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
5274         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
5275         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
5276         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
5277         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
5278         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
5279         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
5280         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
5281         (thumb_legitimize_address): Delete.
5282         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
5283         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
5284         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
5285         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
5286         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
5287         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
5288         Delete.
5289         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
5290         Delete.
5291
5292         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
5293         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
5294         * config/m32r/m32r.c (m32r_legitimize_address): New.
5295         * config/m68k/m68k.c (m68k_legitimize_address): New.
5296         * config/score/score.c (score_legitimize_address): Standardize.
5297         * config/score/score3.c (score3_legitimize_address): Standardize.
5298         * config/score/score3.h (score3_legitimize_address): Adjust.
5299         * config/score/score7.c (score7_legitimize_address): Standardize.
5300         * config/score/score7.h (score7_legitimize_address): Adjust.
5301         * config/sh/sh.c (sh_legitimize_address): New.
5302         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
5303
5304         * gcc/config/s390/s390.c (legitimize_address): Rename to...
5305         (s390_legitimize_address): ... this.
5306         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
5307         (sparc_legitimize_address): ... this.
5308         * gcc/config/i386/i386.c (legitimize_address): Rename to...
5309         (ix86_legitimize_address): ... this.
5310         * gcc/config/avr/avr.c (legitimize_address): Rename to...
5311         (avr_legitimize_address): ... this.
5312         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
5313         (mn10300_legitimize_address): ... this.
5314         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
5315         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
5316         (alpha_expand_mov): Adjust call.
5317
5318         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
5319         * config/spu/spu.c (spu_legitimize_address): Likewise.
5320         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
5321         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
5322
5323 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
5324
5325         * intl.c (locale_encoding, locale_utf8): New.
5326         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
5327         * intl.h (locale_encoding, locale_utf8): Declare.
5328         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
5329         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
5330         New.
5331         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
5332         argument.
5333         (pp_tree_identifier): Define to call pp_base_tree_identifier.
5334         (pp_base_tree_identifier): Declare as function.
5335         (identifier_to_locale): Declare.
5336         * Makefile.in (pretty-print.o): Update dependencies.
5337         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
5338
5339 2009-05-04  Richard Guenther  <rguenther@suse.de>
5340
5341         PR middle-end/40015
5342         * builtins.c (fold_builtin_memory_op): Do not decay to element
5343         type if the size matches the whole array.
5344
5345 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
5346
5347         * expmed.c (synth_mult): When trying out a shift, pass the result
5348         of a signed shift.
5349
5350 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
5351
5352         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
5353         (shiftsub1_cost): New.
5354         (init_expmed): Compute shiftsub1_cost.
5355         (synth_mult): Optimize multiplications by constants of the form
5356         -(2^^m-1) for some constant positive integer m.
5357
5358 2009-05-03  Richard Guenther  <rguenther@suse.de>
5359
5360         PR c/39983
5361         * c-typeck.c (array_to_pointer_conversion): Do not built
5362         ADDR_EXPRs of arrays of pointer-to-element type.
5363         * c-gimplify.c (c_gimplify_expr): Revert change fixing
5364         up wrong ADDR_EXPRs after-the-fact.
5365         * c-common.c (strict_aliasing_warning): Strip pointer
5366         conversions for obtaining the original type.
5367         * builtins.c (fold_builtin_memset): Handle array types.
5368         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
5369         and array types
5370
5371 2009-05-03  Richard Guenther  <rguenther@suse.de>
5372
5373         PR middle-end/23329
5374         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
5375         Do not lose casts from array types with unknown extent to array
5376         types with known extent.
5377         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
5378         alias set compatibility.
5379
5380 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
5381
5382         * flags.h (extra_warnings): Delete.
5383         * toplev.c (process_options): Handle Wuninitialized here.
5384         * opts.c (extra_warnings): Delete.
5385         (set_Wextra): Delete.
5386         (common_handle_option): -Wextra can be handled automatically.
5387         * c-opts.c (c_common_handle_option): Delete obsolete code.
5388         (c_common_post_options): Simplify comment.
5389         * common.opt (W): Add Var.
5390         (Wextra): Add Var.
5391         (Wuninitialized): Initialize to -1.
5392
5393 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
5394             Richard Guenther  <rguenther@suse.de>
5395
5396         * expr.c (get_def_for_expr): New function.
5397         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
5398         SSA rather than trees.
5399         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
5400         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
5401         
5402 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
5403
5404         * c-common.c (reswords): Add _Imaginary.
5405         * c-common.c (enum rid): Add RID_IMAGINARY.
5406
5407 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
5408
5409         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
5410         Patch by Richard Guenther.
5411
5412 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
5413
5414         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
5415         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
5416         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
5417         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
5418         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
5419         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
5420         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
5421         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
5422         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
5423         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
5424         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
5425         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
5426         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
5427         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
5428         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
5429         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
5430         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
5431         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
5432
5433 2009-05-02  Richard Guenther  <rguenther@suse.de>
5434
5435         PR tree-optimization/39940
5436         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
5437         doing so.
5438
5439 2009-05-02  Richard Guenther  <rguenther@suse.de>
5440
5441         PR middle-end/40001
5442         * tree-ssa.c (execute_update_addresses_taken): Properly check
5443         if we can mark a variable DECL_GIMPLE_REG_P.
5444         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
5445         back to the end of the function.
5446         (is_gimple_reg_type): Remove complex type special casing.
5447         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
5448         if not optimizing.
5449
5450 2009-05-02  Ben Elliston  <bje@au.ibm.com>
5451
5452         * doc/collect2.texi (Collect2): Document search path behaviour
5453         when configured with --with-ld.
5454
5455 2009-05-02  Jan Hubicka  <jh@suse.cz>
5456
5457         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
5458         parameter; update callers.
5459         (coalesce_cost_edge): EH edges are costier because they needs
5460         splitting even if not critical and even more costier when there are
5461         multiple EH predecestors.
5462
5463 2009-05-02  Jan Hubicka  <jh@suse.cz>
5464
5465         * except.c (remove_eh_handler_and_replace): Handle updating after
5466         removing TRY blocks.
5467
5468 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
5469
5470         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
5471
5472 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
5473
5474         * varasm.c: Do not include c-pragma.h.
5475         * attribs.c: Do not incude c-common.h.
5476
5477 2009-05-01  Michael Matz  <matz@suse.de>
5478
5479         * calls.c (initialize_argument_information): Handle SSA names like
5480         decls with a non MEM_P DECL_RTL.
5481
5482 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
5483
5484         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
5485         * ipa-utils.c: Likewise.
5486         * ipa-type-escape.c: Likewise.
5487         * cgraphunit.c Do not include c-common.h.
5488         * ipa-pure-const.c: Likewise.
5489         * tree-if-conv.c: Likewise.
5490         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
5491         * ipa-struct-reorg.c: Likewise.
5492         * tree-nomudflap.c: Likewise.
5493         * tree-ssa-structalias.c: Likewise.
5494
5495 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
5496
5497         * store-motion.c: Many cleanups to make this pass a first-class
5498         citizen instead of an appendix to gcse load motion.  Add TODO list
5499         to make this pass faster/cleaner/better.
5500
5501         (struct ls_expr): Post gcse.c-split cleanups.
5502         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
5503         "stores" field to "avail_stores".
5504         (pre_ldst_mems): Rename to store_motion_mems.
5505         (pre_ldst_table): Rename to store_motion_mems_table.
5506         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
5507         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
5508         (ldst_entry): Rename to st_expr_entry, update users.
5509         (free_ldst_entry): Rename to free_st_expr_entry, update users.
5510         (free_ldst_mems): Rename to free_store_motion_mems, update users.
5511         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
5512         update caller.
5513         (first_ls_expr): Rename to first_st_expr, update users.
5514         (next_ls_expr): Rename to next_st_expr, update users.
5515         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
5516         fields properly for store motion instead of names inherited from load
5517         motion in gcse.c.
5518         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
5519         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
5520         are done with it.
5521
5522         (ae_kill): Rename to st_kill, update users.
5523         (ae_gen): Rename to st_avloc, update users.
5524         (transp): Rename to st_transp, update users.
5525         (pre_insert_map): Rename to st_insert_map, update users.
5526         (pre_delete_map): Rename to st_delete_map, update users.
5527         (insert_store, build_store_vectors, free_store_memory,
5528         one_store_motion_pass): Update for abovementioned changes.
5529
5530         (gcse_subst_count, gcse_create_count): Remove.
5531         (one_store_motion_pass): New statistics counters "n_stores_deleted"
5532         and "n_stores_created", local variables.
5533
5534         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
5535         use for_each_rtx.
5536
5537         (regvec, compute_store_table_current_insn): Remove.
5538         (reg_set_info, reg_clear_last_set): Remove.
5539         (compute_store_table): Use DF caches instead of local dataflow
5540         solvers.
5541
5542 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
5543
5544         * c-objc-common.c (c_tree_printer): Print identifiers with
5545         pp_identifier, not pp_string.  Mark "({anonymous})" for
5546         translation.
5547         * c-pretty-print.c (pp_c_ws_string): New.
5548         (pp_c_cv_qualifier, pp_c_type_specifier,
5549         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
5550         pp_c_storage_class_specifier, pp_c_function_specifier,
5551         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
5552         pp_c_primary_expression, pp_c_postfix_expression,
5553         pp_c_unary_expression, pp_c_shift_expression,
5554         pp_c_relational_expression, pp_c_equality_expression,
5555         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
5556         use pp_string and pp_c_ws_string in place of pp_identifier and
5557         pp_c_identifier for non-identifiers.  Mark English strings for
5558         translation.
5559         * c-pretty-print.h (pp_c_ws_string): Declare.
5560
5561 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
5562             Roland McGrath <roland@redhat.com>
5563
5564         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
5565         (ENABLE_LD_BUILDID): New configuration option.
5566         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
5567         (LINK_BUILDID_SPEC): New macro.
5568         (init_spec): If defined, prepend it between LINK_EH_SPEC and
5569         link_spec.
5570         * doc/install.texi: Document --enable-linker-build-id option.
5571         * configure: Rebuild.
5572         * config.in: Rebuild.
5573
5574 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
5575
5576         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
5577         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
5578         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
5579         MIPS_GP_SAVE_AREA_SIZE.
5580         * config/mips/mips.c (struct mips_frame_info): Update comment
5581         before arg_pointer_offset and hard_frame_pointer_offset.
5582         (mips_compute_frame_info): Update diagram before function: to
5583         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
5584         indicate the position of frame_pointer_rtx with -fstack-protector and
5585         to show args_size.  Don't allocate cprestore area for leaf functions
5586         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
5587         cprestore_size.
5588         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
5589
5590 2009-04-30  Michael Matz  <matz@suse.de>
5591
5592         PR tree-optimization/39955
5593         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
5594
5595 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
5596
5597         * ira.c (setup_cover_and_important_classes):  Use safe macro
5598         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
5599         directly.
5600         * genpreds.c (write_tm_preds_h):  Output suitable definition of
5601         REG_CLASS_FOR_CONSTRAINT.
5602
5603 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
5604
5605         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
5606         instead of an int.
5607         * bitmap.c (bitmap_descriptor): Likewise.
5608         * ggc-common.c (loc_descriptor): Likewise.
5609         * varray.c (varray_descriptor): Likewise.
5610         * vec.c (vec_descriptor): Likewise.
5611
5612 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
5613
5614         * Makefile.in (dce.o): Add $(EXCEPT_H).
5615         * dce.c: Include except.h and delete redundant vector definitions.
5616         (deletable_insn_p): Return false for non-call insns that can throw
5617         if DF is running.
5618
5619 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
5620
5621         * gcse.c (ae_gen): Remove.
5622         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
5623         and make non-static function to make it available in store-motion.c.
5624         Update call sites with search-and-replace.
5625         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
5626         extract_mentioned_regs, extract_mentioned_regs_helper,
5627         find_moveable_store, compute_store_table, load_kills_store, find_loads,
5628         store_killed_in_insn, store_killed_after, store_killed_before,
5629         build_store_vectors, insert_insn_start_basic_block, insert-store,
5630         remove_reachable_equiv_notes, replace_store_insn, delete_store,
5631         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
5632         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
5633         * store-motion.c: ...new file.  Also copy data structures from gcse.c
5634         and clean up to remove parts not used by store motion.
5635         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
5636         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
5637
5638 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5639
5640         PR target/38571
5641         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
5642         when optimizing for size.
5643
5644 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
5645
5646         * gcse.c (gcse_constant_p): Fix typo in last change.
5647
5648 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
5649
5650         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
5651
5652 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
5653
5654         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
5655
5656 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
5657
5658         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
5659         CONST_HIGH_PART result.
5660
5661 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
5662
5663         * config/avr/avr.c (initial_elimination_offset): Rename to
5664         avr_initial_elimination_offset.
5665         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
5666         change return type to bool.
5667         (avr_can_eliminate): New function.
5668         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
5669         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
5670         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
5671         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
5672         avr_initial_elimination_offset.
5673         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
5674         (avr_initial_elimination_offset): Define.
5675
5676 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
5677             Steven Bosscher  <steven@gcc.gnu.org>
5678
5679         PR rtl-optimization/39938
5680         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
5681         * cfgrtl.c: Include insn-attr.h.
5682         (rest_of_pass_free_cfg): New function.
5683         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
5684         * resource.c (init_resource_info): Remove call to df_analyze.
5685
5686 2009-04-29  Richard Guenther  <rguenther@suse.de>
5687
5688         PR target/39943
5689         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
5690         allow conversion to signed integers.
5691
5692 2009-04-29  Richard Guenther  <rguenther@suse.de>
5693
5694         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
5695         shifts of floating point vectors if the shift amount is
5696         a constant multiple of the element size.
5697
5698 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5699             Michael Matz  <matz@suse.de>
5700
5701         PR middle-end/39927
5702         PR bootstrap/39929
5703         * tree-outof-ssa.c (emit_partition_copy): New function.
5704         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
5705         insert_part_to_rtx_on_edge): Perform the partition base var
5706         copy using emit_partition_copy.
5707         (insert_value_copy_on_edge): Convert constants to the right mode.
5708         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
5709         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
5710
5711 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5712
5713         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
5714         scan backwards to try to find a constant to initialize it.
5715
5716         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
5717         insn before the loop_end instruction, don't look past labels.
5718
5719 2009-04-29  Richard Guenther  <rguenther@suse.de>
5720
5721         PR middle-end/39937
5722         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
5723         loose type conversions.
5724         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
5725         stmts only if there are no uses of its definition.
5726
5727 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5728
5729         * config/bfin/bfin.h (splitting_loops): Declare.
5730         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
5731         Reorder bit definitions to be ascending.
5732         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
5733         * config/bfin/bfin.c (splitting_loops): New variable.
5734         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
5735         (struct loop_info): Remove members INIT and LOOP_INIT.
5736         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
5737         the LSETUP sequence.  Allow LC to be loaded from any register, but
5738         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
5739         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
5740         set to 1.
5741         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
5742         of reload_completed.
5743
5744         From Jie Zhang:
5745         * config/bfin/bfin.md (movsi_insn): Refine constraints.
5746
5747 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
5748
5749         * Makefile.in (PLUGIN_VERSION_H): New.
5750         (OBJS-common): Remove plugin-version.o.
5751         (plugin.o): Depend on (PLUGIN_VERSION_H).
5752         (plugin-version.o): Remove.
5753         * configure: Regenerate
5754         * configure.ac: Create plugin-version.h.
5755         * gcc-plugin.h (plugin_gcc_version): Remove.
5756         (plugin_default_version_check): Change signature.
5757         * plugin-version.c: Remove.
5758         * plugin.c: Include plugin-version.h.
5759         (str_plugin_gcc_version_name): Remove.
5760         (try_init_one_plugin): Pass gcc version to plugin_init.
5761         (plugin_default_version_check): Both gcc and plugin versions are now
5762         arguments.
5763
5764 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5765         
5766         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
5767         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
5768         Remove special case testing for last insn of inner loops. Don't fail
5769         if the loop ends with a jump, emit an extra nop instead.
5770
5771         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
5772         DREGS rather than comparing directly.  Remove code that tries to
5773         account for latencies.
5774
5775 2009-04-29  Richard Guenther  <rguenther@suse.de>
5776
5777         PR tree-optimization/39941
5778         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
5779         eliminating an indirect call.
5780
5781 2009-04-29  Richard Guenther  <rguenther@suse.de>
5782
5783         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
5784         parameter.  Allow invariants as base if !require_lvalue.
5785         (verify_gimple_assign_single): Adjust.
5786
5787 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
5788
5789         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
5790         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
5791         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
5792         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
5793         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
5794         a VEC_SELECT.
5795         * config/bfin/bfin.c (bfin_expand_builtin,
5796         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
5797
5798 2009-04-28  Richard Guenther  <rguenther@suse.de>
5799
5800         * tree-vect-loop.c (get_initial_def_for_induction): Use
5801         correct types for pointer increment.
5802
5803 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5804
5805         * toplev.c (print_version): Update GMP version string calculation.
5806
5807 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
5808
5809         PR rtl-optimization/39938
5810         * resource.c (init_resource_info): Add call to df_analyze.
5811
5812 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
5813
5814         * config/alpha/alpha.md (usegp): Cast the result of
5815         alpha_find_lo_sum_using_gp to enum attr_usegp.
5816         * config/alpha/alpha.c (override_options): Remove end-of-structure
5817         marker element from cpu_table.  Use array size of cpu_table to handle
5818         -mcpu and -mtune options.
5819         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
5820
5821 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
5822
5823         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
5824         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
5825         tune_32 and tune_64.
5826         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
5827         support on PowerPC.
5828         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
5829         * config/rs6000/option-defaults.h: ... here.  New file.
5830         (OPT_64, OPT_32): Define.
5831         (MASK_64BIT): Define to 0 if not already defined.
5832         (OPT_ARCH64, OPT_ARCH32): Define.
5833         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
5834         and tune_64.
5835
5836 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5837
5838         * config/arm/arm.c (arm_override_options): Emit error on using
5839         fpa with AAPCS.
5840
5841 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
5842
5843         PR rtl-optimization/39914
5844         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
5845         registers for allocnos created from user-defined variables only
5846         when not optimizing.
5847
5848 2009-04-28  Richard Guenther  <rguenther@suse.de>
5849
5850         PR middle-end/39937
5851         * fold-const.c (fold_binary): Use distribute_real_division only
5852         on float types.
5853
5854 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
5855
5856         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
5857         add hpux-stdint.h to tm_file.
5858         (hppa[12]*-*-hpux11*): Ditto.
5859         (ia64*-*-hpux*): Ditto.
5860         * config/hpux-stdint.h: New.
5861         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
5862         __STDC_EXT__ for all compiles.
5863         * config/pa/pa-hpux.h: Ditto.
5864         * config/pa/pa-hpux10.h: Ditto.
5865         * config/pa/pa-hpux11.h: Ditto.
5866
5867 2009-04-28  Catherine Moore  <clm@codesourcery.com>
5868
5869         * debug.h (set_name): Add comment.
5870
5871 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
5872
5873         PR target/39929
5874         * config/darwin.c (machopic_gen_offset): Check
5875         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
5876         * config/arm/arm.c (require_pic_register): Likewise.
5877
5878 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
5879
5880         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
5881         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
5882         m32c_promote_prototypes): Delete.
5883
5884 2009-04-28  Michael Matz  <matz@suse.de>
5885
5886         PR middle-end/39922
5887         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
5888         constants.
5889
5890 2009-04-28  Richard Guenther  <rguenther@suse.de>
5891
5892         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
5893
5894 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5895
5896         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
5897         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
5898         * config/arm/arm-tune.md: Regenerate.
5899
5900 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
5901
5902         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
5903         block if there are complex incoming edges.
5904         (sel_merge_blocks): Remove useless assert.
5905         (sel_redirect_edge_and_branch): Check that edge was redirected.
5906         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
5907         (sel_find_rgns): Delete declaration.
5908         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
5909         the region when it is not a preheader.
5910
5911 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
5912
5913         PR c/39323
5914         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
5915
5916 2009-04-28  Richard Guenther  <rguenther@suse.de>
5917
5918         * tree.h (SSA_NAME_VALUE): Remove.
5919         (struct tree_ssa_name): Remove value_handle member.
5920         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
5921         array for jump threading.
5922         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
5923         SSA_NAME_VALUEs.
5924         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
5925         * tree-flow.h (threadedge_initialize_values): Declare.
5926         (threadedge_finalize_values): Likewise.
5927         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
5928         (SSA_NAME_VALUE): Define.
5929         (threadedge_initialize_values): New function.
5930         (threadedge_finalize_values): Likewise.
5931         * tree-ssa-dom.c (ssa_name_values): New global variable.
5932         (SSA_NAME_VALUE): Define.
5933         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
5934
5935 2009-04-28  Ira Rosen  <irar@il.ibm.com>
5936
5937         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
5938         Use REPORT_VECTORIZED_LOCATIONS instead 
5939         REPORT_VECTORIZED_LOOPS.
5940         * tree-vectorizer.c (vect_verbosity_level): Make static.
5941         (vect_loop_location): Rename to vect_location.
5942         (vect_set_verbosity_level): Update comment.
5943         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
5944         and vect_location.
5945         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
5946         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
5947         instead REPORT_UNVECTORIZED_LOOPS.
5948         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
5949         and vect_loop_def to vect_external_def and vect_internal_def.
5950         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
5951         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
5952         REPORT_UNVECTORIZED_LOCATIONS.
5953         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
5954         and vect_used_in_loop and to vect_unused_in_scope and 
5955         vect_used_in_scope.
5956         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
5957         (vect_verbosity_level): Remove declaration.
5958         (vect_analyze_operations): Likewise.
5959         (vect_analyze_stmt): Declare.
5960         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
5961         REPORT_UNVECTORIZED_LOCATIONS.
5962         (vect_get_loop_niters): Fix indentation.
5963         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
5964         (vect_analyze_loop_operations): New function.
5965         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
5966         vect_analyze_operations.
5967         (vect_is_simple_reduction): Use new names.
5968         (vectorizable_live_operation, vect_transform_loop): Likewise.
5969         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
5970         to specify whether the data references can be a part of interleaving
5971         chain.
5972         (vect_analyze_data_ref_dependence): Use new names.
5973         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
5974         (vect_create_addr_base_for_vector_ref): Remove redundant code.
5975         * tree-vect-patterns.c (widened_name_p): Use new names.
5976         (vect_recog_dot_prod_pattern): Likewise.
5977         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
5978         (process_use, vect_mark_stmts_to_be_vectorized, 
5979         vect_model_simple_cost, vect_model_store_cost,
5980         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
5981         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
5982         vectorizable_operation, vectorizable_type_demotion,
5983         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
5984         vectorizable_condition): Likewise.
5985         (vect_analyze_operations): Split into vect_analyze_loop_operations
5986         and ...
5987         (vect_analyze_stmt): ... new function.
5988         (new_stmt_vec_info): Use new names.
5989         (vect_is_simple_use): Use new names and fix comment.
5990         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
5991         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
5992
5993 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
5994
5995         PR target/39911
5996         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
5997         and integer modes for x87 operands.  Do not ICE for unsupported size,
5998         generate error instead.  Generate error for unsupported operand types.
5999         ['z']: Do not handle HImode memory operands specially.  Warning
6000         for floating-point operands.  Fallthru to 'Z' for unsupported operand
6001         types.  Do not ICE for unsupported size, generate error instead.
6002         (output_387_binary_op): Use %Z to output operands.
6003         (output_fp_compare): Ditto.
6004         (output_387_reg_move): Ditto.
6005
6006 2009-04-28  Ben Elliston  <bje@au.ibm.com>
6007
6008         PR c++/35652
6009         Revert:
6010
6011         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6012
6013         * builtins.c (c_strlen): Do not warn here.
6014         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
6015         * c-common.c (pointer_int_sum): Take an explicit location.
6016         Warn about offsets out of bounds.
6017         * c-common.h (pointer_int_sum): Adjust declaration.
6018
6019 2009-04-27  Ian Lance Taylor  <iant@google.com>
6020
6021         * collect2.c (is_ctor_dtor): Change type of ret field in struct
6022         names to symkind.
6023         * dce.c (run_fast_df_dce): Change type of old_flags to int.
6024         * df-core.c (df_set_flags): Change return type to int.  Change
6025         type of old_flags to int.
6026         (df_clear_flags): Likewise.
6027         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
6028         (df_get_conditional_uses): Likewise.
6029         * df.h (df_set_flags, df_clear_flags): Update declarations.
6030         * dwarf2out.c (struct indirect_string_node): Change type of form
6031         field to enum dwarf_form.
6032         (AT_string_form): Change return type to enum dwarf_form.
6033         * fixed-value.c (fixed_compare): Add cast to enum type.
6034         * fwprop.c (update_df): Change 0 to VOIDmode.
6035         * gensupport.c: Change 0 to UNKNOWN.
6036         * gimple.h (gimple_cond_code): Add cast to enum type.
6037         * haifa-sched.c (reemit_notes): Add cast to enum type.
6038         * hooks.c (hook_int_void_no_regs): Remove function.
6039         * hooks.h (hook_int_void_no_regs): Remove declaration.
6040         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
6041         * predict.c (combine_predictions_for_insn): Add casts to enum type.
6042         * real.c (real_arithmetic): Add cast to enum type.
6043         (real_compare): Likewise.
6044         * target.h (struct gcc_target): Change return type of
6045         branch_target_register_class to enum reg_class.
6046         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
6047         default_branch_target_register_class.
6048         * targhooks.c (default_branch_target_register_class): New function.
6049         * targhooks.h (default_branch_target_register_class): Declare.
6050         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
6051         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
6052         cast to int.
6053         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
6054         ERROR_MARK.
6055         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
6056         vect_uninitialized_def.  Change 0 to ERROR_MARK.
6057         * tree-vect-stmts.c (supportable_widening_operation): Don't
6058         initialize icode1 and icode2.
6059         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
6060         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
6061         and to STD_C89.
6062         (cmn_err_flag_specs): Change 0 to STD_C89.
6063         (cmn_err_char_table): Likewise.
6064         * config/arm/arm.c (get_arm_condition_code): Change type of code
6065         to enum arm_cond_code.
6066         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
6067         (IWMMXT_BUILTIN2): Likewise.
6068         (neon_builtin_type_bits): Don't define typedef.
6069         (neon_builtin_datum): Change type of bits field to int.
6070         (arm_expand_neon_args): Add cast to enum type.
6071         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
6072         TLS_MODEL_NONE.
6073         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
6074         casts to enum type.
6075         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
6076         MIPS_FP_COND_f.
6077         * config/mips/mips.md (jal_macro): Return enum constant.
6078         (single_insn): Likewise.
6079         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
6080         CODE_FOR_nothing.
6081         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
6082         casts to enum type.
6083         * config/s390/s390.c (s390_tune_flags): Change type to int.
6084         (s390_arch_flags): Likewise.
6085         (s390_handle_arch_option): Change flags field of struct pta to int.
6086         * config/s390/s390.h (s390_tune_flags): Update declaration.
6087         (s390_arch_flags): Likewise.
6088         * config/sh/sh.c (prepare_move_operands): Compare
6089         tls_symbolic_operand result with enum constant.
6090         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
6091         (sh_expand_prologue): Add cast to enum type.
6092         (sh_expand_epilogue): Likewise.
6093         (tls_symbolic_operand): Change return type to enum tls_model.
6094         (fpscr_set_from_mem): Add cast to enum type.
6095         (legitimize_pic_address): Compare tls_symbolic_operand result with
6096         enum constant.
6097         (sh_target_reg_class): Change return type to enum reg_class.
6098         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
6099         PROCESSOR_xxx.
6100         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
6101         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
6102         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
6103         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
6104         (delayed_branch, tls_call_delay): Likewise.
6105         (eligible_for_sibcall_delay): Likewise.
6106         (eligible_for_return_delay): Likewise. 
6107         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
6108         (spu_expand_builtin_1): Likewise.
6109
6110         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
6111         for all types of conversions.
6112         (output_init_element): Issue -Wc++-compat warning if needed when
6113         initializing a bitfield with enum type.
6114         * c-parser.c (c_parser_expression): Set original_type to
6115         original_type of right hand operand of comman operator.
6116
6117 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6118
6119         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
6120         grammar nits.
6121         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
6122         * doc/cpp.texi (Standard Predefined Macros)
6123         (Implementation-defined behavior): Likewise.
6124         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
6125         * doc/gimple.texi (GIMPLE Exception Handling)
6126         (@code{GIMPLE_ASSIGN}): Likewise.
6127         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
6128         * doc/invoke.texi (Warning Options, Optimize Options)
6129         (AVR Options, Darwin Options): Likewise.
6130         (Optimize Options): Reformulate -fwhole-program description.
6131         * doc/loop.texi (Lambda): Likewise.
6132         * doc/md.texi (Output Template, Define Constraints)
6133         (Standard Names, Insn Splitting): Likewise.
6134         * doc/options.texi (Option properties): Likewise.
6135         * doc/passes.texi (Tree-SSA passes): Likewise.
6136         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
6137         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
6138         (File Names and DBX): Likewise.
6139         * doc/trouble.texi (Incompatibilities): Likewise.
6140
6141 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
6142
6143         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
6144         instruction is correct.
6145
6146 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
6147
6148         Allow non-constant arguments to conversion intrinsics.
6149         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
6150         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
6151         * spu.c (print_operand): Handle 'v' and 'w'.
6152         (exp2_immediate_p, spu_gen_exp2): Define.
6153         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
6154         spu_convtf_1): Update parameter descriptions.
6155         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
6156         * constraints.md ('v', 'w'): New.
6157         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
6158         Remove.
6159         (i2f, I2F): New define_mode_attr.
6160         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
6161         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
6162         fixuns_truncv4sfv4si2):  Update to use mode attribute.
6163         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
6164         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
6165         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
6166         patterns for combine.
6167
6168 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
6169
6170         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
6171         (cprop, hoist, pre, store_motion): New debug counters.
6172         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
6173         is not an RTL pass anymore.
6174         (pass_profiling): Remove extern decl for pass removed in 2005.
6175         (pass_gcse, pass_jump_bypass): Remove.
6176         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
6177         to 0 for clean state.
6178         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
6179         * cse.c (gate_handle_cse_after_global_opts,
6180         rest_of_handle_cse_after_global_opts): New functions.
6181         (pass_cse_after_global_opts): New pass, does local CSE.
6182         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
6183         (TV_CPROP): New timevar.
6184         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
6185         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
6186         (gcse_main, recompute_all_luids): Remove.
6187         (compute_hash_table_work): Call max_reg_num instead of reading
6188         max_gcse_regno.
6189         (cprop_jump): Don't set run_jump_opt_after_gcse.
6190         (constprop_register): Always allow to alter jumps.
6191         (cprop_insn): Likewise.
6192         (do_local_cprop): Likewise.
6193         (local_cprop_pass): Likewise.  Return non-zero if something changed.
6194         (cprop): Remove function, fold interesting bits into one_cprop_pass.
6195         (find_implicit_sets): Add note about missed optimization opportunity.
6196         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
6197         pass_rtl_cprop execute function.
6198         Don't bother tracking the pass number, each pass gets its own dumpfile
6199         now anyway.
6200         Always allow to alter jumpsand bypass jumps.
6201         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
6202         will just find no suitable set.
6203         (pre_edge_insert): Fix dumping, this function is for PRE only.
6204         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
6205         pass_rtl_pre execute function.
6206         (hoist_code): Return non-zero if something changed.  Keep track of
6207         substitutions and insertions for statistics gathering similar to PRE.
6208         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
6209         called from the pass_rtl_hoist execute function.  Show pass statistics.
6210         (compute_store_table): Use max_reg_num directly instead of using the
6211         formerly global max_gcse_regno.
6212         (build_store_vectors): Likewise.
6213         (replace_store_insn): Fix dumping.
6214         (store_motion): Rename to ...
6215         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
6216         pass, called from the pass_rtl_store_motion execute function.  Keep
6217         track of substitutions and insertions for statistics gathering similar
6218         to PRE.
6219         (bypass_jumps): Remove, fold interesting bits into ...
6220         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
6221         from the pass_rtl_cprop execute function.
6222         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
6223         pass_jump_bypass): Remove.
6224         (gate_handle_gcse, rest_of_handle_gcse): Remove.
6225         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
6226         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
6227         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
6228         (gate_rtl_store_motion, execute_rtl_store_motion,
6229         pass_rtl_store_motion): New.
6230         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
6231         make it clear that -fcse-skip-blocks is a no-op for backward compat.
6232         * passes.c (init_optimization_passes): Remove pass_gcse and
6233         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
6234         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
6235         instead of pass_jump_bypass.
6236
6237 2009-04-27  Richard Guenther  <rguenther@suse.de>
6238
6239         PR middle-end/39928
6240         * gimplify.c (gimplify_expr): If we are required to create
6241         a temporary make sure it ends up as register.
6242
6243 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
6244
6245         PR target/39903
6246         * config/i386/i386.c (construct_container): Don't call
6247         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
6248         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
6249
6250 2009-04-27  Michael Matz  <matz@suse.de>
6251
6252         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
6253         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
6254         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
6255         (dump_replaceable_exprs): Take a bitmap.
6256         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
6257         array.
6258         (expand_gimple_basic_block): Likewise.
6259         * tree-ssa-ter.c (struct temp_expr_table_d): Make
6260         replaceable_expressions member a bitmap.
6261         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
6262         (mark_replaceable): Likewise.
6263         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
6264         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
6265
6266 2009-04-27  Richard Guenther  <rguenther@suse.de>
6267
6268         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
6269         (verify_stmts): Dispatch to gimple/type verification code.
6270         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
6271         issue with call argument types.
6272
6273 2009-04-27  Michael Matz  <matz@suse.de>
6274
6275         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
6276         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
6277         to above.
6278
6279 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
6280             Eric Botcazou  <ebotcazou@adacore.com>
6281
6282         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
6283         a label's basic block.
6284         (mark_target_live_regs): Tidy and rework obsolete comments.
6285         Change back DF problem to LIVE.  If a label starts a basic block,
6286         assume that all registers that used to be live then still are.
6287         (init_resource_info): If a label starts a basic block, set its
6288         BLOCK_FOR_INSN accordingly.
6289         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
6290
6291 2009-04-27  Richard Guenther  <rguenther@suse.de>
6292
6293         * tree-flow-inline.h (function_ann): Remove.
6294         (get_function_ann): Likewise.
6295         * tree-dfa.c (create_function_ann): Remove.
6296         * tree-flow.h (struct static_var_ann_d): Remove.
6297         (struct function_ann_d): Likewise.
6298         (union tree_ann_d): Remove fdecl member.
6299         (function_ann_t): Remove.
6300         (function_ann, get_function_ann, create_function_ann): Remove
6301         declarations.
6302
6303 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
6304
6305         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
6306
6307 2009-04-27  Jan Hubicka  <jh@suse.cz>
6308
6309         * ipa-pure-const.c (struct funct_state_d): New fields
6310         state_previously_known, looping_previously_known; remove
6311         state_set_in_source.
6312         (analyze_function): Use new fields.
6313         (propagate): Avoid assumption that state_set_in_source imply
6314         nonlooping.
6315
6316         * tree-ssa-loop-niter.c (finite_loop_p): New function.
6317         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
6318         * cfgloop.h (finite_loop_p): Declare.
6319
6320 2009-04-26  Michael Matz  <matz@suse.de>
6321
6322         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
6323
6324 2009-04-26  Michael Matz  <matz@suse.de>
6325
6326         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
6327         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
6328         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
6329         pass_mark_used_blocks): Remove.
6330         * tree-optimize.c (pass_free_datastructures,
6331         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
6332         * passes.c (init_optimization_passes): Don't call
6333         pass_mark_used_blocks, remove dead code.
6334
6335 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
6336
6337         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
6338         * tree-ssa-live.h (register_ssa_partition): Likewise.
6339
6340 2009-04-26  Michael Matz  <matz@suse.de>
6341
6342         Expand from SSA.
6343         * builtins.c (fold_builtin_next_arg): Handle SSA names.
6344         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
6345         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
6346         SSA names. 
6347         (compare_pairs): Swap cost comparison.
6348         (coalesce_ssa_name): Don't use change_partition_var.
6349         * tree-nrv.c (struct nrv_data): Add modified member.
6350         (finalize_nrv_r): Set it.
6351         (tree_nrv): Use it to update statements.
6352         (pass_nrv): Require PROP_ssa.
6353         * tree-mudflap.c (mf_decl_cache_locals,
6354         mf_build_check_statement_for): Use make_rename_temp.
6355         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
6356         * alias.c (find_base_decl): Handle SSA names.
6357         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
6358         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
6359         * rtl.h (set_reg_attrs_for_parm): Declare.
6360         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
6361         to "optimized", remove unused locals at finish.
6362         (execute_free_datastructures): Make global, call
6363         delete_tree_cfg_annotations.
6364         (execute_free_cfg_annotations): Don't call
6365         delete_tree_cfg_annotations.
6366
6367         * ssaexpand.h: New file.
6368         * expr.c (toplevel): Include ssaexpand.h.
6369         (expand_assignment): Handle SSA names the same as register variables.
6370         (expand_expr_real_1): Expand SSA names.
6371         * cfgexpand.c (toplevel): Include ssaexpand.h.
6372         (SA): New global variable.
6373         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
6374         (SSAVAR): New macro.
6375         (set_rtl): New helper function.
6376         (add_stack_var): Deal with SSA names, use set_rtl.
6377         (expand_one_stack_var_at): Likewise.
6378         (expand_one_stack_var): Deal with SSA names.
6379         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
6380         before unique numbers.
6381         (expand_stack_vars): Use set_rtl.
6382         (expand_one_var): Accept SSA names, add asserts for them, feed them
6383         to above subroutines.
6384         (expand_used_vars): Expand all partitions (without default defs),
6385         then only the local decls (ignoring those expanded already).
6386         (expand_gimple_cond): Remove edges when jumpif() expands an
6387         unconditional jump.
6388         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
6389         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
6390         SSA name.
6391         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
6392         members of SA; deal with PARM_DECL partitions here; expand
6393         all PHI nodes, free tree datastructures and SA.  Commit instructions
6394         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
6395         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
6396         info and statements at start, collect garbage at finish.
6397         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
6398         (VAR_ANN_PARTITION) Remove.
6399         (change_partition_var): Don't declare.
6400         (partition_to_var): Always return SSA names.
6401         (var_to_partition): Only accept SSA names.
6402         (register_ssa_partition): Only check argument.
6403         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
6404         member.
6405         (delete_var_map): Don't free it.
6406         (var_union): Only accept SSA names, simplify.
6407         (partition_view_init): Mark only useful SSA names as used.
6408         (partition_view_fini): Only deal with SSA names.
6409         (change_partition_var): Remove.
6410         (dump_var_map): Use ssa_name instead of partition_to_var member.
6411         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
6412         basic blocks.
6413         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
6414         (struct _elim_graph): New member const_dests; nodes member vector of
6415         ints.
6416         (set_location_for_edge): New static helper.
6417         (create_temp): Remove.
6418         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
6419         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
6420         (new_elim_graph): Allocate const_dests member.
6421         (clean_elim_graph): Truncate const_dests member.
6422         (delete_elim_graph): Free const_dests member.
6423         (elim_graph_size): Adapt to new type of nodes member.
6424         (elim_graph_add_node): Likewise.
6425         (eliminate_name): Likewise.
6426         (eliminate_build): Don't take basic block argument, deal only with
6427         partition numbers, not variables.
6428         (get_temp_reg): New static helper.
6429         (elim_create): Use it, deal with RTL temporaries instead of trees.
6430         (eliminate_phi): Adjust all calls to new signature.
6431         (assign_vars, replace_use_variable, replace_def_variable): Remove.
6432         (rewrite_trees): Only do checking.
6433         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
6434         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
6435         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
6436         contains_tree_r, MAX_STMTS_IN_LATCH,
6437         process_single_block_loop_latch, analyze_edges_for_bb,
6438         perform_edge_inserts): Remove.
6439         (expand_phi_nodes): New global function.
6440         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
6441         functions, initialize new parameter, remember partitions having a
6442         default def.
6443         (finish_out_of_ssa): New global function.
6444         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
6445         don't reset in_ssa_p here, don't disable TER when mudflap.
6446         (pass_del_ssa): Remove.
6447         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
6448         partition members.
6449         (execute_free_datastructures): Declare.
6450         * Makefile.in (SSAEXPAND_H): New variable.
6451         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
6452         * basic-block.h (commit_one_edge_insertion): Declare.
6453         * passes.c (init_optimization_passes): Move pass_nrv and
6454         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
6455         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
6456         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
6457         (redirect_branch_edge): Deal with super block when expanding, split
6458         out jump patching itself into ...
6459         (patch_jump_insn): ... here, new static helper.
6460
6461 2009-04-26  Michael Matz  <matz@suse.de>
6462
6463         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
6464         beyond num_ssa_names.
6465         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
6466         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
6467
6468 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
6469
6470         PR inline-asm/39543
6471         * fwprop.c (forward_propagate_asm): New function.
6472         (forward_propagate_and_simplify): Propagate also into __asm, if it
6473         doesn't increase the number of referenced registers.
6474
6475         PR c/39889
6476         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
6477
6478 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
6479
6480         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
6481         note_nonlocal_vla_type for nonlocal VLAs.
6482         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
6483         contains_remapped_vars, remap_vla_decls): New functions.
6484         (convert_nonlocal_reference_stmt): If not optimizing, call
6485         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
6486         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
6487         if it wasn't found in var_map.
6488         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
6489         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
6490         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
6491         declare_vars.
6492         * gimplify.c (nonlocal_vlas): New variable.
6493         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
6494         referenced VLAs.
6495         (gimplify_body): Create and destroy nonlocal_vlas.
6496
6497         * dwarf2out.c (loc_descr_plus_const): New function.
6498         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
6499         mem_loc_descriptor, loc_descriptor_from_tree_1,
6500         descr_info_loc, gen_variable_die): Use it.
6501
6502         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
6503         !TREE_STATIC VAR_DECLs.
6504         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
6505         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
6506         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
6507         DECL_BY_REFERENCE is valid.
6508         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
6509         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
6510         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
6511         Copy DECL_BY_REFERENCE.
6512         (struct nesting_copy_body_data): New type.
6513         (nesting_copy_decl): New function.
6514         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
6515         if they have variable length.
6516
6517 2009-04-26  Michael Matz  <matz@suse.de>
6518
6519         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
6520         mark new temporaries for renaming.
6521
6522 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
6523
6524         PR c/39581
6525         * c-decl.c (global_bindings_p): Return negative value.
6526         (c_variable_size): New.  Based on variable_size from
6527         stor-layout.c.
6528         (grokdeclarator): Call c_variable_size not variable_size.
6529
6530 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
6531
6532         * config/i386/i386.c (print_operand) ['z']: Fix typo.
6533
6534 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
6535
6536         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
6537         Redefine it to just use mingw/include.
6538         (ASM_SPEC): Rules for -m32 and -m64.
6539         (LINK_SPEC): Use Likewise.
6540         (SPEC_32): New define.
6541         (SPEC_64): Likewise.
6542         (SUB_LINK_SPEC): Likewise.
6543         (MULTILIB_DEFAULTS): New define.
6544         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
6545         Add multilib options.
6546         (MULTILIB_DIRNAMES): Likewise.
6547         (MULTILIB_OSDIRNAMES): Likewise.
6548         (LIBGCC): Likewise.
6549         (INSTALL_LIBGCC): Likewise.
6550
6551 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
6552
6553         PR c/39556
6554         * c-tree.h (enum c_inline_static_type): New.
6555         (record_inline_static): Declare.
6556         * c-decl.c (struct c_inline_static, c_inline_statics,
6557         record_inline_static, check_inline_statics): New.
6558         (pop_file_scope): Call check_inline_statics.
6559         (start_decl): Call record_inline_static instead of pedwarning
6560         directly for static in inline function.
6561         * c-typeck.c (build_external_ref): Call record_inline_static
6562         instead of pedwarning directly for static referenced in inline
6563         function.
6564
6565 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
6566
6567         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
6568         not new but only being rescanned.
6569         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
6570         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
6571         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
6572         record_set_info, compute_set, grealloc): Remove.
6573         (recompute_all_luids): New function.
6574         (gcse_main): Don't compute sets, and don't do related memory
6575         allocations/free-ing.  If something changed before the end of the
6576         pass, update LUIDs using recompute_all_luids.
6577         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
6578         (free_gcse_mem): Don't free it either.
6579         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
6580         Use the df insn LUIDs.
6581         (load_killed_in_block): Likewise.
6582         (compute_hash_table_work): Don't compute reg_set_in_block.
6583         (compute_transp): Use DF_REG_DEF_CHAINs.
6584         (local_cprop_pass): Don't use compute_sets and related functions.
6585         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
6586         Use get_max_uid() instead of max_cuid.
6587         (insert_insn_end_basic_block, pre_insert_copy_insn,
6588         update_ld_motion_stores): Don't try to
6589         keep reg_set tables up to date.
6590         (pre_insert_copies): Use df insn LUIDs.
6591         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
6592         (reg_set_info): Don't use extra bitmap argument.
6593         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
6594         information to compute regs_set_in_block.
6595         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
6596         (bypass_jumps): Don't use compute_sets and friends.
6597
6598 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6599
6600         PR testsuite/39710
6601         * opts.c (undocumented_msg): Do not leave blank even with
6602         ENABLE_CHECKING.
6603
6604 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
6605
6606         * c-decl.c (build_enumerator): Allow values folding to integer
6607         constants but not integer constant expressions with a pedwarn if
6608         pedantic.
6609
6610 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
6611
6612         PR c/39582
6613         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
6614         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
6615         type is an integer constant.
6616
6617 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
6618
6619         PR target/39897
6620         * config/i386/i386.c (print_operand) ['z']: Revert handling of
6621         HImode operands.
6622
6623 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
6624
6625         PR c/39564
6626         * c-decl.c (grokdeclarator): Diagnose declarations of functions
6627         with variably modified return type and no storage class
6628         specifiers, except for the case of nested functions.  Distinguish
6629         extern declarations of functions with variably modified return
6630         types from those of objects with variably modified types.
6631
6632 2009-04-25  Jan Hubicka  <jh@suse.cz>
6633
6634         * tree.c (list_equal_p): New function.
6635         * tree.h (list_equal_p): Declare.
6636         * coretypes.h (edge_def, edge, const_edge, basic_block_def
6637         basic_block_def, basic_block, const_basic_block): New.
6638         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
6639         (redirect_eh_edge): New function.
6640         (make_eh_edge_update_phi): EH edges are not abnormal.
6641         * except.c: Include tree-flow.h.
6642         (list_match): New function.
6643         (eh_region_replaceable_by_p): New function.
6644         (replace_region): New function.
6645         (hash_type_list): New function.
6646         (hash_eh_region): New function.
6647         (eh_regions_equal_p): New function.
6648         (merge_peers): New function.
6649         (remove_unreachable_regions): Verify EH tree when checking;
6650         merge peers.
6651         (copy_eh_region_1): New function.
6652         (copy_eh_region): New function.
6653         (push_reachable_handler): New function.
6654         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
6655         regions without label but with live RESX.
6656         * except.h (redirect_eh_edge_to_label): New.
6657         * tree-flow.h (redirect_eh_edge): New.
6658         * coretypes.h (edge_def, edge, const_edge, basic_block_def
6659         basic_block_def, basic_block, const_basic_block): Remove.
6660         * Makefile.in (except.o): Add dependency on tree-flow.h
6661         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
6662         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
6663         Remove.
6664
6665 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
6666
6667         PR bootstrap/39645
6668         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
6669         on the destination of memcpy.
6670
6671 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
6672
6673         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
6674         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
6675         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
6676
6677 2009-04-25  Jan Hubicka  <jh@suse.cz>
6678
6679         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
6680         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
6681         to be reached by different label than left.
6682         (update_eh_edges): Update comment; remove edge_to_remove if possible
6683         and return true if suceeded.
6684         (cleanup_empty_eh): Accept sharing map; handle shared regions.
6685         (cleanup_eh): Compute sharing map.
6686         * except.c (remove_eh_handler_and_replace): Add argument if we should
6687         update regions.
6688         (remove_unreachable_regions): Update for label sharing.
6689         (label_to_region_map): Likewise.
6690         (get_next_region_sharing_label): New function.
6691         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
6692         prev_try pointers.
6693         (remove_eh_handler): Update.
6694         (remove_eh_region_and_replace_by_outer_of): New function.
6695         * except.h (struct eh_region): Add next_region_sharing_label.
6696         (remove_eh_region_and_replace_by_outer_of,
6697         get_next_region_sharing_label): Declare.
6698         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
6699
6700 2009-04-25  Jan Hubicka  <jh@suse.cz>
6701
6702         * tree-cfg.c (split_critical_edges): Split also edges where we can't
6703         insert code even if they are not critical.
6704
6705 2009-04-25  Jan Hubicka  <jh@suse.cz>
6706
6707         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
6708         (gimple_can_remove_branch_p): EH edges won't remove branch by
6709         redirection.
6710         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
6711         updating of non-abnormal EH edges.
6712         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
6713         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
6714         (split_critical_edges): Split also edges where emitting code on them
6715         will lead to splitting later.
6716
6717 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
6718             H.J. Lu  <hongjiu.lu@intel.com>
6719
6720         PR target/39590
6721         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
6722         the configured assembler supports fildq and fistpq mnemonics.
6723         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
6724         * configure: Regenerated.
6725         * config.in: Ditto.
6726
6727         * config/i386/i386.c (print_operand): Handle 'Z'.
6728         ['z']: Remove handling of special fild/fist suffixes.
6729         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
6730         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
6731         suffix of fild insn.
6732         (*floatsi<mode>2_vector_mixed): Ditto.
6733         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
6734         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
6735         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
6736         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
6737         * config/i386/gas.h (GAS_MNEMONICS): Remove.
6738
6739 2009-04-25  Ben Elliston  <bje@au.ibm.com>
6740  
6741         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
6742         the source of a set operation.
6743
6744 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
6745
6746         * target.h (struct gcc_target): Add case_values_threshold field.
6747         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
6748         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
6749         * targhooks.c (default_case_values_threshold): New function.
6750         * targhooks.h (default_case_values_threshold): Declare function.
6751         * stmt.c (expand_case): Use case_values_threshold target hook.
6752         * expr.h (case_values_threshold): Remove declartation.
6753         * expr.c (case_values_threshold): Remove function.
6754         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
6755
6756         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
6757         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
6758         (avr_case_values_threshold): Declare as static.
6759         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
6760
6761         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
6762         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
6763         (mn10300_case_values_threshold): New function.
6764
6765 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
6766
6767         * ira.c (setup_cover_and_important_classes): Add enum cast.
6768
6769 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
6770
6771         * genpreds.c (write_enum_constraint_num): Output definition of
6772         CONSTRAINT_NUM_DEFINED_P macro.
6773         * ira.c (setup_cover_and_important_classes): Use
6774         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
6775         
6776 2009-04-24  DJ Delorie  <dj@redhat.com>
6777
6778         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
6779         __SH2A_SINGLE_ONLY__ also.
6780
6781 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
6782
6783         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
6784         (movdf_internal): Ditto.
6785         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
6786         SFmode and DFmode constants.
6787         (ia64_print_operand): Add 'G' format for printing
6788         floating point constants.
6789
6790 2009-04-24  Richard Guenther  <rguenther@suse.de>
6791
6792         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
6793         from unsigned additions.
6794
6795 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
6796
6797         * c-typeck.c (set_init_index): Allow array designators that are
6798         not integer constant expressions with a pedwarn if pedantic.
6799
6800 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
6801
6802         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
6803         zero if no overlap in nonzero bits between the operands.
6804
6805 2009-04-24  Ian Lance Taylor  <iant@google.com>
6806
6807         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
6808         (record_dead_and_set_regs): Likewise.
6809         * df.h (struct df_mw_hardreg): Change flags field to int.
6810         (struct df_base_ref): Likewise.
6811         (struct df): Change changeable_flags field to int.
6812         * df-scan.c (df_defs_record): Change clobber_flags to int.
6813         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
6814         constants rather than #define macros.
6815         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
6816         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
6817         (enum dwarf_calling_convention): Likewise.
6818         (enum dwarf_line_number_x_ops): Likewise.
6819         (enum dwarf_call_frame_info): Likewise.
6820         (enum dwarf_source_language): Likewise.
6821         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
6822         (add_calling_convention_attribute): Likewise.
6823         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
6824         (combine_comparisons): Change compcode to int.  Add cast to enum type.
6825         * genrecog.c (maybe_both_true_2): Change c to int.
6826         (write_switch): Likewise.  Add cast to enum type.
6827         * gimplify.c (gimplify_omp_for): Handle return values from
6828         gimplify_expr using MIN rather than bitwise or.
6829         (gimplify_expr): Add cast to enum type.
6830         * ipa-prop.c (update_jump_functions_after_inlining): Change
6831         IPA_BOTTOM to IPA_JF_UNKNOWN.
6832         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
6833         Add casts to enum type.
6834         (setup_cover_and_important_classes): Change cl to int.  Add casts
6835         to enum type.
6836         (setup_class_translate): Change cl and mode to int.
6837         (ira_init_once): Change mode to int.
6838         (free_register_move_costs): Likewise.
6839         (setup_prohibited_mode_move_regs): Add casts to enum type.
6840         * langhooks.c (add_builtin_function_common): Rework assertion that
6841         value fits bitfield.
6842         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
6843         * omega.c (omega_do_elimination): Avoid math on enum types.
6844         * optabs.c (expand_vec_shift_expr): Remove casts to int.
6845         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
6846         int local to handle integral_argment value.
6847         * regmove.c (try_auto_increment): Change PUT_MODE to
6848         PUT_REG_NOTE_KIND.
6849         * reload.c (push_secondary_reload): Add casts to enum type.
6850         (secondary_reload_class, find_valid_class): Likewise.
6851         * reload1.c (emit_input_reload_insns): Likewise.
6852         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
6853         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
6854         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
6855         constant.
6856         * tree.c (build_common_builtin_nodes): Add casts to enum type.
6857         * tree-complex.c (complex_lattice_t): Typedef to int rather than
6858         enum type.
6859         (expand_complex_libcall): Add casts to enum type.
6860         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
6861         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
6862         with ERROR_MARK, not NUM_TREE_CODES.
6863         (vect_create_epilog_for_reduction): Likewise.
6864         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
6865         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
6866         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
6867         enum machine_mode.
6868         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
6869         vect_unused_in_loop.  Change 0 to loop_vect.
6870         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
6871         * var-tracking.c (get_init_value): Change return type to enum
6872         var_init_status.
6873         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
6874         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
6875         arm_fp_model.
6876         (arm_override_options): Add casts to enum type.
6877         (arm_emit_tls_decoration): Likewise.
6878         * config/i386/i386.c (ix86_function_specific_restore): Add casts
6879         to enum type.
6880         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
6881         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
6882         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
6883         enum type.
6884         * config/s390/s390.c (code_for_builtin_64): Change to array of
6885         enum insn_code.
6886         (code_for_builtin_31): Likewise.
6887         (s390_expand_builtin): Change code_for_builtin to enum insn_code
6888         const *.
6889         * config/sparc/sparc.c (sparc_override_options): Change value
6890         field in struct code_model to enum cmodel.  In initializer change
6891         0 to NULL and add cast to enum type.
6892
6893         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
6894         Change all callers.  Issue a -Wc++-compat warning using
6895         lhs_origtype if necessary.
6896         (convert_for_assignment): Issue -Wc++-compat warnings about
6897         invalid conversions to enum type on assignment.
6898         * c-common.h (build_modify_expr): Update declaration.
6899
6900 2009-04-24  Nick Clifton  <nickc@redhat.com>
6901
6902         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
6903         (function_arg_advance): Likewise.
6904         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
6905         5th alternative.
6906
6907 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6908
6909         * config/s390/constraints.md ('I', 'J'): Fix condition.
6910
6911 2009-04-24  Diego Novillo  <dnovillo@google.com>
6912
6913         * gengtype-parse.c (parse_error): Add newline after message.
6914
6915 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
6916
6917         * config/i386/sse.md (avxmodesuffixs): Removed.
6918         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
6919         (*avx_pinsr<ssevecsize>): This.
6920
6921 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
6922
6923         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
6924         follow chains of regs with a single definition, and allow expressions
6925         that are function_invariant_p.
6926         (simple_rhs_p): Allow expressions that are function_invariant_p.
6927
6928 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
6929
6930         PR middle-end/39867
6931         * fold-const.c (fold_cond_expr_with_comparison): When folding
6932         > and >= to MAX, make sure the MAX uses the same type as the
6933         comparison's operands.
6934
6935 2009-04-24  Nick Clifton  <nickc@redhat.com>
6936
6937         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
6938         addressing for DImode accesses.
6939         (frv_print_operand_address): Handle PLUS case.
6940         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
6941
6942 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
6943
6944         PR rtl-optimization/39794
6945         * alias.c (canon_true_dependence): Add x_addr argument.
6946         * rtl.h (canon_true_dependence): Adjust prototype.
6947         * cse.c (check_dependence): Adjust canon_true_dependence callers.
6948         * cselib.c (cselib_invalidate_mem): Likewise.
6949         * gcse.c (compute_transp): Likewise.
6950         * dse.c (scan_reads_nospill): Likewise.
6951         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
6952         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
6953         canon_base_addr of the group, plus optional offset.
6954         (struct group_info): Rename canon_base_mem to
6955         canon_base_addr.
6956         (get_group_info): Set canon_base_addr to canon_rtx of base, not
6957         canon_rtx of base_mem.
6958
6959 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
6960
6961         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
6962         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
6963
6964 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6965
6966         * config/spu/spu-builtins.h: Delete file.
6967
6968         * config/spu/spu.h (enum spu_builtin_type): Move here from
6969         spu-builtins.h.
6970         (struct spu_builtin_description): Likewise.  Add GTY marker.
6971         Do not use enum spu_function_code or enum insn_code.
6972         (spu_builtins): Add extern declaration.
6973
6974         * config/spu/spu.c: Do not include "spu-builtins.h".
6975         (enum spu_function_code, enum spu_builtin_type_index,
6976         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
6977         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
6978         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
6979         unsigned_V2DI_type_node): Move here from spu-builtins.h.
6980         (spu_builtin_types): Make static.  Add GTY marker.
6981         (spu_builtins): Add extern declaration with GTY marker.
6982         Include "gt-spu.h".
6983
6984         * config/spu/spu-c.c: Do not include "spu-builtins.h".
6985         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
6986         Check programmatically whether all parameters are scalar.
6987
6988         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
6989
6990 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
6991
6992         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
6993         assignment from the constructor either if the target is volatile.
6994
6995 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
6996
6997         * config/arm/arm.md (insv): Do not share operands[0].
6998
6999 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
7000
7001         * config/vxlib-tls.c (active_tls_threads): Delete.
7002         (delete_hook_installed): New.
7003         (tls_delete_hook): Don't delete the delete hook.
7004         (tls_destructor): Delete it here.
7005         (__gthread_set_specific): Adjust installing the delete hook.
7006         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
7007         __gthread_leave_tsd_dtor_context.
7008
7009 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
7010
7011         * c-format.c (gcc_tdiag_char_table): Add support for %E.
7012
7013 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
7014
7015         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
7016         enum type.
7017         (alpha_rtx_costs): Ditto.
7018         (emit_unlikely_jump): Use add_reg_note.
7019         (emit_frame_store_1): Ditto.
7020         (alpha_expand_prologue): Ditto.
7021         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
7022         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
7023
7024 2009-04-23  Nick Clifton  <nickc@redhat.com>
7025
7026         * config/v850/v850.md (epilogue): Remove suppressed code.
7027         (return): Rename to return_simple and remove test of frame size.
7028         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
7029         to gen_return_simple.
7030
7031 2009-04-22  Jing Yu  <jingyu@google.com>
7032
7033         PR testsuite/39781
7034         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
7035
7036 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7037
7038         PR C/31499
7039         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
7040         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
7041         value is a VECTOR_CST, the element type is the element type of the
7042         vector.
7043
7044 2009-04-22  DJ Delorie  <dj@redhat.com>
7045
7046         * config/m32c/m32c.h: Update GTY annotations to new syntax.
7047
7048 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
7049
7050         * alias.c (find_base_term): Move around LO_SUM case, so that
7051         CONST falls through into PLUS/MINUS handling.
7052
7053         PR c/39855
7054         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
7055         into 0, use omit_one_operand.
7056
7057 2009-04-23  Ben Elliston  <bje@au.ibm.com>
7058
7059         * config/rs6000/linux-unwind.h (get_regs): Remove type
7060         puns. Change the type of `pc' to an array of unsigned ints and
7061         update all users.  Constify frame24.
7062
7063 2009-04-22  DJ Delorie  <dj@redhat.com>
7064
7065         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
7066         declarations before code.
7067         (current_function_special_page_vector): Likewise.
7068         (m32c_expand_insv): Silence a warning.
7069
7070 2009-04-21  Taras Glek  <tglek@mozilla.com>
7071
7072         * alias.c: Update GTY annotations to new syntax.
7073         * basic-block.h: Likewise.
7074         * bitmap.h: Likewise.
7075         * c-common.h: Likewise.
7076         * c-decl.c: Likewise.
7077         * c-parser.c: Likewise.
7078         * c-pragma.c: Likewise.
7079         * c-tree.h: Likewise.
7080         * cfgloop.h: Likewise.
7081         * cgraph.h: Likewise.
7082         * config/alpha/alpha.c: Likewise.
7083         * config/arm/arm.h: Likewise.
7084         * config/avr/avr.h: Likewise.
7085         * config/bfin/bfin.c: Likewise.
7086         * config/cris/cris.c: Likewise.
7087         * config/darwin.c: Likewise.
7088         * config/frv/frv.c: Likewise.
7089         * config/i386/i386.c: Likewise.
7090         * config/i386/i386.h: Likewise.
7091         * config/i386/winnt.c: Likewise.
7092         * config/ia64/ia64.h: Likewise.
7093         * config/iq2000/iq2000.c: Likewise.
7094         * config/mips/mips.c: Likewise.
7095         * config/mmix/mmix.h: Likewise.
7096         * config/pa/pa.c: Likewise.
7097         * config/pa/pa.h: Likewise.
7098         * config/rs6000/rs6000.c: Likewise.
7099         * config/s390/s390.c: Likewise.
7100         * config/sparc/sparc.c: Likewise.
7101         * config/xtensa/xtensa.c: Likewise.
7102         * cselib.h: Likewise.
7103         * dbxout.c: Likewise.
7104         * dwarf2out.c: Likewise.
7105         * except.c: Likewise.
7106         * except.h: Likewise.
7107         * fixed-value.h: Likewise.
7108         * function.c: Likewise.
7109         * function.h: Likewise.
7110         * gimple.h: Likewise.
7111         * integrate.c: Likewise.
7112         * optabs.c: Likewise.
7113         * output.h: Likewise.
7114         * real.h: Likewise.
7115         * rtl.h: Likewise.
7116         * stringpool.c: Likewise.
7117         * tree-data-ref.c: Likewise.
7118         * tree-flow.h: Likewise.
7119         * tree-scalar-evolution.c: Likewise.
7120         * tree-ssa-address.c: Likewise.
7121         * tree-ssa-alias.h: Likewise.
7122         * tree-ssa-operands.h: Likewise.
7123         * tree.c: Likewise.
7124         * tree.h: Likewise.
7125         * varasm.c: Likewise.
7126         * varray.h: Likewise.
7127         * vec.h: Likewise.
7128         * coretypes.h: Do not define GTY macro if it is already defined.
7129         * doc/gty.texi: Update GTY documentation to new syntax.
7130         * gengtype-lex.l: Enforce attribute-like syntax for GTY
7131         annotations on structs.
7132         * gengtype-parse.c: Likewise.
7133
7134 2009-04-22  Mark Heffernan  <meheff@google.com>
7135
7136         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
7137
7138 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
7139
7140         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
7141         where appropriate.
7142
7143 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
7144
7145         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
7146         the same as a PLUS without a shift.  Increase the cost of a
7147         CONST_INT in MULT.
7148
7149 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7150
7151         * Makefile.in: Update dependencies.
7152         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
7153         * errors.h: Remove bogus comment about compatibility.
7154         (warning): Update declaration.
7155         * genautomata.c: Update all calls to warning.
7156         * gimple.c: Do not include errors.h. Include toplev.h.
7157         * tree-ssa-structalias.c: Do not include errors.h.
7158         * omega.c: Likewise.
7159         * tree-ssa-reassoc.c: Likewise.
7160         * config/spu/spu-c.c: Likewise.
7161         * config/spu/t-spu-elf: Update dependencies.
7162
7163 2009-04-22  Richard Guenther  <rguenther@suse.de>
7164
7165         PR tree-optimization/39824
7166         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
7167         make sure the types are compatible.
7168
7169 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7170
7171         PR c++/14875
7172         * c-common.c (c_parse_error): Take a token_flags parameter.
7173         Use token_type for the token type instead.
7174         Pass token_flags to cpp_type2name.
7175         * c-common.h (c_parse_error): Update declaration.
7176         * c-parser.c (c_parser_error): Pass 0 as token flags.
7177
7178 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
7179
7180         PR rtl-optimization/39580
7181         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
7182         
7183 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7184
7185         * function.c (expand_function_end): Do not emit a jump to the "naked"
7186         return label for fall-through returns.
7187         * except.c (sjlj_emit_function_exit): Always place the call to the
7188         unregister function at the location installed by expand_function_end.
7189
7190 2009-04-22  Richard Guenther  <rguenther@suse.de>
7191
7192         PR tree-optimization/39845
7193         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
7194         (gen_inbound_check): Likewise.
7195
7196 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
7197
7198         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
7199         padding for PPC.
7200         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
7201         * config/vxlib.c (__gthread_once): Add race guard for PPC.
7202
7203 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
7204
7205         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
7206         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
7207         shift counts to avoid out-of-bounds array accesses.
7208
7209 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
7210
7211         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
7212         (Pmode): Move above.
7213
7214 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
7215
7216         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
7217         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
7218         GET_CODE macro.  Use IN_RANGE macro where appropriate.
7219         * config/alpha/alpha.h: Ditto.
7220         * config/alpha/alpha.md: Ditto.
7221         * config/alpha/constraints.md: Ditto.
7222         * config/alpha/predicates.md: Ditto.
7223         
7224 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
7225
7226         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
7227         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7228         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7229         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7230         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7231         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7232         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7233         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7234         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7235         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7236         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7237         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7238         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7239         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7240         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7241         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7242         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7243         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7244         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7245         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7246         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7247         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7248         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7249         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7250         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7251         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7252         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
7253
7254 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7255
7256         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
7257         references from comments.
7258         * cfgbuild.c: (count_basic_blocks): Delete.
7259         (find_basic_blocks_1): Delete.
7260         (find_basic_blocks): Delete.
7261         * except.c (finish_eh_generation): Make static.  Move comment from
7262         except.h here.  Remove find_basic_blocks references from comments.
7263         * except.h (finish_eh_generation): Delete.
7264         * basic-block.h (find_basic_blocks): Delete.
7265         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
7266
7267 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7268
7269         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
7270         (sdbout_parms):  Likewise.
7271
7272 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
7273
7274         * config/sh/sh.c (prepare_cbranch_operands): Use
7275         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
7276         (expand_cbranchdi4): Likewise.
7277         (from_compare): Add cast to enum type.
7278         (expand_cbranchsi4): Use add_reg_note.
7279         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
7280         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
7281         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
7282         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
7283         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
7284         instead of CODE_FOR_nothing.
7285         (cbranchdi4): Likewise.  Fix the order of arguments for
7286         gen_rtx_fmt_ee.
7287         (push_fpscr): Use add_reg_note.
7288         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
7289         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
7290         
7291 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
7292
7293         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
7294         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
7295         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
7296         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
7297         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
7298         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
7299         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
7300         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
7301         config/alpha/x-vms, config/arc/t-arc,
7302         config/arm/README-interworking, config/arm/arm-c.c,
7303         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
7304         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
7305         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
7306         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
7307         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
7308         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
7309         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
7310         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
7311         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
7312         config/cris/t-elfmulti, config/crx/t-crx,
7313         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
7314         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
7315         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
7316         config/h8300/t-h8300, config/i386/athlon.md,
7317         config/i386/darwin-libgcc.10.4.ver,
7318         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
7319         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
7320         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
7321         config/i386/t-linux64, config/i386/t-nwld,
7322         config/i386/t-rtems-i386, config/i386/t-sol2-10,
7323         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
7324         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
7325         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
7326         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
7327         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
7328         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
7329         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
7330         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
7331         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
7332         config/m68k/t-uclinux, config/mcore/t-mcore,
7333         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
7334         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
7335         config/mips/crtn.asm, config/mips/irix-crti.asm,
7336         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
7337         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
7338         config/mips/mips-fixed.md, config/mips/sb1.md,
7339         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
7340         config/mips/t-iris6, config/mips/t-isa3264,
7341         config/mips/t-libgcc-mips16, config/mips/t-linux64,
7342         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
7343         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
7344         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
7345         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
7346         config/mn10300/t-linux, config/mn10300/t-mn10300,
7347         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
7348         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
7349         config/picochip/libgccExtras/clzsi2.asm,
7350         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
7351         config/rs6000/darwin-libgcc.10.4.ver,
7352         config/rs6000/darwin-libgcc.10.5.ver,
7353         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
7354         config/rs6000/t-aix43, config/rs6000/t-aix52,
7355         config/rs6000/t-darwin, config/rs6000/t-fprules,
7356         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
7357         config/rs6000/t-lynx, config/rs6000/t-netbsd,
7358         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
7359         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
7360         config/rs6000/t-rtems, config/rs6000/t-spe,
7361         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
7362         config/score/t-score-elf, config/sh/divcost-analysis,
7363         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
7364         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
7365         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
7366         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
7367         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
7368         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
7369         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
7370         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
7371         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
7372         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
7373         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
7374         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
7375         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
7376         limitx.h, version.c, xcoff.h: Add copyright and license notices.
7377         * config/h8300/genmova.sh: Include copyright and license notices
7378         in generated output.
7379         * config/h8300/mova.md: Regenerate.
7380         * doc/install.texi2html: Include word "Copyright" in copyright
7381         notice and use name "Free Software Foundation, Inc.".
7382         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
7383         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
7384         ChangeLog-2007, ChangeLog-2008: Correct dates.
7385
7386 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
7387
7388         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
7389         NE_EXPR operations as well.
7390         * c-parser.c (c_parser_condition): Do not set location information on
7391         the condition.
7392         (c_parser_conditional_expression): Likewise.
7393         (c_parser_binary_expression): Set location information on operators.
7394         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
7395         TRUTH_NOT_EXPR has been folded.
7396         * fold-const.c (fold_truth_not_expr): Copy location information from
7397         the incoming expression to the outgoing one.
7398         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
7399         recursive calls on the LHS of the operator but pass that of the
7400         operator to recursive calls on the RHS of the operator.  Set it
7401         on the COND_EXPR.
7402         (shortcut_cond_expr): Set the locus of the operator on the second
7403         COND_EXPR and that of the expression on the first in degenerate cases.
7404         Pass the locus of the expression to calls to shortcut_cond_r.
7405         Set the locus of the 'then' block on the associated jump, if any.
7406         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
7407         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
7408         expression to call to gimplify_boolean_expr.
7409
7410 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
7411
7412         * config.gcc: Add additional configuration for
7413         i686-w64-mingw* and x86_64-w64-mingw* triplet.
7414         * config/i386/mingw-w64.h: New mingw-w64 specific header.
7415         (CPP_SPEC): Redefine for allowing -municode option.
7416         (STARTFILE_SPEC): Likewise.
7417         * config/i386/t-mingw-w64: New.
7418         * config/i386/mingw-w64.opt: New.
7419         (municode): Add new target option.
7420         * doc/invoke.texi (municode): Add documentation for new option.
7421
7422 2009-04-21  Ian Lance Taylor  <iant@google.com>
7423
7424         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
7425         Correct test for number of arguments.
7426         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
7427
7428 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
7429
7430         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
7431         argument of emit_library_call.
7432
7433 2009-04-21  Richard Guenther  <rguenther@suse.de>
7434
7435         PR middle-end/39829
7436         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
7437         inside VIEW_CONVERT_EXPRs.
7438
7439 2009-04-21  Martin Jambor  <mjambor@suse.cz>
7440
7441         * tree-switch-conversion.c (build_constructors): Split a long line.
7442         (constructor_contains_same_values_p): New function.
7443         (build_one_array): Create assigns of constants if possible, do not
7444         call mark_sym_for_renaming, call update_stmt.
7445         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
7446         make_rename_temp.  Do not call mark_symbols_for_renaming, call
7447         update_stmt.
7448         (gen_def_assigns): Do not call mark_symbols_for_renaming or
7449         find_new_referenced_vars, call update_stmt.
7450         (gen_inbound_check): Use create_tmp_var and create ssa names manually
7451         instead of calling make_rename_temp.  Do not call
7452         find_new_referenced_vars or mark_symbols_for_renaming, call
7453         update_stmt.
7454
7455 2009-04-21  Richard Guenther  <rguenther@suse.de>
7456
7457         PR tree-optimization/39827
7458         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
7459         (tree_ssa_phiprop): Pass the correct array size.
7460
7461 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
7462
7463         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
7464
7465 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7466
7467         PR 16202
7468         * c-typeck.c (lvalue_p): Move declaration ...
7469         * c-common.h (lvalue_p): ... to here.
7470         * c-common.c (candidate_equal_p): New.
7471         (add_tlist): Use it.
7472         (merge_tlist): Use it.
7473         (warn_for_collisions_1): Likewise.
7474         (warning_candidate_p): Accept more candidates.
7475         (verify_tree): A warning candidate can be an expression. Use
7476         candidate_equal_p.
7477
7478 2009-04-21  Ben Elliston  <bje@au.ibm.com>
7479
7480         PR target/5267
7481         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
7482         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
7483         options.  Remove -mcall-solaris documentation.
7484
7485 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7486
7487         PR c++/13358
7488         * doc/invoke.texi (-Wlong-long): Update description.
7489         * c-lex (interpret_integer): Only warn if there was no previous
7490         overflow and -Wlong-long is enabled.
7491         * c-decl.c (declspecs_add_type): Drop redundant flags.
7492         * c.opt (Wlong-long): Init to -1.
7493         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
7494         and front-end warn_long_long. Wlong-long only depends on other
7495         flags if it is uninitialized.
7496         * c-parser.c (disable_extension_diagnostics): warn_long_long is
7497         the same for CPP and FE.
7498         (restore_extension_diagnostics): Likewise.
7499
7500 2009-04-20  Ian Lance Taylor  <iant@google.com>
7501
7502         Fix enum conversions which are invalid in C++:
7503         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
7504         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
7505         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
7506         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
7507         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
7508         (dbxout_parms): Likewise.
7509         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
7510         (df_clear_flags): Likewise.
7511         * df-problems.c (df_rd_bb_local_compute_process_def): Change
7512         top_flag parameter to int.
7513         (df_chain_create_bb_process_use): Likewise.
7514         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
7515         Remove cast.
7516         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
7517         (df_ref_create_structure, df_def_record_1): Likewise.
7518         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
7519         (df_notes_rescan): Change 0 to VOIDmode in function call.
7520         (df_get_call_refs, df_insn_refs_collect): Likewise.
7521         (df_bb_regs_collect): Likewise.
7522         (df_entry_block_defs_collect): Likewise.
7523         (df_exit_block_uses_collect): Likewise.
7524         * df.h: Update declarations.
7525         * double-int.c (double_int_divmod): Add cast to enum type.
7526         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
7527         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
7528         (based_loc_descr): Likewise.
7529         (loc_descriptor_from_tree_1): Change first_op and second_op to
7530         enum dwarf_location_atom.  Add cast to enum type.
7531         * expmed.c (init_expmed): Change 0 to SET in function call.
7532         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
7533         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
7534         (do_store_flag): Likewise.
7535         * fixed-value.h (struct fixed_value): Change mode to enum
7536         machine_mode.
7537         * function.c (assign_parms): Change 0 to VOIDmode in function call.
7538         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
7539         function call.
7540         (insert_insn_decl, insert_decl, insert_state): Likewise.
7541         (automata_list_finish): Likewise.
7542         * genrecog.c (process_define_predicate): Add cast to enum type.
7543         * gensupport.c (init_predicate_table): Add cast to enum type.
7544         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
7545         function call.
7546         (gimple_build_call_1, gimple_build_label): Likewise.
7547         (gimple_build_goto, gimple_build_asm_1): Likewise.
7548         (gimple_build_switch_1, gimple_build_cdt): Likewise.
7549         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
7550         (enum fallback): Rename from enum fallback_t.
7551         (fallback_t): Typedef as int.
7552         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
7553         GSI_SAME_STMT in function call.
7554         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
7555         enum type.
7556         (setup_reg_class_relations): Likewise.
7557         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
7558         (setup_prohibited_class_mode_regs): Add cast to enum type.
7559         (setup_prohibited_mode_move_regs): Likewise.
7560         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
7561         (record_address_regs): Change i to enum reg_class.
7562         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
7563         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
7564         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
7565         (GET_MODE_2XWIDER_MODE): Likewise.
7566         (GET_CLASS_NARROWEST_MODE): Likewise.
7567         * omp-low.c (expand_omp_for): Add cast to enum type.
7568         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
7569         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
7570         * postreload.c (reload_cse_simplify_operands): Change rclass local
7571         to enum reg_class.
7572         * predict.c (combine_predictions_for_insn): Change best_predictor
7573         and predictor to enum br_predictor.
7574         (combine_predictions_for_bb): Likewise.
7575         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
7576         use SET_PREDICT_EXPR_OUTCOME.
7577         * real.c (real_arithmetic): Change icode to code in function call.
7578         * reginfo.c (init_move_cost): Add casts to enum type.
7579         (init_reg_sets_1, init_fake_stack_mems): Likewise.
7580         * regmove.c (regclass_compatible_p): Change class0 and class1 to
7581         enum reg_class.
7582         * reload.c (find_valid_class): Add casts to enum type.
7583         (push_reload): Change 0 to NO_REGS in function call.
7584         (find_reloads): Change this_alternative to array of enum
7585         reg_class.  Remove some now-unnecessary casts.
7586         (make_memloc): Change 0 to VOIDmode in function call.
7587         * reload1.c (reload): Change 0 to VOIDmode in function call.
7588         (eliminate_regs_1, elimination_effects): Likewise.
7589         (eliminate_regs_in_insn): Likewise.
7590         (emit_input_reload_insns): Add cast to enum type.
7591         (delete_output_reload): Change 0 to VOIDmode in function call.
7592         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
7593         to enum type in function call.
7594         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
7595         (SET_PREDICT_EXPR_OUTCOME): Define.
7596         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
7597         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
7598         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
7599         (dump_function): Likewise.
7600         * tree-dump.h: Update declarations.
7601         * tree-pass.h: Update declarations.
7602         * varasm.c (assemble_integer): Change mclass to enum mode_class.
7603         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
7604         enum type.
7605         (arm_rtx_costs_1): Correct parenthesization.
7606         (arm_rtx_costs): Add casts to enum type.
7607         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
7608         (vfp_emit_fstmd): Use add_rg_note.
7609         (emit_multi_reg_push, emit_sfm): Likewise.
7610         (thumb_set_frame_pointer): Likewise.
7611         (arm_expand_prologue): Likewise.
7612         (arm_regno_class): Change return type to enum reg_class.
7613         (thumb1_expand_prologue): Use add_reg_note.
7614         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
7615         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
7616         in function call.
7617         * config/arm/gentune.sh: Add cast to enum type.
7618         * config/arm/arm-tune.md: Rebuild.
7619         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
7620         (ix86_split_fp_branch, predict_jump): Likewise.
7621         (ix86_expand_multi_arg_builtin): Change sub_code from enum
7622         insn_code to enum rtx_code.
7623         (ix86_builtin_vectorized_function): Add cast to enum type.
7624         * config/i386/i386.md (truncdfsf2): Change slot to enum
7625         ix86_stack_slot.
7626         (truncxf<mode>2, isinf<mode>2): Likewise.
7627         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
7628         enum type.
7629         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
7630         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
7631         (insert_bundle_state): Change 1 to INSERT in function call.
7632         (ia64_add_bundle_selector_before): Likewise.
7633         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
7634         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
7635         (restore_stack_nonlocal): Likewise.
7636         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
7637         function call.
7638         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
7639         function call.
7640         (mips_rtx_costs): Likewise.
7641         (mips_override_options): Add casts to enum type.
7642         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
7643         in function call.
7644         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
7645         (store_reg, set_reg_plus_d): Likewise.
7646         (hppa_expand_prologue, hppa_profile_hook): Likewise.
7647         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
7648         cast to enum type.
7649         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
7650         function call.
7651         (emit_unlikely_jump): Use add_reg_note.
7652         (rs6000_emit_allocate_stack): Likewise.
7653         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
7654         (output_toc): Change 1 to INSERT in function call.
7655         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
7656         (rs6000_initialize_trampoline): Likewise.
7657         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
7658         function call.
7659         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
7660         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
7661         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
7662         (save_gprs): Use add_reg_note.
7663         (s390_emit_prologue): Likewise.
7664         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
7665         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
7666         (sparc_fold_builtin): Add cast to enum type.
7667         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
7668         enum insn_code.
7669         (spu_expand_prologue): Use add_reg_note.
7670         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
7671
7672 2009-04-20  Ian Lance Taylor  <iant@google.com>
7673
7674         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
7675         (c_parser_postfix_expression_after_primary): Get VEC for list of
7676         arguments.  Get original types of arguments.  Call
7677         build_function_call_vec.
7678         (cached_expr_list_1, cached_expr_list_2): New static variables.
7679         (c_parser_expr_list): Change return type to VEC *.  Add
7680         p_orig_types parameter.  Change all callers.
7681         (c_parser_release_expr): New static function.
7682         (c_parser_vec_to_tree_list): New static function.
7683         * c-typeck.c (build_function_call): Rewrite to build a VEC and
7684         call build_function_call_vec.
7685         (build_function_call_vec): New function, based on old
7686         build_function_call.
7687         (convert_arguments): Remove nargs and argarray parameters.  Change
7688         values to a VEC.  Add origtypes parameter.
7689         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
7690         (convert_for_assignment): Add origtype parameter.  Change all
7691         callers.  If warn_cxx_compat, check for conversion to an enum
7692         type when calling a function.
7693         (store_init_value): Add origtype parameter.  Change all callers.
7694         (digest_init): Likewise.
7695         (struct init_node): Add origtype field.
7696         (add_pending_init): Add origtype parameter.  Change all callers.
7697         (output_init_element): Likewise.
7698         (output_pending_init_elements): Pass origtype from init_node to
7699         output_init_element.
7700         (process_init_element): Pass origtype from c_expr to
7701         output_init_element.
7702         (c_finish_return): Add origtype parameter.  Change all callers.
7703         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
7704         caller.
7705         (sync_resolve_params): Likewise.
7706         (sync_resolve_return): Change params to first_param.  Change caller.
7707         (resolve_overloaded_builtins): Change params to VEC *.  Change
7708         callers.  Save first parameter around call to build_function_call_vec.
7709         * c-decl.c (finish_decl): Add origtype parameter.  Change all
7710         callers.  Call build_function_call_vec rather than
7711         build_function_call for cleanup.
7712         * c-tree.h: Update declarations.
7713         * c-common.h: Update declarations.
7714         * stub-objc.c (objc_rewrite_function_call): Change parameter from
7715         params to first_param.
7716         * target.h (struct gcc_target): Change resolve_overloaded_builtin
7717         params parameter from tree to void *.
7718         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
7719         Change arglist parameter to have type void *, and to be a pointer
7720         to a VEC.
7721         * config/rs6000/rs6000-protos.h
7722         (altivec_resolve_overloaded_builtin): Update declaration.
7723         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
7724         fnargs parameter to have type void *, and to be a pointer to a
7725         VEC.  Call build_function_call_vec instead of
7726         build_function_call.
7727         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
7728
7729 2009-04-20  Joey Ye  <joey.ye@intel.com>
7730             Xuepeng Guo  <xuepeng.guo@intel.com>
7731             H.J. Lu  <hongjiu.lu@intel.com>
7732
7733         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
7734
7735         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
7736         (IX86_LEA_PRIORITY): Likewise.
7737         (distance_non_agu_define): New function.
7738         (distance_agu_use): Likewise.
7739         (ix86_lea_for_add_ok): Likewise.
7740         (ix86_dep_by_shift_count): Likewise.
7741
7742         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
7743         should split for LEA.
7744
7745         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
7746         function.
7747         (ix86_dep_by_shift_count): Likewise.
7748
7749 2009-04-20  Richard Guenther  <rguenther@suse.de>
7750
7751         * expr.c (handled_component_p): Move ...
7752         * tree.h (handled_component_p): ... here.
7753         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
7754         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
7755         and REALPART_EXPR to be in one group.
7756
7757 2009-04-20  Richard Guenther  <rguenther@suse.de>
7758
7759         * basic-block.h (get_all_dominated_blocks): Declare.
7760         * dominance.c (get_all_dominated_blocks): New function.
7761         * tree-cfg.c (get_all_dominated_blocks): Remove.
7762         (remove_edge_and_dominated_blocks): Adjust.
7763         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
7764         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
7765         instead of recursing.
7766
7767 2009-04-20  Doug Kwan  <dougkwan@google.com>
7768
7769         * cgraph.h (cgraph_node_ptr): New type for vector functions.
7770         (struct cgraph_node_set_def): New type.
7771         (cgraph_node_set) New type. Also declare vector functions.
7772         (struct cgraph_node_set_element_def): New type.
7773         (cgraph_node_set_element): Ditto.
7774         (cgraph_node_set_iterator): New iterator type.
7775         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
7776         cgraph_node_set_remove, dump_cgraph_node_set,
7777         debug_cgraph_node_set): New prototypes.
7778         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
7779         cgraph_node_set_size): New inlines.
7780         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
7781         including cgraph.h.
7782         (struct ipa_opt_pass): Add struct cgraph_node_set_def
7783         argument to function 'write_summary'.
7784         * ipa.c: Include ggc.h.
7785         (hash_cgraph_node_set_element,
7786         eq_cgraph_node_set_element, cgraph_node_set_new,
7787         cgraph_node_set_add, cgraph_node_set_remove,
7788         cgraph_node_set_find, dump_cgraph_node_set,
7789         debug_cgraph_node_set): New functions.
7790         * Makefile.in (ipa.o): Add dependency on GGC_H.
7791
7792 2009-04-20  Ira Rosen  <irar@il.ibm.com>
7793
7794         PR tree-optimization/39675
7795         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
7796         check of the return code of vect_schedule_slp. Check that
7797         stmt_vec_info still exists for the statement, before checking its
7798         vectorization type.
7799
7800 2009-04-20  Michael Matz  <matz@suse.de>
7801
7802         * Makefile.in (generated_files): Take out $(simple_generated_c).
7803
7804 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
7805
7806         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
7807         (UINTPTR_TYPE):  Likewise.
7808
7809 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
7810
7811         PR c/37481
7812         * c-typeck.c (digest_init): Check for initializing an array with a
7813         string literal.
7814
7815 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
7816
7817         PR c/19771
7818         * c-semantics.c (pop_stmt_list): Propagate
7819         STATEMENT_LIST_HAS_LABEL to parent statement list.
7820
7821 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
7822
7823         * config/mips/mips.h (mips_tune_attr): New macro.
7824         * config/mips/mips.md (cpu): Use it.
7825
7826 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
7827
7828         PR c/38243
7829         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
7830         declaring a tag.
7831
7832 2009-04-19  Diego Novillo  <dnovillo@google.com>
7833
7834         * toplev.c (compile_file): Move call to coverage_finish ...
7835         * cgraphunit.c (ipa_passes): ... here.
7836         Call cgraph_process_new_functions.
7837         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
7838         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
7839
7840 2009-04-19  Jan Hubicka  <jh@suse.cz>
7841
7842         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
7843         cfun.
7844         (dump_cgraph_node): Dump can throw external flag.
7845         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
7846
7847 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7848
7849         PR c/32061
7850         PR c++/36954
7851         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
7852         * common.opt (Wlogical-op): Move from here...
7853         * c.opt (Wlogical-op): ... to here.
7854         * c-typeck.c (parser_build_binary_op): Update call to
7855         warn_logical_operator.
7856         * c-opts.c (c_common_post_options): Enable warn_logical_op with
7857         extra_warnings.
7858         * c-common.c (warn_logical_op): Update.
7859         * c-common.h (warn_logical_op): Update declaration.
7860
7861 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
7862
7863         * tree.c (protected_set_expr_location): Fix formatting.
7864
7865 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
7866
7867         PR c/27676
7868         * c-typeck.c (readonly_warning): new.
7869         (build_unary_op, build_modify_expr): Use readonly_warning for
7870         storing into something readonly but not const-qualified.
7871
7872 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
7873
7874         PR c/22367
7875         * c-typeck.c (build_unary_op): Check for taking address of
7876         expression of type void.
7877
7878 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
7879
7880         PR c/35210
7881         * c-typeck.c (build_function_call): Check for calling a function
7882         with qualified void return types.  Call require_complete_type when
7883         generating a trap.
7884
7885 2009-04-18  Jan Hubicka  <jh@suse.cz>
7886
7887         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
7888         Set nothrow flag.
7889         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
7890         can_throw_external flag.
7891         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
7892         * ipa-pure-const.c (ignore_edge): New function.
7893         (propagate): Compute order for NOTHROW computation; set NOTHROWs
7894         only over can_throw_external edges.
7895         (local_pure_const): Add nothrow flag.
7896         * ipa-utils.c (searchc): Add ignore_edge callback.
7897         (ipa_utils_reduced_inorder): Add ignore_edge callback.
7898         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
7899         (set_nothrow_function_flags): Update cgraph.
7900         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
7901
7902 2009-04-18  Richard Guenther  <rguenther@suse.de>
7903
7904         PR middle-end/39804
7905         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
7906         (fold_stmt): ... this and ...
7907         (fold_stmt_inplace): ... this.
7908         (fold_stmt_1): Fold references in calls and asms.
7909         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
7910
7911 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
7912
7913         * tree-vrp.c (ssa_name_nonzero_p): Remove.
7914         * tree.h: Remove the prototype for ssa_name_nonzero_p.
7915
7916 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
7917
7918         * tree.c (function_args_count): Remove.
7919         * tree.h: Remove the prototype for function_args_count.
7920
7921 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
7922
7923         * tree-iterator.c (expr_only): Remove.
7924         * tree.h: Remove the prototype for expr_only.
7925
7926 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
7927
7928         * reginfo.c (cannot_change_mode_set_regs): Remove.
7929         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
7930
7931 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
7932
7933         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
7934         whether operands 0 and 1 overlaps.
7935
7936 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
7937
7938         PR middle-end/36902
7939         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
7940         pointer. Use warning_at instead of warning.
7941         (search_for_addr_array): Likewise.
7942         (check_array_bounds): Likewise.
7943         (check_all_array_refs): Check that the incoming edge is not in the
7944         list of edges to be removed.
7945         (check_all_array_refs): Avoid the temporal pointer.
7946         (vrp_visit_cond_stmt): Fix typo.
7947         (simplify_switch_using_ranges): Handle the case where the switch
7948         index is an integer constant.
7949
7950 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
7951
7952         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
7953
7954 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
7955
7956         * doc/extend.texi, doc/invoke.texi: Fix typos.
7957
7958 2009-04-17  Cary Coutant  <ccoutant@google.com>
7959
7960         * tree-flow-inline.h (get_lineno): Fix inverted test.
7961
7962 2009-04-17  Diego Novillo  <dnovillo@google.com>
7963
7964         * tree-ssa-pre.c (create_expression_by_pieces): Remove
7965         assertion for AVAIL_OUT.
7966
7967 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
7968
7969         PR target/38627
7970         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
7971         * config/sh/linux-atomic.asm: Likewise.
7972
7973 2009-04-17  Diego Novillo  <dnovillo@google.com>
7974
7975         * except.c (debug_eh_tree): New.
7976         (struct eh_region, struct eh_status): Move ...
7977         * except.h: ... here.
7978         (add_type_for_runtime): Declare extern.
7979         (lookup_type_for_runtime): Likewise.
7980         (debug_eh_tree): Declare.
7981         * Makefile.in (GTFILES): List except.h before except.c
7982
7983 2009-04-17  Diego Novillo  <dnovillo@google.com>
7984
7985         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
7986         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
7987         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
7988         (find_vars_r): ... here.
7989         * tree-flow.h (find_referenced_vars_in): Declare.
7990         * tree-ssa-pre.c (create_expression_by_pieces): Assert
7991         that AVAIL_OUT exists for BLOCK.
7992         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
7993         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
7994         (tree-parloops.o): Likewise.
7995
7996 2009-04-17  Simon Baldwin  <simonb@google.com>
7997
7998         * toplev.c (default_tree_printer): Add handling for %E format.
7999
8000 2009-04-17  Diego Novillo  <dnovillo@google.com>
8001
8002         * tree-pretty-print.c (dump_generic_node): Add break after
8003         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
8004         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
8005         FUNCTION_TYPE together.  Call print_struct_decl when printing
8006         structures and TDF_SLIM is not given.
8007         (print_struct_decl): Fix logic for detecting recursion.
8008
8009 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
8010
8011         PR 31567
8012         * gcc.c (create_at_file): New.
8013         (compile_input_file_p): New.
8014         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
8015         * main.c (main): Update call to toplev_main.
8016         * toplev.c (toplev_main): Change signature. Call expandargv.
8017         * toplev.h (toplev_main): Change signature.
8018
8019 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
8020
8021         * dwarf2out.c (field_byte_offset): Use the type size as the field size
8022         if the latter is not constant.
8023
8024 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
8025
8026         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
8027
8028 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
8029
8030         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
8031         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
8032
8033 2009-04-17  Richard Guenther  <rguenther@suse.de>
8034
8035         * tree-ssa-structalias.c (get_constraint_for_component_ref):
8036         Handle component references view-converting an invariant address.
8037
8038 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
8039
8040         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
8041         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
8042         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
8043         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
8044         Use @deftypevr rather than @deftypevar.
8045
8046 2009-04-17  Richard Guenther  <rguenther@suse.de>
8047
8048         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
8049         (get_prop_source_stmt): Likewise.
8050         (can_propagate_from): Likewise.
8051
8052 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
8053
8054         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
8055         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
8056         (--with-multilib-list): Add default value.
8057         * configure: Regenerate.
8058         * Makefile.in (TM_ENDIAN_CONFIG): Define.
8059         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
8060         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
8061         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
8062         Don't add default cpu to multilib list unnecessarily, but do enable
8063         the relevant compiler option..
8064         Add support for --with-multilib-list=<blank> and
8065         --with-multilib-list=!<somelib> to supress unwanted multilibs.
8066         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
8067         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
8068         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
8069         TM_MULTILIB_CONFIG.
8070         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
8071         (MULTILIB_OSDIRNAMES): New variable.
8072         * config/sh/t-1e: Delete file.
8073         * config/sh/t-mlib-sh1: Delete file.
8074         * config/sh/t-mlib-sh2: Delete file.
8075         * config/sh/t-mlib-sh2a: Delete file.
8076         * config/sh/t-mlib-sh2a-nofpu: Delete file.
8077         * config/sh/t-mlib-sh2a-single: Delete file.
8078         * config/sh/t-mlib-sh2a-single-only: Delete file.
8079         * config/sh/t-mlib-sh2e: Delete file.
8080         * config/sh/t-mlib-sh3e: Delete file.
8081         * config/sh/t-mlib-sh4: Delete file.
8082         * config/sh/t-mlib-sh4-nofpu: Delete file.
8083         * config/sh/t-mlib-sh4-single: Delete file.
8084         * config/sh/t-mlib-sh4-single-only: Delete file.
8085         * config/sh/t-mlib-sh4a: Delete file.
8086         * config/sh/t-mlib-sh4a-nofpu: Delete file.
8087         * config/sh/t-mlib-sh4a-single: Delete file.
8088         * config/sh/t-mlib-sh4a-single-only: Delete file.
8089         * config/sh/t-mlib-sh4al: Delete file.
8090         * config/sh/t-mlib-sh5-32media: Delete file.
8091         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
8092         * config/sh/t-mlib-sh5-64media: Delete file.
8093         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
8094         * config/sh/t-mlib-sh5-compact: Delete file.
8095         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
8096         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
8097         * doc/install.texi (Options specification): Add
8098         --with-multilib-list and --with-endian.
8099
8100 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
8101
8102         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
8103         REVISION_c.
8104         (OBJS-common): Add plugin-version.o.
8105         (plugin-version.o): New.
8106         * gcc-plugin.h (plugin_gcc_version): New.
8107         (plugin_default_version_check): New.
8108         (plugin_init_func, plugin_init): Add version argument.
8109         * plugin-version.c: New.
8110         * plugin.c (str_plugin_gcc_version_name): New.
8111         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
8112         pass it to the init function.
8113         (plugin_default_version_check): New.
8114
8115 2009-04-17  Richard Guenther  <rguenther@suse.de>
8116
8117         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
8118         for decl-vs-decl disambiguation.
8119
8120 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
8121
8122         * config/s390/s390.h (s390_tune_attr): New macro definition.
8123         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
8124
8125 2009-04-17  Richard Guenther  <rguenther@suse.de>
8126
8127         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
8128         (fold_stmt_r): Likewise.
8129         (maybe_fold_reference): New function.
8130         (fold_gimple_assign): Handle cases fold_stmt_r did.
8131         (fold_stmt): Do not use fold_stmt_r.
8132         (fold_stmt_inplace): Likewise.
8133
8134 2009-04-17  Richard Guenther  <rguenther@suse.de>
8135
8136         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
8137         (record_equivalences_from_stmt): Remove useless checks and
8138         simplifications.
8139         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
8140         the type is already suitable.
8141
8142 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
8143
8144         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
8145
8146 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
8147
8148         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
8149         (CMPtype): Define as __gcc_CMPtype.
8150
8151 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
8152
8153         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
8154         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
8155
8156 2009-04-17  Richard Guenther  <rguenther@suse.de>
8157
8158         PR tree-optimization/39746
8159         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
8160         special-casing for builtins and static variable use/def.
8161         (call_may_clobber_ref_p_1): Likewise.
8162
8163 2009-04-16  Ian Lance Taylor  <iant@google.com>
8164
8165         * df.h: Include "timevar.h".
8166         (struct df_problem): Change tv_id field to timevar_id_t.
8167         * tree-pass.h: Include "timevar.h".
8168         (struct opt_pass): Change tv_id field to timevar_id_t.
8169         * timevar.h (timevar_id_t): Define TV_NONE.
8170         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
8171         TV_NONE rather than tv_id != 0.
8172         (execute_one_pass): Likewise.
8173         * Makefile.in (DF_H): Add $(TIMEVAR_H).
8174         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
8175         dependencies to $(TREE_PASS_H).
8176         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
8177         to TV_NONE.
8178         (pass_branch_target_load_optimize2): Likewise.
8179         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
8180         (pass_outof_cfg_layout_mode): Likewise.
8181         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
8182         (pass_rebuild_cgraph_edges): Likewise.
8183         (pass_remove_cgraph_callee_edges): Likewise.
8184         * df-core.c (pass_df_initialize_opt): Likewise.
8185         (pass_df_initialize_no_opt): Likewise.
8186         (pass_df_finish): Likewise.
8187         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
8188         * except.c (pass_set_nothrow_function_flags): Likewise.
8189         (pass_convert_to_eh_region_ranges): Likewise.
8190         * final.c (pass_compute_alignments): Likewise.
8191         * function.c (pass_instantiate_virtual_regs): Likewise.
8192         (pass_init_function): Likewise.
8193         (pass_leaf_regs): Likewise.
8194         (pass_match_asm_constraints): Likewise.
8195         * gimple-low.c (pass_lower_cf): Likewise.
8196         (pass_mark_used_blocks): Likewise.
8197         * init-regs.c (pass_initialize_regs): Likewise.
8198         * integrate.c (pass_initial_value_sets): Likewise.
8199         * ira.c (pass_ira): Likewise.
8200         * jump.c (pass_cleanup_barriers): Likewise.
8201         * omp-low.c (pass_expand_omp): Likewise.
8202         (pass_lower_omp): Likewise.
8203         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
8204         * recog.c (pass_split_all_insns): Likewise.
8205         (pass_split_after_reload): Likewise.
8206         (pass_split_before_regstack): Likewise.
8207         (pass_split_before_sched2): Likewise.
8208         (pass_split_for_shorten_branches): Likewise.
8209         * reginfo.c (pass_reginfo_init): Likewise.
8210         (pass_subregs_of_mode_init): Likewise.
8211         (pass_subregs_of_mode_finish): Likewise.
8212         * passes.c (pass_postreload): Likewise.
8213         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
8214         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
8215         (pass_warn_function_return): Likewise.
8216         (pass_warn_function_noreturn): Likewise.
8217         * tree-complex.c (pass_lower_complex): Likewise.
8218         (pass_lower_complex_O0): Likewise.
8219         * tree-if-conv.c (pass_if_conversion): Likewise.
8220         * tree-into-ssa.c (pass_build_ssa): Likewise.
8221         * tree-mudflap.c (pass_mudflap_1): Likewise.
8222         (pass_mudflap_2): Likewise.
8223         * tree-nomudflap.c (pass_mudflap_1): Likewise.
8224         (pass_mudflap_2): Likewise.
8225         * tree-nrv.c (pass_return_slot): Likewise.
8226         * tree-object-size.c (pass_object_sizes): Likewise.
8227         * tree-optimize.c (pass_all_optimizations): Likewise.
8228         (pass_early_local_passes): Likewise.
8229         (pass_all_early_optimizations): Likewise.
8230         (pass_cleanup_cfg): Likewise.
8231         (pass_cleanup_cfg_post_optimizing): Likewise.
8232         (pass_free_datastructures): Likewise.
8233         (pass_free_cfg_annotations): Likewise.
8234         (pass_fixup_cfg): Likewise.
8235         (pass_init_datastructures): Likewise.
8236         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
8237         (pass_late_warn_uninitialized): Likewise.
8238         (pass_update_address_taken): Likewise.
8239         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
8240         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
8241         (pass_cse_sincos): Likewise.
8242         (pass_convert_to_rsqrt): Likewise.
8243         * tree-ssa-structalias.c (pass_build_alias): Likewise.
8244         * tree-stdarg.c (pass_stdarg): Likewise.
8245         * tree-tailcall.c (pass_tail_recursion): Likewise.
8246         (pass_tail_calls): Likewise.
8247         * tree-vect-generic.c (pass_lower_vector): Likewise.
8248         (pass_lower_vector_ssa): Likewise.
8249         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
8250
8251 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
8252
8253         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
8254         XLR entry.
8255         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
8256         Handle -march=xlr.
8257         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
8258         logical and signext.
8259
8260 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
8261
8262         PR target/39767
8263         * config/sh/predicates.md (arith_operand): Check if the operand
8264         of TRUNCATE is a REG.
8265
8266 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8267
8268         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
8269         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
8270
8271 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8272
8273         * tree-iterator.c (tsi_split_statement_list_after,
8274         tsi_split_statement_list_before): Remove.
8275         * tree-iterator.h: Remove the prototypes for
8276         tsi_split_statement_list_after and tsi_split_statement_list_before.
8277
8278 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8279
8280         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
8281         * tree-ssa-propagate.h: Remove the prototype for
8282         stmt_makes_single_load.
8283
8284 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8285
8286         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
8287         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
8288
8289 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8290
8291         * tree-iterator.c (EXPR_LAST_BODY): Remove.
8292
8293 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8294
8295         * except.c (eh_region_outer_p): Remove.
8296         * except.h: Remove the prototype for eh_region_outer_p.
8297
8298 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
8299
8300         * function.c (current_function_assembler_name): Remove.
8301         * function.h: Remove the prototype for
8302         current_function_assembler_name.
8303
8304 2009-04-16  Ian Lance Taylor  <iant@google.com>
8305
8306         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
8307         (add_reg_note): Call alloc_reg_note.
8308         * rtl.h (alloc_reg_note): Declare.
8309         * combine.c (try_combine): Use alloc_reg_note.
8310         (recog_for_combine, move_deaths): Likewise.
8311         (distribute_notes): Use alloc_reg_note and add_reg_note.
8312         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
8313         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
8314         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
8315
8316 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
8317
8318         PR rtl-optimization/39762
8319         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
8320         ira_may_move_out_cost): Add comments about way of their usage.
8321         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
8322
8323         * ira-conflicts.c (process_regs_for_copy): Use function
8324         ira_get_register_move_cost instead of global
8325         ira_register_move_cost.
8326
8327         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
8328         color_pass, move_spill_restore, update_curr_costs): Ditto.
8329
8330         * ira-lives.c (process_single_reg_class_operands): Ditto.
8331
8332         * ira-emit.c (emit_move_list): Ditto.
8333
8334         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
8335         (record_reg_classes): Ditto.  Use functions
8336         ira_get_register_move_cost and ira_get_may_move_cost instead of
8337         global vars ira_register_move_cost, ira_may_move_out_cost and
8338         ira_may_move_in_cost.
8339         (record_address_regs): Don't call ira_init_register_move_cost.
8340         Use function ira_get_may_move_cost instead of global
8341         ira_may_move_in_cost.
8342         (process_bb_node_for_hard_reg_moves): Use function
8343         ira_get_register_move_cost instead of global ira_register_move_cost.
8344         (ira_costs): Don't call ira_init_register_move_cost.
8345
8346 2009-04-16  Richard Guenther  <rguenther@suse.de>
8347
8348         * tree-cfg.c (verify_gimple_assign_binary):
8349         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
8350         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
8351         (create_general_new_stmt): Note that this function is broken.
8352
8353 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
8354
8355         * common.opt (fhelp): Add Var(help_flag).
8356         * gcc-plugin.h (plugin_info): Add help.
8357         * plugin.c (plugin_name_args): Add help.
8358         (register_plugin_info): Set plugin->help.
8359         (print_help_one_plugin): New.
8360         (print_plugins_help): New.
8361         * plugin.h (print_plugins_help): New.
8362         * toplev.c (toplev_main): Call print_plugins_help if needed.
8363
8364 2009-04-16  Richard Guenther  <rguenther@suse.de>
8365
8366         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
8367         (gimple_ior_addresses_taken_1): New function.
8368         (gimple_ior_addresses_taken): Likewise.
8369         * gimple.h (struct gimple_statement_with_ops_base): Remove
8370         addresses_taken member.
8371         (gimple_ior_addresses_taken): Declare.
8372         (gimple_addresses_taken, gimple_addresses_taken_ptr,
8373         gimple_set_addresses_taken): Remove.
8374         * ipa-reference.c (mark_address): New function.
8375         (scan_stmt_for_static_refs): Use it for marking addresses taken.
8376         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
8377         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
8378         (gimple_add_to_addresses_taken): Remove.
8379         (get_tmr_operands): Call mark_address_taken.
8380         (get_asm_expr_operands): Likewise.
8381         (get_expr_operands): Likewise.
8382         (build_ssa_operands): Do not clear the addresses_taken bitmap.
8383         (free_stmt_operands): Do not free it.
8384         * tree-ssa.c (delete_tree_ssa): Likewise.
8385         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
8386
8387 2009-04-16  Richard Guenther  <rguenther@suse.de>
8388
8389         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
8390         (walk_stmt_load_store_ops): Likewise.
8391         * gimple.c (get_base_loadstore): New function.
8392         (walk_stmt_load_store_addr_ops): Likewise.
8393         (walk_stmt_load_store_ops): Likewise.
8394         * ipa-pure-const.c (check_op): Simplify.
8395         (check_load, check_store): New functions.
8396         (check_stmt): Use walk_stmt_load_store_ops.
8397         * ipa-reference.c (mark_load): Adjust signature.
8398         (mark_store): Likewise.
8399         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
8400
8401 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
8402
8403         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
8404         (plugin_info): New.
8405         * opts.c (common_handle_option): Don't call print_version.
8406         * plugin.c (plugin_name_args): Add version.
8407         (register_plugin_info): New.
8408         (register_callback): Handle PLUGIN_INFO.
8409         (try_init_one_plugin): New.
8410         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
8411         if failed to init.
8412         (finalize_one_plugin): New.
8413         (finalize_plugins): New.
8414         (print_one_plugin): New.
8415         (print_plugins_versions): New.
8416         * plugin.h (print_plugins_versions): New.
8417         (finalize_plugins): New.
8418         * toplev.c (compile_file): Don't call initialize_plugins.
8419         (print_version): Call print_plugins_versions.
8420         (toplev_main): Call initialize_plugins. Print version if needed.
8421         Call finalize_plugins.
8422
8423 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
8424
8425         * common.opt (fversion): New.
8426         * gcc.c (print_version): New.
8427         (process_command): Don't print the version. Just set print_version.
8428         (main): Print version. Call subprocesses if print_version and
8429         verbose_flag are set.
8430         * opts.c (common_handle_option): Handle OPT_fversion.
8431
8432 2009-04-16  Richard Guenther  <rguenther@suse.de>
8433             Ira Rosen  <irar@il.ibm.com>
8434
8435         PR tree-optimization/39698
8436         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
8437         type of the reduction variable.  Only generate the def if
8438         it is needed.
8439
8440         * omp-low.c (expand_omp_for_generic): When converting to a pointer
8441         make sure to first convert to an integer of the same precision.
8442         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
8443         the type of the evolution correctly in computing the new
8444         induction variable base.
8445
8446 2009-04-16  Richard Guenther  <rguenther@suse.de>
8447
8448         PR middle-end/39625
8449         * tree-cfg.c (make_blocks): Split statements with to-be
8450         abnormal SSA names on the lhs.
8451
8452 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
8453
8454         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
8455         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
8456         * c-typeck.c (really_start_incremental_init): Likewise.
8457         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
8458         (TARGET_INITIALIZER): Remove it.
8459         * target.h (struct target): Remove vector_opaque_p.
8460         * tree.c (build_opaque_vector_type): New.
8461         * tree.h (TYPE_VECTOR_OPAQUE): New.
8462         (build_opaque_vector_type): Declare.
8463         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
8464         * config/rs6000/rs6000.c (build_opaque_vector_type,
8465         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
8466         (rs6000_init_builtins): Use build_opaque_vector_type for
8467         opaque_V4SI_type_node.
8468
8469 2009-04-15  Catherine Moore  <clm@codesourcery.com>
8470
8471         * debug.h (set_name):  Declare.
8472         * dwarf2out.c (dwarf2out_set_name): Declare.
8473         (dwarf2_debug_hooks): Add set_name.
8474         (find_AT_string): New.
8475         (add_AT_string): Call find_AT_string.
8476         (dwarf2out_set_name): New.
8477         * cp/decl.c (grokdeclarator): Call set_name.
8478         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
8479         * debug.c (do_nothing_debug_hooks):  Likewise.
8480         * dbxout.c (dbx_debug_hooks): Likewise.
8481         * sdbout.c (sdb_debug_hooks): Likewise.
8482
8483 2009-04-15  Michael Eager  <eager@eagercon.com>
8484
8485         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
8486         reg for single-precision FPU.
8487         * config/rs6000/rs6000.md (movsi_internal1): Only for
8488         !TARGET_SINGLE_FPU.
8489         (movsi_internal1_single): New. Add pattern to move SI values to/from
8490         single-precision FP regs.
8491
8492 2009-04-15  Richard Guenther  <rguenther@suse.de>
8493
8494         * omp-low.c (lower_rec_input_clauses): Build correct address
8495         expressions.
8496         (expand_omp_for_generic): Fix multiplication type.
8497         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
8498         (generate_memset_zero): Fix types.
8499         * tree-profile.c (prepare_instrumented_value): Correctly
8500         widen a pointer.
8501
8502 2009-04-15  Ian Lance Taylor  <iant@google.com>
8503
8504         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
8505         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
8506         for -Wall and for -Wc++-compat.
8507         (c_common_post_options): For C++, set warn_enum_compare if not
8508         already set.
8509         * c-tree.h (struct c_expr): Add field original_type.
8510         (build_external_ref): Update declaration.
8511         * c-parser.c (c_parser_braced_init): Set original_type.
8512         (c_parser_initelt): Likewise.
8513         (c_parser_expr_no_commas): Likewise.
8514         (c_parser_conditional_expression): Likewise.
8515         (c_parser_cast_expression): Likewise.
8516         (c_parser_unary_expression): Likewise.  Pull setting of
8517         original_code to top of function.
8518         (c_parser_sizeof_expression): Set original_type.
8519         (c_parser_alignof_expression): Likewise.
8520         (c_parser_postfix_expression): Likewise.  Pull setting of
8521         original_code to top of function.
8522         (c_parser_postfix_expression_after_paren_type): Set original_type.
8523         (c_parser_postfix_expression_after_primary): Likewise.
8524         (c_parser_expression): Likewise.
8525         * c-typeck.c (build_external_ref): Add type parameter.  Change all
8526         callers.
8527         (c_expr_sizeof_expr): Set original_type field.
8528         (parser_build_unary_op): Likewise.
8529         (parser_build_binary_op): Likewise.  Optionally warn about
8530         comparisons of enums of different types.
8531         (digest_init): Set original_type field.
8532         (really_start_incremental_init): Likewise.
8533         (push_init_level, pop_init_level): Likewise.
8534         * doc/invoke.texi (Warning Options): -Wenum-compare now
8535         supported in C.
8536
8537 2009-04-15  Richard Guenther  <rguenther@suse.de>
8538
8539         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
8540         out a necessary conversion.
8541         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
8542         names we didn't value number.
8543         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
8544
8545 2009-04-15  Richard Guenther  <rguenther@suse.de>
8546
8547         PR tree-optimization/39764
8548         * tree-ssa-ccp.c (get_value): Canonicalize value with
8549         canonicalize_float_value.
8550
8551 2009-04-15  Jan Hubicka  <jh@suse.cz>
8552
8553         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
8554         Wrong version of patch.
8555
8556 2009-04-15  Jan Hubicka  <jh@suse.cz>
8557
8558         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
8559
8560 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
8561
8562         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
8563         our distinct integral and vector types.
8564
8565 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
8566
8567         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
8568         * init.c (build_vtbl_address): Remove call to assemble_external.
8569
8570 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
8571
8572         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
8573         output for other floating point modes.
8574
8575 2009-04-14  Diego Novillo  <dnovillo@google.com>
8576
8577         * diagnostic.c (diagnostic_report_diagnostic): Do not
8578         warn about loaded plugins for DK_ERROR and DK_WARNING.
8579         * c-decl.c (declspecs_add_type): Move call to
8580         invoke_plugin_callbacks ...
8581         * c-parser.c (c_parser_declspecs): ... here.
8582         * plugin.c (dump_active_plugins): Tidy output.
8583
8584 2009-04-14  Diego Novillo  <dnovillo@google.com>
8585             Le-Chun Wu  <lcwu@google.com>
8586
8587         * configure.ac: Add --enable-plugin support.
8588         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
8589         * Makefile.in (PLUGIN_H): Define.
8590         Export ENABLE_PLUGIN and GMPINC to site.exp.
8591         Add PLUGINLIBS to link command.
8592         Add/modify dependencies for plugin.o and files including plugin.h.
8593         (plugin.o): New.
8594         * config.in: Regenerate.
8595
8596         * opts.c (common_handle_option): Handle OPT_fplugin_ and
8597         OPT_fplugin_arg_.
8598
8599 2009-04-14  Le-Chun Wu  <lcwu@google.com>
8600
8601         * tree-pass.h (register_one_dump_file): Add a prototype for
8602         register_one_dump_file.
8603         * toplev.c (compile_file): Call initialize_plugins.
8604         (do_compile): Call invoke_plugin_callbacks.
8605         (toplev_main): Call invoke_plugin_callbacks.
8606         * common.opt: Add -fplugin= and -fplugin-arg-.
8607         * gcc-plugin.h: New public header file for plugins to include.
8608         * plugin.c: New source file.
8609         * plugin.h: New internal header file.
8610         * passes.c (register_one_dump_file): Make it external.
8611
8612         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
8613
8614 2009-04-14  Diego Novillo  <dnovillo@google.com>
8615
8616         * doc/plugins.texi: New.
8617         * doc/gccint.texi: Add reference to Plugins chapter.
8618         * doc/invoke.texi: Document -fplugin and -fplugin-arg
8619         * diagnostic.c (diagnostic_report_diagnostic): Warn about
8620         loaded plugins, if any.
8621         * timevar.def (TV_PLUGIN_INIT): Define.
8622         (TV_PLUGIN_RUN): Define.
8623         * plugin.c: Include timevar.h
8624         (plugins_active_p): New.
8625         (dump_active_plugins): New.
8626         (debug_active_plugins): New.
8627
8628 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
8629
8630         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
8631         library paths.
8632         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
8633
8634 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
8635
8636         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
8637         the same as a minus without a shift.
8638
8639 2009-04-14  Nick Clifton  <nickc@redhat.com>
8640
8641         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
8642         comparisons with small integers will always produce a short
8643         branch.
8644
8645 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
8646
8647         Merge:
8648         2008-12-19  Diego Novillo  <dnovillo@google.com>
8649
8650         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
8651
8652 2009-04-14  Richard Guenther  <rguenther@suse.de>
8653
8654         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
8655         verification.
8656         (verify_gimple_assign_binary): Likewise.  Handle shifts and
8657         rotates correctly.
8658         (verify_gimple_phi): Print the mismatched argument position.
8659         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
8660         Fix types.
8661         (vect_update_init_of_dr): Likewise.
8662         * matrix-reorg.c (transform_access_sites): Do what the
8663         comment suggests.
8664         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
8665
8666 2009-04-13  Michael Eager  <eager@eagercon.com>
8667
8668         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
8669         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
8670         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
8671         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
8672         remove duplicate config
8673
8674 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
8675
8676         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
8677         file_name:line_number type locator of the call site.
8678
8679 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
8680
8681         * genautomata.c: Put blank after comma.
8682         (automaton_decls): New.
8683         (struct unit_usage): Add comments to member next.
8684         (store_alt_unit_usage): Keep the list ordered.
8685         (unit_present_on_list_p, equal_alternatives_p): New.
8686         (check_regexp_units_distribution): Check units distribution
8687         correctness correctly.
8688         (main): Don't write automata if error is found.  Return correct
8689         exit code.
8690
8691         * config/m68k/cf.md (cfv4_ds): Remove.
8692         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
8693         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
8694
8695         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
8696         power4-load-ext, power4-store, power4-store-update,
8697         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
8698         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
8699         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
8700         power4-sqrt, power4-isync): Modify reservation to make correct
8701         unit distribution to automata.
8702
8703         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
8704         power5-store-update, power5-two, power5-three, power5-lmul,
8705         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
8706
8707 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
8708
8709         * except.c (pass_set_nothrow_function_flags): Set name and add
8710         TODO_dump_func.
8711         (set_nothrow_function_flags): Mention in the dump file when
8712         changing a function to nothrow.
8713
8714 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
8715
8716         PR/39066
8717         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
8718         instead of unsigned long.
8719
8720 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8721
8722         * config/arm/arm.c (return_used_this_function): Remove.
8723         (arm_output_function_prologue): Remove use of
8724         return_used_this_function.
8725         (output_return_instruction): Replace use of
8726         return_used_this_function
8727         by cfun->machine->return_used_this_function.
8728         (arm_output_epilogue): Likewise.
8729         (arm_output_function_epilogue): Likewise.
8730         (thumb_unexpanded_epilogue): Likewise.
8731         * config/arm/arm.h (struct machine_function):
8732         New member return_used_this_function.
8733
8734 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
8735
8736         * doc/install.texi: Correct description of default directory for
8737         --with-gxx-include-dir.
8738
8739 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
8740
8741         * fold-const.c (build_range_check): Properly deal with enumeral and
8742         boolean base types.
8743
8744 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
8745
8746         * doc/invoke.texi (max_gcse_passes): Remove documentation.
8747         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
8748         * params.h (MAX_GCSE_PASSES): Remove.
8749         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
8750         in sequence.  Remove ability to run multiple passes.
8751         (bypass_jumps): Report run as third CPROP pass.
8752
8753 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
8754
8755         PR middle-end/39651
8756         * except.c (can_throw_external): Look at each insn in a SEQUENCE
8757         when deciding whether the whole SEQUENCE can throw.
8758
8759 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
8760
8761         PR target/39740
8762         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
8763         offseted label references.
8764
8765 2009-04-11  Jan Hubicka  <jh@suse.cz>
8766
8767         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
8768
8769 2009-04-11  Richard Guenther  <rguenther@suse.de>
8770
8771         PR middle-end/39732
8772         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
8773         return variables as TREE_ADDRESSABLE.
8774
8775 2009-04-11  Richard Guenther  <rguenther@suse.de>
8776
8777         PR tree-optimization/39713
8778         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
8779         reference trees have SSA_NAME operands.
8780
8781 2009-04-11  Richard Guenther  <rguenther@suse.de>
8782
8783         PR c/39712
8784         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
8785         address expressions.
8786
8787 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
8788
8789         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
8790         match changes in Cygwin 1.7
8791         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
8792         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
8793
8794 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
8795
8796         PR tree-optimization/39701
8797         * doc/invoke.texi (Optimization Options): Document change in
8798         meaning and initialization of -fdelete-null-pointer-checks.
8799
8800 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
8801
8802         PR middle-end/39701
8803         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
8804
8805         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
8806         here.
8807
8808         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
8809
8810 2009-04-10  Chao-ying Fu  <fu@mips.com>
8811
8812         * doc/tm.texi (Instruction Output): Document
8813         TARGET_ASM_FINAL_POSTSCAN_INSN.
8814         * target.h (final_postscan_insn): New field in asm_out.
8815         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
8816         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
8817         * final.c (final_scan_insn): Call
8818         targetm.asm_out.final_postscan_insn after outputting
8819         an asm macro and a normal instruction.
8820
8821         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
8822         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
8823         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
8824         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
8825         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
8826
8827 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
8828
8829         PR middle-end/39701
8830         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
8831         variables as non-NULL even with -fdelete-null-pointer-checks.
8832
8833 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
8834
8835         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
8836
8837 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
8838
8839         PR target/39678
8840         * config/i386/i386.c (classify_argument): Handle SCmode with
8841         (bit_offset % 64) != 0.
8842
8843 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
8844
8845         * doc/invoke.texi (Optimize Options): Add cross-reference to
8846         -Q --help=optimizers examples.
8847
8848 2009-04-10  Ben Elliston  <bje@au.ibm.com>
8849
8850         PR target/36800
8851         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
8852         regalign for the reg == fpr and TDmode case.
8853
8854 2009-04-09  David Ayers  <ayers@fsfe.org>
8855
8856         PR objc/29200
8857         * objc/objc-act.c (warn_with_method): Remove helper function.
8858         (check_duplicates): Call warning and inform directly.
8859         (really_start_method): Likewise.
8860
8861 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
8862
8863         * expmed.c (expand_divmod): Always use a comparison for a division
8864         by a large unsigned integer.
8865
8866         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
8867         for things others than variables or functions as nonzero.
8868
8869 2009-04-09  Nick Clifton  <nickc@redhat.com>
8870
8871         * unwind-compat.c: Change copyright header to refer to version
8872         3 of the GNU General Public License with version 3.1 of the
8873         GCC Runtime Library Exception and to point readers at the
8874         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
8875         * config/alpha/crtfastmath.c: Likewise.
8876         * config/alpha/linux-unwind.h: Likewise.
8877         * config/alpha/qrnnd.asm: Likewise.
8878         * config/alpha/vms-crt0-64.c: Likewise.
8879         * config/alpha/vms-crt0.c: Likewise.
8880         * config/alpha/vms-dwarf2.asm: Likewise.
8881         * config/alpha/vms-dwarf2eh.asm: Likewise.
8882         * config/alpha/vms-psxcrt0-64.c: Likewise.
8883         * config/alpha/vms-psxcrt0.c: Likewise.
8884         * config/alpha/vms_tramp.asm: Likewise.
8885         * config/arc/initfini.c: Likewise.
8886         * config/arc/lib1funcs.asm: Likewise.
8887         * config/arm/bpabi-v6m.S: Likewise.
8888         * config/arm/bpabi.S: Likewise.
8889         * config/arm/bpabi.c: Likewise.
8890         * config/arm/crti.asm: Likewise.
8891         * config/arm/crtn.asm: Likewise.
8892         * config/arm/ieee754-df.S: Likewise.
8893         * config/arm/ieee754-sf.S: Likewise.
8894         * config/arm/lib1funcs.asm: Likewise.
8895         * config/arm/libunwind.S: Likewise.
8896         * config/arm/linux-atomic.c: Likewise.
8897         * config/arm/mmintrin.h: Likewise.
8898         * config/arm/pr-support.c: Likewise.
8899         * config/arm/unaligned-funcs.c: Likewise.
8900         * config/arm/unwind-arm.c: Likewise.
8901         * config/arm/unwind-arm.h: Likewise.
8902         * config/avr/libgcc.S: Likewise.
8903         * config/bfin/crti.s: Likewise.
8904         * config/bfin/crtlibid.s: Likewise.
8905         * config/bfin/crtn.s: Likewise.
8906         * config/bfin/lib1funcs.asm: Likewise.
8907         * config/bfin/linux-unwind.h: Likewise.
8908         * config/cris/arit.c: Likewise.
8909         * config/cris/cris_abi_symbol.c: Likewise.
8910         * config/darwin-64.c: Likewise.
8911         * config/darwin-crt2.c: Likewise.
8912         * config/darwin-crt3.c: Likewise.
8913         * config/darwin.h: Likewise.
8914         * config/dbxelf.h: Likewise.
8915         * config/dfp-bit.c: Likewise.
8916         * config/dfp-bit.h: Likewise.
8917         * config/elfos.h: Likewise.
8918         * config/fixed-bit.c: Likewise.
8919         * config/fixed-bit.h: Likewise.
8920         * config/fp-bit.c: Likewise.
8921         * config/fp-bit.h: Likewise.
8922         * config/fr30/crti.asm: Likewise.
8923         * config/fr30/crtn.asm: Likewise.
8924         * config/fr30/lib1funcs.asm: Likewise.
8925         * config/freebsd-spec.h: Likewise.
8926         * config/frv/cmovd.c: Likewise.
8927         * config/frv/cmovh.c: Likewise.
8928         * config/frv/cmovw.c: Likewise.
8929         * config/frv/frvbegin.c: Likewise.
8930         * config/frv/frvend.c: Likewise.
8931         * config/frv/lib1funcs.asm: Likewise.
8932         * config/glibc-stdint.h: Likewise.
8933         * config/h8300/clzhi2.c: Likewise.
8934         * config/h8300/crti.asm: Likewise.
8935         * config/h8300/crtn.asm: Likewise.
8936         * config/h8300/ctzhi2.c: Likewise.
8937         * config/h8300/fixunssfsi.c: Likewise.
8938         * config/h8300/lib1funcs.asm: Likewise.
8939         * config/h8300/parityhi2.c: Likewise.
8940         * config/h8300/popcounthi2.c: Likewise.
8941         * config/i386/ammintrin.h: Likewise.
8942         * config/i386/att.h: Likewise.
8943         * config/i386/avxintrin.h: Likewise.
8944         * config/i386/biarch64.h: Likewise.
8945         * config/i386/bmmintrin.h: Likewise.
8946         * config/i386/cpuid.h: Likewise.
8947         * config/i386/cross-stdarg.h: Likewise.
8948         * config/i386/crtfastmath.c: Likewise.
8949         * config/i386/crtprec.c: Likewise.
8950         * config/i386/cygming-crtbegin.c: Likewise.
8951         * config/i386/cygming-crtend.c: Likewise.
8952         * config/i386/cygwin.asm: Likewise.
8953         * config/i386/emmintrin.h: Likewise.
8954         * config/i386/gmm_malloc.h: Likewise.
8955         * config/i386/gthr-win32.c: Likewise.
8956         * config/i386/i386.h: Likewise.
8957         * config/i386/immintrin.h: Likewise.
8958         * config/i386/linux-unwind.h: Likewise.
8959         * config/i386/linux64.h: Likewise.
8960         * config/i386/mm3dnow.h: Likewise.
8961         * config/i386/mmintrin-common.h: Likewise.
8962         * config/i386/mmintrin.h: Likewise.
8963         * config/i386/nmmintrin.h: Likewise.
8964         * config/i386/pmm_malloc.h: Likewise.
8965         * config/i386/pmmintrin.h: Likewise.
8966         * config/i386/smmintrin.h: Likewise.
8967         * config/i386/sol2-c1.asm: Likewise.
8968         * config/i386/sol2-ci.asm: Likewise.
8969         * config/i386/sol2-cn.asm: Likewise.
8970         * config/i386/sol2-gc1.asm: Likewise.
8971         * config/i386/tmmintrin.h: Likewise.
8972         * config/i386/unix.h: Likewise.
8973         * config/i386/w32-unwind.h: Likewise.
8974         * config/i386/wmmintrin.h: Likewise.
8975         * config/i386/x86-64.h: Likewise.
8976         * config/i386/x86intrin.h: Likewise.
8977         * config/i386/xmmintrin.h: Likewise.
8978         * config/ia64/crtbegin.asm: Likewise.
8979         * config/ia64/crtend.asm: Likewise.
8980         * config/ia64/crtfastmath.c: Likewise.
8981         * config/ia64/crti.asm: Likewise.
8982         * config/ia64/crtn.asm: Likewise.
8983         * config/ia64/fde-glibc.c: Likewise.
8984         * config/ia64/lib1funcs.asm: Likewise.
8985         * config/ia64/linux-unwind.h: Likewise.
8986         * config/ia64/quadlib.c: Likewise.
8987         * config/ia64/unwind-ia64.c: Likewise.
8988         * config/linux.h: Likewise.
8989         * config/m32c/m32c-lib1.S: Likewise.
8990         * config/m32c/m32c-lib2-trapv.c: Likewise.
8991         * config/m32c/m32c-lib2.c: Likewise.
8992         * config/m32r/initfini.c: Likewise.
8993         * config/m68hc11/larith.asm: Likewise.
8994         * config/m68hc11/m68hc11-crt0.S: Likewise.
8995         * config/m68k/cf.md: Likewise.
8996         * config/m68k/crti.s: Likewise.
8997         * config/m68k/crtn.s: Likewise.
8998         * config/m68k/lb1sf68.asm: Likewise.
8999         * config/m68k/linux-unwind.h: Likewise.
9000         * config/mcore/crti.asm: Likewise.
9001         * config/mcore/crtn.asm: Likewise.
9002         * config/mcore/lib1.asm: Likewise.
9003         * config/mips/linux-unwind.h: Likewise.
9004         * config/mips/loongson.h: Likewise.
9005         * config/mips/mips16.S: Likewise.
9006         * config/mmix/crti.asm: Likewise.
9007         * config/mmix/crtn.asm: Likewise.
9008         * config/pa/fptr.c: Likewise.
9009         * config/pa/hpux-unwind.h: Likewise.
9010         * config/pa/lib2funcs.asm: Likewise.
9011         * config/pa/linux-atomic.c: Likewise.
9012         * config/pa/linux-unwind.h: Likewise.
9013         * config/pa/milli64.S: Likewise.
9014         * config/pa/quadlib.c: Likewise.
9015         * config/pa/stublib.c: Likewise.
9016         * config/picochip/libgccExtras/adddi3.asm: Likewise.
9017         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
9018         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
9019         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
9020         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
9021         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
9022         * config/picochip/libgccExtras/divmod15.asm: Likewise.
9023         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
9024         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
9025         * config/picochip/libgccExtras/longjmp.asm: Likewise.
9026         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
9027         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
9028         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
9029         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
9030         * config/picochip/libgccExtras/setjmp.asm: Likewise.
9031         * config/picochip/libgccExtras/subdi3.asm: Likewise.
9032         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
9033         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
9034         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
9035         * config/rs6000/750cl.h: Likewise.
9036         * config/rs6000/altivec.h: Likewise.
9037         * config/rs6000/biarch64.h: Likewise.
9038         * config/rs6000/crtresfpr.asm: Likewise.
9039         * config/rs6000/crtresgpr.asm: Likewise.
9040         * config/rs6000/crtresxfpr.asm: Likewise.
9041         * config/rs6000/crtresxgpr.asm: Likewise.
9042         * config/rs6000/crtsavfpr.asm: Likewise.
9043         * config/rs6000/crtsavgpr.asm: Likewise.
9044         * config/rs6000/darwin-asm.h: Likewise.
9045         * config/rs6000/darwin-fallback.c: Likewise.
9046         * config/rs6000/darwin-fpsave.asm: Likewise.
9047         * config/rs6000/darwin-ldouble.c: Likewise.
9048         * config/rs6000/darwin-tramp.asm: Likewise.
9049         * config/rs6000/darwin-unwind.h: Likewise.
9050         * config/rs6000/darwin-vecsave.asm: Likewise.
9051         * config/rs6000/darwin-world.asm: Likewise.
9052         * config/rs6000/e500crtres32gpr.asm: Likewise.
9053         * config/rs6000/e500crtres64gpr.asm: Likewise.
9054         * config/rs6000/e500crtres64gprctr.asm: Likewise.
9055         * config/rs6000/e500crtrest32gpr.asm: Likewise.
9056         * config/rs6000/e500crtrest64gpr.asm: Likewise.
9057         * config/rs6000/e500crtresx32gpr.asm: Likewise.
9058         * config/rs6000/e500crtresx64gpr.asm: Likewise.
9059         * config/rs6000/e500crtsav32gpr.asm: Likewise.
9060         * config/rs6000/e500crtsav64gpr.asm: Likewise.
9061         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
9062         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
9063         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
9064         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
9065         * config/rs6000/eabi-ci.asm: Likewise.
9066         * config/rs6000/eabi-cn.asm: Likewise.
9067         * config/rs6000/eabi.asm: Likewise.
9068         * config/rs6000/linux-unwind.h: Likewise.
9069         * config/rs6000/linux64.h: Likewise.
9070         * config/rs6000/paired.h: Likewise.
9071         * config/rs6000/paired.md: Likewise.
9072         * config/rs6000/ppc64-fp.c: Likewise.
9073         * config/rs6000/ppu_intrinsics.h: Likewise.
9074         * config/rs6000/rs6000.h: Likewise.
9075         * config/rs6000/si2vmx.h: Likewise.
9076         * config/rs6000/sol-ci.asm: Likewise.
9077         * config/rs6000/sol-cn.asm: Likewise.
9078         * config/rs6000/spe.h: Likewise.
9079         * config/rs6000/spu2vmx.h: Likewise.
9080         * config/rs6000/sysv4.h: Likewise.
9081         * config/rs6000/tramp.asm: Likewise.
9082         * config/rs6000/vec_types.h: Likewise.
9083         * config/s390/linux-unwind.h: Likewise.
9084         * config/s390/tpf-unwind.h: Likewise.
9085         * config/score/crti.asm: Likewise.
9086         * config/score/crtn.asm: Likewise.
9087         * config/sh/crt1.asm: Likewise.
9088         * config/sh/crti.asm: Likewise.
9089         * config/sh/crtn.asm: Likewise.
9090         * config/sh/divtab-sh4-300.c: Likewise.
9091         * config/sh/divtab-sh4.c: Likewise.
9092         * config/sh/divtab.c: Likewise.
9093         * config/sh/lib1funcs-4-300.asm: Likewise.
9094         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
9095         * config/sh/lib1funcs.asm: Likewise.
9096         * config/sh/lib1funcs.h: Likewise.
9097         * config/sh/linux-atomic.asm: Likewise.
9098         * config/sh/linux-unwind.h: Likewise.
9099         * config/sh/shmedia.h: Likewise.
9100         * config/sh/sshmedia.h: Likewise.
9101         * config/sh/ushmedia.h: Likewise.
9102         * config/sparc/crtfastmath.c: Likewise.
9103         * config/sparc/linux-unwind.h: Likewise.
9104         * config/sparc/sol2-c1.asm: Likewise.
9105         * config/sparc/sol2-ci.asm: Likewise.
9106         * config/sparc/sol2-cn.asm: Likewise.
9107         * config/spu/divmodti4.c: Likewise.
9108         * config/spu/divv2df3.c: Likewise.
9109         * config/spu/float_disf.c: Likewise.
9110         * config/spu/float_unsdidf.c: Likewise.
9111         * config/spu/float_unsdisf.c: Likewise.
9112         * config/spu/float_unssidf.c: Likewise.
9113         * config/spu/mfc_multi_tag_release.c: Likewise.
9114         * config/spu/mfc_multi_tag_reserve.c: Likewise.
9115         * config/spu/mfc_tag_release.c: Likewise.
9116         * config/spu/mfc_tag_reserve.c: Likewise.
9117         * config/spu/mfc_tag_table.c: Likewise.
9118         * config/spu/multi3.c: Likewise.
9119         * config/spu/spu_internals.h: Likewise.
9120         * config/spu/spu_intrinsics.h: Likewise.
9121         * config/spu/spu_mfcio.h: Likewise.
9122         * config/spu/vec_types.h: Likewise.
9123         * config/spu/vmx2spu.h: Likewise.
9124         * config/stormy16/stormy16-lib2.c: Likewise.
9125         * config/svr4.h: Likewise.
9126         * config/sync.c: Likewise.
9127         * config/v850/lib1funcs.asm: Likewise.
9128         * config/vxlib-tls.c: Likewise.
9129         * config/vxlib.c: Likewise.
9130         * config/vxworks-dummy.h: Likewise.
9131         * config/xtensa/crti.asm: Likewise.
9132         * config/xtensa/crtn.asm: Likewise.
9133         * config/xtensa/ieee754-df.S: Likewise.
9134         * config/xtensa/ieee754-sf.S: Likewise.
9135         * config/xtensa/lib1funcs.asm: Likewise.
9136         * config/xtensa/lib2funcs.S: Likewise.
9137         * config/xtensa/linux-unwind.h: Likewise.
9138         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
9139         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
9140         * coretypes.h: Likewise.
9141         * crtstuff.c: Likewise.
9142         * defaults.h: Likewise.
9143         * dwarf2.h: Likewise.
9144         * emutls.c: Likewise.
9145         * gbl-ctors.h: Likewise.
9146         * gcov-io.h: Likewise.
9147         * ginclude/float.h: Likewise.
9148         * ginclude/iso646.h: Likewise.
9149         * ginclude/stdarg.h: Likewise.
9150         * ginclude/stdbool.h: Likewise.
9151         * ginclude/stddef.h: Likewise.
9152         * ginclude/stdfix.h: Likewise.
9153         * ginclude/stdint-gcc.h: Likewise.
9154         * ginclude/tgmath.h: Likewise.
9155         * gthr-aix.h: Likewise.
9156         * gthr-dce.h: Likewise.
9157         * gthr-gnat.c: Likewise.
9158         * gthr-gnat.h: Likewise.
9159         * gthr-lynx.h: Likewise.
9160         * gthr-mipssde.h: Likewise.
9161         * gthr-nks.h: Likewise.
9162         * gthr-posix.c: Likewise.
9163         * gthr-posix.h: Likewise.
9164         * gthr-posix95.h: Likewise.
9165         * gthr-rtems.h: Likewise.
9166         * gthr-single.h: Likewise.
9167         * gthr-solaris.h: Likewise.
9168         * gthr-tpf.h: Likewise.
9169         * gthr-vxworks.h: Likewise.
9170         * gthr-win32.h: Likewise.
9171         * gthr.h: Likewise.
9172         * libgcc2.c: Likewise.
9173         * libgcc2.h: Likewise.
9174         * libgcov.c: Likewise.
9175         * tsystem.h: Likewise.
9176         * typeclass.h: Likewise.
9177         * unwind-c.c: Likewise.
9178         * unwind-compat.h: Likewise.
9179         * unwind-dw2-fde-compat.c: Likewise.
9180         * unwind-dw2-fde-darwin.c: Likewise.
9181         * unwind-dw2-fde-glibc.c: Likewise.
9182         * unwind-dw2-fde.c: Likewise.
9183         * unwind-dw2-fde.h: Likewise.
9184         * unwind-dw2.c: Likewise.
9185         * unwind-dw2.h: Likewise.
9186         * unwind-generic.h: Likewise.
9187         * unwind-pe.h: Likewise.
9188         * unwind-sjlj.c: Likewise.
9189         * unwind.inc: Likewise.
9190         * config/arm/neon-gen.ml: Change generated copyright header to
9191         refer to version 3 of the GNU General Public License with
9192         version 3.1 of the GCC Runtime Library Exception and to point
9193         readers at the COPYING3 and COPYING3.RUNTIME files and the
9194         FSF's license web page.
9195         * config/arm/arm_neon.h: Regenerate.
9196
9197 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
9198
9199         * config/cris/cris.md: Change copyright header to refer to version
9200         3 of the GNU General Public License.
9201         * doc/install.texi2html: Change copyright header to refer to version
9202         3 of the GNU General Public License and to point readers at the
9203         COPYING3 file and the FSF's license web page.
9204         * config/vax/linux.h: Likewise.
9205
9206 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
9207
9208         * config/i386/i386.md (cmpcc): New.
9209         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
9210         (sync_compare_and_swap_cc*): Delete.
9211
9212         * config/s390/s390.c (s390_compare_emitted): Remove.
9213         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
9214         s390_compare_emitted used to be handled.  Assert that modes match.
9215         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
9216         refer to sync_compare_and_swap_ccsi.
9217         * config/s390/s390.h (s390_compare_emitted): Remove.
9218         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
9219         instead of s390_compare_emitted.
9220         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
9221         instead of s390_compare_emitted.
9222         * config/s390/s390.md (cmpcc): New.
9223         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
9224         CC_REGNUM, do not pretend it's set.
9225         (sync_compare_and_swap_cc*): Delete.
9226         * config/s390/predicates.md (cc_reg_operand): New.
9227
9228         * expr.c (sync_compare_and_swap_cc): Delete.
9229         * optabs.h (sync_compare_and_swap_cc): Delete.
9230         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
9231         is being used with can_compare_p.
9232         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
9233         (find_cc_set): New.
9234         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
9235         look for a MODE_CC set instead.  Use emit_store_flag.
9236         (expand_compare_and_swap_loop): Likewise, with some additional
9237         complication to avoid a force_reg when useless.  Use
9238         emit_cmp_and_jump_insns.
9239         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
9240         * doc/md.texi (sync_compare_and_swap_cc): Merge with
9241         sync_compare_and_swap documentation.
9242
9243 2009-04-09  Jan Hubicka  <jh@suse.cz>
9244
9245         * except.c (find_prev_try): Break out from ....
9246         (duplicate_eh_regions): ... here; properly update prev_try pointers
9247         when duplication part of tree.
9248         (dump_eh_tree): Improve dumping.
9249         (verify_eh_region): New.
9250         (verify_eh_tree): Use it.
9251
9252 2009-04-06  Richard Guenther  <rguenther@suse.de>
9253
9254         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
9255         &ARRAY addresses by adjusting their types and prepending
9256         a conversion.
9257         * tree-cfg.c (verify_gimple_assign_single): Verify that
9258         addresses are correct.
9259
9260 2009-04-09  Richard Guenther  <rguenther@suse.de>
9261
9262         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
9263         indices into an array reference if possible.
9264         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
9265         Fold POINTER_PLUS_EXPR statements with invariant address.
9266
9267 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
9268
9269         PR target/39634
9270         * config.gcc (powerpc64-*-linux*): Always build biarch.
9271
9272 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
9273
9274         PR c/39613
9275         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
9276         it and pedwarn if this results in an INTEGER_CST.
9277
9278 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9279
9280         * doc/install.texi: Update minimum GMP version.  Remove obsolete
9281         text in MPFR section.
9282
9283 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
9284
9285         * dwarf2out.c (class_scope_p): New static inline.
9286         (class_or_namespace_scope_p): Use it.
9287         (gen_variable_die): Use DW_TAG_member tag for static data member
9288         declarations instead of DW_TAG_variable.
9289
9290         PR middle-end/39573
9291         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
9292         variables.
9293
9294 2009-04-08  Richard Guenther  <rguenther@suse.de>
9295
9296         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
9297         valueize random data.
9298
9299 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
9300
9301         * config.gcc (aix tm_file):  Add aix-stdint.h.
9302         (aix tm clause use_gcc_stdint):  Set to wrap.
9303         * config/rs6000/aix-stdint.h:  New file.
9304
9305 2009-04-08  Richard Guenther  <rguenther@suse.de>
9306
9307         PR middle-end/36291
9308         * tree-dfa.c (add_referenced_var): Do not recurse into
9309         global initializers.
9310         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
9311         exposed variables.
9312         (fold_const_aggregate_ref): Likewise.
9313
9314 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
9315
9316         * recog.c (ordered_comparison_operator): New.
9317         * gensupport.c (std_preds): Add it.
9318         * doc/md.texi (Machine-Independent Predicates): Document it.
9319
9320 2009-04-08  Jan Hubicka  <jh@suse.cz>
9321
9322         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
9323         * function.h (rtl_eh): Remove exception_handler_label_map.
9324         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
9325         remove_exception_handler_label, for_each_eh_label_1): Remove.
9326         (rtl_remove_unreachable_regions): Remove.
9327         (convert_from_eh_region_ranges): Do not remove unreachable regions.
9328         (find_exception_handler_labels): Don't build the hashtable.
9329         (maybe_remove_eh_handler): Remove.
9330         (for_each_eh_label): Rewrite to walk the tree.
9331         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
9332         * except.h (maybe_remove_eh_handler): Remove.
9333         * passes.c (init_optimization_passes): Schedule second EH cleanup
9334         before out-of-ssa.
9335         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
9336         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
9337
9338 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
9339
9340         * genoutput.c (validate_optab_operands): New.
9341         (gen_insn, gen_expand): Call it.
9342
9343         * genflags.c (gen_insn): Detect misused iterators.
9344         (main): Pass line_no to gen_insn, exit with status 1 on error.
9345
9346         * genextract.c (line_no): Make global.
9347         (VEC_safe_set_locstr): Change assertion to error message.
9348         (main): Exit with status 1 on error.
9349
9350 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
9351
9352         PR c/39614
9353         PR c/39673
9354         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
9355         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
9356         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
9357         * c-convert.c (convert): Do not call fold on results of conversion
9358         functions when the result is a C_MAYBE_CONST_EXPR.
9359         * c-parser.c (c_parser_postfix_expression): Do not fold condition
9360         of __builtin_choose_expr.
9361         * c-typeck.c (remove_c_maybe_const_expr): New.
9362         (build_unary_op, build_conditional_expr, build_compound_expr,
9363         build_binary_op, c_objc_common_truthvalue_conversion): Call
9364         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
9365         integer operands.
9366
9367 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
9368
9369         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
9370         CODE to produce a new one. Add a prototype to use fold_convert_const
9371
9372 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
9373
9374         PR bootstrap/39660
9375         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
9376         mix declarations and code.
9377
9378 2009-04-08  Ben Elliston  <bje@au.ibm.com>
9379
9380         * gcc.c: Replace `CC' with `GCC' throughout.
9381
9382 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
9383
9384         * doc/invoke.texi: Document Atom support.
9385
9386 2009-04-07  Jason Merrill  <jason@redhat.com>
9387
9388         PR c++/25185
9389         * c-common.h, c-common.c: Add flag_pretty_templates.
9390         * c-opts.c (c_common_handle_option): Set it.
9391         * c.opt: Add -fno-pretty-templates.
9392         * doc/invoke.texi (C++ Dialect Options): Likewise.
9393
9394 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
9395
9396         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
9397         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
9398         (ia64_expand_builtin): Likewise.
9399
9400 2009-04-07  Martin Jambor  <mjambor@suse.cz>
9401
9402         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
9403         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
9404         ADDR_EXPRS are include too.
9405
9406 2009-04-07  Richard Guenther  <rguenther@suse.de>
9407
9408         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
9409         decls are only used if passes as parameters or if they are
9410         local statics and the call is not to a builtin.
9411         (call_may_clobber_ref_p_1): Likewise.
9412
9413 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
9414
9415         * expr.c (do_store_flag): Remove last argument.  Simplify code
9416         to avoid duplication of tests already done by can_compare_p.
9417         (expand_expr_real_1): Adjust caller.
9418
9419 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
9420
9421         * optabs.c (can_compare_p): Test the predicate of a
9422         cbranch and cstore pattern.
9423
9424 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
9425
9426         * expr.c (convert_move): Use emit_store_flag instead of
9427         "emulating" it.
9428
9429 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
9430
9431         * config/i386/i386.c (ix86_compare_emitted): Remove.
9432         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
9433         ix86_compare_op0 like ix86_compare_emitted used to be handled.
9434         * config/i386/i386.h (ix86_compare_emitted): Remove.
9435         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
9436         instead of ix86_compare_emitted.
9437         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
9438
9439 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
9440
9441         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
9442         Add t-sysroot-suffix to tmake_file.
9443         * config/print-sysroot-suffix.sh: New file.
9444         * config/t-sysroot-suffix: New file.
9445
9446 2009-04-07  Ben Elliston  <bje@au.ibm.com>
9447
9448         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
9449         as the latter produces a warning when the target does not support
9450         infinity.
9451
9452 2009-04-07  Ben Elliston  <bje@au.ibm.com>
9453
9454         * dfp.c: Replace type punning assignments with memcpy throughout.
9455         * Makefile.in (dfp.o-warn): Remove.
9456
9457 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
9458
9459         PR target/39634
9460         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
9461         Include soft-fp/t-softfp after rs6000/t-linux64.
9462
9463 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
9464
9465         * stor-layout.c (set_sizetype): Use the full precision of their
9466         machine mode for bitsize types.
9467
9468 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
9469
9470         * config/i386/i386.md: Revert 2 accidental checkins.
9471
9472 2009-04-06  Joey Ye  <joey.ye@intel.com>
9473             Xuepeng Guo  <xuepeng.guo@intel.com>
9474             H.J. Lu  <hongjiu.lu@intel.com>
9475
9476         Atom pipeline model, tuning and insn selection.
9477         * config.gcc (atom): Add atom config options and target.
9478
9479         * config/i386/atom.md: New.
9480
9481         * config/i386/i386.c (atom_cost): New cost.
9482         (m_ATOM): New macro flag.
9483         (initial_ix86_tune_features): Set m_ATOM.
9484         (x86_accumulate_outgoing_args): Likewise.
9485         (x86_arch_always_fancy_math_387): Likewise.
9486         (processor_target): Add Atom cost.
9487         (cpu_names): Add Atom cpu name.
9488         (override_options): Set Atom ISA.
9489         (ix86_issue_rate): New case PROCESSOR_ATOM.
9490         (ix86_adjust_cost): Likewise.
9491
9492         * config/i386/i386.h (TARGET_ATOM): New target macro.
9493         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
9494         (TARGET_OPT_AGU): New target option.
9495         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
9496         (processor_type): Add PROCESSOR_ATOM.
9497
9498         * config/i386/i386.md (cpu): Add new value "atom".
9499         (use_carry, movu): New attr.
9500         (atom.md): Include atom.md.
9501         (adddi3_carry_rex64): Set attr "use_carry".
9502         (addqi3_carry): Likewise.
9503         (addhi3_carry): Likewise.
9504         (addsi3_carry): Likewise.
9505         (*addsi3_carry_zext): Likewise.
9506         (subdi3_carry_rex64): Likewise.
9507         (subqi3_carry): Likewise.
9508         (subhi3_carry): Likewise.
9509         (subsi3_carry): Likewise.
9510         (x86_movdicc_0_m1_rex64): Likewise.
9511         (*x86_movdicc_0_m1_se): Likewise.
9512         (x86_movsicc_0_m1): Likewise.
9513         (*x86_movsicc_0_m1_se): Likewise.
9514         (*adddi_1_rex64): Emit add insn as much as possible.
9515         (*addsi_1): Likewise.
9516         (return_internal): Set atom_unit.
9517         (return_internal_long): Likewise.
9518         (return_pop_internal): Likewise.
9519         (*rcpsf2_sse): Set atom_sse_attr attr.
9520         (*qrt<mode>2_sse): Likewise.
9521         (*prefetch_sse): Likewise.
9522
9523         * config/i386/i386-c.c (ix86_target_macros_internal): New case
9524         PROCESSOR_ATOM.
9525         (ix86_target_macros_internal): Likewise.
9526
9527         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
9528         (*prefetch_sse_rex): Likewise.
9529         (sse_rcpv4sf2): Likewise.
9530         (sse_vmrcpv4sf2): Likewise.
9531         (sse_sqrtv4sf2): Likewise.
9532         (<sse>_vmsqrt<mode>2): Likewise.
9533         (sse_ldmxcsr): Likewise.
9534         (sse_stmxcsr): Likewise.
9535         (*sse_sfence): Likewise.
9536         (sse2_clflush): Likewise.
9537         (*sse2_mfence): Likewise.
9538         (*sse2_lfence): Likewise.
9539         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
9540         (<sse>_movup<ssemodesuffixf2c>): Likewise.
9541         (avx_movdqu<avxmodesuffix>): Likewise.
9542         (avx_lddqu<avxmodesuffix>): Likewise.
9543         (sse2_movntv2di): Change attr "type" to "ssemov".
9544         (sse2_movntsi): Likewise.
9545         (rsqrtv8sf2): Change attr "type" to "sseadd".
9546         (sse3_addsubv2df3): Set attr "atom_unit".
9547         (sse3_h<plusminus_insn>v4sf3): Likewise.
9548         (*sse2_pmaddwd): Likewise.
9549         (*vec_extractv2di_1_rex64): Likewise.
9550         (*vec_extractv2di_1_avx): Likewise.
9551         (sse2_psadbw): Likewise.
9552         (ssse3_phaddwv8hi3): Likewise.
9553         (ssse3_phaddwv4hi3): Likewise.
9554         (ssse3_phadddv4si3): Likewise.
9555         (ssse3_phadddv2si3): Likewise.
9556         (ssse3_phaddswv8hi3): Likewise.
9557         (ssse3_phaddswv4hi3): Likewise.
9558         (ssse3_phsubwv8hi3): Likewise.
9559         (ssse3_phsubwv4hi3): Likewise.
9560         (ssse3_phsubdv4si3): Likewise.
9561         (ssse3_phsubdv2si3): Likewise.
9562         (ssse3_phsubswv8hi3): Likewise.
9563         (ssse3_phsubswv4hi3): Likewise.
9564         (ssse3_pmaddubsw128): Likewise.
9565         (sse3_pmaddubsw: Likewise.
9566         (ssse3_palignrti): Likewise.
9567         (ssse3_palignrdi): Likewise.
9568
9569 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
9570
9571         * doc/install.texi (Specific): Fix two cross-references to MinGW.
9572
9573 2009-04-06  Richard Guenther  <rguenther@suse.de>
9574
9575         PR tree-optimization/28868
9576         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
9577         of which PHI results we inserted.
9578         (insert_into_preds_of_block): Record inserted PHIs.
9579         (eliminate): Eliminate redundant PHI nodes.
9580         (init_pre): Init inserted_phi_names.
9581
9582 2009-04-06  Richard Guenther  <rguenther@suse.de>
9583
9584         PR tree-optimization/39643
9585         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
9586         IMAGPART_EXPRs of complex constants.
9587         (execute_fold_all_builtins): If we folded a call queue
9588         TODO_update_address_taken.
9589
9590 2009-04-06  Jan Hubicka  <jh@suse.cz>
9591
9592         PR middle-end/39659
9593         * except.c (remove_unreachable_regions): Propagate may_contain_throw
9594         flag.
9595
9596 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
9597
9598         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
9599         delay slot.
9600         (ic_invalidate_array): Likewise.
9601
9602 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
9603
9604         * calls.c (emit_library_call_value_1): Fix a problem with parameter
9605         alignment for library calls.
9606
9607 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
9608
9609         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
9610         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
9611         * config/i386/mingw-stdint.h:  New file.
9612
9613 2009-04-05  Richard Guenther  <rguenther@suse.de>
9614
9615         PR tree-optimization/39648
9616         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
9617         our &A vs. &A[0] IL deficiencies.
9618
9619 2009-04-04  Jan Hubicka  <jh@suse.cz>
9620
9621         * except.c (sjlj_find_directly_reachable_regions): Be ready for
9622         removed toplevel regions.
9623         (sjlj_mark_call_sites): Likewise.
9624
9625 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
9626
9627         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
9628         (cygwin tm clause use_gcc_stdint):  Set to wrap.
9629         * config/i386/cygwin-stdint.h:  New file.
9630
9631 2009-04-04  Richard Guenther  <rguenther@suse.de>
9632
9633         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
9634         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
9635         single-argument PHIs if we are in loop-closed SSA form.
9636         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
9637         for the pre-condition.
9638         (slpeel_tree_peel_loop_to_edge): Likewise.
9639         (vect_build_loop_niters): Take an optional sequence to append stmts.
9640         (vect_generate_tmps_on_preheader): Likewise.
9641         (vect_do_peeling_for_loop_bound): Take extra guards for the
9642         pre-condition.
9643         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
9644         the cost model check.
9645         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
9646         guards if we are going to peel.  Do not apply versioning in that case.
9647         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
9648         (vect_do_peeling_for_loop_bound): Likewise.
9649         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
9650         loop bound only record extra pre-conditions, do not apply loop
9651         versioning.
9652
9653 2009-04-04  Richard Guenther  <rguenther@suse.de>
9654
9655         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
9656         renaming code.
9657
9658 2009-04-04  Jan Hubicka  <jh@suse.cz>
9659
9660         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
9661         last_basic_block for size of bb->index indexed array.
9662         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
9663         compute_out, link_btr_uses, build_btr_def_use_webs,
9664         build_btr_def_use_webs, migrate_btr_defs): Likewise.
9665
9666 2009-04-04  Jan Hubicka  <jh@suse.cz>
9667
9668         * except.c (remove_eh_handler_and_replace): Break out from ...
9669         (remove_eh_handler): ... here.
9670         (bring_to_root): New function.
9671         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
9672         handled ones, bring others to root of tree.
9673
9674 2009-04-04  Jan Hubicka  <jh@suse.cz>
9675
9676         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
9677         (all_phis_safe_to_merge): New function.
9678         (update_info): New structure.
9679         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
9680         (cleanup_empty_eh): Update SSA if possible.
9681
9682 2009-04-04  Richard Guenther  <rguenther@suse.de>
9683
9684         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
9685         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
9686         (append_vuse): Likewise.
9687
9688 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
9689
9690         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
9691         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
9692         instead of REG_UNSAVED for DW_CFA_undefined.
9693         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
9694         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
9695         outermost frame.
9696
9697 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
9698
9699         PR target/39501
9700         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
9701         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
9702         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
9703
9704 2009-04-04  Richard Guenther  <rguenther@suse.de>
9705
9706         PR tree-optimization/8781
9707         PR tree-optimization/37892
9708         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
9709         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
9710         (valueize_refs): Call it for *& valueizations.
9711         (shared_reference_ops_from_ref): Rename to ...
9712         (valueize_shared_reference_ops_from_ref): ... this and valueize.
9713         (shared_reference_ops_from_call): Rename to ...
9714         (valueize_shared_reference_ops_from_call): ... this and valueize.
9715         (vn_reference_lookup): Update.
9716         (visit_reference_op_call): Likewise.
9717         * tree-ssa-pre.c (phi_translate_1): Fold *&.
9718         (eliminate): Value-replace the call address in call statements.
9719
9720 2009-04-04  Richard Guenther  <rguenther@suse.de>
9721
9722         PR tree-optimization/39636
9723         * tree-ssa-forwprop.c
9724         (forward_propagate_addr_into_variable_array_index): Check for
9725         GIMPLE_ASSIGN before accessing the rhs code.
9726
9727 2009-04-03  Jason Merrill  <jason@redhat.com>
9728
9729         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
9730
9731 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
9732
9733         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
9734         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
9735         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
9736         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
9737         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
9738         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
9739         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
9740         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
9741         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
9742         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
9743         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
9744         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
9745         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
9746         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
9747         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
9748         Use fr_reg_or_fp01_operand instead of fr_register_operand
9749
9750         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
9751         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
9752         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
9753
9754 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
9755
9756         PR rtl-optimization/39607
9757         PR rtl-optimization/39631
9758
9759         Revert:
9760
9761         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9762         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
9763         instead of DF_LR_OUT.
9764         * ira-lives.c (process_bb_node_lives): Ditto.
9765         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
9766         instead of DF_LR_{OUT,IN}.
9767         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
9768         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
9769
9770 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
9771
9772         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
9773         (execute_lower_omp): Always run but take the short way out if -fopenmp
9774         is not given.
9775         (gate_lower_omp): Remove, forcing the pass manager to always run the
9776         pass and always set PROP_gimple_lomp.
9777         (pass_lower_omp): Remove gate function.
9778         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
9779         PROP_trees.  Instead, require it.
9780         * ipa-cp.c (pass_ipa_cp): Likewise.
9781         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
9782         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
9783         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
9784         and PROP_gimple_leh.
9785
9786 2009-04-03  Richard Guenther  <rguenther@suse.de>
9787
9788         PR middle-end/13146
9789         PR tree-optimization/23940
9790         PR tree-optimization/33237
9791         PR middle-end/33974
9792         PR middle-end/34093
9793         PR tree-optimization/36201
9794         PR tree-optimization/36230
9795         PR tree-optimization/38049
9796         PR tree-optimization/38207
9797         PR tree-optimization/38230
9798         PR tree-optimization/38301
9799         PR tree-optimization/38585
9800         PR middle-end/38895
9801         PR tree-optimization/38985
9802         PR tree-optimization/39299
9803         * tree-ssa-structalias.h: Remove.
9804         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
9805         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
9806         (struct vuse_element_d): Remove.
9807         (struct vuse_vec_d): Likewise.
9808         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
9809         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
9810         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
9811         VUSE_ELEMENT_VAR): Likewise.
9812         (struct voptype_d): Likewise.
9813         (NUM_VOP_FREE_BUCKETS): Likewise.
9814         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
9815         (struct stmt_operands_d): Remove.
9816         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
9817         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
9818         VDEF_NUM, VDEF_VECT): Likewise.
9819         (copy_virtual_operands): Remove.
9820         (operand_build_cmp): Likewise.
9821         (create_ssa_artificial_load_stmt): Likewise.
9822         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
9823         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
9824         vuse_index and mayuse_index members.  Pack and move done and iter_type
9825         members to the front.
9826         (SSA_OP_VMAYUSE): Remove.
9827         (SSA_OP_VIRTUAL_USES): Adjust.
9828         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
9829         (unlink_stmt_vdef): Declare.
9830         (add_to_addressable_set): Remove.
9831         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
9832         (vrp_visit_stmt): Likewise.
9833         * doc/tree-ssa.texi (Alias analysis): Update.
9834         * doc/invoke.texi (max-aliased-vops): Remove docs.
9835         (avg-aliased-vops): Likewise.
9836         * tree-into-ssa.c (syms_to_rename): Remove.
9837         (need_to_update_vops_p): Likewise.
9838         (need_to_initialize_update_ssa_p): Rename to ...
9839         (update_ssa_initialized_fn): ... this.  Track function we are
9840         initialized for.
9841         (symbol_marked_for_renaming): Simplify.
9842         (add_new_name_mapping): Do not set need_to_update_vops_p.
9843         (dump_currdefs): Use SYMS_TO_RENAME.
9844         (rewrite_update_stmt): Always walk all uses/defs.
9845         (dump_update_ssa): Adjust.
9846         (init_update_ssa): Take function argument.  Track what we are
9847         initialized for.
9848         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
9849         (create_new_def_for): Initialize for cfun, assert we are initialized
9850         for cfun.
9851         (mark_sym_for_renaming): Simplify.
9852         (mark_set_for_renaming): Do not initialize update-ssa.
9853         (need_ssa_update_p): Simplify.  Take function argument.
9854         (name_mappings_registered_p): Assert we ask for the correct function.
9855         (name_registered_for_update_p): Likewise.
9856         (ssa_names_to_replace): Likewise.
9857         (release_ssa_name_after_update_ssa): Likewise.
9858         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
9859         (dump_decl_set): Do not print a newline.
9860         (debug_decl_set): Do it here.
9861         (dump_update_ssa): And here.
9862         * tree-ssa-loop-im.c (move_computations): Adjust.
9863         (movement_possibility): Likewise.
9864         (determine_max_movement): Likewise.
9865         (gather_mem_refs_stmt): Likewise.
9866         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
9867         or NAME_MEMORY_TAG.
9868         * tree-complex.c (update_all_vops): Remove.
9869         (expand_complex_move): Adjust.
9870         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
9871         Simplify test for memory referencing statement.  Exclude
9872         non-invariant ADDR_EXPRs.
9873         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
9874         * tree-loop-distribution.c (generate_memset_zero): Adjust.
9875         (rdg_flag_uses): Likewise.
9876         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
9877         related code.
9878         (tree_optimize_tail_calls_1): Also split the
9879         edge from the entry block if we have degenerate PHI nodes in
9880         the first basic block.
9881         * tree.c (init_ttree): Remove memory-tag related code.
9882         (tree_code_size): Likewise.
9883         (tree_node_structure): Likewise.
9884         (build7_stat): Re-write to be build6_stat.
9885         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
9886         (SSA_VAR_P): Adjust.
9887         (struct tree_memory_tag): Remove.
9888         (struct tree_memory_partition_tag): Likewise.
9889         (union tree_node): Adjust.
9890         (build7): Re-write to be build6.
9891         * tree-pass.h (pass_reset_cc_flags): Remove.
9892         (TODO_update_address_taken): New flag.
9893         (pass_simple_dse): Remove.
9894         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
9895         * params.h (MAX_ALIASED_VOPS): Remove.
9896         (AVG_ALIASED_VOPS): Likewise.
9897         * omp-low.c (expand_omp_taskreg): Update SSA form.
9898         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
9899         aliases the lhs in a copy stmt.
9900         * tree-ssa-dse.c (struct address_walk_data): Remove.
9901         (memory_ssa_name_same): Likewise.
9902         (memory_address_same): Likewise.
9903         (get_kill_of_stmt_lhs): Likewise.
9904         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
9905         unused stores.  Look through PHI nodes into post-dominated regions.
9906         (dse_optimize_stmt): Simplify.  Properly remove stores.
9907         (tree_ssa_dse): Compute dominators.
9908         (execute_simple_dse): Remove.
9909         (pass_simple_dse): Likewise.
9910         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
9911         gimple_loaded_syms and gimple_stored_syms computation.
9912         * toplev.c (dump_memory_report): Dump alias and pta stats.
9913         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
9914         (vn_reference_eq): Likewise.
9915         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
9916         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
9917         valueize_vuses): Remove.
9918         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
9919         (get_def_ref_stmt_vuse): ... this.
9920         (vn_reference_lookup_2): New function.
9921         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
9922         walking equivalent vuses.  Simplify.
9923         (vn_reference_lookup): Likewise.
9924         (vn_reference_insert): Likewise.
9925         (vn_reference_insert_pieces): Likewise.
9926         (visit_reference_op_call): Simplify.
9927         (visit_reference_op_load): Likewise.
9928         (visit_reference_op_store): Likewise.
9929         (init_scc_vn): Remove shared_lookup_vuses initialization.
9930         (free_scc_vn): Remove shared_lookup_vuses freeing.
9931         (sort_vuses, sort_vuses_heap): Remove.
9932         (get_ref_from_reference_ops): Export.
9933         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
9934         vector with single vuse pointer.
9935         (vn_reference_lookup_pieces, vn_reference_lookup,
9936         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
9937         (shared_vuses_from_stmt): Remove.
9938         (get_ref_from_reference_ops): Declare.
9939         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
9940         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
9941         memory-tag related code.
9942         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
9943         (likely_value): Add comment, skip static-chain of call statements.
9944         (surely_varying_stmt_p): Adjust.
9945         (gimplify_and_update_call_from_tree): Likewise.
9946         (execute_fold_all_builtins): Do not rebuild alias info.
9947         (gimplify_and_update_call_from_tree): Properly update VOPs.
9948         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
9949         (copy_ref_info): Remove memory-tag related code.
9950         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
9951         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
9952         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
9953         computation.
9954         * tree-ssa-dom.c (gimple_p): Remove typedef.
9955         (eliminate_redundant_computations): Adjust.
9956         (record_equivalences_from_stmt): Likewise.
9957         (avail_expr_hash): Likewise.
9958         (avail_expr_eq): Likewise.
9959         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
9960         (stmt_makes_single_load): Likewise.
9961         (stmt_makes_single_store): Likewise.
9962         * tree-ssa-alias.c: Rewrite completely.
9963         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
9964         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
9965         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
9966         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
9967         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
9968         Remove public functions.
9969         (pass_reset_cc_flags): Remove.
9970         (pass_build_alias): Move ...
9971         * tree-ssa-structalias.c (pass_build_alias): ... here.
9972         * tree-ssa-alias.c (may_be_aliased): Move ...
9973         * tree-flow-inline.h (may_be_aliased): ... here.
9974         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
9975         count_uses_and_derefs): Move ...
9976         * gimple.c: ... here.
9977         * gimple.h (count_uses_and_derefs): Declare.
9978         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
9979         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
9980         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
9981         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
9982         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
9983         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
9984         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
9985         New functions.
9986         * tree-dfa.c (refs_may_alias_p): Move ...
9987         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
9988         * tree-ssa-alias.h: New file.
9989         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
9990         (statement_sink_location): Likewise.
9991         * opts.c (decode_options): Do not adjust max-aliased-vops or
9992         avg-aliased-vops values.
9993         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
9994         (TV_CALL_CLOBBER): Likewise.
9995         (TV_FLOW_SENSITIVE): Likewise.
9996         (TV_FLOW_INSENSITIVE): Likewise.
9997         (TV_MEMORY_PARTITIONING): Likewise.
9998         (TV_ALIAS_STMT_WALK): New timevar.
9999         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
10000         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
10001         (get_address_description): Remove memory-tag related code.
10002         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
10003         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
10004         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
10005         and immediate uses in statements.  Document.
10006         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
10007         (dump_symbols): Remove.
10008         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
10009         * alias.c (get_deref_alias_set): New function split out from ...
10010         (get_alias_set): ... here.
10011         * alias.h (get_deref_alias_set): Declare.
10012         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
10013         type parameter.  Remove restrict pointer handling.  Create a
10014         ref-all pointer in case type-based alias sets do not conflict.
10015         (vect_analyze_data_refs): Remove SMT related code.
10016         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
10017         (vectorizable_load): Likewise.
10018         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
10019         (DR_SYMBOL_TAG, DR_VOPS): Remove.
10020         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
10021         Ignore vops and SMTs.
10022         (dr_analyze_alias): Likewise..
10023         (free_data_ref): Likewise.
10024         (create_data_ref): Likewise.
10025         (analyze_all_data_dependences): Likewise.
10026         (get_references_in_stmt): Adjust.
10027         * tree-flow-inline.h (gimple_aliases_computed_p,
10028         gimple_addressable_vars, gimple_call_clobbered_vars,
10029         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
10030         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
10031         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
10032         gimple_mem_ref_stats): Remove.
10033         (gimple_vop): New function.
10034         (op_iter_next_use): Remove vuses and mayuses cases.
10035         (op_iter_next_def): Remove vdefs case.
10036         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
10037         (clear_and_done_ssa_iter): Do not set removed fields.
10038         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
10039         Assert we are not iterating over vuses or vdefs if not also
10040         iterating over uses or defs.
10041         (op_iter_init_use): Likewise.
10042         (op_iter_init_def): Likewise.
10043         (op_iter_next_vdef): Remove.
10044         (op_iter_next_mustdef): Likewise.
10045         (op_iter_init_vdef): Likewise.
10046         (compare_ssa_operands_equal): Likewise.
10047         (link_use_stmts_after): Handle vuse operand.
10048         (is_call_used): Use is_call_clobbered.
10049         (is_call_clobbered): Global variables are always call clobbered,
10050         query the call-clobbers bitmap.
10051         (mark_call_clobbered): Ignore global variables.
10052         (clear_call_clobbered): Likewise.
10053         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
10054         virtual operands sanity check.
10055         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
10056         Remove.
10057         (TARGET_MEM_REF): Remove TMR_TAG operand.
10058         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
10059         Remove call-clobber related code.
10060         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
10061         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
10062         partitions or escape reason.
10063         (get_single_def_stmt, get_single_def_stmt_from_phi,
10064         get_single_def_stmt_with_phi): Remove.
10065         (dump_referenced_vars): Tidy.
10066         (get_ref_base_and_extent): Allow bare decls.
10067         (collect_dfa_stats): Adjust.
10068         * graphite.c (rename_variables_in_stmt): Adjust.
10069         (graphite_copy_stmts_from_block): Likewise.
10070         (translate_clast): Likewise.
10071         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
10072         (EXPR_DIES): New.
10073         (translate_vuse_through_block): Use the oracle.
10074         (phi_translate_1): Adjust.
10075         (value_dies_in_block_x): Use the oracle.  Cache the outcome
10076         in EXPR_DIES.
10077         (valid_in_sets): Check if the VUSE for
10078         a REFERENCE is available.
10079         (eliminate): Do not remove stmts during elimination,
10080         instead queue and remove them afterwards.
10081         (do_pre): Do not rebuild alias info.
10082         (pass_pre): Run TODO_rebuild_alias before PRE.
10083         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
10084         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
10085         (mark_all_v_defs_stmt): Remove.
10086         (mark_all_v_defs_seq): Adjust.
10087         (sra_replace): Likewise.
10088         (scalarize_use): Likewise.
10089         (scalarize_copy): Likewise.
10090         (scalarize_init): Likewise.
10091         (scalarize_ldst): Likewise.
10092         (todoflags): Remove.
10093         (tree_sra): Do not rebuild alias info.
10094         (tree_sra_early): Adjust.
10095         (pass_sra): Run TODO_update_address_taken before SRA.
10096         * tree-predcom.c (set_alias_info): Remove.
10097         (prepare_initializers_chain): Do not call it.
10098         (mark_virtual_ops_for_renaming): Adjust.
10099         (mark_virtual_ops_for_renaming_list): Remove.
10100         (initialize_root_vars): Adjust.
10101         (initialize_root_vars_lm): Likewise.
10102         (prepare_initializers_chain): Likewise.
10103         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
10104         (may_propagate_copy_into_stmt): Likewise.
10105         (merge_alias_info): Do nothing for now.
10106         (propagate_tree_value_into_stmt): Adjust.
10107         (stmt_may_generate_copy): Likewise.
10108         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
10109         not mark symbols for renaming.
10110         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
10111         with the same statement, make sure to update the new pointed-to one.
10112         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
10113         call statements, do not mark symbols for renaming.
10114         (mark_operand_necessary): Dump something.
10115         (ref_may_be_aliased): New function.
10116         (mark_aliased_reaching_defs_necessary_1): New helper function.
10117         (mark_aliased_reaching_defs_necessary): Likewise.
10118         (mark_all_reaching_defs_necessary_1): Likewise.
10119         (mark_all_reaching_defs_necessary): Likewise.
10120         (propagate_necessity): Do not process virtual PHIs.  For
10121         non-aliased loads mark all reaching definitions as necessary.
10122         For aliased loads and stores mark the immediate dominating
10123         aliased clobbers as necessary.
10124         (visited): New global static.
10125         (perform_tree_ssa_dce): Free visited bitmap after propagating
10126         necessity.
10127         (remove_dead_phis): Perform simple dead virtual PHI removal.
10128         (remove_dead_stmt): Properly unlink virtual operands when
10129         removing stores.
10130         (eliminate_unnecessary_stmts): Schedule PHI removal after
10131         stmt removal.
10132         * tree-ssa-ter.c (is_replaceable_p): Adjust.
10133         (process_replaceable): Likewise.
10134         (find_replaceable_in_bb): Likewise.
10135         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
10136         based on the single gimple vop.
10137         (verify_flow_insensitive_alias_info): Remove.
10138         (verify_flow_sensitive_alias_info): Likewise.
10139         (verify_call_clobbering): Likewise.
10140         (verify_memory_partitions): Likewise.
10141         (verify_alias_info): Likewise.
10142         (verify_ssa): Adjust..
10143         (execute_update_addresses_taken): Export.  Update SSA
10144         manually.  Optimize only when optimizing.  Use a local bitmap.
10145         (pass_update_address_taken): Remove TODO_update_ssa, add
10146         TODO_dump_func.
10147         (pass_update_address_taken): Just use TODO_update_address_taken.
10148         (init_tree_ssa): Do not initialize addressable_vars.
10149         (verify_ssa): Verify new VUSE / VDEF properties.
10150         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
10151         Do not call verify_alias_info.
10152         (delete_tree_ssa): Clear the VUSE, VDEF operands.
10153         Do not free the loaded and stored syms bitmaps.  Reset the escaped
10154         and callused solutions.  Do not free addressable_vars.
10155         Remove memory-tag related code.
10156         (warn_uninitialized_var): Aliases are always available.
10157         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
10158         * lambda-code.c (can_put_in_inner_loop): Adjust.
10159         (can_put_after_inner_loop): Likewise.
10160         (perfect_nestify): Likewise.
10161         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
10162         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
10163         (vectorizable_conversion): Do not mark symbols for renaming.
10164         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
10165         (expand_call_inline): Unlink the calls virtual operands before
10166         replacing it.
10167         (tree_function_versioning): Do not call update_ssa if we are not
10168         updating clones.  Simplify.
10169         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
10170         (propagate_with_phi): Likewise..
10171         * tree-outof-ssa.c (create_temp): Remove memory tag and call
10172         clobber code.  Assert we are not aliased or global.
10173         * tree-flow.h: Include tree-ssa-alias.h
10174         (enum escape_type): Remove.
10175         (struct mem_sym_stats_d): Likewise.
10176         (struct mem_ref_stats_d): Likewise.
10177         (struct gimple_df): Add vop member.  Remove global_var,
10178         call_clobbered_vars, call_used_vars, addressable_vars,
10179         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
10180         escaped and callused members.
10181         (struct ptr_info_def): Remove all members, add points-to solution
10182         member pt.
10183         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
10184         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
10185         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
10186         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
10187         (tree-ssa-alias.o): Likewise.
10188         (toplev.o): Add tree-ssa-alias.h
10189         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
10190         * gimple.c (gimple_set_bb): Fix off-by-one error.
10191         (is_gimple_reg): Do not handle memory tags.
10192         (gimple_copy): Also copy virtual operands.
10193         Delay updating the statement.  Do not reset loaded and stored syms.
10194         (gimple_set_stored_syms): Remove.
10195         (gimple_set_loaded_syms): Likewise.
10196         (gimple_call_copy_skip_args): Copy the virtual operands
10197         and mark the new statement modified.
10198         * tree-ssa-structalias.c (may_alias_p): Remove.
10199         (set_uids_in_ptset): Take the alias set to prune with as
10200         parameter.  Fold in the alias test of may_alias_p.
10201         (compute_points_to_sets): Compute whether a ptr is dereferenced
10202         in a local sbitmap.
10203         (process_constraint): Deal with &ANYTHING on the lhs, reject all
10204         other ADDRESSOF constraints on the lhs.
10205         (get_constraint_for_component_ref): Assert that we don't get
10206         ADDRESSOF constraints from the base of the reference.
10207         Properly generate UNKNOWN_OFFSET for DEREF if needed.
10208         (struct variable_info): Remove collapsed_to member.
10209         (get_varinfo_fc): Remove.
10210         (new_var_info): Do not set collapsed_to.
10211         (dump_constraint): Do not follow cycles.
10212         (dump_constraint_graph): Likewise.
10213         (build_pred_graph): Likewise.
10214         (build_succ_graph): Likewise.
10215         (rewrite_constraints): Likewise.
10216         (do_simple_structure_copy): Remove.
10217         (do_rhs_deref_structure_copy): Remove.
10218         (do_lhs_deref_structure_copy): Remove.
10219         (collapse_rest_of_var): Remove.
10220         (do_structure_copy): Re-implement.
10221         (pta_stats): New global variable.
10222         (dump_pta_stats): New function.
10223         (struct constraint_expr): Make offset signed.
10224         (UNKNOWN_OFFSET): Define special value.
10225         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
10226         (solution_set_expand): New helper function split out from ...
10227         (do_sd_constraint): ... here.
10228         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
10229         (do_ds_constraint): Likewise.
10230         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
10231         and CALLUSED = *CALLUSED.
10232         (set_union_with_increment): Make inc argument signed.
10233         (type_safe): Remove.
10234         (get_constraint_for_ptr_offset): Handle unknown and negative
10235         constant offsets.
10236         (first_vi_for_offset): Handle offsets before start.  Bail
10237         out early for offsets beyond the variable extent.
10238         (first_or_preceding_vi_for_offset): New function.
10239         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
10240         Together with ESCAPED = *ESCAPED this properly computes reachability.
10241         (find_what_var_points_to): New function.
10242         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
10243         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
10244         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
10245         pt_solutions_intersect): New functions.
10246         (compute_call_used_vars): Remove.
10247         (compute_may_aliases): New main entry into PTA computation.
10248         * gimple.h (gimple_p): New typedef.
10249         (struct gimple_statement_base): Remove references_memory_p.
10250         (struct gimple_statement_with_memory_ops_base): Remove
10251         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
10252         members.
10253         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
10254         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
10255         gimple_set_references_memory): Remove.
10256         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
10257         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
10258         New functions.
10259         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
10260         (verify_expr): Allow RESULT_DECL.
10261         (gimple_duplicate_bb): Do not copy virtual operands.
10262         (gimple_duplicate_sese_region): Adjust.
10263         (gimple_duplicate_sese_tail): Likewise.
10264         (mark_virtual_ops_in_region): Remove.
10265         (move_sese_region_to_fn): Do not call it.
10266         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
10267         and pass_simple_dse.
10268         (execute_function_todo): Handle TODO_update_address_taken,
10269         call execute_update_addresses_taken for TODO_rebuild_alias.
10270         (execute_todo): Adjust.
10271         (execute_one_pass): Init dump files early.
10272         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
10273         call-clobbered.
10274         (create_general_new_stmt): Clear vops.
10275         * tree-ssa-reassoc.c (get_rank): Adjust.
10276         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
10277         symbols for renaming.
10278         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
10279         (PARAM_AVG_ALIASED_VOPS): Likewise.
10280         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
10281         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
10282         * tree-ssa-operands.c: Simplify for new virtual operand representation.
10283         (operand_build_cmp, copy_virtual_operands,
10284         create_ssa_artificial_load_stmt, add_to_addressable_set,
10285         gimple_add_to_addresses_taken): Remove public functions.
10286         (unlink_stmt_vdef): New function.
10287
10288 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
10289
10290         * config.gcc (powerpc-*-linux*): Merge variants.
10291
10292 2009-04-02  Chao-ying Fu  <fu@mips.com>
10293             James Grosbach  <james.grosbach@microchip.com>
10294
10295         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
10296         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
10297         cop0_sp_offset.
10298         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
10299         keep_interrupts_masked_p, use_debug_exception_return_p.
10300         (mips_attribute_table): Add interrupt, use_shadow_register_set,
10301         keep_interrupts_masked, use_debug_exception_return.
10302         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
10303         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
10304         New functions.
10305         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
10306         (mips_print_operand): Process COP0 registers to print $0 .. $31
10307         correctly for GAS to process.
10308         (mips_interrupt_extra_call_saved_reg_p): New function.
10309         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
10310         extra registers.
10311         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
10312         (mips_compute_frame_info): Add supports for interrupt context that
10313         includes doubleword accumulators and COP0 registers.
10314         (mips_for_each_saved_acc): New function.
10315         (mips_for_each_saved_gpr_and_fpr): Change the function name from
10316         mips_for_each_saved_reg.
10317         (mips_save_reg): Save accumulators.
10318         (mips_kernel_reg_p): A new for_each_rtx callback.
10319         (mips_expand_prologue): Support interrupt handlers.
10320         (mips_restore_reg): Restore accumulators.
10321         (mips_expand_epilogue): Support interrupt handlers.
10322         (mips_can_use_return_insn): Return false for interrupt handlers.
10323         (mips_epilogue_uses): New function.
10324         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
10325         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
10326         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
10327         cop0_move): New instructions.
10328         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
10329         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
10330         defines.
10331         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
10332         New defines.
10333         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
10334         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
10335         interrupt handlers, we use K0 as the temporary register.
10336         (EPILOGUE_USES): Change to a function call.
10337         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
10338         handlers, we use K0 as the temporary register.
10339
10340         * doc/extend.texi (Function Attributes): Document interrupt,
10341         use_shadow_register_set, keep_interrupts_masked,
10342         use_debug_exception_return for MIPS attributes.
10343
10344 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
10345
10346         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
10347         Remove a number of t-files from tmake_file.
10348         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
10349         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
10350         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
10351         target_prototype, not TARGET_PROTOTYPE.
10352         (LINK_OS_GNU_SPEC): Define.
10353         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
10354         and darwin-ldoubdle.c.
10355
10356 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
10357
10358         PR driver/39293
10359         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
10360         (cpp_options): Ditto.
10361         (default_compilers): Ditto.
10362         (display_help): Ditto.
10363         (process_command): Ditto.
10364         (do_spec_1): Ditto.
10365         (set_input): Use lbasename instead of duplicate code.
10366         (save_temps_prefix): New static for -save-temps=obj.
10367         (save_temps_length): Ditto.
10368
10369         * doc/invoke.texi (-save-temps=obj): Document new variant to
10370         -save-temps switch.
10371
10372 2009-04-02  Jeff Law  <law@redhat.com>
10373
10374         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
10375         variable.
10376
10377 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
10378
10379         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
10380         * configure: Regenerated.
10381
10382 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
10383
10384         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
10385         share the argument list.
10386
10387 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
10388
10389         Merge
10390
10391         2009-02-12  Diego Novillo  <dnovillo@google.com>
10392
10393         * varpool.c (debug_varpool): New.
10394         * cgraph.h (debug_varpool): Declare.
10395
10396 2009-04-02  Jan Hubicka  <jh@suse.cz>
10397
10398         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
10399         pass.
10400
10401 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
10402
10403         * config/i386/i386.c (ix86_abi): Move initialization to ...
10404         (override_options): Here.
10405
10406 2009-04-02  Christian Bruel  <christian.bruel@st.com>
10407
10408         * config/sh/sh.c (sh_dwarf_register_span): New function.
10409         (TARGET_DWARF_REGISTER_SPAN): Define.
10410         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
10411
10412 2009-04-02  Ira Rosen  <irar@il.ibm.com>
10413
10414         PR tree-optimization/39595
10415         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
10416         interleaved loads group is not  greater than the SLP group size.
10417
10418 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
10419
10420         * builtins.c (is_builtin_name): New.
10421         (called_as_built_in): Use is_builtin_name.
10422         * tree.h (is_builtin_name): New.
10423         * varasm.c (incorporeal_function_p): Use is_builtin_name
10424
10425 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
10426
10427         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
10428
10429 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
10430
10431         PR c++/26693
10432         * c-decl.c (clone_underlying_type): Move this ...
10433         * c-common.c (set_underlying_type): ... here.
10434         Also, make sure the function properly sets TYPE_STUB_DECL() on
10435         the newly created typedef variant type.
10436         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
10437         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
10438         points.
10439
10440 2009-04-02  Richard Guenther  <rguenther@suse.de>
10441
10442         PR tree-optimization/37221
10443         * tree-flow.h (degenerate_phi_result): Declare.
10444         * tree-ssa-dom.c (degenerate_phi_result): Export.
10445         * tree-scalar-evolution.c (analyze_initial_condition): If
10446         the initial condition is defined by a degenerate PHI node
10447         use the degenerate value.
10448
10449 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
10450
10451         PR rtl-optimization/39588
10452         * combine.c (merge_outer_ops): Do not set the constant when this
10453         is not necessary.
10454         (simplify_shift_const_1): Do not modify it either in this case.
10455
10456 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
10457
10458         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
10459         tuning is deprecated if -mtune value is set to an Itanium1 variant.
10460
10461 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
10462
10463         PR c/29027
10464         * c-lex.c (interpret_float): Default (no suffix) is double.
10465
10466 2009-04-1  Xinliang David Li  <davidxl@google.com>
10467
10468         * config/i386/i386.c (legitimate_constant_p): Recognize
10469         all one vector constant.
10470
10471 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10472
10473         * config/vax/vax.c: Add #includes to silence warnings.
10474         Change #include order to silence two warnings.
10475
10476 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10477
10478         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
10479         (ASM_SPEC): Pass -k to the assembler for PIC code.
10480
10481 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10482
10483         * config.gcc: Add vax-*-linux* to the switch.
10484         * config/vax/linux.h: New file. (TARGET_VERSION,
10485         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
10486
10487 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10488
10489         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
10490         Use predicate macros instead of GET_CODE() == foo.
10491         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
10492         ashlsi3, rotrsi3, <unnamed>): Likewise.
10493
10494 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10495
10496         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
10497         jbbccihi, jbbccisi): Remova trailing whitespace.
10498         * config/vax/constraints.md: Likewise.
10499         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
10500         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
10501         * config/vax/predicates.md: Likewise.
10502         * config/vax/vax.c (print_operand_address, vax_output_int_move,
10503         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
10504         * config/vax/vax.h: Likewise.
10505         * config/vax/vax.md (nonlocal_goto): Likewise.
10506
10507 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10508
10509         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
10510         (indirectable_address_p, adjacent_operands_p): Add spaces around
10511         braces.
10512         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
10513
10514 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10515
10516         * config/vax/vax.c (legitimate_constant_address_p,
10517         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
10518         index_term_p, reg_plus_index_p, legitimate_address_p,
10519         vax_mode_dependent_address_p): Update comments to match functions
10520         modified by the recent int->bool conversion.
10521
10522 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10523
10524         * config/vax/builtins.md: Update copyright message.
10525         * config/vax/constraints.md: Likewise.
10526         * config/vax/netbsd-elf.h: Likewise.
10527         * config/vax/predicates.md: Likewise.
10528         * config/vax/vax-protos.h: Likewise.
10529         * config/vax/vax.c: Likewise.
10530         * config/vax/vax.h: Likewise.
10531         * config/vax/vax.md: Likewise.
10532         * config/vax/vax.opt: Likewise.
10533
10534 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
10535
10536         * config/vax/builtins.md (ffssi2, ffssi2_internal,
10537         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
10538         * config/vax/constraints.md (B, R): Likewise.
10539         * config/vax/predicates.md (external_memory_operand,
10540         nonimmediate_addsub_di_operand): Likewise.
10541         * config/vax/vax.c (vax_output_int_add): Likewise.
10542         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
10543         untyped_call): Likewise.
10544
10545 2009-04-01  Matt Thomas  <matt@3am-software.com>
10546
10547         * config/vax/predicates.md: New file.
10548         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
10549         external_const_operand, nonsymbolic_operand, external_memory_operand,
10550         indirect_memory_operand, indexed_memory_operand,
10551         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
10552         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
10553         predicate.
10554         * config/vax/constraints.md: New file.
10555         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
10556         New constraint.
10557         * config/vax/builtins.md: New file.
10558         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
10559         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
10560         jbbccisi): Define.
10561         * config/vax/vax.opt (mqmath): Add option.
10562         * config/vax/vax.md (isfx): Extend with DI.
10563         (VAXintQH, VAXintQHSD): Define.
10564         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
10565         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
10566         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
10567         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
10568         (movdi): Update constraints and use vax_output_int_move().
10569         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
10570         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
10571         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
10572         nonlocal_goto): New.
10573         (mov<mode>): Extend accepted operand types.
10574         (subdi3_old): Rename from subdi3, change update constraints and use
10575         a new implementation.
10576         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
10577         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
10578         MOVE_RATIO, CLEAR_RATIO): Define.
10579         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
10580         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
10581         (PRINT_OPERAND): Redefine using a function instead of inlined code.
10582         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
10583         (split_quadword_operands): Make static and really allow variable
10584         splitting.
10585         (print_operand_address): Update for PIC generation.
10586         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
10587         indexable_address_p, fixup_mathdi_operand,
10588         vax_expand_addsub_di_operands, adjacent_operands_p): New.
10589         (vax_float_literal, legitimate_constant_p,
10590         indirectable_constant_address_p, index_term_p,
10591         reg_plus_index_p): Return bool instead of int.
10592         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
10593         where needed.
10594         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
10595         generation.
10596         (vax_output_conditional_branch): Indent.
10597         (legitimate_constant_address_p, indirectable_constant_address_p,
10598         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
10599         vax_mode_dependent_address_p): Return bool instead of int, update for
10600         PIC generation.
10601         * config/vax/vax-protos.h (legitimate_constant_address_p,
10602         legitimate_constant_p, legitimate_address_p,
10603         vax_mode_dependent_address_p): Change declaration to bool.
10604         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
10605         vax_expand_addsub_di_operands, vax_output_int_subtract,
10606         vax_output_movmemsi): Declare.
10607         (split_quadword_operands, vax_float_literal): Delete declaration.
10608         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
10609         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
10610         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
10611         ASM_OUTPUT_DWARF_PCREL): Define.
10612         (ASM_SPEC): Change definition to allow PIC generation.
10613
10614 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
10615
10616         * doc/sourcebuild.texi: Update front-end requirements.
10617
10618 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
10619
10620         PR target/39226
10621         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
10622         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
10623         (booldi3_internal3): Use boolean_or_operator instead of
10624         boolean_operator.
10625
10626 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
10627
10628         PR c/39605
10629         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
10630         declarator whose size is not an integer constant expression but
10631         folds to an integer constant, then treat it as a constant
10632         subsequently.
10633
10634 2009-04-01  Richard Guenther  <rguenther@suse.de>
10635
10636         * fold-const.c (fold_plusminus_mult_expr): Do not fold
10637         i * 4 + 2 to (i * 2 + 1) * 2.
10638
10639 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
10640
10641         PR c/37772
10642         * c-parser.c (c_parser_asm_statement): Skip until close paren and
10643         return if c_parser_asm_string_literal returned NULL.
10644
10645 2009-04-01  Nick Clifton  <nickc@redhat.com>
10646
10647         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
10648         already defined.
10649         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
10650         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
10651         other typedefs to avoid conflicts with libgcc2.c.  Define labels
10652         to gain 16-bit bit-manipulation functions from libgcc2.c and then
10653         include it.
10654         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
10655         to gain 16-bit trapping arithmetic functions from libgcc2.c and
10656         then include it.
10657
10658 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
10659
10660         * varasm.c (default_function_rodata_section): Declare DOT as
10661         const char*.
10662
10663 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
10664             Andrey Galkin  <agalkin@hypercom.com>
10665
10666         PR/39492
10667         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
10668         Make object_name unique for each process.
10669
10670 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
10671
10672         PR other/39591
10673         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
10674         addressable variables in the parallel that could go out of scope while
10675         running queued tasks.
10676
10677 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
10678
10679         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
10680         (CASE_VALUES_THRESHOLD): Redefine.
10681         * config/avr/avr.c (avr_override_options): Remove initialization of
10682         avr_case_values_threshold variable.
10683         (avr_case_values_threshold): Remove variable. Add new function.
10684         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
10685         * config/avr/avr.opt (mno-tablejump): Remove option.
10686         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
10687
10688 2009-04-01  DJ Delorie  <dj@redhat.com>
10689
10690         * varasm.c (default_function_rodata_section): Don't assume
10691         anything about where the first '.' in the section name is.
10692
10693 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
10694
10695         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
10696         rs6000_emit_stack_tie.
10697
10698 2009-03-31  Ian Lance Taylor  <iant@google.com>
10699
10700         * tree-eh.c (tree_remove_unreachable_handlers): Compare
10701         gimple_code with GIMPLE_RESX, not RESX.
10702
10703 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
10704
10705         * c-common.c (c_get_ident): New.
10706         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
10707
10708 2009-04-01  Ben Elliston  <bje@au.ibm.com>
10709
10710         * config/rs6000/sysv4.opt (msdata): Improve option description.
10711
10712 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
10713
10714         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
10715         (divdf3_internal_lat): Remove.
10716         (divxf3_internal_lat): Remove.
10717         (divxf3_internal_thr): Remove.
10718         (divxf): Use divxf3_internal.
10719         * config/ia64/div.md (divsf3_internal_lat): New.
10720         (divdf3_internal_lat): New.
10721         (divxf3_internal): New.
10722
10723 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
10724
10725         PR c/448
10726         * Makefile.in (USE_GCC_STDINT): Define.
10727         (stmp-int-hdrs): Install stdint.h if applicable.
10728         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
10729         if known.
10730         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
10731         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
10732         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
10733         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
10734         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
10735         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
10736         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
10737         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
10738         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
10739         (c_common_nodes_and_builtins): Initialize
10740         underlying_wchar_type_node.  Do not initialize
10741         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
10742         nodes for new types.
10743         (c_stddef_cpp_builtins): Define macros for new types.
10744         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
10745         Remove.
10746         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
10747         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
10748         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
10749         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
10750         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
10751         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
10752         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
10753         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
10754         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
10755         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
10756         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
10757         int16_type_node, int32_type_node, int64_type_node,
10758         uint8_type_node, uint16_type_node, c_uint32_type_node,
10759         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
10760         int_least32_type_node, int_least64_type_node,
10761         uint_least8_type_node, uint_least16_type_node,
10762         uint_least32_type_node, uint_least64_type_node,
10763         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
10764         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
10765         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
10766         uintptr_type_node): Define.
10767         * c-cppbuiltin.c (builtin_define_constants,
10768         builtin_define_type_minmax): New.
10769         (builtin_define_stdint_macros): Define more macros.
10770         (c_cpp_builtins): Define more limit macros.
10771         (type_suffix): New.
10772         (builtin_define_type_max): Define in terms of
10773         builtin_define_type_minmax.  Remove is_long parameter.  All
10774         callers changed.
10775         * config.gcc (use_gcc_stdint): Define.
10776         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
10777         Add newlib-stdint.h for generic targets.
10778         * config/glibc-stdint.h, config/newlib-stdint.h,
10779         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
10780         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
10781         * config/score/score.h (UINTPTR_TYPE): Define.
10782         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
10783         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
10784         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
10785         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
10786         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
10787         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
10788         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
10789         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
10790         * config/spu/spu.h (STDINT_LONG32): Define.
10791         * configure.ac (use_gcc_stdint): Substitute.
10792         * configure: Regenerate.
10793         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
10794         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
10795         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
10796         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
10797         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
10798         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
10799         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
10800         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
10801         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
10802         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
10803         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
10804         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
10805         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
10806         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
10807         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
10808         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
10809         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
10810         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
10811         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
10812         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
10813         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
10814         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
10815         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
10816         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
10817         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
10818         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
10819         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
10820         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
10821         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
10822
10823 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
10824
10825         * loop-iv.c (suitable_set_for_replacement): Renamed from
10826         simplify_using_assignment; changed to return bool and to accept new
10827         args DEST and SRC.  Return true iff we find a source/destination pair
10828         that can be used to make a replacement, and fill SRC and DEST if so.
10829         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
10830         changed.
10831         (simplify_using_initial_values): Deal with altered regs here and track
10832         more precisely the effect they have on the validity of our expression.
10833
10834         * loop-iv.c (simplify_using_condition): A condition of the form
10835         (EQ REG CONST) can be used to simply make a substitution.
10836         (simplify_using_initial_values): Keep track of conditions we have seen
10837         and keep using them to simplify new expressions, while applying the
10838         same substitutions to them as to the expression.
10839
10840         * simplify-rtx.c (simplify_relational_operation_1): Simplify
10841         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
10842         GEU/LTU reversed.
10843
10844         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
10845         changed.  Use this when trying to improve the upper bound.
10846         Generate the comparison by using simplify_gen_relational.
10847
10848         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
10849
10850         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
10851         functions.
10852         (simplify_using_assignment, simplify_using_initial_values): Call
10853         replace_in_expr to make replacements.  Call replace_single_def_regs
10854         once on the initial version of the expression.
10855
10856 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10857
10858         PR target/27237
10859         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
10860
10861 2009-03-31  Richard Guenther  <rguenther@suse.de>
10862
10863         PR middle-end/31029
10864         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
10865         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
10866
10867 2009-03-31  Richard Guenther  <rguenther@suse.de>
10868
10869         * tree.h (div_if_zero_remainder): Declare.
10870         * fold-const.c (div_if_zero_remainder): Export.
10871         * tree-ssa-forwprop.c
10872         (forward_propagate_addr_into_variable_array_index): Handle
10873         constant array index addition outside of the variable index.
10874
10875 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
10876
10877         PR target/39592
10878         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
10879         define_splits, floatunssi<mode>2): Require x87 conversions from
10880         DImode to be permitted.
10881
10882 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
10883
10884         PR preprocessor/15638
10885         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
10886
10887 2009-03-31  Richard Guenther  <rguenther@suse.de>
10888
10889         PR middle-end/23401
10890         PR middle-end/27810
10891         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
10892         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
10893         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
10894         a separate statement.
10895         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
10896         (lookup_tmp_var): Likewise.
10897         (is_gimple_formal_tmp_or_call_rhs): Remove.
10898         (is_gimple_reg_or_call_rhs): Rename to ...
10899         (is_gimple_reg_rhs_or_call): ... this.
10900         (is_gimple_mem_or_call_rhs): Rename to ...
10901         (is_gimple_mem_rhs_or_call): ... this.
10902         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
10903         DECL_GIMPLE_REG_P only if is_formal is true.
10904         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
10905         for non-proper post-modify expression gimplification.
10906         (gimplify_self_mod_expr): For post-modify expressions gimplify
10907         the lvalue to a minimal lvalue.
10908         (rhs_predicate_for): Remove formal temp case.
10909         (gimplify_modify_expr_rhs): Likewise.
10910         (gimplify_addr_expr): Use is_gimple_reg.
10911         (gimplify_expr): Remove formal temp cases.
10912         (gimple_regimplify_operands): Likewise.
10913         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
10914         and FILTER_EXPR like constants.
10915         * gimple.c (walk_gimple_op): Fix val_only initialization, use
10916         is_gimple_reg.
10917         (is_gimple_formal_tmp_rhs): Remove.
10918         (is_gimple_reg_rhs): Remove special casing.
10919         (is_gimple_mem_rhs): Fix.
10920         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
10921         (is_gimple_formal_tmp_var): Remove.
10922         (is_gimple_formal_tmp_reg): Likewise.
10923         (is_gimple_min_lval): Allow invariant component ref parts.
10924         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
10925         is_gimple_formal_tmp_reg): Remove declarations.
10926         * tree-cfg.c (verify_expr): Verify that variables with address
10927         taken do not have DECL_GIMPLE_REG_P set.
10928         * tree-mudflap.c (mf_build_check_statement_for): Use
10929         force_gimple_operand instead of gimplify_expr.
10930
10931 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
10932
10933         * modulo-sched.c (sms_schedule_by_order): Pass the actual
10934         schedulable rows to compute_split_row.
10935
10936 2009-03-31  Ben Elliston  <bje@au.ibm.com>
10937
10938         PR target/31635
10939         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
10940         OPT_mvrsave.
10941
10942 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
10943
10944         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
10945         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
10946         * configure: Regenerate.
10947         * config.in: Regenerate.
10948         * config/rs6000/rs6000.opt (mtls-markers): Add.
10949         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
10950         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
10951         (tls_ld_aix, tls_ld_sysv): Likewise.
10952         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
10953         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
10954
10955 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
10956
10957         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
10958
10959 2009-03-30  Jan Hubicka  <jh@suse.cz>
10960
10961         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
10962         out of RESX.
10963         (tree_remove_unreachable_handlers): Cleanup EH predecestor
10964         detection and label handling.
10965
10966 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
10967
10968         * ira-int.h (ira_allocno): Rename left_conflicts_num to
10969         left_conflicts_size.
10970         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
10971         ALLOCNO_LEFT_CONFLICTS_SIZE.
10972
10973         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
10974         remove_allocno_from_bucket_and_push,
10975         allocno_spill_priority_compare, push_allocnos_to_stack,
10976         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
10977         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
10978         (setup_allocno_left_conflicts_num): Ditto.  Rename to
10979         setup_allocno_left_conflicts_size.
10980         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
10981         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
10982         setup_allocno_left_conflicts_size instead of
10983         setup_allocno_left_conflicts_num.
10984
10985         * ira-build.c (ira_create_allocno): Use
10986         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
10987         ALLOCNO_LEFT_CONFLICTS_NUM.
10988
10989 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
10990
10991         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
10992         instead of DF_LR_OUT.
10993
10994         * ira-lives.c (process_bb_node_lives): Ditto.
10995
10996         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
10997         instead of DF_LR_{OUT,IN}.
10998
10999         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
11000
11001         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
11002
11003 2009-03-30  Jan Hubicka  <jh@suse.cz>
11004
11005         * except.c (label_to_region_map): Fix thinko.
11006
11007 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
11008
11009         PR middle-end/38237
11010         * tree.h (tree_find_value): New declaration.
11011         * tree.c (tree_find_value): New function.
11012         * varasm.c (assemble_external): Avoid duplicate entries on lists.
11013
11014 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
11015
11016         PR debug/39563
11017         * c-decl.c (struct c_binding): Add locus field.
11018         (bind): Add locus argument, set locus field from it.
11019         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
11020         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
11021         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
11022         implicitly_declare, undeclared_variable, lookup_label,
11023         declare_label, c_make_fname_decl, c_builtin_function,
11024         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
11025         bind callers.
11026
11027 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
11028
11029         PR target/38781
11030         * config/i386/i386.c (classify_argument): Check total size of
11031         structure.
11032
11033 2009-03-30  Martin Jambor  <mjambor@suse.cz>
11034
11035         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
11036         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
11037         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
11038         respectively.
11039
11040         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
11041         seen_variable_array_ref while also traversing a union.
11042
11043         * tree-inline.c (optimize_inline_calls): Do not call
11044         cgraph_node_remove_callees.
11045         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
11046         (pass_remove_cgraph_callee_edges): New variable.
11047         * passes.c (init_optimization_passes): Add
11048         pass_remove_cgraph_callee_edges after early inlining and before all
11049         late intraprocedural passes.
11050
11051         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
11052
11053 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
11054
11055         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
11056         Fix typos in names.
11057
11058 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
11059
11060         * combine.c (simplify_comparison): Use have_insn_for.
11061         * dojump.c (do_jump): Likewise.
11062
11063 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
11064
11065         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
11066         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
11067         sparc_compare_op0 like sparc_compare_emitted used to be handled.
11068         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
11069         instead of sparc_compare_emitted.
11070         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
11071         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
11072         instead of sparc_compare_emitted.
11073
11074 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
11075
11076         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
11077         enter/exit cfglayout mode.
11078         (pass_partition_block): Require it.
11079         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
11080         (combine_instructions): Track basic blocks instead of labels.
11081         (update_cfg_for_uncondjump): New.
11082         (try_combine): Use it.  Update jumps after rescanning.
11083         (pass_combine): Require PROP_cfglayout.
11084         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
11085
11086 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
11087
11088         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
11089         Provide/destroy PROP_cfglayout respectively.
11090         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
11091         * tree-pass.h (PROP_cfglayout): New.
11092
11093 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
11094
11095         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
11096         fold_convert_const_fixed_from_fixed,
11097         fold_convert_const_fixed_from_int,
11098         fold_convert_const_fixed_from_real, fold_negate_const): Do not
11099         set TREE_CONSTANT_OVERFLOW.
11100         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
11101         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
11102
11103 2009-03-30  Ira Rosen  <irar@il.ibm.com>
11104
11105         * tree-vect-loop-manip.c: New file.
11106         * tree-vectorizer.c: Update documentation and included files.
11107         (vect_loop_location): Make extern.
11108         (rename_use_op): Move to tree-vect-loop-manip.c
11109         (rename_variables_in_bb, rename_variables_in_loop,
11110         slpeel_update_phis_for_duplicate_loop,
11111         slpeel_update_phi_nodes_for_guard1,
11112         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
11113         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
11114         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
11115         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
11116         find_loop_location): Likewise.
11117         (new_stmt_vec_info): Move to tree-vect-stmts.c.
11118         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
11119         get_vectype_for_scalar_type, vect_is_simple_use,
11120         supportable_widening_operation, supportable_narrowing_operation):
11121         Likewise.
11122         (bb_in_loop_p): Move to tree-vect-loop.c.
11123         (new_loop_vec_info, destroy_loop_vec_info,
11124         reduction_code_for_scalar_code, report_vect_op,
11125         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
11126         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
11127         (vect_supportable_dr_alignment): Likewise.
11128         * tree-vectorizer.h (tree-data-ref.h): Include.
11129         (vect_loop_location): Declare.
11130         Reorganize function declarations according to the new file structure.
11131         * tree-vect-loop.c: New file.
11132         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
11133         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
11134         * tree-vect-data-refs.c: New file.
11135         * tree-vect-patterns.c (timevar.h): Don't include.
11136         * tree-vect-stmts.c: New file.
11137         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
11138         tree-vect-slp.c, tree-vect-loop.c.
11139         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
11140         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
11141         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
11142         (tree-vect-analyze.o): Remove.
11143         (tree-vect-transform.o): Likewise.
11144         (tree-vect-data-refs.o): Add rule.
11145         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
11146         tree-vect-slp.o): Likewise.
11147         (tree-vect-patterns.o): Remove redundant dependencies.
11148         (tree-vectorizer.o): Likewise.
11149         * tree-vect-slp.c: New file.
11150
11151 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11152
11153         * optc-gen.awk: Warn if an option flag has multiple different
11154         help strings.
11155
11156 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
11157
11158         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
11159         -floop-block): Document dependences on PPL, CLooG and Graphite.
11160
11161 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
11162
11163         PR rtl-optimization/323
11164         * c-common.c (c_fully_fold, convert_and_check,
11165         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
11166         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
11167         * c-common.def (EXCESS_PRECISION_EXPR): New.
11168         * c-cppbuiltin.c (builtin_define_float_constants): Define
11169         constants with enough digits for long double.
11170         * c-lex.c (interpret_float): Interpret constant with excess
11171         precision where appropriate.
11172         * c-opts.c (c_common_post_options): Set
11173         flag_excess_precision_cmdline.  Give an error for
11174         -fexcess-precision=standard for C++ for processors where the
11175         option is significant.
11176         * c-parser.c (c_parser_conditional_expression): Handle excess
11177         precision in condition.
11178         * c-typeck.c (convert_arguments): Handle arguments with excess
11179         precision.
11180         (build_unary_op): Move excess precision outside operation.
11181         (build_conditional_expr): Likewise.
11182         (build_compound_expr): Likewise.
11183         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
11184         (build_modify_expr): Handle excess precision in RHS.
11185         (convert_for_assignment): Handle excess precision in converted
11186         value.
11187         (digest_init, output_init_element, process_init_element): Handle
11188         excess precision in initializer.
11189         (c_finish_return): Handle excess precision in return value.
11190         (build_binary_op): Handle excess precision in operands and add
11191         excess precision as needed for operation.
11192         * common.opt (-fexcess-precision=): New option.
11193         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
11194         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
11195         For standard excess precision, output explicit conversion to and
11196         truncation from XFmode.
11197         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
11198         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
11199         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
11200         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
11201         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
11202         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
11203         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
11204         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
11205         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
11206         define_splits, sqrt<mode>2): Disable where appropriate for
11207         standard excess precision.
11208         * convert.c (convert_to_real): Do not shorten arithmetic to type
11209         for which excess precision would be used.
11210         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
11211         * doc/invoke.texi (-fexcess-precision=): Document option.
11212         (-mfpmath=): Correct index entry.
11213         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
11214         flag_excess_precision): New.
11215         * langhooks.c (lhd_post_options): Set
11216         flag_excess_precision_cmdline.
11217         * opts.c (common_handle_option): Handle -fexcess-precision=.
11218         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
11219         init_excess_precision): New.
11220         (lang_dependent_init_target): Call init_excess_precision.
11221         * tree.c (excess_precision_type): New.
11222         * tree.h (excess_precision_type): Declare.
11223
11224 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
11225
11226         PR c/35235
11227         * c-typeck.c (build_component_ref): Do not copy qualifiers from
11228         non-lvalue to component.
11229
11230 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
11231
11232         PR preprocessor/34695
11233         * Makefile.in (c-opts.o): Depend on c-tree.h.
11234         * c-common.c: Move down include of diagnostic.h.
11235         (done_lexing, c_cpp_error): New.
11236         * c-common.h (done_lexing): Declare.
11237         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
11238         (parse_in).
11239         * c-opts.c: Include c-tree.h.
11240         (c_common_init_options): Set preprocessor error callback.
11241         (c_common_handle_option): Do not set preprocessor
11242         inhibit_warnings, warnings_are_errors, warn_system_headers,
11243         pedantic_errors or inhibit_warnings flags.
11244         (c_common_post_options): Do not check cpp_errors (parse_in).
11245         (c_common_finish): Do not output dependencies if there were
11246         errors.  Do not check return value of cpp_finish.
11247         * c-ppoutput.c (pp_file_change): Set input_location.
11248         * c-tree.h (c_cpp_error): Declare.
11249         * diagnostic.c (diagnostic_set_info_translated): Also initialize
11250         override_column.
11251         (diagnostic_build_prefix): Check override_column.
11252         * diagnostic.h (diagnostic_info): Add override_column field.
11253         (diagnostic_override_column): Define.
11254
11255 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
11256
11257         * c-common.c (c_expand_expr, c_staticp): Remove.
11258         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
11259         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
11260         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
11261         * c-gimplify.c (gimplify_compound_literal_expr,
11262         optimize_compound_literals_in_ctor): Remove.
11263         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
11264         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
11265         * c-semantics.c (emit_local_var): Remove.
11266
11267         * langhooks-def.h (lhd_expand_expr): Remove.
11268         * langhooks.c (lhd_expand_expr): Remove.
11269         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
11270
11271         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
11272         handling from c-semantics.c; don't call into langhook.
11273         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
11274         * gimplify.c (gimplify_compound_literal_expr,
11275         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
11276         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
11277         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
11278         as was done in c-gimplify.c.
11279         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
11280         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
11281         Move from c-common.h.
11282         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
11283
11284         * tree.c (staticp): Do not call langhook.
11285         * langhooks.c (lhd_staticp): Delete.
11286         * langhooks-def.h (lhd_staticp): Delete prototype.
11287         (LANG_HOOKS_STATICP): Delete.
11288         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
11289
11290         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
11291         instead of DECL_STMTs.
11292
11293 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
11294
11295         PR c/456
11296         PR c/5675
11297         PR c/19976
11298         PR c/29116
11299         PR c/31871
11300         PR c/35198
11301         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
11302         void_type_node.
11303         (fold_call_expr): Return a NOP_EXPR from folding rather than the
11304         contained expression.
11305         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
11306         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
11307         conditional expressions for C.
11308         (decl_constant_value_for_optimization): Move from
11309         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
11310         whether optimizing and that the expression is a VAR_DECL not of
11311         array type instead of doing such checks in the caller.  Do not
11312         check pedantic.  Call gcc_unreachable for C++.
11313         * c-common.def (C_MAYBE_CONST_EXPR): New.
11314         * c-common.h (c_fully_fold, c_save_expr,
11315         decl_constant_value_for_optimization): New prototypes.
11316         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
11317         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
11318         EXPR_INT_CONST_OPERANDS): Define.
11319         * c-convert.c (convert): Strip nops from expression.
11320         * c-decl.c (groktypename): Take extra parameters expr and
11321         expr_const_operands.  Update call to grokdeclarator.
11322         (start_decl): Update call to grokdeclarator.  Add statement for
11323         expressions used in type of decl.
11324         (grokparm): Update call to grokdeclarator.
11325         (push_parm_decl): Update call to grokdeclarator.
11326         (build_compound_literal): Add parameter non_const and build a
11327         C_MAYBE_COSNT_EXPR if applicable.
11328         (grokdeclarator): Take extra parameters expr and
11329         expr_const_operands.  Track expressions used in declaration
11330         specifiers and declarators.  Fold array sizes and track whether
11331         they are constant expressions and whether they are integer
11332         constant expressions.
11333         (parser_xref_tag): Set expr and expr_const_operands fields in
11334         return value.
11335         (grokfield): Update call to grokdeclarator.
11336         (start_function): Update call to grokdeclarator.
11337         (build_null_declspecs): Set expr and expr_const_operands fields in
11338         return value.
11339         (declspecs_add_type): Handle expressions in typeof specifiers.
11340         * c-parser.c (c_parser_declspecs): Set expr and
11341         expr_const_operands fields for declaration specifiers.
11342         (c_parser_enum_specifier): Likewise.
11343         (c_parser_struct_or_union_specifier): Likewise.
11344         (c_parser_typeof_specifier): Likewise.  Update call to
11345         groktypename.  Fold expression as needed.  Return expressions with
11346         type instead of adding statements.
11347         (c_parser_attributes): Update calls to c_parser_expr_list.
11348         (c_parser_statement_after_labels): Fold expression before passing
11349         to objc_build_throw_stmt.
11350         (c_parser_condition): Fold expression.
11351         (c_parser_asm_operands): Fold expression.
11352         (c_parser_conditional_expression): Use c_save_expr.  Update call
11353         to build_conditional_expr.
11354         (c_parser_alignof_expression): Update call to groktypename.
11355         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
11356         original_code.  Fold expression argument of va_arg.  Create
11357         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
11358         argument to va_arg.  Update calls to groktypename.  Fold array
11359         index for offsetof.  Verify that first argument to
11360         __builtin_choose_expr has integer type.
11361         (c_parser_postfix_expression_after_paren_type): Update calls to
11362         groktypename and build_compound_literal.  Handle expressions with
11363         side effects in type name.
11364         (c_parser_postfix_expression_after_primary): Update call to
11365         c_parser_expr_list.  Set original_code for calls to
11366         __builtin_constant_p.
11367         (c_parser_expr_list): Take extra parameter fold_p.  Fold
11368         expressions if requested.
11369         (c_parser_objc_type_name): Update call to groktypename.
11370         (c_parser_objc_synchronized_statement): Fold expression.
11371         (c_parser_objc_receiver): Fold expression.
11372         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
11373         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
11374         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
11375         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
11376         (struct c_typespec): Add elements expr and expr_const_operands.
11377         (struct c_declspecs): Add elements expr and expr_const_operands.
11378         (groktypename, build_conditional_expr, build_compound_literal):
11379         Update prototypes.
11380         (in_late_binary_op): Declare.
11381         * c-typeck.c (note_integer_operands): New function.
11382         (in_late_binary_op): New variable.
11383         (decl_constant_value_for_broken_optimization): Move to c-common.c
11384         and rename to decl_constant_value_for_optimization.
11385         (default_function_array_conversion): Do not strip nops.
11386         (default_conversion): Do not call
11387         decl_constant_value_for_broken_optimization.
11388         (build_array_ref): Do not fold result.
11389         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
11390         result when operand is a VLA.
11391         (c_expr_sizeof_type): Update call to groktypename.  Handle
11392         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
11393         result when operand names a VLA type.
11394         (build_function_call): Update call to build_compound_literal.
11395         Only fold result for calls to __builtin_* functions.  Strip
11396         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
11397         the function designator.
11398         (convert_arguments): Fold arguments.  Update call to
11399         convert_for_assignment.
11400         (build_unary_op): Handle increment and decrement of
11401         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
11402         decrement earlier.  Fold operand of increment and decrement.
11403         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
11404         built for integer operand.  Wrap returns that are INTEGER_CSTs
11405         without being integer constant expressions or that have integer
11406         constant operands without being INTEGER_CSTs.
11407         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
11408         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
11409         result is an integer constant expression or can be used in
11410         unevaluated parts of one and avoid folding and wrap as
11411         appropriate.  Fold operands before possibly doing -Wsign-compare
11412         warnings.
11413         (build_compound_expr): Wrap result for C99 if operands can be used
11414         in integer constant expressions.
11415         (build_c_cast): Update call to digest_init.  Do not ignore
11416         overflow from casting floating-point constants to integers.  Wrap
11417         results that could be confused with integer constant expressions,
11418         null pointer constants or floating-point constants.
11419         (c_cast_expr): Update call to groktypename.  Handle expressions
11420         included in type name.
11421         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
11422         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
11423         Update calls to convert_for_assignment.
11424         (convert_for_assignment): Take new parameter
11425         null_pointer_constant.  Do not strip nops or call
11426         decl_constant_value_for_broken_optimization.  Set
11427         in_late_binary_op for conversions to boolean.
11428         (store_init_value): Update call to digest_init.
11429         (digest_init): Take new parameter null_pointer_constant.  Do not
11430         call decl_constant_value_for_broken_optimization.  pedwarn for
11431         initializers not constant expressions.  Update calls to
11432         convert_for_assignment.
11433         (constructor_nonconst): New.
11434         (struct constructor_stack): Add nonconst element.
11435         (really_start_incremental_init, push_init_level, pop_init_level):
11436         Handle constructor_nonconst and nonconst element.
11437         (set_init_index): Call constant_expression_warning for array
11438         designators.
11439         (output_init_element): Fold value.  Set constructor_nonconst as
11440         applicable.  pedwarn for initializers not constant expressions.
11441         Update call to digest_init.  Call constant_expression_warning
11442         where constant initializers are required.
11443         (process_init_element): Use c_save_expr.
11444         (c_finish_goto_ptr): Fold expression.
11445         (c_finish_return): Fold return value.  Update call to
11446         convert_for_assignment.
11447         (c_start_case): Fold switch expression.
11448         (c_process_expr_stmt): Fold expression.
11449         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
11450         ensure statement expression is not evaluated in constant expression.
11451         (build_binary_op): Track whether results are integer constant
11452         expressions or may occur in such, disable folding and wrap results
11453         as applicable.  Fold operands for -Wsign-compare warnings unless
11454         in_late_binary_op.
11455         (c_objc_common_truthvalue_conversion): Handle results folded to
11456         integer constants that are not integer constant expressions.
11457         * doc/extend.texi: Document when typeof operands are evaluated,
11458         that condition of __builtin_choose_expr is an integer constant
11459         expression, and more about use of __builtin_constant_p in
11460         initializers.
11461
11462 2009-03-29  Richard Guenther  <rguenther@suse.de>
11463
11464         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
11465         propagate addresses of array references.
11466
11467 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
11468
11469         * regmove.c (perhaps_ends_bb_p): Remove.
11470         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
11471         from INSN and check that the main loop stays within that basic block.
11472         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
11473         (regmove_forward_pass): Split out from regmove_optimize.  Use
11474         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
11475         (regmove_backward_pass): Split out from regmove_optimize.  Use
11476         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
11477         (regmove_optimize): Simplify.
11478
11479 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
11480
11481         PR target/39545
11482         * config/i386/i386.c (classify_argument): Ignore flexible array
11483         member in struct and warn ABI change.
11484
11485 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
11486
11487         * config/i386/i386-protos.h (ix86_agi_dependent): New.
11488
11489         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
11490         (ix86_adjust_cost): Updated.
11491
11492 2009-03-29  Jan Hubicka  <jh@suse.cz>
11493
11494         PR middle-end/28850
11495         * tree-pass.h (pass_cleanup_eh): New function.
11496         (remove_unreachable_regions): Break code handling RTL
11497         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
11498         that can not be reached by runtime.
11499         (can_be_reached_by_runtime): New function.
11500         (label_to_region_map): New function.
11501         (num_eh_regions): New function.
11502         (rtl_remove_unreachable_regions): New function.
11503         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
11504         (remove_eh_region): New function.
11505         * except.h: Include sbitmap and vecprim.
11506         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
11507         num_eh_regions): Declare.
11508         * passes.c (init_optimization_passes): Schedule cleanup_eh.
11509         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
11510         * tree-eh.c (tree_remove_unreachable_handlers): New function.
11511         (tree_empty_eh_handler_p): New function.
11512         (cleanup_empty_eh): New function.
11513         (cleanup_eh): New function.
11514         (pass_cleanup_eh): New function.
11515
11516 2009-03-29  Jan Hubicka  <jh@suse.cz>
11517
11518         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
11519         for removed regions.
11520
11521 2009-03-29  Jan Hubicka  <jh@suse.cz>
11522
11523         * except.c (dump_eh_tree): Dump all datastructures.
11524
11525 2009-03-29  Jan Hubicka  <jh@suse.cz>
11526
11527         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
11528         (duplicate_eh_regions_1): Likewise.
11529         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
11530         vector; call EH verification.
11531         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
11532         Be ready for region being removed.
11533
11534 2009-03-29  Jan Hubicka  <jh@suse.cz>
11535
11536         * bitmap.c (bitmap_last_set_bit): New function.
11537         * bitmap.h (bitmap_last_set_bit): Declare.
11538
11539 2009-03-29  David Ayers  <ayers@fsfe.org>
11540
11541         PR objc/27377
11542         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
11543         by calling objc_compare_types and surpress warnings about
11544         incompatible C pointers that are compatible ObjC pointers.
11545
11546 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
11547
11548         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
11549         call initialize_inline_failed.
11550         (initialize_inline_failed): Move it from here ...
11551         * cgraph.c (initialize_inline_failed): ... to here.
11552         (cgraph_create_edge): Call initialize_inline_failed rather than
11553         setting inline_failed directly.
11554
11555 2009-03-29  Ben Elliston  <bje@au.ibm.com>
11556
11557         PR target/32542
11558         * sysv4.opt (msdata): Improve comment.
11559         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
11560         * sysv4.h (SVR4_ASM_SPEC): Likewise.
11561
11562 2009-03-29  Ben Elliston  <bje@au.ibm.com>
11563
11564         PR target/30451
11565         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
11566         load and store attributes.
11567
11568 2009-03-29  Ben Elliston  <bje@au.ibm.com>
11569
11570         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
11571         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
11572         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
11573         * doc/extend.texi (X86 Built-in Functions): Add index entries for
11574         __builtin_infq and __builtin_huge_valq.
11575
11576 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
11577
11578         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
11579         atmega8m1 devices.
11580         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
11581         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
11582
11583 2009-03-28  Xinliang David Li  <davidxl@google.com>
11584
11585         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
11586         (do_dbg_cnt): New function.
11587
11588 2009-03-28  Jan Hubicka  <jh@suse.cz>
11589
11590         Merge from pretty-ipa:
11591
11592         2009-03-27  Jan Hubicka  <jh@suse.cz>
11593
11594         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
11595         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
11596         * passes.c (function_called_by_processed_nodes_p): New.
11597         * ipa-pure-const.c (check_call): Fix handling of operands.
11598         (analyze_function): Dump debug output for skipped bodies.
11599         (local_pure_const): Use function_called_by_processed_nodes_p.
11600         * dwarf2out.c (reference_to_unused): Use output.
11601         * passes.c (do_per_function_toporder): Likewise.
11602
11603         2008-11-12  Jan Hubicka  <jh@suse.cz>
11604
11605         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
11606         * ipa-pure-const.c (funct_state_d): Add can throw field; make
11607         state_set_in_source enum
11608         (check_decl): Ignore memory tags; do not set fake looping flags;
11609         dump diagnostics.
11610         (check_operand, check_tree, check_rhs_var, check_lhs_var,
11611         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
11612         (check_call, analyze_function): Rewrite.
11613         (check_stmt): New.
11614         (add_new_function): Update call of analyze_function.
11615         (generate_summary): Add call of analyze_function.
11616         (propagate): Propagate can_throw; handle state_set_in_source correctly.
11617         (local_pure_const): New function.
11618         (pass_local_pure_const): New pass.
11619         * ipa-inline.c (inline_transform): Set after_inlining.
11620         * tree-eh.c (stmt_can_throw_external): New.
11621         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
11622         work with aliasing built.
11623         * tree-flow.h (stmt_can_throw_external): New.
11624         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
11625         and local pure/const pass in early and late optimization queue.
11626
11627 2009-03-28  Martin Jambor  <mjambor@suse.cz>
11628
11629         * fold-const.c (get_pointer_modulus_and_residue): New parameter
11630         allow_func_align.
11631         (fold_binary): Allow function decl aligment consideration is the
11632         second argument is integer constant one.
11633         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
11634         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
11635         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
11636
11637 2009-03-28  Jan Hubicka  <jh@suse.cz>
11638
11639         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
11640         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
11641         * function.h (rtl_data): Add nothrow flag.
11642         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
11643         set DECL_NOTHROW for AVAILABLE functions.
11644
11645 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
11646
11647         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
11648         following vector keyword has expansion starting with pixel or bool
11649         keyword, expand vector to __vector and pixel or bool to __pixel or
11650         __bool.
11651
11652         PR c++/39554
11653         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
11654         warn_if_disallowed_function_p): Removed.
11655         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
11656         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
11657         warning_if_disallowed_function_p.
11658         * flags.h (warn_if_disallowed_function_p,
11659         warn_disallowed_functions): Removed.
11660         * common.opt (Wdisallowed-function-list=): Removed.
11661         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
11662
11663 2009-03-28  Richard Guenther  <rguenther@suse.de>
11664
11665         PR tree-optimization/38723
11666         * tree-ssa-pre.c (compute_avail): Add all default definitions to
11667         the entry block.
11668
11669 2009-03-28  Jan Hubicka  <jh@suse.cz>
11670
11671         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
11672         test introduced by my previous patch.
11673
11674 2009-03-28  Richard Guenther  <rguenther@suse.de>
11675
11676         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
11677         the PHIs value undefined.
11678
11679 2009-03-28  Jan Hubicka  <jh@suse.cz>
11680
11681         * tree-pass.h (pass_fixup_cfg): New pass.
11682         * ipa-inline.c (inline_transform): Set
11683         always_inline_functions_inlined/after_inlining.
11684         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
11685         (pass_fixup_cfg): New pass.
11686         * passes.c (init_optimization_passes): Add fixup_cfg.
11687
11688 2009-03-28  Richard Guenther  <rguenther@suse.de>
11689
11690         PR tree-optimization/38458
11691         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
11692         argument use the arguments copy-of value.
11693
11694 2009-03-28  Richard Guenther  <rguenther@suse.de>
11695
11696         PR tree-optimization/38180
11697         * tree-ssa-ccp.c (get_default_value): Simplify.
11698         (likely_value): Likewise.
11699         (surely_varying_stmt_p): Properly handle VOP case.
11700         (ccp_initialize): Likewise.
11701         (ccp_fold): Handle propagating through *&.
11702         (fold_const_aggregate_ref): Also handle decls.
11703
11704 2009-03-28  Jan Hubicka  <jh@suse.cz>
11705
11706         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
11707         * cgraph.h (cgraph_node): Likewise.
11708         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
11709         (cgraph_reset_node): Use process flag.
11710         (cgraph_mark_functions_to_output): Likewise.
11711         (cgraph_expand_function): Likewise.
11712         (cgraph_expand_all_functions): Likewise.
11713         (cgraph_output_in_order): Likewise.
11714         * dwarf2out.c (reference_to_unused): Likewise.
11715         * passes.c do_per_function_toporder): Likewise.
11716
11717 2009-03-28  Jan Hubicka  <jh@suse.cz>
11718
11719         Bring from lto-branch:
11720
11721         2008-09-03  Doug Kwan  <dougkwan@google.com>
11722
11723         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
11724         enums instead of reason strings.
11725         * cgraph.c (cgraph_create_edge): Same.
11726         (cgraph_inline_failed_string): New function.
11727         * cgraph.h (cgraph_inline_failed_t): New enum type.
11728         (cgraph_inline_failed_string): New prototype.
11729         (struct cgraph_edge): Change type of INLINED_FAILED from constant
11730         char pointer to cgraph_inline_failed_t.
11731         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
11732         (cgraph_default_inline_p): Ditto.
11733         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
11734         to cgraph_inline_failed_t pointer.
11735         * cif-code.def: New file.
11736         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
11737         reason string.
11738         (cgraph_check_inline_limits): Change type of REASON to pointer to
11739         cgraph_inline_failed_t.  Replace reason strings with enums.
11740         (cgraph_default_inline_p): Ditto.
11741         (cgraph_recursive_inlining_p): Ditto.
11742         (update_caller_keys): Change type of FAILED_REASON to
11743         cgraph_inline_failed_t.
11744         (cgraph_set_inline_failed): Change type of REASON to pointer to
11745         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
11746         convert enums to strings for text output.
11747         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
11748         to be of type cgraph_inline_failed_t.  Replace reason strings with
11749         enums.  Call cgraph_inline_failed_string to covert enums
11750         to strings for text output.
11751         (cgraph_decide_inlining): Replace reason strings with enums.
11752         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
11753         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
11754         for text output.
11755         * tree-inline.c (expand_call_inline): Change type of REASON
11756         to cgraph_inline_failed_t.  Replace reason strings with enums.
11757         Call cgraph_inline_failed_string for text output.
11758         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
11759         (cgraph.o): Ditto.
11760
11761 2009-03-28  Jan Hubicka  <jh@suse.cz>
11762
11763         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
11764         cgraph_clone_node): Remove master clone handling.
11765         (cgraph_is_master_clone, cgraph_master_clone): Remove.
11766         * cgraph.h (master_clone): Remove.
11767         (cgraph_is_master_clone, cgraph_master_clone): Remove.
11768         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
11769         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
11770
11771 2009-03-28  Jan Hubicka  <jh@suse.cz>
11772
11773         * cgraph.c (cgraph_function_body_availability): Functions declared
11774         inline are always safe to assume that it is not going to be replaced.
11775
11776 2009-03-28  Richard Guenther  <rguenther@suse.de>
11777
11778         PR tree-optimization/38513
11779         * tree-ssa-pre.c (eliminate): Remove redundant stores.
11780         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
11781         EXC_PTR_EXPR and FILTER_EXPR.
11782         (get_ref_from_reference_ops): Likewise.
11783
11784 2009-03-28  Richard Guenther  <rguenther@suse.de>
11785
11786         PR tree-optimization/38968
11787         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
11788         Use FLOOR_MOD_EXPR to compute misalignment.
11789
11790 2009-03-28  Richard Guenther  <rguenther@suse.de>
11791
11792         PR tree-optimization/37795
11793         * tree.h (combine_comparisons): Declare.
11794         * fold-const.c (combine_comparisons): Export.
11795         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
11796         comparisons.
11797         (ifcombine_iforif): Use combine_comparisons.
11798
11799 2009-03-28  Jan Hubicka  <jh@suse.cz>
11800
11801         * tree-eh.c (inlinable_call_p): New function.
11802         (make_eh_edges): Use it.
11803         (verify_eh_edges): Use it.
11804         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
11805         * except.c (reachable_next_level): Add inlinable_function argument
11806         (sjlj_find_directly_reachable_regions): Update.
11807         (add_reachable_handler): Do not set saw_any_handlers.
11808         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
11809         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
11810         Add new inlinable call parameter.
11811         (can_throw_internal, can_throw_external): Update.
11812         * except.h (can_throw_internal_1, can_throw_external_1,
11813         foreach_reachable_handler): Update declaration.
11814
11815 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
11816
11817         * config/arm/t-arm-coff, config/h8300/coff.h,
11818         config/i386/i386-aout.h, config/i386/i386-coff.h,
11819         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
11820         config/pdp11/2bsd.h, config/rs6000/aix41.h,
11821         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
11822         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
11823         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
11824         sys-types.h: Remove.
11825         * Makefile.in: Remove protoize and fixproto support and references
11826         in comments.
11827         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
11828         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
11829         Remove.
11830         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
11831         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
11832         unprotoize$(exeext).
11833         (rest.encap): Don't depend on $(STMP_FIXPROTO)
11834         (.PHONY): Don't depend on proto.
11835         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
11836         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
11837         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
11838         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
11839         build/gen-protos.o, build/scan.o, xsys-protos.h,
11840         build/fix-header$(build_exeext), build/fix-header.o,
11841         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
11842         stmp-install-fixproto): Remove.
11843         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
11844         SYSCALLS.c or fixproto files.
11845         (install-common): Don't install protoize.
11846         (install-headers-tar, install-headers-cpio, install-headers-cp):
11847         Don't depend on $(STMP_FIXPROTO).
11848         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
11849         install fixproto files or write out fixproto settings.
11850         (uninstall): Don't uninstall protoize.
11851         * config.gcc (use_fixproto): Remove.
11852         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
11853         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
11854         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
11855         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
11856         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
11857         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
11858         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
11859         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
11860         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
11861         * config/t-vxworks (STMP_FIXPROTO): Remove.
11862         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
11863         STMP_FIXPROTO): Remove.
11864         * config.in, configure: Regenerate.
11865         * crtstuff.c (gid_t, uid_t): Don't undefine.
11866         * doc/install.texi: Change m68k-coff to m68k-elf in example.
11867         (arm-*-coff, arm-*-aout: Remove target entries.
11868         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
11869         Remove mention of AIX 4.1.
11870         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
11871         * doc/invoke.texi (Running Protoize): Remove.
11872         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
11873         (Protoize Caveats): Remove.
11874         * tsystem.h: Update comments on headers assumed to exist.
11875
11876 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
11877
11878         * genautomata.c: Add a new year to the copyright.  Add a new
11879         reference.
11880         (struct insn_reserv_decl): Add comments for member bypass_list.
11881         (find_bypass): Remove.
11882         (insert_bypass): New.
11883         (process_decls): Use insert_bypass.
11884         (output_internal_insn_latency_func): Output all bypasses with the
11885         same input insn in one switch case.
11886
11887         * rtl.def (define_bypass): Describe bypass choice.
11888         * doc/md.texi (define_bypass): Ditto.
11889
11890 2009-03-27  Richard Guenther  <rguenther@suse.de>
11891
11892         * gimplify.c (mark_addressable): Export.
11893         * tree-flow.h (mark_addressable): Declare.
11894         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
11895         * tree-ssa.c (verify_phi_args): Verify that address taken
11896         variables have TREE_ADDRESSABLE set.
11897
11898 2009-03-27  Richard Guenther  <rguenther@suse.de>
11899
11900         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
11901         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
11902         Do not mark decls TREE_ADDRESSABLE.
11903         (build_fold_addr_expr): Adjust.
11904         (fold_addr_expr): Remove.
11905         (fold_unary): Use build_fold_addr_expr.
11906         (fold_comparison): Likewise.
11907         (split_address_to_core_and_offset): Likewise.
11908         * coverage.c (tree_coverage_counter_addr): Mark the array decl
11909         TREE_ADDRESSABLE.
11910         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
11911         (gimplify_modify_expr_to_memcpy): Mark source and destination
11912         addressable.
11913         * omp-low.c (create_omp_child_function): Mark the object decl
11914         TREE_ADDRESSABLE.
11915         (lower_rec_input_clauses): Mark the var we take the address of
11916         TREE_ADDRESSABLE.
11917         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
11918
11919 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11920
11921         PR middle-end/39315
11922         * cfgexpand.c (expand_one_stack_var_at): Change alignment
11923         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
11924
11925 2009-03-27  Richard Guenther  <rguenther@suse.de>
11926
11927         PR tree-optimization/39120
11928         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
11929         constraints.
11930         (handle_lhs_call): Process return constraints.  Add escape
11931         constraints if necessary.
11932         (handle_const_call): Fill out return constraints.  Make nested
11933         case more precise.  Avoid consttmp if possible.
11934         (handle_pure_call): Fill out return constraints.  Avoid
11935         callused if possible.
11936         (find_func_aliases): Simplify call handling.
11937
11938 2009-03-27  Richard Guenther  <rguenther@suse.de>
11939
11940         PR tree-optimization/39120
11941         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
11942         as a representative.
11943         (solve_graph): Do propagate CALLUSED.
11944         (handle_pure_call): Use a scalar constraint from CALLUSED for
11945         the return value.
11946         (find_what_p_points_to): CALLUSED shall not appear in poins-to
11947         solutions.
11948
11949 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11950
11951         PR c/39323
11952         * c-common.c (handle_aligned_attribute): Properly check alignment
11953         overflow.  Use (1U << i) instead of (1 << i).
11954
11955         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
11956
11957         * expr.h (get_mem_align_offset): Updated.
11958
11959         * tree.h (tree_decl_common): Change align to "unsigned int" and
11960         move it before pointer_alias_set.
11961
11962 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11963             Jakub Jelinek  <jakub@redhat.com>
11964
11965         PR target/38034
11966         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
11967         gr_register_operand with gr_reg_or_0_operand.
11968         (cmpxchg_rel_di): Likewise.
11969         (sync_lock_test_and_set<mode>): Likewise.
11970
11971 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11972
11973         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
11974         (true_regnum): Likewise.
11975
11976         * rtlanal.c (subreg_info): Moved to ...
11977         * rtl.h (subreg_info): Here.  New.
11978         (subreg_get_info): New.
11979
11980         * rtlanal.c (subreg_get_info): Make it extern.
11981
11982 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11983
11984         PR target/39472
11985         * config/i386/i386.c (ix86_abi): New.
11986         (override_options): Handle -mabi=.
11987         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
11988         (ix86_call_abi_override): Likewise.
11989         (init_cumulative_args): Likewise.
11990         (function_arg_advance): Likewise.
11991         (function_arg_64): Likewise.
11992         (function_arg): Likewise.
11993         (ix86_pass_by_reference): Likewise.
11994         (ix86_function_value_regno_p): Likewise.
11995         (ix86_build_builtin_va_list_abi): Likewise.
11996         (setup_incoming_varargs_64): Likewise.
11997         (is_va_list_char_pointer): Likewise.
11998         (ix86_init_machine_status): Likewise.
11999         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
12000         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
12001         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
12002         (ix86_function_abi): Make it static and return enum calling_abi.
12003         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
12004         with ix86_abi.
12005         (ix86_fn_abi_va_list): Updated.
12006
12007         * config/i386/i386.h (ix86_abi): New.
12008         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
12009         (CONDITIONAL_REGISTER_USAGE): Likewise.
12010         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
12011         (machine_function): Likewise.
12012
12013         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
12014         with ix86_abi.
12015         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
12016         (STACK_BOUNDARY): Likewise.
12017         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
12018
12019         * config/i386/i386.opt (mabi=): New.
12020
12021         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
12022         return enum calling_abi.
12023         (ix86_function_type_abi): Likewise.
12024         (ix86_function_abi): Removed.
12025
12026         * doc/invoke.texi: Document -mabi= option for x86.
12027
12028 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12029
12030         * builtins.c (real_dconstp): Delete.
12031         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
12032
12033 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
12034             Jakub Jelinek  <jakub@redhat.com>
12035
12036         PR debug/37959
12037         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
12038         (gen_subprogram_die): When a function is explicit, generate the
12039         DW_AT_explicit attribute.
12040         * langhooks.h (struct lang_hooks_for_decls): Add
12041         function_decl_explicit_p langhook.
12042         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
12043         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
12044
12045 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
12046
12047         * builtins.c (fold_builtin_memory_op): Optimize memmove
12048         into memcpy if we can prove source and destination don't overlap.
12049
12050         * tree-inline.c: Include gt-tree-inline.h.
12051         (clone_fn_id_num): New variable.
12052         (clone_function_name): New function.
12053         (tree_function_versioning): Use it.
12054         * Makefile.in (GTFILES): Add tree-inline.c.
12055
12056 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
12057
12058         * BASE-VER: Change to 4.5.0.
12059
12060 2009-03-27  Xinliang David Li  <davidxl@google.com>
12061
12062         PR tree-optimization/39557
12063         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
12064
12065 2009-03-27  Xinliang David Li  <davidxl@google.com>
12066
12067         PR tree-optimization/39548
12068         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
12069         candidate check.
12070
12071 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
12072
12073         * c-common.c (pointer_int_sum): Use %wd on return from
12074         tree_low_cst.
12075
12076 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
12077
12078         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
12079         on return from tree_low_cst.
12080
12081 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12082
12083         PR c++/36799
12084         * ginclude/stdarg.h (va_copy): Define also for
12085         __GXX_EXPERIMENTAL_CXX0X__.
12086
12087 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12088
12089         PR c++/35652
12090         * builtins.h (c_strlen): Do not warn here.
12091         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
12092         * c-common.c (pointer_int_sum): Take an explicit location.
12093         Warn about offsets out of bounds.
12094         * c-common.h (pointer_int_sum): Adjust declaration.
12095
12096 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12097
12098         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
12099         markup glitch.
12100
12101 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
12102
12103         PR c++/39554
12104         * opts.c (warn_if_disallowed_function_p): Don't assume
12105         get_callee_fndecl must return non-NULL.
12106
12107 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
12108
12109         PR rtl-optimization/39522
12110         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
12111         when reg_reloaded_valid is set.
12112
12113 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12114
12115         * config/spu/divv2df3.c: New file.
12116         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
12117         (DPBIT_FUNCS): Filter out _div_df.
12118
12119 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
12120
12121         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
12122         a jump insn, count that jump in the distance to the loop start.
12123
12124 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
12125
12126         PR target/39523
12127         * config/sh/sh.c (calc_live_regs): Fix condition for global
12128         registers except PIC_OFFSET_TABLE_REGNUM.
12129
12130 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
12131
12132         PR/39518
12133         * doc/invoke.texi (-mconsole): New.
12134         (-mcygwin): New.
12135         (-mno-cygwin): New.
12136         (-mdll): New.
12137         (-mnop-fun-dllimport): New.
12138         (-mthread): New.
12139         (-mwin32): New.
12140         (-mwindows): New.
12141         (sub section "i386 and x86-64 Windows Options"): New.
12142
12143 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
12144
12145         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
12146         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
12147
12148 2009-03-25  Richard Guenther  <rguenther@suse.de>
12149
12150         PR middle-end/39497
12151         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
12152         of -Wno-error.
12153
12154 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
12155
12156         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
12157         neither of haifa/selective schedulers are working.
12158
12159 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12160
12161         * doc/invoke.texi (Debugging Options): Fix description of
12162         -fno-merge-debug-strings.
12163
12164 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
12165
12166         * config/cris/libgcc.ver: New version-script.
12167         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
12168
12169         * configure.ac <GAS features, nop mnemonic>: Add pattern
12170         crisv32-*-* for "nop".
12171         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
12172         * configure: Regenerate.
12173
12174 2009-03-24  Ira Rosen  <irar@il.ibm.com>
12175
12176         PR tree-optimization/39529
12177         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
12178         mark_sym_for_renaming for the tag copied to the new vector
12179         pointer.
12180
12181 2009-03-24  Arthur Loiret  <aloiret@debian.org>
12182
12183         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
12184         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
12185         EXTRA_SPEC_FUNCTIONS.
12186         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
12187         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
12188         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
12189         -march and -mtune options.
12190
12191 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
12192
12193         * config/m68k/t-rtems: Add m5329 multilib.
12194
12195 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
12196             Jakub Jelinek  <jakub@redhat.com>
12197
12198         PR debug/39524
12199         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
12200         nodes.
12201
12202 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
12203
12204         PR c/39495
12205         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
12206         instead of c_parser_expression_conv, if original_code isn't one of the
12207         4 allowed comparison codes, fail.
12208
12209 2009-03-23  Richard Guenther  <rguenther@suse.de>
12210
12211         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
12212         * tree.h (struct tree_type): Likewise.
12213         * reload.h (struct insn_chain): Likewise.
12214         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
12215         * function.h (struct function): Likewise.
12216         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
12217
12218 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
12219
12220         PR tree-optimization/39516
12221         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
12222
12223 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
12224
12225         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
12226         should be set true if BITS_PER_WORD of target is bigger than 32
12227
12228 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
12229
12230         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
12231         Translate -B-options to -rpath-link.  Correct existing
12232         rpath-link and conditionalize on !nostdlib.
12233
12234 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12235
12236         * doc/extend.texi (Function Attributes, Variable Attributes):
12237         Fix typos.
12238         * doc/invoke.texi (Debugging Options, Optimize Options)
12239         (i386 and x86-64 Options, MCore Options): Likewise.
12240
12241 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
12242
12243         PR debug/37890
12244         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
12245         it for block local namespace aliases.
12246         (gen_decl_die): Pass context_die to gen_namespace_die.
12247
12248 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
12249
12250         PR c/39495
12251         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
12252         minimum or maximum value.
12253
12254 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
12255
12256         * reginfo.c (globalize_reg): Recompute derived reg sets.
12257
12258 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
12259
12260         PR target/39063
12261         * libgcc2.c (mprotect): Do not use signed arguments for
12262         VirtualProtect, use DWORD arguments.  Also fix the 'may
12263         be used uninitialized' warning for the np variable.
12264
12265 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
12266
12267         PR target/39496
12268         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
12269         functions using regparm calling conventions when not optimizing.
12270         (ix86_function_sseregparm): Similarly for sseregparm calling
12271         conventions.
12272
12273 2009-03-19  Li Feng  <nemokingdom@gmail.com>
12274
12275         PR middle-end/39500
12276         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
12277         dependence if the first conflict is after niter iterations.
12278
12279 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
12280
12281         PR middle-end/38609
12282         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
12283         functions with dynamic stack-pointer adjustments.
12284
12285 2009-03-19  Ben Elliston  <bje@au.ibm.com>
12286
12287         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
12288         option; change to -msdata=data.
12289
12290 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12291
12292         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
12293         and -fopenmp.
12294
12295 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
12296
12297         PR target/35180
12298         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
12299
12300 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
12301
12302         * doc/invoke.texi (Code Gen Options): Expand discussion of
12303         -fno-common.
12304
12305 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
12306
12307         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
12308         * matrix-reorg.c (struct matrix_info): Likewise.
12309         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
12310         * rtl.h (struct mem_attrs): Likewise.
12311         * df.h (struct df): Likewise.
12312         * tree-data-ref.h (struct data_dependence_relation): Likewise.
12313         * ira-int.h (struct ira_allocno): Likewise.
12314         * df-scan.c (struct df_collection_rec): Likewise.
12315         * ira.c (struct equivalence): Likewise.
12316         * function.c (struct temp_slot): Likewise.
12317         * cfgloop.h (struct loop): Likewise.
12318
12319         PR debug/39485
12320         * function.c (use_register_for_decl): When not optimizing, disregard
12321         register keyword for variables with types containing methods.
12322
12323 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
12324
12325         PR middle-end/39447
12326         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
12327         (is_simple_operand): Call contains_component_ref_p before calling data
12328         reference analysis that would fail on COMPONENT_REFs.
12329
12330         * tree-vrp.c (search_for_addr_array): Fix formatting.
12331
12332 2009-03-18  Richard Guenther  <rguenther@suse.de>
12333
12334         * tree-vect-transform.c (vect_loop_versioning): Fold the
12335         generated comparisons.
12336         * tree-vectorizer.c (set_prologue_iterations): Likewise.
12337         (slpeel_tree_peel_loop_to_edge): Likewise.
12338
12339 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12340
12341         PR middle-end/37805
12342         * opts.c (print_specific_help): In addition to `undocumented',
12343         accept `separate' and `joined' flags if passed alone.  Describe
12344         output by the first matched one of those.
12345         (common_handle_option): Skip over empty strings.
12346         * gcc.c (display_help): Fix help string for `--help='.
12347         * doc/invoke.texi (Option Summary, Overall Options): With
12348         `--help=', classes and qualifiers can both be repeated, but
12349         only the latter can be negated.  One should not pass only
12350         negated qualifiers.  Fix markup and examples.
12351
12352         Revert
12353         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
12354         PR middle-end/37805
12355         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
12356         and -fhelp=separate.
12357
12358 2009-03-17  Jing Yu  <jingyu@google.com>
12359
12360         PR middle-end/39378
12361         * function.h (struct rtl_data): Move is_thunk from here...
12362         (struct function): ...to here.
12363         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
12364         * varasm.c (assemble_start_function): Change is_thunk from crtl to
12365         cfun.
12366         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
12367         cfun.
12368         (alpha_does_function_need_gp, alpha_start_function): Likewise.
12369         (alpha_output_function_end_prologue): Likewise.
12370         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
12371         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
12372         (rs6000_output_function_epilogue): Likewise.
12373         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
12374
12375 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
12376
12377         PR target/39482
12378         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
12379         from different units in a single alternative.
12380         (*truncdfsf_i387): Ditto.
12381         (*truncxfsf2_mixed): Ditto.
12382         (*truncxfdf2_mixed): Ditto.
12383
12384 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
12385
12386         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
12387         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
12388
12389         PR debug/39474
12390         * tree-ssa-live.c (remove_unused_locals): Don't remove local
12391         unused non-artificial variables when not optimizing.
12392
12393         PR debug/39471
12394         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
12395         DW_TAG_imported_module even if decl is IMPORTED_DECL with
12396         NAMESPACE_DECL in its DECL_INITIAL.
12397
12398         PR middle-end/39443
12399         * optabs.c (set_user_assembler_libfunc): New function.
12400         * expr.h (set_user_assembler_libfunc): New prototype.
12401         * c-common.c: Include libfuncs.h.
12402         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
12403         for memcmp, memset, memcpy, memmove and abort.
12404         * Makefile.in (c-common.o): Depend on libfuncs.h.
12405
12406         PR debug/39412
12407         * dwarf2out.c (gen_inlined_enumeration_type_die,
12408         gen_inlined_structure_type_die, gen_inlined_union_type_die,
12409         gen_tagged_type_instantiation_die): Removed.
12410         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
12411         do nothing.
12412
12413 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
12414
12415         PR testsuite/38526
12416         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
12417         its use.
12418         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
12419         (check-parallel-%): Ditto.
12420         (check-consistency): Ditto.
12421
12422 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
12423
12424         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
12425         local variable rhs by NULL_TREE.
12426
12427 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
12428
12429         PR target/39477
12430         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
12431
12432 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
12433
12434         PR target/39476
12435         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
12436
12437 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
12438
12439         PR target/39473
12440         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
12441         for ms->sysv ABI calls only in 64bit mode.
12442
12443         * config/i386/i386.md (untyped_call): Support 32bit.
12444
12445 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
12446
12447         * doc/extend.texi: Replace x86_65 with x86_64.
12448
12449 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
12450
12451         PR tree-optimization/39455
12452         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
12453         mismatches for POINTER_TYPE_P (type).
12454         (number_of_iterations_le): Likewise.
12455
12456 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
12457
12458         * config/picochip/picochip.c: Removed profiling support.
12459         * config/picochip/picochip.md: Removed profiling instruction.
12460         * config/picochip/picochip.h: Removed profiling builtin.
12461
12462 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
12463
12464         * doc/install.texi (--with-host-libstdcxx): Document.
12465
12466 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
12467
12468         PR target/34299
12469         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
12470         generate a warning if the function name does not begin with
12471         "__vector" and the function has either the 'signal' or 'interrupt'
12472         attribute, from here to ...
12473         (avr_declare_function_name): ...here. New function.
12474         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
12475         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
12476
12477 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
12478
12479         PR bootstrap/39454
12480         * cse.c (fold_rtx): Don't modify original const_arg1 when
12481         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
12482         separate variable instead.
12483         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
12484         from out of range shift counts.
12485         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
12486
12487 2009-03-13  Catherine Moore  <clm@codesourcery.com>
12488
12489         * config/i386/x-mingw32 (host-mingw32.o): Replace
12490         diagnostic.h with $(DIAGNOSTIC_H).
12491
12492 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
12493
12494         PR target/39431
12495         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
12496         predicate.
12497         * config/i386/sync.md (sync_compare_and_swap<mode>,
12498         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
12499         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
12500         into a register.
12501         (sync_double_compare_and_swapdi_pic,
12502         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
12503         cmpxchg8b_pic_memory_operand instead of just memory_operand.
12504
12505 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
12506
12507         PR target/39445
12508         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
12509
12510 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
12511
12512         PR target/39327
12513         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
12514         (avx_addsubv4df3): Likewise.
12515         (*avx_addsubv4sf3): Likewise.
12516         (sse3_addsubv4sf3): Likewise.
12517
12518 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
12519
12520         PR target/38824
12521         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
12522
12523 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
12524
12525         PR debug/39432
12526         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
12527         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
12528         registers for allocnos created from user-defined variables.
12529
12530 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12531
12532         PR target/39181
12533         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
12534         of non-integer mode as well.
12535
12536 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
12537
12538         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
12539         for functions for which the parameter types are unknown.
12540
12541 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
12542
12543         PR target/39137
12544         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
12545         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
12546         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
12547         * config/i386/i386.c (ix86_local_alignment): For
12548         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
12549         long long variables on the stack to avoid dynamic realignment.
12550         Allow the first argument to be a decl rather than type.
12551         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
12552
12553 2009-03-11  Nick Clifton  <nickc@redhat.com>
12554
12555         PR target/5362
12556         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
12557         options.
12558         Add description to mno-lsim option.
12559         * config/mcore/mcore.h: Remove comment about deprecated m4align
12560         option.
12561         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
12562         * doc/invoke.texi: Add description of mno-lsim and
12563         mstack-increment options.
12564
12565         * config/fr30/fr30.opt: Document the -mno-lsim option.
12566         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
12567         and -mno-lsim options.
12568
12569 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12570
12571         * fold-const.c (fold_comparison): Only call fold_inf_compare
12572         if the mode supports infinities.
12573
12574 2009-03-11  Jason Merrill  <jason@redhat.com>
12575
12576         PR debug/39086
12577         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
12578         end already did.  Notice GIMPLE_CALL modifications of the result.
12579         Don't copy debug information from an ignored decl or a decl from
12580         another function.
12581
12582 2009-03-10  Richard Guenther  <rguenther@suse.de>
12583             Nathan Froyd  <froydnj@codesourcery.com>
12584
12585         PR middle-end/37850
12586         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
12587         (__divMODE3): Likewise.
12588
12589 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
12590
12591         PR tree-optimization/39394
12592         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
12593         DECL_SIZE_UNIT of variable length FIELD_DECLs.
12594
12595 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12596
12597         * recog.c (verfiy_changes): Disallow renaming of hard regs in
12598         inline asms for register asm ("") declarations.
12599
12600 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
12601
12602         * fold-const.c (fold_unary): Fix comment.
12603
12604 2009-03-07  Jan Hubicka  <jh@suse.cz>
12605
12606         PR target/39361
12607         * tree-inline.c (setup_one_parameter): Do replacement of const
12608         argument by constant in SSA form.
12609
12610 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12611
12612         PR middle-end/38028
12613         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
12614         determine alignment passed to assign_stack_local.
12615         (assign_parms_unsplit_complex): Likewise.
12616         * except.c (sjlj_build_landing_pads): Likewise.
12617
12618 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
12619
12620         PR middle-end/39360
12621         * tree-flow.h (add_referenced_var): Return bool instead of void.
12622         * tree-dfa.c (add_referenced_var): Return result of
12623         referenced_var_check_and_insert call.
12624         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
12625         of referenced_var_check_and_insert.
12626
12627         PR debug/39372
12628         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
12629         (gen_variable_die): Emit DW_AT_location on abstract static variable's
12630         DIE, don't emit it if abstract origin already has it.
12631         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
12632         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
12633
12634 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
12635
12636         * genpreds.c (needs_variable): Fix parentheses at variable name
12637         detection.
12638         (write_tm_constrs_h): Indent generated code.
12639
12640 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12641
12642         * doc/extend.texi (Function Attributes): Add documentation
12643         for isr attributes.
12644
12645 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
12646
12647         PR debug/39387
12648         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
12649         take locus from its DECL_SOURCE_LOCATION instead of input_location.
12650
12651 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
12652
12653         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
12654         the loop as bad.
12655
12656 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
12657
12658         PR debug/39379
12659         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
12660         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
12661
12662 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
12663
12664         * config/i386/i386.md (R8_REG, R9_REG): New constants.
12665         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
12666         constants instead of magic numbers.
12667         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
12668         (QI_REG_P): Ditto.
12669         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
12670         (x86_64_ms_abi_int_parameter_registers): Ditto.
12671         (x86_64_int_return_registers): Ditto.
12672         (ix86_maybe_switch_abi): Ditto.
12673         (ix86_expand_call): Ditto for clobbered_registers array.
12674         (ix86_hard_regno_mode_ok): Ditto.
12675         (x86_extended_QIreg_mentioned_p): Ditto.
12676
12677 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
12678
12679         PR tree-optimization/39349
12680         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
12681
12682         * combine.c (gen_lowpart_for_combine): Use omode when generating
12683         clobber.
12684
12685 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
12686
12687         PR rtl-optimization/39235
12688         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
12689
12690 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
12691
12692         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
12693
12694 2009-03-04  Richard Guenther  <rguenther@suse.de>
12695
12696         PR tree-optimization/39362
12697         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
12698         that occur in abnormal PHIs should be varying.
12699
12700 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
12701
12702         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
12703         Extend comments.
12704         (simple_iv):  Take loop as an argument instead of statement.
12705         * tree-scalar-evolution.h (simple_iv): Declaration changed.
12706         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
12707         to simple_iv.
12708         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
12709         Ditto.
12710         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
12711         * matrix-reorg.c (analyze_transpose): Ditto.
12712         * tree-data-ref.c (dr_analyze_innermost): Ditto.
12713         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
12714         * tree-predcom.c (ref_at_iteration): Ditto.
12715         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
12716
12717 2009-03-04  Richard Guenther  <rguenther@suse.de>
12718
12719         PR tree-optimization/39358
12720         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
12721         escaped_id and callused_id.
12722         (solve_graph): Likewise.
12723
12724 2009-03-04  Richard Guenther  <rguenther@suse.de>
12725
12726         PR tree-optimization/39339
12727         * tree-sra.c (try_instantiate_multiple_fields): Make it
12728         no longer ICE on the above.
12729
12730 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
12731
12732         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
12733         that fits within Pmode.
12734
12735 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
12736
12737         PR middle-end/10109
12738         * tm.texi (LIBCALL_VALUE): Update description.
12739
12740 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
12741
12742         PR middle-end/34443
12743         * doc/extend.texi (section): Update description.
12744
12745 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
12746
12747         PR middle-end/39345
12748         * tree-inline.c (remapped_type): New.
12749         (can_be_nonlocal): Call remapped_type instead of remap_type.
12750
12751 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
12752
12753         PR fortran/39354
12754         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
12755         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
12756
12757 2009-03-03  Richard Guenther  <rguenther@suse.de>
12758
12759         PR middle-end/39272
12760         * tree.c (tree_nonartificial_location): New function.
12761         * tree.h (tree_nonartificial_location): Declare.
12762         * builtins.c (expand_builtin_memory_chk): Provide location
12763         of the call location for artificial function pieces.
12764         (maybe_emit_chk_warning): Likewise.
12765         (maybe_emit_sprintf_chk_warning): Likewise.
12766         (maybe_emit_free_warning): Likewise.
12767         * expr.c (expand_expr_real_1): Likewise.
12768
12769 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
12770
12771         PR tree-optimization/39343
12772         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
12773         COMPONENT_REF t has ARRAY_TYPE.
12774
12775 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
12776
12777         PR middle-end/39335
12778         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
12779         when the type precision of the induction variable should be
12780         larger than the type precision of nit.
12781         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
12782         * graphite.c (graphite_loop_normal_form): Same.
12783         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
12784
12785 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
12786
12787         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
12788         (*call_1_rex64_ms_sysv): Use named constants instead of magic
12789         numbers to describe clobbered registers.
12790         (*call_value_0_rex64_ms_sysv): Ditto.
12791         * config/i386/mmx.md (mmx_emms): Ditto.
12792         (mmx_femms): Ditto.
12793
12794 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
12795
12796         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
12797         of ABI_64.
12798
12799 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12800
12801         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
12802         (spu_section_type_flags): New function.
12803
12804 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
12805
12806         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
12807         reg_class_contents of FLOAT_REGS into a temporary.
12808
12809 2009-03-02  Richard Guenther  <rguenther@suse.de>
12810             Ira Rosen  <irar@il.ibm.com>
12811
12812         PR tree-optimization/39318
12813         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
12814         information to the vectorized statement.
12815
12816 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
12817
12818         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
12819         variable.  Use defined names instead of magic constants for REX SSE
12820         registers.
12821
12822 2009-03-01  Richard Guenther  <rguenther@suse.de>
12823
12824         PR tree-optimization/39331
12825         * omp-low.c (lower_send_shared_vars): Do not receive new
12826         values for the reference of DECL_BY_REFERENCE parms or results.
12827
12828 2009-03-01  Jan Hubicka  <jh@suse.cz>
12829
12830         PR debug/39267
12831         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
12832         BLOCK_NONLOCALIZED_VAR): New macros.
12833         (tree_block): Add nonlocalized_vars.
12834         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
12835         gen_decl_die): Add origin argument.  Allow generation of die with
12836         origin at hand only.
12837         (gen_member_die, gen_type_die_with_usage, force_decl_die,
12838         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
12839         of gen_*.
12840         (gen_block_die): Fix checking for unused blocks.
12841         (process_scope_var): Break out from .... ; work with origins only.
12842         (decls_for_scope) ... here; process nonlocalized list.
12843         (dwarf2out_ignore_block): Look for nonlocalized vars.
12844         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
12845         vars.
12846         (dump_scope_block): Dump them.
12847         * tree-inline.c (remap_decls): Handle nonlocalized vars.
12848         (remap_block): Likewise.
12849         (can_be_nonlocal): New predicate.
12850         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
12851
12852 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12853
12854         * configure: Regenerate.
12855
12856 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12857
12858         * optc-gen.awk: No need to duplicate option flags twice.
12859         Reuse help texts for duplicate options which do not have any.
12860
12861         * gcc.c (display_help): Document --version.
12862
12863         * gcc.c (main): If print_help_list and verbose_flag, ensure
12864         driver output comes before subprocess output.
12865
12866         * optc-gen.awk: Assign all remaining fields to help string,
12867         space-separated, for multi-line help in *.opt.
12868
12869         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
12870         -Wno-pedantic-ms-format is for MinGW targets only.
12871
12872         * doc/options.texi (Option file format): Fix bad indentation,
12873         restoring dropped sentence.
12874
12875 2009-02-28  Jan Hubicka  <jh@suse.cz>
12876
12877         * tree-inline.c (tree_function_versioning): Output debug info.
12878
12879 2009-02-28  Jan Hubicka  <jh@suse.cz>
12880
12881         PR debug/39267
12882         * tree-inline.c (setup_one_parameter): Do not copy propagate
12883         arguments when not optimizing.
12884
12885 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
12886
12887         PR target/39327
12888         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
12889         (avx_addsubv4df3): Likewise.
12890         (*avx_addsubv4sf3): Likewise.
12891         (sse3_addsubv4sf3): Likewise.
12892         (*avx_addsubv2df3): Likewise.
12893         (sse3_addsubv2df3): Likewise.
12894         (avx_unpckhps256): Correct item selectors.
12895         (avx_unpcklps256): Likewise.
12896         (avx_unpckhpd256): Likewise.
12897         (avx_unpcklpd256): Likewise.
12898
12899 2009-02-28  Jan Hubicka  <jh@suse.cz>
12900
12901         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
12902         static vars.
12903         (copy_arguments_for_versioning): If var is declared don't declare it.
12904         (tree_function_versioning): First setup substitutions and then copy
12905         args.
12906
12907 2009-02-27  Jan Hubicka  <jh@suse.cz>
12908
12909         PR debug/39267
12910         * cgraph.h (varpool_output_debug_info): Remove.
12911         * cgraphunit.c (varpool_output_debug_info): Remove.
12912         * dwarf2out.c (deferred_locations_struct): New struct
12913         (deferred_locations): New type.
12914         (deferred_locations_list): New static var.
12915         (deffer_location): New function.
12916         (gen_variable_die): Use it.
12917         (decls_for_scope): Output info on local static vars.
12918         (dwarf2out_finish): Process deferred locations.
12919         * varpool.c (varpool_output_debug_info): Remove.
12920
12921 2009-02-27  Jan Hubicka  <jh@suse.cz>
12922
12923         PR debug/39267
12924         * tree.h (TREE_PROTECTED): Fix comment.
12925         (BLOCK_HANDLER_BLOCK): Remove.
12926         (struct tree_block): Remove handler_block add body_block.
12927         (inlined_function_outer_scope_p): New.
12928         (is_body_block): Remove.
12929         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
12930         * dwarf2out.c (is_inlined_entry_point): Remove.
12931         (add_high_low_attributes): Use inlined_function_outer_scope_p.
12932         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
12933         code.
12934         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
12935         * gimplify.c (gimplify_expr): Gimplify body blocks.
12936         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
12937         block with multiple subblocks.
12938         (dump_scope_block): Prettier output; dump more flags and info.
12939         (dump_scope_blocks): New.
12940         (remove_unused_locals): Use dump_scope_blocks.
12941         * tree-flow.h (dump_scope_blocks): Declare.
12942         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
12943         * stmt.c (is_body_block): Remove.
12944         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
12945         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
12946
12947 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
12948
12949         PR middle-end/39308
12950         * graphite.c (graphite_loop_normal_form): Do not call
12951         number_of_iterations_exit from a gcc_assert.
12952
12953 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12954
12955         * config/s390/s390.c (s390_swap_cmp): Look for conditional
12956         jumps if COND is NULL.
12957         (find_cond_jump): New function.
12958         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
12959         * config/s390/s390.md: Remove z10_cobra attribute value.
12960
12961 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
12962
12963         * config/alpha/alpha.h (alpha_expand_mov): Return false if
12964         force_const_mem returns NULL_RTX.
12965
12966 2009-02-26  Jan Hubicka  <jh@suse.cz>
12967
12968         PR debug/39267
12969         * cgraph.h (varpool_output_debug_info): Remove.
12970         * cgraphunit.c (varpool_output_debug_info): Remove.
12971         * dwarf2out.c (deferred_locations_struct): New struct
12972         (deferred_locations): New type.
12973         (deferred_locations_list): New static var.
12974         (deffer_location): New function.
12975         (gen_variable_die): Use it.
12976         (decls_for_scope): Output info on local static vars.
12977         (dwarf2out_finish): Process deferred locations.
12978         * varpool.c (varpool_output_debug_info): Remove.
12979
12980 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
12981
12982         PR rtl-optimization/39241
12983         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
12984         to subreg_offset_representable_p.
12985
12986 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
12987
12988         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
12989         execute function prototype.  Get f and nregs from max_reg_num
12990         and get_insns.  Remove the first backward pass as it's dead,
12991         guard the forward pass by flag_expensive_optimizations.
12992         (rest_of_handle_regmove): Delete.
12993         (pass_regmove): Replace it with regmove_optimize.
12994
12995 2009-02-25  Martin Jambor  <mjambor@suse.cz>
12996
12997         PR tree-optimization/39259
12998         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
12999         calls_alloca function flags.
13000         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
13001         calls are detected.
13002
13003 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
13004
13005         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
13006         flags_set_1_rtx, flags_set_1_set): Delete.
13007         (regmove_optimize): Do not call mark_flags_life_zones.
13008
13009 2009-02-24  Julian Brown  <julian@codesourcery.com>
13010
13011         PR target/35965
13012         * config/arm/arm.c (require_pic_register): Only set
13013         cfun->machine->pic_reg once per function.
13014
13015 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
13016
13017         * doc/invoke.texi (Link Options): Document an easier way to pass
13018         options that take arguments to the GNU linker using -Xlinker and -Wl.
13019
13020 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
13021
13022         PR target/33785
13023         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
13024
13025 2009-02-24  Richard Guenther  <rguenther@suse.de>
13026
13027         PR debug/39285
13028         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
13029
13030 2009-02-24  Richard Guenther  <rguenther@suse.de>
13031             Zdenek Dvorak  <ook@ucw.cz>
13032
13033         PR tree-optimization/39233
13034         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
13035         from converting them to a generic type.
13036
13037 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
13038
13039         PR tree-optimization/39260
13040         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
13041         contains a condition with a real type.
13042         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
13043
13044 2009-02-23  Jason Merrill  <jason@redhat.com>
13045
13046         PR c++/38880
13047         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
13048         narrowing_initializer_constant_valid_p.
13049         (narrowing_initializer_constant_valid_p): Don't return
13050         null_pointer_node for adding a pointer to itself.
13051
13052 2009-02-23  Jan Hubicka  <jh@suse.cz>
13053
13054         PR c/12245
13055         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
13056         resizing.
13057
13058 2009-02-23  Jan Hubicka  <jh@suse.cz>
13059
13060         PR tree-optimization/37709
13061         * tree.c (block_ultimate_origin): Move here from dwarf2out.
13062         * tree.h (block_ultimate_origin): Declare.
13063         * dwarf2out.c (block_ultimate_origin): Move to tree.c
13064         * tree-ssa-live.c (remove_unused_scope_block_p):
13065         Eliminate blocks containig no instructions nor live variables nor
13066         nested blocks.
13067         (dump_scope_block): New function.
13068         (remove_unused_locals): Enable removal of dead blocks by default;
13069         enable dumping at TDF_DETAILS.
13070
13071 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
13072
13073         * config/i386/i386.c (classify_argument): Don't allow COImode
13074         and OImode.
13075         (function_arg_advance_32): Don't allow OImode.
13076         (function_arg_32): Likewise.
13077         (function_value_32): Likewise.
13078         (return_in_memory_32): Likewise.
13079         (function_arg_64): Remove OImode comment.
13080
13081 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
13082
13083         PR target/39261
13084         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
13085         ix86_expand_vector_set for V4DImode in 64bit mode only.
13086         (ix86_expand_vector_init_one_var): Likewise.
13087
13088 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
13089
13090         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
13091
13092 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
13093
13094         PR bootstrap/39257
13095         * loop-iv.c: Revert last change.
13096         * emit-rtl.c: Likewise.
13097
13098 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
13099
13100         PR target/39256
13101         * config/i386/i386.c (type_natural_mode): Remove an extra
13102         space in the warning message.
13103         (function_value_32): Handle 32-byte vector modes.
13104         (return_in_memory_32): Likewise.
13105
13106 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
13107
13108         * loop-iv.c (truncate_value): New function.
13109         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
13110         of lowpart_subreg.
13111         (lowpart_subreg): Move to...
13112         * emit-rtl.c: ...here.
13113
13114 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
13115
13116         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
13117         accidental and undocumented change at revision 140860.
13118
13119 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
13120
13121         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
13122         take gimple_seq * arguments.
13123         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
13124         types_compatible_p langhook.
13125
13126 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
13127             Joseph Myers  <joseph@codesourcery.com>
13128
13129         * config/arm/arm.c (arm_builtin_va_list): New function.
13130         (arm_expand_builtin_va_start): Likewise.
13131         (arm_gimplify_va_arg_expr): Likewise.
13132         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
13133         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
13134         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
13135         (va_list_type): New variable.
13136         (arm_mangle_type): Mangle va_list_type appropriately.
13137
13138 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
13139
13140         PR middle-end/39157
13141         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
13142         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
13143         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
13144         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
13145         parameter to 1000 for -O1 by default.
13146         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
13147         parameter.
13148         * loop-invariant.c: Include params.h.
13149         (move_loop_invariants): Don't call move_single_loop_invariants on
13150         very large loops.
13151
13152 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
13153
13154         * calls.c (emit_library_call_value_1): Use slot_offset instead of
13155         offset when calculating bounds for indexing stack_usage_map.  Fixes
13156         a buffer overflow with certain target setups.
13157
13158 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
13159
13160         PR target/39240
13161         * calls.c (expand_call): Clear try_tail_call if caller and callee
13162         disagree in promotion of function return value.
13163
13164 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
13165
13166         PR target/39175
13167         * c-common.c (c_determine_visibility): If visibility changed and
13168         DECL_RTL has been already set, call make_decl_rtl to update symbol
13169         flags.
13170
13171 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
13172
13173         PR c++/39188
13174         * varasm.c (assemble_variable): Don't check DECL_NAME when
13175         globalizing a variable.
13176
13177 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
13178
13179         PR c/38483
13180         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
13181         expression before any __builtin_trap call.
13182         * c-typeck.c (build_function_call): Convert and check function
13183         arguments before generating a call to a trap.  Evaluate the
13184         function arguments before the trap.
13185
13186 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
13187
13188         PR target/39228
13189         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
13190         (UNSPEC_FXAM_MEM): New unspec.
13191         (fxam<mode>2_i387_with_temp): New insn and split pattern.
13192         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
13193         memory using fxam<mode>2_i387_with_temp to remove excess precision.
13194
13195 2009-02-19  Richard Guenther  <rguenther@suse.de>
13196
13197         PR tree-optimization/39207
13198         PR tree-optimization/39074
13199         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
13200         storedanything_tree): New.
13201         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
13202         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
13203         (build_succ_graph): Add edges from STOREDANYTHING to all
13204         non-direct nodes.
13205         (init_base_vars): Initialize STOREDANYTHING.
13206         (compute_points_to_sets): Free substitution info after
13207         building the succ graph.
13208         (ipa_pta_execute): Likewise.
13209
13210         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
13211         field.
13212         (do_ds_constraint): Do not add to special var or non-pointer
13213         field solutions.
13214         (type_could_have_pointers): Split out from ...
13215         (could_have_pointers): ... here.  For arrays use the element type.
13216         (create_variable_info_for): Initialize may_have_pointers.
13217         (new_var_info): Likewise.
13218         (handle_lhs_call): Make the HEAP variable unknown-sized.
13219         (intra_create_variable_infos): Use a type with pointers for
13220         PARM_NOALIAS, make it unknown-sized.
13221
13222 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
13223
13224         PR target/39224
13225         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
13226
13227 2009-02-18  Jason Merrill  <jason@redhat.com>
13228
13229         PR target/39179
13230         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
13231         value if DECL_EXTERNAL.
13232         * tree-sra.c (sra_walk_gimple_assign): Likewise.
13233         * target.h (gcc_target::binds_local_p): Clarify "module".
13234         * tree.h (TREE_PUBLIC): Clarify "module".
13235
13236 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
13237
13238         PR target/38891
13239         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
13240         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
13241
13242 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
13243
13244         PR target/39082
13245         * c.opt (Wabi): Support C and ObjC.
13246         (Wpsabi): New.
13247
13248         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
13249
13250         * config/i386/i386.c (classify_argument): Warn once about the ABI
13251         change when passing union with long double.
13252
13253         * doc/invoke.texi: Update -Wabi for warning psABI changes.
13254
13255 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
13256
13257         PR c/35447
13258         * c-parser.c (c_parser_compound_statement): Always enter and leave
13259         a scope.
13260
13261 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13262
13263         PR target/34587
13264         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
13265
13266 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
13267
13268         PR tree-optimization/36922
13269         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
13270         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
13271         Likewise.
13272
13273 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
13274
13275         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
13276         to 0 for EABI64.
13277
13278 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
13279
13280         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
13281
13282 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
13283
13284         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
13285         tree sharing.
13286
13287 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
13288             Richard Sandiford  <rdsandiford@googlemail.com>
13289
13290         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
13291         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
13292         (loongson_biadd): ...this.
13293
13294 2009-02-17  Richard Guenther  <rguenther@suse.de>
13295
13296         PR tree-optimization/39202
13297         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
13298         a var make sure to follow existing collapses.
13299
13300 2009-02-17  Richard Guenther  <rguenther@suse.de>
13301
13302         PR middle-end/39214
13303         * langhooks.c (lhd_print_error_function): Check for NULL block.
13304
13305 2009-02-17  Richard Guenther  <rguenther@suse.de>
13306
13307         PR tree-optimization/39204
13308         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
13309         of the PHI arg.
13310
13311 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
13312
13313         * config/soft-fp/double.h: Update from glibc CVS.
13314
13315 2009-02-17  Richard Guenther  <rguenther@suse.de>
13316
13317         PR tree-optimization/39207
13318         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
13319         strict-aliasing warnings for pointers pointing to NULL.
13320
13321 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
13322
13323         PR c/35446
13324         * c-parser.c (c_parser_braced_init): Call pop_init_level when
13325         skipping until next close brace.
13326
13327 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
13328
13329         PR target/37049
13330         * config/i386/i386.c (ix86_expand_push): Set memory alignment
13331         to function argument boundary.
13332
13333 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13334
13335         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
13336         in the lea_add. Reload eventually constraints it properly.
13337         * config/picochip/constraints.md: Remove the target constraint
13338         "b", since it is not needed anymore.
13339
13340 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
13341
13342         * gthr-dce.h: Uglify function parameter and local variable names.
13343         * gthr-gnat.h: Likewise.
13344         * gthr-mipssde.h: Likewise.
13345         * gthr-nks.h: Likewise.
13346         * gthr-posix95.h: Likewise.
13347         * gthr-posix.h: Likewise.
13348         * gthr-rtems.h: Likewise.
13349         * gthr-single.h: Likewise.
13350         * gthr-solaris.h: Likewise.
13351         * gthr-tpf.h: Likewise.
13352         * gthr-vxworks.h: Likewise.
13353         * gthr-win32.h: Likewise.
13354
13355 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
13356
13357         PR target/39196
13358         * config/i386/i386.md: Restrict the new peephole2 to move
13359         between MMX/SSE registers.
13360
13361 2009-02-15  Richard Guenther  <rguenther@suse.de>
13362
13363         Revert
13364         2009-02-13  Richard Guenther  <rguenther@suse.de>
13365
13366         * configure.ac: Enable LFS.
13367         * configure: Re-generate.
13368         * config.in: Likewise.
13369
13370 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13371
13372         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
13373         spu_srqwbyte, spu_srqwbytebc): Define.
13374         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
13375         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
13376         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
13377         "shrqby_<mode>"): New insn-and-split patterns.
13378         * config/spu/spu.c (expand_builtin_args): Determine and return
13379         number of operands using spu_builtin_description data.
13380         (spu_expand_builtin_1): Use it.
13381
13382 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
13383
13384         PR target/38056
13385         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
13386         TARGET_CONST_GP.
13387
13388 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
13389
13390         PR target/39149
13391         * config/i386/i386.c (override_options): Correct warning
13392         messages for -malign-loops, -malign-jumps and -malign-functions.
13393
13394 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
13395
13396         PR target/39152
13397         * config/i386/i386.md: Restrict the new peephole2 to move
13398         between the general purpose registers.
13399
13400 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
13401
13402         PR target/39162
13403         * config/i386/i386.c (type_natural_mode): Add a new argument.
13404         Return the original mode and warn ABI change if vector size is 32byte.
13405         (function_arg_advance): Updated.
13406         (function_arg): Likewise.
13407         (ix86_function_value): Likewise.
13408         (ix86_return_in_memory): Likewise.
13409         (ix86_sol10_return_in_memory): Likewise.
13410         (ix86_gimplify_va_arg): Likewise.
13411         (function_arg_32): Don't warn ABX ABI change here.
13412         (function_arg_64): Likewise.
13413
13414 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
13415
13416         * loop-iv.c (implies_p): In the final case, test that operands 0
13417         of the two comparisons match.
13418
13419         * config/bfin/bfin.c (find_prev_insn_start): New function.
13420         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
13421         (find_next_insn_start): Move.
13422
13423 2009-02-13  Richard Guenther  <rguenther@suse.de>
13424
13425         * configure.ac: Enable LFS.
13426         * configure: Re-generate.
13427         * config.in: Likewise.
13428
13429 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
13430
13431         PR c/35444
13432         * c-parser.c (c_parser_parms_list_declarator): Discard pending
13433         sizes on syntax error after some arguments have been parsed.
13434
13435 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
13436
13437         * doc/invoke.texi (-fira): Remove.
13438
13439 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
13440
13441         * caller-save.c: Replace regclass.c with reginfo.c in comments.
13442         * recog.c: Likewise.
13443         * rtl.h: Likewise.
13444
13445 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
13446
13447         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
13448         (umul_ppmm): Likewise.
13449         (count_leading_zeros): Likewise.
13450         (count_trailing_zeros): Likewise.
13451         (UMUL_TIME): Likewise.
13452
13453 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
13454
13455         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
13456         soft-fp/t-softfp to tmake_file.
13457
13458         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
13459         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
13460         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
13461         IA64_BUILTIN_INFQ]: New.
13462         (ia64_init_builtins): Initialize __builtin_infq,
13463         __builtin_fabsq and __builtin_copysignq if not HPUX.
13464         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
13465         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
13466
13467         * config/ia64/lib1funcs.asm (__divtf3): Define only if
13468         SHARED is defined.
13469         (__fixtfti): Likewise.
13470         (__fixunstfti): Likewise.
13471         (__floattitf): Likewise.
13472
13473         * config/ia64/libgcc-glibc.ver: New.
13474         * config/ia64/t-fprules-softfp: Likewise.
13475         * config/ia64/sfp-machine.h: Likewise.
13476
13477         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
13478         (LIBGCC2_TF_CEXT): Likewise.
13479         (TF_SIZE): Likewise.
13480         (TARGET_INIT_LIBFUNCS): Likewise.
13481
13482         * config/ia64/t-glibc (SHLINB_MAPFILES):
13483         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
13484
13485 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
13486
13487         * config/i386/i386.c (construct_container): Rewrite processing
13488         BLKmode with X86_64_SSE_CLASS.
13489
13490 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
13491
13492         PR target/39152
13493         * config/i386/i386.md: Replace simplify_replace_rtx with
13494         replace_rtx in the new peephole2.
13495
13496 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
13497
13498         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
13499         loop unrolling do not happen at -O2.
13500
13501 2009-02-12  Michael Matz  <matz@suse.de>
13502
13503         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
13504
13505 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
13506
13507         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
13508         for -g3.
13509
13510 2009-02-12  Ben Elliston  <bje@au.ibm.com>
13511
13512         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
13513         patterns when updating the back chain.  Missed in the 2009-02-10
13514         change.
13515
13516 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
13517
13518         * doc/extend.texi (Decimal Floating Types): Update identifier of
13519         draft TR and list of missing support.
13520
13521 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
13522
13523         PR middle-end/39154
13524         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
13525         bit to variable length decl's flags, add it also to its
13526         pointer replacement variable.
13527
13528 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
13529             Jakub Jelinek  <jakub@redhat.com>
13530
13531         PR target/39118
13532         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
13533         (memory_blockage): New expander.
13534         (*memory_blockage): New insn pattern.
13535         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
13536         instead of general blockage at the end of function prologue when
13537         frame pointer is used to access red zone area.  Do not emit blockage
13538         when profiling, it is emitted in generic code.
13539         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
13540         function epilogue when frame pointer is used to access red zone area.
13541
13542 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
13543
13544         PR target/38824
13545         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
13546         by arithmetic with memory operands.
13547         * config/i386/predicates.md (commutative_operator): New.
13548
13549 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
13550
13551         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
13552         bulleted lists.
13553
13554 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
13555
13556         * alias.h (record_alias_subset): Declare.
13557         * alias.c (record_alias_subset): Make global.
13558
13559 2009-02-10  Nick Clifton  <nickc@redhat.com>
13560
13561         * tree-parloops.c: Change license to GPLv3.
13562         * ipa-struct-reorg.c: Change license to GPLv3.
13563         * ipa-struct-reorg.h: Change license to GPLv3.
13564
13565 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
13566
13567         PR c/39084
13568         * c-decl.c (start_struct): Return NULL on error.
13569
13570 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
13571
13572         PR middle-end/39124
13573         * cfgloopmanip.c (remove_path): Call remove_bbs after
13574         cancel_loop_tree, not before it.
13575
13576         PR target/39139
13577         * function.h (struct function): Add has_local_explicit_reg_vars bit.
13578         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
13579         VAR_DECLs were seen.
13580         * tree-ssa-live.c (remove_unused_locals): Recompute
13581         cfun->has_local_explicit_reg_vars.
13582         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
13583         copies or clearings if cfun->has_local_explicit_reg_vars.
13584
13585 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
13586
13587         PR target/39118
13588         * config/i386/i386.c (expand_prologue): Emit blockage at the end
13589         of function prologue when frame pointer is used to access
13590         red zone area.
13591
13592 2009-02-10  Richard Guenther  <rguenther@suse.de>
13593
13594         PR middle-end/39127
13595         * gimplify.c (gimple_regimplify_operands): Always look if
13596         we need to create a temporary.
13597
13598 2009-02-10  Richard Guenther  <rguenther@suse.de>
13599
13600         PR tree-optimization/39132
13601         * tree-loop-distribution.c (todo): New global var.
13602         (generate_memset_zero): Trigger TODO_rebuild_alias.
13603         (tree_loop_distribution): Return todo.
13604
13605 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
13606
13607         PR target/39119
13608         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
13609         (x86_64_reg_class_name): Removed.
13610         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
13611         first one isn't X86_64_SSE_CLASS or any other ones aren't
13612         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
13613         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
13614         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
13615         and 3 X86_64_SSEUP_CLASS.
13616         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
13617         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
13618
13619 2009-02-10  Ben Elliston  <bje@au.ibm.com>
13620
13621         * config/rs6000/rs6000.md (allocate_stack): Always use an update
13622         form instruction to update the stack back chain word, even if the
13623         user has disabled the generation of update instructions.
13624         (movdi_<mode>_update_stack): New.
13625         (movsi_update_stack): Likewise.
13626         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
13627         always use an update form instruction to update the stack back
13628         chain word.
13629
13630 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
13631
13632         PR middle-end/38953
13633         * graphite.c (if_region_set_false_region): After moving a region in
13634         the false branch of a condition, remove the empty dummy basic block.
13635         (gloog): Remove wrong fix for PR38953.
13636
13637 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13638
13639         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
13640         generation due to implicit sign extension.
13641
13642 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
13643
13644         PR middle-end/38981
13645         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
13646         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
13647
13648 2009-02-09  Richard Guenther  <rguenther@suse.de>
13649
13650         PR middle-end/35202
13651         * convert.c (convert_to_real): Disable (float)fn((double)x)
13652         to fnf(x) conversion if errno differences may occur and
13653         -fmath-errno is set.
13654
13655 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
13656
13657         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
13658         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13659         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13660
13661 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
13662
13663         PR c/35434
13664         * c-common.c (handle_alias_attribute): Disallow attribute for
13665         anything not a FUNCTION_DECL or VAR_DECL.
13666
13667 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
13668
13669         PR c/39035
13670         * real.c (do_compare): Special-case compare of zero against
13671         decimal float value.
13672
13673 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
13674
13675         PR c/36432
13676         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
13677         as indicating flexible array members unless the field itself is
13678         being declarared as the incomplete array.
13679
13680 2009-02-06  Jan Hubicka  <jh@suse.cz>
13681
13682         PR tree-optimization/38844
13683         * ipa-inline.c (try_inline): Stop inlining recursion when edge
13684         is already inlined.
13685
13686 2009-02-06  Richard Guenther  <rguenther@suse.de>
13687
13688         PR middle-end/38977
13689         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
13690         fork because we may expand it as __gcov_fork.
13691
13692 2009-02-06  Nick Clifton  <nickc@redhat.com>
13693
13694         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
13695
13696 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
13697
13698         PR tree-optimization/35659
13699         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
13700         vn_phi_eq): Shortcut if hashcode does not match.
13701         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
13702         NULL operands.
13703         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
13704         and avoid iterative_hash_expr.
13705         (FOR_EACH_VALUE_ID_IN_SET): New.
13706         (value_id_compare): Remove.
13707         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
13708         sort expressions by value id.
13709
13710 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
13711
13712         PR target/38991
13713         * config/sh/predicates.md (general_movsrc_operand): Don't check
13714         the subreg of system registers here.
13715
13716 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
13717
13718         PR c++/39106
13719         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
13720         on the copied decl.
13721
13722 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
13723
13724         PR rtl-optimization/39110
13725         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
13726         addresses, not aligned ones.
13727
13728 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
13729             Richard Guenther  <rguenther@suse.de>
13730
13731         PR tree-optimization/39100
13732         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
13733         comment says and add edges.
13734
13735 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
13736
13737         PR c/35435
13738         * c-common.c (handle_tls_model_attribute): Ignore attribute for
13739         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
13740
13741 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
13742
13743         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
13744         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
13745         register_bb_in_sese, new_sese, free_sese): Moved.
13746         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
13747         outermost_loop_in_scop, build_scop_iteration_domain,
13748         expand_scalar_variables_ssa_name, get_vdef_before_scop,
13749         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
13750         Use loop_in_sese_p instead of loop_in_scop_p.
13751         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
13752         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
13753         (scopdet_basic_block_info): Fix bug in scop detection.
13754         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
13755         eq_loop_to_cloog_loop): Remove.
13756         (nb_loops_around_loop_in_scop, nb_loop
13757         ref_nb_loops): Moved here...
13758         * graphite.h (ref_nb_loops): ... from here.
13759         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
13760         (loop_domain_dim, loop_iteration_vector_dim): Remove.
13761         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
13762         * testsuite/gcc.dg/graphite/scop-19.c: New
13763
13764 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
13765             Hans-Peter Nilsson  <hp@axis.com>
13766
13767         PR rtl-optimization/37889
13768         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
13769         Move offset handling from PLUS to before the switch.  Use new
13770         arguments when considering SYMBOL_REFs too.
13771         (rtx_addr_can_trap_p): Pass dummy offset and size.
13772         (enum may_trap_p_flags): Remove.
13773         (may_trap_p_1): Pass size from MEM_SIZE.
13774
13775         PR rtl-optimization/38921
13776         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
13777         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
13778         * rtlanal.c (may_trap_after_code_motion_p): Delete.
13779         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
13780
13781 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
13782
13783         AVX Programming Reference (January, 2009)
13784         * config/i386/sse.md (*vpclmulqdq): New.
13785
13786 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
13787
13788         PR tree-optimization/38977
13789         PR gcov-profile/38292
13790         * calls.c (special_function_p): Disregard __builtin_ prefix.
13791
13792 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
13793
13794         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
13795         non-indexable addresses even before reload.
13796
13797 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
13798
13799         PR c/29129
13800         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
13801         as having variable size.  Do not give an error for unnamed
13802         parameters with [*] declarators.  Give a warning for type names
13803         with [*] declarators and mark them as variable size.
13804         * c-parser.c (c_parser_sizeof_expression): Do not give an error
13805         for sizeof applied to [*] type names.
13806
13807 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13808
13809         PR C++/36607
13810         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
13811
13812 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
13813
13814         * gcc.c (process_command): Update copyright notice dates.
13815         * gcov.c (print_version): Likewise.
13816         * gcov-dump.c (print_version): Likewise.
13817         * mips-tfile.c (main): Likewise.
13818         * mips-tdump.c (main): Likewise.
13819
13820 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
13821
13822         PR c/35433
13823         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
13824         for composite type involving a zero-length array type.
13825
13826 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
13827
13828         PR target/35318
13829         * function.c (match_asm_constraints_1): Skip over
13830         initial optional % in the constraint.
13831
13832         PR inline-asm/39059
13833         * c-parser.c (c_parser_postfix_expression): If fixed point is not
13834         supported, don't accept FIXED_CSTs.
13835         * c-decl.c (finish_declspecs): Error if fixed point is not supported
13836         and _Sat is used without _Fract/_Accum.  Set specs->type to
13837         integer_type_node for cts_fract/cts_accum if fixed point is not
13838         supported.
13839
13840 2009-02-02  Catherine Moore  <clm@codesourcery.com>
13841
13842         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
13843
13844 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
13845
13846         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
13847         (ABI_HAS_64BIT_SYMBOLS): Use it.
13848         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
13849
13850 2009-02-02  Paul Brook  <paul@codesourcery.com>
13851
13852         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
13853
13854 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
13855
13856         PR inline-asm/39058
13857         * recog.h (asm_operand_ok): Add constraints argument.
13858         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
13859         recurse on matching constraint.
13860         (check_asm_operands): Pass constraints as 3rd argument to
13861         asm_operand_ok.  Don't look up matching constraint here.
13862         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
13863         to asm_operand_ok.
13864
13865 2009-02-02  Ben Elliston  <bje@au.ibm.com>
13866
13867         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
13868         TARGET_NARROW_VOLATILE_BITFIELD macro names.
13869
13870 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13871
13872         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
13873         information.  Remove some obsolete information.  Reorganize.
13874
13875         * config/pa/fptr.c: Revert license to GPL 2.
13876         * config/pa/milli64.S: Likewise.
13877
13878 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
13879
13880         PR target/38904
13881         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
13882         LIBRARY name in, instead of hard-coding it.
13883         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
13884         extra target make frag to tmake_files according to EH model.
13885         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
13886         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
13887         frags that define makefile variable EH_MODEL appropriately.
13888         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
13889         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
13890         to "-sjlj" according to type of EH configured.
13891         (LIBGCC_SONAME):  Concatenate it to shared library base name.
13892         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
13893         to "_sjlj" according to type of EH configured.
13894         (LIBGCC_SONAME):  Concatenate it to shared library base name.
13895         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
13896         (SHLIB_LINK):  Add missing semicolon to if-else construct.
13897         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
13898         string value of "pe_dll" command-line option.
13899         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
13900         (SHLIB_SONAME):  Use it when overriding t-cygming default.
13901         (SHLIB_IMPLIB):  Override t-cygming default.
13902         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
13903         string value of "pe_dll" command-line option.
13904
13905 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
13906
13907         PR target/38952
13908         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
13909         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
13910
13911 2009-01-31  Richard Guenther  <rguenther@suse.de>
13912
13913         PR tree-optimization/38937
13914         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
13915         computing the transitive closure.
13916
13917 2009-01-30  Richard Guenther  <rguenther@suse.de>
13918
13919         PR tree-optimization/39041
13920         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
13921         Propagate variable indices only if the types match for this stmt.
13922
13923 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
13924
13925         PR target/39013
13926         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
13927         inline but never defined.
13928
13929 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
13930
13931         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
13932         (*insv_h_di_reg_extimm): New insn.
13933         (*insv_l<mode>_reg_extimm): New insn.
13934
13935 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
13936
13937         * config/picochip/picochip.c (flag_conserve_stack): set
13938         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
13939         fconserve-stack. Reduce call-overhead used by inliner.
13940
13941 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
13942
13943         PR/38157
13944         * common.opt (flag_conserve_stack): Initialised to zero.
13945
13946 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
13947
13948         PR/39002
13949         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
13950         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
13951         method.
13952
13953 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
13954
13955         * ira-color.c (allocno_reload_assign): Update comments.
13956         * regmove.c (regmove_optimize): Likewise.
13957
13958         * ra.h: Removed.
13959
13960 2009-01-29  Robert Millan  <rmh@aybabtu.com>
13961
13962         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
13963         * config/i386/kopensolaris-gnu.h: New file.  Undefine
13964         `MD_UNWIND_SUPPORT'.
13965         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
13966
13967 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
13968
13969         PR tree-optimization/39007
13970         * tree-loop-distribution.c (generate_builtin): Use
13971         recompute_dominator to compute the immediate dominator of the
13972         basic block just after the loop.
13973
13974 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13975
13976         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
13977         (ASM_OUTPUT_DWARF_PCREL): Define.
13978
13979 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
13980
13981         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
13982         * doc/passes.texi: Remove entries about regclass, local-alloc, and
13983         global.  Modify entries about regmove and IRA.
13984
13985         * ra-conflict.c: Remove the file.
13986
13987         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
13988
13989         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
13990         (pass_regclass_init): Rename to pass_reginfo_init.
13991
13992         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
13993
13994         * toplev.h (flag_ira): Remove.
13995
13996         * caller-save.c (setup_save_areas): Remove flag_ira.
13997
13998         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
13999
14000         * global.c: Remove the file.
14001
14002         * opts.c (decode_options): Remove flag_ira.
14003
14004         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
14005
14006         * regmove.c: Modify file description.
14007         (find_use_as_address, try_auto_increment): Define them only if
14008         AUTO_INC_DEC is defined.
14009         (replacement_quality, replace_in_call_usage, fixup_match_1,
14010         stable_and_no_regs_but_for_p): Remove.
14011         (reg_set_in_bb): Make it static.
14012         (regmove_optimize): Remove flag_ira and code which worked for
14013         !flag_ira.
14014
14015         * local-alloc.c: Remove the file.
14016
14017         * common.opt (fira): Remove.
14018
14019         * ira.c: Include except.h.
14020         (eliminable_regset): Move from global.c.
14021         (mark_elimination): Ditto.  Remove flag_ira.
14022         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
14023         equiv_mem_modified, validate_equiv_mem_from_store,
14024         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
14025         contains_replace_regs, memref_referenced_p, memref_used_between_p,
14026         no_equiv, recorded_label_ref): Move from local-alloc.c.
14027         (update_equiv_regs): Ditto.  Make it static.
14028         (print_insn_chain, print_insn_chains): Move it from global.c.
14029         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
14030         (build_insn_chain): Ditto.  Make it static.
14031         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
14032         Rename to init_live_subregs.
14033         (gate_ira): Remove flag_ira.
14034
14035         * regclass.c: Rename reginfo.c.  Change file description.
14036         (FORBIDDEN_INC_DEC_CLASSES): Remove.
14037         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
14038         (init_reg_sets_1): Remove code for evaluation of
14039         reg_class_superclasses and losing_caller_save_reg_set.
14040         (init_regs): Remove init_reg_autoinc.
14041         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
14042         ok_for_base_p_nonstrict): Remove.
14043         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
14044         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
14045         corresponding entries.
14046         (dump_regclass, record_operand_costs, scan_one_insn,
14047         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
14048         record_address_regs, auto_inc_dec_reg_p): Remove.
14049         (gt-regclass.h): Rename to gt-reginfo.h.
14050
14051         * rtl.h (dump_global_regs, retry_global_alloc,
14052         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
14053
14054         * Makefile.in (RA_H): Remove.
14055         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
14056         Rename regclass.o to reginfo.o.
14057         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
14058         gt-reginfo.h.
14059         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
14060         (GTFILES): Rename regclass.c to reginfo.c.
14061
14062         * passes.c (init_optimization_passes): Remove pass_local_alloc and
14063         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
14064
14065         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
14066         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
14067         Remove flag_ira.
14068         (finish_spills): Ditto.  Remove code for !flag_ira.
14069
14070 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
14071
14072         PR middle-end/35854
14073         * doc/invoke.texi (rtl debug options): Complete rewrite.
14074         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
14075         to auto_inc_dec".
14076         * mode-switching.c (pass_mode_switching): Rename pass from
14077         "mode-sw" to "mode_sw".
14078         * except.c (pass_convert_to_eh_ranges): Rename pass from
14079         "eh-ranges" to "eh_ranges".
14080         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
14081         to "subreg1".
14082
14083
14084 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
14085             Alexander Monakov  <amonakov@ispras.ru>
14086
14087         PR middle-end/38857
14088         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
14089         register.
14090         (move_exprs_to_boundary): Change return type and pass through
14091         should_move from move_op.  Relax assert.  Update usage ...
14092         (schedule_expr_on_boundary): ... here.  Use should_move instead of
14093         cant_move.
14094         (move_op_orig_expr_found): Indicate that insn was disconnected from
14095         stream.
14096         (code_motion_process_successors): Do not call after_merge_succs
14097         callback if original expression was not found when traversing any of
14098         the branches.
14099         (code_motion_path_driver): Change return type.  Update prototype.
14100         (move_op): Update comment.  Add a new parameter (should_move).  Update
14101         prototype.  Set *should_move based on indication provided by
14102         move_op_orig_expr_found.
14103
14104 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
14105
14106         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
14107         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
14108         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
14109         * config/rs6000/rs6000.c (rs6000_override_options): Default
14110         avoid-indexed-addresses on for Power6, off for everything else.
14111         (avoiding_indexed_address_p): New function.
14112         (rs6000_legitimize_address): Use it.
14113         (rs6000_legitimate_address): Likewise.
14114         * config/rs6000/rs6000.md (movXX_updateX): Likewise
14115
14116 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
14117
14118         PR tree-optimization/38997
14119         * tree-loop-distribution.c (generate_memset_zero): Use
14120         POINTER_PLUS_EXPR for a pointer addition.
14121
14122 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
14123
14124         * config/s390/s390.md (bswap<mode>2): New pattern added.
14125
14126 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
14127
14128         * config/s390/s390.md (*tls_load_31): Added type attribute.
14129
14130 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
14131
14132         * config/s390/s390.md: Fix a few comments.
14133
14134 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
14135
14136         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
14137         (*tm<mode>_full): Fixed z10prop attribute.
14138         (*tst<mode>_extimm): Fixed z10prop attribute.
14139         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
14140         (*tstqiCCT_cconly): Fixed z10prop attribute.
14141         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
14142         (*movsi_larl): Fixed z10prop attribute.
14143         (*movsi_zarch): Fixed z10prop attribute.
14144         (*movsi_eas): Fixed z10prop attribute.
14145         (*movhi): Fixed z10prop attribute.
14146         (*movqi): Fixed z10prop attribute.
14147         (*movstrictqi): Fixed z10prop attribute.
14148         (*mov<mode>): Fixed z10prop attribute.
14149         (*movcc): Fixed z10prop attribute.
14150         (*sethighpartdi_64): Fixed z10prop attribute.
14151         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
14152         (*negdi2_sign_cc): Fixed z10prop attribute.
14153         (*negdi2_sign): Fixed z10prop attribute.
14154         (*absdi2_sign_cc): Fixed z10prop attribute.
14155         (*absdi2_sign): Fixed z10prop attribute.
14156         (*negabsdi2_sign_cc): Fixed z10prop attribute.
14157         (*negabsdi2_sign): Fixed z10prop attribute.
14158         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
14159         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
14160         (doloop_si64): Fixed z10prop attribute.
14161         (doloop_si31): Fixed z10prop attribute.
14162         (doloop_long): Fixed z10prop attribute.
14163         (indirect_jump): Fixed z10prop attribute.
14164         (nop): Fixed z10prop attribute.
14165         (main_base_64): Fixed z10prop attribute.
14166         (reload_base_64): Fixed z10prop attribute.
14167
14168 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
14169
14170         PR rtl-optimization/38740
14171         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
14172         if !optimize.
14173         * config/mips/mips.c (mips_reorg): Likewise.
14174
14175 2009-01-28  Richard Guenther  <rguenther@suse.de>
14176
14177         PR tree-optimization/38926
14178         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
14179         with the correct value id to a value.
14180         (do_regular_insertion): Use the value number of edoubleprime
14181         for the value number of the expr.
14182
14183         Revert
14184         2008-08-21  Richard Guenther  <rguenther@suse.de>
14185
14186         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
14187         a PHI ask VN if it is already available.
14188         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
14189         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
14190
14191 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
14192
14193         PR middle-end/38934
14194         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
14195         set to varying whenever max has TREE_OVERFLOW set, similarly
14196         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
14197
14198 2009-01-28  Richard Guenther  <rguenther@suse.de>
14199
14200         PR middle-end/38908
14201         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
14202         uninitialized aggregate uses in call arguments.
14203
14204 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
14205
14206         PR tree-optimization/38984
14207         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
14208         the nothing_id variable if -fno-delete-null-pointer-checks.
14209
14210 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
14211
14212         PR target/38988
14213         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
14214         (set_got_offset_rex64): Ditto.
14215
14216 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
14217
14218         PR target/38941
14219         * doc/extend.texi: Improve local variable with asm reg.
14220
14221 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
14222
14223         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
14224         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
14225         was not supplied then set warn_packed_bitfield_compat to the
14226         default value of 1.
14227         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
14228         against 1.
14229
14230 2009-01-27  Richard Guenther  <rguenther@suse.de>
14231
14232         PR tree-optimization/38503
14233         * cfgexpand.c (expand_gimple_basic_block): Ignore
14234         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
14235         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
14236         variables that cannot have TBAA applied.
14237         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
14238         statements.
14239
14240 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
14241
14242         PR middle-end/38969
14243         * calls.c (initialize_argument_information): Do not wrap complex
14244         arguments in SAVE_EXPR.
14245
14246 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
14247
14248         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
14249         (INSTALL_LIBGCC): Revert typo commit.
14250
14251 2009-01-26  Richard Guenther  <rguenther@suse.de>
14252
14253         PR tree-optimization/38745
14254         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
14255         from special handling.
14256
14257 2009-01-26  Richard Guenther  <rguenther@suse.de>
14258
14259         PR tree-optimization/38745
14260         * tree-ssa.c (execute_update_addresses_taken): Do not include
14261         variables that cannot possibly be a register in not_reg_needs.
14262         Do not clear TREE_ADDRESSABLE on vars that may not become
14263         registers.
14264         * tree-ssa.c (update_alias_info_1): Include those in the set
14265         of addressable vars.
14266
14267 2009-01-26  Richard Guenther  <rguenther@suse.de>
14268
14269         PR middle-end/38851
14270         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
14271         * tree-ssa-dse.c: Include langhooks.h
14272         (execute_simple_dse): Remove stores with zero size.
14273
14274 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
14275
14276         PR c/38957
14277         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
14278         as PLUS_EXPR.
14279
14280 2009-01-24  Julian Brown  <julian@codesourcery.com>
14281
14282         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
14283         config/arm/linux-atomic.c.
14284         * config/arm/linux-atomic.c: New.
14285
14286 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
14287
14288         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
14289         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
14290         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
14291
14292 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
14293
14294         PR c/38938
14295         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
14296         properly.
14297
14298 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
14299
14300         PR tree-optimization/38953
14301         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
14302         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
14303         (gloog): Split the exit of the scop when the scop exit is a loop exit.
14304         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
14305         changed the CFG.
14306
14307 2009-01-24  Paul Brook  <paul@codesourcery.com>
14308
14309         * config/arm/neon.md (neon_type): Move to arm.md.
14310         (neon_mov<VSTRUCT>): Add neon_type attribute.
14311         * config/arm/arm.md (neon_type): Move to here.
14312         (conds): Add "unconditioal" and use as default for NEON insns.
14313
14314 2009-01-24  Ben Elliston  <bje@au.ibm.com>
14315
14316         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
14317         void *' warning from -Wc++-compat.
14318         * Makefile.in (dominance.o-warn): Remove.
14319
14320 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
14321
14322         PR tree-optimization/38932
14323         * fold-const.c (fold_unary_ignore_overflow): New.
14324         * tree.h (fold_unary_ignore_overflow): Declare.
14325         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
14326         * tree-ssa-sccvn.c (visit_reference_op_load,
14327         simplify_unary_expression): Likewise.
14328
14329 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
14330
14331         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
14332         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
14333         regardless of their type.
14334         * c-common.c (handle_packed_attribute): Don't ignore packed on
14335         bitfields.
14336         * c.opt (Wpacked-bitfield-compat): New warning option.
14337         * stor-layout.c (place_field): Warn if offset of a field changed.
14338         * doc/extend.texi (packed): Mention the ABI change.
14339         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
14340         (Warning Options): Add it to the list.
14341
14342 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
14343
14344         * c-opts.c (c_common_post_options): Fix a typo in comments.
14345
14346 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
14347
14348         PR middle-end/38615
14349         * gimplify.c (gimplify_init_constructor): Fix promotion of const
14350         variables to static.
14351         * doc/invoke.texi (-fmerge-all-constants): Update description.
14352
14353 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
14354
14355         PR target/38931
14356         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
14357         (*movdi_1_rex64): Use type "mmx" for alternative 5.
14358
14359 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
14360
14361         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
14362         a word boundary.
14363         (LOCAL_ALIGNMENT): Similarly.
14364
14365 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
14366             Joseph Myers  <joseph@codesourcery.com>
14367
14368         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
14369         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
14370         * config/arm/arm-tune.md: Regenerate.
14371         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
14372         -march=iwmmxt2.
14373
14374 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
14375
14376         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
14377         version number to five.
14378
14379 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
14380
14381         PR c++/38930
14382         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
14383         * c-common.c (set_underlying_type): Likewise.
14384         (is_typedef_decl ): Likewise
14385         * tree.h: Likewise
14386         (set_underlying_type): Likewise.
14387         (is_typedef_type): Likewise.
14388
14389 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
14390
14391         PR middle-end/38587
14392         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
14393         crossing setjmps.
14394
14395 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
14396
14397         PR bootstrap/37660
14398         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
14399         (LIBGCC_SPEC):  Don't define.
14400         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
14401
14402 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
14403
14404         PR rtl-optimization/38879
14405         * alias.c (base_alias_check): Unaligned access via AND address can
14406         alias all surrounding object types except those with sizes equal
14407         or wider than the size of unaligned access.
14408
14409 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
14410
14411         PR c++/26693
14412         * c-decl.c (clone_underlying_type): Move this ...
14413         * c-common.c (set_underlying_type): ... here.
14414         Also, make sure the function properly sets TYPE_STUB_DECL() on
14415         the newly created typedef variant type.
14416         (is_typedef_decl ): New entry point.
14417         * tree.h: Added a new member member_types_needing_access_check to
14418         struct tree_decl_non_common.
14419         (set_underlying_type): New entry point.
14420         (is_typedef_type): Likewise.
14421
14422 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
14423
14424         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
14425         Check whether two instructions have memory references that
14426         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
14427         are helper functions for traversing.
14428         * alias.h (insn_alias_sets_confilict_p): New prototypes.
14429         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
14430         not to draw dependency edge for instructions with non-conflicting
14431         alias sets.
14432
14433 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
14434
14435         PR other/38758
14436         * longlong.h: Update copyright years.  Use soft-fp license notice.
14437         Sync __clz_tab declaration with glibc.
14438
14439 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
14440
14441         PR target/30687
14442         * doc/extend.texi (syscall_linkage): New.
14443         (version_id): Modify.
14444
14445 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14446             Richard Guenther  <rguenther@suse.de>
14447
14448         PR tree-optimization/38747
14449         PR tree-optimization/38748
14450         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
14451         conversion if the base address is an indirect reference and the
14452         aliasing sets could cause issues.
14453
14454 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
14455
14456         * common.opt (fgraphite, fgraphite-identity): Add comment for
14457         explaining why these options are not documented.
14458
14459 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
14460
14461         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
14462         gimple_call_lhs is NULL.
14463
14464 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
14465
14466         PR target/38868
14467         * emit-rtl.c (adjust_address_1): Make sure memref is never
14468         overwritten.
14469
14470 2009-01-20  Ben Elliston  <bje@au.ibm.com>
14471
14472         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
14473         const qualifier from arg parameter. Remove unnecessary cast to char *.
14474         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
14475         const qualifier from arg 2.
14476
14477 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
14478
14479         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
14480
14481 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
14482
14483         PR c/38869
14484         * rtl.h (reinit_regs): New prototype.
14485         * regclass.c: Include ira.h.
14486         (reinit_regs): New.
14487         * Makefile.in (regclass.o): Add ira.h.
14488         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
14489
14490 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
14491
14492         PR target/38736
14493         * c-common.c (handle_aligned_attribute): Use
14494         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
14495         default alignment value.
14496
14497         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
14498
14499         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
14500         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
14501
14502         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
14503         __BIGGEST_ALIGNMENT__.
14504
14505         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
14506
14507 2009-01-18  Richard Guenther  <rguenther@suse.de>
14508
14509         PR tree-optimization/38819
14510         * tree-flow.h (operation_could_trap_helper_p): Declare.
14511         * tree-eh.c (operation_could_trap_helper_p): Export.
14512         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
14513         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
14514         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
14515         are about to insert a possibly trapping instruction and fail
14516         in this case.
14517
14518 2009-01-18  Andreas Schwab  <schwab@suse.de>
14519
14520         * doc/install.texi (Configuration): Remove obsolete paragraph
14521         about use of --with-gnu-ld with --with-gnu-as.
14522
14523 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
14524
14525         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
14526         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
14527         Follow spelling conventions.
14528
14529 2009-01-18  Ben Elliston  <bje@au.ibm.com>
14530
14531         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
14532         C++ warning about implicit conversion from void * to struct
14533         bitmap_head_def *.
14534         (bitmap_obstack_free): Likewise for bitmap_element *.
14535         * Makefile.in (bitmap.o-warn): Remove.
14536
14537 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
14538
14539         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
14540
14541 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
14542             Tobias Grosser  <tobi.grosser@amd.com>
14543
14544         * graphite.c (graphite_trans_scop_block): Do not block single
14545         nested loops.
14546
14547 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
14548
14549         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
14550         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
14551         test with assertion.
14552
14553 2009-01-16  Richard Guenther  <rguenther@suse.de>
14554
14555         PR tree-optimization/38835
14556         PR middle-end/36227
14557         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
14558         and INT + PTR -> (INT)(PTR p+ INT) folding.
14559         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
14560
14561 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
14562
14563         PR target/38554
14564         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
14565         the subreg from a lowpart subreg if it is also casting the value.
14566
14567 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
14568             Tobias Grosser  <tobi.grosser@amd.com>
14569
14570         * graphite.c (compare_prefix_loops): New.
14571         (build_scop_canonical_schedules): Rewritten.
14572         (graphite_transform_loops): Move build_scop_canonical_schedules
14573         after build_scop_iteration_domain.
14574
14575 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
14576             Tobias Grosser  <tobi.grosser@amd.com>
14577
14578         * graphite.c (add_conditions_to_domain): Add the loops to
14579         the dimension of the iteration domain.  Do copy the domain
14580         only when it exists.
14581         (build_scop_conditions_1): Do not call add_conditions_to_domain.
14582         (add_conditions_to_constraints): New.
14583         (can_generate_code_stmt, can_generate_code): Removed.
14584         (gloog): Do not call can_generate_code.
14585         (graphite_transform_loops): Call add_conditions_to_constraints
14586         after building the iteration domain.
14587
14588 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
14589
14590         PR tree-optimization/38789
14591         * tree-ssa-threadedge.c
14592         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
14593         __builtin_constant_p.
14594
14595 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
14596
14597         * dce.c (delete_unmarked_insns): Reversed the order that insns are
14598         examined before deleting them.
14599
14600 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
14601
14602         * function.c (aggregate_value_p): Correctly extract the function
14603         type from CALL_EXPR_FN lookup.
14604
14605 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
14606
14607         * config/picochip/picochip.c (picochip_override_options): Revert
14608         CFI asm flag disable commited previously.
14609
14610 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
14611             Tobias Grosser  <tobi.grosser@amd.com>
14612             Jan Sjodin  <jan.sjodin@amd.com>
14613
14614         * graphite.c (scan_tree_for_params): On substractions negate
14615         all the coefficients of the term.
14616         (clast_to_gcc_expression_red): New.  Handle reduction expressions
14617         of more than two operands.
14618         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
14619         (get_vdef_before_scop): Handle also the case of default definitions.
14620
14621 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
14622
14623         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
14624         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
14625         Also use them when walking CALL_INSN_FUNCTION_USAGE.
14626
14627 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14628             Joey Ye  <joey.ye@intel.com>
14629
14630         PR middle-end/37843
14631         * cfgexpand.c (expand_stack_alignment): Don't update stack
14632         boundary nor check incoming stack boundary here.
14633         (gimple_expand_cfg): Update stack boundary and check incoming
14634         stack boundary here.
14635
14636 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
14637
14638         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
14639
14640 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
14641
14642         PR rtl-optimization/38245
14643         * calls.c (expand_call): Add stack arguments to
14644         CALL_INSN_FUNCTION_USAGE even for pure calls (when
14645         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
14646         in regs and partially in memory or BLKmode arguments.
14647         (emit_library_call_value_1): Add stack arguments to
14648         CALL_INSN_FUNCTION_USAGE even for pure calls (when
14649         ACCUMULATE_OUTGOING_ARGS).
14650         * dce.c: Include tm_p.h.
14651         (find_call_stack_args): New function.
14652         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
14653         argument.
14654         (mark_insn): Call find_call_stack_args for CALL_Ps.
14655         (prescan_insns_for_dce): Walk insns backwards in bb rather than
14656         forwards.  Allocate and free arg_stores bitmap if needed, pass it
14657         down to deletable_insn_p, don't mark stores set in arg_stores
14658         bitmap, clear the bitmap at the beginning of each bb.
14659         * Makefile.in (dce.o): Depend on $(TM_P_H).
14660
14661 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
14662
14663         PR target/22599
14664         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
14665         to make sure the insn is a conditional test (bug 22599).  Reformat a
14666         few long lines.
14667
14668 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
14669
14670         PR middle-end/38431
14671         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
14672         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
14673         (gloog): Do not call cleanup_tree_cfg.
14674         (graphite_transform_loops): Call cleanup_tree_cfg after all
14675         scops have been code generated.
14676
14677 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
14678         * doc/gty.texi (Invoking the garbage collector): Added new node
14679         and section documenting ggc_collect.
14680
14681 2009-01-14  Richard Guenther  <rguenther@suse.de>
14682
14683         PR tree-optimization/38826
14684         PR middle-end/38477
14685         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
14686         initialization notes only if we actually emitted a warning.
14687         (intra_create_variable_infos): Add constraints for a result decl
14688         that is passed by hidden reference.
14689         (build_pred_graph): Mark all related variables non-direct on
14690         address-taking.
14691
14692 2009-01-14  Nick Clifton  <nickc@redhat.com>
14693
14694         * ira-conflicts.c: Include addresses.h for the definition of
14695         base_reg_class.
14696         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
14697         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
14698
14699 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
14700
14701         PR target/38811
14702         * Makefile.in (ira-lives.o): Add except.h.
14703
14704         * ira-lives.c: Include except.h.
14705         (process_bb_node_lives): Process can_throw_internal.
14706
14707 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
14708
14709         PR rtl-optimization/38774
14710         * combine.c (simplify_set): When undoing cc_use change, don't do
14711         PUT_CODE on the newly created comparison, but instead put back the
14712         old comparison.
14713
14714 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
14715
14716         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
14717         values.  Remove duplicate arm8 entry.
14718
14719 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
14720
14721         PR tree-optimization/38786
14722         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
14723         the SSA_NAME case of expand_scalar_variables_expr.
14724         Set the type of an expression to the type of its assign statement.
14725         (expand_scalar_variables_expr): Also gather the scalar computation
14726         used to index the memory access.  Do not pass loop_p.
14727         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
14728         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
14729         the gimple_stmt_iterator where it inserts new code.
14730         Do not pass loop_p.
14731         (copy_bb_and_scalar_dependences): Do not pass loop_p.
14732         (translate_clast): Update call to copy_bb_and_scalar_dependences.
14733
14734 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
14735
14736         * graphite.h (debug_value): Removed.
14737         * graphite.c (debug_value): Removed.
14738
14739 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
14740
14741         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
14742         ldrd/strd with two 32-bit instructions.
14743
14744 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
14745
14746         * config/arm/arm.c (struct processors): Pass for speed down into
14747         cost helper functions.
14748         (const_ok_for_op): Handle COMPARE and inequality nodes.
14749         (arm_rtx_costs_1): Rewrite.
14750         (arm_size_rtx_costs): Update prototype.
14751         (arm_rtx_costs): Pass speed down to helper functions.
14752         (arm_slowmul_rtx_costs): Rework cost calculations.
14753         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
14754         (arm_9e_rtx_costs): Likewise.
14755
14756 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
14757
14758         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
14759         relocations of local symbols wider than UNITS_PER_WORD are not valid.
14760         (alpha_legitimize_address): Do not split local symbols wider than
14761         UNITS_PER_WORD into HIGH/LO_SUM parts.
14762
14763 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
14764
14765         PR bootstrap/38580
14766         * gcc.c (process_command): Replace call to execvp with calls
14767         to pex_one and exit.
14768
14769 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
14770
14771         PR target/29141
14772         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
14773         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
14774         variant for devices with 3-byte PC.
14775         (__tablejump_elpm__): New.
14776
14777 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
14778
14779         PR c/32041
14780         * c-parser.c (c_parser_postfix_expression): Allow `->' in
14781         offsetof member-designator, handle it as `[0].'.
14782
14783 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14784
14785         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
14786         function when not using named sections on targets with named sections
14787         if branch distance is less than 262132.
14788
14789 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
14790
14791         * combine.c (combine_instructions):  Recompute
14792         optimize_this_for_speed_p  for each BB in the main combine loop.
14793
14794 2009-01-12  Tomas Bily  <tbily@suse.cz>
14795
14796         PR middlend/38385
14797         * tree-loop-distribution.c (prop_phis): New function.
14798         (generate_builtin): Call prop_phis.
14799         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
14800
14801 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
14802
14803         PR tree-optimization/38807
14804         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
14805         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
14806
14807 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
14808
14809         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
14810         subreg of op0 to the original op0.
14811
14812 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
14813
14814         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
14815
14816 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
14817
14818         PR debug/7055
14819         * mips-tfile.c (parse_def): Fix parsing of def strings
14820         starting with digits.
14821
14822 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
14823
14824         PR target/38695
14825         * config/arm/arm.c (arm_is_long_call_p): Don't call
14826         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
14827
14828 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
14829
14830         * regrename.c (regrename_optimize): Fix dumping.
14831         (find_oldest_value_reg): Preserve REG_POINTER.
14832         (copy_hardreg_forward_1): Likewise.
14833
14834 2009-01-09  Diego Novillo  <dnovillo@google.com>
14835
14836         * gimple.h (struct gimple_statement_base) <uid>: Document
14837         the restrictions on its use.
14838         (gimple_uid): Tidy.
14839         (gimple_set_uid): Tidy.
14840
14841 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
14842
14843         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
14844         zero guard even if align_bytes != 0 and count is smaller than
14845         size_needed.
14846
14847 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
14848
14849         PR rtl-optimization/38495
14850         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
14851         (add_range_and_copies_from_move_list): Print all added ranges.
14852         Add ranges to memory optimized destination.
14853
14854 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
14855
14856         PR target/38686
14857         PR target/38708
14858         * config/i386/i386.c (override_options): Reject
14859         -mstringop-strategy=rep_8byte with -m32.
14860         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
14861         to 1.  Do count comparison against epilogue_size_needed at compile
14862         time even when count_exp was constant forced into register.  For
14863         size_needed don't jump to epilogue, instead just avoid aligning
14864         and invoke the body algorithm.  If need_zero_guard, add zero guard
14865         even if count is non-zero, but smaller than size_needed + number of
14866         bytes that could be stored for alignment.
14867         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
14868         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
14869         but smaller than size_needed + number of bytes that could be stored
14870         for alignment.  Compare size_needed with epilogue_size_needed instead
14871         of desired_align - align, don't adjust size_needed, pass
14872         epilogue_size_needed to the epilogue expanders.
14873
14874         PR c/35742
14875         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
14876
14877 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14878
14879         * pa.c (last_address): Change to unsigned.
14880         (update_total_code_bytes): Change argument to unsigned.  Don't
14881         check if insn addresses are set.
14882         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
14883         addresses are not set.
14884         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
14885
14886 2009-01-09  Nick Clifton  <nickc@redhat.com>
14887
14888         * config/sh/symbian.c: Replace uses of DECL_INLINE with
14889         DECL_DECLARED_INLINE_P.
14890
14891 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
14892
14893         PR middle-end/38347
14894         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
14895         GET_MODE (op0) in operand_subword_force calls.
14896
14897         PR middle-end/38771
14898         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
14899         fold_convert arg0 operands to TREE_TYPE (op0) first.
14900
14901 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
14902
14903         * params.def (ira-max-conflict-table-size): Decrease default value
14904         to 1000.
14905
14906 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
14907
14908         PR tree-optimization/37031
14909         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
14910         on parameter_set.
14911         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
14912         allocate it using gc instead of heap, use VEC_quick_push instead of
14913         VEC_safe_push.
14914         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
14915         instead of heap, use VEC_quick_push instead of VEC_safe_push.
14916         * tree-data-ref.h (struct access_matrix): Change matrix to gc
14917         allocated vector from heap allocated.
14918         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
14919         * tree-loop-linear.c (linear_transform_loops): Allocate nest
14920         vector only after perfect_loop_nest_depth call.
14921
14922 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
14923             Jan Sjodin  <jan.sjodin@amd.com>
14924
14925         PR tree-optimization/38559
14926         * graphite.c (debug_value, copy_constraint,
14927         swap_constraint_variables, scale_constraint_variable, ): New.
14928         (get_lower_bound, get_upper_bound): Removed.
14929         (graphite_trans_bb_strip_mine): Clean up this code that works
14930         only for constant number of iterations.  Fully copy upper and
14931         lower bound constraints, not only the constant part of them.
14932         * graphite.h (debug_value): Declared.
14933
14934 2009-01-08  Ira Rosen  <irar@il.ibm.com>
14935
14936         PR tree-optimization/37194
14937         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
14938         Don't add the cost of cost model guard in prologue to scalar
14939         outside cost in case of known number of iterations.
14940
14941 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
14942             Alan Modra  <amodra@bigpond.net.au>
14943
14944         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
14945         non-word-aligned REG+CONST addressing.
14946
14947 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
14948
14949         PR target/38706
14950         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
14951         free_after_compilation when outputting a thunk.
14952         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
14953         Do not call free_after_compilation here.
14954
14955 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
14956
14957         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
14958         (ix86_valid_target_attribute_inner_p): Ditto.
14959
14960 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
14961
14962         PR tree-optimization/38492
14963         PR tree-optimization/38498
14964         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
14965         * tree-chrec.h (scev_is_linear_expression): Declared.
14966         * graphite.c (graphite_cannot_represent_loop_niter): New.
14967         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
14968         (graphite_loop_normal_form): Use gcc_assert.
14969         (scan_tree_for_params): Use CASE_CONVERT.
14970         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
14971         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
14972         Use gcc_assert.  Discard scops that contain unhandled cases.
14973         (build_scop_conditions): Return a boolean status for unhandled cases.
14974         (strip_mine_profitable_p): Print the loop number, not its depth.
14975         (is_interchange_valid): Pass the depth of the loop nest, don't
14976         recompute it wrongly.
14977         (graphite_trans_bb_block): Same.
14978         (graphite_trans_bb_block): Print tentative of loop blocking.
14979         (graphite_trans_scop_block): Do not print that the loop has been
14980         blocked.
14981         (graphite_transform_loops): Do not handle scops that contain condition
14982         scalar phi nodes.
14983
14984 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
14985
14986         AVX Programming Reference (December, 2008)
14987         * config/i386/avxintrin.h (_mm256_stream_si256): New.
14988         (_mm256_stream_pd): Likewise.
14989         (_mm256_stream_ps): Likewise.
14990
14991         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
14992         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
14993         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
14994         (bdesc_special_args): Add __builtin_ia32_movntdq256,
14995         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
14996         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
14997         (ix86_expand_special_args_builtin): Likewise.
14998
14999         * config/i386/sse.md (AVXMODEDI): New.
15000         (avx_movnt<mode>): Likewise.
15001         (avx_movnt<mode>): Likewise.
15002         (<sse>_movnt<mode>): Remove AVX support.
15003         (sse2_movntv2di): Likewise.
15004
15005 2009-01-07  Richard Guenther  <rguenther@suse.de>
15006
15007         PR middle-end/38751
15008         * fold-const.c (extract_muldiv): Remove obsolete comment.
15009         (fold_plusminus_mult_expr): Undo MINUS_EXPR
15010         to PLUS_EXPR canonicalization for the canonicalization.
15011
15012 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
15013
15014         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
15015         hosted cross-compilers generating less efficient code.
15016
15017 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
15018
15019         * function.h (rtl_data): Add a dbr_scheduled_p field.
15020         * reorg.c (dbr_schedule): Set it.
15021         (gate_handle_delay_slots): Check it.
15022         * config/mips/mips.c (mips_base_delayed_branch): Delete.
15023         (mips_reorg): Check flag_delayed_branch instead of
15024         mips_base_delayed_branch.
15025         (mips_override_options): Don't set mips_base_delayed_branch
15026         or flag_delayed_branch.
15027
15028 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
15029
15030         PR rtl-optimization/38426.
15031         * ira.c (ira): Set current_function_is_leaf earlier.
15032
15033 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
15034
15035         PR rtl-optimization/38722
15036         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
15037         too early, only set a flag and modify after last possible
15038         undo_all point.
15039
15040 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
15041
15042         PR c/34252
15043         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
15044         * real.c (decimal_single_format): Correct values of emin and emax.
15045         (decimal_double_format): Ditto.
15046         (decimal_quad_format): Ditto.
15047         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
15048         computation of DECnn_MIN and DECnn_MAX for corrected values of
15049         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
15050         __DECnn_MIN__, and adjust its computation for the corrected value
15051         of emin.
15052
15053 2009-01-06  Jan Hubicka  <jh@suse.cz>
15054
15055         PR target/38744
15056         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
15057
15058 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
15059
15060         * doc/contrib.texi (Contributors): Slightly adjust the end note.
15061         Add Robert Clark to the list of testers.
15062
15063 2009-01-06  Jan Hubicka  <jh@suse.cz>
15064             Kai Tietz  <kai.tietz@onevision.com>
15065
15066         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
15067         * config/i386/i386.c (ix86_expand_call): Add clobbers.
15068
15069 2009-01-06  Jan Hubicka  <jh@suse.cz>
15070             Kai Tietz  <kai.tietz@onevision.com>
15071
15072         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
15073         for w64 ABI.
15074         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
15075         (ix86_nsaved_regs): Count only general purpose regs.
15076         (ix86_nsaved_sseregs): New.
15077         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
15078         to 16 for w64; compute padding and size of sse reg save area.
15079         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
15080         general purpose regs.
15081         (ix86_emit_save_sse_regs_using_mov): New.
15082         (ix86_expand_prologue): Save SSE regs if needed.
15083         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
15084         (ix86_emit_restore_sse_regs_using_mov): New.
15085         (ix86_expand_epilogue): Save SSE regs if needed.
15086
15087 2009-01-06  Jan Hubicka  <jh@suse.cz>
15088             Kai Tietz  <kai.tietz@onevision.com>
15089
15090         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
15091         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
15092         functions when accumulate outgoing args is off.
15093
15094 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
15095
15096         PR bootstrap/38742
15097         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
15098         before using pseudos_have_intersected_live_ranges_p.
15099
15100         * ira-int.h (ira_assert): Always define.
15101
15102 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
15103
15104         AVX Programming Reference (December, 2008)
15105         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
15106         (_mm256_permute2_pd): Likewise.
15107         (_mm_permute2_ps): Likewise.
15108         (_mm256_permute2_ps): Likewise.
15109         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
15110         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
15111
15112         * config/i386/i386.c (ix86_builtins): Remove
15113         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
15114         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
15115         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
15116         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
15117         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
15118         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
15119         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
15120         __builtin_ia32_vpermil2ps256.
15121         (ix86_init_mmx_sse_builtins): Updated.
15122         (ix86_expand_args_builtin): Likewise.
15123
15124 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15125
15126         * pa.c (output_call): Relocate non-jump insns in the delay slot of
15127         long absolute calls when generating PA 2.0 code.
15128
15129 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
15130
15131         PR rtl-optimization/38583
15132         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
15133
15134         * params.def (ira-max-conflict-table-size): New.
15135
15136         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
15137
15138         * ira.h (ira_conflicts_p): New external definition.
15139
15140         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
15141         table.  Report this.  Return result of building.
15142         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
15143         building conflict table.
15144
15145         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
15146         (ira_color): Use ira_conflicts_p.
15147
15148         * global.c: Include ira.h.
15149         (pseudo_for_reload_consideration_p, build_insn_chain): Use
15150         ira_conflicts_p.
15151
15152         * Makefile.in (global.o): Add ira.h.
15153
15154         * ira-build.c (mark_all_loops_for_removal,
15155         propagate_some_info_from_allocno): New.
15156         (remove_unnecessary_allocnos): Call
15157         propagate_some_info_from_allocno.
15158         (remove_low_level_allocnos): New.
15159         (remove_unnecessary_regions): Add parameter.  Call
15160         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
15161         parameter to remove_unnecessary_regions.
15162         (ira_build): Remove all regions but root if the conflict table was
15163         not built.  Update conflict hard regs for allocnos crossing calls.
15164
15165         * ira.c (ira_conflicts_p): New global.
15166         (ira): Define and use ira_conflicts_p.
15167
15168         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
15169         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
15170         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
15171
15172 2009-01-06  Ben Elliston  <bje@au.ibm.com>
15173
15174         * gengtype-lex.l (YY_NO_INPUT): Define.
15175
15176 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15177
15178         PR c/34911
15179         * c-common.c (handle_vector_size_attribute): Also reject
15180         BOOLEAN_TYPE types.
15181
15182 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
15183
15184         PR tree-optimization/38492
15185         * graphite.c (rename_map_elt, debug_rename_elt,
15186         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
15187         rename_map_elt_info, eq_rename_map_elts,
15188         get_new_name_from_old_name, bb_in_sese_p): Moved around.
15189         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
15190         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
15191         (sese_build_livein_liveouts): New.
15192         (new_sese, free_sese): New.
15193         (new_scop): Call new_sese.
15194         (free_scop): Call free_sese.
15195         (rename_variables_from_edge, rename_phis_end_scop): Removed.
15196         (register_old_new_names): Renamed register_old_and_new_names.
15197         (register_scop_liveout_renames, add_loop_exit_phis,
15198         insert_loop_close_phis, struct igp,
15199         default_liveout_before_guard, add_guard_exit_phis,
15200         insert_guard_phis, copy_renames): New.
15201         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
15202         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
15203         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
15204         (scop_adjust_phis_for_liveouts): New.
15205         (gloog): Call scop_adjust_phis_for_liveouts.
15206
15207         * graphite.h (struct sese): Documented.  Added fields liveout,
15208         num_ver and livein.
15209         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
15210         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
15211         (struct scop): Added field liveout_renames.
15212         (SCOP_LIVEOUT_RENAMES): New.
15213
15214 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15215
15216         PR tree-optimization/38510
15217         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
15218         (translate_clast): Call recompute_all_dominators before
15219         graphite_verify.
15220         (gloog): Call recompute_all_dominators before graphite_verify.
15221
15222 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
15223             Jan Sjodin  <jan.sjodin@amd.com>
15224
15225         PR tree-optimization/38500
15226         * graphite.c (create_sese_edges): Call fix_loop_structure after
15227         splitting blocks.
15228
15229 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
15230
15231         * config.gcc: Add m32r*-*-rtems*.
15232         * config/m32r/rtems.h: New file.
15233
15234 2009-01-05  Ben Elliston  <bje@au.ibm.com>
15235
15236         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
15237         (.po.pox): Likewise.
15238         (po/gcc.pot): Likewise.
15239
15240 2009-01-04  David S. Miller  <davem@davemloft.net>
15241
15242         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
15243         (STARTING_FRAME_OFFSET): Always set to zero.
15244
15245 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
15246
15247         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
15248         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
15249         fixed-point types, and vectors of the same.
15250
15251 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
15252
15253         * config/mips/sync.md (*mb_barrier): Rename to...
15254         (*memory_barrier): ...this.
15255
15256 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
15257
15258         * doc/extend.texi (Function Attributes): Move @cindex after @item
15259         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
15260         and put in alphabetical order. Fix 'target' name and put in order.
15261         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
15262         typos.
15263
15264 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
15265
15266         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
15267         (memory_barrier): Expand as unspec instead of unspec_volatile.
15268         Remove mem:BLK from insn operands.  Use Pmode scratch register.
15269         (*memory_barrier): Define as unspec instead of unspec_volatile.
15270         Use (match_dup 0) as input operand.
15271
15272         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
15273         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
15274         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
15275         scratch register.  Remove operand 1.
15276         (*stbar): Define as unspec instead of unspec_volatile.
15277         Use (match_dup 0) as input operand, remove (const_int 8).
15278         (*membar): Define as unspec instead of unspec_volatile.
15279         Use (match_dup 0) as input operand, remove input operand 2.
15280
15281         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
15282         (memory_barrier): Expand as unspec instead of unspec_volatile.
15283         Remove mem:BLK from insn operands.  Use Pmode scratch register.
15284         (*memory_barrier): Define as unspec instead of unspec_volatile.
15285         Use (match_dup 0) as input operand.
15286
15287         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
15288         Remove mem:BLK from insn operands.  Use Pmode scratch register.
15289         Set volatile flag on operand 0.
15290         (*memory_barrier): New insn pattern.
15291
15292         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
15293         insn operands.
15294         (*memory_barrier): Use (match_dup 0) as input operand.
15295
15296         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
15297         Remove mem:BLK from insn operands.  Use Pmode scratch register.
15298         Set volatile flag on operand 0.
15299         (*mb_internal): New insn pattern.
15300
15301         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
15302
15303 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
15304
15305         PR middle-end/38586
15306         * function.c (struct temp_slot): Move to the section of the file
15307         that deals with temp slots.  Remove field 'address'.
15308         (temp_slot_address_table): New hash table of address -> temp slot.
15309         (struct temp_slot_address_entry): New struct, items for the table.
15310         (temp_slot_address_compute_hash, temp_slot_address_hash,
15311         temp_slot_address_eq, insert_temp_slot_address): Support functions
15312         for the new table.
15313         (find_temp_slot_from_address): Rewrite to use the new hash table.
15314         (remove_unused_temp_slot_addresses): Remove addresses of temp
15315         slots that have been made available.
15316         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
15317         worker function for remove_unused_temp_slot_addresses.
15318         (assign_stack_temp_for_type): Don't clear the temp slot address list.
15319         Add the temp slot address to the address -> temp slot map.
15320         (update_temp_slot_address): Update via insert_temp_slot_address.
15321         (free_temp_slots): Call remove_unused_temp_slot_addresses.
15322         (pop_temp_slots): Likewise.
15323         (init_temp_slots): Allocate the address -> temp slot map, or empty
15324         the map if it is already allocated.
15325         (prepare_function_start): Initialize temp slot processing.
15326
15327 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
15328
15329         PR middle-end/38584
15330         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
15331         Calculate the size of all stack vars assuming no packing of stack
15332         vars will happen, replacing a quadratic algorithm with a linear one.
15333
15334 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
15335
15336         PR target/38707
15337         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
15338         can't be used.
15339
15340 2009-01-03  Diego Novillo  <dnovillo@google.com>
15341
15342         * doc/contrib.texi: Update contributions.
15343
15344 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
15345
15346         PR c++/38705
15347         * builtins.c (fold_builtin_memory_op): Give up if either operand
15348         is volatile.  Set srctype or desttype to non-qualified version
15349         of the other type.
15350
15351         PR c/38700
15352         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
15353         and FUNCTION_DECLs.
15354
15355 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
15356
15357         PR rtl-optimization/35805
15358         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
15359         problem if fast dce is able to remove any instructions.
15360         * dce.c (dce_process_block): Fix dump message.
15361
15362 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
15363
15364         PR 33649
15365         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
15366
15367 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
15368
15369         PR middle-end/38690
15370         * tree-flow.h (op_code_prio, op_prio): New prototypes.
15371         * tree-pretty-print.c (op_code_prio): New function.
15372         (op_prio): No longer static.  Use op_code_prio.
15373         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
15374         Use op_prio and op_code_prio to determine if () should be
15375         printed around operand(s) or not.
15376
15377         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
15378         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
15379         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
15380         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
15381         pp_character instead of pp_string for single letter printing.
15382
15383 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
15384
15385         * doc/extend.texi: Fix '#pragma GCC option' typo.
15386
15387 2009-01-02  Richard Guenther  <rguenther@suse.de>
15388
15389         * doc/install.texi (--enable-checking): Mention different
15390         default for stage1.
15391         (--enable-stage1-checking): Document.
15392
15393 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
15394
15395         PR middle-end/30142
15396         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
15397         case to be an error.
15398
15399 2009-01-02  Ben Elliston  <bje@au.ibm.com>
15400
15401         * config/fp-bit.h (pack_d): Constify argument.
15402         * config/fp-bit.c (makenan): Constify return type. Remove casts.
15403         (isnan): Constify argument.
15404         (isinf): Likewise.
15405         (iszero): Likewise.
15406         (pack_d): Likewise.
15407         (_fpadd_parts): Constify return type.
15408         (_fpmul_parts): Likewise.
15409         (_fpdiv_parts): Likewise.
15410
15411 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
15412
15413         PR c/36489
15414         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
15415         warn about overwriting initializer with side-effects or
15416         -Woverride-init if !IMPLICIT.
15417         (output_init_element): Likewise.  Pass IMPLICIT down to
15418         add_pending_init.
15419         (process_init_element): Add IMPLICIT argument.  Pass it down
15420         to output_init_element.
15421         (push_init_element, pop_init_level, set_designator): Adjust
15422         process_init_element callers.
15423         (set_nonincremental_init, set_nonincremental_init_from_string):
15424         Adjust add_pending_init callers.
15425         (output_pending_init_elements): Adjust output_init_element callers.
15426         * c-tree.h (process_init_element): Adjust prototype.
15427         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
15428         process_init_element callers.
15429
15430 \f
15431 Copyright (C) 2009 Free Software Foundation, Inc.
15432
15433 Copying and distribution of this file, with or without modification,
15434 are permitted in any medium without royalty provided the copyright
15435 notice and this notice are preserved.