OSDN Git Service

7134327f1294b0a30b0754f67b962f0da21009ff
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
2
3         * dwarf2out.c (field_byte_offset): Use the type size as the field size
4         if the latter is not constant.
5
6 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
7
8         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
9
10 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
11
12         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
13         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
14
15 2009-04-17  Richard Guenther  <rguenther@suse.de>
16
17         * tree-ssa-structalias.c (get_constraint_for_component_ref):
18         Handle component references view-converting an invariant address.
19
20 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
21
22         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
23         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
24         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
25         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
26         Use @deftypevr rather than @deftypevar.
27
28 2009-04-17  Richard Guenther  <rguenther@suse.de>
29
30         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up
31         tuplification.
32         (get_prop_source_stmt): Likewise.
33         (can_propagate_from): Likewise.
34
35 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
36
37         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
38         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
39         (--with-multilib-list): Add default value.
40         * configure: Regenerate.
41         * Makefile.in (TM_ENDIAN_CONFIG): Define.
42         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
43         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
44         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
45         Don't add default cpu to multilib list unnecessarily, but do enable
46         the relevant compiler option..
47         Add support for --with-multilib-list=<blank> and
48         --with-multilib-list=!<somelib> to supress unwanted multilibs.
49         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
50         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
51         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
52         TM_MULTILIB_CONFIG.
53         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
54         (MULTILIB_OSDIRNAMES): New variable.
55         * config/sh/t-1e: Delete file.
56         * config/sh/t-mlib-sh1: Delete file.
57         * config/sh/t-mlib-sh2: Delete file.
58         * config/sh/t-mlib-sh2a: Delete file.
59         * config/sh/t-mlib-sh2a-nofpu: Delete file.
60         * config/sh/t-mlib-sh2a-single: Delete file.
61         * config/sh/t-mlib-sh2a-single-only: Delete file.
62         * config/sh/t-mlib-sh2e: Delete file.
63         * config/sh/t-mlib-sh3e: Delete file.
64         * config/sh/t-mlib-sh4: Delete file.
65         * config/sh/t-mlib-sh4-nofpu: Delete file.
66         * config/sh/t-mlib-sh4-single: Delete file.
67         * config/sh/t-mlib-sh4-single-only: Delete file.
68         * config/sh/t-mlib-sh4a: Delete file.
69         * config/sh/t-mlib-sh4a-nofpu: Delete file.
70         * config/sh/t-mlib-sh4a-single: Delete file.
71         * config/sh/t-mlib-sh4a-single-only: Delete file.
72         * config/sh/t-mlib-sh4al: Delete file.
73         * config/sh/t-mlib-sh5-32media: Delete file.
74         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
75         * config/sh/t-mlib-sh5-64media: Delete file.
76         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
77         * config/sh/t-mlib-sh5-compact: Delete file.
78         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
79         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
80         * doc/install.texi (Options specification): Add
81         --with-multilib-list and --with-endian.
82
83 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
84
85         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
86         REVISION_c.
87         (OBJS-common): Add plugin-version.o.
88         (plugin-version.o): New.
89         * gcc-plugin.h (plugin_gcc_version): New.
90         (plugin_default_version_check): New.
91         (plugin_init_func, plugin_init): Add version argument.
92         * plugin-version.c: New.
93         * plugin.c (str_plugin_gcc_version_name): New.
94         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
95         pass it to the init function.
96         (plugin_default_version_check): New.
97
98 2009-04-17  Richard Guenther  <rguenther@suse.de>
99
100         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
101         for decl-vs-decl disambiguation.
102
103 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
104
105         * config/s390/s390.h (s390_tune_attr): New macro definition.
106         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
107
108 2009-04-17  Richard Guenther  <rguenther@suse.de>
109
110         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
111         (fold_stmt_r): Likewise.
112         (maybe_fold_reference): New function.
113         (fold_gimple_assign): Handle cases fold_stmt_r did.
114         (fold_stmt): Do not use fold_stmt_r.
115         (fold_stmt_inplace): Likewise.
116
117 2009-04-17  Richard Guenther  <rguenther@suse.de>
118
119         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
120         (record_equivalences_from_stmt): Remove useless checks and
121         simplifications.
122         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
123         the type is already suitable.
124
125 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
126
127         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
128
129 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
130
131         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
132         (CMPtype): Define as __gcc_CMPtype.
133
134 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
135
136         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
137         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
138
139 2009-04-17  Richard Guenther  <rguenther@suse.de>
140
141         PR tree-optimization/39746
142         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
143         special-casing for builtins and static variable use/def.
144         (call_may_clobber_ref_p_1): Likewise.
145
146 2009-04-16  Ian Lance Taylor  <iant@google.com>
147
148         * df.h: Include "timevar.h".
149         (struct df_problem): Change tv_id field to timevar_id_t.
150         * tree-pass.h: Include "timevar.h".
151         (struct opt_pass): Change tv_id field to timevar_id_t.
152         * timevar.h (timevar_id_t): Define TV_NONE.
153         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
154         TV_NONE rather than tv_id != 0.
155         (execute_one_pass): Likewise.
156         * Makefile.in (DF_H): Add $(TIMEVAR_H).
157         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
158         dependencies to $(TREE_PASS_H).
159         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
160         to TV_NONE.
161         (pass_branch_target_load_optimize2): Likewise.
162         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
163         (pass_outof_cfg_layout_mode): Likewise.
164         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
165         (pass_rebuild_cgraph_edges): Likewise.
166         (pass_remove_cgraph_callee_edges): Likewise.
167         * df-core.c (pass_df_initialize_opt): Likewise.
168         (pass_df_initialize_no_opt): Likewise.
169         (pass_df_finish): Likewise.
170         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
171         * except.c (pass_set_nothrow_function_flags): Likewise.
172         (pass_convert_to_eh_region_ranges): Likewise.
173         * final.c (pass_compute_alignments): Likewise.
174         * function.c (pass_instantiate_virtual_regs): Likewise.
175         (pass_init_function): Likewise.
176         (pass_leaf_regs): Likewise.
177         (pass_match_asm_constraints): Likewise.
178         * gimple-low.c (pass_lower_cf): Likewise.
179         (pass_mark_used_blocks): Likewise.
180         * init-regs.c (pass_initialize_regs): Likewise.
181         * integrate.c (pass_initial_value_sets): Likewise.
182         * ira.c (pass_ira): Likewise.
183         * jump.c (pass_cleanup_barriers): Likewise.
184         * omp-low.c (pass_expand_omp): Likewise.
185         (pass_lower_omp): Likewise.
186         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
187         * recog.c (pass_split_all_insns): Likewise.
188         (pass_split_after_reload): Likewise.
189         (pass_split_before_regstack): Likewise.
190         (pass_split_before_sched2): Likewise.
191         (pass_split_for_shorten_branches): Likewise.
192         * reginfo.c (pass_reginfo_init): Likewise.
193         (pass_subregs_of_mode_init): Likewise.
194         (pass_subregs_of_mode_finish): Likewise.
195         * passes.c (pass_postreload): Likewise.
196         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
197         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
198         (pass_warn_function_return): Likewise.
199         (pass_warn_function_noreturn): Likewise.
200         * tree-complex.c (pass_lower_complex): Likewise.
201         (pass_lower_complex_O0): Likewise.
202         * tree-if-conv.c (pass_if_conversion): Likewise.
203         * tree-into-ssa.c (pass_build_ssa): Likewise.
204         * tree-mudflap.c (pass_mudflap_1): Likewise.
205         (pass_mudflap_2): Likewise.
206         * tree-nomudflap.c (pass_mudflap_1): Likewise.
207         (pass_mudflap_2): Likewise.
208         * tree-nrv.c (pass_return_slot): Likewise.
209         * tree-object-size.c (pass_object_sizes): Likewise.
210         * tree-optimize.c (pass_all_optimizations): Likewise.
211         (pass_early_local_passes): Likewise.
212         (pass_all_early_optimizations): Likewise.
213         (pass_cleanup_cfg): Likewise.
214         (pass_cleanup_cfg_post_optimizing): Likewise.
215         (pass_free_datastructures): Likewise.
216         (pass_free_cfg_annotations): Likewise.
217         (pass_fixup_cfg): Likewise.
218         (pass_init_datastructures): Likewise.
219         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
220         (pass_late_warn_uninitialized): Likewise.
221         (pass_update_address_taken): Likewise.
222         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
223         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
224         (pass_cse_sincos): Likewise.
225         (pass_convert_to_rsqrt): Likewise.
226         * tree-ssa-structalias.c (pass_build_alias): Likewise.
227         * tree-stdarg.c (pass_stdarg): Likewise.
228         * tree-tailcall.c (pass_tail_recursion): Likewise.
229         (pass_tail_calls): Likewise.
230         * tree-vect-generic.c (pass_lower_vector): Likewise.
231         (pass_lower_vector_ssa): Likewise.
232         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
233
234 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
235
236         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
237         XLR entry.
238         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
239         Handle -march=xlr.
240         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
241         logical and signext.
242
243 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
244
245         PR target/39767
246         * config/sh/predicates.md (arith_operand): Check if the operand
247         of TRUNCATE is a REG.
248
249 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
250
251         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
252         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
253
254 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
255
256         * tree-iterator.c (tsi_split_statement_list_after,
257         tsi_split_statement_list_before): Remove.
258         * tree-iterator.h: Remove the prototypes for
259         tsi_split_statement_list_after and tsi_split_statement_list_before.
260
261 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
262
263         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
264         * tree-ssa-propagate.h: Remove the prototype for
265         stmt_makes_single_load.
266
267 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
268
269         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
270         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
271
272 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
273
274         * tree-iterator.c (EXPR_LAST_BODY): Remove.
275
276 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
277
278         * except.c (eh_region_outer_p): Remove.
279         * except.h: Remove the prototype for eh_region_outer_p.
280
281 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
282
283         * function.c (current_function_assembler_name): Remove.
284         * function.h: Remove the prototype for
285         current_function_assembler_name.
286
287 2009-04-16  Ian Lance Taylor  <iant@google.com>
288
289         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
290         (add_reg_note): Call alloc_reg_note.
291         * rtl.h (alloc_reg_note): Declare.
292         * combine.c (try_combine): Use alloc_reg_note.
293         (recog_for_combine, move_deaths): Likewise.
294         (distribute_notes): Use alloc_reg_note and add_reg_note.
295         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
296         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
297         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
298
299 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
300
301         PR rtl-optimization/39762
302         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
303         ira_may_move_out_cost): Add comments about way of their usage.
304         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
305         
306         * ira-conflicts.c (process_regs_for_copy): Use function
307         ira_get_register_move_cost instead of global
308         ira_register_move_cost.
309
310         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
311         color_pass, move_spill_restore, update_curr_costs): Ditto.
312
313         * ira-lives.c (process_single_reg_class_operands): Ditto.
314
315         * ira-emit.c (emit_move_list): Ditto.
316
317         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
318         (record_reg_classes): Ditto.  Use functions
319         ira_get_register_move_cost and ira_get_may_move_cost instead of
320         global vars ira_register_move_cost, ira_may_move_out_cost and
321         ira_may_move_in_cost.
322         (record_address_regs): Don't call ira_init_register_move_cost.
323         Use function ira_get_may_move_cost instead of global
324         ira_may_move_in_cost.
325         (process_bb_node_for_hard_reg_moves): Use function
326         ira_get_register_move_cost instead of global ira_register_move_cost.
327         (ira_costs): Don't call ira_init_register_move_cost.
328         
329 2009-04-16  Richard Guenther  <rguenther@suse.de>
330
331         * tree-cfg.c (verify_gimple_assign_binary):
332         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
333         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
334         (create_general_new_stmt): Note that this function is broken.
335
336 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
337
338         * common.opt (fhelp): Add Var(help_flag).
339         * gcc-plugin.h (plugin_info): Add help.
340         * plugin.c (plugin_name_args): Add help.
341         (register_plugin_info): Set plugin->help.
342         (print_help_one_plugin): New.
343         (print_plugins_help): New.
344         * plugin.h (print_plugins_help): New.
345         * toplev.c (toplev_main): Call print_plugins_help if needed.
346
347 2009-04-16  Richard Guenther  <rguenther@suse.de>
348
349         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
350         (gimple_ior_addresses_taken_1): New function.
351         (gimple_ior_addresses_taken): Likewise.
352         * gimple.h (struct gimple_statement_with_ops_base): Remove
353         addresses_taken member.
354         (gimple_ior_addresses_taken): Declare.
355         (gimple_addresses_taken, gimple_addresses_taken_ptr,
356         gimple_set_addresses_taken): Remove.
357         * ipa-reference.c (mark_address): New function.
358         (scan_stmt_for_static_refs): Use it for marking addresses taken.
359         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
360         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
361         (gimple_add_to_addresses_taken): Remove.
362         (get_tmr_operands): Call mark_address_taken.
363         (get_asm_expr_operands): Likewise.
364         (get_expr_operands): Likewise.
365         (build_ssa_operands): Do not clear the addresses_taken bitmap.
366         (free_stmt_operands): Do not free it.
367         * tree-ssa.c (delete_tree_ssa): Likewise.
368         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
369
370 2009-04-16  Richard Guenther  <rguenther@suse.de>
371
372         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
373         (walk_stmt_load_store_ops): Likewise.
374         * gimple.c (get_base_loadstore): New function.
375         (walk_stmt_load_store_addr_ops): Likewise.
376         (walk_stmt_load_store_ops): Likewise.
377         * ipa-pure-const.c (check_op): Simplify.
378         (check_load, check_store): New functions.
379         (check_stmt): Use walk_stmt_load_store_ops.
380         * ipa-reference.c (mark_load): Adjust signature.
381         (mark_store): Likewise.
382         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
383
384 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
385
386         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
387         (plugin_info): New.
388         * opts.c (common_handle_option): Don't call print_version.
389         * plugin.c (plugin_name_args): Add version.
390         (register_plugin_info): New.
391         (register_callback): Handle PLUGIN_INFO.
392         (try_init_one_plugin): New.
393         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
394         if failed to init.
395         (finalize_one_plugin): New.
396         (finalize_plugins): New.
397         (print_one_plugin): New.
398         (print_plugins_versions): New.
399         * plugin.h (print_plugins_versions): New.
400         (finalize_plugins): New.
401         * toplev.c (compile_file): Don't call initialize_plugins.
402         (print_version): Call print_plugins_versions.
403         (toplev_main): Call initialize_plugins. Print version if needed.
404         Call finalize_plugins.
405
406 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
407
408         * common.opt (fversion): New.
409         * gcc.c (print_version): New.
410         (process_command): Don't print the version. Just set print_version.
411         (main): Print version. Call subprocesses if print_version and
412         verbose_flag are set.
413         * opts.c (common_handle_option): Handle OPT_fversion.
414
415 2009-04-16  Richard Guenther  <rguenther@suse.de>
416             Ira Rosen  <irar@il.ibm.com>
417
418         PR tree-optimization/39698
419         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
420         type of the reduction variable.  Only generate the def if
421         it is needed.
422
423         * omp-low.c (expand_omp_for_generic): When converting to a pointer
424         make sure to first convert to an integer of the same precision.
425         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
426         the type of the evolution correctly in computing the new
427         induction variable base.
428
429 2009-04-16  Richard Guenther  <rguenther@suse.de>
430
431         PR middle-end/39625
432         * tree-cfg.c (make_blocks): Split statements with to-be
433         abnormal SSA names on the lhs.
434
435 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
436
437         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
438         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
439         * c-typeck.c (really_start_incremental_init): Likewise.
440         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
441         (TARGET_INITIALIZER): Remove it.
442         * target.h (struct target): Remove vector_opaque_p.
443         * tree.c (build_opaque_vector_type): New.
444         * tree.h (TYPE_VECTOR_OPAQUE): New.
445         (build_opaque_vector_type): Declare.
446         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
447         * config/rs6000/rs6000.c (build_opaque_vector_type,
448         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
449         (rs6000_init_builtins): Use build_opaque_vector_type for
450         opaque_V4SI_type_node.
451
452 2009-04-15  Catherine Moore  <clm@codesourcery.com>
453
454         * debug.h (set_name):  Declare.
455         * dwarf2out.c (dwarf2out_set_name): Declare.
456         (dwarf2_debug_hooks): Add set_name.
457         (find_AT_string): New.
458         (add_AT_string): Call find_AT_string.
459         (dwarf2out_set_name): New.
460         * cp/decl.c (grokdeclarator): Call set_name.
461         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
462         * debug.c (do_nothing_debug_hooks):  Likewise.
463         * dbxout.c (dbx_debug_hooks): Likewise.
464         * sdbout.c (sdb_debug_hooks): Likewise.
465
466 2009-04-15  Michael Eager <eager@eagercon.com>
467
468         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
469         reg for single-precision FPU.
470         * config/rs6000/rs6000.md (movsi_internal1): Only for
471         !TARGET_SINGLE_FPU.
472         (movsi_internal1_single): New. Add pattern to move SI values to/from
473         single-precision FP regs.
474
475 2009-04-15  Richard Guenther  <rguenther@suse.de>
476
477         * omp-low.c (lower_rec_input_clauses): Build correct address
478         expressions.
479         (expand_omp_for_generic): Fix multiplication type.
480         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
481         (generate_memset_zero): Fix types.
482         * tree-profile.c (prepare_instrumented_value): Correctly
483         widen a pointer.
484
485 2009-04-15  Ian Lance Taylor  <iant@google.com>
486
487         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
488         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
489         for -Wall and for -Wc++-compat.
490         (c_common_post_options): For C++, set warn_enum_compare if not
491         already set.
492         * c-tree.h (struct c_expr): Add field original_type.
493         (build_external_ref): Update declaration.
494         * c-parser.c (c_parser_braced_init): Set original_type.
495         (c_parser_initelt): Likewise.
496         (c_parser_expr_no_commas): Likewise.
497         (c_parser_conditional_expression): Likewise.
498         (c_parser_cast_expression): Likewise.
499         (c_parser_unary_expression): Likewise.  Pull setting of
500         original_code to top of function.
501         (c_parser_sizeof_expression): Set original_type.
502         (c_parser_alignof_expression): Likewise.
503         (c_parser_postfix_expression): Likewise.  Pull setting of
504         original_code to top of function.
505         (c_parser_postfix_expression_after_paren_type): Set original_type.
506         (c_parser_postfix_expression_after_primary): Likewise.
507         (c_parser_expression): Likewise.
508         * c-typeck.c (build_external_ref): Add type parameter.  Change all
509         callers.
510         (c_expr_sizeof_expr): Set original_type field.
511         (parser_build_unary_op): Likewise.
512         (parser_build_binary_op): Likewise.  Optionally warn about
513         comparisons of enums of different types.
514         (digest_init): Set original_type field.
515         (really_start_incremental_init): Likewise.
516         (push_init_level, pop_init_level): Likewise.
517         * doc/invoke.texi (Warning Options): -Wenum-compare now
518         supported in C.
519
520 2009-04-15  Richard Guenther  <rguenther@suse.de>
521
522         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
523         out a necessary conversion.
524         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
525         names we didn't value number.
526         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
527
528 2009-04-15  Richard Guenther  <rguenther@suse.de>
529
530         PR tree-optimization/39764
531         * tree-ssa-ccp.c (get_value): Canonicalize value with
532         canonicalize_float_value.
533
534 2009-04-15  Jan Hubicka  <jh@suse.cz>
535
536         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
537         Wrong version of patch.
538
539 2009-04-15  Jan Hubicka  <jh@suse.cz>
540
541         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
542
543 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
544
545         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
546         our distinct integral and vector types.
547
548 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
549
550         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
551         * init.c (build_vtbl_address): Remove call to assemble_external.
552
553 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
554
555         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
556         output for other floating point modes.
557
558 2009-04-14  Diego Novillo  <dnovillo@google.com>
559
560         * diagnostic.c (diagnostic_report_diagnostic): Do not
561         warn about loaded plugins for DK_ERROR and DK_WARNING.
562         * c-decl.c (declspecs_add_type): Move call to
563         invoke_plugin_callbacks ...
564         * c-parser.c (c_parser_declspecs): ... here.
565         * plugin.c (dump_active_plugins): Tidy output.
566
567 2009-04-14  Diego Novillo  <dnovillo@google.com>
568             Le-Chun Wu  <lcwu@google.com>
569
570         * configure.ac: Add --enable-plugin support.
571         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
572         * Makefile.in (PLUGIN_H): Define.
573         Export ENABLE_PLUGIN and GMPINC to site.exp.
574         Add PLUGINLIBS to link command.
575         Add/modify dependencies for plugin.o and files including plugin.h.
576         (plugin.o): New.
577         * config.in: Regenerate.
578         
579         * opts.c (common_handle_option): Handle OPT_fplugin_ and
580         OPT_fplugin_arg_.
581
582 2009-04-14  Le-Chun Wu  <lcwu@google.com>
583
584         * tree-pass.h (register_one_dump_file): Add a prototype for
585         register_one_dump_file.
586         * toplev.c (compile_file): Call initialize_plugins.
587         (do_compile): Call invoke_plugin_callbacks.
588         (toplev_main): Call invoke_plugin_callbacks.
589         * common.opt: Add -fplugin= and -fplugin-arg-.
590         * gcc-plugin.h: New public header file for plugins to include.
591         * plugin.c: New source file.
592         * plugin.h: New internal header file.
593         * passes.c (register_one_dump_file): Make it external.
594         
595         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
596
597 2009-04-14  Diego Novillo  <dnovillo@google.com>
598
599         * doc/plugins.texi: New.
600         * doc/gccint.texi: Add reference to Plugins chapter.
601         * doc/invoke.texi: Document -fplugin and -fplugin-arg
602         * diagnostic.c (diagnostic_report_diagnostic): Warn about
603         loaded plugins, if any.
604         * timevar.def (TV_PLUGIN_INIT): Define.
605         (TV_PLUGIN_RUN): Define.
606         * plugin.c: Include timevar.h
607         (plugins_active_p): New.
608         (dump_active_plugins): New.
609         (debug_active_plugins): New.
610
611 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
612
613         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
614         library paths.
615         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
616
617 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
618
619         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
620         the same as a minus without a shift.
621
622 2009-04-14  Nick Clifton  <nickc@redhat.com>
623
624         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
625         comparisons with small integers will always produce a short
626         branch.
627
628 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
629
630         Merge:
631         2008-12-19  Diego Novillo  <dnovillo@google.com>
632
633         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
634
635 2000-04-14  Richard Guenther  <rguenther@suse.de>
636
637         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
638         verification.
639         (verify_gimple_assign_binary): Likewise.  Handle shifts and
640         rotates correctly.
641         (verify_gimple_phi): Print the mismatched argument position.
642         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
643         Fix types.
644         (vect_update_init_of_dr): Likewise.
645         * matrix-reorg.c (transform_access_sites): Do what the
646         comment suggests.
647         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
648
649 2009-04-13  Michael Eager <eager@eagercon.com>
650
651         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
652         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
653         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
654         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file, 
655         remove duplicate config
656
657 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
658
659         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
660         file_name:line_number type locator of the call site.
661         
662 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
663
664         * genautomata.c: Put blank after comma.
665         (automaton_decls): New.
666         (struct unit_usage): Add comments to member next.
667         (store_alt_unit_usage): Keep the list ordered.
668         (unit_present_on_list_p, equal_alternatives_p): New.
669         (check_regexp_units_distribution): Check units distribution
670         correctness correctly.
671         (main): Don't write automata if error is found.  Return correct
672         exit code.
673         
674         * config/m68k/cf.md (cfv4_ds): Remove.
675         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
676         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
677
678         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
679         power4-load-ext, power4-store, power4-store-update,
680         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
681         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
682         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
683         power4-sqrt, power4-isync): Modify reservation to make correct
684         unit distribution to automata.
685
686         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
687         power5-store-update, power5-two, power5-three, power5-lmul,
688         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
689         
690 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
691
692         * except.c (pass_set_nothrow_function_flags): Set name and add
693         TODO_dump_func.
694         (set_nothrow_function_flags): Mention in the dump file when
695         changing a function to nothrow.
696
697 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
698
699         PR/39066
700         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
701         instead of unsigned long.
702
703 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
704
705         * config/arm/arm.c (return_used_this_function): Remove.
706         (arm_output_function_prologue): Remove use of
707         return_used_this_function.
708         (output_return_instruction): Replace use of
709         return_used_this_function
710         by cfun->machine->return_used_this_function.
711         (arm_output_epilogue): Likewise.
712         (arm_output_function_epilogue): Likewise.
713         (thumb_unexpanded_epilogue): Likewise.
714         * config/arm/arm.h (struct machine_function):
715         New member return_used_this_function.
716
717 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
718
719         * doc/install.texi: Correct description of default directory for
720         --with-gxx-include-dir.
721
722 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
723
724         * fold-const.c (build_range_check): Properly deal with enumeral and
725         boolean base types.
726
727 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
728
729         * doc/invoke.texi (max_gcse_passes): Remove documentation.
730         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
731         * params.h (MAX_GCSE_PASSES): Remove.
732         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
733         in sequence.  Remove ability to run multiple passes.
734         (bypass_jumps): Report run as third CPROP pass.
735
736 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
737
738         PR middle-end/39651
739         * except.c (can_throw_external): Look at each insn in a SEQUENCE
740         when deciding whether the whole SEQUENCE can throw.
741
742 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
743
744         PR target/39740
745         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
746         offseted label references.
747
748 2009-04-11  Jan Hubicka  <jh@suse.cz>
749
750         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
751
752 2009-04-11  Richard Guenther  <rguenther@suse.de>
753
754         PR middle-end/39732
755         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
756         return variables as TREE_ADDRESSABLE.
757
758 2009-04-11  Richard Guenther  <rguenther@suse.de>
759
760         PR tree-optimization/39713
761         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
762         reference trees have SSA_NAME operands.
763
764 2009-04-11  Richard Guenther  <rguenther@suse.de>
765
766         PR c/39712
767         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
768         address expressions.
769
770 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
771
772         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
773         match changes in Cygwin 1.7
774         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
775         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
776
777 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
778
779         PR tree-optimization/39701
780         * doc/invoke.texi (Optimization Options): Document change in
781         meaning and initialization of -fdelete-null-pointer-checks.
782
783 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
784
785         PR middle-end/39701
786         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
787
788         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
789         here.
790
791         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
792
793 2009-04-10  Chao-ying Fu  <fu@mips.com>
794
795         * doc/tm.texi (Instruction Output): Document
796         TARGET_ASM_FINAL_POSTSCAN_INSN.
797         * target.h (final_postscan_insn): New field in asm_out.
798         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
799         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
800         * final.c (final_scan_insn): Call
801         targetm.asm_out.final_postscan_insn after outputting
802         an asm macro and a normal instruction.
803
804         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
805         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
806         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
807         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
808         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
809
810 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
811
812         PR middle-end/39701
813         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
814         variables as non-NULL even with -fdelete-null-pointer-checks.
815
816 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
817
818         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
819
820 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
821
822         PR target/39678
823         * config/i386/i386.c (classify_argument): Handle SCmode with
824         (bit_offset % 64) != 0.
825
826 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
827
828         * doc/invoke.texi (Optimize Options): Add cross-reference to
829         -Q --help=optimizers examples.
830
831 2009-04-10  Ben Elliston  <bje@au.ibm.com>
832
833         PR target/36800
834         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
835         regalign for the reg == fpr and TDmode case.
836
837 2009-04-09  David Ayers  <ayers@fsfe.org>
838
839         PR objc/29200
840         * objc/objc-act.c (warn_with_method): Remove helper function.
841         (check_duplicates): Call warning and inform directly.
842         (really_start_method): Likewise.
843
844 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
845
846         * expmed.c (expand_divmod): Always use a comparison for a division
847         by a large unsigned integer.
848
849         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
850         for things others than variables or functions as nonzero.
851
852 2009-04-09  Nick Clifton  <nickc@redhat.com>
853
854         * unwind-compat.c: Change copyright header to refer to version
855         3 of the GNU General Public License with version 3.1 of the
856         GCC Runtime Library Exception and to point readers at the
857         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
858         * config/alpha/crtfastmath.c: Likewise.
859         * config/alpha/linux-unwind.h: Likewise.
860         * config/alpha/qrnnd.asm: Likewise.
861         * config/alpha/vms-crt0-64.c: Likewise.
862         * config/alpha/vms-crt0.c: Likewise.
863         * config/alpha/vms-dwarf2.asm: Likewise.
864         * config/alpha/vms-dwarf2eh.asm: Likewise.
865         * config/alpha/vms-psxcrt0-64.c: Likewise.
866         * config/alpha/vms-psxcrt0.c: Likewise.
867         * config/alpha/vms_tramp.asm: Likewise.
868         * config/arc/initfini.c: Likewise.
869         * config/arc/lib1funcs.asm: Likewise.
870         * config/arm/bpabi-v6m.S: Likewise.
871         * config/arm/bpabi.S: Likewise.
872         * config/arm/bpabi.c: Likewise.
873         * config/arm/crti.asm: Likewise.
874         * config/arm/crtn.asm: Likewise.
875         * config/arm/ieee754-df.S: Likewise.
876         * config/arm/ieee754-sf.S: Likewise.
877         * config/arm/lib1funcs.asm: Likewise.
878         * config/arm/libunwind.S: Likewise.
879         * config/arm/linux-atomic.c: Likewise.
880         * config/arm/mmintrin.h: Likewise.
881         * config/arm/pr-support.c: Likewise.
882         * config/arm/unaligned-funcs.c: Likewise.
883         * config/arm/unwind-arm.c: Likewise.
884         * config/arm/unwind-arm.h: Likewise.
885         * config/avr/libgcc.S: Likewise.
886         * config/bfin/crti.s: Likewise.
887         * config/bfin/crtlibid.s: Likewise.
888         * config/bfin/crtn.s: Likewise.
889         * config/bfin/lib1funcs.asm: Likewise.
890         * config/bfin/linux-unwind.h: Likewise.
891         * config/cris/arit.c: Likewise.
892         * config/cris/cris_abi_symbol.c: Likewise.
893         * config/darwin-64.c: Likewise.
894         * config/darwin-crt2.c: Likewise.
895         * config/darwin-crt3.c: Likewise.
896         * config/darwin.h: Likewise.
897         * config/dbxelf.h: Likewise.
898         * config/dfp-bit.c: Likewise.
899         * config/dfp-bit.h: Likewise.
900         * config/elfos.h: Likewise.
901         * config/fixed-bit.c: Likewise.
902         * config/fixed-bit.h: Likewise.
903         * config/fp-bit.c: Likewise.
904         * config/fp-bit.h: Likewise.
905         * config/fr30/crti.asm: Likewise.
906         * config/fr30/crtn.asm: Likewise.
907         * config/fr30/lib1funcs.asm: Likewise.
908         * config/freebsd-spec.h: Likewise.
909         * config/frv/cmovd.c: Likewise.
910         * config/frv/cmovh.c: Likewise.
911         * config/frv/cmovw.c: Likewise.
912         * config/frv/frvbegin.c: Likewise.
913         * config/frv/frvend.c: Likewise.
914         * config/frv/lib1funcs.asm: Likewise.
915         * config/glibc-stdint.h: Likewise.
916         * config/h8300/clzhi2.c: Likewise.
917         * config/h8300/crti.asm: Likewise.
918         * config/h8300/crtn.asm: Likewise.
919         * config/h8300/ctzhi2.c: Likewise.
920         * config/h8300/fixunssfsi.c: Likewise.
921         * config/h8300/lib1funcs.asm: Likewise.
922         * config/h8300/parityhi2.c: Likewise.
923         * config/h8300/popcounthi2.c: Likewise.
924         * config/i386/ammintrin.h: Likewise.
925         * config/i386/att.h: Likewise.
926         * config/i386/avxintrin.h: Likewise.
927         * config/i386/biarch64.h: Likewise.
928         * config/i386/bmmintrin.h: Likewise.
929         * config/i386/cpuid.h: Likewise.
930         * config/i386/cross-stdarg.h: Likewise.
931         * config/i386/crtfastmath.c: Likewise.
932         * config/i386/crtprec.c: Likewise.
933         * config/i386/cygming-crtbegin.c: Likewise.
934         * config/i386/cygming-crtend.c: Likewise.
935         * config/i386/cygwin.asm: Likewise.
936         * config/i386/emmintrin.h: Likewise.
937         * config/i386/gmm_malloc.h: Likewise.
938         * config/i386/gthr-win32.c: Likewise.
939         * config/i386/i386.h: Likewise.
940         * config/i386/immintrin.h: Likewise.
941         * config/i386/linux-unwind.h: Likewise.
942         * config/i386/linux64.h: Likewise.
943         * config/i386/mm3dnow.h: Likewise.
944         * config/i386/mmintrin-common.h: Likewise.
945         * config/i386/mmintrin.h: Likewise.
946         * config/i386/nmmintrin.h: Likewise.
947         * config/i386/pmm_malloc.h: Likewise.
948         * config/i386/pmmintrin.h: Likewise.
949         * config/i386/smmintrin.h: Likewise.
950         * config/i386/sol2-c1.asm: Likewise.
951         * config/i386/sol2-ci.asm: Likewise.
952         * config/i386/sol2-cn.asm: Likewise.
953         * config/i386/sol2-gc1.asm: Likewise.
954         * config/i386/tmmintrin.h: Likewise.
955         * config/i386/unix.h: Likewise.
956         * config/i386/w32-unwind.h: Likewise.
957         * config/i386/wmmintrin.h: Likewise.
958         * config/i386/x86-64.h: Likewise.
959         * config/i386/x86intrin.h: Likewise.
960         * config/i386/xmmintrin.h: Likewise.
961         * config/ia64/crtbegin.asm: Likewise.
962         * config/ia64/crtend.asm: Likewise.
963         * config/ia64/crtfastmath.c: Likewise.
964         * config/ia64/crti.asm: Likewise.
965         * config/ia64/crtn.asm: Likewise.
966         * config/ia64/fde-glibc.c: Likewise.
967         * config/ia64/lib1funcs.asm: Likewise.
968         * config/ia64/linux-unwind.h: Likewise.
969         * config/ia64/quadlib.c: Likewise.
970         * config/ia64/unwind-ia64.c: Likewise.
971         * config/linux.h: Likewise.
972         * config/m32c/m32c-lib1.S: Likewise.
973         * config/m32c/m32c-lib2-trapv.c: Likewise.
974         * config/m32c/m32c-lib2.c: Likewise.
975         * config/m32r/initfini.c: Likewise.
976         * config/m68hc11/larith.asm: Likewise.
977         * config/m68hc11/m68hc11-crt0.S: Likewise.
978         * config/m68k/cf.md: Likewise.
979         * config/m68k/crti.s: Likewise.
980         * config/m68k/crtn.s: Likewise.
981         * config/m68k/lb1sf68.asm: Likewise.
982         * config/m68k/linux-unwind.h: Likewise.
983         * config/mcore/crti.asm: Likewise.
984         * config/mcore/crtn.asm: Likewise.
985         * config/mcore/lib1.asm: Likewise.
986         * config/mips/linux-unwind.h: Likewise.
987         * config/mips/loongson.h: Likewise.
988         * config/mips/mips16.S: Likewise.
989         * config/mmix/crti.asm: Likewise.
990         * config/mmix/crtn.asm: Likewise.
991         * config/pa/fptr.c: Likewise.
992         * config/pa/hpux-unwind.h: Likewise.
993         * config/pa/lib2funcs.asm: Likewise.
994         * config/pa/linux-atomic.c: Likewise.
995         * config/pa/linux-unwind.h: Likewise.
996         * config/pa/milli64.S: Likewise.
997         * config/pa/quadlib.c: Likewise.
998         * config/pa/stublib.c: Likewise.
999         * config/picochip/libgccExtras/adddi3.asm: Likewise.
1000         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
1001         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
1002         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
1003         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
1004         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
1005         * config/picochip/libgccExtras/divmod15.asm: Likewise.
1006         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
1007         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
1008         * config/picochip/libgccExtras/longjmp.asm: Likewise.
1009         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
1010         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
1011         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
1012         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
1013         * config/picochip/libgccExtras/setjmp.asm: Likewise.
1014         * config/picochip/libgccExtras/subdi3.asm: Likewise.
1015         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
1016         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
1017         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
1018         * config/rs6000/750cl.h: Likewise.
1019         * config/rs6000/altivec.h: Likewise.
1020         * config/rs6000/biarch64.h: Likewise.
1021         * config/rs6000/crtresfpr.asm: Likewise.
1022         * config/rs6000/crtresgpr.asm: Likewise.
1023         * config/rs6000/crtresxfpr.asm: Likewise.
1024         * config/rs6000/crtresxgpr.asm: Likewise.
1025         * config/rs6000/crtsavfpr.asm: Likewise.
1026         * config/rs6000/crtsavgpr.asm: Likewise.
1027         * config/rs6000/darwin-asm.h: Likewise.
1028         * config/rs6000/darwin-fallback.c: Likewise.
1029         * config/rs6000/darwin-fpsave.asm: Likewise.
1030         * config/rs6000/darwin-ldouble.c: Likewise.
1031         * config/rs6000/darwin-tramp.asm: Likewise.
1032         * config/rs6000/darwin-unwind.h: Likewise.
1033         * config/rs6000/darwin-vecsave.asm: Likewise.
1034         * config/rs6000/darwin-world.asm: Likewise.
1035         * config/rs6000/e500crtres32gpr.asm: Likewise.
1036         * config/rs6000/e500crtres64gpr.asm: Likewise.
1037         * config/rs6000/e500crtres64gprctr.asm: Likewise.
1038         * config/rs6000/e500crtrest32gpr.asm: Likewise.
1039         * config/rs6000/e500crtrest64gpr.asm: Likewise.
1040         * config/rs6000/e500crtresx32gpr.asm: Likewise.
1041         * config/rs6000/e500crtresx64gpr.asm: Likewise.
1042         * config/rs6000/e500crtsav32gpr.asm: Likewise.
1043         * config/rs6000/e500crtsav64gpr.asm: Likewise.
1044         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
1045         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
1046         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
1047         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
1048         * config/rs6000/eabi-ci.asm: Likewise.
1049         * config/rs6000/eabi-cn.asm: Likewise.
1050         * config/rs6000/eabi.asm: Likewise.
1051         * config/rs6000/linux-unwind.h: Likewise.
1052         * config/rs6000/linux64.h: Likewise.
1053         * config/rs6000/paired.h: Likewise.
1054         * config/rs6000/paired.md: Likewise.
1055         * config/rs6000/ppc64-fp.c: Likewise.
1056         * config/rs6000/ppu_intrinsics.h: Likewise.
1057         * config/rs6000/rs6000.h: Likewise.
1058         * config/rs6000/si2vmx.h: Likewise.
1059         * config/rs6000/sol-ci.asm: Likewise.
1060         * config/rs6000/sol-cn.asm: Likewise.
1061         * config/rs6000/spe.h: Likewise.
1062         * config/rs6000/spu2vmx.h: Likewise.
1063         * config/rs6000/sysv4.h: Likewise.
1064         * config/rs6000/tramp.asm: Likewise.
1065         * config/rs6000/vec_types.h: Likewise.
1066         * config/s390/linux-unwind.h: Likewise.
1067         * config/s390/tpf-unwind.h: Likewise.
1068         * config/score/crti.asm: Likewise.
1069         * config/score/crtn.asm: Likewise.
1070         * config/sh/crt1.asm: Likewise.
1071         * config/sh/crti.asm: Likewise.
1072         * config/sh/crtn.asm: Likewise.
1073         * config/sh/divtab-sh4-300.c: Likewise.
1074         * config/sh/divtab-sh4.c: Likewise.
1075         * config/sh/divtab.c: Likewise.
1076         * config/sh/lib1funcs-4-300.asm: Likewise.
1077         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
1078         * config/sh/lib1funcs.asm: Likewise.
1079         * config/sh/lib1funcs.h: Likewise.
1080         * config/sh/linux-atomic.asm: Likewise.
1081         * config/sh/linux-unwind.h: Likewise.
1082         * config/sh/shmedia.h: Likewise.
1083         * config/sh/sshmedia.h: Likewise.
1084         * config/sh/ushmedia.h: Likewise.
1085         * config/sparc/crtfastmath.c: Likewise.
1086         * config/sparc/linux-unwind.h: Likewise.
1087         * config/sparc/sol2-c1.asm: Likewise.
1088         * config/sparc/sol2-ci.asm: Likewise.
1089         * config/sparc/sol2-cn.asm: Likewise.
1090         * config/spu/divmodti4.c: Likewise.
1091         * config/spu/divv2df3.c: Likewise.
1092         * config/spu/float_disf.c: Likewise.
1093         * config/spu/float_unsdidf.c: Likewise.
1094         * config/spu/float_unsdisf.c: Likewise.
1095         * config/spu/float_unssidf.c: Likewise.
1096         * config/spu/mfc_multi_tag_release.c: Likewise.
1097         * config/spu/mfc_multi_tag_reserve.c: Likewise.
1098         * config/spu/mfc_tag_release.c: Likewise.
1099         * config/spu/mfc_tag_reserve.c: Likewise.
1100         * config/spu/mfc_tag_table.c: Likewise.
1101         * config/spu/multi3.c: Likewise.
1102         * config/spu/spu_internals.h: Likewise.
1103         * config/spu/spu_intrinsics.h: Likewise.
1104         * config/spu/spu_mfcio.h: Likewise.
1105         * config/spu/vec_types.h: Likewise.
1106         * config/spu/vmx2spu.h: Likewise.
1107         * config/stormy16/stormy16-lib2.c: Likewise.
1108         * config/svr4.h: Likewise.
1109         * config/sync.c: Likewise.
1110         * config/v850/lib1funcs.asm: Likewise.
1111         * config/vxlib-tls.c: Likewise.
1112         * config/vxlib.c: Likewise.
1113         * config/vxworks-dummy.h: Likewise.
1114         * config/xtensa/crti.asm: Likewise.
1115         * config/xtensa/crtn.asm: Likewise.
1116         * config/xtensa/ieee754-df.S: Likewise.
1117         * config/xtensa/ieee754-sf.S: Likewise.
1118         * config/xtensa/lib1funcs.asm: Likewise.
1119         * config/xtensa/lib2funcs.S: Likewise.
1120         * config/xtensa/linux-unwind.h: Likewise.
1121         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
1122         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
1123         * coretypes.h: Likewise.
1124         * crtstuff.c: Likewise.
1125         * defaults.h: Likewise.
1126         * dwarf2.h: Likewise.
1127         * emutls.c: Likewise.
1128         * gbl-ctors.h: Likewise.
1129         * gcov-io.h: Likewise.
1130         * ginclude/float.h: Likewise.
1131         * ginclude/iso646.h: Likewise.
1132         * ginclude/stdarg.h: Likewise.
1133         * ginclude/stdbool.h: Likewise.
1134         * ginclude/stddef.h: Likewise.
1135         * ginclude/stdfix.h: Likewise.
1136         * ginclude/stdint-gcc.h: Likewise.
1137         * ginclude/tgmath.h: Likewise.
1138         * gthr-aix.h: Likewise.
1139         * gthr-dce.h: Likewise.
1140         * gthr-gnat.c: Likewise.
1141         * gthr-gnat.h: Likewise.
1142         * gthr-lynx.h: Likewise.
1143         * gthr-mipssde.h: Likewise.
1144         * gthr-nks.h: Likewise.
1145         * gthr-posix.c: Likewise.
1146         * gthr-posix.h: Likewise.
1147         * gthr-posix95.h: Likewise.
1148         * gthr-rtems.h: Likewise.
1149         * gthr-single.h: Likewise.
1150         * gthr-solaris.h: Likewise.
1151         * gthr-tpf.h: Likewise.
1152         * gthr-vxworks.h: Likewise.
1153         * gthr-win32.h: Likewise.
1154         * gthr.h: Likewise.
1155         * libgcc2.c: Likewise.
1156         * libgcc2.h: Likewise.
1157         * libgcov.c: Likewise.
1158         * tsystem.h: Likewise.
1159         * typeclass.h: Likewise.
1160         * unwind-c.c: Likewise.
1161         * unwind-compat.h: Likewise.
1162         * unwind-dw2-fde-compat.c: Likewise.
1163         * unwind-dw2-fde-darwin.c: Likewise.
1164         * unwind-dw2-fde-glibc.c: Likewise.
1165         * unwind-dw2-fde.c: Likewise.
1166         * unwind-dw2-fde.h: Likewise.
1167         * unwind-dw2.c: Likewise.
1168         * unwind-dw2.h: Likewise.
1169         * unwind-generic.h: Likewise.
1170         * unwind-pe.h: Likewise.
1171         * unwind-sjlj.c: Likewise.
1172         * unwind.inc: Likewise.
1173         * config/arm/neon-gen.ml: Change generated copyright header to
1174         refer to version 3 of the GNU General Public License with
1175         version 3.1 of the GCC Runtime Library Exception and to point
1176         readers at the COPYING3 and COPYING3.RUNTIME files and the
1177         FSF's license web page.
1178         * config/arm/arm_neon.h: Regenerate.
1179
1180 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
1181
1182         * config/cris/cris.md: Change copyright header to refer to version
1183         3 of the GNU General Public License.
1184         * doc/install.texi2html: Change copyright header to refer to version
1185         3 of the GNU General Public License and to point readers at the
1186         COPYING3 file and the FSF's license web page.
1187         * config/vax/linux.h: Likewise.
1188
1189 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
1190
1191         * config/i386/i386.md (cmpcc): New.
1192         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
1193         (sync_compare_and_swap_cc*): Delete.
1194
1195         * config/s390/s390.c (s390_compare_emitted): Remove.
1196         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
1197         s390_compare_emitted used to be handled.  Assert that modes match.
1198         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
1199         refer to sync_compare_and_swap_ccsi.
1200         * config/s390/s390.h (s390_compare_emitted): Remove.
1201         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
1202         instead of s390_compare_emitted.
1203         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
1204         instead of s390_compare_emitted.
1205         * config/s390/s390.md (cmpcc): New.
1206         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
1207         CC_REGNUM, do not pretend it's set.
1208         (sync_compare_and_swap_cc*): Delete.
1209         * config/s390/predicates.md (cc_reg_operand): New.
1210
1211         * expr.c (sync_compare_and_swap_cc): Delete.
1212         * optabs.h (sync_compare_and_swap_cc): Delete.
1213         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
1214         is being used with can_compare_p.
1215         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
1216         (find_cc_set): New.
1217         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
1218         look for a MODE_CC set instead.  Use emit_store_flag.
1219         (expand_compare_and_swap_loop): Likewise, with some additional
1220         complication to avoid a force_reg when useless.  Use
1221         emit_cmp_and_jump_insns.
1222         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
1223         * doc/md.texi (sync_compare_and_swap_cc): Merge with
1224         sync_compare_and_swap documentation.
1225
1226 2009-04-09  Jan Hubicka  <jh@suse.cz>
1227
1228         * except.c (find_prev_try): Break out from ....
1229         (duplicate_eh_regions): ... here; properly update prev_try pointers
1230         when duplication part of tree.
1231         (dump_eh_tree): Improve dumping.
1232         (verify_eh_region): New.
1233         (verify_eh_tree): Use it.
1234
1235 2009-04-06  Richard Guenther  <rguenther@suse.de>
1236
1237         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
1238         &ARRAY addresses by adjusting their types and prepending
1239         a conversion.
1240         * tree-cfg.c (verify_gimple_assign_single): Verify that
1241         addresses are correct.
1242
1243 2009-04-09  Richard Guenther  <rguenther@suse.de>
1244
1245         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
1246         indices into an array reference if possible.
1247         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1248         Fold POINTER_PLUS_EXPR statements with invariant address.
1249
1250 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
1251
1252         PR target/39634
1253         * config.gcc (powerpc64-*-linux*): Always build biarch.
1254
1255 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
1256
1257         PR c/39613
1258         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
1259         it and pedwarn if this results in an INTEGER_CST.
1260
1261 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1262
1263         * doc/install.texi: Update minimum GMP version.  Remove obsolete
1264         text in MPFR section.
1265
1266 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
1267
1268         * dwarf2out.c (class_scope_p): New static inline.
1269         (class_or_namespace_scope_p): Use it.
1270         (gen_variable_die): Use DW_TAG_member tag for static data member
1271         declarations instead of DW_TAG_variable.
1272
1273         PR middle-end/39573
1274         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
1275         variables.
1276
1277 2009-04-08  Richard Guenther  <rguenther@suse.de>
1278
1279         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
1280         valueize random data.
1281
1282 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
1283
1284         * config.gcc (aix tm_file):  Add aix-stdint.h.
1285         (aix tm clause use_gcc_stdint):  Set to wrap.
1286         * config/rs6000/aix-stdint.h:  New file.
1287         
1288 2009-04-08  Richard Guenther  <rguenther@suse.de>
1289
1290         PR middle-end/36291
1291         * tree-dfa.c (add_referenced_var): Do not recurse into
1292         global initializers.
1293         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
1294         exposed variables.
1295         (fold_const_aggregate_ref): Likewise.
1296
1297 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
1298
1299         * recog.c (ordered_comparison_operator): New.
1300         * gensupport.c (std_preds): Add it.
1301         * doc/md.texi (Machine-Independent Predicates): Document it.
1302
1303 2009-04-08  Jan Hubicka  <jh@suse.cz>
1304
1305         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
1306         * function.h (rtl_eh): Remove exception_handler_label_map.
1307         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
1308         remove_exception_handler_label, for_each_eh_label_1): Remove.
1309         (rtl_remove_unreachable_regions): Remove.
1310         (convert_from_eh_region_ranges): Do not remove unreachable regions.
1311         (find_exception_handler_labels): Don't build the hashtable.
1312         (maybe_remove_eh_handler): Remove.
1313         (for_each_eh_label): Rewrite to walk the tree.
1314         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
1315         * except.h (maybe_remove_eh_handler): Remove.
1316         * passes.c (init_optimization_passes): Schedule second EH cleanup
1317         before out-of-ssa.
1318         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
1319         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
1320
1321 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
1322
1323         * genoutput.c (validate_optab_operands): New.
1324         (gen_insn, gen_expand): Call it.
1325
1326         * genflags.c (gen_insn): Detect misused iterators.
1327         (main): Pass line_no to gen_insn, exit with status 1 on error.
1328
1329         * genextract.c (line_no): Make global.
1330         (VEC_safe_set_locstr): Change assertion to error message.
1331         (main): Exit with status 1 on error.
1332
1333 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
1334
1335         PR c/39614
1336         PR c/39673
1337         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
1338         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
1339         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
1340         * c-convert.c (convert): Do not call fold on results of conversion
1341         functions when the result is a C_MAYBE_CONST_EXPR.
1342         * c-parser.c (c_parser_postfix_expression): Do not fold condition
1343         of __builtin_choose_expr.
1344         * c-typeck.c (remove_c_maybe_const_expr): New.
1345         (build_unary_op, build_conditional_expr, build_compound_expr,
1346         build_binary_op, c_objc_common_truthvalue_conversion): Call
1347         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
1348         integer operands.
1349
1350 2009-04-08 Bingfeng Mei <bmei@broadcom.com>
1351
1352         * fold-const.c (const_binop): Combine two VECTOR_CST under operation 
1353         CODE to produce a new one. Add a prototype to use fold_convert_const
1354
1355 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
1356
1357         PR bootstrap/39660
1358         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
1359         mix declarations and code.
1360
1361 2009-04-08  Ben Elliston  <bje@au.ibm.com>
1362
1363         * gcc.c: Replace `CC' with `GCC' throughout.
1364
1365 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1366
1367         * doc/invoke.texi: Document Atom support.
1368
1369 2009-04-07  Jason Merrill  <jason@redhat.com>
1370
1371         PR c++/25185
1372         * c-common.h, c-common.c: Add flag_pretty_templates.
1373         * c-opts.c (c_common_handle_option): Set it.
1374         * c.opt: Add -fno-pretty-templates.
1375         * doc/invoke.texi (C++ Dialect Options): Likewise.
1376
1377 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
1378
1379         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
1380         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
1381         (ia64_expand_builtin): Likewise.
1382
1383 2009-04-07  Martin Jambor  <mjambor@suse.cz>
1384
1385         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
1386         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
1387         ADDR_EXPRS are include too.
1388
1389 2009-04-07  Richard Guenther  <rguenther@suse.de>
1390
1391         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
1392         decls are only used if passes as parameters or if they are
1393         local statics and the call is not to a builtin.
1394         (call_may_clobber_ref_p_1): Likewise.
1395
1396 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
1397
1398         * expr.c (do_store_flag): Remove last argument.  Simplify code
1399         to avoid duplication of tests already done by can_compare_p.
1400         (expand_expr_real_1): Adjust caller.
1401
1402 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
1403
1404         * optabs.c (can_compare_p): Test the predicate of a
1405         cbranch and cstore pattern.
1406
1407 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
1408
1409         * expr.c (convert_move): Use emit_store_flag instead of
1410         "emulating" it.
1411
1412 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
1413
1414         * config/i386/i386.c (ix86_compare_emitted): Remove.
1415         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
1416         ix86_compare_op0 like ix86_compare_emitted used to be handled.
1417         * config/i386/i386.h (ix86_compare_emitted): Remove.
1418         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
1419         instead of ix86_compare_emitted.
1420         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
1421
1422 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
1423
1424         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
1425         Add t-sysroot-suffix to tmake_file.
1426         * config/print-sysroot-suffix.sh: New file.
1427         * config/t-sysroot-suffix: New file.
1428
1429 2009-04-07  Ben Elliston  <bje@au.ibm.com>
1430
1431         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
1432         as the latter produces a warning when the target does not support
1433         infinity.
1434
1435 2009-04-07  Ben Elliston  <bje@au.ibm.com>
1436
1437         * dfp.c: Replace type punning assignments with memcpy throughout.
1438         * Makefile.in (dfp.o-warn): Remove.
1439         
1440 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
1441
1442         PR target/39634
1443         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
1444         Include soft-fp/t-softfp after rs6000/t-linux64.
1445
1446 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
1447
1448         * stor-layout.c (set_sizetype): Use the full precision of their
1449         machine mode for bitsize types.
1450
1451 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
1452
1453         * config/i386/i386.md: Revert 2 accidental checkins.
1454
1455 2009-04-06  Joey Ye  <joey.ye@intel.com>
1456             Xuepeng Guo <xuepeng.guo@intel.com>
1457             H.J. Lu  <hongjiu.lu@intel.com>
1458
1459         Atom pipeline model, tuning and insn selection.
1460         * config.gcc (atom): Add atom config options and target.
1461
1462         * config/i386/atom.md: New.
1463
1464         * config/i386/i386.c (atom_cost): New cost.
1465         (m_ATOM): New macro flag.
1466         (initial_ix86_tune_features): Set m_ATOM.
1467         (x86_accumulate_outgoing_args): Likewise.
1468         (x86_arch_always_fancy_math_387): Likewise.
1469         (processor_target): Add Atom cost.
1470         (cpu_names): Add Atom cpu name.
1471         (override_options): Set Atom ISA.
1472         (ix86_issue_rate): New case PROCESSOR_ATOM.
1473         (ix86_adjust_cost): Likewise.
1474
1475         * config/i386/i386.h (TARGET_ATOM): New target macro.
1476         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
1477         (TARGET_OPT_AGU): New target option.
1478         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
1479         (processor_type): Add PROCESSOR_ATOM.
1480
1481         * config/i386/i386.md (cpu): Add new value "atom".
1482         (use_carry, movu): New attr.
1483         (atom.md): Include atom.md.
1484         (adddi3_carry_rex64): Set attr "use_carry".
1485         (addqi3_carry): Likewise.
1486         (addhi3_carry): Likewise.
1487         (addsi3_carry): Likewise.
1488         (*addsi3_carry_zext): Likewise.
1489         (subdi3_carry_rex64): Likewise.
1490         (subqi3_carry): Likewise.
1491         (subhi3_carry): Likewise.
1492         (subsi3_carry): Likewise.
1493         (x86_movdicc_0_m1_rex64): Likewise.
1494         (*x86_movdicc_0_m1_se): Likewise.
1495         (x86_movsicc_0_m1): Likewise.
1496         (*x86_movsicc_0_m1_se): Likewise.
1497         (*adddi_1_rex64): Emit add insn as much as possible.
1498         (*addsi_1): Likewise.
1499         (return_internal): Set atom_unit.
1500         (return_internal_long): Likewise.
1501         (return_pop_internal): Likewise.
1502         (*rcpsf2_sse): Set atom_sse_attr attr.
1503         (*qrt<mode>2_sse): Likewise.
1504         (*prefetch_sse): Likewise.
1505
1506         * config/i386/i386-c.c (ix86_target_macros_internal): New case
1507         PROCESSOR_ATOM.
1508         (ix86_target_macros_internal): Likewise.
1509
1510         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
1511         (*prefetch_sse_rex): Likewise.
1512         (sse_rcpv4sf2): Likewise.
1513         (sse_vmrcpv4sf2): Likewise.
1514         (sse_sqrtv4sf2): Likewise.
1515         (<sse>_vmsqrt<mode>2): Likewise.
1516         (sse_ldmxcsr): Likewise.
1517         (sse_stmxcsr): Likewise.
1518         (*sse_sfence): Likewise.
1519         (sse2_clflush): Likewise.
1520         (*sse2_mfence): Likewise.
1521         (*sse2_lfence): Likewise.
1522         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
1523         (<sse>_movup<ssemodesuffixf2c>): Likewise.
1524         (avx_movdqu<avxmodesuffix>): Likewise.
1525         (avx_lddqu<avxmodesuffix>): Likewise.
1526         (sse2_movntv2di): Change attr "type" to "ssemov".
1527         (sse2_movntsi): Likewise.
1528         (rsqrtv8sf2): Change attr "type" to "sseadd".
1529         (sse3_addsubv2df3): Set attr "atom_unit".
1530         (sse3_h<plusminus_insn>v4sf3): Likewise.
1531         (*sse2_pmaddwd): Likewise.
1532         (*vec_extractv2di_1_rex64): Likewise.
1533         (*vec_extractv2di_1_avx): Likewise.
1534         (sse2_psadbw): Likewise.
1535         (ssse3_phaddwv8hi3): Likewise.
1536         (ssse3_phaddwv4hi3): Likewise.
1537         (ssse3_phadddv4si3): Likewise.
1538         (ssse3_phadddv2si3): Likewise.
1539         (ssse3_phaddswv8hi3): Likewise.
1540         (ssse3_phaddswv4hi3): Likewise.
1541         (ssse3_phsubwv8hi3): Likewise.
1542         (ssse3_phsubwv4hi3): Likewise.
1543         (ssse3_phsubdv4si3): Likewise.
1544         (ssse3_phsubdv2si3): Likewise.
1545         (ssse3_phsubswv8hi3): Likewise.
1546         (ssse3_phsubswv4hi3): Likewise.
1547         (ssse3_pmaddubsw128): Likewise.
1548         (sse3_pmaddubsw: Likewise.
1549         (ssse3_palignrti): Likewise.
1550         (ssse3_palignrdi): Likewise.
1551
1552 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
1553
1554         * doc/install.texi (Specific): Fix two cross-references to MinGW.
1555
1556 2009-04-06  Richard Guenther  <rguenther@suse.de>
1557
1558         PR tree-optimization/28868
1559         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
1560         of which PHI results we inserted.
1561         (insert_into_preds_of_block): Record inserted PHIs.
1562         (eliminate): Eliminate redundant PHI nodes.
1563         (init_pre): Init inserted_phi_names.
1564
1565 2009-04-06  Richard Guenther  <rguenther@suse.de>
1566
1567         PR tree-optimization/39643
1568         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
1569         IMAGPART_EXPRs of complex constants.
1570         (execute_fold_all_builtins): If we folded a call queue
1571         TODO_update_address_taken.
1572
1573 2009-04-06  Jan Hubicka  <jh@suse.cz>
1574
1575         PR middle-end/39659
1576         * except.c (remove_unreachable_regions): Propagate may_contain_throw
1577         flag.
1578
1579 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
1580
1581         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
1582         delay slot.
1583         (ic_invalidate_array): Likewise.
1584
1585 2009-04-06  Hariharan Sandanagobalane <hariharan@picochip.com>
1586
1587         * calls.c (emit_library_call_value_1): Fix a problem with parameter
1588         alignment for library calls.
1589
1590 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
1591
1592         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
1593         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
1594         * config/i386/mingw-stdint.h:  New file.
1595
1596 2009-04-05  Richard Guenther  <rguenther@suse.de>
1597
1598         PR tree-optimization/39648
1599         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
1600         our &A vs. &A[0] IL deficiencies.
1601
1602 2009-04-04  Jan Hubicka  <jh@suse.cz>
1603
1604         * except.c (sjlj_find_directly_reachable_regions): Be ready for
1605         removed toplevel regions.
1606         (sjlj_mark_call_sites): Likewise.
1607
1608 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
1609
1610         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
1611         (cygwin tm clause use_gcc_stdint):  Set to wrap.
1612         * config/i386/cygwin-stdint.h:  New file.
1613
1614 2009-04-04  Richard Guenther  <rguenther@suse.de>
1615
1616         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
1617         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
1618         single-argument PHIs if we are in loop-closed SSA form.
1619         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
1620         for the pre-condition.
1621         (slpeel_tree_peel_loop_to_edge): Likewise.
1622         (vect_build_loop_niters): Take an optional sequence to append stmts.
1623         (vect_generate_tmps_on_preheader): Likewise.
1624         (vect_do_peeling_for_loop_bound): Take extra guards for the
1625         pre-condition.
1626         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
1627         the cost model check.
1628         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
1629         guards if we are going to peel.  Do not apply versioning in that case.
1630         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
1631         (vect_do_peeling_for_loop_bound): Likewise.
1632         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
1633         loop bound only record extra pre-conditions, do not apply loop
1634         versioning.
1635
1636 2009-04-04  Richard Guenther  <rguenther@suse.de>
1637
1638         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
1639         renaming code.
1640
1641 2009-04-04  Jan Hubicka  <jh@suse.cz>
1642
1643         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
1644         last_basic_block for size of bb->index indexed array.
1645         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
1646         compute_out, link_btr_uses, build_btr_def_use_webs,
1647         build_btr_def_use_webs, migrate_btr_defs): Likewise.
1648
1649 2009-04-04  Jan Hubicka  <jh@suse.cz>
1650
1651         * except.c (remove_eh_handler_and_replace): Break out from ...
1652         (remove_eh_handler): ... here.
1653         (bring_to_root): New function.
1654         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
1655         handled ones, bring others to root of tree.
1656
1657 2009-04-04  Jan Hubicka  <jh@suse.cz>
1658
1659         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
1660         (all_phis_safe_to_merge): New function.
1661         (update_info): New structure.
1662         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
1663         (cleanup_empty_eh): Update SSA if possible.
1664
1665 2009-04-04  Richard Guenther  <rguenther@suse.de>
1666
1667         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
1668         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
1669         (append_vuse): Likewise.
1670
1671 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
1672
1673         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
1674         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
1675         instead of REG_UNSAVED for DW_CFA_undefined.
1676         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
1677         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
1678         outermost frame.
1679
1680 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
1681
1682         PR target/39501
1683         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
1684         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
1685         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
1686
1687 2009-04-04  Richard Guenther  <rguenther@suse.de>
1688
1689         PR tree-optimization/8781
1690         PR tree-optimization/37892
1691         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
1692         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
1693         (valueize_refs): Call it for *& valueizations.
1694         (shared_reference_ops_from_ref): Rename to ...
1695         (valueize_shared_reference_ops_from_ref): ... this and valueize.
1696         (shared_reference_ops_from_call): Rename to ...
1697         (valueize_shared_reference_ops_from_call): ... this and valueize.
1698         (vn_reference_lookup): Update.
1699         (visit_reference_op_call): Likewise.
1700         * tree-ssa-pre.c (phi_translate_1): Fold *&.
1701         (eliminate): Value-replace the call address in call statements.
1702
1703 2009-04-04  Richard Guenther  <rguenther@suse.de>
1704
1705         PR tree-optimization/39636
1706         * tree-ssa-forwprop.c
1707         (forward_propagate_addr_into_variable_array_index): Check for
1708         GIMPLE_ASSIGN before accessing the rhs code.
1709
1710 2009-04-03  Jason Merrill  <jason@redhat.com>
1711
1712         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
1713
1714 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
1715
1716         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
1717         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
1718         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
1719         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
1720         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
1721         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
1722         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
1723         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
1724         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
1725         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
1726         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
1727         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
1728         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
1729         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
1730         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
1731         Use fr_reg_or_fp01_operand instead of fr_register_operand
1732
1733         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
1734         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
1735         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
1736
1737 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
1738
1739         PR rtl-optimization/39607
1740         PR rtl-optimization/39631
1741
1742         Revert:
1743         
1744         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
1745         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
1746         instead of DF_LR_OUT.
1747         * ira-lives.c (process_bb_node_lives): Ditto.
1748         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
1749         instead of DF_LR_{OUT,IN}.
1750         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
1751         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
1752
1753 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
1754
1755         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
1756         (execute_lower_omp): Always run but take the short way out if -fopenmp
1757         is not given.
1758         (gate_lower_omp): Remove, forcing the pass manager to always run the
1759         pass and always set PROP_gimple_lomp.
1760         (pass_lower_omp): Remove gate function.
1761         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
1762         PROP_trees.  Instead, require it.
1763         * ipa-cp.c (pass_ipa_cp): Likewise.
1764         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
1765         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
1766         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
1767         and PROP_gimple_leh.
1768
1769 2009-04-03  Richard Guenther  <rguenther@suse.de>
1770
1771         PR middle-end/13146
1772         PR tree-optimization/23940
1773         PR tree-optimization/33237
1774         PR middle-end/33974
1775         PR middle-end/34093
1776         PR tree-optimization/36201
1777         PR tree-optimization/36230
1778         PR tree-optimization/38049
1779         PR tree-optimization/38207
1780         PR tree-optimization/38230
1781         PR tree-optimization/38301
1782         PR tree-optimization/38585
1783         PR middle-end/38895
1784         PR tree-optimization/38985
1785         PR tree-optimization/39299
1786         * tree-ssa-structalias.h: Remove.
1787         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
1788         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
1789         (struct vuse_element_d): Remove.
1790         (struct vuse_vec_d): Likewise.
1791         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
1792         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
1793         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
1794         VUSE_ELEMENT_VAR): Likewise.
1795         (struct voptype_d): Likewise.
1796         (NUM_VOP_FREE_BUCKETS): Likewise.
1797         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
1798         (struct stmt_operands_d): Remove.
1799         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
1800         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
1801         VDEF_NUM, VDEF_VECT): Likewise.
1802         (copy_virtual_operands): Remove.
1803         (operand_build_cmp): Likewise.
1804         (create_ssa_artificial_load_stmt): Likewise.
1805         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
1806         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
1807         vuse_index and mayuse_index members.  Pack and move done and iter_type
1808         members to the front.
1809         (SSA_OP_VMAYUSE): Remove.
1810         (SSA_OP_VIRTUAL_USES): Adjust.
1811         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
1812         (unlink_stmt_vdef): Declare.
1813         (add_to_addressable_set): Remove.
1814         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
1815         (vrp_visit_stmt): Likewise.
1816         * doc/tree-ssa.texi (Alias analysis): Update.
1817         * doc/invoke.texi (max-aliased-vops): Remove docs.
1818         (avg-aliased-vops): Likewise.
1819         * tree-into-ssa.c (syms_to_rename): Remove.
1820         (need_to_update_vops_p): Likewise.
1821         (need_to_initialize_update_ssa_p): Rename to ...
1822         (update_ssa_initialized_fn): ... this.  Track function we are
1823         initialized for.
1824         (symbol_marked_for_renaming): Simplify.
1825         (add_new_name_mapping): Do not set need_to_update_vops_p.
1826         (dump_currdefs): Use SYMS_TO_RENAME.
1827         (rewrite_update_stmt): Always walk all uses/defs.
1828         (dump_update_ssa): Adjust.
1829         (init_update_ssa): Take function argument.  Track what we are
1830         initialized for.
1831         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
1832         (create_new_def_for): Initialize for cfun, assert we are initialized
1833         for cfun.
1834         (mark_sym_for_renaming): Simplify.
1835         (mark_set_for_renaming): Do not initialize update-ssa.
1836         (need_ssa_update_p): Simplify.  Take function argument.
1837         (name_mappings_registered_p): Assert we ask for the correct function.
1838         (name_registered_for_update_p): Likewise.
1839         (ssa_names_to_replace): Likewise.
1840         (release_ssa_name_after_update_ssa): Likewise.
1841         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
1842         (dump_decl_set): Do not print a newline.
1843         (debug_decl_set): Do it here.
1844         (dump_update_ssa): And here.
1845         * tree-ssa-loop-im.c (move_computations): Adjust.
1846         (movement_possibility): Likewise.
1847         (determine_max_movement): Likewise.
1848         (gather_mem_refs_stmt): Likewise.
1849         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
1850         or NAME_MEMORY_TAG.
1851         * tree-complex.c (update_all_vops): Remove.
1852         (expand_complex_move): Adjust.
1853         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
1854         Simplify test for memory referencing statement.  Exclude
1855         non-invariant ADDR_EXPRs.
1856         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
1857         * tree-loop-distribution.c (generate_memset_zero): Adjust.
1858         (rdg_flag_uses): Likewise.
1859         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
1860         related code.
1861         (tree_optimize_tail_calls_1): Also split the
1862         edge from the entry block if we have degenerate PHI nodes in
1863         the first basic block.
1864         * tree.c (init_ttree): Remove memory-tag related code.
1865         (tree_code_size): Likewise.
1866         (tree_node_structure): Likewise.
1867         (build7_stat): Re-write to be build6_stat.
1868         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
1869         (SSA_VAR_P): Adjust.
1870         (struct tree_memory_tag): Remove.
1871         (struct tree_memory_partition_tag): Likewise.
1872         (union tree_node): Adjust.
1873         (build7): Re-write to be build6.
1874         * tree-pass.h (pass_reset_cc_flags): Remove.
1875         (TODO_update_address_taken): New flag.
1876         (pass_simple_dse): Remove.
1877         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
1878         * params.h (MAX_ALIASED_VOPS): Remove.
1879         (AVG_ALIASED_VOPS): Likewise.
1880         * omp-low.c (expand_omp_taskreg): Update SSA form.
1881         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
1882         aliases the lhs in a copy stmt.
1883         * tree-ssa-dse.c (struct address_walk_data): Remove.
1884         (memory_ssa_name_same): Likewise.
1885         (memory_address_same): Likewise.
1886         (get_kill_of_stmt_lhs): Likewise.
1887         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
1888         unused stores.  Look through PHI nodes into post-dominated regions.
1889         (dse_optimize_stmt): Simplify.  Properly remove stores.
1890         (tree_ssa_dse): Compute dominators.
1891         (execute_simple_dse): Remove.
1892         (pass_simple_dse): Likewise.
1893         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
1894         gimple_loaded_syms and gimple_stored_syms computation.
1895         * toplev.c (dump_memory_report): Dump alias and pta stats.
1896         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
1897         (vn_reference_eq): Likewise.
1898         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
1899         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
1900         valueize_vuses): Remove.
1901         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
1902         (get_def_ref_stmt_vuse): ... this.
1903         (vn_reference_lookup_2): New function.
1904         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
1905         walking equivalent vuses.  Simplify.
1906         (vn_reference_lookup): Likewise.
1907         (vn_reference_insert): Likewise.
1908         (vn_reference_insert_pieces): Likewise.
1909         (visit_reference_op_call): Simplify.
1910         (visit_reference_op_load): Likewise.
1911         (visit_reference_op_store): Likewise.
1912         (init_scc_vn): Remove shared_lookup_vuses initialization.
1913         (free_scc_vn): Remove shared_lookup_vuses freeing.
1914         (sort_vuses, sort_vuses_heap): Remove.
1915         (get_ref_from_reference_ops): Export.
1916         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
1917         vector with single vuse pointer.
1918         (vn_reference_lookup_pieces, vn_reference_lookup,
1919         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
1920         (shared_vuses_from_stmt): Remove.
1921         (get_ref_from_reference_ops): Declare.
1922         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
1923         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1924         memory-tag related code.
1925         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
1926         (likely_value): Add comment, skip static-chain of call statements.
1927         (surely_varying_stmt_p): Adjust.
1928         (gimplify_and_update_call_from_tree): Likewise.
1929         (execute_fold_all_builtins): Do not rebuild alias info.
1930         (gimplify_and_update_call_from_tree): Properly update VOPs.
1931         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
1932         (copy_ref_info): Remove memory-tag related code.
1933         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
1934         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
1935         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
1936         computation.
1937         * tree-ssa-dom.c (gimple_p): Remove typedef.
1938         (eliminate_redundant_computations): Adjust.
1939         (record_equivalences_from_stmt): Likewise.
1940         (avail_expr_hash): Likewise.
1941         (avail_expr_eq): Likewise.
1942         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
1943         (stmt_makes_single_load): Likewise.
1944         (stmt_makes_single_store): Likewise.
1945         * tree-ssa-alias.c: Rewrite completely.
1946         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
1947         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
1948         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
1949         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
1950         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
1951         Remove public functions.
1952         (pass_reset_cc_flags): Remove.
1953         (pass_build_alias): Move ...
1954         * tree-ssa-structalias.c (pass_build_alias): ... here.
1955         * tree-ssa-alias.c (may_be_aliased): Move ...
1956         * tree-flow-inline.h (may_be_aliased): ... here.
1957         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
1958         count_uses_and_derefs): Move ...
1959         * gimple.c: ... here.
1960         * gimple.h (count_uses_and_derefs): Declare.
1961         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
1962         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
1963         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
1964         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
1965         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
1966         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
1967         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
1968         New functions.
1969         * tree-dfa.c (refs_may_alias_p): Move ...
1970         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
1971         * tree-ssa-alias.h: New file.
1972         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
1973         (statement_sink_location): Likewise.
1974         * opts.c (decode_options): Do not adjust max-aliased-vops or
1975         avg-aliased-vops values.
1976         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
1977         (TV_CALL_CLOBBER): Likewise.
1978         (TV_FLOW_SENSITIVE): Likewise.
1979         (TV_FLOW_INSENSITIVE): Likewise.
1980         (TV_MEMORY_PARTITIONING): Likewise.
1981         (TV_ALIAS_STMT_WALK): New timevar.
1982         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
1983         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
1984         (get_address_description): Remove memory-tag related code.
1985         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
1986         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
1987         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
1988         and immediate uses in statements.  Document.
1989         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
1990         (dump_symbols): Remove.
1991         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
1992         * alias.c (get_deref_alias_set): New function split out from ...
1993         (get_alias_set): ... here.
1994         * alias.h (get_deref_alias_set): Declare.
1995         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
1996         type parameter.  Remove restrict pointer handling.  Create a
1997         ref-all pointer in case type-based alias sets do not conflict.
1998         (vect_analyze_data_refs): Remove SMT related code.
1999         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
2000         (vectorizable_load): Likewise.
2001         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
2002         (DR_SYMBOL_TAG, DR_VOPS): Remove.
2003         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
2004         Ignore vops and SMTs.
2005         (dr_analyze_alias): Likewise..
2006         (free_data_ref): Likewise.
2007         (create_data_ref): Likewise.
2008         (analyze_all_data_dependences): Likewise.
2009         (get_references_in_stmt): Adjust.
2010         * tree-flow-inline.h (gimple_aliases_computed_p,
2011         gimple_addressable_vars, gimple_call_clobbered_vars,
2012         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
2013         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
2014         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
2015         gimple_mem_ref_stats): Remove.
2016         (gimple_vop): New function.
2017         (op_iter_next_use): Remove vuses and mayuses cases.
2018         (op_iter_next_def): Remove vdefs case.
2019         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
2020         (clear_and_done_ssa_iter): Do not set removed fields.
2021         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
2022         Assert we are not iterating over vuses or vdefs if not also
2023         iterating over uses or defs.
2024         (op_iter_init_use): Likewise.
2025         (op_iter_init_def): Likewise.
2026         (op_iter_next_vdef): Remove.
2027         (op_iter_next_mustdef): Likewise.
2028         (op_iter_init_vdef): Likewise.
2029         (compare_ssa_operands_equal): Likewise.
2030         (link_use_stmts_after): Handle vuse operand.
2031         (is_call_used): Use is_call_clobbered.
2032         (is_call_clobbered): Global variables are always call clobbered,
2033         query the call-clobbers bitmap.
2034         (mark_call_clobbered): Ignore global variables.
2035         (clear_call_clobbered): Likewise.
2036         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
2037         virtual operands sanity check.
2038         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
2039         Remove.
2040         (TARGET_MEM_REF): Remove TMR_TAG operand.
2041         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
2042         Remove call-clobber related code.
2043         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
2044         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
2045         partitions or escape reason.
2046         (get_single_def_stmt, get_single_def_stmt_from_phi,
2047         get_single_def_stmt_with_phi): Remove.
2048         (dump_referenced_vars): Tidy.
2049         (get_ref_base_and_extent): Allow bare decls.
2050         (collect_dfa_stats): Adjust.
2051         * graphite.c (rename_variables_in_stmt): Adjust.
2052         (graphite_copy_stmts_from_block): Likewise.
2053         (translate_clast): Likewise.
2054         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
2055         (EXPR_DIES): New.
2056         (translate_vuse_through_block): Use the oracle.
2057         (phi_translate_1): Adjust.
2058         (value_dies_in_block_x): Use the oracle.  Cache the outcome
2059         in EXPR_DIES.
2060         (valid_in_sets): Check if the VUSE for
2061         a REFERENCE is available.
2062         (eliminate): Do not remove stmts during elimination,
2063         instead queue and remove them afterwards.
2064         (do_pre): Do not rebuild alias info.
2065         (pass_pre): Run TODO_rebuild_alias before PRE.
2066         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
2067         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
2068         (mark_all_v_defs_stmt): Remove.
2069         (mark_all_v_defs_seq): Adjust.
2070         (sra_replace): Likewise.
2071         (scalarize_use): Likewise.
2072         (scalarize_copy): Likewise.
2073         (scalarize_init): Likewise.
2074         (scalarize_ldst): Likewise.
2075         (todoflags): Remove.
2076         (tree_sra): Do not rebuild alias info.
2077         (tree_sra_early): Adjust.
2078         (pass_sra): Run TODO_update_address_taken before SRA.
2079         * tree-predcom.c (set_alias_info): Remove.
2080         (prepare_initializers_chain): Do not call it.
2081         (mark_virtual_ops_for_renaming): Adjust.
2082         (mark_virtual_ops_for_renaming_list): Remove.
2083         (initialize_root_vars): Adjust.
2084         (initialize_root_vars_lm): Likewise.
2085         (prepare_initializers_chain): Likewise.
2086         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
2087         (may_propagate_copy_into_stmt): Likewise.
2088         (merge_alias_info): Do nothing for now.
2089         (propagate_tree_value_into_stmt): Adjust.
2090         (stmt_may_generate_copy): Likewise.
2091         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
2092         not mark symbols for renaming.
2093         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
2094         with the same statement, make sure to update the new pointed-to one.
2095         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
2096         call statements, do not mark symbols for renaming.
2097         (mark_operand_necessary): Dump something.
2098         (ref_may_be_aliased): New function.
2099         (mark_aliased_reaching_defs_necessary_1): New helper function.
2100         (mark_aliased_reaching_defs_necessary): Likewise.
2101         (mark_all_reaching_defs_necessary_1): Likewise.
2102         (mark_all_reaching_defs_necessary): Likewise.
2103         (propagate_necessity): Do not process virtual PHIs.  For
2104         non-aliased loads mark all reaching definitions as necessary.
2105         For aliased loads and stores mark the immediate dominating
2106         aliased clobbers as necessary.
2107         (visited): New global static.
2108         (perform_tree_ssa_dce): Free visited bitmap after propagating
2109         necessity.
2110         (remove_dead_phis): Perform simple dead virtual PHI removal.
2111         (remove_dead_stmt): Properly unlink virtual operands when
2112         removing stores.
2113         (eliminate_unnecessary_stmts): Schedule PHI removal after
2114         stmt removal.
2115         * tree-ssa-ter.c (is_replaceable_p): Adjust.
2116         (process_replaceable): Likewise.
2117         (find_replaceable_in_bb): Likewise.
2118         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
2119         based on the single gimple vop.
2120         (verify_flow_insensitive_alias_info): Remove.
2121         (verify_flow_sensitive_alias_info): Likewise.
2122         (verify_call_clobbering): Likewise.
2123         (verify_memory_partitions): Likewise.
2124         (verify_alias_info): Likewise.
2125         (verify_ssa): Adjust..
2126         (execute_update_addresses_taken): Export.  Update SSA
2127         manually.  Optimize only when optimizing.  Use a local bitmap.
2128         (pass_update_address_taken): Remove TODO_update_ssa, add
2129         TODO_dump_func.
2130         (pass_update_address_taken): Just use TODO_update_address_taken.
2131         (init_tree_ssa): Do not initialize addressable_vars.
2132         (verify_ssa): Verify new VUSE / VDEF properties.
2133         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
2134         Do not call verify_alias_info.
2135         (delete_tree_ssa): Clear the VUSE, VDEF operands.
2136         Do not free the loaded and stored syms bitmaps.  Reset the escaped
2137         and callused solutions.  Do not free addressable_vars.
2138         Remove memory-tag related code.
2139         (warn_uninitialized_var): Aliases are always available.
2140         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
2141         * lambda-code.c (can_put_in_inner_loop): Adjust.
2142         (can_put_after_inner_loop): Likewise.
2143         (perfect_nestify): Likewise.
2144         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
2145         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
2146         (vectorizable_conversion): Do not mark symbols for renaming.
2147         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
2148         (expand_call_inline): Unlink the calls virtual operands before
2149         replacing it.
2150         (tree_function_versioning): Do not call update_ssa if we are not
2151         updating clones.  Simplify.
2152         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
2153         (propagate_with_phi): Likewise..
2154         * tree-outof-ssa.c (create_temp): Remove memory tag and call
2155         clobber code.  Assert we are not aliased or global.
2156         * tree-flow.h: Include tree-ssa-alias.h
2157         (enum escape_type): Remove.
2158         (struct mem_sym_stats_d): Likewise.
2159         (struct mem_ref_stats_d): Likewise.
2160         (struct gimple_df): Add vop member.  Remove global_var,
2161         call_clobbered_vars, call_used_vars, addressable_vars,
2162         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
2163         escaped and callused members.
2164         (struct ptr_info_def): Remove all members, add points-to solution
2165         member pt.
2166         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
2167         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
2168         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
2169         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
2170         (tree-ssa-alias.o): Likewise.
2171         (toplev.o): Add tree-ssa-alias.h
2172         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
2173         * gimple.c (gimple_set_bb): Fix off-by-one error.
2174         (is_gimple_reg): Do not handle memory tags.
2175         (gimple_copy): Also copy virtual operands.
2176         Delay updating the statement.  Do not reset loaded and stored syms.
2177         (gimple_set_stored_syms): Remove.
2178         (gimple_set_loaded_syms): Likewise.
2179         (gimple_call_copy_skip_args): Copy the virtual operands
2180         and mark the new statement modified.
2181         * tree-ssa-structalias.c (may_alias_p): Remove.
2182         (set_uids_in_ptset): Take the alias set to prune with as
2183         parameter.  Fold in the alias test of may_alias_p.
2184         (compute_points_to_sets): Compute whether a ptr is dereferenced
2185         in a local sbitmap.
2186         (process_constraint): Deal with &ANYTHING on the lhs, reject all
2187         other ADDRESSOF constraints on the lhs.
2188         (get_constraint_for_component_ref): Assert that we don't get
2189         ADDRESSOF constraints from the base of the reference.
2190         Properly generate UNKNOWN_OFFSET for DEREF if needed.
2191         (struct variable_info): Remove collapsed_to member.
2192         (get_varinfo_fc): Remove.
2193         (new_var_info): Do not set collapsed_to.
2194         (dump_constraint): Do not follow cycles.
2195         (dump_constraint_graph): Likewise.
2196         (build_pred_graph): Likewise.
2197         (build_succ_graph): Likewise.
2198         (rewrite_constraints): Likewise.
2199         (do_simple_structure_copy): Remove.
2200         (do_rhs_deref_structure_copy): Remove.
2201         (do_lhs_deref_structure_copy): Remove.
2202         (collapse_rest_of_var): Remove.
2203         (do_structure_copy): Re-implement.
2204         (pta_stats): New global variable.
2205         (dump_pta_stats): New function.
2206         (struct constraint_expr): Make offset signed.
2207         (UNKNOWN_OFFSET): Define special value.
2208         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
2209         (solution_set_expand): New helper function split out from ...
2210         (do_sd_constraint): ... here.
2211         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
2212         (do_ds_constraint): Likewise.
2213         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
2214         and CALLUSED = *CALLUSED.
2215         (set_union_with_increment): Make inc argument signed.
2216         (type_safe): Remove.
2217         (get_constraint_for_ptr_offset): Handle unknown and negative
2218         constant offsets.
2219         (first_vi_for_offset): Handle offsets before start.  Bail
2220         out early for offsets beyond the variable extent.
2221         (first_or_preceding_vi_for_offset): New function.
2222         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
2223         Together with ESCAPED = *ESCAPED this properly computes reachability.
2224         (find_what_var_points_to): New function.
2225         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
2226         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
2227         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
2228         pt_solutions_intersect): New functions.
2229         (compute_call_used_vars): Remove.
2230         (compute_may_aliases): New main entry into PTA computation.
2231         * gimple.h (gimple_p): New typedef.
2232         (struct gimple_statement_base): Remove references_memory_p.
2233         (struct gimple_statement_with_memory_ops_base): Remove
2234         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
2235         members.
2236         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
2237         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
2238         gimple_set_references_memory): Remove.
2239         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
2240         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
2241         New functions.
2242         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
2243         (verify_expr): Allow RESULT_DECL.
2244         (gimple_duplicate_bb): Do not copy virtual operands.
2245         (gimple_duplicate_sese_region): Adjust.
2246         (gimple_duplicate_sese_tail): Likewise.
2247         (mark_virtual_ops_in_region): Remove.
2248         (move_sese_region_to_fn): Do not call it.
2249         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
2250         and pass_simple_dse.
2251         (execute_function_todo): Handle TODO_update_address_taken,
2252         call execute_update_addresses_taken for TODO_rebuild_alias.
2253         (execute_todo): Adjust.
2254         (execute_one_pass): Init dump files early.
2255         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
2256         call-clobbered.
2257         (create_general_new_stmt): Clear vops.
2258         * tree-ssa-reassoc.c (get_rank): Adjust.
2259         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
2260         symbols for renaming.
2261         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
2262         (PARAM_AVG_ALIASED_VOPS): Likewise.
2263         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
2264         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
2265         * tree-ssa-operands.c: Simplify for new virtual operand representation.
2266         (operand_build_cmp, copy_virtual_operands,
2267         create_ssa_artificial_load_stmt, add_to_addressable_set,
2268         gimple_add_to_addresses_taken): Remove public functions.
2269         (unlink_stmt_vdef): New function.
2270
2271 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
2272
2273         * config.gcc (powerpc-*-linux*): Merge variants.
2274
2275 2009-04-02  Chao-ying Fu  <fu@mips.com>
2276             James Grosbach <james.grosbach@microchip.com>
2277
2278         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
2279         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
2280         cop0_sp_offset.
2281         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
2282         keep_interrupts_masked_p, use_debug_exception_return_p.
2283         (mips_attribute_table): Add interrupt, use_shadow_register_set,
2284         keep_interrupts_masked, use_debug_exception_return.
2285         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
2286         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
2287         New functions.
2288         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
2289         (mips_print_operand): Process COP0 registers to print $0 .. $31
2290         correctly for GAS to process.
2291         (mips_interrupt_extra_call_saved_reg_p): New function.
2292         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
2293         extra registers.
2294         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
2295         (mips_compute_frame_info): Add supports for interrupt context that
2296         includes doubleword accumulators and COP0 registers.
2297         (mips_for_each_saved_acc): New function.
2298         (mips_for_each_saved_gpr_and_fpr): Change the function name from
2299         mips_for_each_saved_reg.
2300         (mips_save_reg): Save accumulators.
2301         (mips_kernel_reg_p): A new for_each_rtx callback.
2302         (mips_expand_prologue): Support interrupt handlers.
2303         (mips_restore_reg): Restore accumulators.
2304         (mips_expand_epilogue): Support interrupt handlers.
2305         (mips_can_use_return_insn): Return false for interrupt handlers.
2306         (mips_epilogue_uses): New function.
2307         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
2308         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
2309         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
2310         cop0_move): New instructions.
2311         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
2312         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
2313         defines.
2314         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
2315         New defines.
2316         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
2317         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
2318         interrupt handlers, we use K0 as the temporary register.
2319         (EPILOGUE_USES): Change to a function call.
2320         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
2321         handlers, we use K0 as the temporary register.
2322         
2323         * doc/extend.texi (Function Attributes): Document interrupt,
2324         use_shadow_register_set, keep_interrupts_masked,
2325         use_debug_exception_return for MIPS attributes.
2326
2327 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
2328
2329         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
2330         Remove a number of t-files from tmake_file.
2331         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
2332         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
2333         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
2334         target_prototype, not TARGET_PROTOTYPE.
2335         (LINK_OS_GNU_SPEC): Define.
2336         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
2337         and darwin-ldoubdle.c.
2338
2339 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
2340
2341         PR driver/39293
2342         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
2343         (cpp_options): Ditto.
2344         (default_compilers): Ditto.
2345         (display_help): Ditto.
2346         (process_command): Ditto.
2347         (do_spec_1): Ditto.
2348         (set_input): Use lbasename instead of duplicate code.
2349         (save_temps_prefix): New static for -save-temps=obj.
2350         (save_temps_length): Ditto.
2351         
2352         * doc/invoke.texi (-save-temps=obj): Document new variant to
2353         -save-temps switch.
2354
2355 2009-04-02  Jeff Law  <law@redhat.com>
2356
2357         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
2358         variable.
2359
2360 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
2361
2362         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
2363         * configure: Regenerated.
2364
2365 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
2366
2367         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
2368         share the argument list.
2369
2370 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
2371
2372         Merge
2373
2374         2009-02-12  Diego Novillo  <dnovillo@google.com>
2375
2376         * varpool.c (debug_varpool): New.
2377         * cgraph.h (debug_varpool): Declare.
2378
2379 2009-04-02  Jan Hubicka  <jh@suse.cz>
2380
2381         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
2382         pass.
2383
2384 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
2385
2386         * config/i386/i386.c (ix86_abi): Move initialization to ...
2387         (override_options): Here.
2388
2389 2009-04-02  Christian Bruel  <christian.bruel@st.com>
2390
2391         * config/sh/sh.c (sh_dwarf_register_span): New function.
2392         (TARGET_DWARF_REGISTER_SPAN): Define.
2393         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
2394         
2395 2009-04-02  Ira Rosen  <irar@il.ibm.com>
2396
2397         PR tree-optimization/39595
2398         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of 
2399         interleaved loads group is not  greater than the SLP group size.
2400
2401 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
2402
2403         * builtins.c (is_builtin_name): New.
2404         (called_as_built_in): Use is_builtin_name.
2405         * tree.h (is_builtin_name): New.
2406         * varasm.c (incorporeal_function_p): Use is_builtin_name
2407
2408 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
2409
2410         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
2411
2412 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
2413
2414         PR c++/26693
2415         * c-decl.c (clone_underlying_type): Move this ...
2416         * c-common.c (set_underlying_type): ... here.
2417         Also, make sure the function properly sets TYPE_STUB_DECL() on
2418         the newly created typedef variant type.
2419         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
2420         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
2421         points.
2422
2423 2009-04-02  Richard Guenther  <rguenther@suse.de>
2424
2425         PR tree-optimization/37221
2426         * tree-flow.h (degenerate_phi_result): Declare.
2427         * tree-ssa-dom.c (degenerate_phi_result): Export.
2428         * tree-scalar-evolution.c (analyze_initial_condition): If
2429         the initial condition is defined by a degenerate PHI node
2430         use the degenerate value.
2431
2432 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
2433
2434         PR rtl-optimization/39588
2435         * combine.c (merge_outer_ops): Do not set the constant when this
2436         is not necessary.
2437         (simplify_shift_const_1): Do not modify it either in this case.
2438
2439 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
2440
2441         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
2442         tuning is deprecated if -mtune value is set to an Itanium1 variant.
2443
2444 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
2445
2446         PR c/29027
2447         * c-lex.c (interpret_float): Default (no suffix) is double.
2448
2449 2009-04-1  Xinliang David Li  <davidxl@google.com>
2450
2451         * config/i386/i386.c (legitimate_constant_p): Recognize
2452         all one vector constant.
2453
2454 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2455
2456         * gcc/config/vax/vax.c: Add #includes to silence warnings.
2457         Change #include order to silence two warnings.
2458
2459 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2460
2461         * gcc/config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
2462         (ASM_SPEC): Pass -k to the assembler for PIC code.
2463
2464 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2465
2466         * gcc/config.gcc: Add vax-*-linux* to the switch.
2467         * gcc/config/vax/linux.h: New file. (TARGET_VERSION,
2468         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
2469
2470 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2471
2472         * gcc/config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
2473         Use predicate macros instead of GET_CODE() == foo.
2474         * gcc/config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
2475         ashlsi3, rotrsi3, <unnamed>): Likewise.
2476
2477 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2478
2479         * gcc/config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
2480         jbbccihi, jbbccisi): Remova trailing whitespace.
2481         * gcc/config/vax/constraints.md: Likewise.
2482         * gcc/config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
2483         * gcc/config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
2484         * gcc/config/vax/predicates.md: Likewise.
2485         * gcc/config/vax/vax.c (print_operand_address, vax_output_int_move,
2486         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
2487         * gcc/config/vax/vax.h: Likewise.
2488         * gcc/config/vax/vax.md (nonlocal_goto): Likewise.
2489
2490 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2491
2492         * gcc/config/vax/vax.c (vax_float_literal, vax_output_int_move)
2493         (indirectable_address_p, adjacent_operands_p): Add spaces around
2494         braces.
2495         * gcc/config/vax/vax-protos.h (adjacent_operands_p): Likewise.
2496
2497 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2498
2499         * gcc/config/vax/vax.c (legitimate_constant_address_p,
2500         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
2501         index_term_p, reg_plus_index_p, legitimate_address_p,
2502         vax_mode_dependent_address_p): Update comments to match functions
2503         modified by the recent int->bool conversion.
2504
2505 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2506
2507         * gcc/config/vax/builtins.md: Update copyright message.
2508         * gcc/config/vax/constraints.md: Likewise.
2509         * gcc/config/vax/netbsd-elf.h: Likewise.
2510         * gcc/config/vax/predicates.md: Likewise.
2511         * gcc/config/vax/vax-protos.h: Likewise.
2512         * gcc/config/vax/vax.c: Likewise.
2513         * gcc/config/vax/vax.h: Likewise.
2514         * gcc/config/vax/vax.md: Likewise.
2515         * gcc/config/vax/vax.opt: Likewise.
2516
2517 2009-04-01  Jan-Benedict Glaw <jbglaw@jbglaw-dev.homezone.telefonica.de>
2518
2519         * gcc/config/vax/builtins.md (ffssi2, ffssi2_internal,
2520         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
2521         * gcc/config/vax/constraints.md (B, R): Likewise.
2522         * gcc/config/vax/predicates.md (external_memory_operand,
2523         nonimmediate_addsub_di_operand): Likewise.
2524         * gcc/config/vax/vax.c (vax_output_int_add): Likewise.
2525         * gcc/config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
2526         untyped_call): Likewise.
2527
2528 2009-04-01  Matt Thomas <matt@3am-software.com>
2529
2530         * config/vax/predicates.md: New file.
2531         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
2532         external_const_operand, nonsymbolic_operand, external_memory_operand,
2533         indirect_memory_operand, indexed_memory_operand,
2534         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
2535         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
2536         predicate.
2537         * config/vax/constraints.md: New file.
2538         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
2539         New constraint.
2540         * config/vax/builtins.md: New file.
2541         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
2542         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
2543         jbbccisi): Define.
2544         * config/vax/vax.opt (mqmath): Add option.
2545         * config/vax/vax.md (isfx): Extend with DI.
2546         (VAXintQH, VAXintQHSD): Define.
2547         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
2548         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
2549         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
2550         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
2551         (movdi): Update constraints and use vax_output_int_move().
2552         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
2553         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
2554         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
2555         nonlocal_goto): New.
2556         (mov<mode>): Extend accepted operand types.
2557         (subdi3_old): Rename from subdi3, change update constraints and use
2558         a new implementation.
2559         * gcc/config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
2560         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
2561         MOVE_RATIO, CLEAR_RATIO): Define.
2562         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
2563         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
2564         (PRINT_OPERAND): Redefine using a function instead of inlined code.
2565         * gcc/config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
2566         (split_quadword_operands): Make static and really allow variable
2567         splitting.
2568         (print_operand_address): Update for PIC generation.
2569         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
2570         indexable_address_p, fixup_mathdi_operand,
2571         vax_expand_addsub_di_operands, adjacent_operands_p): New.
2572         (vax_float_literal, legitimate_constant_p,
2573         indirectable_constant_address_p, index_term_p,
2574         reg_plus_index_p): Return bool instead of int.
2575         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
2576         where needed.
2577         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
2578         generation.
2579         (vax_output_conditional_branch): Indent.
2580         (legitimate_constant_address_p, indirectable_constant_address_p,
2581         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
2582         vax_mode_dependent_address_p): Return bool instead of int, update for
2583         PIC generation.
2584         * config/vax/vax-protos.h (legitimate_constant_address_p,
2585         legitimate_constant_p, legitimate_address_p,
2586         vax_mode_dependent_address_p): Change declaration to bool.
2587         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
2588         vax_expand_addsub_di_operands, vax_output_int_subtract,
2589         vax_output_movmemsi): Declare.
2590         (split_quadword_operands, vax_float_literal): Delete declaration.
2591         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
2592         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
2593         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
2594         ASM_OUTPUT_DWARF_PCREL): Define.
2595         (ASM_SPEC): Change definition to allow PIC generation.
2596
2597 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
2598
2599         * doc/sourcebuild.texi: Update front-end requirements.
2600
2601 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
2602
2603         PR target/39226
2604         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
2605         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
2606         (booldi3_internal3): Use boolean_or_operator instead of
2607         boolean_operator.
2608
2609 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
2610
2611         PR c/39605
2612         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
2613         declarator whose size is not an integer constant expression but
2614         folds to an integer constant, then treat it as a constant
2615         subsequently.
2616
2617 2009-04-01  Richard Guenther  <rguenther@suse.de>
2618
2619         * fold-const.c (fold_plusminus_mult_expr): Do not fold
2620         i * 4 + 2 to (i * 2 + 1) * 2.
2621
2622 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
2623
2624         PR c/37772
2625         * c-parser.c (c_parser_asm_statement): Skip until close paren and
2626         return if c_parser_asm_string_literal returned NULL.
2627
2628 2009-04-01  Nick Clifton  <nickc@redhat.com>
2629
2630         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
2631         already defined.
2632         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
2633         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
2634         other typedefs to avoid conflicts with libgcc2.c.  Define labels
2635         to gain 16-bit bit-manipulation functions from libgcc2.c and then
2636         include it.
2637         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
2638         to gain 16-bit trapping arithmetic functions from libgcc2.c and
2639         then include it.
2640
2641 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
2642
2643         * varasm.c (default_function_rodata_section): Declare DOT as
2644         const char*.
2645
2646 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
2647             Andrey Galkin <agalkin@hypercom.com>
2648
2649         PR/39492
2650         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
2651         Make object_name unique for each process.
2652
2653 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
2654
2655         PR other/39591
2656         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
2657         addressable variables in the parallel that could go out of scope while
2658         running queued tasks.
2659
2660 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
2661
2662         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
2663         (CASE_VALUES_THRESHOLD): Redefine.
2664         * config/avr/avr.c (avr_override_options): Remove initialization of
2665         avr_case_values_threshold variable.
2666         (avr_case_values_threshold): Remove variable. Add new function.
2667         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
2668         * config/avr/avr.opt (mno-tablejump): Remove option.
2669         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
2670
2671 2009-04-01  DJ Delorie  <dj@redhat.com>
2672
2673         * varasm.c (default_function_rodata_section): Don't assume
2674         anything about where the first '.' in the section name is.
2675
2676 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
2677
2678         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
2679         rs6000_emit_stack_tie.
2680
2681 2009-03-31  Ian Lance Taylor  <iant@google.com>
2682
2683         * tree-eh.c (tree_remove_unreachable_handlers): Compare
2684         gimple_code with GIMPLE_RESX, not RESX.
2685
2686 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
2687
2688         * c-common.c (c_get_ident): New.
2689         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
2690
2691 2009-04-01  Ben Elliston  <bje@au.ibm.com>
2692
2693         * config/rs6000/sysv4.opt (msdata): Improve option description.
2694
2695 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
2696
2697         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
2698         (divdf3_internal_lat): Remove.
2699         (divxf3_internal_lat): Remove.
2700         (divxf3_internal_thr): Remove.
2701         (divxf): Use divxf3_internal.
2702         * config/ia64/div.md (divsf3_internal_lat): New.
2703         (divdf3_internal_lat): New.
2704         (divxf3_internal): New.
2705
2706 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
2707
2708         PR c/448
2709         * Makefile.in (USE_GCC_STDINT): Define.
2710         (stmp-int-hdrs): Install stdint.h if applicable.
2711         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
2712         if known.
2713         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
2714         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
2715         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
2716         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2717         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2718         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2719         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2720         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2721         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2722         (c_common_nodes_and_builtins): Initialize
2723         underlying_wchar_type_node.  Do not initialize
2724         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
2725         nodes for new types.
2726         (c_stddef_cpp_builtins): Define macros for new types.
2727         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
2728         Remove.
2729         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
2730         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
2731         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
2732         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
2733         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
2734         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
2735         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
2736         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
2737         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
2738         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
2739         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
2740         int16_type_node, int32_type_node, int64_type_node,
2741         uint8_type_node, uint16_type_node, c_uint32_type_node,
2742         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
2743         int_least32_type_node, int_least64_type_node,
2744         uint_least8_type_node, uint_least16_type_node,
2745         uint_least32_type_node, uint_least64_type_node,
2746         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
2747         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
2748         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
2749         uintptr_type_node): Define.
2750         * c-cppbuiltin.c (builtin_define_constants,
2751         builtin_define_type_minmax): New.
2752         (builtin_define_stdint_macros): Define more macros.
2753         (c_cpp_builtins): Define more limit macros.
2754         (type_suffix): New.
2755         (builtin_define_type_max): Define in terms of
2756         builtin_define_type_minmax.  Remove is_long parameter.  All
2757         callers changed.
2758         * config.gcc (use_gcc_stdint): Define.
2759         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
2760         Add newlib-stdint.h for generic targets.
2761         * config/glibc-stdint.h, config/newlib-stdint.h,
2762         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
2763         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
2764         * config/score/score.h (UINTPTR_TYPE): Define.
2765         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2766         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2767         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2768         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2769         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2770         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2771         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2772         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2773         * config/spu/spu.h (STDINT_LONG32): Define.
2774         * configure.ac (use_gcc_stdint): Substitute.
2775         * configure: Regenerate.
2776         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
2777         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
2778         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
2779         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
2780         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
2781         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
2782         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
2783         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
2784         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
2785         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
2786         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
2787         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
2788         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
2789         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
2790         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
2791         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
2792         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
2793         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
2794         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
2795         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
2796         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
2797         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
2798         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
2799         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2800         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2801         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2802         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2803         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2804         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
2805
2806 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
2807
2808         * loop-iv.c (suitable_set_for_replacement): Renamed from
2809         simplify_using_assignment; changed to return bool and to accept new
2810         args DEST and SRC.  Return true iff we find a source/destination pair
2811         that can be used to make a replacement, and fill SRC and DEST if so.
2812         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
2813         changed.
2814         (simplify_using_initial_values): Deal with altered regs here and track
2815         more precisely the effect they have on the validity of our expression.
2816
2817         * loop-iv.c (simplify_using_condition): A condition of the form
2818         (EQ REG CONST) can be used to simply make a substitution.
2819         (simplify_using_initial_values): Keep track of conditions we have seen
2820         and keep using them to simplify new expressions, while applying the
2821         same substitutions to them as to the expression.
2822
2823         * simplify-rtx.c (simplify_relational_operation_1): Simplify
2824         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
2825         GEU/LTU reversed.
2826
2827         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
2828         changed.  Use this when trying to improve the upper bound.
2829         Generate the comparison by using simplify_gen_relational.
2830
2831         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
2832
2833         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
2834         functions.
2835         (simplify_using_assignment, simplify_using_initial_values): Call 
2836         replace_in_expr to make replacements.  Call replace_single_def_regs
2837         once on the initial version of the expression.
2838
2839 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2840
2841         PR target/27237
2842         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
2843         
2844 2009-03-31  Richard Guenther  <rguenther@suse.de>
2845
2846         PR middle-end/31029
2847         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
2848         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
2849
2850 2009-03-31  Richard Guenther  <rguenther@suse.de>
2851
2852         * tree.h (div_if_zero_remainder): Declare.
2853         * fold-const.c (div_if_zero_remainder): Export.
2854         * tree-ssa-forwprop.c
2855         (forward_propagate_addr_into_variable_array_index): Handle
2856         constant array index addition outside of the variable index.
2857
2858 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
2859
2860         PR target/39592
2861         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
2862         define_splits, floatunssi<mode>2): Require x87 conversions from
2863         DImode to be permitted.
2864
2865 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
2866
2867         PR preprocessor/15638
2868         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
2869
2870 2009-03-31  Richard Guenther  <rguenther@suse.de>
2871
2872         PR middle-end/23401
2873         PR middle-end/27810
2874         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
2875         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
2876         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
2877         a separate statement.
2878         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
2879         (lookup_tmp_var): Likewise.
2880         (is_gimple_formal_tmp_or_call_rhs): Remove.
2881         (is_gimple_reg_or_call_rhs): Rename to ...
2882         (is_gimple_reg_rhs_or_call): ... this.
2883         (is_gimple_mem_or_call_rhs): Rename to ...
2884         (is_gimple_mem_rhs_or_call): ... this.
2885         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
2886         DECL_GIMPLE_REG_P only if is_formal is true.
2887         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
2888         for non-proper post-modify expression gimplification.
2889         (gimplify_self_mod_expr): For post-modify expressions gimplify
2890         the lvalue to a minimal lvalue.
2891         (rhs_predicate_for): Remove formal temp case.
2892         (gimplify_modify_expr_rhs): Likewise.
2893         (gimplify_addr_expr): Use is_gimple_reg.
2894         (gimplify_expr): Remove formal temp cases.
2895         (gimple_regimplify_operands): Likewise.
2896         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
2897         and FILTER_EXPR like constants.
2898         * gimple.c (walk_gimple_op): Fix val_only initialization, use
2899         is_gimple_reg.
2900         (is_gimple_formal_tmp_rhs): Remove.
2901         (is_gimple_reg_rhs): Remove special casing.
2902         (is_gimple_mem_rhs): Fix.
2903         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
2904         (is_gimple_formal_tmp_var): Remove.
2905         (is_gimple_formal_tmp_reg): Likewise.
2906         (is_gimple_min_lval): Allow invariant component ref parts.
2907         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
2908         is_gimple_formal_tmp_reg): Remove declarations.
2909         * tree-cfg.c (verify_expr): Verify that variables with address
2910         taken do not have DECL_GIMPLE_REG_P set.
2911         * tree-mudflap.c (mf_build_check_statement_for): Use
2912         force_gimple_operand instead of gimplify_expr.
2913
2914 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
2915
2916         * modulo-sched.c (sms_schedule_by_order): Pass the actual
2917         schedulable rows to compute_split_row.
2918
2919 2009-03-31  Ben Elliston  <bje@au.ibm.com>
2920
2921         PR target/31635
2922         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
2923         OPT_mvrsave.
2924
2925 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
2926
2927         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
2928         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
2929         * configure: Regenerate.
2930         * config.in: Regenerate.
2931         * config/rs6000/rs6000.opt (mtls-markers): Add.
2932         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
2933         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
2934         (tls_ld_aix, tls_ld_sysv): Likewise.
2935         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
2936         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
2937
2938 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
2939
2940         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
2941
2942 2009-03-30  Jan Hubicka  <jh@suse.cz>
2943
2944         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
2945         out of RESX.
2946         (tree_remove_unreachable_handlers): Cleanup EH predecestor
2947         detection and label handling.
2948
2949 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
2950
2951         * ira-int.h (ira_allocno): Rename left_conflicts_num to
2952         left_conflicts_size.
2953         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
2954         ALLOCNO_LEFT_CONFLICTS_SIZE.
2955
2956         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
2957         remove_allocno_from_bucket_and_push,
2958         allocno_spill_priority_compare, push_allocnos_to_stack,
2959         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
2960         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
2961         (setup_allocno_left_conflicts_num): Ditto.  Rename to
2962         setup_allocno_left_conflicts_size.
2963         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
2964         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
2965         setup_allocno_left_conflicts_size instead of
2966         setup_allocno_left_conflicts_num.
2967
2968         * ira-build.c (ira_create_allocno): Use
2969         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
2970         ALLOCNO_LEFT_CONFLICTS_NUM.
2971                 
2972 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
2973
2974         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
2975         instead of DF_LR_OUT.
2976
2977         * ira-lives.c (process_bb_node_lives): Ditto.
2978
2979         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
2980         instead of DF_LR_{OUT,IN}.
2981
2982         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
2983
2984         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
2985
2986 2009-03-30  Jan Hubicka  <jh@suse.cz>
2987
2988         * except.c (label_to_region_map): Fix thinko.
2989
2990 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
2991
2992         PR middle-end/38237
2993         * tree.h (tree_find_value): New declaration.
2994         * tree.c (tree_find_value): New function.
2995         * varasm.c (assemble_external): Avoid duplicate entries on lists.
2996
2997 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
2998
2999         PR debug/39563
3000         * c-decl.c (struct c_binding): Add locus field.
3001         (bind): Add locus argument, set locus field from it.
3002         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
3003         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
3004         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
3005         implicitly_declare, undeclared_variable, lookup_label,
3006         declare_label, c_make_fname_decl, c_builtin_function,
3007         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
3008         bind callers.
3009
3010 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
3011
3012         PR target/38781
3013         * config/i386/i386.c (classify_argument): Check total size of
3014         structure.
3015
3016 2009-03-30  Martin Jambor  <mjambor@suse.cz>
3017
3018         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
3019         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
3020         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
3021         respectively.
3022
3023         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
3024         seen_variable_array_ref while also traversing a union.
3025
3026         * tree-inline.c (optimize_inline_calls): Do not call
3027         cgraph_node_remove_callees.
3028         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
3029         (pass_remove_cgraph_callee_edges): New variable.
3030         * passes.c (init_optimization_passes): Add
3031         pass_remove_cgraph_callee_edges after early inlining and before all
3032         late intraprocedural passes.
3033
3034         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
3035
3036 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
3037
3038         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
3039         Fix typos in names.
3040
3041 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
3042
3043         * combine.c (simplify_comparison): Use have_insn_for.
3044         * dojump.c (do_jump): Likewise.
3045
3046 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
3047
3048         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
3049         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
3050         sparc_compare_op0 like sparc_compare_emitted used to be handled.
3051         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
3052         instead of sparc_compare_emitted.
3053         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
3054         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
3055         instead of sparc_compare_emitted.
3056
3057 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
3058
3059         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
3060         enter/exit cfglayout mode.
3061         (pass_partition_block): Require it.
3062         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
3063         (combine_instructions): Track basic blocks instead of labels.
3064         (update_cfg_for_uncondjump): New.
3065         (try_combine): Use it.  Update jumps after rescanning.
3066         (pass_combine): Require PROP_cfglayout.
3067         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
3068
3069 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
3070
3071         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
3072         Provide/destroy PROP_cfglayout respectively.
3073         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
3074         * tree-pass.h (PROP_cfglayout): New.
3075
3076 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
3077
3078         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
3079         fold_convert_const_fixed_from_fixed,
3080         fold_convert_const_fixed_from_int,
3081         fold_convert_const_fixed_from_real, fold_negate_const): Do not
3082         set TREE_CONSTANT_OVERFLOW.
3083         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
3084         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
3085
3086 2009-03-30  Ira Rosen  <irar@il.ibm.com>
3087
3088         * tree-vect-loop-manip.c: New file.
3089         * tree-vectorizer.c: Update documentation and included files.
3090         (vect_loop_location): Make extern.
3091         (rename_use_op): Move to tree-vect-loop-manip.c
3092         (rename_variables_in_bb, rename_variables_in_loop, 
3093         slpeel_update_phis_for_duplicate_loop, 
3094         slpeel_update_phi_nodes_for_guard1,
3095         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
3096         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
3097         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
3098         set_prologue_iterations, slpeel_tree_peel_loop_to_edge, 
3099         find_loop_location): Likewise.
3100         (new_stmt_vec_info): Move to tree-vect-stmts.c.
3101         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
3102         get_vectype_for_scalar_type, vect_is_simple_use,
3103         supportable_widening_operation, supportable_narrowing_operation):
3104         Likewise.
3105         (bb_in_loop_p): Move to tree-vect-loop.c.
3106         (new_loop_vec_info, destroy_loop_vec_info, 
3107         reduction_code_for_scalar_code, report_vect_op, 
3108         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
3109         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
3110         (vect_supportable_dr_alignment): Likewise.
3111         * tree-vectorizer.h (tree-data-ref.h): Include.
3112         (vect_loop_location): Declare.
3113         Reorganize function declarations according to the new file structure.
3114         * tree-vect-loop.c: New file.
3115         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c, 
3116         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
3117         * tree-vect-data-refs.c: New file.
3118         * tree-vect-patterns.c (timevar.h): Don't include.
3119         * tree-vect-stmts.c: New file.
3120         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c, 
3121         tree-vect-slp.c, tree-vect-loop.c.
3122         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and 
3123         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o, 
3124         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
3125         (tree-vect-analyze.o): Remove.
3126         (tree-vect-transform.o): Likewise.
3127         (tree-vect-data-refs.o): Add rule.
3128         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o, 
3129         tree-vect-slp.o): Likewise.
3130         (tree-vect-patterns.o): Remove redundant dependencies.
3131         (tree-vectorizer.o): Likewise.
3132         * tree-vect-slp.c: New file.
3133
3134 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3135
3136         * optc-gen.awk: Warn if an option flag has multiple different
3137         help strings.
3138
3139 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
3140
3141         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
3142         -floop-block): Document dependences on PPL, CLooG and Graphite.
3143
3144 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
3145
3146         PR rtl-optimization/323
3147         * c-common.c (c_fully_fold, convert_and_check,
3148         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
3149         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
3150         * c-common.def (EXCESS_PRECISION_EXPR): New.
3151         * c-cppbuiltin.c (builtin_define_float_constants): Define
3152         constants with enough digits for long double.
3153         * c-lex.c (interpret_float): Interpret constant with excess
3154         precision where appropriate.
3155         * c-opts.c (c_common_post_options): Set
3156         flag_excess_precision_cmdline.  Give an error for
3157         -fexcess-precision=standard for C++ for processors where the
3158         option is significant.
3159         * c-parser.c (c_parser_conditional_expression): Handle excess
3160         precision in condition.
3161         * c-typeck.c (convert_arguments): Handle arguments with excess
3162         precision.
3163         (build_unary_op): Move excess precision outside operation.
3164         (build_conditional_expr): Likewise.
3165         (build_compound_expr): Likewise.
3166         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
3167         (build_modify_expr): Handle excess precision in RHS.
3168         (convert_for_assignment): Handle excess precision in converted
3169         value.
3170         (digest_init, output_init_element, process_init_element): Handle
3171         excess precision in initializer.
3172         (c_finish_return): Handle excess precision in return value.
3173         (build_binary_op): Handle excess precision in operands and add
3174         excess precision as needed for operation.
3175         * common.opt (-fexcess-precision=): New option.
3176         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
3177         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
3178         For standard excess precision, output explicit conversion to and
3179         truncation from XFmode.
3180         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
3181         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
3182         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
3183         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
3184         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
3185         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
3186         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
3187         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
3188         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
3189         define_splits, sqrt<mode>2): Disable where appropriate for
3190         standard excess precision.
3191         * convert.c (convert_to_real): Do not shorten arithmetic to type
3192         for which excess precision would be used.
3193         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
3194         * doc/invoke.texi (-fexcess-precision=): Document option.
3195         (-mfpmath=): Correct index entry.
3196         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
3197         flag_excess_precision): New.
3198         * langhooks.c (lhd_post_options): Set
3199         flag_excess_precision_cmdline.
3200         * opts.c (common_handle_option): Handle -fexcess-precision=.
3201         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
3202         init_excess_precision): New.
3203         (lang_dependent_init_target): Call init_excess_precision.
3204         * tree.c (excess_precision_type): New.
3205         * tree.h (excess_precision_type): Declare.
3206
3207 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
3208
3209         PR c/35235
3210         * c-typeck.c (build_component_ref): Do not copy qualifiers from
3211         non-lvalue to component.
3212
3213 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
3214
3215         PR preprocessor/34695
3216         * Makefile.in (c-opts.o): Depend on c-tree.h.
3217         * c-common.c: Move down include of diagnostic.h.
3218         (done_lexing, c_cpp_error): New.
3219         * c-common.h (done_lexing): Declare.
3220         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
3221         (parse_in).
3222         * c-opts.c: Include c-tree.h.
3223         (c_common_init_options): Set preprocessor error callback.
3224         (c_common_handle_option): Do not set preprocessor
3225         inhibit_warnings, warnings_are_errors, warn_system_headers,
3226         pedantic_errors or inhibit_warnings flags.
3227         (c_common_post_options): Do not check cpp_errors (parse_in).
3228         (c_common_finish): Do not output dependencies if there were
3229         errors.  Do not check return value of cpp_finish.
3230         * c-ppoutput.c (pp_file_change): Set input_location.
3231         * c-tree.h (c_cpp_error): Declare.
3232         * diagnostic.c (diagnostic_set_info_translated): Also initialize
3233         override_column.
3234         (diagnostic_build_prefix): Check override_column.
3235         * diagnostic.h (diagnostic_info): Add override_column field.
3236         (diagnostic_override_column): Define.
3237
3238 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
3239
3240         * c-common.c (c_expand_expr, c_staticp): Remove.
3241         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
3242         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
3243         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
3244         * c-gimplify.c (gimplify_compound_literal_expr,
3245         optimize_compound_literals_in_ctor): Remove.
3246         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
3247         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
3248         * c-semantics.c (emit_local_var): Remove.
3249
3250         * langhooks-def.h (lhd_expand_expr): Remove.
3251         * langhooks.c (lhd_expand_expr): Remove.
3252         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
3253
3254         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
3255         handling from c-semantics.c; don't call into langhook.
3256         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
3257         * gimplify.c (gimplify_compound_literal_expr,
3258         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
3259         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
3260         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
3261         as was done in c-gimplify.c.
3262         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
3263         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
3264         Move from c-common.h.
3265         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
3266
3267         * tree.c (staticp): Do not call langhook.
3268         * langhooks.c (lhd_staticp): Delete.
3269         * langhooks-def.h (lhd_staticp): Delete prototype.
3270         (LANG_HOOKS_STATICP): Delete.
3271         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
3272
3273         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
3274         instead of DECL_STMTs.
3275
3276 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
3277
3278         PR c/456
3279         PR c/5675
3280         PR c/19976
3281         PR c/29116
3282         PR c/31871
3283         PR c/35198
3284         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
3285         void_type_node.
3286         (fold_call_expr): Return a NOP_EXPR from folding rather than the
3287         contained expression.
3288         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
3289         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
3290         conditional expressions for C.
3291         (decl_constant_value_for_optimization): Move from
3292         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
3293         whether optimizing and that the expression is a VAR_DECL not of
3294         array type instead of doing such checks in the caller.  Do not
3295         check pedantic.  Call gcc_unreachable for C++.
3296         * c-common.def (C_MAYBE_CONST_EXPR): New.
3297         * c-common.h (c_fully_fold, c_save_expr,
3298         decl_constant_value_for_optimization): New prototypes.
3299         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
3300         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
3301         EXPR_INT_CONST_OPERANDS): Define.
3302         * c-convert.c (convert): Strip nops from expression.
3303         * c-decl.c (groktypename): Take extra parameters expr and
3304         expr_const_operands.  Update call to grokdeclarator.
3305         (start_decl): Update call to grokdeclarator.  Add statement for
3306         expressions used in type of decl.
3307         (grokparm): Update call to grokdeclarator.
3308         (push_parm_decl): Update call to grokdeclarator.
3309         (build_compound_literal): Add parameter non_const and build a
3310         C_MAYBE_COSNT_EXPR if applicable.
3311         (grokdeclarator): Take extra parameters expr and
3312         expr_const_operands.  Track expressions used in declaration
3313         specifiers and declarators.  Fold array sizes and track whether
3314         they are constant expressions and whether they are integer
3315         constant expressions.
3316         (parser_xref_tag): Set expr and expr_const_operands fields in
3317         return value.
3318         (grokfield): Update call to grokdeclarator.
3319         (start_function): Update call to grokdeclarator.
3320         (build_null_declspecs): Set expr and expr_const_operands fields in
3321         return value.
3322         (declspecs_add_type): Handle expressions in typeof specifiers.
3323         * c-parser.c (c_parser_declspecs): Set expr and
3324         expr_const_operands fields for declaration specifiers.
3325         (c_parser_enum_specifier): Likewise.
3326         (c_parser_struct_or_union_specifier): Likewise.
3327         (c_parser_typeof_specifier): Likewise.  Update call to
3328         groktypename.  Fold expression as needed.  Return expressions with
3329         type instead of adding statements.
3330         (c_parser_attributes): Update calls to c_parser_expr_list.
3331         (c_parser_statement_after_labels): Fold expression before passing
3332         to objc_build_throw_stmt.
3333         (c_parser_condition): Fold expression.
3334         (c_parser_asm_operands): Fold expression.
3335         (c_parser_conditional_expression): Use c_save_expr.  Update call
3336         to build_conditional_expr.
3337         (c_parser_alignof_expression): Update call to groktypename.
3338         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
3339         original_code.  Fold expression argument of va_arg.  Create
3340         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
3341         argument to va_arg.  Update calls to groktypename.  Fold array
3342         index for offsetof.  Verify that first argument to
3343         __builtin_choose_expr has integer type.
3344         (c_parser_postfix_expression_after_paren_type): Update calls to
3345         groktypename and build_compound_literal.  Handle expressions with
3346         side effects in type name.
3347         (c_parser_postfix_expression_after_primary): Update call to
3348         c_parser_expr_list.  Set original_code for calls to
3349         __builtin_constant_p.
3350         (c_parser_expr_list): Take extra parameter fold_p.  Fold
3351         expressions if requested.
3352         (c_parser_objc_type_name): Update call to groktypename.
3353         (c_parser_objc_synchronized_statement): Fold expression.
3354         (c_parser_objc_receiver): Fold expression.
3355         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
3356         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
3357         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
3358         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
3359         (struct c_typespec): Add elements expr and expr_const_operands.
3360         (struct c_declspecs): Add elements expr and expr_const_operands.
3361         (groktypename, build_conditional_expr, build_compound_literal):
3362         Update prototypes.
3363         (in_late_binary_op): Declare.
3364         * c-typeck.c (note_integer_operands): New function.
3365         (in_late_binary_op): New variable.
3366         (decl_constant_value_for_broken_optimization): Move to c-common.c
3367         and rename to decl_constant_value_for_optimization.
3368         (default_function_array_conversion): Do not strip nops.
3369         (default_conversion): Do not call
3370         decl_constant_value_for_broken_optimization.
3371         (build_array_ref): Do not fold result.
3372         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
3373         result when operand is a VLA.
3374         (c_expr_sizeof_type): Update call to groktypename.  Handle
3375         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
3376         result when operand names a VLA type.
3377         (build_function_call): Update call to build_compound_literal.
3378         Only fold result for calls to __builtin_* functions.  Strip
3379         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
3380         the function designator.
3381         (convert_arguments): Fold arguments.  Update call to
3382         convert_for_assignment.
3383         (build_unary_op): Handle increment and decrement of
3384         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
3385         decrement earlier.  Fold operand of increment and decrement.
3386         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
3387         built for integer operand.  Wrap returns that are INTEGER_CSTs
3388         without being integer constant expressions or that have integer
3389         constant operands without being INTEGER_CSTs.
3390         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
3391         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
3392         result is an integer constant expression or can be used in
3393         unevaluated parts of one and avoid folding and wrap as
3394         appropriate.  Fold operands before possibly doing -Wsign-compare
3395         warnings.
3396         (build_compound_expr): Wrap result for C99 if operands can be used
3397         in integer constant expressions.
3398         (build_c_cast): Update call to digest_init.  Do not ignore
3399         overflow from casting floating-point constants to integers.  Wrap
3400         results that could be confused with integer constant expressions,
3401         null pointer constants or floating-point constants.
3402         (c_cast_expr): Update call to groktypename.  Handle expressions
3403         included in type name.
3404         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
3405         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
3406         Update calls to convert_for_assignment.
3407         (convert_for_assignment): Take new parameter
3408         null_pointer_constant.  Do not strip nops or call
3409         decl_constant_value_for_broken_optimization.  Set
3410         in_late_binary_op for conversions to boolean.
3411         (store_init_value): Update call to digest_init.
3412         (digest_init): Take new parameter null_pointer_constant.  Do not
3413         call decl_constant_value_for_broken_optimization.  pedwarn for
3414         initializers not constant expressions.  Update calls to
3415         convert_for_assignment.
3416         (constructor_nonconst): New.
3417         (struct constructor_stack): Add nonconst element.
3418         (really_start_incremental_init, push_init_level, pop_init_level):
3419         Handle constructor_nonconst and nonconst element.
3420         (set_init_index): Call constant_expression_warning for array
3421         designators.
3422         (output_init_element): Fold value.  Set constructor_nonconst as
3423         applicable.  pedwarn for initializers not constant expressions.
3424         Update call to digest_init.  Call constant_expression_warning
3425         where constant initializers are required.
3426         (process_init_element): Use c_save_expr.
3427         (c_finish_goto_ptr): Fold expression.
3428         (c_finish_return): Fold return value.  Update call to
3429         convert_for_assignment.
3430         (c_start_case): Fold switch expression.
3431         (c_process_expr_stmt): Fold expression.
3432         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
3433         ensure statement expression is not evaluated in constant expression.
3434         (build_binary_op): Track whether results are integer constant
3435         expressions or may occur in such, disable folding and wrap results
3436         as applicable.  Fold operands for -Wsign-compare warnings unless
3437         in_late_binary_op.
3438         (c_objc_common_truthvalue_conversion): Handle results folded to
3439         integer constants that are not integer constant expressions.
3440         * doc/extend.texi: Document when typeof operands are evaluated,
3441         that condition of __builtin_choose_expr is an integer constant
3442         expression, and more about use of __builtin_constant_p in
3443         initializers.
3444
3445 2009-03-29  Richard Guenther  <rguenther@suse.de>
3446
3447         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
3448         propagate addresses of array references.
3449
3450 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
3451
3452         * regmove.c (perhaps_ends_bb_p): Remove.
3453         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
3454         from INSN and check that the main loop stays within that basic block.
3455         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
3456         (regmove_forward_pass): Split out from regmove_optimize.  Use
3457         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
3458         (regmove_backward_pass): Split out from regmove_optimize.  Use
3459         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
3460         (regmove_optimize): Simplify.
3461
3462 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
3463
3464         PR target/39545
3465         * config/i386/i386.c (classify_argument): Ignore flexible array
3466         member in struct and warn ABI change.
3467
3468 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
3469
3470         * config/i386/i386-protos.h (ix86_agi_dependent): New.
3471
3472         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
3473         (ix86_adjust_cost): Updated.
3474
3475 2009-03-29  Jan Hubicka  <jh@suse.cz>
3476
3477         PR middle-end/28850
3478         * tree-pass.h (pass_cleanup_eh): New function.
3479         (remove_unreachable_regions): Break code handling RTL
3480         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
3481         that can not be reached by runtime.
3482         (can_be_reached_by_runtime): New function.
3483         (label_to_region_map): New function.
3484         (num_eh_regions): New function.
3485         (rtl_remove_unreachable_regions): New function.
3486         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
3487         (remove_eh_region): New function.
3488         * except.h: Include sbitmap and vecprim.
3489         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
3490         num_eh_regions): Declare.
3491         * passes.c (init_optimization_passes): Schedule cleanup_eh.
3492         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
3493         * tree-eh.c (tree_remove_unreachable_handlers): New function.
3494         (tree_empty_eh_handler_p): New function.
3495         (cleanup_empty_eh): New function.
3496         (cleanup_eh): New function.
3497         (pass_cleanup_eh): New function.
3498
3499 2009-03-29  Jan Hubicka  <jh@suse.cz>
3500
3501         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
3502         for removed regions.
3503
3504 2009-03-29  Jan Hubicka  <jh@suse.cz>
3505
3506         * except.c (dump_eh_tree): Dump all datastructures.
3507
3508 2009-03-29  Jan Hubicka  <jh@suse.cz>
3509
3510         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
3511         (duplicate_eh_regions_1): Likewise.
3512         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
3513         vector; call EH verification.
3514         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
3515         Be ready for region being removed.
3516
3517 2009-03-29  Jan Hubicka  <jh@suse.cz>
3518
3519         * bitmap.c (bitmap_last_set_bit): New function.
3520         * bitmap.h (bitmap_last_set_bit): Declare.
3521
3522 2009-03-29  David Ayers  <ayers@fsfe.org>
3523
3524         PR objc/27377
3525         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
3526         by calling objc_compare_types and surpress warnings about
3527         incompatible C pointers that are compatible ObjC pointers.
3528         
3529 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
3530
3531         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
3532         call initialize_inline_failed.
3533         (initialize_inline_failed): Move it from here ...
3534         * cgraph.c (initialize_inline_failed): ... to here.
3535         (cgraph_create_edge): Call initialize_inline_failed rather than
3536         setting inline_failed directly.
3537
3538 2009-03-29  Ben Elliston  <bje@au.ibm.com>
3539
3540         PR target/32542
3541         * sysv4.opt (msdata): Improve comment.
3542         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
3543         * sysv4.h (SVR4_ASM_SPEC): Likewise.
3544
3545 2009-03-29  Ben Elliston  <bje@au.ibm.com>
3546
3547         PR target/30451
3548         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
3549         load and store attributes.
3550
3551 2009-03-29  Ben Elliston  <bje@au.ibm.com>
3552
3553         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
3554         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
3555         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
3556         * doc/extend.texi (X86 Built-in Functions): Add index entries for
3557         __builtin_infq and __builtin_huge_valq.
3558
3559 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
3560
3561         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
3562         atmega8m1 devices.
3563         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3564         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
3565
3566 2009-03-28  Xinliang David Li  <davidxl@google.com>
3567
3568         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support. 
3569         (do_dbg_cnt): New function.
3570
3571 2009-03-28  Jan Hubicka  <jh@suse.cz>
3572
3573         Merge from pretty-ipa:
3574
3575         2009-03-27  Jan Hubicka  <jh@suse.cz>
3576
3577         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
3578         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
3579         * passes.c (function_called_by_processed_nodes_p): New.
3580         * ipa-pure-const.c (check_call): Fix handling of operands.
3581         (analyze_function): Dump debug output for skipped bodies.
3582         (local_pure_const): Use function_called_by_processed_nodes_p.
3583         * dwarf2out.c (reference_to_unused): Use output.
3584         * passes.c (do_per_function_toporder): Likewise.
3585
3586         2008-11-12  Jan Hubicka  <jh@suse.cz>
3587
3588         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
3589         * ipa-pure-const.c (funct_state_d): Add can throw field; make
3590         state_set_in_source enum
3591         (check_decl): Ignore memory tags; do not set fake looping flags;
3592         dump diagnostics.
3593         (check_operand, check_tree, check_rhs_var, check_lhs_var,
3594         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
3595         (check_call, analyze_function): Rewrite.
3596         (check_stmt): New.
3597         (add_new_function): Update call of analyze_function.
3598         (generate_summary): Add call of analyze_function.
3599         (propagate): Propagate can_throw; handle state_set_in_source correctly.
3600         (local_pure_const): New function.
3601         (pass_local_pure_const): New pass.
3602         * ipa-inline.c (inline_transform): Set after_inlining.
3603         * tree-eh.c (stmt_can_throw_external): New.
3604         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
3605         work with aliasing built.
3606         * tree-flow.h (stmt_can_throw_external): New.
3607         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
3608         and local pure/const pass in early and late optimization queue.
3609
3610 2009-03-28  Martin Jambor  <mjambor@suse.cz>
3611
3612         * fold-const.c (get_pointer_modulus_and_residue): New parameter
3613         allow_func_align.
3614         (fold_binary): Allow function decl aligment consideration is the
3615         second argument is integer constant one.
3616         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
3617         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
3618         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
3619
3620 2009-03-28  Jan Hubicka  <jh@suse.cz>
3621
3622         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
3623         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
3624         * function.h (rtl_data): Add nothrow flag.
3625         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
3626         set DECL_NOTHROW for AVAILABLE functions.
3627
3628 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
3629
3630         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
3631         following vector keyword has expansion starting with pixel or bool
3632         keyword, expand vector to __vector and pixel or bool to __pixel or
3633         __bool.
3634
3635         PR c++/39554
3636         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
3637         warn_if_disallowed_function_p): Removed.
3638         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
3639         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
3640         warning_if_disallowed_function_p.
3641         * flags.h (warn_if_disallowed_function_p,
3642         warn_disallowed_functions): Removed.
3643         * common.opt (Wdisallowed-function-list=): Removed.
3644         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
3645
3646 2009-03-28  Richard Guenther  <rguenther@suse.de>
3647
3648         PR tree-optimization/38723
3649         * tree-ssa-pre.c (compute_avail): Add all default definitions to
3650         the entry block.
3651
3652 2009-03-28  Jan Hubicka  <jh@suse.cz>
3653
3654         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
3655         test introduced by my previous patch.
3656
3657 2009-03-28  Richard Guenther  <rguenther@suse.de>
3658
3659         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
3660         the PHIs value undefined.
3661
3662 2009-03-28  Jan Hubicka  <jh@suse.cz>
3663
3664         * tree-pass.h (pass_fixup_cfg): New pass.
3665         * ipa-inline.c (inline_transform): Set
3666         always_inline_functions_inlined/after_inlining.
3667         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
3668         (pass_fixup_cfg): New pass.
3669         * passes.c (init_optimization_passes): Add fixup_cfg.
3670
3671 2009-03-28  Richard Guenther  <rguenther@suse.de>
3672
3673         PR tree-optimization/38458
3674         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
3675         argument use the arguments copy-of value.
3676
3677 2009-03-28  Richard Guenther  <rguenther@suse.de>
3678
3679         PR tree-optimization/38180
3680         * tree-ssa-ccp.c (get_default_value): Simplify.
3681         (likely_value): Likewise.
3682         (surely_varying_stmt_p): Properly handle VOP case.
3683         (ccp_initialize): Likewise.
3684         (ccp_fold): Handle propagating through *&.
3685         (fold_const_aggregate_ref): Also handle decls.
3686
3687 2009-03-28  Jan Hubicka  <jh@suse.cz>
3688
3689         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
3690         * cgraph.h (cgraph_node): Likewise.
3691         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
3692         (cgraph_reset_node): Use process flag.
3693         (cgraph_mark_functions_to_output): Likewise.
3694         (cgraph_expand_function): Likewise.
3695         (cgraph_expand_all_functions): Likewise.
3696         (cgraph_output_in_order): Likewise.
3697         * dwarf2out.c (reference_to_unused): Likewise.
3698         * passes.c do_per_function_toporder): Likewise.
3699
3700 2009-03-28  Jan Hubicka  <jh@suse.cz>
3701
3702         Bring from lto-branch:
3703
3704         2008-09-03  Doug Kwan  <dougkwan@google.com>
3705
3706         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
3707         enums instead of reason strings.
3708         * cgraph.c (cgraph_create_edge): Same.
3709         (cgraph_inline_failed_string): New function.
3710         * cgraph.h (cgraph_inline_failed_t): New enum type.
3711         (cgraph_inline_failed_string): New prototype.
3712         (struct cgraph_edge): Change type of INLINED_FAILED from constant
3713         char pointer to cgraph_inline_failed_t.
3714         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
3715         (cgraph_default_inline_p): Ditto.
3716         * gcc/cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
3717         to cgraph_inline_failed_t pointer.
3718         * cif-code.def: New file.
3719         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
3720         reason string.
3721         (cgraph_check_inline_limits): Change type of REASON to pointer to
3722         cgraph_inline_failed_t.  Replace reason strings with enums.
3723         (cgraph_default_inline_p): Ditto.
3724         (cgraph_recursive_inlining_p): Ditto.
3725         (update_caller_keys): Change type of FAILED_REASON to
3726         cgraph_inline_failed_t.
3727         (cgraph_set_inline_failed): Change type of REASON to pointer to
3728         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
3729         convert enums to strings for text output.
3730         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
3731         to be of type cgraph_inline_failed_t.  Replace reason strings with
3732         enums.  Call cgraph_inline_failed_string to covert enums
3733         to strings for text output.
3734         (cgraph_decide_inlining): Replace reason strings with enums.
3735         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
3736         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
3737         for text output.
3738         * tree-inline.c (expand_call_inline): Change type of REASON
3739         to cgraph_inline_failed_t.  Replace reason strings with enums.
3740         Call cgraph_inline_failed_string for text output.
3741         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
3742         (cgraph.o): Ditto.
3743
3744 2009-03-28  Jan Hubicka  <jh@suse.cz>
3745
3746         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
3747         cgraph_clone_node): Remove master clone handling.
3748         (cgraph_is_master_clone, cgraph_master_clone): Remove.
3749         * cgraph.h (master_clone): Remove.
3750         (cgraph_is_master_clone, cgraph_master_clone): Remove.
3751         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
3752         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
3753
3754 2009-03-28  Jan Hubicka  <jh@suse.cz>
3755
3756         * cgraph.c (cgraph_function_body_availability): Functions declared
3757         inline are always safe to assume that it is not going to be replaced.
3758
3759 2009-03-28  Richard Guenther  <rguenther@suse.de>
3760
3761         PR tree-optimization/38513
3762         * tree-ssa-pre.c (eliminate): Remove redundant stores.
3763         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
3764         EXC_PTR_EXPR and FILTER_EXPR.
3765         (get_ref_from_reference_ops): Likewise.
3766
3767 2009-03-28  Richard Guenther  <rguenther@suse.de>
3768
3769         PR tree-optimization/38968
3770         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
3771         Use FLOOR_MOD_EXPR to compute misalignment.
3772
3773 2009-03-28  Richard Guenther  <rguenther@suse.de>
3774
3775         PR tree-optimization/37795
3776         * tree.h (combine_comparisons): Declare.
3777         * fold-const.c (combine_comparisons): Export.
3778         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
3779         comparisons.
3780         (ifcombine_iforif): Use combine_comparisons.
3781
3782 2009-03-28  Jan Hubicka  <jh@suse.cz>
3783
3784         * tree-eh.c (inlinable_call_p): New function.
3785         (make_eh_edges): Use it.
3786         (verify_eh_edges): Use it.
3787         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
3788         * except.c (reachable_next_level): Add inlinable_function argument
3789         (sjlj_find_directly_reachable_regions): Update.
3790         (add_reachable_handler): Do not set saw_any_handlers.
3791         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
3792         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
3793         Add new inlinable call parameter.
3794         (can_throw_internal, can_throw_external): Update.
3795         * except.h (can_throw_internal_1, can_throw_external_1,
3796         foreach_reachable_handler): Update declaration.
3797
3798 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
3799
3800         * config/arm/t-arm-coff, config/h8300/coff.h,
3801         config/i386/i386-aout.h, config/i386/i386-coff.h,
3802         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
3803         config/pdp11/2bsd.h, config/rs6000/aix41.h,
3804         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
3805         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
3806         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
3807         sys-types.h: Remove.
3808         * Makefile.in: Remove protoize and fixproto support and references
3809         in comments.
3810         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
3811         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
3812         Remove.
3813         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
3814         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
3815         unprotoize$(exeext).
3816         (rest.encap): Don't depend on $(STMP_FIXPROTO)
3817         (.PHONY): Don't depend on proto.
3818         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
3819         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
3820         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
3821         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
3822         build/gen-protos.o, build/scan.o, xsys-protos.h,
3823         build/fix-header$(build_exeext), build/fix-header.o,
3824         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
3825         stmp-install-fixproto): Remove.
3826         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
3827         SYSCALLS.c or fixproto files.
3828         (install-common): Don't install protoize.
3829         (install-headers-tar, install-headers-cpio, install-headers-cp):
3830         Don't depend on $(STMP_FIXPROTO).
3831         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
3832         install fixproto files or write out fixproto settings.
3833         (uninstall): Don't uninstall protoize.
3834         * config.gcc (use_fixproto): Remove.
3835         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
3836         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
3837         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
3838         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
3839         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
3840         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
3841         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
3842         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
3843         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
3844         * config/t-vxworks (STMP_FIXPROTO): Remove.
3845         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
3846         STMP_FIXPROTO): Remove.
3847         * config.in, configure: Regenerate.
3848         * crtstuff.c (gid_t, uid_t): Don't undefine.
3849         * doc/install.texi: Change m68k-coff to m68k-elf in example.
3850         (arm-*-coff, arm-*-aout: Remove target entries.
3851         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
3852         Remove mention of AIX 4.1.
3853         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
3854         * doc/invoke.texi (Running Protoize): Remove.
3855         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
3856         (Protoize Caveats): Remove.
3857         * tsystem.h: Update comments on headers assumed to exist.
3858
3859 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
3860
3861         * genautomata.c: Add a new year to the copyright.  Add a new
3862         reference.
3863         (struct insn_reserv_decl): Add comments for member bypass_list.
3864         (find_bypass): Remove.
3865         (insert_bypass): New.
3866         (process_decls): Use insert_bypass.
3867         (output_internal_insn_latency_func): Output all bypasses with the
3868         same input insn in one switch case.
3869
3870         * rtl.def (define_bypass): Describe bypass choice.
3871         * doc/md.texi (define_bypass): Ditto.
3872
3873 2009-03-27  Richard Guenther  <rguenther@suse.de>
3874
3875         * gimplify.c (mark_addressable): Export.
3876         * tree-flow.h (mark_addressable): Declare.
3877         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
3878         * tree-ssa.c (verify_phi_args): Verify that address taken
3879         variables have TREE_ADDRESSABLE set.
3880
3881 2009-03-27  Richard Guenther  <rguenther@suse.de>
3882
3883         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
3884         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
3885         Do not mark decls TREE_ADDRESSABLE.
3886         (build_fold_addr_expr): Adjust.
3887         (fold_addr_expr): Remove.
3888         (fold_unary): Use build_fold_addr_expr.
3889         (fold_comparison): Likewise.
3890         (split_address_to_core_and_offset): Likewise.
3891         * coverage.c (tree_coverage_counter_addr): Mark the array decl
3892         TREE_ADDRESSABLE.
3893         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
3894         (gimplify_modify_expr_to_memcpy): Mark source and destination
3895         addressable.
3896         * omp-low.c (create_omp_child_function): Mark the object decl
3897         TREE_ADDRESSABLE.
3898         (lower_rec_input_clauses): Mark the var we take the address of
3899         TREE_ADDRESSABLE.
3900         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
3901
3902 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
3903
3904         PR middle-end/39315
3905         * cfgexpand.c (expand_one_stack_var_at): Change alignment
3906         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
3907
3908 2009-03-27  Richard Guenther  <rguenther@suse.de>
3909
3910         PR tree-optimization/39120
3911         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
3912         constraints.
3913         (handle_lhs_call): Process return constraints.  Add escape
3914         constraints if necessary.
3915         (handle_const_call): Fill out return constraints.  Make nested
3916         case more precise.  Avoid consttmp if possible.
3917         (handle_pure_call): Fill out return constraints.  Avoid
3918         callused if possible.
3919         (find_func_aliases): Simplify call handling.
3920
3921 2009-03-27  Richard Guenther  <rguenther@suse.de>
3922
3923         PR tree-optimization/39120
3924         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
3925         as a representative.
3926         (solve_graph): Do propagate CALLUSED.
3927         (handle_pure_call): Use a scalar constraint from CALLUSED for
3928         the return value.
3929         (find_what_p_points_to): CALLUSED shall not appear in poins-to
3930         solutions.
3931
3932 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
3933
3934         PR c/39323
3935         * c-common.c (handle_aligned_attribute): Properly check alignment
3936         overflow.  Use (1U << i) instead of (1 << i).
3937