1 2009-06-28 Eric Botcazou <ebotcazou@adacore.com>
3 * fold-const.c (contains_label_1): Fix comments.
4 (contains_label_p): Do not walk trees multiple time.
6 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
8 * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
9 * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
10 cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
11 ix86_fp_comparison_operator.
12 (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
13 *fp_jcc_2_sse, *fp_jcc_2_387): Delete
14 (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
15 *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
16 !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
17 to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
18 (related splits): Change predicate to ix86_fp_comparison_operator.
19 * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
20 instead of ix86_fp_comparison_codes.
21 (ix86_trivial_fp_comparison_operator,
22 ix86_fp_comparison_operator): New.
23 * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
24 (ix86_expand_compare): Eliminate last two parameters.
25 (ix86_fp_jump_nontrivial_p): Kill.
26 * config/i386/i386.c (put_condition_code): Eliminate call to
27 ix86_fp_comparison_codes and subsequent assertion.
28 (ix86_fp_comparison_codes): Eliminate.
29 (ix86_fp_swap_condition): New.
30 (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
31 ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
32 into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
33 (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
34 and ix86_fp_swap_condition.
35 (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
36 Use ix86_fp_comparison_strategy.
37 (ix86_expand_compare): Likewise. Eliminate last two arguments.
38 (ix86_fp_jump_nontrivial_p): Eliminate.
39 (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple. Adjust
40 call to ix86_expand_compare.
41 (ix86_split_fp_branch, ix86_expand_setcc,
42 ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
43 ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
45 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
47 * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
48 related to jump_clobbers.
49 * config/arm/arm.md (conds): Remove jump_clob case.
50 (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
51 splits): Change comparison_operator to arm_comparison_operator.
52 (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
55 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
57 * dojump.c (do_compare_rtx_and_jump): Try swapping the
58 condition for floating point modes.
59 * expmed.c (emit_store_flag_1): Move here a bigger part
61 (emit_store_flag): Try swapping the condition for floating point
63 * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
65 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
67 * expr.c (expand_expr_real_1): Just use do_store_flag.
68 (do_store_flag): Drop support for TRUTH_NOT_EXPR. Use
69 emit_store_flag_force.
70 * expmed.c (emit_store_flag_force): Copy here trick
71 previously in expand_expr_real_1. Try reversing the comparison.
72 (emit_store_flag_1): Work if target is NULL.
73 (emit_store_flag): Work if target is NULL, using the result mode
74 from the comparison. Use split_comparison, restructure final part
75 to simplify conditionals.
77 2009-06-28 Paolo Bonzini <bonzini@gnu.org>
79 * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
80 * dojump.c (do_jump): Change handling of floating-point
81 ops to use just do_compare_and_jump.
82 (split_comparison): New.
83 (do_compare_rtx_and_jump): Add here logic coming previously
84 in do_jump, using split_comparison.
86 2009-06-27 H.J. Lu <hongjiu.lu@intel.com>
89 * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
91 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
93 * tree-ssa-alias.c: Fix unintentional commit.
95 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
97 * passes.c (execute_one_pass): Fix unintentional commit.
99 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
101 * df-problems.c (df_set_seen, df_unset_seen): Delete.
102 (df_rd_local_compute, df_md_local_compute): Inline them.
104 (df_md_scratch): New.
105 (df_md_alloc, df_md_free): Allocate/free it.
106 (df_md_local_compute): Only include live registers in init.
107 (df_md_transfer_function): Prune the in-set computed by
108 the confluence function, and the gen-set too.
110 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
112 PR rtl-optimization/26854
113 * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
114 * df-problems.c (df_rd_add_problem): Fix comment.
115 (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
116 df_md_simulate_artificial_defs_at_top,
117 df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
118 df_md_bb_local_compute, df_md_local_compute, df_md_reset,
119 df_md_transfer_function, df_md_init, df_md_confluence_0,
120 df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
121 problem_MD, df_md_add_problem): New.
122 * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
123 df_md_get_bb_info): New.
124 DF_LAST_PROBLEM_PLUS1): Adjust.
126 * Makefile.in (fwprop.o): Include domwalk.h.
127 * fwprop.c: Include domwalk.h.
128 (reg_defs, reg_defs_stack): New.
129 (bitmap_only_bit_between): Remove.
131 (process_uses): Use reg_defs and local_md instead of
132 bitmap_only_bit_between and local_rd.
133 (single_def_use_enter_block): New, from build_single_def_use_links.
134 (single_def_use_leave_block): New.
135 (build_single_def_use_links): Remove code moved to
136 single_def_use_enter_block, invoke domwalk.
137 (use_killed_between): Adjust comment.
139 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
141 * bitmap.h (bitmap_ior_and_into): New.
142 * bitmap.c (bitmap_ior_and_into): New.
144 2009-06-27 Paolo Bonzini <bonzini@gnu.org>
146 * domwalk.h (struct dom_walk_data): Remove all callbacks except
147 before_dom_children_before_stmts and after_dom_children_after_stmts.
148 Rename the two remaining callbacks to just before_dom_children and
149 after_dom_children. Remove other GIMPLE statement walking bits.
150 * domwalk.c (walk_dominator_tree): Remove now unsupported features.
151 * graphite.c: Do not include domwalk.h.
152 * tree-into-ssa.c (interesting_blocks): New global.
153 (struct mark_def_sites_global_data): Remove it and names_to_rename.
154 (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
155 rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
156 now that they're not domwalk callbacks.
157 (rewrite_initialize_block): Rename to...
158 (rewrite_enter_block): ... this, place after called functions. Test
159 interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
160 (rewrite_finalize_block): Rename to...
161 (rewrite_leave_block): ... this, place after called functions.
162 (rewrite_update_init_block): Rename to...
163 (rewrite_update_enter_block): ... this, place after called functions.
164 Test interesting_blocks, call rewrite_update_stmt and
165 rewrite_update_phi_arguments.
166 (rewrite_update_fini_block): Rename to...
167 (rewrite_leave_block): ... this, place after called functions.
168 (rewrite_blocks): Remove last argument, simplify initialization of
170 (mark_def_sites_initialize_block): Rename to...
171 (mark_def_sites_block): ... this, call mark_def_sites.
172 (mark_def_sites_blocks): Remove argument, simplify initialization of
174 (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
175 (update_ssa): Likewise.
176 * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
178 (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
179 (dom_opt_initialize_block): Rename to...
180 (dom_opt_enter_block): ... this, place after called functions. Walk
181 statements here, inline propagate_to_outgoing_edges.
182 (dom_opt_finalize_block): Rename to...
183 (dom_opt_leave_block): ... this, place after called functions.
184 * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
186 (dse_enter_block, dse_record_phi): New.
187 (dse_record_phis): Delete.
188 (dse_finalize_block): Rename to...
189 (dse_leave_block): ... this.
190 (tree_ssa_dse): Simplify initialization of walk_data.
191 * tree-ssa-loop-im.c (determine_invariantness, move_computations):
192 Adjust initialization of walk_data.
193 * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
194 * tree-ssa-loop-phiopt.c (get_non_trapping):
195 Adjust initialization of walk_data.
196 * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
197 * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
198 it's not a domwalk callback.
199 (uncprop_initialize_block): Rename to...
200 (dse_enter_block): ... this, call uncprop_into_successor_phis.
201 (dse_finalize_block): Rename to...
202 (dse_leave_block): ... this.
203 (tree_ssa_uncprop): Simplify initialization of walk_data.
204 * Makefile.in: Adjust dependencies.
206 2009-06-27 Richard Earnshaw <rearnsha@arm.com>
208 * arm.md (casesi): Fix test for Thumb1.
209 (thumb1_casesi_internal_pic): Likewise.
210 (thumb1_casesi_dispatch): Likewise.
212 2009-06-26 Daniel Gutson <dgutson@codesourcery.com>
214 * config/arm/arm-cores.def: Added core cortex-m0.
215 * config/arm/arm-tune.md: Regenerated.
216 * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
218 2009-06-26 DJ Delorie <dj@redhat.com>
220 * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
222 * config/mep/mep.c (mep_bundle_insns): Account for the fact that
223 the scheduler doesn't tag jump insns.
225 2009-06-26 H.J. Lu <hongjiu.lu@intel.com>
227 * c-decl.c (merge_decls): Re-indent.
229 2009-06-26 Janis Johnson <janis187@us.ibm.com>
232 * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
233 Special-case decimal float constants.
235 2009-06-26 Richard Henderson <rth@redhat.com>
237 * function.h (struct function): Add cannot_be_copied_reason,
238 and cannot_be_copied_set.
239 * tree-inline.c (has_label_address_in_static_1): Rename from
240 inline_forbidden_p_2; don't set inline_forbidden_reason here.
241 (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
242 don't set inline_forbidden_reason.
243 (copy_forbidden): New function, split out of inline_forbidden_p.
244 (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
245 (inline_forbidden_p): Use copy_forbidden.
246 (tree_versionable_function_p): Likewise.
247 (inlinable_function_p): Merge into tree_inlinable_function_p.
248 (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
249 * ipa-cp.c (ipcp_versionable_function_p): New function.
250 (ipcp_cloning_candidate_p): Use it.
251 (ipcp_node_modifiable_p): Likewise.
253 2009-06-26 Olatunji Ruwase <tjruwase@google.com>
255 * builtins.c (expand_builtin_alloca): Handle builtin alloca
256 that is marked not to be inlined. Remove flag_mudflap use.
257 * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
258 (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
260 2009-06-26 Steve Ellcey <sje@cup.hp.com>
263 * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
264 * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
266 2009-06-26 Kai Tietz <kai.tietz@onevision.com>
268 * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
270 (__mingwthr_remove_key_dtor): Likewise.
272 2009-06-26 Richard Guenther <rguenther@suse.de>
274 * tree-ssa-structalias.c (do_ds_constraint): Simplify escape
277 2009-06-26 Steven Bosscher <steven@gcc.gnu.org>
280 * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
281 try the non-cond_exec path also.
283 2009-06-25 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
286 * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
287 (output_cbranch): Use new functions.
288 (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
291 2009-06-25 Michael Meissner <meissner@linux.vnet.ibm.com>
292 Pat Haugen <pthaugen@us.ibm.com>
293 Revital Eres <ERES@il.ibm.com>
295 * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
296 Change some of the functions called by macros to being called
297 through a pointer, so debug functions can be inserted if
298 -mdebug=addr or -mdebug=cost.
299 (rs6000_preferred_reload_class_ptr): Ditto.
300 (rs6000_secondary_reload_class_ptr): Ditto.
301 (rs6000_secondary_memory_needed_ptr): Ditto.
302 (rs6000_cannot_change_mode_class_ptr): Ditto.
303 (rs6000_secondary_reload_inner): Ditto.
304 (rs6000_legitimize_reload_address): Ditto.
305 (rs6000_legitimize_reload_address_ptr): Ditto.
306 (rs6000_mode_dependent_address): Ditto.
307 (rs6000_mode_dependent_address_ptr): Ditto.
309 * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
310 function to return true if the mode allows reg + integer
312 (virtual_stack_registers_memory_p): New function to return true if
313 the address refers to a virtual stack register.
314 (rs6000_legitimate_offset_address_p): Move code to say whether a
315 mode supports reg+int addressing to reg_offset_addressing_ok_p and
317 (rs6000_legitimate_address_p): Add checks for modes that only can
318 do reg+reg addressing. Start adding VSX support.
319 (rs6000_legitimize_reload_address): Ditto.
320 (rs6000_legitimize_address): Ditto.
321 (rs6000_debug_legitimate_address_p): New debug functions for
322 -mdebug=addr and -mdebug=cost.
323 (rs6000_debug_rtx_costs): Ditto.
324 (rs6000_debug_address_costs): Ditto.
325 (rs6000_debug_adjust_cost): Ditto.
326 (rs6000_debug_legitimize_address): Ditto.
327 (rs6000_legitimize_reload_address_ptr): Point to call normal
328 function or debug function. Make functions called via pointer
330 (rs6000_mode_dependent_address_ptr): Ditto.
331 (rs6000_secondary_reload_class_ptr): Ditto.
332 (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
333 (rs6000_emit_move): Add -mdebug=addr support. Change an abort
334 into a friendlier error.
335 (rs6000_init_builtins): Add initial VSX support.
336 (rs6000_adjust_cost): Fix some spacing issues.
338 * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
339 (REG_CLASS_NAMES): Ditto.
340 (REG_CLASS_CONTENTS): Ditto.
341 (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
342 pointer, to add -mdebug=addr support.
343 (CANNOT_CHANGE_MODE_CLASS): Ditto.
344 (SECONDARY_RELOAD_CLASS): Call through a pointer to add
345 -mdebug=addr support.
346 (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
347 (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
348 (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
350 * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
352 (bswapsi*): Set attribute types for load/store. Add combiner
353 patterns to eliminate zero extend on 64-bit.
354 (bswapdi*): Add support for swapping 64-bit values. Use ldbrx and
355 stdbrx if the hardware supports those instructions.
357 2009-06-25 Ian Lance Taylor <iant@google.com>
359 * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
360 (Link Options): Document -static-libstdc++.
362 2009-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
365 * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
366 DATA_ALIGNMENT instead.
368 2009-06-25 Richard Guenther <rguenther@suse.de>
370 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
371 indirect references against the callused/escaped solutions.
372 (call_may_clobber_ref_p_1): Likewise.
374 2009-06-25 Martin Jambor <mjambor@suse.cz>
376 PR tree-optimization/40493
377 * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
378 (enum unscalarized_data_handling): New type.
379 (handle_unscalarized_data_in_subtree): Return what has been done.
380 (load_assign_lhs_subreplacements): Handle left flushes differently.
381 (sra_modify_assign): Use unscalarized_data_handling, simplified
382 condition determining whether to remove the statement.
384 2009-06-25 Basile Starynkevitch <basile@starynkevitch.net>
386 * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
387 excerpt - @ should be doubled for texinfo.
389 2009-06-24 Ian Lance Taylor <iant@google.com>
391 * config/arc/arc.c: Include "df.h".
392 (arc_attribute_table): Make static. Move higher in file.
393 (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
394 (output_shift): Initialize n later to avoid warning.
395 * config/arm/arm.c (arm_attribute_table): Make static. Move
397 * config/avr/avr.c (avr_attribute_table): Make static. Move
399 (reg_class_tab): Change array type from int to enum reg_class.
400 (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
402 (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
403 (lshrhi3_out): Likewise.
404 (class_likely_spilled_p): Change return type to bool.
405 (avr_rtx_costs): Use local code variable with enum type.
406 * config/avr/avr.md (movmemhi): Use add_reg_note.
407 (andhi3, andsi3): Don't use AS2 with "and".
408 (iorhi3, iorsi3): Don't use AS2 with "or".
409 * config/avr/avr-protos.h (class_likely_spilled_p): Update
411 * config/crx/crx.c: Include "df.h".
412 (crx_attribute_table): Make static.
413 * config/m32r/m32r.c: Include "df.h".
414 (m32r_attribute_table): Make static. Move higher in file.
415 (pop): Use add_reg_note.
416 (block_move_call): Change 0 to LCT_NORMAL in function call.
417 * config/m32r/m32r.md (movsi_insn): Remove unused local value.
418 * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
419 * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
420 declare, not just when TREE_CODE is defined.
421 * config/m68hc11/m68hc11.c: Include "expr.h".
422 (m68hc11_attribute_table): Make static. Move higher in file.
423 (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
425 (m68hc11_register_indirect_p): Likewise.
426 (m68hc11_function_arg_padding): Change return type to enum
428 (emit_move_after_reload): Use add_reg_note.
429 (m68hc11_emit_logical): Change code parameter to enum rtx_code.
430 (m68hc11_split_logical): Likewise.
431 (m68hc11_rtx_costs): Add local code_and outer_code variables with
433 * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
434 to VOIDmode in function call.
435 * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
437 (m68hc11_split_logical): Update declaration.
438 (m68hc11_function_arg_padding): Update declaration.
439 * config/mcore/mcore.c (regno_reg_class): Change form array of int
440 to array of enum reg_class.
441 (mcore_attribute_table): Make static. Move higher in file.
442 (mcore_rtx_costs): Add cast to enum type.
443 * config/mcore/mcore.h (regno_reg_class): Update declaration.
444 (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
445 * config/sh/sh.c (sh_attribute_table): Make static. Move higher
447 * config/sh/predicates.md (trapping_target_operand): Rename and to
449 * config/sparc/sparc.c (sparc_attribute_table): Make static. Move
451 * config/spu/spu.c (spu_attribute_table): Make static. Move
453 * config/v850/v850.c (v850_attribute_table): Make static. Move
455 (v850_rtx_costs): Use local code with enum type.
456 (expand_epilogue): Add cast.
457 * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
459 2009-06-23 Takashi YOSHII <yoshii.takashi@renesas.com>
462 * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
463 -m2a-single-only and -m2a-nofpu.
464 * config/sh/sh.opt: Document m2a generates FPU code.
466 2009-06-24 Anatoly Sokolov <aesok@post.ru>
468 * defaults.h (CAN_ELIMINATE): Provide default.
469 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
470 * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
471 * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
472 * config/spu/spu.h (CAN_ELIMINATE): Delete.
473 * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
474 * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
475 * config/cris/cris.h (CAN_ELIMINATE): Delete.
476 * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
477 * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
478 * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
480 2009-06-24 DJ Delorie <dj@redhat.com>
482 * mep-ext-cop.cpu: Fix copyright notice.
483 * mep-default: Fix copyright notice.
484 * mep-core: Fix copyright notice.
485 * mep: Fix copyright notice.
486 * mep-ivc2: Fix copyright notice.
487 * mep-c5: Fix copyright notice.
489 2009-06-24 Denis Chertykov <chertykov@gmail.com>
491 * doc/contrib.texi (Contributors):
493 2009-06-24 Andreas Krebbel <krebbel1@de.ibm.com>
496 * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
497 src and dst operands if necessary.
499 2009-06-23 DJ Delorie <dj@redhat.com>
502 * config.gcc: Add mep support.
503 * recog.c: Resurrect validate_replace_rtx_subexp().
505 * config/mep/: Add new port:
506 * config/mep/constraints.md: New file.
507 * config/mep/default.h: New file.
508 * config/mep/intrinsics.h: New file.
509 * config/mep/intrinsics.md: New file.
510 * config/mep/ivc2-template.h: New file.
511 * config/mep/mep-c5.cpu: New file.
512 * config/mep/mep-core.cpu: New file.
513 * config/mep/mep-default.cpu: New file.
514 * config/mep/mep-ext-cop.cpu: New file.
515 * config/mep/mep-intrin.h: New file.
516 * config/mep/mep-ivc2.cpu: New file.
517 * config/mep/mep-lib1.asm: New file.
518 * config/mep/mep-lib2.c: New file.
519 * config/mep/mep-pragma.c: New file.
520 * config/mep/mep-protos.h: New file.
521 * config/mep/mep-tramp.c: New file.
522 * config/mep/mep.c: New file.
523 * config/mep/mep.cpu: New file.
524 * config/mep/mep.h: New file.
525 * config/mep/mep.md: New file.
526 * config/mep/mep.opt: New file.
527 * config/mep/predicates.md: New file.
528 * config/mep/t-mep: New file.
530 2009-06-23 Ian Lance Taylor <iant@google.com>
532 * configure.ac: Invoke AC_PROG_CXX. Separate C specific warnings
533 from loose_warn into c_loose_warn and from strict_warn into
534 c_strict_warn. Set and substitute warn_cxxflags. Check for
535 --enable-build-with-cxx. Set and substitute
536 ENABLE_BUILD_WITH_CXX. Set and substitute HOST_LIBS.
537 * Makefile.in (CXXFLAGS): New variable.
538 (C_LOOSE_WARN, C_STRICT_WARN): New variables.
539 (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN). Add $(C_STRICT_WARN) if
540 the default is the same as $(STRICT_WARN).
541 (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
543 (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
544 (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
545 (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
546 (HOST_LIBS): New variable.
547 (GCC_CFLAGS): Add $(C_LOOSE_WARN).
548 (ALL_CXXFLAGS): New variable.
549 (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
550 * doc/install.texi (Configuration): Document
551 --enable-build-with-cxx, --with-stage1-ldflags,
552 --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
553 * configure: Rebuild.
555 2009-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
557 * config/arm/arm.c (arm_override_options): Fix braces and formatting
558 from previous commit.
560 2009-06-23 Ian Lance Taylor <iant@google.com>
562 * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
564 2009-06-23 Ian Lance Taylor <iant@google.com>
566 * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
567 with ATTRIBUTE_UNUSED.
569 2009-06-23 Michael Meissner <meissner@linux.vnet.ibm.com>
570 Pat Haugen <pthaugen@us.ibm.com>
571 Revital Eres <eres@il.ibm.com>
573 * config.in (HAVE_AS_POPCNTD): Add default definition.
574 (HAVE_AS_LWSYNC): Ditto.
576 * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
578 (gcc_cv_as_powerpc_cmpb): Ditto.
579 (gcc_cv_as_powerpc_dfp): Ditto.
580 (gcc_cv_as_powerpc_vsx): Ditto.
581 (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
582 supporting the popcntd/lwsync instructions.
583 (gcc_cv_as_powerpc_lwsync): Ditto.
584 * configure: Regenerate.
586 * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
587 -mcpu=native and -mcpu=power7.
588 * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
590 * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
591 a variable instead of a mask to reduce the number of mask bits.
592 * config/rs6000/sysv4.opt (-mbit-align): Ditto.
595 * config/rs6000/rs6000.opt (-mupdate): Ditto.
596 (-mfused-madd): Ditto.
598 * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
600 (-mvsx): New switch for VSX instructions.
601 (-misel): Move from a variable to a mask to allow it to be set by
604 * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
605 function declaration to an array declaration.
606 (rs6000_hard_regno_nregs): New external array declaration.
608 * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
609 files included by rs6000.md.
611 * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
612 SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
614 * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
616 (rs6000_debug_reg): New -mdebug= variables.
617 (rs6000_debug_addr): Ditto.
618 (rs6000_debug_cost): Ditto.
619 (rs6000_pmode): New variable to hold Pmode.
620 (rs6000_pointer_size): New variable to hold POINTER_SIZE.
621 (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
622 calculated at compiler start.
623 (rs6000_hard_regno_nregs): Change function to an array which holds
624 HARD_REGNO_NREGS calculated at compiler start.
625 (rs6000_explicit_options): Delete isel field.
626 (rs6000_vector_unit): New array to hold which vector unit
627 supports arithmetic options for a given type.
628 (rs6000_vector_mem): New array to hold which vector unit supports
629 memory reference operations for a given type.
630 (rs6000_vector_align): New array to given the alignment of each
632 (power7_cost): New basic costs for power7.
633 (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
634 (rs6000_hard_regno_nregs_internal): New function, moved from
635 HARD_REGNO_NREGS, to calculate the number of registers each hard
636 register takes for each type.
637 (rs6000_debug_reg_print): New function for -mdebug=reg support.
638 (rs6000_debug_vector_unit): New array, map rs6000_vector to
640 (+rs6000_init_hard_regno_mode_ok): New function, move calculation
641 of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
642 unit information here so it is calculated once at compiler startup
644 (rs6000_override_options): Make -misel a target mask. Add more
645 power7 target masks. Setup Pmode and POINTER_SIZE. Add initial
646 VSX support. Add support for -mdebug=reg, -mdebug=addr, and
648 (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
649 (rs6000_handle_option): Move -misel from variable to target mask.
650 (rs6000_builtin_mask_for_load): Add VSX support.
651 (rs6000_conditional_register_usage): Ditto.
652 (USE_ALTIVEC_FOR_ARG_P): Ditto.
653 (function_arg_boundary): Ditto.
654 (rs6000_expand_builtin): Ditto.
655 (def_builtin): Make abort message a little friendlier.
656 (rs6000_emit_int_cmove): Add support for 64-bit isel.
658 * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
659 assembler support the popcntd instruction instead of a vsx
660 instruction to enable power7 support.
661 (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
662 (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
663 option to the assembler if -mcpu=native.
664 (ASM_CPU_NATIVE_SPEC): Ditto.
665 (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
667 (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
668 the lwsync instruction.
669 (enum processor_type): Add PROCESSOR_POWER7.
670 (rs6000_debug_reg): New -mdebug= options.
671 (rs6000_debug_addr): Ditto.
672 (rs6000_debug_cost): Ditto.
673 (rs6000_isel): Delete.
674 (enum rs6000_vector): New enum to say what vector unit we have.
675 (VECTOR_UNIT_*): New macros to say which vector unit has
676 arithmetic operations for a given type.
677 (VECTOR_MEM_*): New macros to say which vector unit has memory
678 operations for a given type.
679 (TARGET_LDBRX): Whether the machine supports the ldbrx
681 (TARGET_ISEL): Delete, -misel moved to be a mask.
682 (TARGET_ISEL64): New macro for 64-bit isel support.
683 (UNITS_PER_VSX_WORD): New macro.
684 (POINTER_SIZE): Move to be an external variable, rather than
685 calculating whether we are generating 32 ot 64-bit code.
687 (STACK_BOUNDARY): Add VSX support.
688 (LOCAL_ALIGNMENT): Ditto.
689 (SLOW_UNALIGNED_ACCESS): Ditto.
690 (VSX_REGNO_P): New macro for VSX support.
691 (VFLOAT_REGNO_P): Ditto.
692 (VINT_REGNO_P): Ditto.
693 (VLOGICAL_REGNO_P): Ditto.
694 (VSX_VECTOR_MODE): Ditto.
695 (VSX_SCALAR_MODE): Ditto.
697 (VSX_MOVE_MODE): Ditto.
698 (VSX_REG_CLASS_P): Ditto.
699 (HARD_REGNO_NREGS): Instead of calling a function, use an array
701 (UNITS_PER_SIMD_WORD): Add VSX support.
702 (MODES_TIEABLE_P): Ditto.
703 (STARTING_FRAME_OFFSET): Ditto.
704 (STACK_DYNAMIC_OFFSET): Ditto.
705 (EPILOGUE_USES): Ditto.
706 (REGNO_REG_CLASS): Move to array lookup.
707 (CLASS_MAX_NREGS): Ditto.
708 (rs6000_vector_reg_class): Add declaration.
709 (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
710 overlap with the floating point and Altivec registers.
712 * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
714 * config/rs6000/driver-rs6000.c (asm_names): New static array to
715 give the appropriate asm switches if -mcpu=native.
716 (host_detect_local_cpu): Add support for "asm".
717 (host_detect_local_cpu): Follow GNU code guidelines for name.
719 * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
720 -mbit-word to a variable instead of being a target mask.
722 * config/rs6000/sync.md (lwsync): If the assembler supports it,
723 emit the lwsync instruction instead of emitting the instruction as
726 * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
727 fixuns_trundfsi2, move expander into rs6000.md.
729 * config/rs6000/rs6000.md (cpu): Add power7.
730 (sel, *ptrsize): New mode attributes for 32/64-bit isel.
731 (logical predicate patterns): Change the single instruction
732 primitives that set CR0 to be fast_compare instead of compare.
734 (popcntwsi2): Add support for ISA 2.06 popcount instructions.
736 (popcount<mode>): Ditto.
737 (floating multiply/add insns): Name the floating point
739 (isel_signed_<mode>): Add support for -misel on 64-bit systems.
740 (isel_unsigned_<mode>): Ditto.
741 (fixuns_trundfsi2): Move expander here from spe.md.
742 (smindi3): Define if we have -misel on 64-bit systems.
747 2009-06-23 Anatoly Sokolov <aesok@post.ru>
749 * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
751 * config/avr/avr.c (avr_current_device): New variable.
752 (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
753 (avr_arch, mcu_type_s): Move to avr.h.
754 * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
755 default_data_section_start fields.
756 (avr_arch): Moved from avr.c.
757 (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
759 (avr_current_device, avr_mcu_types, avr_arch_types,
760 avr_device_to_arch, avr_device_to_data_start,
761 avr_device_to_startfiles, avr_device_to_devicelib): Declare.
762 (EXTRA_SPEC_FUNCTIONS): Define.
763 (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
764 options mapping. Use device_to_arch and device_to_data_start insted.
765 (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
766 (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
767 * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
768 * config/avr/driver-avr.c: New file.
769 * config/avr/avr-devices.c: New file.
771 2009-06-23 Jakub Jelinek <jakub@redhat.com>
773 * var-tracking.c (unshare_variable): Force initialized to
774 be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
775 (set_variable_part): Likewise.
776 (struct variable_union_info): Remove pos_src field.
777 (vui_vec, vui_allocated): New variables.
778 (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
779 unconditionally. Avoid XCVECNEW/free for every sorting, for dst_l
780 == 1 use a simpler sorting algorithm. Compute pos field right
781 away, don't fill in pos_src. For dst_l == 2 avoid qsort.
782 Avoid quadratic comparison if !flag_var_tracking_uninit.
783 (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
784 unshare_variable unconditionally.
785 (dataflow_set_different_2): Removed.
786 (dataflow_set_different): Don't traverse second hash table.
787 (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
788 unconditionally to var_reg_set or var_mem_set.
789 (emit_notes_in_bb): Likewise.
790 (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
792 (emit_note_insn_var_location): Don't set initialized to
793 VAR_INIT_STATUS_INITIALIZED early.
794 (vt_finalize): Free vui_vec if needed, clear vui_vec and
796 * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
798 * tree-object-size.c (addr_object_size): Instead of checking
799 for non-NULL TREE_CHAIN of the FIELD_DECL check that there
800 are no FIELD_DECLs following it.
802 2009-06-23 Andreas Krebbel <krebbel1@de.ibm.com>
804 * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
805 order to match bswaps with signed source operands.
807 2009-06-23 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
809 * sdbout.c (sdbout_one_type): Fix braces in switch.
811 2009-06-23 Richard Guenther <rguenther@suse.de>
813 * tree-ssa-structalias.c (struct variable_info): Add is_global_var
815 (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
816 readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
817 var_callused, callused_tree, var_storedanything, storedanything_tree,
818 var_integer, integer_tree): Remove global variables.
819 (new_var_info): Do not pass new id, append the new var to the
820 global variable vector.
821 (do_ds_constraint): Use is_global_var member of the variable-info.
822 (new_scalar_tmp_constraint_exp): Adjust.
823 (create_function_info_for): Likewise.
824 (create_variable_info_for): Likewise.
825 (find_what_var_points_to): Remove dead code.
826 (init_base_vars): Simplify.
827 (compute_points_to_sets): Adjust.
829 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
831 * combine.c (try_combine): Dump information about the insns we're
834 2009-06-22 Adam Nemet <anemet@caviumnetworks.com>
836 * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
837 check when calling force_to_mode on TRUNCATE's operand.
839 2009-06-22 Ian Lance Taylor <iant@google.com>
841 * config/rs6000/rs6000.opt: Move msched-epilog before
844 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
846 * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
848 2009-06-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
850 * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
851 override library linkage flags such as -static-libgcc or
854 2009-06-22 Maxim Kuvyrkov <maxim@codesourcery.com>
856 * config/m68k/m68k-devices.def: Add line for MCF5221x.
858 2009-06-22 Ian Lance Taylor <iant@google.com>
860 * config/linux.opt: Put mglibc ahead of muclibc.
862 * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
865 2009-06-22 Matthias Klose <doko@ubuntu.com>
867 * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
869 2009-06-22 Steven Bosscher <steven@gcc.gnu.org>
872 * c-parser.c (c_parser_objc_message_args): Return error_mark_node
873 instead of NULL if a parser error occurs.
875 2009-06-22 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
877 * dwarf2out.c (dwarf2_debug_hooks): Initialize
878 non-DWARF2_DEBUGGING_INFO version.
880 2009-06-22 Kai Tietz <kai.tietz@onevision.com>
882 * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
883 i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
885 * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
886 (LIBGCC2_TF_CEXT): Define.
889 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
892 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
894 2009-06-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
896 * config/arm/arm.c (arm_override_options): Disable
897 -mcaller-super-interworking and -mcallee-super-interworking.
898 * doc/invoke.texi (ARM Options): Document this.
900 2009-06-22 Nathan Sidwell <nathan@codesourcery.com>
902 * config/arm/arm.c (arm_print_operand): Deal with HIGH.
903 * config/arm/constraints.md (j): New constraint for movw operands.
904 (N): Remove thumb2 meaning.
905 * config/arm/arm.md (*arm_movw): Delete.
906 (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
907 * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
908 * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
910 2009-06-22 Martin Jambor <mjambor@suse.cz>
912 PR tree-optimization/40492
913 * tree-sra.c (sra_modify_assign): Pass zero offsets to
914 build_ref_for_offset.
916 2009-06-22 Shujing Zhao <pearly.zhao@oracle.com>
918 * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
919 JUMP_TABLE_DATA_P predicates where applicable.
920 * auto-inc-dec.c: Ditto.
922 * caller-save.c: Ditto.
924 * cfgcleanup.c: Ditto.
925 * cfglayout.c: Ditto.
928 * combine-stack-adj.c: Ditto.
934 * dwarf2asm.c: Ditto.
935 * dwarf2out.c: Ditto.
948 * ira-costs.c: Ditto.
949 * ira-lives.c: Ditto.
952 * lower-subreg.c: Ditto.
953 * modulo-sched.c: Ditto.
955 * postreload.c: Ditto.
956 * print-rtl.c: Ditto.
965 * sched-vis.c: Ditto.
967 * sel-sched-ir.c: Ditto.
968 * simplify-rtx.c: Ditto.
969 * targhooks.c: Ditto.
970 * var-tracking.c: Ditto.
971 * vmsdbgout.c: Ditto.
973 2009-06-22 Matthias Klose <doko@ubuntu.com>
975 * Makefile.in (install-plugin): Always use DESTDIR.
977 2009-06-22 Olivier Hainque <hainque@adacore.com>
979 * config/pa/pa.c (output_call): Don't optimize post call jumps
980 into return address adjustments if the call may throw.
982 2009-06-21 Richard Earnshaw <rearnsha@arm.com>
984 * arm.c (thumb1_output_casesi): New function.
985 * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
986 optimizing for size or PIC.
987 (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
988 * arm.md (UNSPEC_THUMB1_CASESI): New constant.
989 (casesi): Handle Thumb-1 when optimizing for size or PIC.
990 (thumb1_casesi_internal_pic): New expand rule.
991 (thumb1_casesi_dispatch): New pattern.
992 * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
994 * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
995 in the text seciton when PIC or optimizing for size.
996 * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
997 * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
998 preservation properties of code.
999 (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
1000 (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
1001 (__gnu_thumb1_case_si): New function.
1002 * t-arm (LIB1ASMSRC): Define here.
1003 (LIB1ASMFUNCS): Add some common functions.
1004 * t-arm-elf (LIB1ASMSRC): Delete.
1005 (LIB1ASMFUNCS): Append to existing set.
1006 * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1007 * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1008 * t-symbian (LIB1ASMFUNCS): Likewise.
1009 * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1010 * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
1012 2009-06-21 Richard Guenther <rguenther@suse.de>
1014 PR tree-optimization/38729
1015 * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
1016 to loops with a single exit if -fno-expensive-optimizations.
1018 2009-06-21 Jakub Jelinek <jakub@redhat.com>
1020 * var-tracking.c (struct shared_hash_def, shared_hash): New types.
1021 (dataflow_set): Change vars type from htab_t to shared_hash.
1022 (shared_hash_pool, empty_shared_hash): New variables.
1023 (vars_clear): Removed.
1024 (shared_hash_shared, shared_hash_htab, shared_hash_copy,
1025 shared_hash_find_slot_unshare, shared_hash_find_slot,
1026 shared_hash_find_slot_noinsert, shared_hash_find): New
1028 (shared_hash_unshare, shared_hash_destroy): New functions.
1029 (unshare_variable): Unshare set->vars if shared, use
1031 (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
1032 (get_init_value, find_src_set_src, dump_dataflow_set,
1033 clobber_variable_part, emit_notes_for_differences): Use
1035 (dataflow_set_init): Remove second argument, set vars to
1036 empty_shared_hash instead of creating a new htab.
1037 (dataflow_set_clear): Call shared_hash_destroy and set vars
1038 to empty_shared_hash instead of calling vars_clear.
1039 (dataflow_set_copy): Don't call vars_copy, instead just share
1040 the src htab with dst.
1041 (variable_union): Use shared_hash_*, use initially NO_INSERT
1042 lookup if set->vars is shared. Don't keep slot cleared before
1043 calling unshare_variable. Unshare set->vars if needed.
1044 Even ->refcount == 1 vars must be unshared if set->vars is shared
1045 and var needs to be modified.
1046 (variable_canonicalize): New function.
1047 (dataflow_set_union): If dst->vars is empty, just share src->vars
1048 with dst->vars and traverse with variable_canonicalize to canonicalize
1049 and unshare what is needed.
1050 (dataflow_set_different): If old_set and new_set use the same shared
1051 htab, they aren't different. If number of htab elements is different,
1052 htabs are different. Use shared_hash_*.
1053 (dataflow_set_destroy): Call shared_hash_destroy instead of
1055 (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
1056 second argument to dataflow_set_init.
1057 (vt_initialize): Likewise. Initialize shared_hash_pool and
1058 empty_shared_hash, move bb in/out initialization afterwards.
1059 Use variable_htab_free instead of NULL as changed_variables del hook.
1060 (variable_was_changed): Change type of second argument to pointer to
1061 dataflow_set. When inserting var into changed_variables, bump
1062 refcount. Unshare set->vars if set is shared htab and slot needs to
1064 (set_variable_part): Use shared_hash_*, use initially NO_INSERT
1065 lookup if set->vars is shared. Unshare set->vars if needed.
1066 Even ->refcount == 1 vars must be unshared if set->vars is shared
1067 and var needs to be modified. Adjust variable_was_changed caller.
1068 (delete_variable_part): Use shared_hash_*. Even ->refcount == 1
1069 vars must be unshared if set->vars is shared and var needs to be
1070 modified. Adjust variable_was_changed caller.
1071 (emit_note_insn_var_location): Don't pool_free var.
1072 (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
1074 (vt_finalize): Call htab_delete on empty_shared_hash->htab and
1075 free_alloc_pool on shared_hash_pool.
1077 2009-06-20 Anthony Green <green@moxielogic.com>
1079 * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
1080 * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
1082 2009-06-20 Richard Guenther <rguenther@suse.de>
1084 * tree-ssa-structalias.c (find_func_aliases): For memset use
1085 a constraint from NULL if we memset to zero.
1086 * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
1087 we explicitly handle that do not read from memory.
1088 (call_may_clobber_ref_p_1): Properly handle builtins that may
1091 2009-06-20 Richard Guenther <rguenther@suse.de>
1093 PR tree-optimization/40495
1094 * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
1095 (new_scalar_tmp_constraint_exp): New function.
1096 (process_constraint): Do not create temporary decls.
1097 (process_all_all_constraints): Likewise.
1098 (handle_const_call): Likewise.
1099 (create_function_info_for): Do not set decl.
1101 2009-06-19 Ian Lance Taylor <iant@google.com>
1103 * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
1104 (rs6000_attribute_table): Make static; move before use.
1106 2009-06-19 Eric Botcazou <ebotcazou@adacore.com>
1108 * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
1109 <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
1110 Propagate the TREE_READONLY flag without overwriting it.
1111 (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
1112 Propagate the TREE_READONLY flag onto the result.
1113 (process_call_operands): Move around. Use correct constant value.
1115 2009-06-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
1118 * config/arm/arm.c (thumb_shiftable_const): Truncate val to
1120 * config/arm/arm.md: Likewise.
1122 2009-06-19 Ian Lance Taylor <iant@google.com>
1124 * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
1125 to GIMPLE_ERROR_MARK.
1127 * c-typeck.c (build_conditional_expr): Add op1_original_type and
1128 op2_original_type parameters. Warn about using different enum
1130 * c-parser.c (c_parser_conditional_expression): Pass original
1131 types to build_conditional_expr.
1132 * c-tree.h (build_conditional_expr): Update declaration.
1134 2009-06-19 Ian Lance Taylor <iant@google.com>
1136 * config/i386/i386.c (ix86_function_specific_save): Test that
1137 fields match values, rather than testing the values are in a
1140 2009-06-19 Richard Guenther <rguenther@suse.de>
1142 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
1144 (ptr_derefs_may_alias_p): Likewise.
1145 (ptr_deref_may_alias_ref_p_1): New function.
1146 (ptr_deref_may_alias_ref_p): Likewise.
1147 (ref_maybe_used_by_call_p_1): Handle builtins that are not
1148 covered by looking at the ESCAPED solution.
1149 (call_may_clobber_ref_p_1): Likewise.
1150 * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
1151 Handle NULL_TREE offset. Do not produce redundant constraints.
1152 (process_all_all_constraints): New helper function.
1153 (do_structure_copy): Use it.
1154 (handle_lhs_call): Likewise.
1155 (find_func_aliases): Handle some builtins with pointer arguments
1156 and/or return values explicitly.
1158 2009-06-19 Ian Lance Taylor <iant@google.com>
1160 * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
1162 2009-06-19 Ian Lance Taylor <iant@google.com>
1164 * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
1166 2009-06-19 Ian Lance Taylor <iant@google.com>
1168 * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
1169 * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
1172 * c-decl.c (finish_decl): If -Wc++-compat, warn about
1173 uninitialized const.
1175 2009-06-19 Ian Lance Taylor <iant@google.com>
1177 * dse.c (struct store_info): Rename bitmap field to bmap. Change
1180 * c-decl.c (in_struct, struct_types): Remove.
1181 (struct c_binding): Add in_struct field.
1182 (c_binding_ptr): Define type, along with VEC.
1183 (struct c_struct_parse_info): Define.
1184 (struct_parse_info): New static variable.
1185 (bind): Initialize in_struct field.
1186 (start_struct): Remove enclosing_in_struct and
1187 enclosing_struct_types parameters. Add
1188 enclosing_struct_parse_info parameter. Change all callers. Set
1189 struct_parse_info rather than in_struct and struct_types.
1190 (grokfield): If -Wc++-compat and there is a symbol binding for the
1191 field name, set the in_struct flag and push it on the
1192 struct_parse_info->fields vector.
1193 (warn_cxx_compat_finish_struct): New static function.
1194 (finish_struct): Remove enclosing_in_struct and
1195 enclosing_struct_types parameters. Add
1196 enclosing_struct_parse_info parameter. Change all callers. Don't
1197 set C_TYPE_DEFINED_IN_STRUCT here. Call
1198 warn_cxx_compat_finish_struct. Free struct_parse_info and set to
1199 parameter. Only push on struct_types if warn_cxx_compat.
1200 (finish_enum): Only push on struct_types if warn_cxx_compat.
1201 (declspecs_add_type): Add loc parameter. Change all callers.
1202 Change all error calls to error_at. Pass loc, not input_location,
1203 to pedwarn calls. Warn if -Wc++-compat and a typedef name is
1204 defined in a struct. If -Wc++-compat and parsing a struct, record
1205 that a typedef name was used.
1206 * c-parser.c (c_parser_declspecs): Get location to pass to
1208 (c_parser_struct_or_union_specifier): Update calls to start_struct
1210 * c-tree.h (struct c_struct_parse_info): Declare.
1211 (finish_struct, start_struct): Update declarations.
1212 (declspecs_add_type): Update declaration.
1214 2009-06-19 Ian Lance Taylor <iant@google.com>
1216 * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
1217 variable with an anonymous type.
1219 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
1221 * see.c: Remove for real.
1223 2009-06-19 Uros Bizjak <ubizjak@gmail.com>
1225 * optabs.h (enum optab_index): Add new OTI_significand.
1226 (significand_optab): Define corresponding macro.
1227 * optabs.c (init_optabs): Initialize significand_optab.
1228 * genopinit.c (optabs): Implement significand_optab using
1229 significand?f2 patterns.
1230 * builtins.c (expand_builtin_mathfn): Handle
1231 BUILT_IN_SIGNIFICAND{,F,L}.
1232 (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
1233 expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
1235 * config/i386/i386.md (significandxf2, significand<mode>2): New
1236 expanders to implement significandf, significand and significandl
1237 built-ins as inline x87 intrinsics.
1239 2009-06-18 Anatoly Sokolov <aesok@post.ru>
1241 * config/avr/avr.c (avr_override_options): Remove setting value of
1242 PARAM_INLINE_CALL_COST.
1244 2009-06-18 Richard Henderson <rth@redhat.com>
1247 * tree-pass.h (TDF_ASMNAME): New.
1248 * tree-dump.c (dump_options): Add asmname.
1249 * doc/invoke.texi: Document it.
1251 * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
1252 (dump_decl_name): ...here.
1253 (dump_function_name): New flags arg; mind TDF_ASMNAME.
1254 (dump_generic_node): Update dump_function_name calls.
1255 (print_call_name): New flags arg; update all dump calls.
1256 * diagnostic.h (print_call_name): Update.
1257 * gimple-pretty-print.c (dump_gimple_call): Update.
1259 2009-06-18 H.J. Lu <hongjiu.lu@intel.com>
1262 * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
1264 2009-06-18 Diego Novillo <dnovillo@google.com>
1266 * doc/plugins.texi: Document plugin_is_GPL_compatible.
1267 * plugin.c (str_license): Declare.
1268 (try_init_one_plugin): Assert that the symbol
1269 'plugin_is_GPL_compatible' exists.
1271 2009-06-18 Sergei Dyshel <sergeid@il.ibm.com>
1274 * Makefile.in (OBJS-common): Remove see.o.
1276 * common.opt (fsee): Mark as preserved for backward compatibility.
1277 * opts.c (common_handle_option): Add OPT_fsee to the backward
1278 compatibility section.
1279 * passes.c (init_optimization_passes, pass_see): Remove pass.
1280 * timevar.def (TV_SEE): Remove.
1281 * tree-pass.h (pass_see): Remove declaration.
1282 * doc/invoke.texi (-fsee): Remove documentation.
1284 2009-06-18 Martin Jambor <mjambor@suse.cz>
1286 * tree-sra.c: Include statistics.h
1287 (sra_stats): New variable.
1288 (sra_initialize): Clear sra_stats.
1289 (create_access_replacement): Increment sra_stats.replacements.
1290 (get_access_replacement): Do not return twice.
1291 (analyze_all_variable_accesses): Increment statistics counter by the
1292 number of scalarized aggregates.
1293 (generate_subtree_copies): Increment sra_stats.subtree_copies.
1294 (sra_modify_expr): Increment sra_stats.exprs.
1295 (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
1296 (sra_modify_assign): Increment sra_stats.exprs,
1297 sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
1298 (perform_intra_sra): Update statistics counters.
1299 * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
1301 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
1303 * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
1304 (arm_scalar_mode_supported_p): New function.
1306 2009-06-18 Paul Brook <paul@codesourcery.com>
1307 Sandra Loosemore <sandra@codesourcery.com>
1309 * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
1310 (__extendhfsf2, __truncsfhf2): Define.
1311 * config/arm/fp16.c: New file.
1312 * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
1313 * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
1315 2009-06-18 Sandra Loosemore <sandra@codesourcery.com>
1317 * doc/extend.texi (Half-Precision): New section.
1318 * doc/invoke.texi (Option Summary): List -mfp16-format.
1319 (ARM Options): List neon-fp16 as -mfpu value. Document -mfp16-format.
1320 * config/arm/arm.opt (mfp16-format=): New.
1321 * config/arm/arm.c: Include intl.h.
1322 (TARGET_INVALID_PARAMETER_TYPE): Redefine.
1323 (TARGET_INVALID_RETURN_TYPE): Redefine.
1324 (TARGET_PROMOTED_TYPE): Redefine.
1325 (TARGET_CONVERT_TO_TYPE): Redefine.
1326 (arm_fp16_format): Define.
1327 (all_fpus): Add entry for neon-fp16.
1328 (fp_model_for_fpu): Likewise.
1329 (struct fp16_format): Declare.
1330 (all_fp16_formats): Define.
1331 (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
1333 (arm_override_options): Set arm_fp16_format. Call sorry for fp16
1335 (arm_legitimate_index_p): Treat HFmode like HImode.
1336 (thumb1_legitimate_address_p): Make it recognize HFmode constants.
1337 (coproc_secondary_reload_class): Special-case HFmode.
1338 (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
1339 (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
1340 (arm_init_fp16_builtins): New.
1341 (arm_init_builtins): Call it.
1342 (arm_invalid_parameter_type): New.
1343 (arm_invalid_return_type): New.
1344 (arm_promoted_type): New.
1345 (arm_convert_to_type).
1346 (arm_file_start): Deal with neon-fp16 as fpu_name. Emit tag for fp16
1348 (arm_emit_fp16_const): New function.
1349 (arm_mangle_type): Mangle __fp16 as "Dh".
1350 * config/arm/arm.h (TARGET_VFPD32): Make it know about
1352 (TARGET_NEON_FP16): New.
1353 (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
1354 (enum fputype): Add FPUTYPE_NEON_FP16.
1355 (enum arm_fp16_format_type): Declare.
1356 (arm_fp16_format): Declare.
1357 (LARGEST_EXPONENT_IS_NORMAL): Define.
1358 * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
1359 * config/arm/arm-modes.def (HFmode): Define.
1360 * config/arm/vfp.md: (*movhf_vfp): New.
1363 * config/arm/arm.md: (fpu): Add neon_fp16.
1364 (floatsihf2, floatdihf2): New.
1365 (fix_trunchfsi2, fix_trunchfdi2): New.
1369 (*arm32_movhf): New.
1370 (*thumb1_movhf): New.
1371 (consttable_2): Add check for HFmode constants.
1372 (consttable_4): Handle HFmode constants.
1374 2009-06-18 Uros Bizjak <ubizjak@gmail.com>
1376 * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
1378 2009-06-17 Olivier Hainque <hainque@adacore.com>
1380 * collect2.c (main): Use CONST_CAST2 to perform char ** to
1381 const char ** conversion in AIX specific section.
1383 2009-06-17 H.J. Lu <hongjiu.lu@intel.com>
1385 * config/i386/i386.c (ix86_special_builtin_type): Remove
1386 UINT64_FTYPE_PINT. Add UINT64_FTYPE_PUNSIGNED.
1387 (bdesc_special_args): Updated.
1388 (ix86_init_mmx_sse_builtins): Likewise.
1389 (ix86_expand_special_args_builtin): Likewise.
1391 2009-06-17 Richard Henderson <rth@redhat.com>
1393 * tree-pretty-print.c (maybe_dump_asm_name): New.
1394 (dump_decl_name): Use it.
1395 (PRINT_FUNCTION_NAME): Merge into...
1396 (dump_function_name): ... here. Use maybe_dump_asm_name.
1398 2009-06-17 Cary Coutant <ccoutant@google.com>
1400 * dbxout.c (dbxout_source_line): Add is_stmt parameter.
1402 * debug.c (struct gcc_debug_hooks): Change placeholder for
1404 (debug_nothing_int_charstar_int): Replaced by...
1405 (debug_nothing_int_charstar_int_bool): ...this.
1406 * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
1407 source_line prototype.
1408 (debug_nothing_int_charstar_int): Replaced by...
1409 (debug_nothing_int_charstar_int_bool): ...this.
1410 * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
1411 * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
1412 Output is_stmt operand when necessary.
1413 * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
1414 (notice_source_line): Add is_stmt parameter.
1415 * sdbout.c (sdbout_source_line): Add is_stmt parameter.
1416 * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
1418 * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
1419 * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
1421 2009-06-17 Ian Lance Taylor <iant@google.com>
1423 * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
1425 (struct store_by_pieces_d): Rename from store_by_pieces. Change
1428 2009-06-17 Adam Nemet <anemet@caviumnetworks.com>
1430 * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
1431 STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
1432 tree_strip_sign_nop_conversions and
1433 tree_ssa_strip_useless_type_conversions rather than stripping
1434 the operations here.
1435 (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
1437 * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
1438 * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
1439 * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
1440 tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
1443 2009-06-17 Michael Eager <eager@eagercon.com>
1445 * config/rs6000/constraints.md (register_constraint "d"): New.
1446 * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
1447 truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
1448 *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
1449 *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
1450 trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
1451 divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
1452 fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
1453 * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
1454 __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
1455 __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
1457 * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
1458 *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
1459 *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
1460 *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
1461 *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1462 fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
1463 stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
1464 *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
1465 *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
1466 trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
1467 *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
1468 *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
1469 *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
1470 * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
1472 2009-06-16 Ian Lance Taylor <iant@google.com>
1474 * profile.c (total_num_never_executed): Don't define.
1475 (compute_branch_probabilities): Don't count or print
1477 (init_branch_prob): Don't set total_num_never_executed.
1478 (end_branch_prob): Don't print total_num_never_executed.
1480 2009-06-17 David Daney <ddaney@caviumnetworks.com>
1482 * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
1484 2009-06-17 David Edelsohn <edelsohn@gnu.org>
1486 * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
1487 (nabstd2_fpr): Same.
1489 2009-06-17 Steve Ellcey <sje@cup.hp.com>
1491 * expr.c (expand_assignment): Change complex type check.
1493 2009-06-17 Basile Starynkevitch <basile@starynkevitch.net>
1495 * doc/plugins.texi (Building GCC plugins): Added new section.
1497 2009-06-17 Ian Lance Taylor <iant@google.com>
1499 * c-pch.c (get_ident): Don't set size of templ array.
1500 (pch_init): Don't set size of partial_pch array.
1502 * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
1503 string constant to intialize an array whose size is the length of
1506 2009-06-17 Richard Guenther <rguenther@suse.de>
1508 PR tree-optimization/40389
1509 * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
1510 to addressable types.
1511 * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
1513 2009-06-17 Richard Guenther <rguenther@suse.de>
1516 * tree-chrec.h (build_polynomial_chrec): If we cannot determine
1517 if there is no evolution of left in the loop bail out.
1518 * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
1519 chrec_fold_multiply.
1521 2009-06-16 J"orn Rennecke <joern.rennecke@arc.com>
1522 Janis Johnson <janis187@us.ibm.com>
1525 * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
1526 for the symbol ref of a constant that is the source of a move
1527 - nor for any other not-obvious-label-ref constants.
1529 2009-06-16 Olatunji Ruwase <tjruwase@google.com>
1531 * plugin.c (position_pass): Skip newly inserted pass during list
1532 traversal to avoid repeated insertion.
1534 2009-06-16 Ian Lance Taylor <iant@google.com>
1536 * vec.h (VEC_stack_alloc): Define different version if
1537 GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
1538 (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
1539 (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
1540 (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
1542 2009-06-16 H.J. Lu <hongjiu.lu@intel.com>
1544 * config.gcc (extra_headers): Add ia32intrin.h for x86.
1546 * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
1547 IX86_BUILTIN_BSRDI. IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
1548 IX86_BUILTIN_RDTSCP. IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
1549 IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
1550 (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
1551 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
1552 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
1553 (bdesc_special_args): Add __builtin_ia32_rdtsc and
1554 __builtin_ia32_rdtscp.
1555 (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
1556 __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
1557 and __builtin_ia32_rorhi.
1558 (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
1559 UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
1560 INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
1561 (ix86_expand_args_builtin): Likewise.
1562 (ix86_expand_special_args_builtin): Likewise.
1564 * config/i386/i386.md (UNSPECV_RDTSCP): New.
1565 (UNSPECV_RDTSC): Likewise.
1566 (UNSPECV_RDPMC): Likewise.
1567 (*bsr): Renamed to ...
1569 (*bsr_rex64): Renamed to ...
1573 (*rdpmc_rex64): Likewise.
1576 (*rdtsc_rex64): Likewise.
1578 (*rdtscp): Likewise.
1579 (*rdtscp_rex64): Likewise.
1581 * config/i386/ia32intrin.h: New.
1583 * config/i386/x86intrin.h: Include <ia32intrin.h>.
1585 2009-06-16 Ian Lance Taylor <iant@google.com>
1587 * ira-build.c (copy_info_to_removed_store_destinations):
1588 Initialize parent_a.
1590 2009-06-16 Ian Lance Taylor <iant@google.com>
1592 * c-decl.c (grokdeclarator): Change size_varies to bool.
1594 2009-06-16 Ian Lance Taylor <iant@google.com>
1596 * sel-sched.c: Make forward declarations of move_op_hooks and
1597 fur_hooks explicitly extern.
1599 2009-06-16 Ian Lance Taylor <iant@google.com>
1601 * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
1602 * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
1604 2009-06-16 Ian Lance Taylor <iant@google.com>
1606 * resource.c (mark_referenced_resources): Change
1607 include_delayed_effects parameter to bool. Change all callers.
1608 (mark_end_of_function_resources): Likewise.
1609 * reorg.c (insn_references_resource_p): Likewise.
1610 (insn_sets_resource_p): Likewise.
1611 * resource.h (mark_referenced_resources): Update declaration.
1612 (mark_end_of_function_resources): Update declaration.
1614 2009-06-16 David Edelsohn <edelsohn@gnu.org>
1616 * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
1618 2009-06-16 David Edelsohn <edelsohn@gnu.org>
1620 * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
1621 GCC can bootstrap on AIX with GNU Binutils 2.20.
1623 2009-06-16 Ian Lance Taylor <iant@google.com>
1625 * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
1627 2009-06-16 Ian Lance Taylor <iant@google.com>
1629 * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
1630 inline, not extern inline.
1631 (exact_log2): Likewise.
1632 * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
1634 (exact_log2): Likewise, but don't test CTZ_HWI.
1636 2009-06-16 Ian Lance Taylor <iant@google.com>
1638 * bitmap.c (bitmap_clear): Don't declare as inline.
1639 * gimple.c (gimplify_assign): Likewise.
1640 * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
1641 * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
1642 (sched_scan_info): Remove duplicate definition.
1644 2009-06-16 Ian Lance Taylor <iant@google.com>
1646 * c-common.c (skip_evaluation): Don't define.
1647 (c_inhibit_evaluation_warnings): Define global variable.
1648 (overflow_warning): Check c_inhibit_evaluation_warnings rather
1649 than skip_evaluation.
1650 (convert_and_check, warn_for_div_by_zero): Likewise.
1651 * c-common.h (skip_evaluation): Don't declare.
1652 (c_inhibit_evaluation_warnings): Declare.
1653 * c-parser.c (c_parser_typeof_specifier): Set
1654 c_inhibit_evaluation_warnings rather than skip_evaluation.
1655 (c_parser_conditional_expression): Likewise.
1656 (c_parser_binary_expression): Likewise.
1657 (c_parser_sizeof_expression): Likewise.
1658 (c_parser_alignof_expression): Likewise.
1659 * c-typeck.c (build_indirect_ref): Check
1660 c_inhibit_evaluation_warnings rather than skip_evaluation.
1661 (build_conditional_expr, build_binary_op): Likewise.
1663 2009-06-16 Richard Guenther <rguenther@suse.de>
1665 * tree-ssa-alias.c (is_escape_site): Remove.
1666 * tree-ssa-alias.h (enum escape_type): Remove.
1667 (is_escape_site): Likewise.
1668 * tree-ssa-structalias.c (find_func_aliases): Handle escapes
1669 via casts and asms without deferring to is_escape_site.
1671 2009-06-16 Jakub Jelinek <jakub@redhat.com>
1674 * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
1675 use gen_lowpart if op0 has complex mode.
1677 2009-06-16 Richard Guenther <rguenther@suse.de>
1679 * tree-ssa-structalias.c (do_ds_constraint): Stores in global
1680 variables add them to ESCAPED.
1681 (find_func_aliases): Do not make all indirectly stored values escaped.
1683 2009-06-16 Rafael Avila de Espindola <espindola@google.com>
1685 * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
1688 2009-06-16 Martin Jambor <mjambor@suse.cz>
1690 PR tree-optimization/40432
1691 * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
1692 check whether we need to force gimple register operand.
1694 2009-06-16 Martin Jambor <mjambor@suse.cz>
1696 PR tree-optimization/40413
1697 * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
1698 build_ref_for_offset.
1699 (propagate_subacesses_accross_link): Fix a typo in a comment.
1701 2009-06-16 Ira Rosen <irar@il.ibm.com>
1703 * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
1704 with additional parameter.
1705 * tree-vectorizer.h (enum vect_def_type): Add new value
1707 (enum vect_relevant): Add comments.
1708 (vect_is_simple_reduction): Add new argument.
1709 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
1710 Detect nested cycles.
1711 (vect_is_simple_reduction): Update documentation, add an argument to
1712 distinguish inner-loop reduction from nested cycle, detect nested
1713 cycles, fix printings and indentation, don't swap operands in case
1715 (get_initial_def_for_reduction): Handle subtraction.
1716 (vect_create_epilog_for_reduction): Add new argument to specify
1718 (vect_finalize_reduction): Handle subtraction, fix comments.
1719 (vectorizable_reduction): Handle nested cycles. In case of nested
1720 cycle keep track of the reduction variable position. Call
1721 vect_is_simple_reduction with additional parameter. Use original
1722 statement code in reduction epilogue for nested cycle. Call
1723 vect_create_epilog_for_reduction with additional parameter.
1724 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
1725 inner-loop vectorization.
1726 (vect_recog_widen_sum_pattern): Likewise.
1727 * tree-vect-stmts.c (process_use): Distinguish between nested cycles
1729 (vect_mark_stmts_to_be_vectorized): Likewise.
1730 (vect_get_vec_def_for_operand): Handle nested cycles.
1732 2009-06-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1734 * doc/invoke.texi (Debugging Options): Fix option index entries
1735 for -fdump-statistics, -frandom-seed add entries for
1736 -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
1737 (FRV Options): Fix entries for -mTLS, -mtls.
1738 (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
1739 (i386 and x86-64 Options): Fix entry for -mno-red-zone.
1740 (M68hc1x Options): Fix @itemx for -mnominmax.
1741 (MCore Options): Fix entry for -mno-lsim.
1742 (MMIX Options): Fix entry for -mabi=mmixware.
1743 (PDP-11 Options): Fix entry for -mbcopy-builtin.
1745 2009-06-16 Basile Starynkevitch <basile@starynkevitch.net>
1747 * doc/plugins.texi (Interacting with the GCC Garbage Collector):
1748 Mention the plugin mode of gengtype.
1749 * doc/gty.texi (Source Files Containing Type Information): Likewise.
1750 * gengtype.c: Updated copyright.
1751 (plugin_files, nb_plugin_files) Added new static variables.
1752 (measure_input_list) Care about plugin_files.
1753 (write_rtx_next): Added early return in plugin mode.
1754 (create_file): Updated copyright year in generated file. Added
1756 (oprintf): Added early return if NULL outf.
1757 (get_output_file_with_visibility): Care of plugin_files.
1758 (get_output_file_name): May return null.
1759 (write_local): Added early return.
1760 (put_mangled_filename): Ditto.
1761 (finish_root_table): Added check for base_files.
1762 (write_roots): Care about null when plugins.
1763 (main): Added plugin mode.
1765 2009-06-15 Ian Lance Taylor <iant@google.com>
1767 * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
1768 * gcov.c (read_count_file): Add braces around variables declared
1771 * c.opt (Wjump-misses-init): New warning.
1772 * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
1773 -Wall and -Wc++-compat if not already set.
1774 (c_common_post_options): Clear warn_jump_misses_init if it was not
1776 * c-decl.c (struct c_binding): Change type field to a union with
1777 new label field. Make it the first field in the struct. Update
1778 references to type to use u.type instead.
1779 (struct c_spot_bindings): Define.
1780 (struct c_goto_bindings): Define.
1781 (c_goto_bindings_p): Define, along with VECs.
1782 (struct c_label_vars): Define.
1783 (struct c_scope): Add has_label_bindings field.
1784 (bind_label, set_spot_bindings): New static functions.
1785 (decl_jump_unsafe, update_spot_bindings): New static functions.
1786 (update_label_decls): New static function.
1787 (pop_scope): Call update_label_decls. Don't call c_end_vm_scope.
1788 Update binding u.label field to shadowed field.
1789 (c_binding_start_stmt_expr): New function.
1790 (c_binding_end_stmt_expr): New function.
1791 (pushdecl): Don't call c_begin_vm_scope.
1792 (make_label): Add defining and p_label_vars parameters. Change
1794 (lookup_label): Correct test for whether a label has not yet been
1795 defined. Call bind_label rather than bind.
1796 (warn_about_goto): New static function.
1797 (lookup_label_for_goto): New function.
1798 (declare_label): Call bind_label rather than bind.
1799 (check_earlier_gotos): New static function.
1800 (define_label): Don't give errors about jumping into statement
1801 expressions or scopes of variably modified types. Call
1802 set_spot_bindings and check_earlier_gotos. Call bind_label
1803 instead of bind. Don't set label_context_stack_se or
1804 label_context_stack_vm.
1805 (c_get_switch_bindings): New function.
1806 (c_release_switch_bindings): New function.
1807 (c_check_switch_jump_warnings): New function.
1808 (start_function): Don't set label_context_stack_se or
1809 label_context_stack_vm.
1810 (finish_function): Likewise.
1811 * c-typeck.c (label_context_stack_se): Don't define.
1812 (label_context_stack_vm): Don't define.
1813 (c_finish_goto_label): Call lookup_label_for_goto rather than
1814 lookup_label. Don't give errors about jumping into a statement
1815 expression or the scope of a variably modified type. Don't set
1816 label_context_stack_se or label_context_stack_vm.
1817 (struct c_switch): Remove blocked_stmt_expr and blocked_vm
1818 fields. Add bindings field.
1819 (c_start_case): Don't set deleted fields. Set bindings field.
1820 (do_case): Rework order of tests. Don't check blocked_stmt_expr
1821 or blocked_vm. Call c_check_switch_jump_warnings.
1822 (c_finish_case): Don't test blocked_stmt_expr field. Call
1823 c_release_switch_bindings.
1824 (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
1825 c_switch_stack. Don't walk label_context_stack_se labels. Don't
1826 set label_context_stack_se. Call c_bindings_start_stmt_expr.
1827 (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
1828 c_switch_stack. Don't walk label_context_stack_se labels. Don't
1829 set label_context_stack_se. Call c_bindings_end_stmt_expr.
1830 (c_begin_vm_scope, c_end_vm_scope): Don't define.
1831 * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
1832 (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
1833 (C_DECL_UNJUMPABLE_VM): Don't define.
1834 (C_DECL_UNDEFINABLE_VM): Don't define.
1835 (struct c_label_list): Don't define.
1836 (struct c_label_context_se): Don't define.
1837 (struct c_label_context_vm): Don't define.
1838 (struct c_spot_bindings): Declare.
1839 (c_bindings_start_stmt_expr): Declare.
1840 (c_bindings_end_stmt_expr): Declare.
1841 (lookup_label_for_goto): Declare.
1842 (c_get_switch_bindings, c_release_switch_bindings): Declare.
1843 (c_check_switch_jump_warnings): Declare.
1844 (label_context_stack_se, label_context_stack_vm): Don't declare.
1845 (c_finish_goto_label): Update declaration.
1846 (c_begin_vm_scope, c_end_vm_scope): Don't declare.
1847 * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
1848 (Warning Options): Document -Wjump-misses-init.
1850 2009-06-15 Jakub Jelinek <jakub@redhat.com>
1852 * tree-object-size.c (addr_object_size): Fix a pasto in the last
1855 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
1857 * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
1859 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
1861 * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
1863 2009-06-15 Aldy Hernandez <aldyh@redhat.com>
1865 * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
1867 2009-06-15 Rafael Avila de Espindola <espindola@google.com>
1869 * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
1870 Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
1871 * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
1872 * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
1873 * dwarf2asm.c (dw2_force_const_mem): Update call to
1875 * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
1876 (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
1877 * langhooks.c (lhd_comdat_group): Remove.
1878 * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
1879 * tree.h (DECL_COMDAT_GROUP): New.
1880 (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
1881 (tree_decl_with_vis): Add comdat_group. Remove one_only.
1882 (make_decl_one_only): Change signature.
1883 * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
1885 (make_decl_one_only): Change signature.
1886 (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
1888 2009-06-15 Richard Guenther <rguenther@suse.de>
1891 * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
1893 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1895 * tree-ssa-math-opts.c: Remove extra divide.
1897 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1899 * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
1901 2009-06-14 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
1903 * passes.c: Add bswap pass.
1904 * tree-pass.h: Add pass_optimize_bswap declaration.
1905 * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
1906 Include rtl.h, expr.h and optabs.h for optab_handler check.
1907 (struct symbolic_number, pass_optimize_bswap): New definition.
1908 (do_shift_rotate, verify_symbolic_number_p): New functions.
1909 (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
1910 (gate_optimize_bswap): New function.
1911 * tree.c (widest_int_cst_value): New function.
1912 * tree.h (widest_int_cst_value): Prototype added.
1914 2009-06-14 Steven Bosscher <steven@gcc.gnu.org>
1916 * cfgcleanup.c (old_insns_match_p): Remove code to substitute
1917 REG_EQUAL/REG_EQUIV notes.
1919 2009-06-14 Richard Guenther <rguenther@suse.de>
1922 * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
1923 has its address taken if NRV was applied and it is addressable.
1924 * tree-ssa-structalias.c (get_constraint_for_address_of): New
1925 function split out from ...
1926 (get_constraint_for_1): ... here.
1927 (handle_rhs_call): Use it to mark the return slot escaped if
1928 it is addressable and NRV was applied.
1930 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
1932 * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
1933 Change first argument type to location_t.
1934 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
1935 Do not set input_location.
1936 Use loc instead of input_location throughout.
1938 2009-06-13 Richard Guenther <rguenther@suse.de>
1940 PR tree-optimization/40421
1941 * tree-predcom.c (should_unroll_loop_p): Remove.
1942 (tree_predictive_commoning_loop): Use can_unroll_loop_p.
1944 2009-06-13 Michael Meissner <meissner@linux.vnet.ibm.com>
1946 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1947 Add location argument.
1949 2009-06-13 Aldy Hernandez <aldyh@redhat.com>
1951 * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
1953 * config/s390/s390.c (s390_build_builtin_va_list): Same.
1954 (s390_gimplify_va_arg): Pass location to create_artificial_label.
1955 * config/spu/spu-protos.h: Add location to
1956 spu_resolve_overloaded_builtin.
1957 * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
1958 spu_build_builtin_va_list.
1959 * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
1960 argument. Pass location to build_function_call_vec.
1961 * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
1963 (emit_fpu_switch): Same.
1964 (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
1965 * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
1966 to build_decl and create_artificial_label.
1967 (xtensa_gimplify_va_arg_expr): Same.
1968 * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
1969 (xstormy16_gimplify_va_arg_expr): Same.
1970 * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
1971 * config/arm/arm.c (arm_build_builtin_va_list): Same.
1972 * config/mips/mips.c (mips_build_builtin_va_list): Same.
1973 (mips16_build_function_stub): Same.
1974 (mips16_build_call_stub): Same.
1976 2009-06-13 Richard Earnshaw <rearnsha@arm.com>
1979 * arm/constraints.md (Pa, Pb): New constraints.
1980 * arm/arm.md (thumb1_addsi3): Support more complex additions. Add a
1981 split pattern to deal with them.
1983 2009-06-13 Joerg Sonnenberger <joerg@britannica.bec.de>
1985 * doc/invoke.texi: Add missing option -Wp,OPTION in list,
1986 fix index entry for -Xpreprocessor.
1988 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
1990 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1991 Add location argument to build_decl call.
1992 * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
1993 (rs6000_init_builtins): Same.
1994 (spe_init_builtins): Same.
1995 (rs6000_gimplify_va_arg): Add location argument to
1996 create_artificial_label call.
1998 2009-06-12 Steven Bosscher <steven@gcc.gnu.org>
2000 * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
2001 * combine-stack-adj.c (pass_stack_adjustments): Use it.
2002 * Makefile.in: Fix GGC dependency for gcse.o.
2004 2009-06-12 Aldy Hernandez <aldyh@redhat.com>
2006 * tree-pretty-print.c (dump_generic_node): Dump column numbers.
2007 * gimple-pretty-print.c (dump_gimple_stmt): Same.
2008 * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
2010 * c-parser.c (c_parser_binary_expression): Use current column while
2011 building binary operations.
2012 * common.opt (fshow-column): Enable by default.
2013 * tree-vrp.c (check_array_ref): Use warning_at.
2014 (check_array_bounds): Use location from call back if expr has no
2016 * tree.h: Add location argument to maybe_fold_*.
2017 * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
2018 (maybe_fold_offset_to_array_ref): Add location argument and use it.
2019 (maybe_fold_offset_to_component_ref): Same.
2020 (maybe_fold_offset_to_reference): Same.
2021 (maybe_fold_offset_to_address): Same.
2022 (maybe_fold_stmt_indirect): Same.
2023 (maybe_fold_stmt_addition): Same.
2024 (fold_stmt_r): Pass location to maybe_fold_*.
2025 (fold_gimple_assign): Same.
2026 * c-tree.h: Add location argument to finish_decl,
2027 default_function_array_conversion, store_init_value.
2028 * c-decl.c (define_label): Use error_at.
2029 (c_make_fname_decl): Pass location to finish_decl.
2030 (finish_decl): New location argument.
2031 (build_compound_literal): Pass location to store_init_value.
2032 (grokdeclarator): Pass location to finish_decl.
2034 * c-typeck.c (array_to_pointer_conversion): New location argument.
2035 (function_to_pointer_conversion): Same.
2036 (default_function_array_conversion): Same.
2037 (parser_build_unary_op): Pass location to overflow_warning.
2038 (parser_build_binary_op): Same. Use warning_at.
2039 (build_unary_op): Pass location to array_to_pointer_conversion.
2040 (build_c_cast): Pass location to digest_init.
2041 (build_modify_expr): New location argument.
2042 (convert_for_assignment): Same.
2043 (store_init_value): Same.
2044 (digest_init): Same.
2045 (output_init_element): Pass location to digest_init and
2046 array_to_pointer_conversion.
2047 (c_finish_return): Pass location to convert_for_assignment.
2048 * gimplify.c (gimplify_conversion): Pass location to
2049 maybe_fold_offset_to_address.
2050 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
2051 to maybe_fold_stmt_addition.
2052 * c-omp.c (c_finish_omp_atomic): Pass new location to
2054 (c_finish_omp_for): Same.
2055 * c-common.c (overflow_warning): New argument.
2056 * c-common.h: New argument to build_modify_expr, overflow_warning.
2057 * c-parser.c (c_parser_declaration_or_fndef): Pass location to
2059 (c_parser_initializer): Pass location to
2060 default_function_array_conversion.
2061 (c_parser_initelt): Same.
2062 (c_parser_initval): Same.
2063 (c_parser_asm_operands): Same.
2064 (c_parser_expr_no_commas): Same. Pass location to build_modify_expr.
2065 (c_parser_conditional_expression): Same.
2066 (c_parser_binary_expression): Add location info to stack. Use it.
2067 (c_parser_unary_expression): Pass location to
2068 default_function_array_conversion, parser_build_unary_op,
2069 build_indirect_ref, c_parser_postfix_expression_after_primary.
2070 (c_parser_postfix_expression_after_primary): New location argument.
2072 (c_parser_expression_conv): Pass location to
2073 default_function_array_conversion.
2074 (c_parser_expr_list): Same.
2075 (c_parser_omp_atomic): Same.
2076 (c_parser_omp_for_loop): Same.
2077 * c-tree.h: (struct c_declarator): Add comment to id_loc.
2078 (build_array_declarator): New argument.
2079 * c-decl.c (build_array_declarator): Add location argument.
2080 (grokdeclarator): Set id_loc for cdk_array.
2081 * c-parser.c (c_parser_direct_declarator_inner): Pass location to
2082 build_array_declarator.
2083 * tree.c (build_omp_clause): Add location argument.
2084 * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
2085 (OMP_CLAUSE_LOCATION): New macro.
2086 (struct tree_omp_clause): Add location field.
2087 (build_omp_clause): Add argument.
2088 * testsuite/gcc.dg/gomp/for-1.c: Fix column.
2089 * cp/pt.c (tsubst_omp_for_iterator): Pass location to
2091 * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
2092 (cp_parser_omp_clause_collapse): Same.
2093 (cp_parser_omp_clause_default): Same.
2094 (cp_parser_omp_clause_if): Same.
2095 (cp_parser_omp_clause_nowait): Same.
2096 (cp_parser_omp_clause_num_threads): Same.
2097 (cp_parser_omp_clause_ordered): Same.
2098 (cp_parser_omp_clause_schedule): Same.
2099 (cp_parser_omp_clause_untied): Same.
2100 (cp_parser_omp_for_loop): Same.
2101 (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
2102 * c-tree.h (c_start_case): Add location argument.
2103 (c_process_expr_stmt): Same.
2104 (c_finish_goto_*): Same.
2105 * tree-parloops.c (initialize_reductions): Pass location to
2107 (create_parallel_loop): Same.
2108 * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
2109 (gfc_trans_omp_reduction_list): Same.
2110 (gfc_trans_omp_clauses): Same.
2111 (gfc_trans_omp_do): Same.
2112 * c-typeck.c (c_finish_goto_label): Same.
2113 (c_finish_goto_ptr): New location argument.
2114 (c_start_case): Same.
2115 (emit_side_effect_warnings): Same.
2116 (c_process_expr_stmt): Same.
2117 (c_finish_stmt_expr): Same.
2118 (c_finish_omp_clauses): Use error_at instead of error.
2119 * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
2121 * c-omp.c (c_split_parallel_clauses): New location argument.
2122 * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
2123 to build_omp_clause.
2124 (convert_local_reference_stmt): Same.
2125 (convert_gimple_call): Same.
2126 * c-common.h (c_split_parallel_clauses): New argument.
2127 * c-parser.c (c_parser_statement_after_labels): Pass location to
2128 c_finish_goto_label.
2129 (c_parser_switch_statement): Pass location to c_start_case.
2130 (c_parser_for_statement): Pass location to c_finish_expr_stmt,
2131 and c_process_expr_stmt.
2132 (c_parser_omp_variable_list): Add location argument.
2133 (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
2134 (c_parser_omp_clause_default): Same.
2135 (c_parser_omp_clause_if): Same.
2136 (c_parser_omp_clause_num_threads): Same.
2137 (-c_parser_omp_clause_ordered): Same.
2138 (c_parser_omp_clause_reduction): Pass location to
2139 c_parser_omp_variable_list.
2140 (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
2141 (c_parser_omp_clause_untied): Same.
2142 (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
2143 (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
2145 * c-tree.h (check_for_loop_decls, undeclared_variable,
2146 build_component_ref, build_array_ref, build_external_ref,
2147 c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
2148 build_conditional_expr, build_compound_expr, c_cast_expr,
2149 build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
2150 c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
2152 * c-semantics.c (build_stmt): Same.
2153 (build_case_label): Same.
2154 * c-decl.c (c_finish_incomplete_decl): Pass location on down.
2155 (undeclared_variable): New argument.
2157 (lookup_label): Pass location on down.
2158 (define_label): Same.
2159 (finish_decl): Same.
2160 (build_compound_literal): Same.
2161 (finish_struct): Same.
2162 (finish_function): Do not set location here.
2163 (check_for_loop_decls): New argument.
2164 * tree.c (save_expr): Set location.
2165 (build_empty_stmt): New argument.
2166 * tree.h (build_empty_stmt): New argument to build_empty_stmt.
2167 (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
2168 * builtins.c (gimplify_va_arg_expr): Use locations.
2169 (expand_builtin_sync_operation): Same.
2170 * c-typeck.c (build_component_ref): New argument.
2171 (build_array_ref): Same.
2172 (build_external_ref): Same.
2173 (c_expr_sizeof_expr): Same.
2174 (c_expr_sizeof_type): Same.
2175 (parser_build_unary_op): Same.
2176 (build_conditional_expr): Same.
2177 (build_compound_expr): Pass location on down.
2178 (build_compound_expr): New argument.
2179 (build_c_cast): Same.
2180 (c_cast_expr): Same.
2181 (build_asm_expr): Same.
2182 (c_finish_return): Same.
2183 (c_process_expr_stmt): Pass location on down.
2184 (c_finish_stmt_expr): New argument.
2185 (push_clenaup): Same.
2186 (c_finish_omp_parallel): Same.
2187 (c_finish_omp_task): Same.
2188 * gimplify.c (gimplify_call_expr): Pass location on down.
2189 * c-omp.c (c_finish_omp_master): New argument.
2190 (c_finish_omp_critical): Same.
2191 (c_finish_omp_ordered): Same.
2192 (c_finish_omp_barrier): Same.
2193 (-c_finish_omp_taskwait): Same.
2194 (c_finish_omp_atomic): Same.
2195 (c_finish_omp_flush): Same.
2196 * tree-inline.c (copy_tree_body_r): Pass location on down.
2197 (inline_forbidden_p): Remove use of input_location.
2198 * c-gimplify.c (c_build_bind_expr): New argument.
2199 * c-common.c (c_common_truthvalue_conversion): Pass location on down.
2200 (c_sizeof_or_alignof_type): New argument.
2201 (c_alignof_expr): Same.
2202 (build_va_arg): Same.
2203 (c_add_case_label): Same.
2204 * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
2205 c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
2206 c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
2207 c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
2208 c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
2209 c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
2211 * stub-objc.c (objc_build_selector_expr): Same.
2212 (objc_build_throw_stmt): Same.
2213 * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
2214 (c_parser_initelt): Same.
2215 (c_parser_compound_statement): Same.
2216 (c_parser_compound_statement_nostart): Same.
2217 (c_parser_label): Same.
2218 (c_parser_statement_after_labels): Same.
2219 (c_parser_if_body): Same.
2220 (c_parser_else_body): Same.
2221 (c_parser_if_statement): Same.
2222 (c_parser_switch_statement): Same.
2223 (c_parser_while_statement): Same.
2224 (c_parser_do_statement): Same.
2225 (c_parser_for_statement): Same.
2226 (c_parser_asm_statement): Same.
2227 (c_parser_conditional_expression): Same.
2228 (c_parser_binary_expression): Same.
2229 (c_parser_cast_expression): Same.
2230 (c_parser_unary_expression): Same.
2231 (c_parser_sizeof_expression): Same.
2232 (c_parser_alignof_expression): Same.
2233 (c_parser_postfix_expression): Same.
2234 (c_parser_expression): Same.
2235 (c_parser_objc_receiver): Same.
2236 (c_parser_omp_variable_list): Same.
2237 (c_parser_omp_structured_block): Same.
2238 (c_parser_omp_atomic): New argument.
2239 (c_parser_omp_barrier): Same.
2240 (c_parser_omp_critical): Same.
2241 (c_parser_omp_flush): Pass location on down.
2242 (c_parser_omp_for_loop): New argument.
2243 (c_parser_omp_for): Same.
2244 (c_parser_omp_master): Same.
2245 (c_parser_omp_ordered): Same.
2246 (c_parser_omp_sections_scope): Same.
2247 (c_parser_omp_sections): Same.
2248 (c_parser_omp_parallel): Same.
2249 (c_parser_omp_single): Same.
2250 (c_parser_omp_task): Same.
2251 (c_parser_omp_taskwait): Pass location on down.
2252 (c_parser_omp_construct): Same.
2253 (c_parser_omp_threadprivate): Same.
2254 * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
2255 builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
2256 tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
2257 c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
2258 c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
2259 emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
2260 rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
2261 tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
2262 config/i386/i386.c, stmt.c:
2263 Add location argument to the following function definitions and/or
2264 function calls: build_decl, objcp_start_struct, objcp_finish_struct,
2265 start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
2266 cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
2267 build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
2268 do_case, c_finish_bc_stmt, build_compound_literal,
2269 build_function_call.
2270 * c-decl.c (build_compound_literal): Add location argument.
2271 Make all diagnostic calls use location.
2272 (start_struct): Same.
2273 (finish_struct): Same.
2275 (build_enumerator): Same.
2276 (start_function): Same.
2277 (grokdeclarator): Make all diagnostic calls use location.
2278 (store_parm_decls_oldstyle): Same.
2279 * c-typeck.c (build_function_call): Add location argument.
2280 Make all diagnostic calls use location.
2282 (c_finish_bc_stmt): Same.
2283 * tree-nested.c (get_trampoline_type): Add argument.
2284 Pass location to build_decl.
2285 (lookup_tramp_for_decl): Pass location to get_trampoline_type.
2286 * rtl.h (RTL_LOCATION): New.
2287 * c-common.c (c_add_case_label): Add location argument.
2288 Make all diagnostic calls use location.
2289 * c-common.h: Add location argument to make_fname_decl, do_case,
2290 c_add_case_label, build_function_call, resolve_overloaded_builtin.
2291 * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
2292 Set it appropriately for every case. Pass enum_loc to start_enum
2293 call. Pass value_loc first to build_enumerator. Pass enum_loc to
2295 (c_parser_struct_or_union_specifier): Save location. Use it for
2296 start_struct, finish_struct, and parser_xref_tag.
2298 2009-06-12 Ian Lance Taylor <iant@google.com>
2300 * fold-const.c (fold_unary): Rename local variable and to and_expr.
2302 * c-opts.c (c_common_handle_option): For -Wc++-compat set
2303 cpp_opts->warn_cxx_operator_names.
2305 2009-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
2308 * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
2309 is returns NULL and OP is a VCE, look through the VCE.
2311 2009-06-12 Ian Lance Taylor <iant@google.com>
2314 * collect2.c (main): Use CONST_CAST2 in code inside #if
2315 LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
2317 2009-06-12 Joey Ye <joey.ye@intel.com>
2320 * cfgexpand.c (get_decl_align_unit): Update
2321 max_used_stack_slot_alignment with align instead of
2322 stack_alignment_needed.
2324 * function.c (assign_stack_local_1): Update
2325 max_used_stack_slot_alignment with alignment_in_bits instead
2326 of stack_alignment_needed.
2327 (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
2330 2009-06-12 Jakub Jelinek <jakub@redhat.com>
2332 * dwarf2out.c (last_var_location_insn): New variable.
2333 (dwarf2out_end_epilogue): Clear last_var_location_insn.
2334 (dwarf2out_var_location): Don't record anything after last real
2335 insn. Only change labels if there were any real instructions
2336 in between last note and this one, or if changed sections.
2338 2009-06-11 Richard Henderson <rth@redhat.com>
2340 * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
2341 note when storing the frame pointer in a register.
2342 (FRP): Don't redefine to nothing for epilogue.
2343 (alpha_expand_epilogue): Mark register and sp restores.
2344 (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
2346 * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
2347 when gen_lowpart is needed.
2349 2009-06-11 Richard Henderson <rth@redhat.com>
2351 * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
2353 * dwarf2out.c (need_data_align_sf_opcode): New.
2354 (div_data_align): Move earlier.
2355 (def_cfa_1, reg_save): Use it.
2357 2009-06-11 H.J. Lu <hongjiu.lu@intel.com>
2359 * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
2360 (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
2361 (ix86_handle_option): Handle OPT_mcrc32.
2362 (ix86_target_string): Add -mcrc32.
2363 (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
2365 * config/i386/i386.h (TARGET_CRC32): New.
2367 * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
2368 (sse4_2_crc32di): Likewise.
2370 * config/i386/i386.opt (mcrc32): New.
2372 * doc/invoke.texi: Document -mcrc32.
2374 2009-06-11 Richard Henderson <rth@redhat.com>
2376 * common.opt (gdwarf-): Accept a version number.
2377 * doc/invoke.texi (gdwarf-): Update docs.
2378 * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
2379 * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
2380 version level, and record it.
2382 * dwarf2.h (DW_CIE_VERSION): Remove.
2383 * dwarf2out.c (DWARF_VERSION): Remove.
2384 (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
2385 (output_call_frame_info): Use CIE version 3 for dwarf3,
2386 or if the return register column is out of range for version 1.
2387 (dwarf_stack_op_name): Add all dwarf3 values.
2388 (DEBUG_PUBTYPES_SECTION): New.
2389 (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
2390 encoding change for dwarf3.
2391 (output_die) [dw_val_class_die_ref]: Likewise.
2392 (output_compilation_unit_header): Emit correct version for dwarf3.
2393 (output_line_info): Likewise.
2394 (output_pubnames): Update for DWARF_VERSION removal.
2395 (output_aranges): Likewise.
2396 (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
2397 (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
2398 (dwarf2out_finish): Likewise.
2400 2009-06-11 David Daney <ddaney@caviumnetworks.com>
2402 * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
2405 2009-06-11 David Daney <ddaney@caviumnetworks.com>
2408 * doc/extend.texi ( __builtin_unreachable): Document new builtin.
2409 * builtins.c (expand_builtin_unreachable): New function.
2410 (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
2411 * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
2412 * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
2414 * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
2415 searching for missing barriers.
2417 2009-06-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2419 * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
2420 when -fprofile-generate* was passed.
2421 * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
2423 2009-06-11 Anthony Green <green@moxielogic.com>
2425 * config/moxie/moxie.md: Define length attribute for all instructions.
2427 (*b<cond:code>): Support limited branch ranges for new PC-relative
2428 branch instructions.
2429 * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
2431 2009-06-11 Jakub Jelinek <jakub@redhat.com>
2433 * config/i386/i386.c (min_insn_size): Use get_attr_length
2434 for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
2437 * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
2438 instead of emit_insn_before.
2440 2009-06-10 Ian Lance Taylor <iant@google.com>
2443 * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
2446 2009-06-10 Revital Eres <eres@il.ibm.com>
2448 * passes.c (init_optimization_passes): Reschedule
2449 predictive-commoning pass before complete unroll pass.
2451 2009-06-10 Martin Jambor <mjambor@suse.cz>
2453 * cgraph.c (cgraph_node_can_be_local_p): New function.
2454 (cgraph_make_node_local): New function.
2455 * cgraph.h (cgraph_node_can_be_local_p): Declare.
2456 (cgraph_make_node_local): Declare.
2458 2009-06-10 Nathan Froyd <froydnj@codesourcery.com>
2460 * tree.h (tree_base): Add packed_flag and user_align fields.
2461 Decrease size of spare field.
2462 (TYPE_USER_ALIGN): Use user_align from tree_base.
2463 (DECL_USER_ALIGN): Likewise.
2464 (TYPE_PACKED): Use packed_flag from tree_base.
2465 (DECL_PACKED): Likewise.
2466 (tree_type): Delete packed_flag and user_align fields. Widen
2467 precision field. Widen mode field and shuffle fields to align
2468 mode on an 8-bit boundary.
2469 (tree_decl_common): Delete decl_flag_1 and user_align fields.
2470 Renumber decl_flag_* fields. Fix comments. Widen
2471 decl_common_unused field.
2472 (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
2473 (DECL_EXTERNAL): Likewise.
2474 (DECL_BIT_FIELD): Likewise.
2475 (DECL_NONADDRESSABLE_P): Likewise.
2476 (TYPE_DECL_SUPRESS_DEBUG): Likewise.
2477 * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
2479 2009-06-10 Ian Lance Taylor <iant@google.com>
2481 * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
2482 (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
2483 (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
2484 (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
2485 (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
2486 DEF_VEC_ALLOC_FUNC_P.
2487 (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
2488 (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
2489 DEF_VEC_ALLOC_FUNC_O.
2490 (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
2491 (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
2492 DEF_VEC_ALLOC_FUNC_I.
2493 (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
2494 (vec_stack_p_reserve_exact_1): Declare.
2495 (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
2496 (vec_stack_free): Declare.
2497 (VEC_stack_alloc): Define.
2498 (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
2499 (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
2500 (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
2501 * vec.c (void_p): New type. Call DEF_VEC_P and DEF_VEC_ALLOC_P
2503 (stack_vecs): New static variable.
2504 (vec_stack_p_reserve_exact_1): New function.
2505 (vec_stack_o_reserve_1): New static function.
2506 (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
2507 (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
2508 (vec_stack_free): New function.
2509 * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
2510 (VEC_df_ref_stack_alloc): Define.
2511 (df_mw_hardreg_ptr): New type. Use DEF_VEC_P and
2512 DEF_VEC_ALLOC_P_STACK.
2513 (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
2514 (struct df_collection_rec): Change _vec fields to VEC. Remove
2516 (df_free_collection_rec): Adjust for new fields.
2517 (df_insn_rescan): Use new df_collection_rec fields.
2518 (df_notes_rescan, df_canonize_collection_rec): Likewise.
2519 (df_ref_create_structure, df_ref_record): Likewise.
2520 (df_get_conditional_uses, df_get_call_refs): Likewise.
2521 (df_insn_refs_collect, df_bb_refs_collect): Likewise.
2522 (df_bb_refs_record, df_record_entry_block_defs): Likewise.
2523 (df_record_exit_block_uses, df_bb_verify): Likewise.
2524 (df_swap_refs): Change ref_vec parameter to VEC. Change all callers.
2525 (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
2526 Remove count parameter. Change return type to void. Change all
2528 (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
2529 Remove count parameter. Change return type to void. Change all
2531 (df_install_refs): Change old_vec parameter to VEC. Remove count
2532 parameter. Change all callers.
2533 (df_install_mws): Change old_vec parameter to VEC. Remove count
2534 parameter. Change all callers.
2535 (df_refs_verify): Change new_rec parameter to VEC. Change call
2537 (df_mws_verify): Likewise.
2539 2009-06-10 Alexandre Oliva <aoliva@redhat.com>
2541 * gcc.c (compare_files): Cast munmap argumento to caddr_t.
2543 2009-06-10 H.J. Lu <hongjiu.lu@intel.com>
2545 * doc/extend.texi: Add description for __builtin_ia32_crc32di.
2547 2009-06-10 Anthony Green <green@moxielogic.com>
2549 * config/moxie/crti.asm: New file.
2550 * config/moxie/crtn.asm: New file.
2551 * config/moxie/moxie.c: New file.
2552 * config/moxie/moxie.h: New file.
2553 * config/moxie/sfp-machine.h: New file.
2554 * config/moxie/moxie-protos.h: New file.
2555 * config/moxie/t-moxie: Created.
2556 * config/moxie/t-moxie-softfp: Created.
2557 * config/moxie/moxie.md: Created.
2558 * config/moxie/constraints.md: Created.
2559 * config.gcc: Add moxie support.
2560 * doc/md.texi (Machine Constraints): Add moxie constraints.
2561 * doc/contrib.texi (Contributors): Mention moxie port.
2562 * doc/install.texi (Specific): Mention the moxie port.
2564 2009-06-09 Ian Lance Taylor <iant@google.com>
2566 * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
2568 * optabs.c (optab_table): Only use designated initializers if
2569 HAVE_DESIGNATED_INITIALIZERS is defined.
2570 (convert_optab_table): Likewise.
2571 (init_optabs): Always call init_insn_codes if
2572 HAVE_DESIGNATED_INITIALIZERS is not defined.
2574 2009-06-09 Ian Lance Taylor <iant@google.com>
2576 * targhooks.c (default_builtin_vectorized_function): Change fn
2577 parameter to unsigned int.
2578 (default_builtin_vectorized_conversion): Change code parameter to
2580 (default_builtin_reciprocal): Change fn parameter to unsigned int.
2581 * targhooks.h: Update declarations.
2582 * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
2583 parameter to unsigned int.
2585 * c-typeck.c (comptypes_check_enum_int): New static function.
2586 (comptypes_internal): Add enum_and_int_p parameter. Change all
2588 (comp_target_types): Add location parameter. Change all callers.
2589 (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
2591 (function_types_compatible_p, type_lists_compatible_p): Likewise.
2592 (build_conditional_expr): Add colon_loc parameter. Change all
2594 (convert_for_assignment): Add location parameter. Change all callers.
2595 * c-parser.c (c_parser_conditional_expression): Pass location of
2596 colon to build_conditional_expr.
2597 * c-tree.h (build_conditional_expr): Update declaration.
2599 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
2601 * graphite.c: Revert previous patch.
2603 2009-06-09 Sebastian Pop <sebastian.pop@amd.com>
2606 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
2608 2009-06-09 Ghassan Shobaki <ghassan.shobaki@amd.com>
2610 * tree-ssa-loop-prefetch.c
2611 (loop_prefetch_arrays): Fixed a portability problem in printf format
2614 2009-06-09 Martin Jambor <mjambor@suse.cz>
2616 PR tree-optimization/40351
2617 * tree-sra.c (propagate_subacesses_accross_link): Check that a
2618 refrence to a potential artifical subaccess can be constructed.
2620 2009-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
2622 * config/sh/sh-protos.h (sh_optimization_options): Declare.
2623 (sh_override_options): Likewise.
2624 * config/sh/sh.c: Include params.h.
2625 (sh_optimization_options): New.
2626 (sh_override_options): Likewise.
2627 * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
2628 (OVERRIDE_OPTIONS): Use sh_override_options.
2630 2009-06-08 Jakub Jelinek <jakub@redhat.com>
2632 * dwarf2out.c (emit_cfa_remember): New variable.
2633 (add_fde_cfi): If emit_cfa_remember, recurse to add
2634 DW_CFA_remember_state first.
2635 (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
2636 instead just set emit_cfa_remember.
2638 2009-06-08 Jan Hubicka <jh@suse.cz>
2641 * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
2643 2009-06-08 Jan Hubicka <jh@suse.cz>
2646 * cgraphunit.c (save_inline_function_body): Do not copy transform
2647 hooks for saved inline bodies.
2648 * ipa-passes.c (do_per_function): Do not add the hoks multiple times
2651 2009-06-08 Adam Nemet <anemet@caviumnetworks.com>
2653 * jump.c (returnjump_p): Handle delayed branches. Add missing
2656 2009-06-08 Jan Hubicka <jh@suse.cz>
2659 * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
2660 original node might've been modified.
2661 * tree-inline.c (copy_bb): Do not assume that all clones are the same.
2663 2009-06-08 Jakub Jelinek <jakub@redhat.com>
2665 * tree-object-size.c (addr_object_size): Add OSI argument.
2666 Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
2667 (compute_builtin_object_size, expr_object_size): Adjust callers.
2668 (plus_stmt_object_size): Call addr_object_size instead of
2669 compute_builtin_object_size.
2671 2009-06-08 Ghassan Shobaki <ghassan.shobaki@amd.com>
2672 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2674 * tree-ssa-loop-prefetch.c
2675 (gather_memory_references): Introduced a counter for the number of
2677 (anything_to_prefetch_p): Introduced a counter for the number of
2679 (is_loop_prefetching_profitable): New function with a cost model
2681 (loop_prefetch_arrays): Use the new cost model to determine if
2682 prefetching is profitable.
2683 * params.def (MIN_INSN_TO_PREFETCH_RATIO,
2684 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
2685 * params.h (MIN_INSN_TO_PREFETCH_RATIO,
2686 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
2687 * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO,
2688 PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
2690 2009-06-08 Michael Matz <matz@suse.de>
2693 * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
2694 partitions use the same.
2695 (expand_one_var): Deal with DECL_RTL sometimes begin set also
2696 for basevars of SSA_NAMEs.
2697 (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
2698 to not expand them twice.
2699 (gimple_expand_cfg): Clear DECL_RTL for those decls that have
2702 2009-06-08 Alexandre Oliva <aoliva@redhat.com>
2704 * common.opt (fcompare-debug=, fcompare-debug-second): New.
2705 (fdump-final-insns=, gtoggle): New.
2706 * doc/invoke.texi: Document them.
2707 * final.c (rest_of_clean_state): Dump final insn stream.
2708 * gcc.c (invoke_as): Hook in -fcompare-debug.
2709 (static_spec_functions): Add compare-debug-dump-opt,
2710 compare-debug-self-opt and compare-debug-auxbase-opt.
2711 (compare_debug, compare_debug_second, compare_debug_opt): New.
2712 (switches_debug_check, n_switches_debug_check): New.
2713 (debug_auxbase_opt, debug_check_temp_file): New.
2714 (process_command): Handle -fno-compare-debug, -fcompare-debug and
2716 (do_self_spec): Handle arguments after switches.
2717 (do_spec_1): Add .gk extension to temp file basenames for compare.
2718 (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
2719 (cc1_options): Use it instead of normal auxbase computation for
2720 the second compare-debug compilation.
2721 (compare_files): New.
2722 (main): Set up and implement compare debug mode.
2723 (compare_debug_dump_opt_spec_function): New.
2724 (compare_debug_self_opt_spec_function): New.
2725 (compare_debug_auxbase_opt_spec_function): New.
2726 * toplev.c (process_options): Handle flag_gtoggle,
2727 flag_dump_final_insns.
2728 * coverage.c (coverage_begin_output): Don't overwrite .gcno file
2729 during -fcompare-debug-second compilation.
2731 2009-06-07 Ian Lance Taylor <iant@google.com>
2733 * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
2734 * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
2736 * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
2737 with no default node. Change warning with %H to warning_at.
2738 Don't clear warn_switch around case checking.
2739 * doc/invoke.texi (Warning Options): Clarify distinction between
2740 -Wswitch and -Wswitch-enum.
2742 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2744 * tree-pass.h (TODO_update_ssa_any): Document internal use only.
2746 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2748 * gbl-ctors.h: Add header guard.
2750 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2752 * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
2753 sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
2754 vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
2755 vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
2756 prototypes for removed functions.
2757 (expressions_equal_p): Move to ...
2758 * tree-ssa-sccvn.h: ... here and ...
2759 * matrix-reorg.c: ... adjust includes.
2761 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2763 * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
2765 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2767 * c-decl.c (finish_decl): Use bool for variable was_incomplete.
2768 (finish_function): Remove erroneous whitespace.
2770 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2772 * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
2773 (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
2775 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2777 * errors.c (internal_error): Commentary typo fix.
2778 * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
2779 * tree-ssa-pre.c: Ditto.
2781 2009-06-07 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
2783 * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
2784 them is supposed to hold actual statements.
2786 2009-06-06 Ian Lance Taylor <iant@google.com>
2788 * doc/extend.texi (Attribute Syntax): Document that C++ labels on
2789 empty statements can now have attributes.
2791 2009-06-05 Shujing Zhao <pearly.zhao@oracle.com>
2793 * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
2794 * config/mips/mips.md: Ditto.
2796 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
2798 * config/rs6000/eabi.asm (__eabi_convert): Don't define if
2800 (__eabi_uconvert): Likewise.
2802 2009-06-05 Nathan Froyd <froydnj@codesourcery.com>
2804 * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
2805 CFI_* definitions with IN_GCC.
2807 2009-06-05 David Edelsohn <edelsohn@gnu.org>
2809 * xcoffout.h (xcoffout_source_line): Update prototype.
2811 2009-06-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2813 * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
2814 mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
2816 2009-06-05 Jakub Jelinek <jakub@redhat.com>
2819 * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
2820 inlined_function_outer_scope_p blocks for artificial inlines
2822 * tree.c (tree_nonartificial_location): Rewrite using
2823 block_nonartificial_location.
2825 2009-06-05 Revital Eres <eres@il.ibm.com>
2826 Leehod Baruch <leehod@il.ibm.com>
2828 * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
2829 (expand_expr_real_1): Remove comment.
2830 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2831 Vectorize misaligned access when the target supports it.
2832 (vect_supportable_dr_alignment): Check for unaligned access support.
2833 * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
2836 2009-06-05 Julian Brown <julian@codesourcery.com>
2838 * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
2839 * config/arm/ieee754-sf.S (cmpsf2): Likewise.
2841 2009-06-05 Richard Guenther <rguenther@suse.de>
2844 * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
2847 2009-06-05 Jakub Jelinek <jakub@redhat.com>
2849 * config/s390/s390.c (global_not_special_regno_p): New static inline.
2850 (save_gprs): Don't tell unwinder when a global register is saved.
2851 (s390_emit_epilogue): Emit needed epilogue unwind info.
2853 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
2855 * dwarf2out.c (deferred_asm_name): New.
2856 (add_name_and_src_coords_attributes): Defer creation of
2857 DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
2859 (move_linkage_attr): New.
2860 (dwarf2out_finish): Revisit deferrals and emit attributes at the
2863 2009-06-05 Alexandre Oliva <aoliva@redhat.com>
2865 * tree-nested.c (finalize_nesting_tree_1): Declare the
2866 frame_decl in the binding tree.
2868 2009-06-04 Cary Coutant <ccoutant@google.com>
2870 * basic-block.h (struct basic_block_def): Add discriminator field.
2871 * dbxout.c (dbxout_source_line): Add new parameter. Change all
2873 * debug.c (do_nothing_debug_hooks): Add additional entry.
2874 (debug_nothing_int_charstar_int): New function.
2875 * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
2876 (debug_nothing_int_charstar_int): New declaration.
2877 * dwarf2out.c (dwarf2out_source_line): Add new parameter. Write
2878 discriminator value in .loc directive.
2879 * final.c (last_discriminator): New variable.
2880 (discriminator): New variable.
2881 (final_start_function): Initialize above variables, pass current
2882 discriminator to debug hook.
2883 (notice_source_line): Check for discriminator change.
2884 * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
2885 * sdbout.c (sdbout_source_line): New parameter.
2886 * tree-cfg.c (struct locus_discrim_map): New structure type.
2887 (discriminator_per_locus): New hash table.
2888 (build_gimple_cfg): Allocate and free discriminator hash table.
2889 (make_edges): Call assign_discriminator.
2890 (locus_map_hash): New function.
2891 (locus_map_eq): New function.
2892 (next_discriminator_for_locus): New function.
2893 (same_line_p): New function.
2894 (assign_discriminator): New function.
2895 (make_cond_expr_edges): Call assign_discriminator.
2896 (make_gimple_switch_edges): Likewise.
2897 (first_non_label_stmt): New function.
2898 * vmsdbgout.c (vmsdbgout_source_line): Add new parameter. Change
2900 * xcoffout.c (xcoffout_source_line): Add new parameter.
2902 * configure.ac (gcc_cv_as_discriminator): New configury check for
2903 gas support for discriminator.
2904 * configure: Regenerate.
2905 * config.in: Regenerate.
2907 2009-06-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2909 * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
2910 val after checking for integers.
2912 2009-06-04 Uros Bizjak <ubizjak@gmail.com>
2914 * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
2916 (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
2917 (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
2918 (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
2919 * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
2920 X64_REGPARM_MAX. Use X86_64_MS_SSE_REGPARM_MAX instead of
2921 X64_SSE_REGPARM_MAX.
2922 * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
2923 X64_SSE_REGPARM_MAX.
2925 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
2927 * gcc.c (report_times_to_file): New.
2928 (execute): Implement it.
2929 (process_command): Support -time=.
2930 * doc/invoke.texi: Document it.
2932 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
2934 * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
2935 that have value exprs.
2937 2009-06-04 Alexandre Oliva <aoliva@redhat.com>
2939 * dwarf2asm.c (dw2_force_const_mem): Defer creation of
2940 declarations for constants until...
2941 (dw2_output_indirect_constant_1): ... this point.
2943 2009-06-04 Richard Earnshaw <rearnsha@arm.com>
2946 * arm.md (arm_addsi3): Don't try to split an add with an
2947 eliminable register until after reload has completed.
2949 2009-06-03 Ian Lance Taylor <iant@google.com>
2951 * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
2952 * genattrtab.c (write_length_unit_log): Likewise.
2953 * genchecksum.c (dosum): Likewise.
2954 * gengtype.c (write_rtx_next): Likewise.
2955 (finish_root_table, write_roots): Likewise.
2956 * gimple.c (gimple_ops_offset_): Likewise.
2957 * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
2958 * config/arc/arc.c (arc_attribute_table): Likewise.
2959 * config/arm/arm.c (arm_attribute_table): Likewise.
2960 * config/avr/avr.c (avr_attribute_table): Likewise.
2961 * config/crx/crx.c (crx_attribute_table): Likewise.
2962 * config/m32r/m32r.c (m32r_attribute_table): Likewise.
2963 * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
2964 * config/mcore/mcore.c (mcore_attribute_table): Likewise.
2965 * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
2966 * config/sh/sh.c (sh_attribute_table): Likewise.
2967 * config/sparc/sparc.c (sparc_attribute_table): Likewise.
2968 * config/spu/spu.c (spu_attribute_table): Likewise.
2969 * config/v850/v850.c (v850_attribute_table): Likewise.
2971 * config/alpha/alpha.c (vms_attribute_table): Make static.
2972 * config/bfin/bfin.c (bfin_attribute_table): Likewise.
2973 * config/h8300/h8300.c (h8300_attribute_table): Likewise.
2974 * config/mips/mips.c (mips_attribute_table): Likewise.
2976 * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
2978 (cc1-checksum.o): Likewise.
2980 2009-06-03 Steve Ellcey <sje@cup.hp.com>
2982 * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
2984 2009-06-03 Jakub Jelinek <jakub@redhat.com>
2986 * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
2987 insn if it is changing sp. Use gen_add3_insn instead of
2988 conditionally gen_addsi3 and gen_adddi3.
2989 (offset_below_red_zone_p): New static inline function.
2990 (rs6000_emit_epilogue): Emit needed epilogue unwind info.
2991 Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
2992 * config/rs6000/ppc-asm.h: Include auto-host.h.
2993 (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
2994 CFI_RESTORE): Define.
2995 * config/rs6000/crtresxgpr.asm: Add unwind info.
2996 * config/rs6000/crtresxfpr.asm: Likewise.
2997 * config/rs6000/crtresgpr.asm: Likewise.
2998 * config/rs6000/crtresfpr.asm: Likewise.
2999 * config/rs6000/crtsavgpr.asm: Likewise.
3000 * config/rs6000/crtsavfpr.asm: Likewise.
3002 * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
3003 argument of DWARF2_FRAME_REG_OUT macros.
3005 2009-06-03 Julian Brown <julian@codesourcery.com>
3007 * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
3008 words or less (including TImode) in core registers.
3010 2009-06-03 Richard Guenther <rguenther@suse.de>
3013 * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
3015 2009-06-03 Andrey Belevantsev <abel@ispras.ru>
3017 * statistics.c (statistics_counter_event): Do not record event
3018 in pass dump if its number == -1.
3019 (curr_statistics_hash): Add assert that we never get passes
3020 with static number == -1.
3022 2009-06-03 Richard Guenther <rguenther@suse.de>
3023 Andrey Belevantsev <abel@ispras.ru>
3025 * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
3026 non-BLKmode arrays addressable.
3028 2009-06-03 Maxim Kuvyrkov <maxim@codesourcery.com>
3030 * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
3031 * config/m68k/m68k.h: ... here.
3032 * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
3035 2009-06-03 Martin Jambor <mjambor@suse.cz>
3037 PR tree-optimization/40323
3038 * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
3041 2009-06-03 Richard Guenther <rguenther@suse.de>
3043 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
3046 2009-06-03 Shujing Zhao <pearly.zhao@oracle.com>
3048 * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
3049 JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
3050 JUMP_TABLE_DATA_P where applicable.
3051 * config/sh/sh.c: Ditto.
3052 * config/sh/sh.h: Ditto.
3053 * config/sh/sh.md: Ditto.
3054 * config/sh/symbian.c: Ditto.
3056 2009-06-03 Uros Bizjak <ubizjak@gmail.com>
3058 * config/i386/driver-i386.c (describe_cache): Optimize
3059 concatenation of strings. Use snprintf instead of sprintf.
3060 (host_detect_local_cpu): Ditto. Ignore -march and -mtune for native
3061 target when not compiling with GCC.
3063 2009-06-02 Kaz Kojima <kkojima@gcc.gnu.org>
3065 * config/sh/sh.c: Revert last change.
3066 (sh_expand_epilogue): Emit a blockage insn before the frame
3067 pointer adjustment unconditionally.
3069 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
3071 * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
3072 * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
3073 * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
3074 * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
3075 to COLLECT_GCC_OPTIONS.
3077 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
3079 * collect2.c (target_system_root): New variable.
3080 (main): Handle --sysroot=.
3081 (ignore_library): Strip the sysroot from the library path.
3083 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
3085 * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
3086 (collect2.o): Depend on collect2-aix.h.
3087 (collect2-aix.o): New rule.
3088 * collect2-aix.h: New file.
3089 * collect2-aix.c: Likewise.
3090 * collect2.c: Include collect2-aix.h. Don't undefine
3091 OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
3092 Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
3093 Use TARGET_AIX_VERSION instead of _AIX51.
3094 * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
3095 * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
3096 * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
3097 * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
3098 * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
3100 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
3102 * collect2.c (ignore_library): Avoid premature post-increment
3105 2009-06-02 Richard Sandiford <r.sandiford@uk.ibm.com>
3107 * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
3108 * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
3109 !CROSS_DIRECTORY_STRUCTURE alternative and use it for
3110 CROSS_DIRECTORY_STRUCTURE too.
3111 (LINK_LIBG_SPEC): Likewise.
3112 (LIB_SPEC): Add %R to sysroot paths.
3113 * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
3114 (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
3115 * config/rs6000/aix51.h: As for aix43.h.
3116 * config/rs6000/aix52.h: Likewise.
3117 * config/rs6000/aix53.h: Likewise.
3118 * config/rs6000/aix61.h: Likewise.
3119 * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
3120 to the beginning of sysroot paths.
3122 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3124 * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
3125 INSN_LISTs that are out of the REG_NOTE range.
3127 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3129 * loop-unroll.c (struct iv_to_split): Add pointer to next.
3130 (struct var_to_expand): Likewise.
3131 (struct opt_info): Add head and tail for linked lists of the above.
3132 (analyze_insn_to_expand_var): Initialize next.
3133 (analyze_iv_to_split_insn): Likewise.
3134 (analyze_insns_in_loop): Create linked lists.
3135 (allocate_basic_variable): Simplify for use without hash table.
3136 (insert_var_expansion_initialization): Likewise, make it type-safer.
3137 (combine_var_copies_in_loop_exit): Likewise.
3138 (apply_opt_in_copies): Walk lists rather than hash tables.
3139 (release_var_copies): Simplified and inlined by hand into...
3140 (free_opt_info): ... this function.
3142 2009-06-02 Richard Guenther <rguenther@suse.de>
3144 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
3147 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3149 * cfgexpand.c (gimple_expand_cfg): Discard the source location
3150 only for builtins that are not overridden.
3152 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3154 * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
3157 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3159 * df-core.c (df_ref_debug): Honor -fdump-noaddr.
3161 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3163 * combine.c (move_deaths): Compare LUIDs within the same BB only.
3165 2009-06-02 Alexandre Oliva <aoliva@redhat.com>
3167 * common.opt (fdump-unnumbered-links): New.
3168 * doc/invoke.texi (-fdump-unnumbered-links): Document it.
3169 * print-rtl.c (flag_dump_unnumbered_links): New.
3170 (print_rtx): Test it.
3172 2009-06-02 Richard Earnshaw <rearnsha@arm.com>
3174 * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
3175 push/pop multiple to 8-byte alignment.
3177 2009-06-01 Jakub Jelinek <jakub@redhat.com>
3179 * config/i386/i386.c (queued_cfa_restores): New static variable.
3180 (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
3182 (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
3183 (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
3184 Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
3185 Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
3186 note unconditionally.
3187 (ix86_emit_restore_regs_using_mov): Likewise.
3188 (ix86_emit_restore_sse_regs_using_mov): Likewise.
3189 (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
3190 it through to ix86_emit_restore_reg_using_pop.
3191 (ix86_emit_leave): Add RED_OFFSET argument. Call
3192 ix86_add_queued_cfa_restore_notes. Call ix86_add_cfa_restore_note
3193 instead of adding REG_CFA_OFFSET note unconditionally.
3194 (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
3195 the above functions. Call ix86_add_queued_cfa_restore_notes when
3198 * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
3199 force output of the label even for dwarf2out_do_cfi_asm.
3200 (add_fde_cfi): If -g2 and above and cfi might change CFA,
3201 force creation of CFI label and chain DW_CFA_set_loc jumping to it
3202 for convert_cfa_to_fb_loc_list. Adjust other dwarf2out_cfi_label
3204 (dwarf2out_stack_adjust, dwarf2out_frame_debug,
3205 dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
3206 dwarf2out_cfi_label callers.
3207 * tree.h (dwarf2out_cfi_label): Adjust prototype.
3208 * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
3209 Adjust dwarf2out_cfi_label callers.
3210 * config/vax/vax.c (vax_output_function_prologue): Likewise.
3212 * config/i386/i386.h (struct machine_cfa_state,
3213 struct machine_function): Guard with ifndef USED_FOR_TARGET
3214 instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
3217 * emutls.c (__emutls_get_address): Change arr->size to mean number
3218 of allocated arr->data entries instead of # of slots + 1.
3221 * recog.c (peep2_reinit_state): New function.
3222 (peephole2_init_state): Use it at the end of a basic block and also
3223 when seeing a RTX_FRAME_RELATED_P insn.
3225 2009-06-01 Steve Ellcey <sje@cup.hp.com>
3227 * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
3228 fixuns_truncrfdi2): New.
3229 (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
3230 *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
3231 *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
3232 *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
3233 *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
3234 *recip_approx): Remove.
3235 (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
3236 moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
3237 divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
3239 * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
3242 2009-06-01 Ian Lance Taylor <iant@google.com>
3244 * attribs.c (register_attribute): Use CONST_CAST.
3245 * collect2.c (main): Use CONST_CAST2.
3246 (scan_prog_file): Likewise.
3247 * gcc.c (process_command, main): Likewise.
3248 * toplev.c (toplev_main): Likewise.
3250 * c-typeck.c (handle_warn_cast_qual): New static function,
3251 partially broken out of build_c_cast.
3252 (build_c_cast): Call handle_warn_cast_qual.
3253 * doc/invoke.texi (Warning Options): Document new effect of
3256 2009-06-01 Aldy Hernandez <aldyh@redhat.com>
3258 * diagnostic.c (diagnostic_build_prefix): Always print columns.
3259 (diagnostic_report_current_module): Print columns.
3260 * common.opt (flag_show_column): Enable by default.
3262 2009-06-01 Luis Machado <luisgpm@br.ibm.com>
3264 * alias.c (find_base_term): Check for NULL term before returning.
3266 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
3268 Revert due to PR40320:
3269 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
3270 * calls.c (emit_library_call_value_1): Don't force_operand for move
3273 2009-06-01 Olivier Hainque <hainque@adacore.com>
3274 Eric Botcazou <ebotcazou@adacore.com>
3276 * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
3277 to be processed as a bitfield for constructor output purposes.
3278 * output.h (initializer_constant_valid_for_bitfield_p): Declare
3280 * varasm.c (oc_local_state): New type, output_constructor
3281 local state to support communication with helpers.
3282 (oc_outer_state): New type, output_constructor outer state of
3283 relevance in recursive calls.
3284 (output_constructor_array_range): New output_constructor helper,
3285 extracted code for an array range element.
3286 (output_constructor_regular_field): New output_constructor helper,
3287 extracted code for an element that is not a bitfield.
3288 (output_constructor_bitfield): New output_constructor helper,
3289 extracted code for a bitfield element. Accept an OUTER state
3290 argument for recursive processing. Recurse on record or array
3291 CONSTRUCTOR values, possibly past noop conversions.
3292 (initializer_constant_valid_for_bitfield_p): New predicate. Whether
3293 VALUE is a valid constant-valued expression for use in a static
3294 bit-field initializer.
3295 (output_constructor): Rework to use helpers. Accept and honor an
3296 OUTER state argument for recursive calls. Return total size. Be
3297 prepared for nested constructors initializing bitfields.
3298 (output_constant): Feed OUTER in calls to output_constructor.
3300 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
3302 * calls.c (emit_library_call_value_1): Don't force_operand for move
3305 2009-06-01 Nick Clifton <nickc@redhat.com>
3307 * doc/invoke.texi (IA-64 Options): Fix typo.
3309 2009-06-01 Ira Rosen <irar@il.ibm.com>
3311 PR tree-optimization/39129
3312 * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
3314 (vect_do_peeling_for_loop_bound): Use
3315 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
3316 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
3317 (vect_loop_versioning): Likewise.
3318 (vect_create_cond_for_alias_checks): Fix indentation.
3319 * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
3321 (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
3322 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
3323 * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
3324 "control flow in loop".
3325 (vect_estimate_min_profitable_iters): Use
3326 LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
3327 LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
3328 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
3329 (vect_create_data_ref_ptr): Don't mention array dimension in printing.
3330 * tree-vect-stmts.c (vectorizable_store): Replace the check that the
3331 statement belongs to a group of strided accesses with the exact code
3333 (vectorizable_load): Likewise.
3334 * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
3335 (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
3337 2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
3339 * config/freebsd-stdint.h: New file.
3340 * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
3341 Add freebsd-stdint.h to tm_file.
3343 2009-06-01 Richard Earnshaw <rearnsha@arm.com>
3345 * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
3346 (thumb2_extendhidi2): Likewise.
3348 2009-05-31 Ian Lance Taylor <iant@google.com>
3350 * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
3352 2009-05-31 Ian Lance Taylor <iant@google.com>
3354 * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
3355 (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
3356 (ipa-reference.o): Depend upon gt-ipa-reference.h.
3358 2009-05-31 Jason Merrill <jason@redhat.com>
3360 * tree-pretty-print.c (print_call_name): Take the callee, not the
3361 call itself. Make non-static. Use dump_function_name for functions.
3362 (dump_generic_node): Adjust.
3363 * diagnostic.h: Declare print_call_name.
3364 * gimple-pretty-print.c (dump_gimple_call): Use it.
3366 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
3368 * config/sh/sh.md (ashldi3_std): New define_expand.
3371 2009-05-31 Kaz Kojima <kkojima@gcc.gnu.org>
3374 * config/sh/sh.c: Include debug.h.
3375 (sh_expand_epilogue): Emit a blockage insn before the frame
3376 pointer adjustment also when dwarf2out_do_frame returns true.
3378 2009-05-31 Richard Earnshaw <rearnsha@arm.com>
3380 * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
3381 (thumb2_extendqidi2): New pattern.
3383 2009-05-31 Ira Rosen <irar@il.ibm.com>
3385 * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
3386 mark phis for renaming.
3387 * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
3388 (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
3389 Call mark_sym_for_renaming.
3390 * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
3391 * tree-vect-loop.c (vect_transform_loop): Remove
3392 vect_memsyms_to_rename initialization and a call to
3393 mark_set_for_renaming.
3395 2009-05-31 Jakub Jelinek <jakub@redhat.com>
3398 * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
3399 frame related even if !set_cfa && style < 0.
3401 2009-05-30 Kai Tietz <kai.tietz@onevision.com>
3403 * config/i386/mingw-tls.c: New file.
3404 * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
3405 * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
3406 defining _WIN32 but not __CYGWIN__.
3408 2009-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3410 * configure.ac: Add MPC support.
3412 * config.in, configure: Regenerate.
3414 2009-05-29 Richard Henderson <rth@redhat.com>
3416 * cfgcleanup.c (try_crossjump_to_edge): Only skip past
3417 NOTE_INSN_BASIC_BLOCK.
3418 * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
3419 Duplicate NOTE_INSN_EPILOGUE_BEG notes.
3420 * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
3422 * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
3424 (add_cfi): Disable check redefining cfa away from drap.
3425 (lookup_cfa_1): Add remember argument; handle remember/restore.
3426 (lookup_cfa): Pass remember argument.
3427 (cfa_remember): New.
3428 (compute_barrier_args_size_1): Remove sibcall check.
3429 (dwarf2out_frame_debug_def_cfa): New.
3430 (dwarf2out_frame_debug_adjust_cfa): New.
3431 (dwarf2out_frame_debug_cfa_offset): New.
3432 (dwarf2out_frame_debug_cfa_register): New.
3433 (dwarf2out_frame_debug_cfa_restore): New.
3434 (dwarf2out_frame_debug): Handle REG_CFA_* notes.
3435 (dwarf2out_begin_epilogue): New.
3436 (dwarf2out_frame_debug_restore_state): New.
3437 (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
3438 DW_CFA_restore_state.
3439 (output_cfi_directive): Likewise.
3440 (convert_cfa_to_fb_loc_list): Likewise.
3441 (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
3442 * dwarf2out.h: Update.
3443 * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
3444 (copy_insn_1): Early out for null.
3445 * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
3446 and dwarf2out_frame_debug_restore_state.
3447 * function.c (prologue, epilogue, sibcall_epilogue): Remove.
3448 (prologue_insn_hash, epilogue_insn_hash): New.
3449 (free_after_compilation): Adjust freeing accordingly.
3450 (record_insns): Create hash table if needed; push insns into
3451 hash instead of array.
3452 (maybe_copy_epilogue_insn): New.
3453 (contains): Search hash table instead of array.
3454 (sibcall_epilogue_contains): Remove.
3455 (thread_prologue_and_epilogue_insns): Split eh_return insns
3456 and mark them as epilogues.
3457 (reposition_prologue_and_epilogue_notes): Rewrite epilogue
3458 scanning in terms of basic blocks.
3459 * insn-notes.def (CFA_RESTORE_STATE): New.
3460 * jump.c (returnjump_p_1): Accept EH_RETURN.
3461 (eh_returnjump_p_1, eh_returnjump_p): New.
3462 * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
3463 CFA_REGISTER, CFA_RESTORE): New.
3464 * rtl.def (EH_RETURN): New.
3465 * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
3467 * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
3468 (eh_return_internal): Use eh_return rtx; split w/ epilogue.
3470 * config/i386/i386.c (gen_push): Update cfa state.
3471 (pro_epilogue_adjust_stack): Add set_cfa argument. When true,
3472 add a CFA_ADJUST_CFA note.
3473 (ix86_dwarf_handle_frame_unspec): Remove.
3474 (ix86_expand_prologue): Update cfa state.
3475 (ix86_emit_restore_reg_using_pop): New.
3476 (ix86_emit_restore_regs_using_pop): New.
3477 (ix86_emit_leave): New.
3478 (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
3479 (ix86_expand_epilogue): Add notes for unwinding the epilogue.
3480 * config/i386/i386.h (struct machine_cfa_state): New.
3481 (ix86_cfa_state): New.
3482 * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
3483 (eh_return_internal): Merge from eh_return_<mode>,
3484 use eh_return rtx, split w/ epilogue.
3486 2009-05-29 Ian Lance Taylor <iant@google.com>
3488 * builtins.c (validate_gimple_arglist): Don't use va_arg with
3490 * calls.c (emit_library_call_value_1): Likewise.
3492 * c-typeck.c (c_build_va_arg): New function.
3493 * c-tree.h (c_build_va_arg): Declare.
3494 * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
3495 instead of build_va_arg.
3497 2009-05-29 Eric Botcazou <ebotcazou@adacore.com>
3499 * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
3500 (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
3501 (ptr_difference_cost): Use affine combinations to compute it.
3502 (difference_cost): Likewise.
3503 (get_computation_cost_at): Compute more accurate cost for addresses
3504 if the ratio is a multiplier allowed in addresses.
3505 For non-addresses, consider that an additional offset or symbol is
3508 2009-05-29 Jakub Jelinek <jakub@redhat.com>
3510 * config/i386/i386.c (ix86_decompose_address): Avoid useless
3511 0 displacement. Add 0 displacement if base is %[er]bp or %r13.
3513 * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
3514 TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
3515 (prefix_rex): For UNIT_MMX don't imply the prefix by default
3517 (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
3518 to 1 for TYPE_SSE{IADD1,CVT1}.
3519 (prefix_vex_imm8): Removed.
3520 (length_vex): Only pass 1 as second argument to
3521 ix86_attr_length_vex_default if prefix_extra is 0.
3522 (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
3523 (length): For prefix vex computation use length_immediate
3524 attribute instead of prefix_vex_imm8.
3525 (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
3526 addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
3527 *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
3528 *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
3529 (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
3530 *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
3531 a space in between the operands.
3532 (*anddi_1_rex64, *andsi_1): Likewise. Override prefix_rex to 1
3533 if one operand is 0xff and the other one si, di, bp or sp.
3534 (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
3535 other one si, di, bp or sp.
3536 (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
3537 (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
3538 type and mode attributes.
3539 (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
3540 (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
3541 prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
3542 (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
3543 prefix_data16 attribute iff MODE_DF.
3544 (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
3545 (fix_trunc<mode>di_sse): Set prefix_rex attribute.
3546 (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
3547 constm128_operand in length_immediate computation.
3548 (*addhi_4): Likewise. Fix mode attribute to MODE_HI.
3549 (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
3550 (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
3551 length_immediate attribute to 1.
3552 (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
3553 (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
3554 for certain alternatives.
3555 (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
3556 prefix_data16 attribute if MODE_V1DF.
3557 (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
3558 length_immediate to 1.
3559 (set_got_rex64, set_rip_rex64): Remove length attribute, set
3560 length_address to 4, set mode attribute to MODE_DI.
3561 (set_got_offset_rex64): Likewise. Set length_immediate to 0.
3562 (fxam<mode>2_i387): Set length attribute to 4.
3563 (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
3564 *prefetch_3dnow_rex): Override length_address attribute.
3565 (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
3567 * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
3568 (constm128_operand): Removed.
3569 * config/i386/i386.c (memory_address_length): For
3570 disp && !index && !base in 64-bit mode account for SIB byte if
3571 print_operand_address can't optimize disp32 into disp32(%rip)
3572 and UNSPEC doesn't imply (%rip) addressing. Add 1 to length
3573 for fs: or gs: segment.
3574 (ix86_attr_length_immediate_default): When checking if shortform
3575 is possible, truncate immediate to the length of the non-shortened
3577 (ix86_attr_length_address_default): Ignore MEM_P operands
3579 (ix86_attr_length_vex_default): Only check for DImode on
3580 GENERAL_REG_P operands.
3581 * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
3582 prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
3583 (sse_cvttps2pi): Clear prefix_rep attribute.
3584 (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
3586 (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
3587 (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
3588 *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
3589 iff operand 2 is const_int_operand.
3590 (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
3591 sse2_shufpd_<mode>): Set length_immediate attribute to 1.
3592 (sse2_pshufd_1): Likewise. Set prefix attribute to maybe_vex
3594 (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
3596 (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
3597 prefix_data16 attribute for movlpd and movhpd instructions.
3598 (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise. Override
3599 length_immediate for shufpd instruction.
3600 (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
3601 (avx_cmpp<avxmodesuffixf2c><mode>3,
3602 avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
3603 <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
3604 avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
3605 *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
3606 (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
3607 (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
3608 (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
3609 prefix_data16 attribute for the first alternative to 1.
3610 (*avx_loadlps): Override length_immediate for the first alternative.
3611 (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
3612 attributes for second alternative.
3613 (*vec_concatv2sf_sse4_1): Override length_immediate and
3614 prefix_data16 attributes for second alternative.
3615 (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
3616 vec_extract_hi_<mode>, vec_extract_lo_v16hi,
3617 vec_extract_hi_v16hi, vec_extract_lo_v32qi,
3618 vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
3619 (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
3620 prefix_data16 and length_immediate to 1.
3621 (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
3623 (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
3624 prefix_extra attribute for variants that don't have 0f prefix alone.
3625 (*avx_pinsr<ssevecsize>): Likewise. Set length_immediate to 1.
3626 (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
3627 *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
3628 *sse4_1_pextrd): Set length_immediate to 1.
3629 (*sse4_1_pinsrd): Likewise. Set prefix_extra to 1.
3630 (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
3632 (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
3633 *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
3634 length_immediate to 1 for second alternative.
3635 (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
3636 prefix_extra and length_immediate attributes for the first
3638 (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
3640 (*vec_concatv2di_rex64_sse4_1): Likewise. Override prefix_rex
3641 to 1 for the first and third alternative.
3642 (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
3644 (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
3646 (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
3648 (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
3649 *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
3650 *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
3651 *avx_psign<mode>3): Set prefix_extra attribute to 1.
3652 (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
3653 ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
3654 ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
3655 ssse3_psign<mode>3): Override prefix_rex attribute.
3656 (*avx_palignrti): Override prefix_extra and length_immediate to 1.
3657 (ssse3_palignrti): Override length_immediate to 1.
3658 (ssse3_palignrdi): Override length_immediate to 1, override
3659 prefix_rex attribute.
3660 (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
3661 (sse4a_extrqi): Override length_immediate to 2.
3662 (sse4a_insertqi): Likewise. Override prefix_data16 to 0.
3663 (sse4a_insertq): Override prefix_data16 to 0.
3664 (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
3665 avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
3666 avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
3667 *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
3668 avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
3669 and length_immediate to 1.
3670 (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
3671 sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
3672 sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
3673 sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
3674 and length_immediate to 1.
3675 (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
3676 (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
3677 (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
3678 avx_ptest256): Override prefix_extra to 1.
3679 (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
3680 Override prefix_data16 and length_immediate to 1.
3681 (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
3682 sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
3683 sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
3684 sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
3685 prefix_data16 to 0 and prefix_extra to 2.
3686 (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
3687 (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
3689 (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
3690 sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
3691 Override prefix_data16 and prefix_rep to 0, length_immediate to 1
3692 and prefix_extra to 2.
3693 (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
3694 prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
3695 (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
3696 avx_vpermilvar<mode>3,
3697 avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
3698 avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
3699 avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
3700 avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
3701 Override prefix_extra to 1.
3702 (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
3703 (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
3704 vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
3705 vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
3706 prefix_extra and length_immediate to 1.
3707 (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
3709 (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
3710 to 1 for the first alternative.
3711 * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
3712 prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
3714 (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
3715 *movv2sf_internal_avx, *movv2sf_internal): Override
3716 prefix_rep attribute for certain alternatives.
3717 (*mov<mode>_internal): Override prefix_rep or prefix_data16
3718 attributes for certain alternatives.
3719 (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
3720 attributes for certain alternatives.
3721 (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
3722 *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
3723 mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
3724 mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
3725 *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
3726 mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
3727 mmx_pswapdv2si2): Set prefix_extra attribute to 1.
3728 (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
3729 length_immediate to 1 if operand 2 is const_int_operand.
3730 (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
3731 *vec_extractv2si_1): Set length_immediate attribute to 1.
3732 (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
3733 using old 3DNOW insn rather than SSE/3DNOW_A.
3734 (mmx_emms, mmx_femms): Clear modrm attribute.
3736 2009-05-29 Martin Jambor <mjambor@suse.cz>
3738 * tree-sra.c: New implementation of SRA.
3740 * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
3741 (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
3742 (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
3743 * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
3744 (SRA_MAX_STRUCTURE_COUNT): Removed.
3745 (SRA_FIELD_STRUCTURE_RATIO): Removed.
3746 * doc/invoke.texi (sra-max-structure-size): Removed.
3747 (sra-field-structure-ratio): Removed.
3749 2009-05-29 Jakub Jelinek <jakub@redhat.com>
3752 * builtins.c (expand_builtin_memcmp): Convert len to sizetype
3755 2009-05-29 Andrey Belevantsev <abel@ispras.ru>
3757 PR rtl-optimization/40101
3758 * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
3759 seqno. Adjust comment.
3760 * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
3761 inserting bookkeeping before a jump, the jump is not scheduled.
3762 When no positive seqno found, provide a value. Add comment.
3764 2009-05-29 Richard Guenther <rguenther@suse.de>
3766 * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
3767 short-cutting on the first component.
3769 2009-05-29 Jakub Jelinek <jakub@redhat.com>
3772 * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
3773 for trees other than decls/types.
3775 2009-05-29 Richard Guenther <rguenther@suse.de>
3777 * tree-ssa-operands.c (get_expr_operands): Do not handle
3778 INDIRECT_REFs in the handled-component case. Remove
3779 unused get_ref_base_and_extent case.
3780 * tree-dfa.c (get_ref_base_and_extent): Avoid calling
3781 tree_low_cst and host_integerp where possible.
3782 * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
3783 codes for equivalence.
3784 * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
3786 2009-05-29 David Billinghurst <billingd@gcc.gnu.org>
3788 * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
3789 to tmake_file for i[34567]86-*-cygwin*.
3791 2009-05-29 Jakub Jelinek <jakub@redhat.com>
3794 * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
3795 (altivec_categorize_keyword, init_vector_keywords,
3796 rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
3799 2009-05-29 Kai Tietz <kai.tietz@onevision.com>
3801 * tree.c (handle_dll_attribute): Check if node is
3802 of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
3804 2009-05-29 Richard Earnshaw <rearnsha@arm.com>
3806 * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
3808 (thumb2_zero_extendqidi2): Likewise.
3810 2009-05-28 Kaz Kojima <kkojima@gcc.gnu.org>
3812 * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
3813 instead of gen_movrt.
3814 * config/sh/sh.md (movrt): Remove.
3816 2009-05-28 Steve Ellcey <sje@cup.hp.com>
3818 * doc/invoke.texi (IA-64 Options):
3819 Add -msdata, -mfused-madd, -mno-inline-float-divide,
3820 -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
3821 -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
3822 -msched-prefer-non-control-spec-insns,
3823 -msched-stop-bits-after-every-cycle,
3824 -msched-count-spec-in-critical-path,
3825 -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
3826 -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
3827 Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
3828 and -msched-spec-verbose.
3830 2009-05-28 Joseph Myers <joseph@codesourcery.com>
3832 * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
3833 * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
3835 * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
3837 2009-05-28 Richard Guenther <rguenther@suse.de>
3839 * tree-ssa-alias.c (ao_ref_init): New function.
3840 (ao_ref_base): Likewise.
3841 (ao_ref_base_alias_set): Likewise.
3842 (ao_ref_alias_set): Likewise.
3843 (refs_may_alias_p_1): Change signature.
3844 (refs_may_alias_p): Adjust.
3845 (refs_anti_dependent_p): Likewise.
3846 (refs_output_dependent_p): Likewise.
3847 (call_may_clobber_ref_p_1): Change signature.
3848 (call_may_clobber_ref_p): Adjust.
3849 (stmt_may_clobber_ref_p_1): New function split out from ...
3850 (stmt_may_clobber_ref_p): ... here.
3851 (maybe_skip_until): Adjust signature.
3852 (get_continuation_for_phi): Likewise.
3853 (walk_non_aliased_vuses): Likewise.
3854 * tree-ssa-alias.h (struct ao_ref_s): New structure type.
3855 (ao_ref_init): Declare.
3856 (ao_ref_base): Likewise.
3857 (ao_ref_alias_set): Likewise.
3858 (stmt_may_clobber_ref_p_1): Likewise.
3859 (walk_non_aliased_vuses): Adjust.
3860 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
3861 (get_ref_from_reference_ops): remove.
3862 (vn_reference_lookup_2): Adjust signature.
3863 (vn_reference_lookup_3): Do not re-build trees. Handle unions.
3864 (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
3865 (vn_reference_lookup): Adjust.
3866 (vn_reference_insert): Likewise.
3867 (vn_reference_insert_pieces): Adjust signature.
3868 (visit_reference_op_call): Adjust.
3869 * tree-ssa-pre.c (get_expr_type): Simplify.
3870 (phi_translate_1): Adjust.
3871 (compute_avail): Likewise.
3872 (translate_vuse_through_block): Do not re-build trees.
3873 (value_dies_in_block_x): Likewise.
3874 * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
3876 (vn_reference_lookup_pieces): Adjust declaration.
3877 (vn_reference_insert_pieces): Likewise.
3879 2009-05-28 Benjamin Kosnik <bkoz@redhat.com>
3881 * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
3882 with checking disabled.
3884 2009-05-28 Dave Korn <dave.korn.cygwin@gmail.com>
3888 * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and
3889 macro definition for support of three-operand format aligned
3890 .comm directive in assembler on cygwin/pe/mingw target OS.
3891 * configure: Regenerate.
3892 * config.h: Regenerate.
3894 * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use
3895 aligned form of .comm directive if -mpe-aligned-commons is in effect.
3896 * config/i386/cygming.opt (-mpe-aligned-commons): Add new option.
3898 * doc/invoke.texi (-mpe-aligned-commons): Document new target option.
3899 * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons.
3901 2009-05-28 Ira Rosen <irar@il.ibm.com>
3903 PR tree-optimization/40254
3904 * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
3905 in analysis of basic blocks.
3907 2009-05-28 Adam Nemet <anemet@caviumnetworks.com>
3910 * target.h (struct gcc_target): Fix indentation. Add const_anchor.
3911 * target-def.h (TARGET_CONST_ANCHOR): New macro.
3912 (TARGET_INITIALIZER): Use it.
3913 * cse.c (CHEAPER): Move it up to the other macros.
3914 (insert): Rename this ...
3915 (insert_with_costs): ... to this. Add cost parameters. Update
3917 (insert): New function. Call insert_with_costs.
3918 (compute_const_anchors, insert_const_anchor, insert_const_anchors,
3919 find_reg_offset_for_const, try_const_anchors): New functions.
3920 (cse_insn): Call try_const_anchors. Adjust cost of src_related
3921 when using a const-anchor. Call insert_const_anchors.
3922 * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
3923 * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
3925 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
3927 * tree-inline.c (remap_decls): Enable nonlocalized variables
3928 when not optimizing.
3930 2009-05-28 Alexandre Oliva <aoliva@redhat.com>
3932 * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
3933 Simplify other tests involving optimize.
3935 2009-05-27 Tom Tromey <tromey@redhat.com>
3937 * unwind-dw2.c (_Unwind_DebugHook): New function.
3938 (uw_install_context): Call _Unwind_DebugHook.
3940 2009-05-27 Tom Tromey <tromey@redhat.com>