OSDN Git Service

2009-09-08 Kai Tietz <kai.tietz@onevision.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
2
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
6         pointer type.
7         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
8         pointer to scalar.
9         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
10         from pointer to unsigned via uintptr_t.
11
12         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
13         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
14         and HAVE_INTPTR_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.
21
22 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
23
24         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
25         variables.
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.
34
35 2009-09-08  Jan Hubicka  <jh@suse.cz>
36
37         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
38         * params.def (early-inlining-insns): Likewise.
39
40 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
41
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
45         lists.
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.
53
54 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
55
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
62         "load".
63         (insn_reservation "loadsp"): New.
64         (insn_reservation "load_stall1"): New.
65         (insn_reservation "load_stall3"): New.
66         (stall): New insn.      
67         * config/bfin/predicates.md (const1_operand, const3_operand): New.
68         (mem_p_address_operand): Exclude stack and frame pointer based
69         addresses.
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.
75
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.
80
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,
85         bf548m, and bf549m.
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.
96
97         From Jie Zhang <jie.zhang@analog.com>:
98         * config/bfin/predicates.md (p_register_operand): New
99         predicate.
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
104         all cpus.
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
108         P register.
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
119         around 05000074.
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.
127
128 2009-09-07  Martin Jambor  <mjambor@suse.cz>
129
130         PR middle-end/41282
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.
135
136 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
137
138         PR c++/41214
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.
142
143 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
144
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.
147
148 2009-09-07  Nick Clifton  <nickc@redhat.com>
149
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.
159
160 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
161
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.
166
167 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
168
169         PR bootstrap/41241
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.
174
175 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
176
177         PR bootstrap/41241
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
187         reflist.
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.
193
194 2009-09-06  Richard Guenther  <rguenther@suse.de>
195
196         PR middle-end/41144
197         * tree.c (build_array_type): Do not record types marked
198         with structural equality in the canonical type hashtable.
199
200 2009-09-06  Richard Guenther  <rguenther@suse.de>
201
202         PR middle-end/41261
203         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
204
205 2009-09-05  Richard Guenther  <rguenther@suse.de>
206
207         PR middle-end/41181
208         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
209
210 2009-09-05  Richard Guenther  <rguenther@suse.de>
211
212         PR debug/41273
213         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
214
215 2009-09-05  Richard Guenther  <rguenther@suse.de>
216
217         PR middle-end/41271
218         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
219         before comparing function argument types.
220
221 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
222
223         PR target/41024
224         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
225         the assembler.
226
227 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
228
229         Revert:
230         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
231
232         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
233         locators before emit_insn is called.
234
235 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
236
237         PR bootstrap/41241
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.
241
242 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
243
244         PR target/41262
245         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
246         NONDEBUG_INSN_P instead of INSN_P.
247
248 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
249
250         PR debug/41225
251         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
252
253 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
254
255         PR target/41252
256         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
257         pattern of the split.
258
259 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
260
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
265         are enabled.
266
267 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
268
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.
275
276 2009-09-04  Richard Guenther  <rguenther@suse.de>
277
278         PR middle-end/41257
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
284         necessary check.
285         (finish_aliases_1): Adjust check for thunk aliases.
286
287 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
288
289         * config/arm/arm.md (ctzsi2): Added braces
290         to avoid warning that broke booststrap.
291
292 2009-09-04  Martin Jambor  <mjambor@suse.cz>
293
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.
299
300 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
301
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.
317
318 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
319
320         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
321         RTXs in the predicate for operand 1.
322
323 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
324
325         * config/arm/arm.md (UNSPEC_RBIT): New constant.
326         (rbitsi2): New insn.
327         (ctzsi2): New expand.
328         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
329
330 2009-09-03  Martin Jambor  <mjambor@suse.cz>
331
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.
336
337 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
338
339         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
340         of INSN_P.
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.
346
347 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
348
349         PR bootstrap/41241
350         * ira.c (update_equiv_reg): Remove check on class likely spill.
351
352 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
353
354         PR debug/41236
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
357         it or SUBREG.
358
359         PR debug/41238
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.
364
365 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
366
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
370         0.
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.
375
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.
382         (do_link): Likewise.
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
388         gen_return_internal.
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
394         RETS.
395         (return_internal): Take a reg rtx rather than the register number.
396
397 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
398
399         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
400         when comparing against estimated_loop_iterations_int return.
401
402 2009-09-03  Richard Guenther  <rguenther@suse.de>
403
404         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
405         eh_personality_libfunc.
406
407 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
408
409         * tree-parloops.c (separate_decls_in_region): Add space.
410
411 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
412
413         * tree-parloops.c (separate_decls_in_region): Change the condition
414         checking if there are reductions in the loop.
415
416 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
417
418         PR tree-optimization/38275
419         * tree-parloops.c (parallelize_loops): Replace profitability condition
420         for expected number of iterations.
421
422 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
423
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,
427         make it add to it.
428
429 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
430
431         * doc/invoke.texi (Optimize Options): Move
432         -finline-small-functions to the -O2 list.
433
434 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
435
436         * toplev.c (process_options): Enable var-tracking-assignments
437         by default if var-tracking is enabled.
438
439 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
440
441         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
442         barrier.
443         * emit-rtl.c (prev_nonnote_insn_bb): New function.
444         * rtl.h (prev_nonnote_insn_bb): Declare it.
445
446 2009-09-03  Diego Novillo  <dnovillo@google.com>
447
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.
451
452 2009-09-03  Diego Novillo  <dnovillo@google.com>
453
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.
467
468 2009-09-03  Richard Guenther  <rguenther@suse.de>
469             Diego Novillo  <dnovillo@google.com>
470
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
478         by thunks.
479
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>
485
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.
503
504 2009-09-03  Diego Novillo  <dnovillo@google.com>
505
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.
525
526 2009-09-03  Diego Novillo  <dnovillo@google.com>
527
528         * c-lang.c (lang_hooks): Remove const qualifier.
529
530 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
531
532         * doc/install.texi (*-*-freebsd*): Update target information.
533
534 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
535
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
541         call_fixed_regs.
542
543 2009-09-01  Michael Matz  <matz@suse.de>
544
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
550         useless.
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.
575
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.
581
582 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
583
584         * doc/invoke.texi (-fsched-pressure): Document it.
585         (-fsched-reg-pressure-heuristic): Remove it.
586
587         * reload.c (ira.h): Include.
588         (find_reloads): Add choosing reload on number of small spilled
589         classes.
590
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
599         functions.
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
608         info.
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.
619
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.
625
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.
629
630         * common.opt (fsched-pressure): New options.
631         (fsched-reg-pressure-heuristic): Remove.
632
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.
637
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.
655
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.
663
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
667         total_allocno_costs.
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.
672         (COST_INDEX): New.
673         (record_reg_classes): Set allocno attributes only if allocno_p.
674         (record_address_regs): Ditto.  Use COST_INDEX instead of
675         ALLOCNO_NUM.
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
689         COSTS_OF_ALLOCNO.
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.
694
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.
699
700         * sched-int.h (struct deps_reg): New member implicit_sets.
701         (sched_pressure_p, sched_regno_cover_class): New external
702         definitions.
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
715         macros.
716         (sched_init_region_reg_pressure_info,
717         sched_setup_bb_reg_pressure_info): New prototypes.
718
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.
726
727         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to the
728         dependencies.
729
730         * sched-rgn.c (deps_join): Set up implicit_sets.
731         (schedule_region): Set up region and basic blocks pressure
732         relative info.
733
734         * passes.c (init_optimization_passes): Move
735         pass_subregs_of_mode_init before pass_sched.
736
737 2009-09-02  Martin Jambor  <mjambor@suse.cz>
738
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
742         multiple times.
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.
747
748 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
749
750         * tree-object-size.c (addr_object_size): Always use object_size_type
751         0 or 2 when determining the pointer pointed object size.
752
753 2009-09-02  Richard Guenther  <rguenther@suse.de>
754
755         Revert
756         2009-08-31  Richard Guenther  <rguenther@suse.de>
757
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.
764
765 2009-08-01  Christian Bruel  <christian.bruel@st.com>
766
767         Revert:
768         2009-07-31  Christian Bruel  <christian.bruel@st.com>
769         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
770
771 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
772
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
784         DEBUG_INSNS.
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.
861         (priority): Use it.
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.
875         (check_cfg): Use it.
876         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
877         stmts.
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
887         debug insns.
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
894         searching back.
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
909         are heads of blocks.
910         (compute_av_set_inside_bb): Skip debug insns.
911         (sel_rank_for_schedule): Schedule debug insns first.  Remove
912         dead code.
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
922         debug insns.
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.
930         (DEBUG_INSN): New.
931         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug
932         stmts.
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
973         val_const_double.
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
979         DW_OP_stack_value.
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
999         in its expression.
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
1003         stmt.
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.
1011         Pass it on.
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
1037         VAR_LOCATIONs.
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.
1094         (emit): 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
1111         debug bind stmts.
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
1139         useless.
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
1172         into debug stmts.
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
1181         dominators.
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.
1190         Skip debug insns.
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
1194         insns.
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
1259         mapping.
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
1285         debug insns.
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
1293         MO_VAL_SET.
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.
1304         (valvar_pool): New.
1305         (scratch_regs): New.
1306         (cselib_hook_called): New.
1307         (dv_is_decl_p): New.
1308         (dv_is_value_p): New.
1309         (dv_as_decl): New.
1310         (dv_as_value): New.
1311         (dv_as_opaque): New.
1312         (dv_onepart_p): New.
1313         (dv_pool): 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.
1339         (val_store): New.
1340         (val_reset): New.
1341         (val_resolve): New.
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.
1349         (loc_cmp): 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
1369         more verbose.
1370         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
1371         if not needed.
1372         (track_loc_p): Pass it true.
1373         (struct count_use_info): New.
1374         (find_use_val): New.
1375         (replace_expr_with_values): New.
1376         (log_op_type): 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
1426         cselib.
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
1440         static inlines.
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
1447         passed in slot.
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
1469         end.
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
1497         debug insns.
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
1501         insns.
1502         (compute_priorities): Likewise.
1503         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
1504         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
1505         all callers.
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
1542         debug stmts.
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
1547         insns.
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
1576         debug stmts.
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
1586         them later.
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.
1591
1592 2009-09-01  Richard Henderson  <rth@redhat.com>
1593
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.
1598
1599 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
1600
1601         PR bootstrap/41205
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.
1607
1608 2009-09-01  Richard Guenther  <rguenther@suse.de>
1609
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.
1621
1622 2009-09-01  Richard Guenther  <rguenther@suse.de>
1623
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.
1632
1633 2009-08-31  Chris Demetriou  <cgd@google.com>
1634
1635         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
1636         vectorize if not TARGET_SSE2.
1637
1638 2009-08-31  DJ Delorie  <dj@redhat.com>
1639
1640         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
1641         registers if no coprocessor is enabled.
1642
1643 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
1644
1645         PR debug/30161
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
1661         DINFO_LEVEL_TERSE.
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
1667         tests.
1668         (tree_add_const_value_attribute): Make this work for constant
1669         expressions only.
1670         tree_add_const_value_attribute_for_decl is to be used for variable
1671         DECLs now.
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
1676         emitted.
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.
1686
1687 2009-08-31  DJ Delorie  <dj@redhat.com>
1688
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
1692         cached values.
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.
1700
1701 2009-08-31  Richard Guenther  <rguenther@suse.de>
1702
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.
1709
1710 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
1711
1712         * doc/install.texi (Final install): Adjust reference on where to
1713         order printed manuals.
1714
1715 2009-08-30  Olivier Hainque  <hainque@adacore.com>
1716
1717         * dwarf2out.c (switch_to_frame_table_section): Move
1718         definition prior to first use.
1719
1720 2009-08-30  Richard Guenther  <rguenther@suse.de>
1721
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.
1731
1732 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
1733
1734         PR target/41081
1735         * fwprop.c (get_reg_use_in): Delete.
1736         (free_load_extend): New function.
1737         (forward_propagate_subreg): Use it.
1738
1739 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
1740
1741         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
1742
1743 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
1744
1745         PR/41184
1746         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
1747         padding.
1748
1749 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
1750
1751         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
1752         fini or fini_array section.
1753
1754 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1755
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.
1766
1767 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1768
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.
1776         (PDR_NB_REFS): New.
1777         (new_poly_dr): Number of subscripts is a graphite_dim_t.
1778
1779 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1780
1781         PR middle-end/40965
1782         * graphite-poly.c (apply_poly_transforms): Remove legality test before
1783         any transform.
1784
1785 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1786
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.
1790         (pdr_read_p): New.
1791         (pdr_write_p): New.
1792         (pdr_may_write_p): New.
1793
1794 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1795
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.
1801
1802 2009-08-28  Cary Coutant  <ccoutant@google.com>
1803
1804         PR debug/41063
1805         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
1806         struct/union/enum types local to a function.
1807
1808 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
1809             Sebastian Pop  <sebastian.pop@amd.com>
1810
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.
1825
1826 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
1827
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.
1833
1834 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1835
1836         * graphite-dependences.c (pddr_original_scattering): New.
1837         (graphite_legal_transform_dr): Call pddr_original_scattering.
1838         (dot_deps_1): New.
1839         (dot_deps): New.
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.
1844         (PDR_ID): New.
1845         (pbb_index): New.
1846         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
1847
1848 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1849
1850         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
1851         not delete the original dependence relation.
1852
1853 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1854
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.
1862         Remove fprintfs.
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.
1870         (PDDR_KIND): New.
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.
1876
1877 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1878
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.
1882
1883 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
1884
1885         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
1886         (graphite_legal_transform_bb): Same.
1887         (poly_drs_may_alias_p): Same.
1888
1889 2009-08-28  Richard Guenther  <rguenther@suse.de>
1890
1891         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
1892
1893 2009-08-28  Jan Beulich  <jbeulich@novell.com>
1894
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
1899         declaration.
1900         (OVERRIDE_OPTIONS): Delete definition.
1901         (SUBTARGET_OVERRIDE_OPTIONS): Define.
1902         (ASM_COMMENT_START): Define.
1903         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
1904
1905 2009-08-28  Jan Beulich  <jbeulich@novell.com>
1906
1907         * configure.ac: For in-tree ld, do a plain version check to
1908         determine whether comdat groups are supported.
1909         * configure: Regenerate.
1910
1911 2009-08-28  Olivier Hainque  <hainque@adacore.com>
1912
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
1930         section.
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
1938         frame section.
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
1941         section.
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.
1946
1947 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1948
1949         * config/sh/sh.c (split_branches): Check the result of
1950         next_active_insn.
1951
1952 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
1953
1954         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
1955         using -pthread -fopenmp
1956
1957 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
1958
1959         * doc/service.texi (service directory): Update URL.
1960
1961 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
1962
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.
1966
1967 2009-08-27  Tristan Gingold  <gingold@adacore.com>
1968             Douglas B Rupp  <rupp@gnat.com>
1969
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"
1973         attribute.
1974         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
1975         for common_object.
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.
1982
1983 2009-08-27  Michael Matz  <matz@suse.de>
1984
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
2007         full expression.
2008
2009 2009-08-27  Richard Guenther  <rguenther@suse.de>
2010
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.
2019
2020 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
2021
2022         PR debug/41170
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.
2026
2027 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
2028
2029         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
2030         switch.
2031
2032 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
2033
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.
2092
2093 2009-08-26  Richard Guenther  <rguenther@suse.de>
2094
2095         PR middle-end/41163
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
2099         verification.
2100         * tree-ssa.c (useless_type_conversion_p): Conversions to
2101         pointers to unprototyped functions are useless.
2102
2103 2009-08-26  Richard Guenther  <rguenther@suse.de>
2104
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.
2109
2110 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
2111
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.
2125
2126 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
2127
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.
2134
2135 2009-08-25 Jan Hubicka  <jh@suse.cz>
2136
2137         * config/i386/bmmintrin.h: Replace by #error.
2138
2139         Revert:
2140         Michael Meissner  <michael.meissner@amd.com>
2141         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2142         Tony Linthicum  <tony.linthicum@amd.com>
2143
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.
2151
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.
2155
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
2160         instructions.
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
2373         intrinsics.
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.
2384
2385         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2386         declaration.
2387         (ix86_expand_sse5_pack): Ditto.
2388         (ix86_sse5_valid_op_p): Ditto.
2389         (ix86_expand_sse5_multiple_memory): Ditto.
2390
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.
2402         (PCOM_TRUE): Ditto.
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
2409         types.
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.
2423
2424         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2425         (SSEMODEF4): Ditto.
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.
2452         (mulv4si3): Ditto.
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
2460         be generated.
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.
2533
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.
2541
2542         * doc/invoke.texi (-msse5): Add documentation.
2543         (-mfused-madd): Ditto.
2544
2545         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
2546
2547         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
2548         mmintrin-common.h.
2549         (x86_64-*-*): Ditto.
2550
2551         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
2552
2553         * config/i386/bmmintrin.h: New file, provide common x86 compiler
2554         intrinisics for SSE5.
2555
2556         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
2557         mmintrin-common.h.
2558
2559         * config/i386/mmintrin-common.h: New file, to contain common
2560         instructions between SSE4.1 and SSE5.
2561
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.
2565
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.
2569
2570 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
2571
2572         * c-common.c (c_common_reswords) add the alignof keyword,
2573         with same RID as __alignof and __alignof__
2574
2575 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
2576
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.
2588
2589         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
2590         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
2591         Define macro.
2592         (alpha_vms_can_eliminate): Declare as static, change return type to
2593         bool.
2594         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
2595
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.
2599
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.
2604
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.
2608
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.
2612
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.
2616
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.
2620
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.
2624
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.
2629
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.
2633
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.
2637
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.
2641
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.
2645
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.
2649
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.
2653
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.
2657
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.
2661
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.
2666
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.
2670
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.
2675
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.
2679
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.
2683
2684 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
2685
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.
2689
2690 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
2691
2692         * gimplify.c (prepare_gimple_addressable): New static function.
2693         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
2694         it addressable.
2695         (gimplify_addr_expr): Invoke it similarly on the operand instead of
2696         manually fiddling with it.
2697
2698 2009-08-25  Michael Matz  <matz@suse.de>
2699
2700         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
2701         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
2702         full expression.
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
2709         comparisons.
2710
2711 2009-08-25  Michael Matz  <matz@suse.de>
2712
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
2720         of full expression.
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.
2731
2732 2009-08-25  Michael Matz  <matz@suse.de>
2733
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.
2737
2738 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
2739
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.
2748
2749 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
2750
2751         PR middle-end/41149
2752         * tree-pretty-print.c (print_call_name): Print the correct call name
2753         for procedure pointer components.
2754
2755 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
2756
2757         * config/ia64/ia64.c (ia64_promote_function_mode): Call
2758         default_promote_function_mode when not VMS.
2759
2760 2009-08-24  Olivier Hainque  <hainque@adacore.com>
2761
2762         * convert.c (convert_to_integer): Don't assume an input pointer is
2763         POINTER_SIZE wide.  Fetch from the type instead.
2764
2765 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2766
2767         * configure.ac (AC_PREREQ): Bump to 2.64.
2768
2769 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
2770
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.
2774
2775 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2776
2777         * config/arm/arm.c (output_return_instruction): Handle for
2778         unified syntax.
2779
2780 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2781
2782         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
2783
2784 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2785
2786         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
2787         (*arm_movdf_vfp): Likewise.
2788
2789 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2790
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.
2794
2795 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
2796
2797         PR/40786
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.
2811
2812 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
2813
2814         PR target/40718
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.
2819
2820 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
2821
2822         PR target/41081
2823         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
2824         ashrsi3_64): New.
2825
2826 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
2827
2828         PR target/41081
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
2832         or sign_extend.
2833
2834 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
2835
2836         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
2837         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
2838
2839 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2840
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,
2849         M4 to 1.4.6.
2850
2851         * aclocal.m4: Regenerate.
2852         * config.in: Regenerate.
2853         * configure: Regenerate.
2854
2855 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
2856             Olivier Hainque  <hainque@adacore.com>
2857
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.
2888
2889 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
2890
2891         PR target/40671
2892         * config/rs6000/rs6000.c (rs6000_override_options): Use
2893         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
2894
2895         PR target/41145
2896         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
2897         reporting of vector + decimal/boolean/complex error.
2898
2899 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
2900
2901         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
2902         __vector double TYPE_DECL.
2903
2904 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
2905
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.
2910
2911 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
2912
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.
2917
2918 2009-08-20  Matt Rice  <ratmice@gmail.com>
2919             Diego Novillo  <dnovillo@google.com>
2920
2921         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
2922         tree-ssa-sccvn.h.
2923
2924 2009-08-20  Richard Guenther  <rguenther@suse.de>
2925
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
2937         like c-tree.h.
2938
2939 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
2940
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.
2944
2945 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
2946
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.
2952
2953 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
2954
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.
2958
2959 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2960             Richard Earnshaw  <richard.earnshaw@arm.com>
2961
2962         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
2963         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
2964
2965 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2966
2967         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
2968         patterns.
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.
2971
2972 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
2973
2974         PR middle-end/41123
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.
2977
2978 2009-08-19  Jason Merrill  <jason@redhat.com>
2979
2980         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
2981         supported template depth in C++0x.
2982
2983 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
2984
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.
2994
2995 2009-08-19  Ian Lance Taylor  <iant@google.com>
2996
2997         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
2998         of (plus (mult (neg B) C) A).
2999
3000 2009-08-18  Michael Matz  <matz@suse.de>
3001
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.
3009
3010 2009-08-18  Michael Matz  <matz@suse.de>
3011
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.
3015
3016 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
3017
3018         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
3019         locators before emit_insn is called.  Remove assert that
3020         cfun->is_thunk.
3021         (alpha_end_function): Clear crtl->emit structure and free insn
3022         locators if cfun->is_thunk is true.
3023
3024 2009-08-18  Jason Merrill  <jason@redhat.com>
3025
3026         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
3027         type if available.
3028         * configure.ac: Test for it.
3029         * configure, config.in: Regenerate.
3030         * doc/install.texi: Document --enable-gnu-unique-object.
3031
3032 2009-08-18  Richard Guenther  <rguenther@suse.de>
3033
3034         PR middle-end/41094
3035         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
3036         pow(x,y*z) only if x is nonnegative.
3037
3038 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
3039
3040         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
3041         on jumps.
3042
3043         PR target/40971
3044         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
3045         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
3046
3047 2009-08-17  DJ Delorie  <dj@redhat.com>
3048
3049         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
3050         * config/m32c/prologue.md (epilogue_freit): New.
3051         (fset_b): 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
3064         fast_interrupt.
3065
3066 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
3067
3068         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
3069         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
3070
3071 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
3072
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.
3076
3077 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
3078
3079         PR target/38599
3080         * config/mips/mips.md (*lwxs): Use :P for pointer values.
3081
3082 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
3083
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
3087         with...
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.
3112
3113 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
3114
3115         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
3116         from prev_active_insn.
3117
3118 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
3119
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
3126         TARGET_TINY_STACK.
3127         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
3128         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
3129
3130 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
3131
3132         PR debug/37801
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
3137         abstract blocks.
3138
3139 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
3140
3141         * graphite-poly.c (print_pbb): Print PBB index.
3142
3143 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
3144
3145         PR middle-end/40981
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.
3151
3152 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
3153
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.
3162
3163 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
3164
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.
3176
3177 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
3178
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.
3196
3197 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
3198             Tristan Gingold  <gingold@adacore.com>
3199
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.
3207
3208 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
3209
3210         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
3211         TFmode compares.
3212
3213 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3214
3215         PR middle-end/30789
3216         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
3217         Move declaration...
3218         * real.h (do_mpc_arg2): ... here.
3219         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
3220         and RDIV_EXPR.
3221
3222 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
3223
3224         * final.c (add_debug_prefix_map): Don't use GC memory for
3225         old_prefix and new_prefix.
3226
3227 2009-08-14  Richard Guenther  <rguenther@suse.de>
3228
3229         * ipa-prop.c (compute_complex_pass_through): If we cannot
3230         compute a non-varying offset for IPA_JF_ANCESTOR punt.
3231
3232 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3233
3234         * c-lex.c (c_lex_with_flags): Increase size of local variable
3235         to avoid memory clobber.
3236
3237 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
3238
3239         PR target/40934
3240         * config/i386/i386.c (ix86_fp_comparison_strategy):
3241         Only enable/disable sahf at function granularity.
3242
3243 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
3244
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.
3249
3250 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
3251
3252         PR target/41019
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.
3259
3260 2009-08-13  DJ Delorie  <dj@redhat.com>
3261
3262         * config/i386/djgpp-stdint.h: New.
3263         * config.gcc (djgpp): Use it.
3264
3265 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
3266
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.
3269
3270 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3271
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.
3277
3278 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
3279
3280         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
3281
3282 2009-08-13  Richard Guenther  <rguenther@suse.de>
3283
3284         PR middle-end/41047
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.
3291
3292 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3293
3294         PR target/41029
3295         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
3296
3297 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3298
3299         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
3300
3301 2009-08-12  Richard Guenther  <rguenther@suse.de>
3302
3303         PR tree-optimization/41011
3304         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
3305         and reference constructing.
3306
3307 2009-08-12  Xinliang David Li  <davidxl@google.com>
3308
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
3315         into this function.
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.
3319
3320 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
3321
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.
3327
3328 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
3329
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
3333         comments.
3334         * calls.c (expand_call): Fix typo.
3335         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
3336         and PARM_DECL.
3337         * stmt.c (expand_value_return): Use promote_function_mode to copy out
3338         of pseudo.
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.
3343
3344 2009-08-12  Andrew Haley  <aph@redhat.com>
3345
3346         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
3347
3348 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3349
3350         PR bootstrap/40103
3351         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
3352
3353 2009-08-12  Richard Guenther  <rguenther@suse.de>
3354
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.
3360
3361 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3362
3363         PR middle-end/40980
3364         * sese.c (convert_for_phi_arg): New.
3365         (add_guard_exit_phis): Use convert_for_phi_arg.
3366
3367 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3368
3369         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
3370         unknown subscript upper bounds.
3371
3372 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
3373             Pranav Garg  <pranav.garg2107@gmail.com>
3374
3375         * graphit