1 2009-09-08 Kai Tietz <kai.tietz@onevision.com>
3 * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
4 via intptr_t to long type.
5 (insert_operand_rank): Cast long type via intptr_t to
7 * genattrtab.c (RTL_HASH): Use intptr_t to cast from
9 * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
10 from pointer to unsigned via uintptr_t.
12 * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
13 uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
15 * configure: Regenerated.
16 * config.in: Regenerated
17 * system.h (stdint.h): Add include.
18 (inttypes.h): Likewise.
19 * Makefile.in (aclocal): Add config/stdint.m4.
20 * aclocal.m4: Regenerated.
22 2009-09-08 Bernd Schmidt <bernd.schmidt@analog.com>
24 * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
26 (note_np_check_stores): New function.
27 (harmless_null_pointer_p): New function.
28 (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH. Callers
29 changed. Take into account whether we're in the shadow of a condjump
30 that tested NP_REG for NULL.
31 Lose all code that tested for SEQUENCEs.
32 (workaround_speculation): Avoid inserting NOPs for loads that are
33 either always executed or a NULL pointer.
35 2009-09-08 Jan Hubicka <jh@suse.cz>
37 * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
38 * params.def (early-inlining-insns): Likewise.
40 2009-09-08 Jakub Jelinek <jakub@redhat.com>
42 PR rtl-optimization/41239
43 * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
44 * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
46 * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
47 across calls, as the calls might not always return normally.
48 (call_may_noreturn_p): New function.
49 (deps_analyze_insn): Update last_function_call_may_noreturn list.
50 (init_deps): Initialize it.
51 (remove_from_deps): Also remove calls from
52 last_function_call_may_noreturn list.
54 2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
56 * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
57 (attr "addrtype"): New member "spreg".
58 Use it if mem_spfp_address_operand is true for the address.
59 (attr "type"): New entry "stall".
60 (cpu_unit "load"): New.
61 (insn_reservations "load32", "loadp", "loadi"): Add reservation of
63 (insn_reservation "loadsp"): New.
64 (insn_reservation "load_stall1"): New.
65 (insn_reservation "load_stall3"): New.
67 * config/bfin/predicates.md (const1_operand, const3_operand): New.
68 (mem_p_address_operand): Exclude stack and frame pointer based
70 (mem_spfp_address_operand): New; match them here.
71 * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
72 (bfin_reorg): Call it if scheduling insns.
73 (bfin_gen_bundles): Remove dummy insns created by
74 add_sched_insns_for_speculation.
76 From Jie Zhang <jie.zhang@analog.com>:
77 * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
78 bfin_si_revision, bfin_workarounds): Move these ...
79 * config/bfin/bfin.h: ... here.
81 From Mike Frysinger <michael.frysinger@analog.com>
82 * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
83 BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
84 * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m, bf547m,
86 * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
87 for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M, __ADSPBF547M__
88 for BFIN_CPU_BF547M, __ADSPBF548M__ for BFIN_CPU_BF548M, and
89 __ADSPBF549M__ for BFIN_CPU_BF549M.
90 * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
91 bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
92 * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
93 * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
94 * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
95 bf542m, bf544m, bf547m, bf548m, and bf549m.
97 From Jie Zhang <jie.zhang@analog.com>:
98 * config/bfin/predicates.md (p_register_operand): New
100 (dp_register_operand): New predicate.
101 * config/bfin/bfin-protos.h (WA_05000074): Define.
102 (ENABLE_WA_05000074): Define.
103 * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for
105 (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
106 * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
107 (define_attr addrtype): Allow load/store register to be
109 (define_attr storereg): New.
110 (define_cpu_unit anomaly_05000074): New.
111 (define_insn_reservation dsp32shiftimm): New.
112 (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
113 (define_insn_reservation loadp): Cannot use slot2.
114 (define_insn_reservation loadsp): Cannot use slot2.
115 (define_insn_reservation storep): Cannot use slot2. Does not
116 apply when working around 05000074.
117 (define_insn_reservation storep_anomaly_05000074): New.
118 (define_insn_reservation storei): Does not apply when working
120 (define_insn_reservation storei_anomaly_05000074): New.
121 (define_attr length): Add dsp32shiftimm case.
122 (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
123 ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
124 movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
125 ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
126 Set type as dsp32shiftimm for dsp32shiftimm alternatives.
128 2009-09-07 Martin Jambor <mjambor@suse.cz>
131 * tree-sra.c (create_artificial_child_access): Return NULL if
132 build_ref_for_offset fails.
133 (propagate_subacesses_accross_link): Allow build_ref_for_offset
134 and create_artificial_child_access to fail.
136 2009-09-06 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
139 * unwind-dw2.c (uw_init_context_1): Mark noinline.
140 * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
141 * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
143 2009-09-07 Bernd Schmidt <bernd.schmidt@analog.com>
145 * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
146 block, ensure it has an exit edge. Emit a barrier after a jump.
148 2009-09-07 Nick Clifton <nickc@redhat.com>
150 * gcc.c (this_is_linker_script): New variable. Like
151 this_is_library_file but for the %T constructor.
152 (end_going_arg): If this_is_linker_script is set then locate the
153 script and insert a --script switch before it
154 (do_spec_2): Initialise this_is_linker_script.
155 (do_spec_1): Likewise. Handle %T construct.
156 (eval_spec_function): Preserve this_is_linker_script.
157 * doc/invoke.texi: Document %T construct in spec files.
158 * config/m32c/m32c.h (LIB_SPEC): Use it.
160 2009-09-07 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
162 * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
163 * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
164 when volatile flag is set.
165 * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
167 2009-09-06 Eric Botcazou <ebotcazou@adacore.com>
170 * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
171 (combine_stack_adjustments_for_block): Allow insns between stack
172 adjustments and stores with corresponding pre-(dec|inc)rement or
173 pre-modify operation.
175 2009-09-06 Jakub Jelinek <jakub@redhat.com>
178 * combine-stack-adj.c (struct csa_memlist): Rename to...
179 (struct csa_reflist): ... this. Rename mem field to ref.
180 (free_csa_memlist): Rename to...
181 (free_csa_reflist): ... this.
182 (record_one_stack_memref): Rename to...
183 (record_one_stack_ref): ... this. Handle also REG_P.
184 (try_apply_stack_adjustment): Handle also REG_P.
185 (struct record_stack_memrefs_data): Rename to...
186 (struct record_stack_refs_data): ... this. Rename memlist field to
188 (record_stack_memrefs): Rename to...
189 (record_stack_refs): ... this. For DEBUG_INSNs keep traversing
190 subexpressions instead of failing when a MEM contains SP references.
191 For SP itself in DEBUG_INSNs queue it also onto reflist chain.
192 (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
194 2009-09-06 Richard Guenther <rguenther@suse.de>
197 * tree.c (build_array_type): Do not record types marked
198 with structural equality in the canonical type hashtable.
200 2009-09-06 Richard Guenther <rguenther@suse.de>
203 * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
205 2009-09-05 Richard Guenther <rguenther@suse.de>
208 * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
210 2009-09-05 Richard Guenther <rguenther@suse.de>
213 * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
215 2009-09-05 Richard Guenther <rguenther@suse.de>
218 * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
219 before comparing function argument types.
221 2009-09-05 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
224 * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
227 2009-09-04 Uros Bizjak <ubizjak@gmail.com>
230 2009-08-18 Uros Bizjak <ubizjak@gmail.com>
232 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
233 locators before emit_insn is called.
235 2009-09-04 Vladimir Makarov <vmakarov@redhat.com>
238 * ira.c (update_equiv_reg): Revert my previous patch for the PR.
239 * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
240 (reginfo_init): Don't call allocate_reg_info.
242 2009-09-04 Uros Bizjak <ubizjak@gmail.com>
245 * config/alpha/alpha.c (alpha_does_function_need_gp): Use
246 NONDEBUG_INSN_P instead of INSN_P.
248 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
251 * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
253 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
256 * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
257 pattern of the split.
259 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
261 * toplev.c (process_options): Move setter of flag_var_tracking
262 before other tests that depend on it. Move down setter of
263 flag_rename_registers. Don't enable var-tracking-assignments
264 by default if selective scheduling is enabled. Warn if both
267 2009-09-04 Alexandre Oliva <aoliva@redhat.com>
269 * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
270 comment. Use switch statement to catch overlaps between rtx
271 and tree codes. Accept FUNCTION_DECLs in addition to those in...
272 (IS_DECL_CODE): ... here. Remove.
273 (check_value_is_not_decl): Remove.
274 (dv_from_decl, dv_from_value): Check after conversion.
276 2009-09-04 Richard Guenther <rguenther@suse.de>
279 * (cgraph_finalize_compilation_unit): Move finalizing aliases
280 after emitting tunks. Move emitting thunks and ctors from ...
281 (cgraph_optimize): ... here. Remove redundant
282 cgraph_analyze_functions.
283 * varasm.c (find_decl_and_mark_needed): Remove no longer
285 (finish_aliases_1): Adjust check for thunk aliases.
287 2009-09-04 Daniel Gutson <dgutson@codesourcery.com>
289 * config/arm/arm.md (ctzsi2): Added braces
290 to avoid warning that broke booststrap.
292 2009-09-04 Martin Jambor <mjambor@suse.cz>
294 PR tree-optimization/41112
295 * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
296 handle variable-bounded arrays.
297 (expr_with_var_bounded_array_refs_p): New function.
298 (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
300 2009-09-04 Wolfgang Gellerich <gellerich@de.ibm.com>
302 * config/s390/2097.md: Removed two incorrect bypasses.
303 (z10_fsimpdf): Fixed latency.
304 (z10_fhex): New insn_reservation.
305 (z10_floaddf): Fixed latency.
306 (z10_floadsf): Fixed latency.
307 (z10_ftrunctf): Fixed latency.
308 (z10_ftruncdf): Fixed latency.
309 * config/s390/s390.c (z10_cost): Fixed values.
310 (s390_adjust_priority): Added z10 path.
311 * config/s390/s390.md (type): Added fhex.
312 (*mov<mode>_64dfp): Updated type attribute.
313 (*mov<mode>_64): Updated type attribute.
314 (*mov<mode>_31): Updated type attribute.
315 (*mov<mode>"): Likewise.
316 * config/s390/2084.md (x_fsimpdf): Updated condition.
318 2009-09-04 Andreas Krebbel <krebbel1@de.ibm.com>
320 * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
321 RTXs in the predicate for operand 1.
323 2009-09-03 Daniel Gutson <dgutson@codesourcery.com>
325 * config/arm/arm.md (UNSPEC_RBIT): New constant.
327 (ctzsi2): New expand.
328 * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
330 2009-09-03 Martin Jambor <mjambor@suse.cz>
332 * tree-sra.c (duplicate_expr_for_different_base): Removed.
333 (create_artificial_child_access): Use build_ref_for_offset instead
334 of duplicate_expr_for_different_base.
335 (propagate_subacesses_accross_link): Likewise.
337 2009-09-03 Richard Sandiford <rdsandiford@googlemail.com>
339 * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
341 (mips16e_collect_argument_saves): Skip debug instructions.
342 (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
343 (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
344 (r10k_insert_cache_barriers): Likewise.
345 (mips_reorg_process_insns): Likewise.
347 2009-09-03 Vladimir Makarov <vmakarov@redhat.com>
350 * ira.c (update_equiv_reg): Remove check on class likely spill.
352 2009-09-03 Jakub Jelinek <jakub@redhat.com>
355 * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
356 SIGN_EXTEND or ZERO_EXTEND. Don't assume there is a REG inside of
360 * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
361 the stack slot if it is passed by invisible reference.
362 * var-tracking.c (vt_add_function_parameters): Handle arguments passed
363 by invisible reference.
365 2009-09-03 Bernd Schmidt <bernd.schmidt@analog.com>
367 * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
368 * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
369 * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
371 * config/bfin/sync.md: New file.
372 * config/bfin/bfin.md: Include it.
373 (UNSPEC_ATOMIC): New.
374 (UNSPEC_ONES): Provide a unique number.
376 From Jie Zhang <jie.zhang@analog.com>:
377 * config/bfin/bfin.c (ret_regs): New.
378 (must_save_fp_p): Don't return true because of frame_pointer_needed.
379 (must_save_rets_p): New.
380 (n_regs_saved_by_prologue): Use must_save_rets_p instead of
381 current_function_is_leaf.
383 (do_unlink): Likewise.
384 (expand_interrupt_handler_prologue): Use ret_regs array.
385 (expand_interrupt_handler_epilogue): Use ret_regs array and
386 pass return register to gen_return_internal.
387 (bfin_expand_epilogue): Pass return register to
389 (bfin_expand_call): Explicitly clobber RETS.
390 * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
391 * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
392 call_insn_fdpic, call_value_insn_fdpic, call_symbol,
393 call_value_symbol, call_insn, call_value_insn): Explicitly clobber
395 (return_internal): Take a reg rtx rather than the register number.
397 2009-09-03 H.J. Lu <hongjiu.lu@intel.com>
399 * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
400 when comparing against estimated_loop_iterations_int return.
402 2009-09-03 Richard Guenther <rguenther@suse.de>
404 * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
405 eh_personality_libfunc.
407 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
409 * tree-parloops.c (separate_decls_in_region): Add space.
411 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
413 * tree-parloops.c (separate_decls_in_region): Change the condition
414 checking if there are reductions in the loop.
416 2009-09-03 Razya Ladelsky <razya@il.ibm.com>
418 PR tree-optimization/38275
419 * tree-parloops.c (parallelize_loops): Replace profitability condition
420 for expected number of iterations.
422 2009-09-03 Alexandre Oliva <aoliva@redhat.com>
424 * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
425 (bootstrap-debug): Explain conditions in which it becomes default.
426 (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
429 2009-09-03 Namhyung Kim <namhyung@gmail.com>
431 * doc/invoke.texi (Optimize Options): Move
432 -finline-small-functions to the -O2 list.
434 2009-09-03 Alexandre Oliva <aoliva@redhat.com>
436 * toplev.c (process_options): Enable var-tracking-assignments
437 by default if var-tracking is enabled.
439 2009-09-02 David Daney <ddaney@caviumnetworks.com>
441 * cfgbuild.c (find_bb_boundaries): Split blocks containing a
443 * emit-rtl.c (prev_nonnote_insn_bb): New function.
444 * rtl.h (prev_nonnote_insn_bb): Declare it.
446 2009-09-03 Diego Novillo <dnovillo@google.com>
448 * cgraph.c (cgraph_node_for_decl): New.
449 * cgraph.h (cgraph_node_for_decl): Declare.
450 * tree.c (host_integerp): Return 0 if T is NULL.
452 2009-09-03 Diego Novillo <dnovillo@google.com>
454 * tree.h (struct alias_pair): Move from varasm.c.
455 (alias_pairs): Likewise.
456 (TYPE_MAXVAL): Define.
457 (TYPE_MINVAL): Define.
458 (iterative_hash_host_wide_int): Declare.
459 (remove_unreachable_alias_pairs): Declare.
460 * tree-pass.h (pass_ipa_free_lang_data): Declare.
461 * diagnostic.c (default_diagnostic_starter): Make extern.
462 (default_diagnostic_finalizer): Make extern.
463 * diagnostic.h (default_diagnostic_starter): Declare.
464 (default_diagnostic_finalizer): Declare.
465 (default_tree_printer): Declare.
466 * toplev.c (default_tree_printer): Make extern.
468 2009-09-03 Richard Guenther <rguenther@suse.de>
469 Diego Novillo <dnovillo@google.com>
471 * cgraph.c (cgraph_add_new_function): Remove gimplification.
472 * cgraphunit.c (cgraph_expand_function): Do not emit
473 associated thunks from here.
474 (cgraph_emit_thunks): New.
475 (cgraph_optimize): Call it.
476 Return if any IPA pass finds an error.
477 * varasm.c (finish_aliases_1): Ignore errorneous aliases used
480 2009-09-03 Simon Baldwin <simonb@google.com>
481 Rafael Espindola <espindola@google.com>
482 Richard Guenther <rguenther@suse.de>
483 Doug Kwan <dougkwan@google.com>
484 Diego Novillo <dnovillo@google.com>
486 * tree.c: Include tree-pass.h, langhooks-def.h,
487 diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
488 (free_lang_data_in_type): New.
489 (need_assembler_name_p): New.
490 (free_lang_data_in_block): New.
491 (free_lang_data_in_decl): New.
492 (struct free_lang_data_d): New.
493 (add_tree_to_fld_list): New.
494 (find_decls_types_r): New.
495 (get_eh_types_for_runtime): New.
496 (find_decls_types_in_eh_region): New.
497 (find_decls_types_in_node): New.
498 (find_decls_types_in_var): New.
499 (free_lang_data_in_cgraph): New.
500 (free_lang_data): New.
501 (gate_free_lang_data): New.
502 (pass_ipa_free_lang_data): New.
504 2009-09-03 Diego Novillo <dnovillo@google.com>
506 * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
507 * langhooks.h (struct lang_hooks): Add field free_lang_data.
508 (lang_hooks): Remove const qualifier.
509 * ipa.c (cgraph_remove_unreachable_nodes): Call
510 remove_unreachable_alias_pairs.
511 * except.c (add_type_for_runtime): Check if TYPE has
512 already been converted.
513 (lookup_type_for_runtime): Likewise.
514 (check_handled): Handle converted types.
515 * varasm.c (remove_unreachable_alias_pairs): New.
516 * gimple.c: Include demangle.h.
517 (gimple_decl_printable_name): New.
518 (gimple_fold_obj_type_ref): New.
519 * gimple.h (gimple_decl_printable_name): Declare.
520 (gimple_fold_obj_type_ref): Declare.
521 * passes.c (init_optimization_passes): Add pass
522 pass_ipa_free_lang_data.
523 * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
524 (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
526 2009-09-03 Diego Novillo <dnovillo@google.com>
528 * c-lang.c (lang_hooks): Remove const qualifier.
530 2009-09-02 Loren James Rittle <ljrittle@acm.org>
532 * doc/install.texi (*-*-freebsd*): Update target information.
534 2009-09-02 Anatoly Sokolov <aesok@post.ru>
536 * hard-reg-set.h (call_fixed_regs): Remove.
537 * reginfo.c (call_fixed_regs): Remove.
538 (init_reg_sets_1): Remove initialization of call_fixed_regs.
539 (globalize_reg): Don't use call_fixed_regs.
540 * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
543 2009-09-01 Michael Matz <matz@suse.de>
545 * expr.h (emit_storent_insn, expand_expr_real_1,
546 expand_expr_real_2): Declare.
547 * expr.c (emit_storent_insn, expand_expr_real_1,
548 expand_expr_real_2): Export.
549 (store_expr): Setting and evaluating dont_return_target is
551 (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
552 LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
553 * except.c (expand_resx_expr): Rename to ...
554 (expand_resx_stmt): ... this. Rewrite to take gimple statement.
555 * except.h (expand_resx_stmt): Declare.
556 * stmt.c: Add include gimple.h
557 (expand_asm_expr): Rename to ...
558 (expand_asm_stmt): ... this. Rewrite to take gimple statement.
559 (expand_case): Rewrite to take gimple statement.
560 * tree.h (expand_asm_stmt): Declare.
561 (expand_case): Change prototype.
562 * Makefile.in (stmt.o): Depend on gimple.h.
563 * builtins.c (expand_builtin_synchronize): Build gimple asm
564 statement, not an ASM_EXPR.
565 * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
566 gimple_to_tree, release_stmt_tree): Remove.
567 (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
568 ggc_free, but hold comparison code and operands separately.
569 Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
570 (expand_call_stmt, expand_gimple_stmt_1,
571 expand_gimple_stmt): New helpers.
572 (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
573 release_stmt_tree. Call expand_gimple_stmt instead.
574 (expand_gimple_basic_block): Ditto.
576 * calls.c (emit_call_1): Don't look at EH regions here, make
577 fntree parameter useless.
578 (expand_call): New local rettype for TREE_TYPE(exp), use it
579 throughout. Remove local p, use addr instead.
580 Don't look at EH regions here.
582 2009-09-02 Vladimir Makarov <vmakarov@redhat.com>
584 * doc/invoke.texi (-fsched-pressure): Document it.
585 (-fsched-reg-pressure-heuristic): Remove it.
587 * reload.c (ira.h): Include.
588 (find_reloads): Add choosing reload on number of small spilled
591 * haifa-sched.c (ira.h): Include.
592 (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
593 saved_reg_pressure, curr_reg_live, saved_reg_live,
594 region_ref_regs): New variables.
595 (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
596 initiate_reg_pressure_info, setup_ref_regs,
597 initiate_bb_reg_pressure_info, save_reg_pressure,
598 restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
600 (setup_insn_reg_pressure_info): New function.
601 (rank_for_schedule): Add pressure checking and insn issue time.
602 Remove comparison of insn reg weights.
603 (ready_sort): Set insn reg pressure info.
604 (update_register_pressure, setup_insn_max_reg_pressure,
605 update_reg_and_insn_max_reg_pressure,
606 sched_setup_bb_reg_pressure_info): New functions.
607 (schedule_insn): Add code for printing and updating reg pressure
609 (find_set_reg_weight, find_insn_reg_weight): Remove.
610 (ok_for_early_queue_removal): Do nothing if pressure_only_p.
611 (debug_ready_list): Print reg pressure info.
612 (schedule_block): Ditto. Check insn issue time.
613 (sched_init): Set up sched_pressure_p. Allocate and set up some
614 reg pressure related info.
615 (sched_finish): Free some reg pressure related info.
616 (fix_tick_ready): Make insn always ready if pressure_p.
617 (init_h_i_d): Don't call find_insn_reg_weight.
618 (haifa_finish_h_i_d): Free insn reg pressure info.
620 * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
621 ira_memory_move_cost, ira_class_hard_regs,
622 ira_class_hard_regs_num, ira_no_alloc_regs,
623 ira_available_class_regs, ira_reg_class_cover_size,
624 ira_reg_class_cover, ira_class_translate): Move to ira.h.
626 * ira-lives.c (single_reg_class): Check mode to find how many
627 registers are necessary for operand.
628 (ira_implicitly_set_insn_hard_regs): New.
630 * common.opt (fsched-pressure): New options.
631 (fsched-reg-pressure-heuristic): Remove.
633 * ira.c (setup_eliminable_regset): Rename to
634 ira_setup_eliminable_regset. Make it external.
635 (expand_reg_info): Pass cover class to setup_reg_classes.
636 (ira): Call resize_reg_info instead of allocate_reg_info.
638 * sched-deps.c: Include ira.h.
639 (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
640 (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
641 reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
642 mark_insn_hard_regno_birth, mark_insn_reg_birth,
643 mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
644 mark_insn_reg_store, mark_insn_reg_clobber,
645 setup_insn_reg_pressure_info): New.
646 (sched_analyze_1): Update implicit_reg_pending_uses.
647 (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
648 Use them to create dependencies. Set insn reg uses and pressure
649 info. Process reg_pending_uses in one place.
650 (free_deps): Free implicit sets.
651 (remove_from_deps): Remove implicit sets if necessary. Check
652 implicit sets when clearing reg_last_in_use.
653 (init_deps_global): Clear implicit_reg_pending_clobbers and
654 implicit_reg_pending_uses.
656 * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
657 ira_memory_move_cost, ira_class_hard_regs,
658 ira_class_hard_regs_num, ira_no_alloc_regs,
659 ira_available_class_regs, ira_reg_class_cover_size,
660 ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
661 (ira_setup_eliminable_regset, ira_set_pseudo_classes,
662 ira_implicitly_set_insn_hard_regs): New prototypes.
664 * ira-costs.c (pseudo_classes_defined_p, allocno_p,
665 cost_elements_num): New variables.
666 (allocno_costs, total_costs): Rename to costs and
668 (COSTS_OF_ALLOCNO): Rename to COSTS.
669 (allocno_pref): Rename to pref.
670 (allocno_pref_buffer): Rename to pref_buffer.
671 (common_classes): Rename to regno_cover_class.
673 (record_reg_classes): Set allocno attributes only if allocno_p.
674 (record_address_regs): Ditto. Use COST_INDEX instead of
676 (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
677 and COSTS_OF_ALLOCNO.
678 (print_costs): Rename to print_allocno_costs.
679 (print_pseudo_costs): New.
680 (process_bb_node_for_costs): Split into 2 functions with new
681 function process_bb_for_costs. Pass BB to process_bb_for_costs.
682 (find_allocno_class_costs): Rename to find_costs_and_classes. Add
683 new parameter dump_file. Use cost_elements_num instead of
684 ira_allocnos_num. Make one iteration if preferred classes were
685 already calculated for scheduler. Make 2 versions of code
686 depending on allocno_p.
687 (setup_allocno_cover_class_and_costs): Check allocno_p. Use
688 regno_cover_class and COSTS instead of common_classes and
690 (init_costs, finish_costs): New.
691 (ira_costs): Set up allocno_p and cost_elements_num. Call
692 init_costs and finish_costs.
693 (ira_set_pseudo_classes): New.
695 * rtl.h (allocate_reg_info): Remove.
696 (resize_reg_info): Change return type.
697 (reg_cover_class): New.
698 (setup_reg_classes): Add new parameter.
700 * sched-int.h (struct deps_reg): New member implicit_sets.
701 (sched_pressure_p, sched_regno_cover_class): New external
703 (INCREASE_BITS): New macro.
704 (struct reg_pressure_data, struct reg_use_data): New.
705 (struct _haifa_insn_data): Remove reg_weight. Add members
706 reg_pressure, reg_use_list, reg_set_list, and
707 reg_pressure_excess_cost_change.
708 (struct deps): New member implicit_sets.
709 (pressure_p): New variable.
710 (COVER_CLASS_BITS, INCREASE_BITS): New macros.
711 (struct reg_pressure_data, struct reg_use_data): New.
712 (INSN_REG_WEIGHT): Remove.
713 (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
714 INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New
716 (sched_init_region_reg_pressure_info,
717 sched_setup_bb_reg_pressure_info): New prototypes.
719 * reginfo.c (struct reg_pref): New member coverclass.
720 (reg_cover_class): New function.
721 (reginfo_init, pass_reginfo_init): Move after free_reg_info.
722 (reg_info_size): New variable.
723 (allocate_reg_info): Make static. Setup reg_info_size.
724 (resize_reg_info): Use reg_info_size. Return flag of resizing.
725 (setup_reg_classes): Add a new parameter. Setup cover class too.
727 * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to the
730 * sched-rgn.c (deps_join): Set up implicit_sets.
731 (schedule_region): Set up region and basic blocks pressure
734 * passes.c (init_optimization_passes): Move
735 pass_subregs_of_mode_init before pass_sched.
737 2009-09-02 Martin Jambor <mjambor@suse.cz>
739 * tree-sra.c (struct access): New field grp_hint.
740 (dump_access): Dump grp_hint.
741 (sort_and_splice_var_accesses): Set grp_hint if a group is read
743 (analyze_access_subtree): Only scalarize accesses with grp_hint set or
744 those which have been specifically read and somehow written to.
745 (propagate_subacesses_accross_link): Set grp_hint of right child and
746 also possibly of the left child.
748 2009-09-02 Jakub Jelinek <jakub@redhat.com>
750 * tree-object-size.c (addr_object_size): Always use object_size_type
751 0 or 2 when determining the pointer pointed object size.
753 2009-09-02 Richard Guenther <rguenther@suse.de>
756 2009-08-31 Richard Guenther <rguenther@suse.de>
758 * builtins.c (fold_builtin_memory_op): Use the alias oracle
759 to query if the memory regions for memmove overlap.
760 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
761 asserts on pointers, instead deal with odd trees.
762 (ptr_derefs_may_alias_p): Likewise.
763 (refs_may_alias_p_1): Constructor bases also never alias.
765 2009-08-01 Christian Bruel <christian.bruel@st.com>
768 2009-07-31 Christian Bruel <christian.bruel@st.com>
769 * gcc/config.gcc (sh*-*-elf): test with_libgloss.
771 2009-09-01 Alexandre Oliva <aoliva@redhat.com>
773 * doc/invoke.texi (-fvar-tracking-assignments): New.
774 (-fvar-tracking-assignments-toggle): New.
775 (-fdump-final-insns=file): Mark filename as optional.
776 (--param min-nondebug-insn-uid): New.
777 (-gdwarf-@{version}): Mention version 4.
778 * opts.c (common_handle_option): Accept it.
779 * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
780 * regrename.c (regrename_optimize): Drop last. Don't count debug
781 insns as uses. Don't reject change because of debug insn.
782 (do_replace): Reject DEBUG_INSN as chain starter. Take base_regno
783 from the chain starter, and check for inexact matches in
785 (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
786 (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
787 * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
788 * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
789 * doc/gimple.texi (is_gimple_debug): New.
790 (gimple_debug_bind_p): New.
791 (is_gimple_call, gimple_assign_cast_p): End sentence with period.
792 * doc/install.texi (bootstrap-debug): More details.
793 (bootstrap-debug-big, bootstrap-debug-lean): Document.
794 (bootstrap-debug-lib): More details.
795 (bootstrap-debug-ckovw): Update.
796 (bootstrap-time): New.
797 * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
798 (insert_phi_nodes_for): Insert debug stmts.
799 (rewrite_stmt): Take iterator. Insert debug stmts.
800 (rewrite_enter_block): Adjust.
801 (maybe_replace_use_in_debug_stmt): New.
802 (rewrite_update_stmt): Use it.
803 (mark_use_interesting): Return early for debug stmts.
804 * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
805 stmts before replacing stmt.
806 (move_computations_stmt): Likewise.
807 * ira-conflicts.c (add_copies): Skip debug insns.
808 * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
809 (regstat_bb_compute_ri): Skip debug insns.
810 * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
811 * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
812 check_loop_closed_ssa_stmt): Skip debug stmts.
813 * tree-tailcall.c (find_tail_calls): Likewise.
814 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
815 * tree.h (MAY_HAVE_DEBUG_STMTS): New.
816 (build_var_debug_value_stat): Declare.
817 (build_var_debug_value): Define.
818 (target_for_debug_bind): Declare.
819 * reload.c (find_equiv_reg): Skip debug insns.
820 * rtlanal.c (reg_used_between_p): Skip debug insns.
821 (side_effects_p): Likewise.
822 (canonicalize_condition): Likewise.
823 * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
824 insns never depend on debug insns.
825 (create_ddg_dep_no_link): Likewise.
826 (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
827 Don't add inter-loop dependencies for debug insns.
828 (build_intra_loop_deps): Likewise.
829 (create_ddg): Count debug insns.
830 * ddg.h (struct ddg::num_debug): New.
831 (num_backargs): Pair up with previous int field.
832 * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
833 -fcompare-debug-second.
834 * final.c (get_attr_length_1): Skip debug insns.
835 (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
836 * gcc.c (invoke_as): Call compare-debug-dump-opt.
837 (driver_self_specs): Map -fdump-final-insns to
838 -fdump-final-insns=..
839 (get_local_tick): New.
840 (compare_debug_dump_opt_spec_function): Test for . argument and
841 compute output name. Compute temp output spec without flag name.
842 Compute -frandom-seed.
843 (OPT): Undef after use.
844 * cfgloopanal.c (num_loop_insns): Skip debug insns.
845 (average_num_loop_insns): Likewise.
846 * params.h (MIN_NONDEBUG_INSN_UID): New.
847 * gimple.def (GIMPLE_DEBUG): New.
848 * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
849 * auto-inc-dec.c (merge_in_block): Skip debug insns.
850 (merge_in_block): Fix whitespace.
851 * toplev.c (flag_var_tracking): Update comment.
852 (flag_var_tracking_assignments): New.
853 (flag_var_tracking_assignments_toggle): New.
854 (process_options): Don't open final insns dump file if we're not
855 going to write to it. Compute defaults for var_tracking.
856 * df-scan.c (df_insn_rescan_debug_internal): New.
857 (df_uses_record): Handle debug insns.
858 * haifa-sched.c (ready): Initialize n_debug.
859 (contributes_to_priority): Skip debug insns.
860 (dep_list_size): New.
862 (rank_for_schedule): Likewise. Schedule debug insns as soon as
863 they're ready. Disregard previous debug insns to make decisions.
864 (queue_insn): Never queue debug insns.
865 (ready_add, ready_remove_first, ready_remove): Count debug insns.
866 (schedule_insn): Don't reject debug insns because of issue rate.
867 (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
868 (queue_to_ready): Skip and discount debug insns.
869 (choose_ready): Let debug insns through.
870 (schedule_block): Check boundary debug insns. Discount debug
871 insns, schedule them early. Adjust whitespace.
872 (set_priorities): Check for boundary debug insns.
873 (add_jump_dependencies): Use dep_list_size.
874 (prev_non_location_insn): New.
876 * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
878 (remove_unused_ivs): Reset debug stmts.
879 * modulo-sched.c (const_iteration_count): Skip debug insns.
880 (res_MII): Discount debug insns.
881 (loop_single_full_bb_p): Skip debug insns.
882 (sms_schedule): Likewise.
883 (sms_schedule_by_order): Likewise.
884 (ps_has_conflicts): Likewise.
885 * caller-save.c (refmarker_fn): New.
886 (save_call_clobbered_regs): Replace regs with saved mem in
888 (mark_referenced_regs): Take pointer, mark and arg. Adjust.
889 Call refmarker_fn mark for hardregnos.
890 (mark_reg_as_referenced): New.
891 (replace_reg_with_saved_mem): New.
892 * ipa-pure-const.c (check_stmt): Skip debug stmts.
893 * cse.c (cse_insn): Canonicalize debug insns. Skip them when
895 (cse_extended_basic_block): Skip debug insns.
896 (count_reg_usage): Likewise.
897 (is_dead_reg): New, split out of...
898 (set_live_p): ... here.
899 (insn_live_p): Use it for debug insns.
900 * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
901 (execute_optimize_stdarg): Likewise.
902 * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
903 * tree-ssa-propagate.c (substitute_and_fold): Don't regard
904 changes in debug stmts as changes.
905 * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
906 (moveup_expr): Don't move across debug insns. Don't move
907 debug insn if it would create a bookkeeping block.
908 (moveup_expr_cached): Don't use cache for debug insns that
910 (compute_av_set_inside_bb): Skip debug insns.
911 (sel_rank_for_schedule): Schedule debug insns first. Remove
913 (block_valid_for_bookkeeping_p); Support lax searches.
914 (create_block_for_bookkeeping): Adjust block numbers when
915 encountering debug-only blocks.
916 (find_place_for_bookkeeping): Deal with debug-only blocks.
917 (generate_bookkeeping_insn): Accept no place to insert.
918 (remove_temp_moveop_nops): New argument full_tidying.
919 (prepare_place_to_insert): Deal with debug insns.
920 (advance_state_on_fence): Debug insns don't start cycles.
921 (update_boundaries): Take fence as argument. Deal with
923 (schedule_expr_on_boundary): No full_tidying on debug insns.
924 (fill_insns): Deal with debug insns.
925 (track_scheduled_insns_and_blocks): Don't count debug insns.
926 (need_nop_to_preserve_insn_bb): New, split out of...
927 (remove_insn_from_stream): ... this.
928 (fur_orig_expr_not_found): Skip debug insns.
929 * rtl.def (VALUE): Move up.
931 * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug
933 (nearest_common_dominator_of_uses): Take debug_stmts argument.
934 Set it if debug stmts are found.
935 (statement_sink_location): Skip debug stmts. Propagate
936 moving defs into debug stmts.
937 * ifcvt.c (first_active_insn): Skip debug insns.
938 (last_active_insns): Likewise.
939 (cond_exec_process_insns): Likewise.
940 (noce_process_if_block): Likewise.
941 (check_cond_move_block): Likewise.
942 (cond_move_convert_if_block): Likewise.
943 (block_jumps_and_fallthru_p): Likewise.
944 (dead_or_predicable): Likewise.
945 * dwarf2out.c (debug_str_hash_forced): New.
946 (find_AT_string): Add comment.
947 (gen_label_for_indirect_string): New.
948 (get_debug_string_label): New.
949 (AT_string_form): Use it.
950 (mem_loc_descriptor): Handle non-TLS symbols. Handle MINUS , DIV,
951 MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING. Accept but
952 discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
953 several operations that cannot be represented with DWARF opcodes.
954 (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND. Require
955 dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
956 (dwarf2out_var_location): Take during-call mark into account.
957 (output_indirect_string): Update comment. Output if there are
958 label and references.
959 (prune_indirect_string): New.
960 (prune_unused_types): Call it if debug_str_hash_forced.
961 More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
962 (dw_long_long_const): Remove.
963 (struct dw_val_struct): Change val_long_long type to rtx.
964 (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
965 val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
966 (output_die): Likewise. Use HOST_BITS_PER_WIDE_INT size of each
967 component instead of HOST_BITS_PER_LONG.
968 (output_loc_operands): Likewise. For const8* assert
969 HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
970 (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
971 rather than HOST_BITS_PER_LONG is >= 64.
972 (add_AT_long_long): Remove val_hi and val_lo arguments, add
974 (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
975 HOST_BITS_PER_LONG for dw_val_class_long_long.
976 (add_const_value_attribute): Adjust add_AT_long_long caller. Don't
977 handle TLS SYMBOL_REFs. If CONST wraps a constant, tail recurse.
978 (dwarf_stack_op_name): Handle DW_OP_implicit_value and
980 (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
981 Handle DW_OP_implicit_value.
982 (extract_int): Move prototype earlier.
983 (mem_loc_descriptor): For SUBREG punt if inner
984 mode size is wider than DWARF2_ADDR_SIZE. Handle SIGN_EXTEND
985 and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}. Handle
986 EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
987 UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
988 (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
989 instead of Pmode size.
990 (loc_descriptor): Add MODE argument. Handle CONST_INT, CONST_DOUBLE,
991 CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
992 attempt to handle other expressions. Don't handle TLS SYMBOL_REFs.
993 (concat_loc_descriptor, concatn_loc_descriptor,
994 loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
995 (add_location_or_const_value_attribute): Likewise. For single
996 location loc_lists attempt to use add_const_value_attribute
997 for constant decls. Add DW_AT_const_value even if
998 NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
1000 * cfgbuild.c (inside_basic_block_p): Handle debug insns.
1001 (control_flow_insn_p): Likewise.
1002 * tree-parloops.c (eliminate_local_variables_stmt): Handle debug
1004 (separate_decls_in_region_debug_bind): New.
1005 (separate_decls_in_region): Process debug bind stmts afterwards.
1006 * recog.c (verify_changes): Handle debug insns.
1007 (extract_insn): Likewise.
1008 (peephole2_optimize): Skip debug insns.
1009 * dse.c (scan_insn): Skip debug insns.
1010 * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
1012 (setup_id_for_insn): Handle debug insns.
1013 (maybe_tidy_empty_bb): Adjust whitespace.
1014 (tidy_control_flow): Skip debug insns.
1015 (sel_remove_insn): Adjust for debug insns.
1016 (sel_estimate_number_of_insns): Skip debug insns.
1017 (create_insn_rtx_from_pattern): Handle debug insns.
1018 (create_copy_of_insn_rtx): Likewise.
1019 * sel-sched-.h (sel_bb_end): Declare.
1020 (sel_bb_empty_or_nop_p): New.
1021 (get_all_loop_exits): Use it.
1022 (_eligible_successor_edge_p): Likewise.
1023 (return_nop_to_pool): Adjust.
1024 * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
1025 * ira-lives.c (process_bb_node_lives): Skip debug insns.
1026 * gimple-pretty-print.c (dump_gimple_debug): New.
1027 (dump_gimple_stmt): Use it.
1028 (dump_bb_header): Skip gimple debug stmts.
1029 * regmove.c (optimize_reg_copy_1): Discount debug insns.
1030 (fixup_match_2): Likewise.
1031 (regmove_backward_pass): Likewise. Simplify combined
1032 replacement. Handle debug insns.
1033 * function.c (instantiate_virtual_regs): Handle debug insns.
1034 * function.h (struct emit_status): Add x_cur_debug_insn_uid.
1035 * print-rtl.h: Include cselib.h.
1036 (print_rtx): Print VALUEs. Split out and recurse for
1038 * df.h (df_inns_rescan_debug_internal): Declare.
1039 * gcse.c (alloc_hash_table): Estimate n_insns.
1040 (cprop_insn): Don't regard debug insns as changes.
1041 (bypass_conditional_jumps): Skip debug insns.
1042 (one_pre_gcse_pass): Adjust.
1043 (one_code_hoisting_pass): Likewise.
1044 (compute_ld_motion_mems): Skip debug insns.
1045 (one_cprop_pass): Adjust.
1046 * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
1047 (if_convertible_stmt_p): Handle debug stmts.
1048 * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
1049 * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
1050 * ira-build.c (create_bb_allocnos): Skip debug insns.
1051 * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
1052 (has_single_use): Likewise.
1053 (single_imm_use): Likewise.
1054 (num_imm_uses): Likewise.
1055 * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
1056 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
1057 (create_outofssa_var_map): Likewise.
1058 * lower-subreg.c (adjust_decomposed_uses): New.
1059 (resolve_debug): New.
1060 (decompose_multiword_subregs): Use it.
1061 * tree-dfa.c (find_referenced_vars): Skip debug stmts.
1062 * emit-rtl.c: Include params.h.
1063 (cur_debug_insn_uid): Define.
1064 (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
1065 (copy_rtx_if_shared_1): Handle debug insns.
1066 (reset_used_flags): Likewise.
1067 (set_used_flags): LIkewise.
1068 (get_max_insn_count): New.
1069 (next_nondebug_insn): New.
1070 (prev_nondebug_insn): New.
1071 (make_debug_insn_raw): New.
1072 (emit_insn_before_noloc): Handle debug insns.
1073 (emit_jump_insn_before_noloc): Likewise.
1074 (emit_call_insn_before_noloc): Likewise.
1075 (emit_debug_insn_before_noloc): New.
1076 (emit_insn_after_noloc): Handle debug insns.
1077 (emit_jump_insn_after_noloc): Likewise.
1078 (emit_call_insn_after_noloc): Likewise.
1079 (emit_debug_insn_after_noloc): Likewise.
1080 (emit_insn_after): Take loc from earlier non-debug insn.
1081 (emit_jump_insn_after): Likewise.
1082 (emit_call_insn_after): Likewise.
1083 (emit_debug_insn_after_setloc): New.
1084 (emit_debug_insn_after): New.
1085 (emit_insn_before): Take loc from later non-debug insn.
1086 (emit_jump_insn_before): Likewise.
1087 (emit_call_insn_before): Likewise.
1088 (emit_debug_insn_before_setloc): New.
1089 (emit_debug_insn_before): New.
1090 (emit_insn): Handle debug insns.
1091 (emit_debug_insn): New.
1092 (emit_jump_insn): Handle debug insns.
1093 (emit_call_insn): Likewise.
1095 (init_emit): Take min-nondebug-insn-uid into account.
1096 Initialize cur_debug_insn_uid.
1097 (emit_copy_of_insn_after): Handle debug insns.
1098 * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
1099 location of single rhs in place.
1100 (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
1101 (floor_sdiv_adjust): New.
1102 (cell_sdiv_adjust): New.
1103 (cell_udiv_adjust): New.
1104 (round_sdiv_adjust): New.
1105 (round_udiv_adjust): New.
1106 (wrap_constant): Moved from cselib.
1107 (unwrap_constant): New.
1108 (expand_debug_expr): New.
1109 (expand_debug_locations): New.
1110 (expand_gimple_basic_block): Drop hiding redeclaration. Expand
1112 (gimple_expand_cfg): Expand debug locations.
1113 * cselib.c: Include tree-pass.h.
1114 (struct expand_value_data): New.
1115 (cselib_record_sets_hook): New.
1116 (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
1117 (cselib_clear_table): Move, and implemnet in terms of...
1118 (cselib_reset_table_with_next_value): ... this.
1119 (cselib_get_next_unknown_value): New.
1120 (discard_useless_locs): Don't discard preserved values.
1121 (cselib_preserve_value): New.
1122 (cselib_preserved_value_p): New.
1123 (cselib_preserve_definitely): New.
1124 (cselib_clear_preserve): New.
1125 (cselib_preserve_only_values): New.
1126 (new_cselib_val): Take rtx argument. Dump it in details.
1127 (cselib_lookup_mem): Adjust.
1128 (expand_loc): Take regs_active in struct. Adjust. Silence
1129 dumps unless details are requested.
1130 (cselib_expand_value_rtx_cb): New.
1131 (cselib_expand_value_rtx): Rename and reimplment in terms of...
1132 (cselib_expand_value_rtx_1): ... this. Adjust. Silence dumps
1133 without details. Copy more subregs. Try to resolve values
1134 using a callback. Wrap constants.
1135 (cselib_subst_to_values): Adjust.
1136 (cselib_log_lookup): New.
1137 (cselib_lookup): Call it.
1138 (cselib_invalidate_regno): Don't count preserved values as
1140 (cselib_invalidate_mem): Likewise.
1141 (cselib_record_set): Likewise.
1142 (struct set): Renamed to cselib_set, moved to cselib.h.
1143 (cselib_record_sets): Adjust. Call hook.
1144 (cselib_process_insn): Reset table when it would be cleared.
1145 (dump_cselib_val): New.
1146 (dump_cselib_table): New.
1147 * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
1148 (remove_forwarder_block): Support moving debug stmts.
1149 * cselib.h (cselib_record_sets_hook): Declare.
1150 (cselib_expand_callback): New type.
1151 (cselib_expand_value_rtx_cb): Declare.
1152 (cselib_reset_table_with_next_value): Declare.
1153 (cselib_get_next_unknown_value): Declare.
1154 (cselib_preserve_value): Declare.
1155 (cselib_preserved_value_p): Declare.
1156 (cselib_preserve_only_values): Declare.
1157 (dump_cselib_table): Declare.
1158 * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
1159 (try_crossjump_to_edge): Likewise.
1160 (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
1161 dominated blocks when debug stmts are present.
1162 * simplify-rtx.c (delegitimize_mem_from_attrs): New.
1163 * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
1164 (set_var_live_on_entry): Likewise.
1165 * loop-invariant.c (find_invariants_bb): Skip debug insns.
1166 * cfglayout.c (curr_location, last_location): Make static.
1167 (set_curr_insn_source_location): Don't avoid bouncing.
1168 (get_curr_insn_source_location): New.
1169 (get_curr_insn_block): New.
1170 (duplicate_insn_chain): Handle debug insns.
1171 * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
1173 * common.opt (fcompare-debug): Move to sort order.
1174 (fdump-unnumbered-links): Likewise.
1175 (fvar-tracking-assignments): New.
1176 (fvar-tracking-assignments-toggle): New.
1177 * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
1178 because of debug stmts.
1179 (mark_stmt_if_obviously_necessary): Mark debug stmts.
1180 (eliminate_unnecessary_stmts): Walk dominated blocks before
1182 * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
1183 * ira.c (memref_used_between_p): Skip debug insns.
1184 (update_equiv_regs): Likewise.
1185 * sched-deps.c (sd_lists_size): Accept empty list.
1186 (sd_init_insn): Mark debug insns.
1187 (sd_finish_insn): Unmark them.
1188 (sd_add_dep): Reject non-debug deps on debug insns.
1189 (fixup_sched_groups): Give debug insns group treatment.
1191 (sched_analyze_reg): Don't mark debug insns for sched before call.
1192 (sched_analyze_2): Handle debug insns.
1193 (sched_analyze_insn): Compute next non-debug insn. Handle debug
1195 (deps_analyze_insn): Handle debug insns.
1196 (deps_start_bb): Skip debug insns.
1197 (init_deps): Initialize last_debug_insn.
1198 * tree-ssa.c (target_for_debug_bind): New.
1199 (find_released_ssa_name): New.
1200 (propagate_var_def_into_debug_stmts): New.
1201 (propagate_defs_into_debug_stmts): New.
1202 (verify_ssa): Skip debug bind stmts without values.
1203 (warn_uninialized_vars): Skip debug stmts.
1204 * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
1205 * rtl.c (rtx_equal_p_cb): Handle VALUEs.
1206 (rtx_equal_p): Likewise.
1207 * ira-costs.c (scan_one_insn): Skip debug insns.
1208 (process_bb_node_for_hard_reg_moves): Likewise.
1209 * rtl.h (DEBUG_INSN_P): New.
1210 (NONDEBUG_INSN_P): New.
1211 (MAY_HAVE_DEBUG_INSNS): New.
1212 (INSN_P): Accept debug insns.
1213 (RTX_FRAME_RELATED_P): Likewise.
1214 (INSN_DELETED_P): Likewise
1215 (PAT_VAR_LOCATION_DECL): New.
1216 (PAT_VAR_LOCATION_LOC): New.
1217 (PAT_VAR_OCATION_STATUS): New.
1218 (NOTE_VAR_LOCATION_DECL): Reimplement.
1219 (NOTE_VAR_LOCATION_LOC): Likewise.
1220 (NOTE_VAR_LOCATION_STATUS): Likewise.
1221 (INSN_VAR_LOCATION): New.
1222 (INSN_VAR_LOCATION_DECL): New.
1223 (INSN_VAR_LOCATION_LOC): New.
1224 (INSN_VAR_LOCATION_STATUS): New.
1225 (gen_rtx_UNKNOWN_VAR_LOC): New.
1226 (VAR_LOC_UNKNOWN_P): New.
1227 (NOTE_DURING_CALL_P): New.
1228 (SCHED_GROUP_P): Accept debug insns.
1229 (emit_debug_insn_before): Declare.
1230 (emit_debug_insn_before_noloc): Declare.
1231 (emit_debug_insn_beore_setloc): Declare.
1232 (emit_debug_insn_after): Declare.
1233 (emit_debug_insn_after_noloc): Declare.
1234 (emit_debug_insn_after_setloc): Declare.
1235 (emit_debug_insn): Declare.
1236 (make_debug_insn_raw): Declare.
1237 (prev_nondebug_insn): Declare.
1238 (next_nondebug_insn): Declare.
1239 (delegitimize_mem_from_attrs): Declare.
1240 (get_max_insn_count): Declare.
1241 (wrap_constant): Declare.
1242 (unwrap_constant): Declare.
1243 (get_curr_insn_source_location): Declare.
1244 (get_curr_insn_block): Declare.
1245 * tree-inline.c (insert_debug_decl_map): New.
1246 (processing_debug_stmt): New.
1247 (remap_decl): Don't create new mappings in debug stmts.
1248 (remap_gimple_op_r): Don't add references in debug stmts.
1249 (copy_tree_body_r): Likewise.
1250 (remap_gimple_stmt): Handle debug bind stmts.
1251 (copy_bb): Skip debug stmts.
1252 (copy_edges_for_bb): Likewise.
1253 (copy_debug_stmt): New.
1254 (copy_debug_stmts): New.
1255 (copy_body): Copy debug stmts at the end.
1256 (insert_init_debug_bind): New.
1257 (insert_init_stmt): Take id. Skip and emit debug stmts.
1258 (setup_one_parameter): Remap variable earlier, register debug
1260 (estimate_num_insns): Skip debug stmts.
1261 (expand_call_inline): Preserve debug_map.
1262 (optimize_inline_calls): Check for no debug_stmts left-overs.
1263 (unsave_expr_now): Preserve debug_map.
1264 (copy_gimple_seq_and_replace_locals): Likewise.
1265 (tree_function_versioning): Check for no debug_stmts left-overs.
1266 Init and destroy debug_map as needed. Split edges unconditionally.
1267 (build_duplicate_type): Init and destroy debug_map as needed.
1268 * tree-inline.h: Include gimple.h instead of pointer-set.h.
1269 (struct copy_body_data): Add debug_stmts and debug_map.
1270 * sched-int.h (struct ready_list): Add n_debug.
1271 (struct deps): Add last_debug_insn.
1272 (DEBUG_INSN_SCHED_P): New.
1273 (BOUNDARY_DEBUG_INSN_P): New.
1274 (SCHEDULE_DEBUG_INSN_P): New.
1275 (sd_iterator_cond): Accept empty list.
1276 * combine.c (create_log_links): Skip debug insns.
1277 (combine_instructions): Likewise.
1278 (cleanup_auto_inc_dec): New. From Jakub Jelinek: Make sure the
1279 return value is always unshared.
1280 (struct rtx_subst_pair): New.
1281 (auto_adjust_pair): New.
1282 (propagate_for_debug_subst): New.
1283 (propagate_for_debug): New.
1284 (try_combine): Skip debug insns. Propagate removed defs into
1286 (next_nonnote_nondebug_insn): New.
1287 (distribute_notes): Use it. Skip debug insns.
1288 (distribute_links): Skip debug insns.
1289 * tree-outof-ssa.c (set_location_for_edge): Likewise.
1290 * resource.c (mark_target_live_regs): Likewise.
1291 * var-tracking.c: Include cselib.h and target.h.
1292 (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
1294 (micro_operation_type_name): New.
1295 (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
1296 (struct micro_operation_def): Update comments.
1297 (decl_or_value): New type. Use instead of decls.
1298 (struct emit_note_data_def): Add vars.
1299 (struct attrs_def): Use decl_or_value.
1300 (struct variable_tracking_info_def): Add permp, flooded.
1301 (struct location_chain_def): Update comment.
1302 (struct variable_part_def): Use decl_or_value.
1303 (struct variable_def): Make var_part a variable length array.
1305 (scratch_regs): New.
1306 (cselib_hook_called): New.
1307 (dv_is_decl_p): New.
1308 (dv_is_value_p): New.
1311 (dv_as_opaque): New.
1312 (dv_onepart_p): New.
1314 (IS_DECL_CODE): New.
1315 (check_value_is_not_decl): New.
1316 (dv_from_decl): New.
1317 (dv_from_value): New.
1318 (dv_htab_hash): New.
1319 (variable_htab_hash): Use it.
1320 (variable_htab_eq): Support values.
1321 (variable_htab_free): Free from the right pool.
1322 (attrs_list_member, attrs_list_insert): Use decl_or_value.
1323 (attrs_list_union): Adjust.
1324 (attrs_list_mpdv_union): New.
1325 (tie_break_pointers): New.
1326 (canon_value_cmp): New.
1327 (unshare_variable): Return possibly-modified slot.
1328 (vars_copy_1): Adjust.
1329 (var_reg_decl_set): Adjust. Split out of...
1330 (var_reg_set): ... this.
1331 (get_init_value): Adjust.
1332 (var_reg_delete_and_set): Adjust.
1333 (var_reg_delete): Adjust.
1334 (var_regno_delete): Adjust.
1335 (var_mem_decl_set): Split out of...
1336 (var_mem_set): ... this.
1337 (var_mem_delete_and_set): Adjust.
1338 (var_mem_delete): Adjust.
1342 (variable_union): Adjust. Speed up merge of 1-part vars.
1343 (variable_canonicalize): Use unshared slot.
1344 (VALUED_RECURSED_INTO): New.
1345 (find_loc_in_1pdv): New.
1346 (struct dfset_merge): New.
1347 (insert_into_intersection): New.
1348 (intersect_loc_chains): New.
1350 (canonicalize_loc_order_check): New.
1351 (canonicalize_values_mark): New.
1352 (canonicalize_values_star): New.
1353 (variable_merge_over_cur): New.
1354 (variable_merge_over_src): New.
1355 (dataflow_set_merge): New.
1356 (dataflow_set_equiv_regs): New.
1357 (remove_duplicate_values): New.
1358 (struct dfset_post_merge): New.
1359 (variable_post_merge_new_vals): New.
1360 (variable_post_merge_perm_vals): New.
1361 (dataflow_post_merge_adjust): New.
1362 (find_mem_expr_in_1pdv): New.
1363 (dataflow_set_preserve_mem_locs): New.
1364 (dataflow_set_remove_mem_locs): New.
1365 (dataflow_set_clear_at_call): New.
1366 (onepart_variable_different_p): New.
1367 (variable_different_p): Use it.
1368 (dataflow_set_different_1): Adjust. Make detailed dump
1370 (track_expr_p): Add need_rtl parameter. Don't generate rtl
1372 (track_loc_p): Pass it true.
1373 (struct count_use_info): New.
1374 (find_use_val): New.
1375 (replace_expr_with_values): New.
1377 (use_type): New, partially split out of...
1378 (count_uses): ... this. Count new micro-ops.
1379 (count_uses_1): Adjust.
1380 (count_stores): Adjust.
1381 (count_with_sets): New.
1382 (VAL_NEEDS_RESOLUTION): New.
1383 (VAL_HOLDS_TRACK_EXPR): New.
1384 (VAL_EXPR_IS_COPIED): New.
1385 (VAL_EXPR_IS_CLOBBERED): New.
1386 (add_uses): Adjust. Generate new micro-ops.
1387 (add_uses_1): Adjust.
1388 (add_stores): Generate new micro-ops.
1389 (add_with_sets): New.
1390 (find_src_status): Adjust.
1391 (find_src_set_src): Adjust.
1392 (compute_bb_dataflow): Use dataflow_set_clear_at_call.
1393 Handle new micro-ops. Canonicalize value equivalances.
1394 (vt_find_locations): Compute total size of hash tables for
1395 dumping. Perform merge for var-tracking-assignments. Don't
1396 disregard single-block loops.
1397 (dump_attrs_list): Handle decl_or_value.
1398 (dump_variable): Take variable. Deal with decl_or_value.
1399 (dump_variable_slot): New.
1400 (dump_vars): Use it.
1401 (dump_dataflow_sets): Adjust.
1402 (set_slot_part): New, extended to support one-part variables
1403 after splitting out of...
1404 (set_variable_part): ... this.
1405 (clobber_slot_part): New, split out of...
1406 (clobber_variable_part): ... this.
1407 (delete_slot_part): New, split out of...
1408 (delete_variable_part): .... this.
1409 (check_wrap_constant): New.
1410 (vt_expand_loc_callback): New.
1411 (vt_expand_loc): New.
1412 (emit_note_insn_var_location): Adjust. Handle values. Handle
1413 EMIT_NOTE_AFTER_CALL_INSN.
1414 (emit_notes_for_differences_1): Adjust. Handle values.
1415 (emit_notes_for_differences_2): Likewise.
1416 (emit_notes_for_differences): Adjust.
1417 (emit_notes_in_bb): Take pointer to set. Emit AFTER_CALL_INSN
1418 notes. Adjust. Handle new micro-ops.
1419 (vt_add_function_parameters): Adjust. Create and bind values.
1420 (vt_initialize): Adjust. Initialize scratch_regs and
1421 valvar_pool, flooded and perm.. Initialize and use cselib. Log
1422 operations. Move some code to count_with_sets and add_with_sets.
1423 (delete_debug_insns): New.
1424 (vt_debug_insns_local): New.
1425 (vt_finalize): Release permp, valvar_pool, scratch_regs. Finish
1427 (var_tracking_main): If var-tracking-assignments is enabled
1428 but var-tracking isn't, delete debug insns and leave. Likewise
1429 if we exceed limits or fail the stack adjustments tests, and
1430 after all var-tracking processing.
1431 More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
1432 (dataflow_set): Add traversed_vars.
1433 (value_chain, const_value_chain): New typedefs.
1434 (value_chain_pool, value_chains): New variables.
1435 (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
1436 add_value_chains, add_cselib_value_chains, remove_value_chain,
1437 remove_value_chains, remove_cselib_value_chains): New functions.
1438 (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
1439 shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
1441 (shared_hash_find_slot_unshare, shared_hash_find_slot,
1442 shared_hash_find_slot_noinsert, shared_hash_find): Update.
1443 (dst_can_be_shared): New variable.
1444 (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
1445 Clear dst_can_be_shared. If set->traversed_vars is non-NULL and
1446 different from set->vars, look up slot again instead of using the
1448 (dataflow_set_init): Initialize traversed_vars.
1449 (variable_union): Use shared_hash_*. Use initially NO_INSERT
1450 lookup if set->vars is shared. Don't keep slot cleared before
1451 calling unshare_variable. Unshare set->vars if needed. Adjust
1452 unshare_variable callers. Clear dst_can_be_shared if needed.
1453 Even ->refcount == 1 vars must be unshared if set->vars is shared
1454 and var needs to be modified.
1455 (dataflow_set_union): Set traversed_vars during canonicalization.
1456 (VALUE_CHANGED, DECL_CHANGED): Define.
1457 (set_dv_changed, dv_changed_p): New static inlines.
1458 (track_expr_p): Clear DECL_CHANGED.
1459 (dump_dataflow_sets): Set it.
1460 (variable_was_changed): Call set_dv_changed.
1461 (emit_note_insn_var_location): Likewise.
1462 (changed_variables_stack): New variable.
1463 (check_changed_vars_1, check_changed_vars_2): New functions.
1464 (emit_notes_for_changes): Do nothing if changed_variables is
1465 empty. Traverse changed_variables with check_changed_vars_1,
1466 call check_changed_vars_2 on each changed_variables_stack entry.
1467 (emit_notes_in_bb): Add SET argument. Just clear it at the
1468 beginning, use it instead of local &set, don't destroy it at the
1470 (vt_emit_notes): Call dataflow_set_clear early on all
1471 VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
1472 computed set, dataflow_set_clear also VTI(bb)->in when we are
1473 done with the basic block. Initialize changed_variables_stack,
1474 free it afterwards. If ENABLE_CHECKING verify that after noting
1475 differences to an empty set value_chains hash table is empty.
1476 (vt_initialize): Initialize value_chains and value_chain_pool.
1477 (vt_finalize): Delete value_chains htab, free value_chain_pool.
1478 (variable_tracking_main): Call dump_dataflow_sets before calling
1479 vt_emit_notes, not after it.
1480 * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
1481 (propagate_var_def_into_debug_stmts): Declare.
1482 * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
1483 (df_set_note): Reject debug insns.
1484 (df_whole_mw_reg_dead_p): Take added_notes_p argument. Don't
1485 add notes to debug insns.
1486 (df_note_bb_compute): Adjust. Likewise.
1487 (df_simulate_uses): Skip debug insns.
1488 (df_simulate_initialize_backwards): Likewise.
1489 * reg-stack.c (subst_stack_regs_in_debug_insn): New.
1490 (subst_stack_regs_pat): Reject debug insns.
1491 (convert_regs_1): Handle debug insns.
1492 * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
1493 (print-rtl.o): Depend on cselib.h.
1494 (cselib.o): Depend on TREE_PASS_H.
1495 (var-tracking.o): Depend on cselib.h and TARGET_H.
1496 * sched-rgn.c (rgn_estimate_number_of_insns): Discount
1498 (init_ready_list): Skip boundary debug insns.
1499 (add_branch_dependences): Skip debug insns.
1500 (free_block_dependencies): Check for blocks with only debug
1502 (compute_priorities): Likewise.
1503 * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
1504 (gimple_build_with_ops_stat): Take subcode as unsigned. Adjust
1506 (gimple_build_debug_bind_stat): New.
1507 (empty_body_p): Skip debug stmts.
1508 (gimple_has_side_effects): Likewise.
1509 (gimple_rhs_has_side_effects): Likewise.
1510 * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
1511 (gimple_build_debug_bind_stat): Declare.
1512 (gimple_build_debug_bind): Define.
1513 (is_gimple_debug): New.
1514 (gimple_debug_bind_p): New.
1515 (gimple_debug_bind_get_var): New.
1516 (gimple_debug_bind_get_value): New.
1517 (gimple_debug_bind_get_value_ptr): New.
1518 (gimple_debug_bind_set_var): New.
1519 (gimple_debug_bind_set_value): New.
1520 (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
1521 (gimple_debug_bind_reset_value): New.
1522 (gimple_debug_bind_has_value_p): New.
1523 (gsi_next_nondebug): New.
1524 (gsi_prev_nondebug): New.
1525 (gsi_start_nondebug_bb): New.
1526 (gsi_last_nondebug_bb): New.
1527 * sched-vis.c (print_pattern): Handle VAR_LOCATION.
1528 (print_insn): Handle DEBUG_INSN.
1529 * tree-cfg.c (remove_bb): Walk stmts backwards. Let loc
1530 of first insn prevail.
1531 (first_stmt): Skip debug stmts.
1532 (first_non_label_stmt): Likewise.
1533 (last_stmt): Likewise.
1534 (has_zero_uses_1): New.
1535 (single_imm_use_1): New.
1536 (verify_gimple_debug): New.
1537 (verify_types_in_gimple_stmt): Handle debug stmts.
1538 (verify_stmt): Likewise.
1539 (debug_loop_num): Skip debug stmts.
1540 (remove_edge_and_dominated_blocks): Remove dominators last.
1541 * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into
1543 (linearize_expr): Likewise.
1544 * config/i386/i386.c (ix86_delegitimize_address): Call
1545 default implementation.
1546 * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug
1548 (group_barrier_needed): Skip debug insns.
1549 (emit_insn_group_barriers): Likewise.
1550 (emit_all_insn_group_barriers): Likewise.
1551 (ia64_variable_issue): Handle debug insns.
1552 (ia64_dfa_new_cycle): Likewise.
1553 (final_emit_insn_group_barriers): Skip debug insns.
1554 (ia64_dwarf2out_def_steady_cfa): Take frame argument. Don't
1555 def cfa without frame.
1556 (process_set): Likewise.
1557 (process_for_unwind_directive): Pass frame on.
1558 * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
1559 (rs6000_delegitimize_address): New.
1560 (rs6000_debug_adjust_cost): Handle debug insns.
1561 (is_microcoded_insn): Likewise.
1562 (is_cracked_insn): Likewise.
1563 (is_nonpipeline_insn): Likewise.
1564 (insn_must_be_first_in_group): Likewise.
1565 (insn_must_be_last_in_group): Likewise.
1566 (force_new_group): Likewise.
1567 * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
1568 contains only debug insns.
1569 (rtl_merge_blocks): Skip debug insns.
1570 (purge_dead_edges): Likewise.
1571 (rtl_block_ends_with_call_p): Skip debug insns.
1572 * dce.c (deletable_insn_p): Handle VAR_LOCATION.
1573 (mark_reg_dependencies): Skip debug insns.
1574 * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
1575 * tree-ssanames.c (release_ssa_name): Propagate def into
1577 * tree-ssa-threadedge.c
1578 (record_temporary_equivalences_from_stmts): Skip debug stmts.
1579 * regcprop.c (replace_oldest_value_addr): Skip debug insns.
1580 (replace_oldest_value_mem): Use ALL_REGS for debug insns.
1581 (copyprop_hardreg_forward_1): Handle debug insns.
1582 * reload1.c (reload): Skip debug insns. Replace unassigned
1583 pseudos in debug insns with their equivalences.
1584 (eliminate_regs_in_insn): Skip debug insns.
1585 (emit_input_reload_insns): Skip debug insns at first, adjust
1587 * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
1588 (get_indirect_ref_operands): Pass opf_no_vops on.
1589 (get_expr_operands): Likewise. Skip debug stmts.
1590 (parse_ssa_operands): Scan debug insns with opf_no_vops.
1592 2009-09-01 Richard Henderson <rth@redhat.com>
1594 * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
1595 stmt_ends_pp_p statements at least once.
1596 * tree-vrp.c (vrp_initialize): Likewise.
1597 (vrp_visit_stmt): Be prepared for non-interesting stmts.
1599 2009-09-01 Dodji Seketeli <dodji@redhat.com>
1602 Fix AIX bootstrap after PR debug/30161
1603 * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
1604 that is a GNU extension.
1605 (tmpl_value_parm_die_table): Move the definition of this global
1606 outside #ifdef DWARF2_DEBUGGING_INFO region.
1608 2009-09-01 Richard Guenther <rguenther@suse.de>
1610 * tree.c (tree_expr_size): New function.
1611 * tree.h (tree_expr_size): Declare.
1612 * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
1613 * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
1614 * langhooks.c (lhd_expr_size): Remove.
1615 * langhooks.h (struct lang_hooks): Remove expr_size.
1616 * explow.c (expr_size): Use tree_expr_size.
1617 (int_expr_size): Likewise.
1618 * langhooks-def.h (lhd_expr_size): Remove.
1619 (LANG_HOOKS_EXPR_SIZE): Likewise.
1620 (LANG_HOOKS_INITIALIZER): Adjust.
1622 2009-09-01 Richard Guenther <rguenther@suse.de>
1624 * tree-flow.h (mark_addressable): Move declaration ...
1625 * tree.h (mark_addressable): ... here.
1626 * stmt.c (expand_asm_operands): Use mark_addressable, not
1627 lang_hooks.mark_addressable.
1628 * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1629 LANG_HOOKS_MARK_ADDRESSABLE.
1630 * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
1631 * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
1633 2009-08-31 Chris Demetriou <cgd@google.com>
1635 * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
1636 vectorize if not TARGET_SSE2.
1638 2009-08-31 DJ Delorie <dj@redhat.com>
1640 * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
1641 registers if no coprocessor is enabled.
1643 2009-08-31 Dodji Seketeli <dodji@redhat.com>
1646 * cgraph.h (cgraph_get_node): Declare ...
1647 * cgraph.c (cgraph_get_node): ... new function.
1648 * dwarf2out.c (gen_generic_params_dies,
1649 generic_parameter_die, tree_add_const_value_attribute_for_decl,
1650 make_ith_pack_parameter_name,
1651 append_entry_to_tmpl_value_parm_die_table,
1652 gen_remaining_tmpl_value_param_die_attribute): New functions.
1653 (gen_subprogram_die): Generate debug info for template parameters
1654 if debug info level is higher than DINFO_LEVEL_TERSE.
1655 Use tree_add_const_value_attribute_for_decl instead of
1656 tree_add_const_value_attribute.
1657 (gen_const_die): Use tree_add_const_value_attribute_for_decl
1658 instead of tree_add_const_value_attribute.
1659 (gen_struct_or_union_type_die): Generate debug
1660 info for template parameters if debug info level is higher than
1662 (tree_add_const_value_attribute): Handle integral and pointer
1663 constants. Update comment.
1664 (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
1665 (dwarf_attr_name): Support DW_AT_GNU_template_name.
1666 (reference_to_unused): Fix thinko. Remove redundant predicates from
1668 (tree_add_const_value_attribute): Make this work for constant
1670 tree_add_const_value_attribute_for_decl is to be used for variable
1672 (add_location_or_const_value_attribute): Use
1673 tree_add_const_value_attribute_for_decl now.
1674 (dwarf2out_finish): Emit the DW_AT_const_value attribute of
1675 DW_TAG_template_value_param DIEs after function DIEs have been
1677 * langhooks.h (lang_hooks_for_types): Add
1678 get_argument_pack_elems.
1679 (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
1680 (lang_hooks): Added get_innermost_generic_parms,
1681 get_innermost_generic_args.
1682 * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
1683 LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
1684 LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
1685 LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
1687 2009-08-31 DJ Delorie <dj@redhat.com>
1689 * config/mep/mep.c (machine_function): Add frame_locked flag. Set
1690 it once we start generating the prologue or epilogue.
1691 (mep_call_saves_register): If the frame is locked, re-use
1693 (mep_assign_save_slots): New, broken out from mep_expand_prologue.
1694 (mep_expand_prologue): Call it.
1695 (mep_expand_epilogue): Likewise.
1696 (mep_start_function): Use the same logic as mep_expand_prologue.
1697 (mep_pass_by_reference): Make logic more readable.
1698 (mep_return_in_memory): Zero-sized objects are passed in memory.
1699 (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
1701 2009-08-31 Richard Guenther <rguenther@suse.de>
1703 * builtins.c (fold_builtin_memory_op): Use the alias oracle
1704 to query if the memory regions for memmove overlap.
1705 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
1706 asserts on pointers, instead deal with odd trees.
1707 (ptr_derefs_may_alias_p): Likewise.
1708 (refs_may_alias_p_1): Constructor bases also never alias.
1710 2009-08-31 Gerald Pfeifer <gerald@pfeifer.com>
1712 * doc/install.texi (Final install): Adjust reference on where to
1713 order printed manuals.
1715 2009-08-30 Olivier Hainque <hainque@adacore.com>
1717 * dwarf2out.c (switch_to_frame_table_section): Move
1718 definition prior to first use.
1720 2009-08-30 Richard Guenther <rguenther@suse.de>
1722 PR tree-optimization/41186
1723 * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
1724 (ao_ref_init_from_ptr_and_size): New function.
1725 (ref_maybe_used_by_call_p_1): Be more precise tracking
1726 used ranges for builtin functions.
1727 (ref_maybe_used_by_call_p): Adjust.
1728 (call_may_clobber_ref_p_1): Be more precise tracking clobbered
1729 ranges for builtin functions.
1730 * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
1732 2009-08-30 Alan Modra <amodra@bigpond.net.au>
1735 * fwprop.c (get_reg_use_in): Delete.
1736 (free_load_extend): New function.
1737 (forward_propagate_subreg): Use it.
1739 2009-08-29 Kaz Kojima <kkojima@gcc.gnu.org>
1741 * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
1743 2009-08-29 Kai Tietz<kai.tietz@onevision.com>
1746 * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
1749 2009-08-29 Douglas B Rupp <rupp@gnat.com>
1751 * crtstuff.c (__do_global_dtors_aux): Use atexit if no
1752 fini or fini_array section.
1754 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1756 * graphite-dependences.c (graphite_legal_transform_bb): Call
1757 pbb_remove_duplicate_pdrs.
1758 * graphite-poly.c (can_collapse_pdr): Removed.
1759 (pdr_find_duplicate): Removed.
1760 (can_collapse_pdrs): New.
1761 (pbb_remove_duplicate_pdrs): New.
1762 (new_poly_dr): Do not look for duplicates.
1763 * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
1764 (PBB_PDR_DUPLICATES_REMOVED): New.
1765 (pbb_remove_duplicate_pdrs): Declared.
1767 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1769 * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
1770 the strides by multiplying by PDR_NB_REFS.
1771 * graphite-poly.c (can_collapse_pdr): New.
1772 (pdr_find_duplicate): New.
1773 (new_poly_dr): Call pdr_find_duplicate. Collapse duplicate PDRs.
1774 Initialize PDR_NB_REFS.
1775 * graphite-poly.h (struct poly_dr): Add field nb_refs.
1777 (new_poly_dr): Number of subscripts is a graphite_dim_t.
1779 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1782 * graphite-poly.c (apply_poly_transforms): Remove legality test before
1785 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1787 * graphite-dependences.c (pddr_original_scattering): Return NULL
1788 for read-read dependence relations.
1789 * graphite-poly.h (enum poly_dr_type): Fix comment.
1792 (pdr_may_write_p): New.
1794 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1796 * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
1797 (struct poly_dr): Same.
1798 (new_poly_dr): Same.
1799 * graphite-poly.c (new_poly_dr): Same.
1800 * graphite-dependences.c (dot_deps): Disable call to system.
1802 2009-08-28 Cary Coutant <ccoutant@google.com>
1805 * dwarf2out.c (gen_type_die_with_usage): Use proper context for
1806 struct/union/enum types local to a function.
1808 2009-08-28 Konrad Trifunovic <konrad.trifunovic@gmail.com>
1809 Sebastian Pop <sebastian.pop@amd.com>
1811 * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
1812 pbb_strip_mine_time_depth. Changed the implementation so that
1813 transformation is expressed as a transformation on
1814 time (scatttering) dimensions. Also, ensures that the 2d+1
1815 scheduling format is preserved.
1816 (pbb_strip_mine_profitable_p): Profitability is based on the
1817 iteration number of a given time (scattering) dimension,
1818 and not on a original loop depth dimension.
1819 (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
1820 (pbb_do_strip_mine): Call psct_dynamic_dim.
1821 * graphite-poly.c (pbb_number_of_iterations_at_time): New.
1822 * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
1823 (pbb_nb_dynamic_scattering_transform): New.
1824 (psct_dynamic_dim): New.
1826 2009-08-28 Konrad Trifunovic <konrad.trifunovic@gmail.com>
1828 * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
1829 * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
1830 * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
1831 * graphite-interchange.c (build_linearized_memory_access): Same.
1832 (memory_stride_in_loop): Same.
1834 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1836 * graphite-dependences.c (pddr_original_scattering): New.
1837 (graphite_legal_transform_dr): Call pddr_original_scattering.
1840 * graphite-dependences.h (dot_deps): Declared.
1841 * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
1842 (print_pdr): Print PDR_ID.
1843 * graphite-poly.h (struct poly_dr): Add field id.
1846 * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
1848 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1850 * graphite-dependences.c (graphite_carried_dependence_level_k): Do
1851 not delete the original dependence relation.
1853 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1855 * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
1856 (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
1857 (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
1858 (free_poly_ddr): New.
1859 (pddr_is_empty): New.
1860 (dependence_polyhedron_1): Now returns a poly_ddr_p.
1861 (dependence_polyhedron): Same. Remove useless gcc_assert.
1863 (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
1864 (graphite_carried_dependence_level_k): Call pddr_is_empty.
1865 * graphite-dependences.h (enum poly_dependence_kind): New.
1866 (poly_dr_pair): Renamed poly_ddr. Added a field kind.
1867 (PDRP_SOURCE): Renamed PDDR_SOURCE.
1868 (PDRP_SINK): Renamed PDDR_SINK.
1869 (PDRP_DDP): Renamed PDDR_DDP.
1871 (free_poly_ddr): Declared.
1872 * graphite-poly.c (new_scop): Use the new hash function names.
1873 * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
1874 into original_pddrs.
1875 (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
1877 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1879 * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
1880 bounds with LT_EXPR to make niter analysis more precise on code
1881 generated by Graphite.
1883 2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
1885 * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
1886 (graphite_legal_transform_bb): Same.
1887 (poly_drs_may_alias_p): Same.
1889 2009-08-28 Richard Guenther <rguenther@suse.de>
1891 * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
1893 2009-08-28 Jan Beulich <jbeulich@novell.com>
1895 * config/i386/netware.c: Include langhooks.h.
1896 (i386_nlm_encode_section_info): Simplify.
1897 (netware_override_options): Delete.
1898 * config/i386/netware.h (netware_override_options): Delete
1900 (OVERRIDE_OPTIONS): Delete definition.
1901 (SUBTARGET_OVERRIDE_OPTIONS): Define.
1902 (ASM_COMMENT_START): Define.
1903 * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
1905 2009-08-28 Jan Beulich <jbeulich@novell.com>
1907 * configure.ac: For in-tree ld, do a plain version check to
1908 determine whether comdat groups are supported.
1909 * configure: Regenerate.
1911 2009-08-28 Olivier Hainque <hainque@adacore.com>
1913 * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
1914 always defined. Reflect definition or absence of such for
1915 COLLECT_EXPORT_LIST. Readability helper.
1916 (scanfilter): New enum, to help control what symbols
1917 are to be considered or ignored by scan_prog_file.
1918 (enum pass): Rename as "scanpass", moved together with scanfilter
1919 prior to scan_prog_file's prototype.
1920 (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
1921 Group prototype with the scanpass/scanfilter definitions, factorize
1922 head comments for the several implementations at the prototype.
1923 (main): Reorganize the first pass link control to let AIX
1924 drag only the needed frame tables in executables. Prevent
1925 frame tables collection during the scan aimed at static ctors.
1926 Pre-link and scan for frame tables later to compensate.
1927 * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
1928 A C statement to issue assembly directives that create a reference
1929 to the given DWARF table identifier label from the current function
1931 * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
1932 to differentiate first time section entry. Only emit a .data
1933 tables start identifier label the first time around.
1934 (switch_to_frame_table_section): New function. Helper for
1935 output_call_frame_info to switch possibly BACK into the eh_frame
1936 or the debug_frame section depending on FOR_EH.
1937 (output_call_frame_info): Use helper to first enter the proper
1939 (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
1940 emit a link to the frame table start label from each function
1942 * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
1943 New function. Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
1944 * config/rs6000/rs6000-protos.h: Declare it.
1945 * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
1947 2009-08-27 Kaz Kojima <kkojima@gcc.gnu.org>
1949 * config/sh/sh.c (split_branches): Check the result of
1952 2009-08-27 Steve Ellcey <sje@cup.hp.com>
1954 * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
1955 using -pthread -fopenmp
1957 2009-08-27 Gerald Pfeifer <gerald@pfeifer.com>
1959 * doc/service.texi (service directory): Update URL.
1961 2009-08-27 Uros Bizjak <ubizjak@gmail.com>
1963 PR rtl-optimization/40861
1964 * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
1965 extract word from a multi-word subreg for negative byte positions.
1967 2009-08-27 Tristan Gingold <gingold@adacore.com>
1968 Douglas B Rupp <rupp@gnat.com>
1970 * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
1971 (SECTION_VMS_OVERLAY): Define.
1972 (ia64_vms_common_object_attribute): Added. Handle the "common_object"
1974 (ia64_vms_elf_asm_named_section): Added. Generate .section pseudo-op
1976 (ia64_vms_output_aligned_decl_common): Added. Generate pseudo-op for
1977 common_object declarations.
1978 (ia64_section_type_flags): Set section flag for common_object.
1979 * config/ia64/ia64-protos.h
1980 (ia64_vms_output_aligned_decl_common): Declare.
1981 (ia64_vms_elf_asm_named_section): Declare.
1983 2009-08-27 Michael Matz <matz@suse.de>
1985 * expr.c (expand_expr_real_2): New function taking exploded
1986 unary or binary expression, split out from ...
1987 (expand_expr_real_1): ... here. Move over all unary/binary
1988 switch parts to above function, in particular these codes:
1989 PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
1990 MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
1991 ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
1992 FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
1993 FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
1994 BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
1995 BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
1996 LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
1997 NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
1998 UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
1999 WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
2000 VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
2001 VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
2002 VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
2003 VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
2004 VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
2005 VEC_PACK_FIX_TRUNC_EXPR.
2006 (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
2009 2009-08-27 Richard Guenther <rguenther@suse.de>
2011 * gengtype.c (main): Handle uint64_t.
2012 * ipa-utils.c (get_base_var): Indent properly.
2013 * tree-ssa-live.c (debug_scope_block): New function.
2014 * tree-flow.h (debug_scope_block): Declare.
2015 * tree-ssa-copy.c (replace_exp_1): Add vertical space.
2016 * basic-block.h (enum profile_status): Rename to
2017 enum profile_status_d.
2018 (x_profile_status): Adjust type.
2020 2009-08-27 Dodji Seketeli <dodji@redhat.com>
2023 * dwarf2out.c (get_context_die): Declare this static function.
2024 (gen_type_die_with_usage): Make sure a DIE is a generated for
2025 the context of a typedef.
2027 2009-08-26 Anatoly Sokolov <aesok@post.ru>
2029 * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
2032 2009-08-26 Richard Sandiford <rdsandiford@googlemail.com>
2034 * config/mips/mips-protos.h (mips_output_sync): Declare.
2035 (mips_sync_loop_insns): Likewise.
2036 (mips_output_sync_loop): Replace first two parameters with an rtx.
2037 * config/mips/mips.c (mips_multi_member): New structure.
2038 (mips_multi_members): New variable.
2039 (mips_multi_start): New function.
2040 (mips_multi_add): Likewise.
2041 (mips_multi_add_insn): Likewise.
2042 (mips_multi_add_label): Likewise.
2043 (mips_multi_last_index): Likewise.
2044 (mips_multi_copy_insn): Likewise.
2045 (mips_multi_set_operand): Likewise.
2046 (mips_multi_write): Likewise.
2047 (mips_print_operand_punctuation): Remove '%|' and '%-'.
2048 (mips_init_print_operand_punct): Update accordingly.
2049 (mips_start_ll_sc_sync_block): New function.
2050 (mips_end_ll_sc_sync_block): Likewise.
2051 (mips_output_sync): Likewise.
2052 (mips_sync_insn1_template): Likewise.
2053 (mips_sync_insn2_template): Likewise.
2054 (mips_get_sync_operand): Likewise.
2055 (mips_process_sync_loop): Likewise.
2056 (mips_output_sync_loop): Use mips_process_sync_loop.
2057 (mips_sync_loop_insns): New function.
2058 * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
2059 (MIPS_COMPARE_AND_SWAP_12): Likewise.
2060 (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
2061 (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
2062 (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
2063 (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
2064 (MIPS_SYNC_OLD_OP_12): Likewise.
2065 (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
2066 (MIPS_SYNC_NEW_OP_12): Likewise.
2067 (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
2068 (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
2069 (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
2070 (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
2071 (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
2072 (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
2073 * config/mips/mips.md (sync_mem): New attribute.
2074 (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
2075 (sync_exclusive_mask, sync_required_oldval): Likewise.
2076 (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
2077 (sync_release_barrier): Likewise.
2078 (length): Handle sync loops.
2079 (sync): Use mips_output_sync.
2080 * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
2081 (sync_compare_and_swap<mode>): Set the new sync_* attributes
2082 and use mips_output_sync_loop.
2083 (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
2084 (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
2085 (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
2086 (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
2087 (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
2088 (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
2089 (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
2090 (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
2091 (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
2093 2009-08-26 Richard Guenther <rguenther@suse.de>
2096 * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
2097 the types to not match.
2098 * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
2100 * tree-ssa.c (useless_type_conversion_p): Conversions to
2101 pointers to unprototyped functions are useless.
2103 2009-08-26 Richard Guenther <rguenther@suse.de>
2105 * tree-ssa-structalias.c (create_variable_info_for): Remove strange
2106 whole-program condition, prepare to be called for non-globals.
2107 (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
2108 params build a representative with known type and track its fields.
2110 2009-08-26 Uros Bizjak <ubizjak@gmail.com>
2112 * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
2113 clearing by a taken branch.
2114 (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
2115 effectively after bbro pass.
2116 (sync_nand<mode>): Ditto.
2117 (sync_old_<fetchop_name><mode>): Ditto.
2118 (sync_old_nand<mode>): Ditto.
2119 (sync_new_<fetchop_name><mode>): Dito.
2120 (sync_new_nand<mode>): Ditto.
2121 (sync_compare_and_swap<mode>_1): Ditto.
2122 (*sync_compare_and_swap<mode>): Ditto.
2123 (sync_lock_test_and_set<mode>_1): Ditto.
2124 ("sync_lock_test_and_set<mode>): Ditto.
2126 2009-08-25 Douglas B Rupp <rupp@gnat.com>
2128 * hwint.h (HOST_LONG_FORMAT): New macro
2129 * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
2130 Use HOST_PTR_PRINTF.
2131 * system.h (HOST_PTR_PRINTF): Resurrect old macro
2132 * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
2133 (HOST_PTR_PRINTF): Document.
2135 2009-08-25 Jan Hubicka <jh@suse.cz>
2137 * config/i386/bmmintrin.h: Replace by #error.
2140 Michael Meissner <michael.meissner@amd.com>
2141 Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2142 Tony Linthicum <tony.linthicum@amd.com>
2144 * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
2145 (TARGET_ROUND): New macro for the round/ptest instructions which
2146 are shared between SSE4.1 and SSE5.
2147 (OPTION_MASK_ISA_ROUND): Ditto.
2148 (OPTION_ISA_ROUND): Ditto.
2149 (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
2150 (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
2152 * config/i386/i386.opt (-msse5): New switch for SSE5 support.
2153 (-mfused-madd): New switch to give users control over whether the
2154 compiler optimizes to use the multiply/add SSE5 instructions.
2156 * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
2157 (ix86_handle_option): Turn off 3dnow if -msse5.
2158 (override_options): Add SSE5 support.
2159 (print_operand): %Y prints comparison codes for SSE5 com/pcom
2161 (ix86_expand_sse_movcc): Add SSE5 support.
2162 (ix86_expand_sse5_unpack): New function to use pperm to unpack a
2163 vector type to the next largest size.
2164 (ix86_expand_sse5_pack): New function to use pperm to pack a
2165 vector type to the next smallest size.
2166 (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
2167 (IX86_BUILTIN_FMADDSD): Ditto.
2168 (IX86_BUILTIN_FMADDPS): Ditto.
2169 (IX86_BUILTIN_FMADDPD): Ditto.
2170 (IX86_BUILTIN_FMSUBSS): Ditto.
2171 (IX86_BUILTIN_FMSUBSD): Ditto.
2172 (IX86_BUILTIN_FMSUBPS): Ditto.
2173 (IX86_BUILTIN_FMSUBPD): Ditto.
2174 (IX86_BUILTIN_FNMADDSS): Ditto.
2175 (IX86_BUILTIN_FNMADDSD): Ditto.
2176 (IX86_BUILTIN_FNMADDPS): Ditto.
2177 (IX86_BUILTIN_FNMADDPD): Ditto.
2178 (IX86_BUILTIN_FNMSUBSS): Ditto.
2179 (IX86_BUILTIN_FNMSUBSD): Ditto.
2180 (IX86_BUILTIN_FNMSUBPS): Ditto.
2181 (IX86_BUILTIN_FNMSUBPD): Ditto.
2182 (IX86_BUILTIN_PCMOV_V2DI): Ditto.
2183 (IX86_BUILTIN_PCMOV_V4SI): Ditto.
2184 (IX86_BUILTIN_PCMOV_V8HI): Ditto.
2185 (IX86_BUILTIN_PCMOV_V16QI): Ditto.
2186 (IX86_BUILTIN_PCMOV_V4SF): Ditto.
2187 (IX86_BUILTIN_PCMOV_V2DF): Ditto.
2188 (IX86_BUILTIN_PPERM): Ditto.
2189 (IX86_BUILTIN_PERMPS): Ditto.
2190 (IX86_BUILTIN_PERMPD): Ditto.
2191 (IX86_BUILTIN_PMACSSWW): Ditto.
2192 (IX86_BUILTIN_PMACSWW): Ditto.
2193 (IX86_BUILTIN_PMACSSWD): Ditto.
2194 (IX86_BUILTIN_PMACSWD): Ditto.
2195 (IX86_BUILTIN_PMACSSDD): Ditto.
2196 (IX86_BUILTIN_PMACSDD): Ditto.
2197 (IX86_BUILTIN_PMACSSDQL): Ditto.
2198 (IX86_BUILTIN_PMACSSDQH): Ditto.
2199 (IX86_BUILTIN_PMACSDQL): Ditto.
2200 (IX86_BUILTIN_PMACSDQH): Ditto.
2201 (IX86_BUILTIN_PMADCSSWD): Ditto.
2202 (IX86_BUILTIN_PMADCSWD): Ditto.
2203 (IX86_BUILTIN_PHADDBW): Ditto.
2204 (IX86_BUILTIN_PHADDBD): Ditto.
2205 (IX86_BUILTIN_PHADDBQ): Ditto.
2206 (IX86_BUILTIN_PHADDWD): Ditto.
2207 (IX86_BUILTIN_PHADDWQ): Ditto.
2208 (IX86_BUILTIN_PHADDDQ): Ditto.
2209 (IX86_BUILTIN_PHADDUBW): Ditto.
2210 (IX86_BUILTIN_PHADDUBD): Ditto.
2211 (IX86_BUILTIN_PHADDUBQ): Ditto.
2212 (IX86_BUILTIN_PHADDUWD): Ditto.
2213 (IX86_BUILTIN_PHADDUWQ): Ditto.
2214 (IX86_BUILTIN_PHADDUDQ): Ditto.
2215 (IX86_BUILTIN_PHSUBBW): Ditto.
2216 (IX86_BUILTIN_PHSUBWD): Ditto.
2217 (IX86_BUILTIN_PHSUBDQ): Ditto.
2218 (IX86_BUILTIN_PROTB): Ditto.
2219 (IX86_BUILTIN_PROTW): Ditto.
2220 (IX86_BUILTIN_PROTD): Ditto.
2221 (IX86_BUILTIN_PROTQ): Ditto.
2222 (IX86_BUILTIN_PROTB_IMM): Ditto.
2223 (IX86_BUILTIN_PROTW_IMM): Ditto.
2224 (IX86_BUILTIN_PROTD_IMM): Ditto.
2225 (IX86_BUILTIN_PROTQ_IMM): Ditto.
2226 (IX86_BUILTIN_PSHLB): Ditto.
2227 (IX86_BUILTIN_PSHLW): Ditto.
2228 (IX86_BUILTIN_PSHLD): Ditto.
2229 (IX86_BUILTIN_PSHLQ): Ditto.
2230 (IX86_BUILTIN_PSHAB): Ditto.
2231 (IX86_BUILTIN_PSHAW): Ditto.
2232 (IX86_BUILTIN_PSHAD): Ditto.
2233 (IX86_BUILTIN_PSHAQ): Ditto.
2234 (IX86_BUILTIN_FRCZSS): Ditto.
2235 (IX86_BUILTIN_FRCZSD): Ditto.
2236 (IX86_BUILTIN_FRCZPS): Ditto.
2237 (IX86_BUILTIN_FRCZPD): Ditto.
2238 (IX86_BUILTIN_CVTPH2PS): Ditto.
2239 (IX86_BUILTIN_CVTPS2PH): Ditto.
2240 (IX86_BUILTIN_COMEQSS): Ditto.
2241 (IX86_BUILTIN_COMNESS): Ditto.
2242 (IX86_BUILTIN_COMLTSS): Ditto.
2243 (IX86_BUILTIN_COMLESS): Ditto.
2244 (IX86_BUILTIN_COMGTSS): Ditto.
2245 (IX86_BUILTIN_COMGESS): Ditto.
2246 (IX86_BUILTIN_COMUEQSS): Ditto.
2247 (IX86_BUILTIN_COMUNESS): Ditto.
2248 (IX86_BUILTIN_COMULTSS): Ditto.
2249 (IX86_BUILTIN_COMULESS): Ditto.
2250 (IX86_BUILTIN_COMUGTSS): Ditto.
2251 (IX86_BUILTIN_COMUGESS): Ditto.
2252 (IX86_BUILTIN_COMORDSS): Ditto.
2253 (IX86_BUILTIN_COMUNORDSS): Ditto.
2254 (IX86_BUILTIN_COMFALSESS): Ditto.
2255 (IX86_BUILTIN_COMTRUESS): Ditto.
2256 (IX86_BUILTIN_COMEQSD): Ditto.
2257 (IX86_BUILTIN_COMNESD): Ditto.
2258 (IX86_BUILTIN_COMLTSD): Ditto.
2259 (IX86_BUILTIN_COMLESD): Ditto.
2260 (IX86_BUILTIN_COMGTSD): Ditto.
2261 (IX86_BUILTIN_COMGESD): Ditto.
2262 (IX86_BUILTIN_COMUEQSD): Ditto.
2263 (IX86_BUILTIN_COMUNESD): Ditto.
2264 (IX86_BUILTIN_COMULTSD): Ditto.
2265 (IX86_BUILTIN_COMULESD): Ditto.
2266 (IX86_BUILTIN_COMUGTSD): Ditto.
2267 (IX86_BUILTIN_COMUGESD): Ditto.
2268 (IX86_BUILTIN_COMORDSD): Ditto.
2269 (IX86_BUILTIN_COMUNORDSD): Ditto.
2270 (IX86_BUILTIN_COMFALSESD): Ditto.
2271 (IX86_BUILTIN_COMTRUESD): Ditto.
2272 (IX86_BUILTIN_COMEQPS): Ditto.
2273 (IX86_BUILTIN_COMNEPS): Ditto.
2274 (IX86_BUILTIN_COMLTPS): Ditto.
2275 (IX86_BUILTIN_COMLEPS): Ditto.
2276 (IX86_BUILTIN_COMGTPS): Ditto.
2277 (IX86_BUILTIN_COMGEPS): Ditto.
2278 (IX86_BUILTIN_COMUEQPS): Ditto.
2279 (IX86_BUILTIN_COMUNEPS): Ditto.
2280 (IX86_BUILTIN_COMULTPS): Ditto.
2281 (IX86_BUILTIN_COMULEPS): Ditto.
2282 (IX86_BUILTIN_COMUGTPS): Ditto.
2283 (IX86_BUILTIN_COMUGEPS): Ditto.
2284 (IX86_BUILTIN_COMORDPS): Ditto.
2285 (IX86_BUILTIN_COMUNORDPS): Ditto.
2286 (IX86_BUILTIN_COMFALSEPS): Ditto.
2287 (IX86_BUILTIN_COMTRUEPS): Ditto.
2288 (IX86_BUILTIN_COMEQPD): Ditto.
2289 (IX86_BUILTIN_COMNEPD): Ditto.
2290 (IX86_BUILTIN_COMLTPD): Ditto.
2291 (IX86_BUILTIN_COMLEPD): Ditto.
2292 (IX86_BUILTIN_COMGTPD): Ditto.
2293 (IX86_BUILTIN_COMGEPD): Ditto.
2294 (IX86_BUILTIN_COMUEQPD): Ditto.
2295 (IX86_BUILTIN_COMUNEPD): Ditto.
2296 (IX86_BUILTIN_COMULTPD): Ditto.
2297 (IX86_BUILTIN_COMULEPD): Ditto.
2298 (IX86_BUILTIN_COMUGTPD): Ditto.
2299 (IX86_BUILTIN_COMUGEPD): Ditto.
2300 (IX86_BUILTIN_COMORDPD): Ditto.
2301 (IX86_BUILTIN_COMUNORDPD): Ditto.
2302 (IX86_BUILTIN_COMFALSEPD): Ditto.
2303 (IX86_BUILTIN_COMTRUEPD): Ditto.
2304 (IX86_BUILTIN_PCOMEQUB): Ditto.
2305 (IX86_BUILTIN_PCOMNEUB): Ditto.
2306 (IX86_BUILTIN_PCOMLTUB): Ditto.
2307 (IX86_BUILTIN_PCOMLEUB): Ditto.
2308 (IX86_BUILTIN_PCOMGTUB): Ditto.
2309 (IX86_BUILTIN_PCOMGEUB): Ditto.
2310 (IX86_BUILTIN_PCOMFALSEUB): Ditto.
2311 (IX86_BUILTIN_PCOMTRUEUB): Ditto.
2312 (IX86_BUILTIN_PCOMEQUW): Ditto.
2313 (IX86_BUILTIN_PCOMNEUW): Ditto.
2314 (IX86_BUILTIN_PCOMLTUW): Ditto.
2315 (IX86_BUILTIN_PCOMLEUW): Ditto.
2316 (IX86_BUILTIN_PCOMGTUW): Ditto.
2317 (IX86_BUILTIN_PCOMGEUW): Ditto.
2318 (IX86_BUILTIN_PCOMFALSEUW): Ditto.
2319 (IX86_BUILTIN_PCOMTRUEUW): Ditto.
2320 (IX86_BUILTIN_PCOMEQUD): Ditto.
2321 (IX86_BUILTIN_PCOMNEUD): Ditto.
2322 (IX86_BUILTIN_PCOMLTUD): Ditto.
2323 (IX86_BUILTIN_PCOMLEUD): Ditto.
2324 (IX86_BUILTIN_PCOMGTUD): Ditto.
2325 (IX86_BUILTIN_PCOMGEUD): Ditto.
2326 (IX86_BUILTIN_PCOMFALSEUD): Ditto.
2327 (IX86_BUILTIN_PCOMTRUEUD): Ditto.
2328 (IX86_BUILTIN_PCOMEQUQ): Ditto.
2329 (IX86_BUILTIN_PCOMNEUQ): Ditto.
2330 (IX86_BUILTIN_PCOMLTUQ): Ditto.
2331 (IX86_BUILTIN_PCOMLEUQ): Ditto.
2332 (IX86_BUILTIN_PCOMGTUQ): Ditto.
2333 (IX86_BUILTIN_PCOMGEUQ): Ditto.
2334 (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
2335 (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
2336 (IX86_BUILTIN_PCOMEQB): Ditto.
2337 (IX86_BUILTIN_PCOMNEB): Ditto.
2338 (IX86_BUILTIN_PCOMLTB): Ditto.
2339 (IX86_BUILTIN_PCOMLEB): Ditto.
2340 (IX86_BUILTIN_PCOMGTB): Ditto.
2341 (IX86_BUILTIN_PCOMGEB): Ditto.
2342 (IX86_BUILTIN_PCOMFALSEB): Ditto.
2343 (IX86_BUILTIN_PCOMTRUEB): Ditto.
2344 (IX86_BUILTIN_PCOMEQW): Ditto.
2345 (IX86_BUILTIN_PCOMNEW): Ditto.
2346 (IX86_BUILTIN_PCOMLTW): Ditto.
2347 (IX86_BUILTIN_PCOMLEW): Ditto.
2348 (IX86_BUILTIN_PCOMGTW): Ditto.
2349 (IX86_BUILTIN_PCOMGEW): Ditto.
2350 (IX86_BUILTIN_PCOMFALSEW): Ditto.
2351 (IX86_BUILTIN_PCOMTRUEW): Ditto.
2352 (IX86_BUILTIN_PCOMEQD): Ditto.
2353 (IX86_BUILTIN_PCOMNED): Ditto.
2354 (IX86_BUILTIN_PCOMLTD): Ditto.
2355 (IX86_BUILTIN_PCOMLED): Ditto.
2356 (IX86_BUILTIN_PCOMGTD): Ditto.
2357 (IX86_BUILTIN_PCOMGED): Ditto.
2358 (IX86_BUILTIN_PCOMFALSED): Ditto.
2359 (IX86_BUILTIN_PCOMTRUED): Ditto.
2360 (IX86_BUILTIN_PCOMEQQ): Ditto.
2361 (IX86_BUILTIN_PCOMNEQ): Ditto.
2362 (IX86_BUILTIN_PCOMLTQ): Ditto.
2363 (IX86_BUILTIN_PCOMLEQ): Ditto.
2364 (IX86_BUILTIN_PCOMGTQ): Ditto.
2365 (IX86_BUILTIN_PCOMGEQ): Ditto.
2366 (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2367 (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2368 (enum multi_arg_type): New enum for describing the various SSE5
2369 intrinsic argument types.
2370 (bdesc_multi_arg): New table for SSE5 intrinsics.
2371 (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2372 (ix86_expand_multi_arg_builtin): New function for creating SSE5
2374 (ix86_expand_builtin): Add SSE5 intrinsic support.
2375 (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2376 operand instructions.
2377 (ix86_expand_sse5_multiple_memory): New function to split the
2378 second memory reference from SSE5 instructions.
2379 (type_has_variadic_args_p): Delete in favor of stdarg_p.
2380 (ix86_return_pops_args): Use stdarg_p to determine if the function
2381 has variable arguments.
2382 (ix86_setup_incoming_varargs): Ditto.
2383 (x86_this_parameter): Ditto.
2385 * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2387 (ix86_expand_sse5_pack): Ditto.
2388 (ix86_sse5_valid_op_p): Ditto.
2389 (ix86_expand_sse5_multiple_memory): Ditto.
2391 * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2392 constant for SSE5 support.
2393 (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2394 (UNSPEC_SSE5_TRUEFALSE): Ditto.
2395 (UNSPEC_SSE5_PERMUTE): Ditto.
2396 (UNSPEC_SSE5_ASHIFT): Ditto.
2397 (UNSPEC_SSE5_LSHIFT): Ditto.
2398 (UNSPEC_FRCZ): Ditto.
2399 (UNSPEC_CVTPH2PS): Ditto.
2400 (UNSPEC_CVTPS2PH): Ditto.
2401 (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2403 (COM_FALSE_S): Ditto.
2404 (COM_FALSE_P): Ditto.
2405 (COM_TRUE_S): Ditto.
2406 (COM_TRUE_P): Ditto.
2407 (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2408 (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2410 (memory attribute): Ditto.
2411 (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2412 Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2413 (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2414 (floor<mode>2): Ditto.
2415 (ceil<mode>2): Ditto.
2416 (btrunc<mode>2): Ditto.
2417 (nearbyintdf2): Ditto.
2418 (nearbyintsf2): Ditto.
2419 (sse_setccsf): Disable if SSE5.
2420 (sse_setccdf): Ditto.
2421 (sse5_setcc<mode>): New support for SSE5 conditional move.
2422 (sse5_pcmov_<mode>): Ditto.
2424 * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2426 (SSEMODEF2P): Ditto.
2427 (ssemodesuffixf4): New mode attribute for SSE5.
2428 (ssemodesuffixf2s): Ditto.
2429 (ssemodesuffixf2c): Ditto.
2430 (sserotatemax): Ditto.
2431 (ssescalarmode): Ditto.
2432 (sse_maskcmpv4sf3): Disable if SSE5.
2433 (sse_maskcmpv2df3): Ditto.
2434 (sse_vmmaskcmpv4sf3): Ditto.
2435 (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
2436 (sse5_vmfmadd<mode>4): Ditto.
2437 (sse5_fmsub<mode>4): Ditto.
2438 (sse5_vmfmsub<mode>4): Ditto.
2439 (sse5_fnmadd<mode>4): Ditto.
2440 (sse5_vmfnmadd<mode>4): Ditto.
2441 (sse5_fnmsub<mode>4): Ditto.
2442 (sse5_vmfnmsub<mode>4): Ditto.
2443 (sse5i_fmadd<mode>4): Ditto.
2444 (sse5i_fmsub<mode>4): Ditto.
2445 (sse5i_fnmadd<mode>4): Ditto.
2446 (sse5i_fnmsub<mode>4): Ditto.
2447 (sse5i_vmfmadd<mode>4): Ditto.
2448 (sse5i_vmfmsub<mode>4): Ditto.
2449 (sse5i_vmfnmadd<mode>4): Ditto.
2450 (sse5i_vmfnmsub<mode>4): Ditto.
2451 (mulv16qi3): Add SSE5 support.
2453 (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2454 (sse2_mulv4si3): Disable if SSE5.
2455 (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2456 (sse4_1_roundps): Ditto.
2457 (sse4_1_roundsd): Ditto.
2458 (sse4_1_roundss): Ditto.
2459 (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2461 (sse_maskcmpsf3): Ditto.
2462 (sse_vmmaskcmpv4sf3): Ditto.
2463 (sse2_maskcmpv2df3): Ditto.
2464 (sse2_maskcmpdf3): Ditto.
2465 (sse2_vmmaskcmpv2df3): Ditto.
2466 (sse2_eq<mode>3): Ditto.
2467 (sse2_gt<mode>3): Ditto.
2468 (sse5_pcmov_<mode>): Add SSE5 support.
2469 (vec_unpacku_hi_v16qi): Ditto.
2470 (vec_unpacks_hi_v16qi): Ditto.
2471 (vec_unpacku_lo_v16qi): Ditto.
2472 (vec_unpacks_lo_v16qi): Ditto.
2473 (vec_unpacku_hi_v8hi): Ditto.
2474 (vec_unpacks_hi_v8hi): Ditto.
2475 (vec_unpacku_lo_v8hi): Ditto.
2476 (vec_unpacks_lo_v8hi): Ditto.
2477 (vec_unpacku_hi_v4si): Ditto.
2478 (vec_unpacks_hi_v4si): Ditto.
2479 (vec_unpacku_lo_v4si): Ditto.
2480 (vec_unpacks_lo_v4si): Ditto.
2481 (sse5_pmacsww): New SSE5 intrinsic insn.
2482 (sse5_pmacssww): Ditto.
2483 (sse5_pmacsdd): Ditto.
2484 (sse5_pmacssdd): Ditto.
2485 (sse5_pmacssdql): Ditto.
2486 (sse5_pmacssdqh): Ditto.
2487 (sse5_pmacsdqh): Ditto.
2488 (sse5_pmacsswd): Ditto.
2489 (sse5_pmacswd): Ditto.
2490 (sse5_pmadcsswd): Ditto.
2491 (sse5_pmadcswd): Ditto.
2492 (sse5_pcmov_<move>): Conditional move support on SSE5.
2493 (sse5_phaddbw): New SSE5 intrinsic insn.
2494 (sse5_phaddbd): Ditto.
2495 (sse5_phaddbq): Ditto.
2496 (sse5_phaddwd): Ditto.
2497 (sse5_phaddwq): Ditto.
2498 (sse5_phadddq): Ditto.
2499 (sse5_phaddubw): Ditto.
2500 (sse5_phaddubd): Ditto.
2501 (sse5_phaddubq): Ditto.
2502 (sse5_phadduwd): Ditto.
2503 (sse5_phadduwq): Ditto.
2504 (sse5_phaddudq): Ditto.
2505 (sse5_phsubbw): Ditto.
2506 (sse5_phsubwd): Ditto.
2507 (sse5_phsubdq): Ditto.
2508 (sse5_pperm): Ditto.
2509 (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
2510 (sse5_pperm_zero_v16qi_v8hi): Ditto.
2511 (sse5_pperm_sign_v8hi_v4si): Ditto.
2512 (sse5_pperm_zero_v8hi_v4si): Ditto.
2513 (sse5_pperm_sign_v4si_v2di): Ditto.
2514 (sse5_pperm_sign_v4si_v2di): Ditto.
2515 (sse5_pperm_pack_v2di_v4si): Ditto.
2516 (sse5_pperm_pack_v4si_v8hi): Ditto.
2517 (sse5_pperm_pack_v8hi_v16qi): Ditto.
2518 (sse5_perm<mode>): New SSE5 intrinsic insn.
2519 (rotl<mode>3): Ditto.
2520 (sse5_rotl<mode>3): Ditto.
2521 (sse5_ashl<mode>3): Ditto.
2522 (sse5_lshl<mode>3): Ditto.
2523 (sse5_frcz<mode>2): Ditto.
2524 (sse5s_frcz<mode>2): Ditto.
2525 (sse5_cvtph2ps): Ditto.
2526 (sse5_cvtps2ph): Ditto.
2527 (sse5_vmmaskcmp<mode>3): Ditto.
2528 (sse5_com_tf<mode>3): Ditto.
2529 (sse5_maskcmp<mode>3): Ditto.
2530 (sse5_maskcmp_uns<mode>3): Ditto.
2531 (sse5_maskcmp_uns2<mode>3): Ditto.
2532 (sse5_pcom_tf<mode>3): Ditto.
2534 * config/i386/predicates.md (sse5_comparison_float_operator):
2535 New predicate to match the comparison operators supported by
2536 the SSE5 com instruction.
2537 (ix86_comparison_int_operator): New predicate to match just the
2538 signed int comparisons.
2539 (ix86_comparison_uns_operator): New predicate to match just the
2540 unsigned int comparisons.
2542 * doc/invoke.texi (-msse5): Add documentation.
2543 (-mfused-madd): Ditto.
2545 * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2547 * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2549 (x86_64-*-*): Ditto.
2551 * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2553 * config/i386/bmmintrin.h: New file, provide common x86 compiler
2554 intrinisics for SSE5.
2556 * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2559 * config/i386/mmintrin-common.h: New file, to contain common
2560 instructions between SSE4.1 and SSE5.
2562 * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
2563 FOREACH_FUNCTION_ARGS to iterate over the argument list.
2564 (gen_regparm_prefix): Ditto.
2566 * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
2567 FOREACH_FUNCTION_ARGS to iterate over the argument list. Use
2568 prototype_p to determine if a function is prototyped.
2570 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
2572 * c-common.c (c_common_reswords) add the alignof keyword,
2573 with same RID as __alignof and __alignof__
2575 2009-08-25 Anatoly Sokolov <aesok@post.ru>
2577 * hooks.h (hook_bool_const_int_const_int_true): Declare.
2578 * hooks.c (hook_bool_const_int_const_int_true): New function.
2579 * target.h (struct gcc_target): Add can_eliminate field.
2580 * target-def.h (TARGET_CAN_ELIMINATE): Define.
2581 (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
2582 * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
2583 * reload1.c (update_eliminables, init_elim_table): (Ditto.).
2584 (elim_table): Revise comment.
2585 * system.h (CAN_ELIMINATE): Poison.
2586 * defaults.h (CAN_ELIMINATE): Remove.
2587 * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
2589 * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
2590 * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
2592 (alpha_vms_can_eliminate): Declare as static, change return type to
2594 * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
2596 * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
2597 * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
2598 (arm_can_eliminate): New function.
2600 * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
2601 * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
2602 (avr_can_eliminate): Declare as static.
2603 * config/avr/avr-protos.h (avr_can_eliminate): Remove.
2605 * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
2606 * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
2607 (bfin_can_eliminate): New function.
2609 * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
2610 * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
2611 (crx_can_eliminate): New function.
2613 * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
2614 * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
2615 (fr30_can_eliminate): New function.
2617 * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
2618 * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
2619 (frv_can_eliminate): New function.
2621 * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
2622 * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
2623 (h8300_can_eliminate): New function.
2625 * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
2626 * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
2627 (i386_can_eliminate): Declare as static, change return type to bool.
2628 * config/i386/i386-protos.h (i386_can_eliminate): Remove.
2630 * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
2631 * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
2632 (ia64_can_eliminate): New function.
2634 * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
2635 * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
2636 (iq2000_can_eliminate): New function.
2638 * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
2639 * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
2640 (m32r_can_eliminate): New function.
2642 * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
2643 * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
2644 (m68hc11_can_eliminate): New function.
2646 * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
2647 * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
2648 (m68k_can_eliminate): New function.
2650 * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
2651 * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
2652 (mep_can_eliminate): New function.
2654 * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
2655 * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
2656 (mips_can_eliminate): New function.
2658 * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
2659 * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
2660 (rs6000_can_eliminate): New function.
2662 * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
2663 * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
2664 (s390_can_eliminate): Declare as static.
2665 * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
2667 * config/score/score.h (CAN_ELIMINATE): Remove macro.
2668 * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
2669 (score_can_eliminate): New function.
2671 * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
2672 * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
2673 (sparc_can_eliminate): Declare as static.
2674 * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
2676 * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
2677 * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
2678 (xstormy16_can_eliminate): New function.
2680 * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
2681 * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
2682 (v850_can_eliminate): New function.
2684 2009-08-25 Uros Bizjak <ubizjak@gmail.com>
2686 * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
2687 (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
2688 (*movdfcc_ext[1234]): Disable for IEEE mode.
2690 2009-08-25 Eric Botcazou <ebotcazou@adacore.com>
2692 * gimplify.c (prepare_gimple_addressable): New static function.
2693 (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
2695 (gimplify_addr_expr): Invoke it similarly on the operand instead of
2696 manually fiddling with it.
2698 2009-08-25 Michael Matz <matz@suse.de>
2700 * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
2701 * dojump.c (do_jump_by_parts_greater): Take two operands instead of
2703 (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
2704 (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
2705 (do_jump): Split out code for simple binary comparisons into ...
2706 (do_jump_1): ... this, taking the individual operands and code.
2707 Change callers to helper function above accordingly.
2708 * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
2711 2009-08-25 Michael Matz <matz@suse.de>
2713 * expr.h (struct separate_ops, sepops): New type for passing
2714 around an exploded simple expression.
2715 * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
2716 Use this structure instead of expression tree.
2717 (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
2718 expression, only its type.
2719 (expand_vec_cond_expr): Take type and individual operands instead
2721 * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
2722 expand_vec_shift_expr): Change prototype accordingly.
2723 * tree-vect-stmts.c (vectorizable_condition): Change call of
2724 expand_vec_cond_expr_p to pass only type.
2725 * expr.c (do_store_flags): Change prototype and implementation
2726 to take an exploded expression.
2727 (expand_expr_real_1): New local ops initialized with details
2728 of the full expression. Use it instead of full
2729 expression in calls to do_store_flags, expand_vec_cond_expr,
2730 expand_widen_pattern_expr and expand_vec_shift_expr.
2732 2009-08-25 Michael Matz <matz@suse.de>
2734 * expr.c (expand_expr_real_1): New local treeop0, treeop1,
2735 treeop2 initialized with first three operands of the full expression.
2736 Substitute all TREE_OPERAND (exp, [012]) calls with them.
2738 2009-08-25 Kai Tietz <kai.tietz@onevision.com>
2740 * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
2741 (__gthread_objc_condition_allocate): Mark arguments as unused.
2742 (__gthread_objc_condition_deallocate): Likewise.
2743 (__gthread_objc_condition_wait): Likewise.
2744 (__gthread_objc_condition_broadcast): Likewise.
2745 (__gthread_objc_condition_signal): Likewise.
2746 (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
2747 (__gthread_objc_thread_id): Likewise.
2749 2009-08-25 Janus Weil <janus@gcc.gnu.org>
2752 * tree-pretty-print.c (print_call_name): Print the correct call name
2753 for procedure pointer components.
2755 2009-08-24 Steve Ellcey <sje@cup.hp.com>
2757 * config/ia64/ia64.c (ia64_promote_function_mode): Call
2758 default_promote_function_mode when not VMS.
2760 2009-08-24 Olivier Hainque <hainque@adacore.com>
2762 * convert.c (convert_to_integer): Don't assume an input pointer is
2763 POINTER_SIZE wide. Fetch from the type instead.
2765 2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2767 * configure.ac (AC_PREREQ): Bump to 2.64.
2769 2009-08-24 Rafael Avila de Espindola <espindola@google.com>
2771 * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
2772 (process_command): Don't search standard_exec_prefix_1 and
2773 standard_exec_prefix_2.
2775 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2777 * config/arm/arm.c (output_return_instruction): Handle for
2780 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2782 * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
2784 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2786 * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
2787 (*arm_movdf_vfp): Likewise.
2789 2009-08-24 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2791 * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
2792 (vashr<mode>3): Rename from ashr<mode>3.
2793 (vlshr<mode>3): Rename from lshr<mode>3.
2795 2009-08-24 Kai Tietz <kai.tietz@onevision.com>
2798 * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
2799 (check_format_info_main): Use scalar_identify_flag.
2800 (check_format_types): Check for scalar size identity if
2801 scalar_identify_flag is set.
2802 (printf_length_specs): Extend by new field.
2803 (asm_fprintf_length_specs): Likewise.
2804 (gcc_diag_length_specs): Likewise.
2805 (scanf_length_specs): Likewise.
2806 (strfmon_length_specs): Likewise.
2807 (gcc_gfc_length_specs): Likewise.
2808 * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
2809 (ms_printf_flag_specs): Likewise.
2810 * c-format.h (format_length_info): Add new member scalar_identity_flag.
2812 2009-08-23 Uros Bizjak <ubizjak@gmail.com>
2815 * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
2816 (*call_value_pop_1): Ditto.
2817 (*sibcall_pop_1): New insn pattern.
2818 (*sibcall_value_pop_1): Ditto.
2820 2009-08-23 Alan Modra <amodra@bigpond.net.au>
2823 * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
2826 2009-08-23 Alan Modra <amodra@bigpond.net.au>
2829 * fwprop.c (try_fwprop_subst): Allow multiple sets.
2830 (get_reg_use_in): New function.
2831 (forward_propagate_subreg): Propagate through subreg of zero_extend
2834 2009-08-22 Kaz Kojima <kkojima@gcc.gnu.org>
2836 * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
2837 * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
2839 2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2841 * configure.ac: Remove --with-datarootdir, --with-docdir,
2842 --with-htmldir switches. No need to call AC_SUBST for
2843 datarootdir, docdir, htmldir any more.
2844 * configure: Regenerate.
2845 * doc/install.texi (Configuration): Document --datarootdir,
2846 --docdir, --htmldir, --pdfdir; update documentation for
2847 --infodir, --mandir.
2848 (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
2851 * aclocal.m4: Regenerate.
2852 * config.in: Regenerate.
2853 * configure: Regenerate.
2855 2009-08-21 Douglas B Rupp <rupp@gnat.com>
2856 Olivier Hainque <hainque@adacore.com>
2858 * config/ia64/ia64.c: Include libfuncs.h.
2859 (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
2860 (ia64_expand_call): Use reg 25 on VMS.
2861 (ia64_initialize_trampoline): Fix for VMS ABI.
2862 (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
2863 (ia64_function_arg): Initialize reg 25 on VMS.
2864 Fix OpenVMS ABI issues for varargs.
2865 For OpenVMS, emit the Argument Information register set in the
2866 incoming/sibcall case as well.
2867 (ia64_arg_type): New function.
2868 (ia64_function_arg_advance): Keep track of cum->words.
2869 Fix OpenVMS ABI issues for varargs.
2870 (ia64_function_value): On VMS, promote mode of non-aggregate types.
2871 (ia64_override_options): Set flag_no_common on VMS.
2872 (ia64_init_builtins): Disable FWRITE builtin.
2873 (ia64_asm_output_external): Call DO_CRTL_NAMES.
2874 (ia64_vms_init_libfuncs): Add decc$ routines.
2875 (ia64_vms_valid_pointer_mode): New function.
2876 (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
2877 (ia64_promote_function_mode): New function
2878 * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
2879 (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
2880 (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
2881 (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
2882 (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
2883 (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
2884 Suppress trailing '#' if VALUE is numeric.
2885 * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
2886 ia64_promote_function_mode.
2887 (TARGET_VALID_POINTER_MODE): Define.
2889 2009-08-21 Michael Meissner <meissner@linux.vnet.ibm.com>
2892 * config/rs6000/rs6000.c (rs6000_override_options): Use
2893 TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
2896 * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
2897 reporting of vector + decimal/boolean/complex error.
2899 2009-08-21 Jakub Jelinek <jakub@redhat.com>
2901 * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
2902 __vector double TYPE_DECL.
2904 2009-08-21 Richard Earnshaw <rearnsha@arm.com>
2906 * arm.h (MACHMODE): New define. Include insn-modes.h if available.
2907 (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
2908 * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
2909 to pointer to enum machine_mode. Update all callers as needed.
2911 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
2913 * config/alpha/alpha.md (exception_receiver): Emit alternative
2914 GP load sequence if flag_reorder_blocks_and_partition is set.
2915 (*exception_receiver_2): Also enable when
2916 flag_reorder_blocks_and_partition is set.
2918 2009-08-20 Matt Rice <ratmice@gmail.com>
2919 Diego Novillo <dnovillo@google.com>
2921 * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
2924 2009-08-20 Richard Guenther <rguenther@suse.de>
2926 * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
2927 * c-tree.h (c_dup_lang_specific_decl): Remove.
2928 (struct lang_decl, struct lang_type): Move definitions ...
2929 * c-lang.h: ... here. New file.
2930 * c-decl.c: Include c-lang.h.
2931 (c_dup_lang_specific_decl): Remove.
2932 * c-typeck.c: Include c-lang.h.
2933 * Makefile.in (c-decl.o): Add c-lang.h dependency.
2934 (c-typeck.o): Likewise.
2935 * c-config-lang.in (gtfiles): Add c-lang.h.
2936 * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
2939 2009-08-20 Uros Bizjak <ubizjak@gmail.com>
2941 * config/alpha/alpha.c (alpha_end_function): Do not clear
2942 crtl->emit structure and free insn locators if cfun->is_thunk is true,
2943 this is now handled in generic code.
2945 2009-08-20 Andreas Krebbel <krebbel1@de.ibm.com>
2947 * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
2948 (s390_z10_fix_long_loop_prediction): New function.
2949 (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
2950 (s390_reorg): Walk over the INSNs and invoke
2951 s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
2953 2009-08-20 Andreas Krebbel <krebbel1@de.ibm.com>
2955 * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
2956 "*brx_64bit", "*brx_31bit"): New patterns.
2957 * config/s390/s390.c ('E'): New output modifier.
2959 2009-08-20 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2960 Richard Earnshaw <richard.earnshaw@arm.com>
2962 * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
2963 * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
2965 2009-08-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2967 * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
2969 * pa.c (emit_move_sequence): Check if address of operand1 is valid
2970 for mode mode of operand0 when doing secondary reload for SAR.
2972 2009-08-19 Jakub Jelinek <jakub@redhat.com>
2975 * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
2976 of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
2978 2009-08-19 Jason Merrill <jason@redhat.com>
2980 * doc/invoke.texi (C++ Dialect Options): Note change of minimum
2981 supported template depth in C++0x.
2983 2009-08-19 Jakub Jelinek <jakub@redhat.com>
2985 * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
2986 free_after_compilation.
2987 * config/score/score7.c (score7_output_mi_thunk): Likewise.
2988 * config/score/score3.c (score3_output_mi_thunk): Likewise.
2989 * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
2990 * config/mips/mips.c (mips_output_mi_thunk): Likewise.
2991 * config/sh/sh.c (sh_output_mi_thunk): Likewise.
2992 * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
2993 * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
2995 2009-08-19 Ian Lance Taylor <iant@google.com>
2997 * doc/md.texi (Insn Canonicalizations): Correct canonicalization
2998 of (plus (mult (neg B) C) A).
3000 2009-08-18 Michael Matz <matz@suse.de>
3002 * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
3003 instead of comparing TYPE_MAIN_VARIANT for equality.
3004 * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
3005 vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
3006 * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
3007 * gimplify.c (goa_lhs_expr_p): Ditto and use
3008 STRIP_USELESS_TYPE_CONVERSION.
3010 2009-08-18 Michael Matz <matz@suse.de>
3012 * tree-ssa-structalias.c (create_variable_info_for): Also mark
3013 first field in a struct.
3014 (intra_create_variable_infos): Don't deal with flag_argument_noalias.
3016 2009-08-18 Uros Bizjak <ubizjak@gmail.com>
3018 * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
3019 locators before emit_insn is called. Remove assert that
3021 (alpha_end_function): Clear crtl->emit structure and free insn
3022 locators if cfun->is_thunk is true.
3024 2009-08-18 Jason Merrill <jason@redhat.com>
3026 * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
3028 * configure.ac: Test for it.
3029 * configure, config.in: Regenerate.
3030 * doc/install.texi: Document --enable-gnu-unique-object.
3032 2009-08-18 Richard Guenther <rguenther@suse.de>
3035 * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
3036 pow(x,y*z) only if x is nonnegative.
3038 2009-08-18 Jakub Jelinek <jakub@redhat.com>
3040 * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
3044 * config/rs6000/rs6000.c (rs6000_legitimize_address): For
3045 [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
3047 2009-08-17 DJ Delorie <dj@redhat.com>
3049 * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
3050 * config/m32c/prologue.md (epilogue_freit): New.
3052 * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
3053 (bank_switch_p): Likewise.
3054 (fast_interrupt_p): Likewise.
3055 (interrupt_p): Likewise.
3056 (m32c_conditional_register_usage): Round memregs size up.
3057 (need_to_save): We only need to save $a0 when we use ENTER.
3058 (interrupt_p): Check for fast_interrupt too.
3059 (bank_switch_p): New.
3060 (fast_interrupt_p): New.
3061 (m32c_attribute_table): Add bank_switch and fast_interrupt.
3062 (m32c_emit_prolog): Support bank switching and fast interrupts.
3063 * doc/extend.texi (Function Attributes): Add bank_switch and
3066 2009-08-17 Douglas B Rupp <rupp@gnat.com>
3068 * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
3069 * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
3071 2009-08-16 Douglas B Rupp <rupp@gnat.com>
3073 * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
3074 (menu): Add IA-64/VMS Options.
3075 (IA-64/VMS Options): Likewise.
3077 2009-08-16 Richard Sandiford <rdsandiford@googlemail.com>
3080 * config/mips/mips.md (*lwxs): Use :P for pointer values.
3082 2009-08-16 Richard Sandiford <rdsandiford@googlemail.com>
3084 * config/mips/mips-protos.h (mips_push_asm_switch): New function.
3085 (mips_pop_asm_switch): Likewise.
3086 * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
3088 (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
3089 (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
3090 (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
3091 (mips_print_operand_punctuation): Use them. Check mips_noreorder
3092 instead of set_noreorder.
3093 (mips_output_function_prologue): Use the new functions.
3094 (mips_output_function_epilogue): Likewise.
3095 (mips_need_noat_wrapper_p): New function, split out from...
3096 (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
3097 Use mips_push_asm_switch and mips_pop_asm_switch.
3098 * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
3099 and mips_pop_asm_switch.
3100 (ASM_OUTPUT_REG_POP): Likewise.
3101 (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
3102 Use mips_pop_asm_switch.
3103 (mips_asm_switch): New structure.
3104 (set_noreorder, set_nomacro): Replace with...
3105 (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
3106 * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
3107 instead of set_nomacro.
3108 (fix_truncsfsi2_macro): Likewise.
3109 (cprestore): Likewise.
3110 (hazard): Use mips_noreorder instead of set_noreorder.
3111 * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
3113 2009-08-16 Uros Bizjak <ubizjak@gmail.com>
3115 * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
3116 from prev_active_insn.
3118 2009-08-16 Anatoly Sokolov <aesok@post.ru>
3120 * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
3121 * config/avr/avr.c (avr_override_options): Initialize
3122 avr_current_arch variable.
3123 (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
3124 __AVR_HAVE_16BIT_SP__ according to the device type.
3125 (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
3127 (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
3128 Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
3130 2009-08-16 Dodji Seketeli <dodji@redhat.com>
3133 * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
3134 generating inlined subroutine die only. We shouldn't be
3135 called for anything else.
3136 (gen_block_die): Don't generate inline subroutine debug info for
3139 2009-08-15 Sebastian Pop <sebastian.pop@amd.com>
3141 * graphite-poly.c (print_pbb): Print PBB index.
3143 2009-08-15 Sebastian Pop <sebastian.pop@amd.com>
3146 * graphite-interchange.c (ppl_max_for_le): Moved...
3147 * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
3148 * graphite-ppl.c (ppl_max_for_le): ... here. Correct the use of
3149 ppl_Pointset_Powerset_C_Polyhedron_maximize.
3150 * graphite-ppl.h (ppl_max_for_le): Declared.
3152 2009-08-14 Olatunji Ruwase <tjruwase@google.com>
3154 * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
3155 supported on all platforms.
3156 * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
3157 * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
3158 * c-pragma.c: Likewise.
3159 * target-def.h (TARGET_INITIALIZER): Remove
3160 TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
3161 * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
3163 2009-08-14 Douglas B Rupp <rupp@gnat.com>
3165 * config/ia64/fde-vms.c: New file.
3166 * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
3167 * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
3168 (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
3169 (uw_frame_state_for): Only register a personality routine if it is
3170 known to be compatible with our expectations.
3171 (_Unwind_FindEnclosingFunction, uw_frame_state_for):
3172 Declare unw_table_entry stack variable and
3173 mod all calls to _Unwind_FindTableEntry to add arg.
3174 * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
3175 (_Unwind_FindTableEntry): Add arg to prototype.
3177 2009-08-14 Eric Botcazou <ebotcazou@adacore.com>
3179 * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
3180 field 'signal_pfs_loc'.
3181 (uw_frame_state_for): Remove duplicate code dealing with leaf
3182 procedures without unwind info.
3183 If in the frame after unwinding through a signal handler, restore
3184 the AR.PFS register instead of the CFM if AR.PFS has not been saved.
3185 * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
3186 'pfs_loc' to the AR.PFS location in the signal context; instead
3187 set 'signal_pfs_loc'.
3188 Manually generate the unwind info for the AR.PFS register.
3189 (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
3190 ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
3191 (ia64_handle_unwabi): Test 'fs->unwabi' against them.
3192 Do not set 'pfs_loc' to the AR.PFS location in the signal context;
3193 instead set 'signal_pfs_loc'.
3194 Remove code preventing the AR.PFS register from being restored
3195 from the signal context.
3197 2009-08-14 Douglas B Rupp <rupp@gnat.com>
3198 Tristan Gingold <gingold@adacore.com>
3200 * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
3201 * config/ia64/t-vms: New file.
3202 * config/ia64/vms64.h: New file.
3203 * config/ia64/vms.h: New file.
3204 * config/ia64/vms-crtinit.asm: New file.
3205 * config/ia64/vms_symvec_libgcc_s.opt: New file.
3206 * config/ia64/vms-unwind.h: New file.
3208 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
3210 * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
3213 2009-08-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3216 * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
3218 * real.h (do_mpc_arg2): ... here.
3219 * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
3222 2009-08-14 Rafael Avila de Espindola <espindola@google.com>
3224 * final.c (add_debug_prefix_map): Don't use GC memory for
3225 old_prefix and new_prefix.
3227 2009-08-14 Richard Guenther <rguenther@suse.de>
3229 * ipa-prop.c (compute_complex_pass_through): If we cannot
3230 compute a non-varying offset for IPA_JF_ANCESTOR punt.
3232 2009-08-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
3234 * c-lex.c (c_lex_with_flags): Increase size of local variable
3235 to avoid memory clobber.
3237 2009-08-14 Paolo Bonzini <bonzini@gnu.org>
3240 * config/i386/i386.c (ix86_fp_comparison_strategy):
3241 Only enable/disable sahf at function granularity.
3243 2009-08-14 Hans-Peter Nilsson <hp@axis.com>
3245 PR rtl-optimization/41064
3246 * reload1.c (reload_as_needed): Don't call extract_insn
3247 for known invalid replacements after calling
3248 validate_replace_rtx_group and verify_changes.
3250 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
3253 * config/i386/sse.md (SSEMODE124C8): New mode iterator.
3254 (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
3255 ix86_expand_fp_vcond.
3256 (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
3257 Assert that operation is supported by ix86_expand_int_vcond.
3258 (vcondu<SSEMODE124C8:mode>): Ditto.
3260 2009-08-13 DJ Delorie <dj@redhat.com>
3262 * config/i386/djgpp-stdint.h: New.
3263 * config.gcc (djgpp): Use it.
3265 2009-08-13 Kaz Kojima <kkojima@gcc.gnu.org>
3267 * config/sh/sh.c (sh_override_options): When flag_exceptions or
3268 flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
3270 2009-08-13 Ghassan Shobaki <ghassan.shobaki@amd.com>
3272 * tree-ssa-loop-prefetch.c
3273 (prune_ref_by_group_reuse): Enhance probabilistic analysis
3274 for long-stride pruning.
3275 (compute_miss_rate): New function to compute the probability
3276 that two memory references access different cache lines.
3278 2009-08-13 Dave Korn <dave.korn.cygwin@gmail.com>
3280 * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
3282 2009-08-13 Richard Guenther <rguenther@suse.de>
3285 * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
3286 use the constant pointer type.
3287 * gimplify.c (canonicalize_addr_expr): Canonicalize independent
3288 of CV qualifiers on the target pointer type.
3289 * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
3290 conversion check before restrict check.
3292 2009-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
3295 * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
3297 2009-08-12 Kaz Kojima <kkojima@gcc.gnu.org>
3299 * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
3301 2009-08-12 Richard Guenther <rguenther@suse.de>
3303 PR tree-optimization/41011
3304 * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
3305 and reference constructing.
3307 2009-08-12 Xinliang David Li <davidxl@google.com>
3309 PR tree-optimization/41012
3310 * tree-flow.h : New external interface.
3311 * gimple-low.c (check_call_arg): Change to public function.
3312 Remove argument mismatch check in lowering.
3313 * tree-inline.h (tree_can_inline_p): Interface change.
3314 * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
3316 * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
3317 Call change to tree_can_inline_p function.
3318 (cgraph_decide_inlining_incrementally): Ditto.
3320 2009-08-12 Richard Sandiford <rdsandiford@googlemail.com>
3322 PR tree-optimization/41031
3323 * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
3324 on the partition variable rather than promote_mode on the source
3325 type. Assert that the partition variable's type has the same
3326 mode as the source value's.
3328 2009-08-12 Paolo Bonzini <bonzini@gnu.org>
3330 * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
3331 for for_return == 2.
3332 * function.c (assign_parm_setup_reg): Use for_return == 2, improve
3334 * calls.c (expand_call): Fix typo.
3335 * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
3337 * stmt.c (expand_value_return): Use promote_function_mode to copy out
3339 * targhooks.c (default_promote_function_mode): Handle for_return == 2.
3340 * config/cris/cris.c (cris_promote_function_mode): Likewise.
3341 * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
3342 * config/pa/pa.c (pa_promote_function_mode): Likewise.
3344 2009-08-12 Andrew Haley <aph@redhat.com>
3346 * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
3348 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
3351 * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
3353 2009-08-12 Richard Guenther <rguenther@suse.de>
3355 * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
3356 * gimplify.c (gimplify_modify_expr): Do not use
3357 lang_hooks.types_compatible_p.
3358 * tree-ssa.c (useless_type_conversion_p): For aggregates
3359 just return false if the canonical types differ.
3361 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
3364 * sese.c (convert_for_phi_arg): New.
3365 (add_guard_exit_phis): Use convert_for_phi_arg.
3367 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
3369 * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
3370 unknown subscript upper bounds.
3372 2009-08-12 Sebastian Pop <sebastian.pop@amd.com>
3373 Pranav Garg <pranav.garg2107@gmail.com>