OSDN Git Service

2009-12-15 Paolo Bonzini <bonzini@gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-15  Paolo Bonzini  <bonzini@gnu.org>
2             Shujing Zhao  <pearly.zhao@oracle.com>
3
4         * intl.c (get_spaces): New.
5         * intl.h (get_spaces): New.
6
7 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
8
9         PR bootstrap/42369
10         * config/i386/i386.c (ix86_expand_special_args_builtin): Avoid
11         using switch with CODE_FOR_lwp_lwp* cases.
12
13         * config/i386/i386-builtin-types.def (PVOID_FTYPE_VOID): Use
14         DEF_FUNCTION_TYPE (PVOID) instead of DEF_FUNCTION_TYPE (PVOID, VOID).
15
16 2009-12-14  Eric Botcazou  <ebotcazou@adacore.com>
17
18         * cfgexpand.c (expand_debug_expr) <INDIRECT_REF>: Remove overzealous
19         assertion and useless code.
20         <TARGET_MEM_REF>: Likewise.
21
22 2009-12-14  Alexandre Oliva  <aoliva@redhat.com>
23
24         PR debug/41473
25         * dwarf2out.c (AT_loc_list_ptr): New.
26         (resolve_addr): Remove unresolved attributes and loc_list entries.
27
28         PR debug/41473
29         * dwarf2out.c (add_var_loc_to_decl): Don't drop initial empty
30         locations.
31         (new_loc_list): Drop gensym arg.  Move generation of ll_symbol...
32         (gen_llsym): ... here.  New function.
33         (add_loc_descr_to_loc_list): Removed.
34         (loc_descriptor): Infer mode from CONST_DOUBLEs and CONST_VECTORs.
35         (single_element_loc_list): Removed.
36         (dw_loc_list): Don't create entries without a location.  Don't
37         special-case the first node of the list, only single nodes.
38         (single_element_loc_list_p): Simplify.
39         (loc_list_from_tree): Don't use DECL_RTL if loc_list is nonempty.
40         (add_location_or_const_value_attribute): Test var loc for NULL.
41         (convert_cfa_to_fb_loc_list): Adjust calls to new new_loc_list,
42         call gen_llsym if needed.
43
44 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
45
46         * cgraph.h (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
47         cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
48         prototypes.
49         * cgraph.c (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
50         cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
51         functions.
52         * except.h (set_nothrow_function_flags): Remove prototype.
53         * except.c (set_nothrow_function_flags): Use cgraph_set_nothrow_flag.
54         Make static.
55         * ipa-pure-const.c (propagate): Use cgraph_set_nothrow_flag,
56         cgraph_set_readonly_flag, cgraph_set_pure_flag
57         and cgraph_set_looping_const_or_pure_flag.
58         (local_pure_const): Likewise.
59
60 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
61             Sebastian Pop  <sebastian.pop@amd.com>
62
63         * config/i386/i386-builtin-types.def (PVOID): Declared.
64         (VOID_FTYPE_PVOID): Declared.
65         (PVOID_FTYPE_VOID): Declared.
66         (UCHAR_FTYPE_USHORT_UINT_USHORT): Removed.
67         (VOID_FTYPE_USHORT_UINT_USHORT): Removed.
68         * config/i386/i386.c (IX86_BUILTIN_LLWPCB16, IX86_BUILTIN_LLWPCB32,
69         IX86_BUILTIN_LLWPCB64, IX86_BUILTIN_SLWPCB16, IX86_BUILTIN_SLWPCB32,
70         IX86_BUILTIN_SLWPCB64, IX86_BUILTIN_LWPVAL16, IX86_BUILTIN_LWPINS16):
71         Removed.
72         (IX86_BUILTIN_LLWPCB, IX86_BUILTIN_SLWPCB): New.
73         (bdesc_special_args): Adjust declaration of __builtin_ia32_llwpcb,
74         __builtin_ia32_slwpcb, __builtin_ia32_lwpval32,
75         __builtin_ia32_lwpval64, __builtin_ia32_lwpins32, and
76         __builtin_ia32_lwpins64.
77         (ix86_expand_special_args_builtin): Handle VOID_FTYPE_PVOID.
78         Do not handle VOID_FTYPE_USHORT_UINT_USHORT and
79         UCHAR_FTYPE_USHORT_UINT_USHORT.  Warn when the third operand is
80         not an immediate.  Also handle builtin functions with 3 arguments.
81         (ix86_expand_builtin): Handle IX86_BUILTIN_LLWPCB and
82         IX86_BUILTIN_SLWPCB.
83         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC, UNSPEC_SLWP_INTRINSIC):
84         Renamed UNSPECV_LLWP_INTRINSIC and UNSPECV_SLWP_INTRINSIC.
85         (memory attribute): Handle lwp.
86         (lwp*): Rewrite all the insn patterns for LWP.
87         * config/i386/lwpintrin.h (__llwpcb16, __llwpcb32, __llwpcb64,
88         __slwpcb16, __slwpcb32, __slwpcb64, __lwpval16, __lwpins16): Removed.
89         (__llwpcb, __slwpcb): New.
90
91 2009-12-14  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
92
93         * dominance.c (set_immediate_dominator): Don't mark as inline.
94
95 2009-12-14  Eric Botcazou  <ebotcazou@adacore.com>
96
97         * doc/tm.texi (STACK_CHECK_PROTECT): Document alternate default.
98         * doc/md.texi (check_stack): Clarify.
99         (probe_stack): Likewise.
100         * config/rs6000/rs6000.md (UNSPEC_PROBE_STACK): New constant.
101         (probe_stack): New insn.
102
103 2009-12-14  Ben Elliston  <bje@au.ibm.com>
104
105         * lto-streamer-in.c (lto_get_builtin_tree): fclass can only be a
106         BUILT_IN_NORMAL or BUILT_IN_MD.
107
108 2009-12-13  Eric Botcazou  <ebotcazou@adacore.com>
109
110         * doc/tm.texi (STACK_CHECK_PROBE_LOAD): Delete.
111         * expr.h (STACK_CHECK_PROBE_LOAD): Likewise.
112         * explow.c (emit_stack_probe): Do not test STACK_CHECK_PROBE_LOAD.
113         * system.h (STACK_CHECK_PROBE_LOAD): Poison.
114
115 2009-12-13  Michael Matz  <matz@suse.de>
116
117         PR tree-optimization/42027
118         * dojump.c (do_jump <TRUTH_AND_EXPR, TRUTH_OR_EXPR>): Go to
119         TRUTH_ANDIF_EXPR resp. TRUTH_ORIF_EXPR expander, instead of
120         falling through.
121
122 2009-12-13  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
123
124         PR target/23726
125         * config/avr/predicates.md (pseudo_register_operand): New predicate
126         for pseudos.
127         * config/avr/avr.md (divmodqi4): Replace with define_insn_and_split
128         to allow div/mod optimization.
129         (udivmodqi4): Ditto.
130         (divmodhi4): Ditto.
131         (udivmodhi4): Ditto.
132         (divmodsi4): Ditto.
133         (udivmodsi4): Ditto.
134
135 2009-12-13  Richard Guenther  <rguenther@suse.de>
136
137         PR tree-optimization/42357
138         * tree-sra.c (sra_modify_assign): Do not tear apart struct copies.
139
140 2009-12-12  Richard Guenther  <rguenther@suse.de>
141
142         * tree.c (need_assembler_name_p): Abstract decls do not need
143         an assembler name.
144         * dwarf2out.c (dwarf2out_abstract_function): Preserve
145         DECL_ABSTRACT properly.
146
147 2009-12-11  Richard Guenther  <rguenther@suse.de>
148
149         * lto-streamer-in.c (lto_input_tree_ref): Do not register
150         DEBUG_EXPR_DECLs with the varpool.
151
152 2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
153
154         * config/sparc/linux-unwind.h (MD_FROB_UPDATE_CONTEXT, 64-bit): Define.
155         (sparc64_frob_update_context): New function.
156
157 2009-12-11  Richard Guenther  <rguenther@suse.de>
158
159         PR lto/41658
160         PR lto/41657
161         * lto-streamer-out.c (write_global_stream): Do not make decls
162         weak but resort to TREE_ASM_WRITTEN to avoid multiple definitions.
163         Make sure to mark all decls that we have written.
164
165 2009-12-11  Sebastian Andrzej Siewior  <bigeasy@linutronix.de>
166
167         PR target/36047
168
169         * config/m68k/linux.h: Remove LABELNO from the mcount statement. It is
170         not used by glibc/uclibc and does not work with large binaries.
171
172 2009-12-11  Richard Guenther  <rguenther@suse.de>
173
174         PR lto/41662
175         * lto-streamer-in.c (lto_init_eh): Move eh_initialized_p
176         handling here.
177         (input_eh_regions): Adjust.
178         (lto_input_ts_function_decl_tree_pointers): Initialize EH
179         if a non-NULL DECL_FUNCTION_PERSONALITY was read in.
180
181 2009-12-11  Duncan Sands  <baldrick@free.fr>
182
183         * passes.c (make_pass_instance): Allocate and copy the right amount of
184         memory for ipa passes, which are not the same size as other passes.
185
186 2009-12-11  Joern Rennecke  <amylaar@spamcop.net>
187
188         * plugin.c (get_named_event_id): Fix hash table rebuild to include
189         dynamically allocated events.
190
191 2009-12-11  Richard Guenther  <rguenther@suse.de>
192
193         PR lto/42320
194         * lto-symtab.c (lto_symtab_resolve_can_prevail_p): Properly
195         detect non-prevailing decls.
196
197 2009-12-10  Jakub Jelinek  <jakub@redhat.com>
198
199         PR c++/42317
200         * cgraph.h (struct cgraph_node): Add same_comdat_group field.
201         * cgraph.c (cgraph_remove_node): Unchain node from same_comdat_group
202         circular list.
203         (cgraph_node_can_be_local_p): Return false for DECL_COMDAT with
204         node->same_comdat_group.
205         * ipa.c (cgraph_remove_unreachable_nodes): For any reachable node
206         mark all its same_comdat_group nodes as also reachable.
207         (cgraph_externally_visible_p): Return true even if any of
208         same_comdat_group nodes has address taken.
209         * lto-cgraph.c (lto_output_node): Stream out same_comdat_group.
210         (output_cgraph): Ensure other same_comdat_group nodes are also
211         included.
212         (input_node): Stream in same_comdat_group.
213         (input_cgraph_1): Fix up same_comdat_group fields from references
214         to pointers.
215         * cgraphunit.c (cgraph_analyze_functions): Mark all other
216         same_comdat_group nodes as reachable.
217         (cgraph_mark_functions_to_output): For each node->process process
218         also other same_comdat_group nodes.
219         * ipa-inline.c (cgraph_clone_inlined_nodes): Don't reuse nodes
220         with same_comdat_group non-NULL.
221         (cgraph_mark_inline_edge): Likewise.
222
223 2009-12-10  Jan Hubicka  <jh@suse.cz>
224
225         PR middle-end/42228
226         PR middle-end/42110
227         * cgraph.c (cgraph_create_edge_including_clones): Add old_stmt
228         parameter; update edge if it already exists.
229         (cgraph_remove_node): Handle correctly cases where we are removing
230         node having clones.
231         * cgraph.h (cgraph_create_edge_including_clones): Declare.
232         (verify_cgraph_node): Add missing error_found = true code.
233         (cgraph_materialize_all_clones): Remove call edges of dead nodes.
234         * ipa.c (cgraph_remove_unreachable_nodes): Correctly look for master
235         clone; fix double linked list removal.
236         * tree-inline.c (copy_bb): Update cgraph_create_edge_including_clones
237         call; fix frequency of newly created edge.
238
239 2009-12-10  Bernd Schmidt  <bernd.schmidt@analog.com>
240
241         PR rtl-opt/42216
242         * regrename.c: Error out if MAX_RECOG_OPERANDS is larger than
243         HOST_BITS_PER_WIDE_INT.
244         (verify_reg_in_set): New function, broken out of verify_reg_tracked.
245         (verify_reg_tracked): Use it.
246         (scan_rtx_reg): When seeing a use involving a superset of the
247         registers in an existing chain, enlarge that chain.  Otherwise,
248         allow subsets and set fail_current_block for all other kinds of
249         overlap.
250         (hide_operands): New argument UNTRACKED_OPERANDS; callers changed.
251         Do not modify operands when the bit with the corresponding number
252         is set in that bitmap.
253         (build_def_use): When we see matching operands with different
254         modes, don't set fail_current_block, but keep track of such
255         operands in a bitmap if their registers aren't already tracked
256         in an open chain.  Pass this bitmap to all hide_operands calls.
257
258 2009-12-10  Richard Guenther  <rguenther@suse.de>
259
260         PR tree-optimization/42337
261         * tree-ssa-pre.c (seen_during_translate): Remove.
262         (phi_translate_1): Collapse into ...
263         (phi_translate): ... this.  Remove seen parameter and
264         adjust recursive calls.
265
266 2009-12-10  Richard Guenther  <rguenther@suse.de>
267         Allan Sandfeld Jensen  <linux@carewolf.com>
268
269         * tree-vectorizer.c (vectorize_loops): Properly guard
270         vectorizer verboseness.
271
272 2009-12-10  Ben Elliston  <bje@au.ibm.com>
273
274         * fwprop.c (free_load_extend): Initialise `use'.
275
276 2009-12-09  David Edelsohn  <edelsohn@gnu.org>
277
278         * builtins.c (do_mpc_ckconv): Pass the component type to
279         real_from_mpfr().
280
281 2009-12-09  Xinliang David Li  <davidxl@google.com>
282
283         PR tree-optimization/42337
284         * tree-ssa-pre.c (phi_translate_1): Push and Pop SEEN set.
285
286 2009-12-09  Nathan Froyd  <froydnj@codesourcery.com>
287
288         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
289         mulv2sf3, divv2sf3): New expanders.
290         * config/rs6000/spe.md (spe_evabs, spe_evand, spe_evaddw, spe_evsubfw,
291         spe_evdivws): Rename to use standard GCC names.
292         * config/rs6000/paired.md (negv2sf, absv2sf2, addv2sf3, subv2sf3,
293         mulv2sf3, divv2sf3): Rename to avoid conflict with the new expanders.
294         * config/rs6000/rs6000.c (bdesc_2arg, bdesc_1arg): Use new CODE_FOR_
295         names for renamed patterns.
296
297 2009-12-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
298
299         * config/s390/s390.md ("copysign<mode>3"): Pattern removed.
300
301 2009-12-09  Jakub Jelinek  <jakub@redhat.com>
302
303         * configure.ac: Compute ld_ver, ld_vers, ld_date, ld_vers_major,
304         ld_vers_minor and ld_vers_path always, not just when gcc_cv_ld_hidden
305         isn't cached.
306         * configure: Regenerated.
307
308 2009-12-08  Richard Henderson  <rth@redhat.com>
309
310         * combine.c (setup_incoming_promotions): Fix sign-extend of
311         zero-extend case; tidy conditions.
312
313 2009-12-08  Michael Matz  <matz@suse.de>
314
315         PR middle-end/38474
316         * function.c (free_temp_slots): Only walk the temp slot
317         addresses and combine slots if we actually changes something.
318         (pop_temp_slots): Ditto.
319
320 2009-12-08  Olga Golovanevsky  <olga@il.ibm.com>
321
322         PR middle-end/41843
323         * ipa-struct-reorg.c (compare_fields): New function.
324         (find_field_in_struct_1): Use compare_fields function.
325         (is_equal_types): Likewise.
326
327 2009-12-07  DJ Delorie  <dj@redhat.com>
328
329         PR c/42312
330         * config/mep/mep.c (mep_expand_prologue): Set
331         really_need_stack_frame after frame_size is set.
332
333 2009-12-07  Richard Henderson  <rth@redhat.com>
334
335         PR rtl-opt/42269
336         * combine.c (setup_incoming_promotions): Improve the conditions
337         under which we respect the promotions applied.
338
339 2009-12-07  Eric Botcazou  <ebotcazou@adacore.com>
340
341         * config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
342         * config/sparc/linux64.h (ASM_SPEC): Likewise.
343
344 2009-12-07  Richard Henderson  <rth@redhat.com>
345
346         PR debug/42299
347         PR debug/42166
348         * tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
349         for ssa names already registered for update.
350
351 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
352
353         PR debug/42244
354         * ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
355         is a DEBUG_INSN.
356
357 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
358
359         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the
360         options when bit_LWP is set.
361
362 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
363
364         * config/i386/cpuid.h (bit_ABM): New.
365         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mabm to the
366         options when bit_ABM is set.
367
368 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
369
370         * config/i386/i386.c (bdesc_special_args): Move __builtin_clzs from
371         this array ...
372         (bdesc_args): ... here.
373         * config.gcc (i[34567]86-*-*): Include abmintrin.h.
374         (x86_64-*-*): Likewise.
375
376 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
377
378         * config.gcc (i[34567]86-*-*, x86_64-*-*): Add popcntintrin.h.
379         * config/i386/abmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
380         * config/i386/i386-c.c (__POPCNT__): Defined.
381         * config/i386/popcntintrin.h: ...here.  New file.
382         * config/i386/smmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
383         Include popcntintrin.h.
384         * config/i386/x86intrin.h: Include popcntintrin.h when __POPCNT__
385         is defined.
386
387 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
388
389         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
390         Removed.
391         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
392         * config/i386/sse.md: Remove all XOP splitters.
393         Allow the second and fourth operands of XOP multiply-add insns
394         to be nonimmediate.
395
396 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
397
398         * config/i386/sse.md: Remove all FMA4 splitters.
399         Allow the second operand of FMA4 insns to be a nonimmediate.
400         Fix comments punctuation.
401
402 2009-12-07  Julian Brown  <julian@codesourcery.com>
403
404         * config/arm/constraints.md (Ps, Pt): New constraint letters.
405         * config/arm/thumb2.md (*thumb2_addsi_short): Tighten constraints.
406
407 2009-12-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
408
409         PR other/40302
410         * configure.ac (HAVE_mpc): Don't define.
411         * config.in, configure: Regenerate.
412
413         PR other/40302
414         * builtins.c: Remove HAVE_mpc* checks throughout.
415         * fold-const.c: Likewise.
416         * real.h: Likewise.
417         * toplev.c: Likewise.
418
419 2009-12-07  Edmar Wienskoski  <edmar@freescale.com>
420
421         * config.gcc (cpu_is_64bit): Add new core e500mc64.
422         (powerpc*-*-*): Add new core e500mc64.
423         * config/rs6000/e500mc64.md: New file.
424         * config/rs6000/rs6000.c (processor_costs): Add new costs for
425         e500mc64.
426         (rs6000_override_options): Add e500mc64 case to
427         processor_target_table. Altivec and Spe options not allowed with
428         e500mc64. Disable string instructions for e500mc64. Enable branch
429         targets alignment for both e500mc and e500mc64. Initialize
430         rs6000_cost for e500mc64.
431         (rs6000_emit_sISEL): New function.
432         (rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
433         (rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
434         generation.
435         (rs6000_issue_rate): Set issue rate for e500mc64.
436         (rs6000_rtx_costs): Set more accurate cost for mfcr instruction
437         on architectures with isel.
438         * config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
439         * config/rs6000/rs6000.h (processor_type): Add
440         PROCESSOR_PPCE500MC64.
441         (ASM_CPU_SPEC): Add e500mc64.
442         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc64.
443         Include e500mc64.md.
444         (abssi2_isel): Expand pattern to handle DImode.
445         (nabs<mode>2_isel): New pattern.
446         (absdi2): Change pattern to handle 64 bit isel targets.
447         (absdi2_internal): Exclude ISEL targets.
448         (nabsdi2): Exclude ISEL targets.
449         * doc/invoke.texi: Add e500mc64 to list of cpus.
450
451 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
452
453         * config/i386/i386.md (any_or): New code iterator.
454         (any_logic): Rename from plogic code iterator.
455         (logicprefix): Rename from plogicprefix code attribute.
456         (<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
457         any_or code iterator.
458         (*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
459         any_or code iterator.
460         (*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
461         (*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
462         (ior and xor splitters): Ditto.
463         * config/i386/mmx.md: Updated for rename.
464         * config/i386/sse.md: Ditto.
465
466 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
467
468         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
469         Remove quotes around condition logic code.
470
471 2009-12-06  Richard Henderson  <rth@redhat.com>
472
473         PR debug/42234
474         * tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
475         argument earlier.
476
477 2009-12-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
478
479         * doc/install.texi: Document MPC is required.
480
481 2009-12-06  Uros Bizjak  <ubizjak@gmail.com>
482
483         * config/i386/i386.md (g): Add HImode and QImode.
484         (general_szext_operand): New mode attribute.
485         (*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
486         SWI124 mode iterator.
487         (and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
488         SWIM mode iterator.
489         (*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
490         SWI124 mode iterator.
491         (ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
492         SWIM mode iterator.
493         (*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
494         SWI248 mode iterator.
495         (*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
496         SWI mode iterator.
497         (*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
498         SWI mode iterator.
499         (xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
500         SWIM mode iterator.
501         (*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
502         SWI248 mode iterator.
503         (*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
504         SWI mode iterator.
505         (*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
506         SWI mode iterator.
507
508 2009-12-05  Sebastian Pop  <sebastian.pop@amd.com>
509
510         * config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
511         MASK_FUSED_MADD.
512         * config/i386/i386.h (CC1_CPU_SPEC_1): Remove
513         "'-mfused-madd' was removed".
514         * config/i386/i386.opt (mfused-madd): New.
515         * config/i386/sse.md: Add TARGET_FUSED_MADD to FMA4 insns.
516         * doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.
517
518 2009-12-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
519
520         * pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
521         * pa-hpux10.h (LIB_SPEC): Likewise.
522         * pa-hpux11.h (LIB_SPEC): Likewise.
523
524         PR ada/41912
525         * pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
526         for signal frames.
527         * pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.
528
529 2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
530
531         * configure: Regenerate.
532
533 2009-12-05  Richard Earnshaw  <rearnsha@arm.com>
534
535         * arm/thumb2.md (thumb2_mulsi_short_compare0): Use a low-register
536         for the scratch.
537
538 2009-12-04  David Daney  <ddaney@caviumnetworks.com>
539
540         PR rtl-optimization/42164
541         * combine.c (combine_simplify_rtx): Handle truncation of integer
542         constants.
543
544 2009-12-04  Richard Guenther  <rguenther@suse.de>
545
546         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
547         Revert previous change.
548         (lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
549         * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
550         Likewise.
551
552 2009-12-04  Richard Guenther  <rguenther@suse.de>
553
554         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
555         BUILT_IN_MALLOC.
556         (call_may_clobber_ref_p_1): Likewise.
557
558 2009-12-04  Matthias Klose  <doko@ubuntu.com>
559             John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
560
561         PR target/40134
562         * config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
563         * config/pa/pa-linux.h (LIB_SPEC): Remove.
564
565 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
566             Richard Henderson  <rth@redhat.com>
567
568         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
569         * config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
570         * config/i386/i386.md: Do not use ix86_fma4_valid_op_p.
571         * config/i386/sse.md (fma4_*): Remove alternative with operand 1
572         matching a memory access.  Do not use ix86_fma4_valid_op_p.
573         (xop_*): Same.
574         Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.
575
576 2009-12-03  Richard Henderson  <rth@redhat.com>
577
578         * config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
579         all operands into registers.
580
581 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
582
583         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
584         parameter.
585         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
586         * config/i386/sse.md: Same.
587
588 2009-12-03  Richard Guenther  <rguenther@suse.de>
589
590         * cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
591         instead of DECL_NAME for the entry point.
592
593 2009-12-03  Richard Earnshaw  <rearnsha@arm.com>
594
595         * arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
596         before the lock release.
597
598 2009-12-03  Michael Matz  <matz@suse.de>
599
600         PR middle-end/38474
601         * cfgexpand.c (struct stack_var): Add conflicts member.
602         (stack_vars_conflict, stack_vars_conflict_alloc,
603         n_stack_vars_conflict): Remove.
604         (add_stack_var): Initialize conflicts member.
605         (triangular_index, resize_stack_vars_conflict): Remove.
606         (add_stack_var_conflict, stack_var_conflict_p): Rewrite in
607         terms of new member.
608         (union_stack_vars): Only run over the conflicts.
609         (partition_stack_vars): Remove special case.
610         (expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
611         don't create self-conflicts.
612         (account_used_vars_for_block): Don't create any conflicts.
613         (fini_vars_expansion): Free bitmaps, don't free or clear removed
614         globals.
615
616 2009-12-03  Bernd Schmidt  <bernd.schmidt@analog.com>
617
618         PR middle-end/42202
619         * regrename.c (live_in_chains): New variable.
620         (verify_reg_tracked): New static function.
621         (scan_rtx_reg): Update live_in_chains.
622         (scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
623         we're already tracking the reg.
624         (build_def_use): Likewise.  Initialize live_in_chains.
625
626 2009-12-03  Ken Werner  <ken.werner@de.ibm.com>
627
628         * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
629         startup files.
630         * config/spu/spu-protos.h (spu_function_profiler): Add prototype.
631         * config/spu/spu.c (spu_function_profiler): New function.
632         * config/spu/spu.h (FUNCTION_PROFILER): Invoke
633         spu_function_profiler.
634         (NO_PROFILE_COUNTERS): Define.
635         (PROFILE_BEFORE_PROLOGUE): Likewise.
636
637 2009-12-03  Dave Korn  <dave.korn.cygwin@gmail.com>
638
639         * ggc-page.c (struct free_object): Pull definition out ...
640         (struct globals): .. from here.
641
642 2009-12-02  Richard Guenther  <rguenther@suse.de>
643
644         * fold-const.c (div_if_zero_remainder): Honor that sizetypes
645         are sign-extending.  Simplify.
646
647 2009-12-02  Richard Henderson  <rth@redhat.com>
648
649         PR tree-opt/42215
650         * tree-loop-distribution.c (build_size_arg_loc): Tidy.
651         (generate_memset_zero): Convert to sizetype properly.  Tidy.
652
653 2009-12-02  Richard Guenther  <rguenther@suse.de>
654
655         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
656         Do not pretend we have value exprs.
657
658 2009-12-02  Richard Guenther  <rguenther@suse.de>
659
660         PR middle-end/41491
661         * fold-const.c (try_move_mult_to_index): Do not leak
662         domain types into the IL.
663
664 2009-12-02  Richard Guenther  <rguenther@suse.de>
665
666         PR middle-end/42088
667         * tree.c (free_lang_data): Disable if not using LTO.
668
669 2009-12-02  Richard Guenther  <rguenther@suse.de>
670
671         PR middle-end/42229
672         * cfgloopmanip.c (remove_path): Avoid cancelling loops twice.
673
674 2009-12-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
675
676         PR middle-end/42224
677         * tree.h (int_or_pointer_precision): Remove.
678         * tree.c (int_or_pointer_precision): Remove.
679         (integer_pow2p): Use TYPE_PRECISION instead.
680         (tree_log2): Likewise.
681         (tree_floor_log2): Likewise.
682         (signed_or_unsigned_type_for): Likewise.
683         * fold-const.c (fit_double_type): Likewise.
684         * varasm.c (initializer_constant_valid_p): Likewise.
685
686 2009-12-02  Ira Rosen  <irar@il.ibm.com>
687
688         * doc/invoke.texi (-fdump-tree-slp): Document.
689         (-ftree-vectorizer-verbose): Update.
690         (-ftree-slp-vectorize): Document.
691
692 2009-12-02  Nick Clifton  <nickc@redhat.com>
693
694         * config/rx/rx.c (rx_conditional_register_usage): Do not warn if
695         no fixed registers are available for interrupt handlers.  Do not
696         fix normal registers.
697         (MUST_SAVE_ACC_REGISTER): New macro.
698         (rx_get_stack_layout): Create a stack frame for fast interrupt
699         handlers, if necessary.  Push extra registers if needed in order
700         to save the accumulator.
701         (rx_expand_prologue): Create a stack frame for fast interrupt
702         handlers, if necessary.
703         (rx_expand_builtin_mvfc): Handle the case where there is no target.
704
705 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
706
707         * config/i386/abmintrin.h (__lzcnt16): New.
708         (__lzcnt): New.
709         (__lzcnt64): New.
710         * config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
711         * config/i386/i386.c (IX86_BUILTIN_CLZS): New.
712         (bdesc_special_args): Add __builtin_clzs.
713         (ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
714
715 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
716
717         * config/i386/abmintrin.h (_mm_popcnt_u32): New.
718         (_mm_popcnt_u64): New.
719
720 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
721
722         * config/i386/abmintrin.h: New.
723         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
724         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
725
726 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
727
728         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
729         (crc32modesuffix): Remove.
730         (crc32modeconstraint): Ditto.
731         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
732         imodesuffix instead of crc32modesuffix and <r>m instead of
733         crc32modeconstraint.
734
735 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
736
737         PR c++/42234
738         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
739         contains no statements.
740
741 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
742             Joern Rennecke  <amylaar@spamcop.net>
743
744         * cgraphunit.c (plugin.h): Include.
745         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
746         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
747         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
748         (enum plugin_event): Define by including plugin.def.
749         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
750         (plugin_event_name): Change type to const char **.
751         (get_event_last, get_named_event_id, unregister_callback): Declare.
752         (register_callback): Change type of event argument to int.
753         (highlev-plugin-common.h): New file.
754         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
755         $(HASHTAB_H)
756         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
757         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
758         (s-header-vars): New rule.
759         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
760         * params.c (get_num_compiler_params): New function.
761         * params.h (get_num_compiler_params): Declare.
762         * passes.c (plugin.h): Include.
763         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
764         (do_per_function_toporder, pass_init_dump_file): No longer static.
765         (pass_fini_dump_file): Likewise.
766         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
767         PLUGIN_PASS_EXECUTION.
768         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
769         PLUGIN_EARLY_GIMPLE_PASSES_END.
770         * plugin.c (plugin_event_name_init): New array, defined by
771         including plugin.def.
772         (FMT_FOR_PLUGIN_EVENT): Update.
773         (plugin_event_name): Change type to const char ** and initialize
774         to plugin_event_name_init.
775         (event_tab, event_last, event_horizon): New variable.
776         (get_event_last): New function.
777         (plugin_callbacks_init): New array.
778         (plugin_callbacks: Change type to struct callback_info **.
779         Initialize to plugin_callbacks_init.
780         (htab_event_eq, get_named_event_id, unregister_callback): New function.
781         (invoke_plugin_va_callbacks): Likewise.
782         (register_callback): Change type of event argument to int.
783         Handle new events.  Allow dynamic events.
784         (invoke_plugin_callbacks): Likewise.  Return success status.
785         (plugins_active_p): Allow dynamic callbacks.
786         * plugin.def: New file.
787         * plugin.h (invoke_plugin_callbacks): Update prototype.
788         (invoke_plugin_va_callbacks): Declare.
789         * tree-optimize.c (plugin.h): Include.
790         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
791         PLUGIN_ALL_PASSES_END.
792         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
793         (pass_fini_dump_file, do_per_function_toporder): Likewise.
794         * doc/plugin.texi: Document new event types.
795
796 2009-12-01  Martin Jambor  <mjambor@suse.cz>
797
798         PR tree-optimization/42237
799         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
800         in between references into two.
801
802 2009-12-01  Richard Guenther  <rguenther@suse.de>
803
804         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
805         to the block of the call when remapping a type.
806
807 2009-12-01  Martin Jambor  <mjambor@suse.cz>
808
809         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
810         unsigned short int.
811         * ipa-prop.h (struct ipa_param_call_note): Likewise.
812         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
813
814 2009-12-01  Richard Guenther  <rguenther@suse.de>
815
816         * final.c (rest_of_clean_state): If -fcompare-debug is
817         given dump final insns without UIDs.
818         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
819         after_inlining checks.
820
821 2009-11-30  Chao-ying Fu  <fu@mips.com>
822
823         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
824
825 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
826
827         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
828         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
829         * configure: Regenerate.
830         * config.in: Regenerate.
831
832         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
833         options for Cygwin DLL libstdc++ support wrappers.
834         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
835         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
836         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
837         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
838         (LINK_SPEC): Include CXX_WRAP_SPEC.
839         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
840         (i386_find_on_wrapper_list): Check if a function is found on the list
841         of libstdc++ wrapper options.
842         (i386_pe_file_end): If we are importing a wrapped function, also emit
843         an external declaration for the real version.
844         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
845         Cygwin targets. Update copyright year.
846
847 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
848             Jakub Jelinek <jakub@redhat.com>
849
850         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
851         before forcing mode.
852
853 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
854
855         * config/sh/sh.c (sh_promote_prototypes): Make static.
856         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
857         functions.
858         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
859         * config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
860         sh_function_value_regno_p.
861         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
862         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
863         (sh_promote_prototypes) : Remove.
864
865 2009-11-30  Julian Brown  <julian@codesourcery.com>
866
867         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
868         reloads to LO_REGS.
869
870 2009-11-30  Richard Henderson  <rth@redhat.com>
871
872         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
873         (bdesc_special_args): Update insn codes.
874         (avx_vpermilp_parallel): Correct range check.
875         (ix86_rtx_costs): Handle vector permutation rtx codes.
876         (struct expand_vec_perm_d): Move earlier.
877         (get_mode_wider_vector): New.
878         (expand_vec_perm_broadcast_1): New.
879         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
880         (expand_vec_perm_broadcast): New.
881         (ix86_expand_vec_perm_builtin_1): Use it.
882         * config/i386/i386-protos.h: Update.
883         * config/i386/predicates.md (avx_vbroadcast_operand): New.
884         * config/i386/sse.md (AVX256MODE24P): New.
885         (ssescalarmodesuffix2s): New.
886         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
887         (avxmodesuffixf2c): Add V8SI, V4DI.
888         (vec_dupv4sf): New expander.
889         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
890         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
891         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
892         pinsrd alternatives.
893         (*vec_set<mode>_0_sse2): Split out from ...
894         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
895         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
896         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
897         ix86_fixup_binary_operands.
898         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
899         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
900         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
901         vec_select form to vec_duplicate form.
902         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
903         ix86_vec_interleave_v2df_operator_ok.
904         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
905         (*avx_unpcklpd256): ... here.
906         (*vec_dupv4si_avx): New.
907         (*vec_dupv2di_avx): Add movddup alternative.
908         (*vec_dupv2di_sse3): New.
909         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
910         avx_vbroadcastss256; represent with vec_duplicate instead of
911         nested vec_concat operations.
912         (avx_vbroadcastf128_<mode>): Rename from
913         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
914         (*avx_vperm_broadcast_v4sf): New.
915         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
916
917 2009-11-30  Martin Jambor  <mjambor@suse.cz>
918
919         PR middle-end/42196
920         * tree-sra.c (struct access): New field grp_different_types.
921         (dump_access): Dump grp_different_types.
922         (compare_access_positions): Prefer scalars and vectors over other
923         scalar types.
924         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
925         (sra_modify_expr): Use the original also when dealing with a complex
926          or vector group accessed as multiple types.
927
928 2009-11-30  Richard Henderson  <rth@redhat.com>
929
930         * config/i386/i386.c (avx_vperm2f128_parallel): New.
931         * config/i386/i386-protos.h: Declare it.
932         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
933         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
934         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
935         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
936         (*avx_vperm2f128<mode>_nozero): New.
937
938 2009-11-30  Richard Henderson  <rth@redhat.com>
939
940         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
941         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
942         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
943         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
944         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
945         (bdesc_args): Add them.
946         (ix86_expand_builtin): Expand them.
947         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
948
949 2009-11-30  Martin Jambor  <mjambor@suse.cz>
950
951         PR middle-end/42206
952         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
953
954 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
955
956         * ipa-reference.c (propagate): Only dump bitmaps if computed.
957
958 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
959
960         PR middle-end/39806
961         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
962         (new_var_hash): Likewise.
963         (is_in_new_vars_htab): Likewise.
964         (add_to_new_vars_htab): Likewise.
965
966 2009-11-30  Ira Rosen  <irar@il.ibm.com>
967
968         * tree-vect-stmts.c (vectorizable_assignment): Support
969         multiple types.
970
971 2009-11-30  Richard Guenther  <rguenther@suse.de>
972
973         * doc/contrib.texi (Contributors): Add myself.
974
975 2009-11-30  Richard Guenther  <rguenther@suse.de>
976
977         * tree.c (free_lang_data): Do not set debug_info_level to
978         none if terse.
979
980 2009-11-30  Richard Guenther  <rguenther@suse.de>
981
982         PR middle-end/42119
983         PR fortran/38530
984         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
985         of CONST_DECLs.
986
987 2009-11-30  Richard Guenther  <rguenther@suse.de>
988
989         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
990         variable UID order.
991
992 2009-11-30  Richard Guenther  <rguenther@suse.de>
993
994         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
995         * tree-pass.h (TDF_NOUID): Likewise.
996         * print-rtl.c: Include tree-pass.h.
997         (print_mem_expr): Pass dump_flags.
998         (print_rtx): Likewise.
999         * print-tree.c: Include tree-pass.h.
1000         (print_node_brief): Handle TDF_NOUID.
1001         (print_node): Likewise.
1002         * tree-pretty-print.c (dump_decl_name): Likewise.
1003         (dump_generic_node): Likewise.
1004         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
1005         dependency.
1006
1007 2009-11-30  Nick Clifton  <nickc@redhat.com>
1008
1009         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
1010         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
1011         stormy16-lib2-count-leading-zeros.c.
1012         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
1013         __stormy16_count_leading_zeros() into this function.
1014         (__ctzhi2): Use __builtin_clz.
1015         (__ffshi2): Likewise.
1016
1017 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
1018
1019         * config/sparc/sparc.c (DF_MODES): Simplify.
1020         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
1021         (TF_MODES, OF_MODES): Adjust for above change.
1022         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
1023         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
1024
1025 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
1026
1027         PR rtl-optimization/41812
1028         * fwprop.c (local_md, local_lr): New globals.
1029         (process_defs, process_uses): Remove local_md argument.  Never
1030         consider dead pseudos to have singleton def-use chains.
1031         (single_def_use_enter_block): Perform LR simulation.
1032         (build_single_def_use_links): Remove local_md local variable.
1033         Add DF_NOTE.  Allocate local_lr.
1034         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
1035         * df-problems.c (df_md_scratch): New.
1036         (df_md_alloc, df_md_free): Allocate/free it.
1037         (df_md_local_compute): Only include live registers in init.
1038         (df_md_transfer_function): Prune the in-set computed by
1039         the confluence function, and the gen-set too.
1040
1041 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
1042
1043         PR rtl-optimization/40086
1044         * reorg.c (relax_delay_slots): When looking for redundant insn at
1045         the branch target, use next_real_insn, not next_active_insn.
1046
1047 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1048
1049         * doc/install.texi: Update minimum MPC version to 0.8.
1050
1051 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1052
1053         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
1054         HONOR_SIGNED_ZEROS final condition.
1055         (fnmsubsf4_powerpc_1): Same.
1056         (fnmadddf4_fpr_1): Same.
1057         (fnmsubdf4_fpr_1): Same.
1058
1059 2009-11-29  Ira Rosen  <irar@il.ibm.com>
1060
1061         PR tree-optimization/42193
1062         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
1063         to 1 in case of basic block SLP.
1064         (vectorizable_load): Likewise.
1065
1066 2009-11-28  Jan Hubicka  <jh@suse.cz>
1067
1068         * cgraph.c (same_body_alias_1): Break out of
1069         (same_body_alias): ... here; remove comdat check; it is handled
1070         in cp already.
1071         (cgraph_add_thunk): New.
1072         (dump_cgraph_node): Dump aliases and thunks.
1073         * cgraph.h (cgraph_thunk_info): New structure.
1074         (struct cgraph_node): Add thunk info.
1075         (cgraph_add_thunk): New.
1076         * cgraphunit.c (cgraph_emit_thunks): Remove.
1077         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
1078         (assemble_thunk): New function.
1079         (cgraph_expand_function): Handle thunks.
1080         (thunk_adjust): New.
1081         (init_lowered_empty_function): New.
1082         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
1083         Remove.
1084         * lto-cgraph.c (lto_output_node): Stream thunk info.
1085         (input_node): Likewise.
1086         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
1087         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
1088         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
1089         * i386.c (x86_output_mi_thunk): Make output prettier.
1090
1091 2009-11-28  Richard Guenther  <rguenther@suse.de>
1092
1093         PR tree-optimization/42183
1094         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
1095         address taken.  Merge the addressable state of the NRV
1096         variable and the result instead of copying it.
1097
1098 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
1099
1100         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
1101         malloc_fname variable.
1102         (check_allocation_function): Remove unused gsi and bb_level_0
1103         variables.
1104         (transform_access_sites): Remove unused d_type_size and d_type_size_k
1105         variables.
1106         * omega.c (resurrect_subs): Remove unused n variable.
1107         (omega_solve_geq): Remove unused neweqns variable.
1108         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
1109         * tree-inline.c (declare_return_variable): Remove USE_P argument,
1110         return use instead of var.
1111         (remap_decl, remap_block): Remove unused fn variable.
1112         (expand_call_inline): Remove unused retvar variable, adjust
1113         declare_return_variable caller.
1114         (optimize_inline_calls): Remove unused prev_fn variable.
1115         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
1116         variable.
1117         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
1118         variables.
1119         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
1120         properly.
1121         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
1122         variable.
1123         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
1124         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
1125         parameter.  Remove unused par_stmt variable.
1126         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
1127         (expand_omp_sections): Remove unused l1 variable.
1128         (lower_omp_for): Remove unused ilist variable.
1129         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
1130         Remove unused has_upstream_mem_write_p variable.
1131         * recog.c (decode_asm_operands): Remove unused noperands variable.
1132         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
1133         size2 variable.
1134         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
1135         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
1136         base_nm variable.
1137         (gen_conditions_for_pow): Remove unused ec variable.
1138         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
1139         variable.
1140         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
1141         fndecl variable.
1142         * tree-ssa-sink.c (statement_sink_location): Remove unused code
1143         variable.
1144         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
1145         variables.
1146         * tree-complex.c (create_one_component_var): Remove unused inner_type
1147         variable.
1148         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
1149         unnecessarily when GEN_*CALL omits that argument.
1150         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
1151         (build_def_use): Remove unused icode variable.
1152         * ipa-pure-const.c (check_call): Remove unused callee and avail
1153         variables.
1154         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
1155         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
1156         variable.
1157         (vect_pattern_recog): Remove unused stmt variable.
1158         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
1159         new_regions variable.
1160         * postreload.c (reload_cse_simplify_operands): Remove unused mode
1161         variable.
1162         * tree-parloops.c (create_call_for_reduction_1): Remove unused
1163         addr_type variable.
1164         (create_parallel_loop): Remove unused res variable.
1165         (gen_parallel_loop): Remove unused nloop variable.
1166         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
1167         * value-prof.c (gimple_mod_subtract_transform,
1168         gimple_stringops_transform): Remove unused value variable.
1169         (gimple_stringops_values_to_profile): Remove unused fcode variable.
1170         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
1171         (vrp_visit_switch_stmt): Remove unused n variable.
1172         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
1173         variable.
1174         (vectorizable_operation): Remove unused shift_p variable.
1175         (vectorizable_store): Remove unused first_stmt_vinfo variable.
1176         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
1177         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
1178         variable.
1179         (vect_permute_store_chain): Remove unused scalar_dest variable.
1180         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
1181         variable.
1182         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
1183         local_info variable.
1184         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
1185         variable.
1186         * optabs.c (expand_binop): Remove unused equiv_value variable.
1187         (emit_libcall_block): Remove unused prev variable.
1188         (init_optabs): Remove unused int_mode variable.
1189         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
1190         variable.
1191         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
1192         (find_func_aliases): Remove unused rhstype variable.
1193         (ipa_pta_execute): Remove unused varid variable.
1194
1195 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1196
1197         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
1198
1199 2009-11-28  David Binderman  <dcb314@hotmail.com>
1200
1201         * ira-color.c (put_allocno_into_bucket): Remove set but not used
1202         local variable hard_regs_num.
1203         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
1204         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
1205         * lower-subreg.c (decompose_multiword_subregs): Remove next.
1206
1207 2009-11-27  Martin Jambor  <mjambor@suse.cz>
1208
1209         PR middle-end/42006
1210         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
1211         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
1212         for vector and complex types.
1213         (get_adjustment_for_base): Describe return value in the comment.
1214
1215 2009-11-27  Nick Clifton  <nickc@redhat.com>
1216
1217         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
1218         (COUNT_LEADING_ZEROS_0): Likewise.
1219         * config/stormy16/stormy16-lib2.c: Arrange for separate
1220         compilation of each function.
1221         (__ffshi2): New function.
1222         (__stormy16_count_leading_zeros): New function.
1223         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
1224         compile each function into its own object file.
1225         (stormy16-lib2-ashlsi3.c): New stub file.
1226         (stormy16-lib2-ashrsi3.c): New stub file.
1227         (stormy16-lib2-clzhi2.c): New stub file.
1228         (stormy16-lib2-count-leading-zeros.c): New stub file.
1229         (stormy16-lib2-ctzhi2.c): New stub file.
1230         (stormy16-lib2-divsi3.c): New stub file.
1231         (stormy16-lib2-ffshi2.c): New stub file.
1232         (stormy16-lib2-lshrsi3.c): New stub file.
1233         (stormy16-lib2-modsi3.c): New stub file.
1234         (stormy16-lib2-parityhi2.c): New stub file.
1235         (stormy16-lib2-popcounthi2.c): New stub file.
1236         (stormy16-lib2-udivmodsi4.c): New stub file.
1237         (stormy16-lib2-udivsi3.c): New stub file.
1238         (stormy16-lib2-umodsi3.c): New stub file.
1239
1240 2009-11-27  Richard Henderson  <rth@redhat.com>
1241
1242         * config/i386/sse.md (vec_interleave_highv16qi,
1243         vec_interleave_lowv16qi, vec_interleave_highv8hi,
1244         vec_interleave_lowv8hi, vec_interleave_highv4si,
1245         vec_interleave_lowv4si, vec_interleave_highv2di,
1246         vec_interleave_lowv2di, vec_interleave_highv4sf,
1247         vec_interleave_lowv4sf, vec_interleave_highv2df,
1248         vec_interleave_lowv2df): Remove expanders.
1249         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
1250         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
1251         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
1252         Rename to their proper vec_interleave equivalent.  Update all users
1253         to the new name.
1254         * config/i386/i386.c, config/i386/i386.md: Update all users.
1255
1256 2009-11-27  Michael Matz  <matz@suse.de>
1257
1258         PR rtl-optimization/42084
1259         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
1260         use it to stop walking.
1261         (expand_gimple_cond): Adjust call to above.
1262
1263 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1264
1265         PR target/41810
1266         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
1267         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
1268         __extension__ to allow cast from function pointer to object
1269         pointer in C++.
1270         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
1271
1272 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
1273
1274         * config/ia64/itanium1.md: Remove.
1275         * config/ia64/ia64.md: Do not include it.
1276         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
1277         "itanium1", and "merced" from the processor alias table.
1278         (clocks, add_cycles): Remove global variables.
1279         (ia64_sched_reorder2): Don't set/use them.
1280         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
1281         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
1282
1283 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1284
1285         * config/s390/s390.c (last_scheduled_insn): New variable.
1286         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
1287         functions.
1288         (s390_sched_reorder, s390_sched_variable_issue): New functions.
1289         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
1290         defined.
1291
1292 2009-11-27  Michael Matz  <matz@suse.de>
1293
1294         PR c++/41906
1295         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
1296
1297 2009-11-27  Richard Guenther  <rguenther@suse.de>
1298
1299         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
1300         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
1301         * loop-init.c (pass_rtl_move_loop_invariants): Use
1302         TV_LOOP_MOVE_INVARIANTS.
1303         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
1304         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
1305         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
1306
1307 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1308
1309         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
1310
1311 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
1312
1313         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
1314         unused insn variable.
1315         * genemit.c (output_peephole2_scratches): Only declare and initialize
1316         _regs_allocated if it will be ever used.
1317         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
1318         succ_bb variable.
1319         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
1320         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
1321         variable.
1322
1323         * opts.c (decode_options): If optimize is bigger than 255,
1324         set it to 255.
1325
1326 2009-11-26  Richard Henderson  <rth@redhat.com>
1327
1328         * config/i386/sse.md (mulv16qi3): Change back from an expander
1329         to an insn-and-split.
1330         (mulv4si): Mention AVX not XOP for AVX exception.
1331         (*sse2_mulv4si3): Likewise.
1332         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
1333
1334 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
1335
1336         * cfgexpand (n_stack_vars_conflict): New static variable.
1337         (triangular_index): Reduce likelyhood of overflow by performing
1338         the division before the multiplication.
1339         (resize_stack_vars_conflict): Call fatal_error if overflow
1340         occurred in triangular_index.  Update n_stack_vars_conflict.
1341
1342         PR rtl-opt/38582
1343         * regrename.c (struct du_chain): Remove member earlyclobber.
1344         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
1345         all callers changed.
1346         (scan_rtx): Remove argument earlyclobber, all callers changed.
1347         (hide_operands, restore_operands, record_out_operands): New functions,
1348         broken out of build_def_use.
1349         (build_def_use): Call them as necessary.
1350
1351         * regrename.c (struct du_head): New members id, conflicts,
1352         hard_conflicts and cannot_rename.
1353         (enum scan_actions): Remove terminate_all_read and
1354         terminate_overlapping_read; add mark_all_read.
1355         (scan_actions_name): Likewise.
1356         (du_head_p): New typedef.  Define a vector type for it.
1357         (id_to_chain): New static variable.
1358         (note_sets, clear_dead_regs): Delete functions.
1359         (free_chain_data): New function.
1360         (merge_overlapping_regs): Simply walk the conflicts bitmap.
1361         Remove argument B, all callers changed.
1362         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
1363         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
1364         Call free_chain_data when done.
1365         (do_replace): Remove death notes when the renamed reg is set in the
1366         last insn; add them if not.
1367         (mark_conflict, note_sets_clobbers): New static function.
1368         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
1369         static variables.
1370         (scan_rtx_reg): Keep track of conflicts between chains, and between
1371         chains and hard regs.  Don't terminate chains when we find a read we
1372         can't handle, mark it unrenameable instead.  For terminate_write,
1373         terminate chains that are written with an exact match or a superset
1374         of registers.  Set fail_current_block if multi-word lifetimes are too
1375         complex to handle.
1376         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
1377         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
1378         free memory for them when done.
1379         Rearrange the steps so that earlyclobbers are noted before reads
1380         are processed.  Add new steps to keep track of hard register lifetimes
1381         outside insn operands.
1382
1383 2009-11-26  Richard Guenther  <rguenther@suse.de>
1384
1385         * tree-ssa-dce.c (nr_walks): New variable.
1386         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
1387         (perform_tree_ssa_dce): Init nr_walks.
1388
1389 2009-11-26  Michael Matz  <matz@suse.de>
1390
1391         PR tree-optimization/41905
1392         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
1393         below statements that can't fall thru.
1394
1395 2009-11-26  Michael Matz  <matz@suse.de>
1396
1397         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
1398         expand_builtin_sprintf): Remove.
1399         (expand_builtin): Don't call them.
1400
1401 2009-11-26  Richard Guenther  <rguenther@suse.de>
1402
1403         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
1404
1405 2009-11-26  Nick Clifton  <nickc@redhat.com>
1406
1407         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
1408         being used incorrectly.
1409         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
1410         sibcalls, or sibcalls from interrupt functions.
1411         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1412         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
1413         for a MEM inside a MEM.
1414         (sibcall_value): Likewise.
1415         (sibcall_internal): New pattern containing old sibcall pattern.
1416         (sibcall_value_internal): Likewise.
1417
1418 2009-11-25  Richard Henderson  <rth@redhat.com>
1419
1420         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
1421         optional 3rd argument to define the mode.
1422         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
1423         (V2UDI, V4USI, V8UHI, V16UQI): New.
1424         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
1425         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
1426         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
1427         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
1428         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
1429         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
1430         (bdesc_args): Add the builtin definitions to match.
1431         (ix86_expand_builtin): Expand them.
1432         (ix86_builtin_vectorization_cost): Rename from
1433         x86_builtin_vectorization_cost.
1434         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
1435         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
1436         expand_vec_perm_blend, expand_vec_perm_vpermil,
1437         expand_vec_perm_pshufb, expand_vec_perm_1,
1438         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
1439         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
1440         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
1441         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
1442         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
1443         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
1444         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1445         * sse.md (SSEMODE_EO): New.
1446         (vec_extract_even<mode>): Use SSEMODE_EO and
1447         ix86_expand_vec_extract_even_odd.
1448         (vec_extract_odd<mode>): Likewise.
1449         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
1450         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
1451
1452 2009-11-25  Richard Henderson  <rth@redhat.com>
1453
1454         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
1455         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1456         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
1457         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
1458         the vector constant here...
1459         (vect_transform_slp_perm_load): ... do it here instead.  Validate
1460         that the permutation vector is implementable by the target.
1461
1462 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
1463
1464         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
1465         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
1466
1467         * print-rtl.c (print_rtx): When printing newline, append
1468         print_rtx_head and indentation after the newline.
1469
1470         PR target/42165
1471         * config/i386/i386.c (print_operand): For 32-byte memory use
1472         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
1473         * config/i386/i386.md (crc32modesuffix): Expand to nothing
1474         in -masm=intel mode.
1475         (sse4_2_crc32di): Print just crc32 instead of crc32q in
1476         -masm=intel mode.
1477         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
1478         memory operand in -masm=intel mode.
1479         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
1480         *sse2_pinsrw): Likewise.
1481         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
1482         q suffix in -masm=intel mode.
1483
1484 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1485
1486         PR target/10127
1487         PR ada/20548
1488         PR middle-end/42004
1489         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
1490         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
1491         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
1492         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
1493         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
1494         above renaming.
1495         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
1496
1497 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1498
1499         * config/i386/predicates.md (emms_operation): New predicate.
1500         (vzeroupper_operation): Ditto.
1501         (vzeroall_operation): Improve pattern recognition.
1502         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
1503         (avx_vzeroupper): Change insn pattern to expander.
1504         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
1505         predicate.
1506         (*avx_vzeroall): Remove operands 1 and 2.
1507         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
1508         (mmx_femms): Ditto.
1509         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
1510         (*mmx_femms): Ditto.
1511         * config/i386/i386.c (enum ix86_builtins)
1512         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
1513         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
1514         Remove initailization.
1515         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
1516
1517 2009-11-25  Paul Brook  <paul@codesourcery.com>
1518
1519         * config/arm/arm.md (consttable_4): Handle (high ...).
1520
1521 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
1522             Richard Earnshaw  <rearnsha@arm.com>
1523
1524         * arm.h (enum vfp_reg_type): Add VFP_NONE.
1525         * arm.c (all_fpus): Use it for floating point units that aren't based
1526         on the VFP architecture.
1527         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
1528         enum machine_mode.
1529
1530 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1531
1532         * alias.c: Remove trailing white spaces.
1533         * alloc-pool.c: Likewise.
1534         * alloc-pool.h: Likewise.
1535         * attribs.c: Likewise.
1536         * auto-inc-dec.c: Likewise.
1537         * basic-block.h: Likewise.
1538         * bb-reorder.c: Likewise.
1539         * bt-load.c: Likewise.
1540         * builtins.c: Likewise.
1541         * builtins.def: Likewise.
1542         * c-common.c: Likewise.
1543         * c-common.h: Likewise.
1544         * c-cppbuiltin.c: Likewise.
1545         * c-decl.c: Likewise.
1546         * c-format.c: Likewise.
1547         * c-lex.c: Likewise.
1548         * c-omp.c: Likewise.
1549         * c-opts.c: Likewise.
1550         * c-parser.c: Likewise.
1551         * c-pretty-print.c: Likewise.
1552         * c-tree.h: Likewise.
1553         * c-typeck.c: Likewise.
1554         * caller-save.c: Likewise.
1555         * calls.c: Likewise.
1556         * cfg.c: Likewise.
1557         * cfganal.c: Likewise.
1558         * cfgexpand.c: Likewise.
1559         * cfghooks.c: Likewise.
1560         * cfghooks.h: Likewise.
1561         * cfglayout.c: Likewise.
1562         * cfgloop.c: Likewise.
1563         * cfgloop.h: Likewise.
1564         * cfgloopmanip.c: Likewise.
1565         * cfgrtl.c: Likewise.
1566         * cgraph.c: Likewise.
1567         * cgraph.h: Likewise.
1568         * cgraphbuild.c: Likewise.
1569         * cgraphunit.c: Likewise.
1570         * cif-code.def: Likewise.
1571         * collect2.c: Likewise.
1572         * combine.c: Likewise.
1573         * convert.c: Likewise.
1574         * coverage.c: Likewise.
1575         * crtstuff.c: Likewise.
1576         * cse.c: Likewise.
1577         * cselib.c: Likewise.
1578         * dbgcnt.c: Likewise.
1579         * dbgcnt.def: Likewise.
1580         * dbgcnt.h: Likewise.
1581         * dbxout.c: Likewise.
1582         * dce.c: Likewise.
1583         * ddg.c: Likewise.
1584         * ddg.h: Likewise.
1585         * defaults.h: Likewise.
1586         * df-byte-scan.c: Likewise.
1587         * df-core.c: Likewise.
1588         * df-problems.c: Likewise.
1589         * df-scan.c: Likewise.
1590         * df.h: Likewise.
1591         * dfp.c: Likewise.
1592         * diagnostic.c: Likewise.
1593         * diagnostic.h: Likewise.
1594         * dominance.c: Likewise.
1595         * domwalk.c: Likewise.
1596         * double-int.c: Likewise.
1597         * double-int.h: Likewise.
1598         * dse.c: Likewise.
1599         * dwarf2asm.c: Likewise.
1600         * dwarf2asm.h: Likewise.
1601         * dwarf2out.c: Likewise.
1602         * ebitmap.c: Likewise.
1603         * ebitmap.h: Likewise.
1604         * emit-rtl.c: Likewise.
1605         * et-forest.c: Likewise.
1606         * except.c: Likewise.
1607         * except.h: Likewise.
1608         * expmed.c: Likewise.
1609         * expr.c: Likewise.
1610         * expr.h: Likewise.
1611         * final.c: Likewise.
1612         * flags.h: Likewise.
1613         * fold-const.c: Likewise.
1614         * function.c: Likewise.
1615         * function.h: Likewise.
1616         * fwprop.c: Likewise.
1617         * gcc.c: Likewise.
1618         * gcov-dump.c: Likewise.
1619         * gcov-io.c: Likewise.
1620         * gcov-io.h: Likewise.
1621         * gcov.c: Likewise.
1622         * gcse.c: Likewise.
1623         * genattr.c: Likewise.
1624         * genattrtab.c: Likewise.
1625         * genautomata.c: Likewise.
1626         * genchecksum.c: Likewise.
1627         * genconfig.c: Likewise.
1628         * genflags.c: Likewise.
1629         * gengtype-parse.c: Likewise.
1630         * gengtype.c: Likewise.
1631         * gengtype.h: Likewise.
1632         * genmddeps.c: Likewise.
1633         * genmodes.c: Likewise.
1634         * genopinit.c: Likewise.
1635         * genpreds.c: Likewise.
1636         * gensupport.c: Likewise.
1637         * ggc-common.c: Likewise.
1638         * ggc-page.c: Likewise.
1639         * ggc-zone.c: Likewise.
1640         * ggc.h: Likewise.
1641         * gimple-iterator.c: Likewise.
1642         * gimple-low.c: Likewise.
1643         * gimple-pretty-print.c: Likewise.
1644         * gimple.c: Likewise.
1645         * gimple.def: Likewise.
1646         * gimple.h: Likewise.
1647         * gimplify.c: Likewise.
1648         * graphds.c: Likewise.
1649         * graphite-clast-to-gimple.c: Likewise.
1650         * gthr-nks.h: Likewise.
1651         * gthr-posix.c: Likewise.
1652         * gthr-posix.h: Likewise.
1653         * gthr-posix95.h: Likewise.
1654         * gthr-single.h: Likewise.
1655         * gthr-tpf.h: Likewise.
1656         * gthr-vxworks.h: Likewise.
1657         * gthr.h: Likewise.
1658         * haifa-sched.c: Likewise.
1659         * hard-reg-set.h: Likewise.
1660         * hooks.c: Likewise.
1661         * hooks.h: Likewise.
1662         * hosthooks.h: Likewise.
1663         * hwint.h: Likewise.
1664         * ifcvt.c: Likewise.
1665         * incpath.c: Likewise.
1666         * init-regs.c: Likewise.
1667         * integrate.c: Likewise.
1668         * ipa-cp.c: Likewise.
1669         * ipa-inline.c: Likewise.
1670         * ipa-prop.c: Likewise.
1671         * ipa-pure-const.c: Likewise.
1672         * ipa-reference.c: Likewise.
1673         * ipa-struct-reorg.c: Likewise.
1674         * ipa-struct-reorg.h: Likewise.
1675         * ipa-type-escape.c: Likewise.
1676         * ipa-type-escape.h: Likewise.
1677         * ipa-utils.c: Likewise.
1678         * ipa-utils.h: Likewise.
1679         * ipa.c: Likewise.
1680         * ira-build.c: Likewise.
1681         * ira-color.c: Likewise.
1682         * ira-conflicts.c: Likewise.
1683         * ira-costs.c: Likewise.
1684         * ira-emit.c: Likewise.
1685         * ira-int.h: Likewise.
1686         * ira-lives.c: Likewise.
1687         * ira.c: Likewise.
1688         * jump.c: Likewise.
1689         * lambda-code.c: Likewise.
1690         * lambda-mat.c: Likewise.
1691         * lambda-trans.c: Likewise.
1692         * lambda.h: Likewise.
1693         * langhooks.c: Likewise.
1694         * lcm.c: Likewise.
1695         * libgcov.c: Likewise.
1696         * lists.c: Likewise.
1697         * loop-doloop.c: Likewise.
1698         * loop-init.c: Likewise.
1699         * loop-invariant.c: Likewise.
1700         * loop-iv.c: Likewise.
1701         * loop-unroll.c: Likewise.
1702         * lower-subreg.c: Likewise.
1703         * lto-cgraph.c: Likewise.
1704         * lto-compress.c: Likewise.
1705         * lto-opts.c: Likewise.
1706         * lto-section-in.c: Likewise.
1707         * lto-section-out.c: Likewise.
1708         * lto-streamer-in.c: Likewise.
1709         * lto-streamer-out.c: Likewise.
1710         * lto-streamer.c: Likewise.
1711         * lto-streamer.h: Likewise.
1712         * lto-symtab.c: Likewise.
1713         * lto-wpa-fixup.c: Likewise.
1714         * matrix-reorg.c: Likewise.
1715         * mcf.c: Likewise.
1716         * mode-switching.c: Likewise.
1717         * modulo-sched.c: Likewise.
1718         * omega.c: Likewise.
1719         * omega.h: Likewise.
1720         * omp-low.c: Likewise.
1721         * optabs.c: Likewise.
1722         * optabs.h: Likewise.
1723         * opts-common.c: Likewise.
1724         * opts.c: Likewise.
1725         * params.def: Likewise.
1726         * params.h: Likewise.
1727         * passes.c: Likewise.
1728         * plugin.c: Likewise.
1729         * postreload-gcse.c: Likewise.
1730         * postreload.c: Likewise.
1731         * predict.c: Likewise.
1732         * predict.def: Likewise.
1733         * pretty-print.c: Likewise.
1734         * pretty-print.h: Likewise.
1735         * print-rtl.c: Likewise.
1736         * print-tree.c: Likewise.
1737         * profile.c: Likewise.
1738         * read-rtl.c: Likewise.
1739         * real.c: Likewise.
1740         * recog.c: Likewise.
1741         * reg-stack.c: Likewise.
1742         * regcprop.c: Likewise.
1743         * reginfo.c: Likewise.
1744         * regmove.c: Likewise.
1745         * regrename.c: Likewise.
1746         * regs.h: Likewise.
1747         * regstat.c: Likewise.
1748         * reload.c: Likewise.
1749         * reload1.c: Likewise.
1750         * resource.c: Likewise.
1751         * rtl.c: Likewise.
1752         * rtl.def: Likewise.
1753         * rtl.h: Likewise.
1754         * rtlanal.c: Likewise.
1755         * sbitmap.c: Likewise.
1756         * sched-deps.c: Likewise.
1757         * sched-ebb.c: Likewise.
1758         * sched-int.h: Likewise.
1759         * sched-rgn.c: Likewise.
1760         * sched-vis.c: Likewise.
1761         * sdbout.c: Likewise.
1762         * sel-sched-dump.c: Likewise.
1763         * sel-sched-dump.h: Likewise.
1764         * sel-sched-ir.c: Likewise.
1765         * sel-sched-ir.h: Likewise.
1766         * sel-sched.c: Likewise.
1767         * sel-sched.h: Likewise.
1768         * sese.c: Likewise.
1769         * sese.h: Likewise.
1770         * simplify-rtx.c: Likewise.
1771         * stack-ptr-mod.c: Likewise.
1772         * stmt.c: Likewise.
1773         * stor-layout.c: Likewise.
1774         * store-motion.c: Likewise.
1775         * stringpool.c: Likewise.
1776         * stub-objc.c: Likewise.
1777         * sync-builtins.def: Likewise.
1778         * target-def.h: Likewise.
1779         * target.h: Likewise.
1780         * targhooks.c: Likewise.
1781         * targhooks.h: Likewise.
1782         * timevar.c: Likewise.
1783         * tlink.c: Likewise.
1784         * toplev.c: Likewise.
1785         * toplev.h: Likewise.
1786         * tracer.c: Likewise.
1787         * tree-affine.c: Likewise.
1788         * tree-affine.h: Likewise.
1789         * tree-browser.def: Likewise.
1790         * tree-call-cdce.c: Likewise.
1791         * tree-cfg.c: Likewise.
1792         * tree-cfgcleanup.c: Likewise.
1793         * tree-chrec.c: Likewise.
1794         * tree-chrec.h: Likewise.
1795         * tree-complex.c: Likewise.
1796         * tree-data-ref.c: Likewise.
1797         * tree-data-ref.h: Likewise.
1798         * tree-dfa.c: Likewise.
1799         * tree-dump.c: Likewise.
1800         * tree-dump.h: Likewise.
1801         * tree-eh.c: Likewise.
1802         * tree-flow-inline.h: Likewise.
1803         * tree-flow.h: Likewise.
1804         * tree-if-conv.c: Likewise.
1805         * tree-inline.c: Likewise.
1806         * tree-into-ssa.c: Likewise.
1807         * tree-loop-distribution.c: Likewise.
1808         * tree-loop-linear.c: Likewise.
1809         * tree-mudflap.c: Likewise.
1810         * tree-nested.c: Likewise.
1811         * tree-nomudflap.c: Likewise.
1812         * tree-nrv.c: Likewise.
1813         * tree-object-size.c: Likewise.
1814         * tree-optimize.c: Likewise.
1815         * tree-outof-ssa.c: Likewise.
1816         * tree-parloops.c: Likewise.
1817         * tree-pass.h: Likewise.
1818         * tree-phinodes.c: Likewise.
1819         * tree-predcom.c: Likewise.
1820         * tree-pretty-print.c: Likewise.
1821         * tree-profile.c: Likewise.
1822         * tree-scalar-evolution.c: Likewise.
1823         * tree-ssa-address.c: Likewise.
1824         * tree-ssa-alias.c: Likewise.
1825         * tree-ssa-ccp.c: Likewise.
1826         * tree-ssa-coalesce.c: Likewise.
1827         * tree-ssa-copy.c: Likewise.
1828         * tree-ssa-copyrename.c: Likewise.
1829         * tree-ssa-dce.c: Likewise.
1830         * tree-ssa-dom.c: Likewise.
1831         * tree-ssa-dse.c: Likewise.
1832         * tree-ssa-forwprop.c: Likewise.
1833         * tree-ssa-ifcombine.c: Likewise.
1834         * tree-ssa-live.c: Likewise.
1835         * tree-ssa-live.h: Likewise.
1836         * tree-ssa-loop-ch.c: Likewise.
1837         * tree-ssa-loop-im.c: Likewise.
1838         * tree-ssa-loop-ivcanon.c: Likewise.
1839         * tree-ssa-loop-ivopts.c: Likewise.
1840         * tree-ssa-loop-manip.c: Likewise.
1841         * tree-ssa-loop-niter.c: Likewise.
1842         * tree-ssa-loop-prefetch.c: Likewise.
1843         * tree-ssa-loop-unswitch.c: Likewise.
1844         * tree-ssa-loop.c: Likewise.
1845         * tree-ssa-math-opts.c: Likewise.
1846         * tree-ssa-operands.c: Likewise.
1847         * tree-ssa-operands.h: Likewise.
1848         * tree-ssa-phiopt.c: Likewise.
1849         * tree-ssa-phiprop.c: Likewise.
1850         * tree-ssa-pre.c: Likewise.
1851         * tree-ssa-propagate.c: Likewise.
1852         * tree-ssa-reassoc.c: Likewise.
1853         * tree-ssa-sccvn.c: Likewise.
1854         * tree-ssa-sink.c: Likewise.
1855         * tree-ssa-structalias.c: Likewise.
1856         * tree-ssa-ter.c: Likewise.
1857         * tree-ssa-threadedge.c: Likewise.
1858         * tree-ssa-threadupdate.c: Likewise.
1859         * tree-ssa-uncprop.c: Likewise.
1860         * tree-ssa.c: Likewise.
1861         * tree-ssanames.c: Likewise.
1862         * tree-switch-conversion.c: Likewise.
1863         * tree-tailcall.c: Likewise.
1864         * tree-vect-data-refs.c: Likewise.
1865         * tree-vect-generic.c: Likewise.
1866         * tree-vect-loop-manip.c: Likewise.
1867         * tree-vect-loop.c: Likewise.
1868         * tree-vect-patterns.c: Likewise.
1869         * tree-vect-slp.c: Likewise.
1870         * tree-vect-stmts.c: Likewise.
1871         * tree-vectorizer.c: Likewise.
1872         * tree-vectorizer.h: Likewise.
1873         * tree-vrp.c: Likewise.
1874         * tree.c: Likewise.
1875         * tree.def: Likewise.
1876         * tree.h: Likewise.
1877         * treestruct.def: Likewise.
1878         * unwind-compat.c: Likewise.
1879         * unwind-dw2-fde-glibc.c: Likewise.
1880         * unwind-dw2.c: Likewise.
1881         * value-prof.c: Likewise.
1882         * value-prof.h: Likewise.
1883         * var-tracking.c: Likewise.
1884         * varasm.c: Likewise.
1885         * varpool.c: Likewise.
1886         * vec.c: Likewise.
1887         * vec.h: Likewise.
1888         * vmsdbgout.c: Likewise.
1889         * web.c: Likewise.
1890         * xcoffout.c: Likewise.
1891
1892 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1893
1894         * pa.c (output_call): Only use sr4 for long interspace calls if
1895         call binds local and generating non PIC code.
1896         (attr_length_call): Adjust length calculation for above.
1897
1898 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1899
1900         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
1901         (add<mode>3_carry): Change operand order of plus RTX.
1902         (*add<mode>3_carry): Ditto.
1903         (*addsi3_carry_zext): Ditto.
1904         (*add<dwi>3_doubleword): Update for changed operand order.
1905         (*negti2_1 splitter): Ditto.
1906         (*negdi2_1 splitter): Ditto.
1907         (<plusminus_insn><mode>3_carry): Macroize expander from
1908         {add,sub}<mode>3_carry patterns using plusminus code iterator.
1909         (*<plusminus_insn><mode>3_carry): Macroize insn from
1910         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
1911         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
1912         patterns using SDWIM mode iterator.
1913         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
1914         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
1915         using DWIH mode iterator.
1916         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
1917         using SWI mode iterator.
1918         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
1919         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
1920         patterns using SWIM mode iterator.
1921         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
1922         patterns using SWI248 mode iterator.
1923         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
1924         patterns using SWI mode iterator.
1925         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
1926         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
1927
1928 2009-11-24  Michael Matz  <matz@suse.de>
1929
1930         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
1931
1932 2009-11-24  David Binderman  <dcb314@hotmail.com>
1933
1934         * expr.c (store_field): Remove set but not used local variable
1935         width_mask.
1936         (expand_expr_real_2): Remove treeop2.
1937         * gcse.c (update_ld_motion_stores): Remove new_rtx.
1938         * haifa-sched.c (max_issue): Remove points.
1939         (sched_create_recovery_edges): Remove e.
1940         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
1941
1942 2009-11-24  Nick Clifton  <nickc@redhat.com>
1943
1944         * config/v850/v850.c (function_arg): Fix handling of zero-length
1945         function arguments.
1946
1947 2009-11-24  Michael Matz  <matz@suse.de>
1948
1949         * tree.h (union tree_ann_d): Don't declare.
1950         (tree_base): Remove ann field.
1951         (struct var_ann_d): Declare forward.
1952         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
1953         (DECL_VAR_ANN_PTR): New macro.
1954         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
1955         accept only VAR, PARM or RESULT decls.
1956         (create_tree_common_ann): Remove.
1957         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
1958         * tree-eh.c (lookup_expr_eh_lp): Remove.
1959         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
1960         DECL_VAR_ANN_PTR.
1961         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
1962         * tree-flow.h (enum tree_ann_type): Remove.
1963         (struct tree_ann_common_d): Remove.
1964         (struct var_ann_d): Remove common field.
1965         (union tree_ann_d): Remove.
1966         (tree_ann_t, tree_ann_common_t): Remove typedefs.
1967         (tree_common_ann, get_tree_common_ann, ann_type,
1968         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
1969         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
1970         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
1971         * builtins.c (expand_builtin_memcpy): Use
1972         currently_expanding_gimple_stmt instead of tree annotation.
1973         (expand_builtin_memset_args): Ditto.
1974         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
1975         (expand_call_stmt): Don't set tree annotation.
1976         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
1977         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
1978         * gimple.h (currently_expanding_gimple_stmt): Declare.
1979
1980 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
1981
1982         * dwarf2out.c (add_location_or_const_value_attribute): Remove
1983         useless NOTE_VAR_LOCATION_STATUS call.
1984         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
1985
1986 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
1987
1988         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
1989         being called recursively.
1990
1991 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
1992
1993         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
1994         $(MD5_H) params.def params.h prefix.h tree-inline.h.
1995
1996 2009-11-24  Paul Brook  <paul@codesourcery.com>
1997
1998         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
1999         typo.
2000
2001 2009-11-24  Julian Brown  <julian@codesourcery.com>
2002             Paul Brook  <paul@codesourcery.com>
2003
2004         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
2005         (arm_dwarf_register_span): New function.
2006         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
2007
2008 2009-11-24  David Binderman  <dcb314@hotmail.com>
2009
2010         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
2011         local variable bb_note.
2012         * dominance.c (get_dominated_by): Likewise local var n.
2013         (output_file_names): Likewise local var idx.
2014         (add_location_or_const_value_attribute): Likewise local var status.
2015         * dwarf2out.c (gen_variable_die): Likewise local var field.
2016         * emit-rtl.c (no_line_numbers): Remove.
2017         (init_emit_once): Remove line_numbers parameter.
2018         * rtl.h (init_emit_once): Adjust prototype.
2019         * toplev.c (backend_init): Adjust init_emit_once call.
2020
2021 2009-11-24  Richard Guenther  <rguenther@suse.de>
2022
2023         PR tree-optimization/42142
2024         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
2025         Handle iv-dependent (non-)kills properly.
2026         (mark_aliased_reaching_defs_necessary): Pass the basic-block
2027         of the reference statement to mark_aliased_reaching_defs_necessary_1.
2028
2029 2009-11-24  Martin Jambor  <mjambor@suse.cz>
2030
2031         PR tree-optimization/42154
2032         * tree-sra.c (struct access): Added comments.
2033         (sra_modify_expr): Build references to the old aggregate with
2034         build_ref_for_offset instead of reusing access->expr.
2035         (load_assign_lhs_subreplacements): Likewise.
2036
2037 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
2038
2039         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
2040         to expander.
2041         (sub<mode>3_carry): Ditto.
2042         (x86_mov<mode>cc_0_m1): Ditto.
2043         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
2044         for ix86_carry_flag_operator operator predicate.
2045         (*sub<mode>3_carry): Ditto.
2046         (*x86_mov<mode>cc_0_m1): Ditto.
2047         (*addsi3_carry_zext): Use VOIDmode match_operator for
2048         ix86_carry_flag_operator operator predicate.
2049         (*subsi3_carry_zext): Ditto.
2050         (*x86_mov<mode>cc_0_m1_s): Ditto.
2051         (*x86_mov<mode>cc_0_m1_neg): Ditto.
2052         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
2053         check operator sub-expressions for FLAGS_REG and const0_rtx.
2054         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
2055         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
2056         (ix86_expand_int_addcc): Update calls to
2057         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
2058         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
2059         Do not set mode of compare operation.
2060
2061 2009-11-23  Jan Hubicka  <jh@suse.cz>
2062
2063         PR middle-end/42151
2064         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
2065         twice.
2066
2067 2009-11-23  Jan Hubicka  <jh@suse.cz>
2068
2069         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
2070         wrong profile updates.
2071         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
2072         having largest frequency.
2073         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
2074         used uninitalized warning.
2075         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
2076         frequencies.
2077
2078 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
2079
2080         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
2081         of gen_rtx_REG to generate operand 5.
2082         (*cmp_ssub_sidi): Ditto.
2083
2084 2009-11-23  Richard Henderson  <rth@redhat.com>
2085
2086         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
2087         mismatch.
2088
2089 2009-11-23  Paul Brook  <paul@codesourcery.com>
2090
2091         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
2092         case for noreturn functions.
2093         (arm_compute_save_reg_mask): Remove special noreturn handling.
2094
2095 2009-11-23  Richard Guenther  <rguenther@suse.de>
2096
2097         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
2098         size for DECL bases.
2099
2100 2009-11-22  Richard Henderson  <rth@redhat.com>
2101
2102         * i386.c (avx_vpermilp_parallel): New function.
2103         * i386-protos.h: Declare it.
2104         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
2105         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
2106         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
2107         (ssescalarnum, ssedoublesizemode): Add AVX modes.
2108         (vpermilbits): Remove.
2109         (avx_vpermil<mode>): Change insns to expanders.
2110         (*avx_vpermil<mode>): New.  Use vec_select.
2111
2112 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
2113
2114         * opts.c (decode_options): Don't enable flag_schedule_insns
2115         when optimizing for size.
2116         * doc/invoke.texi: Document change.
2117
2118 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
2119
2120         PR target/42113
2121         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
2122         of scratch register to SImode.
2123         (*cmp_sadd_sidi): Ditto.
2124         (*cmp_ssub_si): Ditto.
2125         (*cmp_ssub_sidi): Ditto.
2126
2127 2009-11-21  Ian Lance Taylor  <iant@google.com>
2128
2129         * Makefile.in (HOST_LIBS): Move higher in file.
2130         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
2131         is not empty, set to $(CC) and $(CFLAGS).
2132
2133 2009-11-22  Martin Jambor  <mjambor@suse.cz>
2134
2135         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
2136         V_C_E of an SSA_NAME or an invariant if lvalue is required.
2137         (verify_gimple_call): Verify LHS also with with
2138         verify_types_in_gimple_reference.
2139
2140 2009-11-21  Martin Jambor  <mjambor@suse.cz>
2141
2142         PR middle-end/42025
2143         * tree-sra.c (access_precludes_ipa_sra_p): New function.
2144         (splice_param_accesses): Check all accesses by calling
2145         access_precludes_ipa_sra_p.
2146         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
2147         not convert types if it is true.
2148         (sra_ipa_modify_assign): Convert types in case of mismatch.
2149
2150 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
2151
2152         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
2153         for operand 1.
2154
2155 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
2156
2157         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
2158         (mips_mulsidi3_gen_fn): Declare new function.
2159         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
2160         * config/mips/mips.md (<u>mulsidi3): Change condition to use
2161         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
2162         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
2163         (mulsidi3_64bit_dmul): New define_insn.
2164
2165 2009-11-21  Ben Elliston  <bje@au.ibm.com>
2166
2167         * gengtype-lex.l: Enable noinput flex option.
2168         (YY_NO_INPUT): Remove define.
2169
2170 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
2171
2172         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
2173         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
2174         (insert_debug_temps_for_defs): Handle PHI nodes.
2175         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
2176         SSA names.
2177
2178 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
2179
2180         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
2181         after remove_phi_node.
2182
2183 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
2184
2185         PR tree-optimization/42078
2186         * gimple.h (gimple_replace_lhs): New declaration.
2187         * gimple.c (gimple_replace_lhs): New function.
2188         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
2189         modifying the call.
2190
2191 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
2192
2193         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
2194         (xop_mulv2div2di3_low): Same.
2195         (*xop_pmacsdqh_mem): Same.
2196
2197 2009-11-20  Richard Henderson  <rth@redhat.com>
2198
2199         * config/i386/i386-builtin-types.awk: New file.
2200         * config/i386/i386-builtin-types.def: New file.
2201         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
2202         * config/i386/i386.c: Include it.
2203         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
2204         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
2205         (struct builtin_isa): Remove GTY marker.  Replace tree type with
2206         ix86_builtin_func_type; add set_and_not_built_p.
2207         (def_builtin): Change type parameter to tcode; use
2208         ix86_get_builtin_func_type; update all callers.  Accept zero mask
2209         to mean the builtin is unconditionally available.
2210         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
2211         being set to NULL.
2212         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
2213         Update some users to rationalized enumeration codes from new include.
2214         (enum multi_arg_type): Remove.  Replace all enumeration values
2215         with defines to new ix86_builtin_func_type.
2216         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
2217         all type resolution to def_builtin.
2218         (ix86_init_builtin_types): Split out from ...
2219         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
2220
2221 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
2222
2223         PR target/41787
2224         * config/rs6000/rs6000.c (struct machine_function): Revert
2225         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
2226         (rs6000_expand_to_rtl_hook): Ditto.
2227         (rs6000_check_vector_mode): Ditto.
2228         (compute_vrsave_mask): Ditto.
2229
2230 2009-11-20  Paul Brook  <paul@codesourcery.com>
2231
2232         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
2233         * config/arm/arm-cores.def: Add cortex-a5.
2234         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
2235         * config/arm/arm-tune.md: Regenerate.
2236
2237 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
2238
2239         PR middle-end/39960
2240         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
2241         (ref_pos): New field in structure.
2242         (insert_new_var_in_stmt): New function.
2243
2244
2245 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2246
2247         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
2248         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
2249         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
2250         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
2251         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2252         INT_LEAST64_TYPE): Define.
2253         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
2254         UINT_LEAST64_TYPE): Define.
2255         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
2256         INT_FAST64_TYPE): Define.
2257         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2258         UINT_FAST64_TYPE): Define.
2259         (INTPTR_TYPE, UINTPTR_TYPE): Define.
2260
2261 2009-11-20  Julian Brown  <julian@codesourcery.com>
2262
2263         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
2264         specially for Thumb-1.
2265         (ASM_OUTPUT_REG_POP): Likewise.
2266
2267 2009-11-19  Jason Merrill  <jason@redhat.com>
2268
2269         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
2270
2271 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
2272             Rafael Avila de Espindola  <espindola@google.com>
2273
2274         * doc/plugins.texi (Plugin initialization): Added advices for
2275         retrieving the version of GCC at plugin compilation and loading times.
2276
2277 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
2278
2279         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
2280         (dump_active_plugins): output to file everything. Use
2281         internationalized dump & FMT_FOR_PLUGIN_EVENT.
2282
2283 2009-11-19  Richard Guenther  <rguenther@suse.de>
2284
2285         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
2286         around truth-valued expressions.
2287         * tree.c (free_lang_data): Untangle check for LTO frontend.
2288
2289 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
2290
2291         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
2292         of cgraph_node_for_decl.
2293         * cgraph.h (cgraph_node_for_decl): Remove prototype.
2294         * cgraph.c (cgraph_node_for_decl): Remove.
2295         (cgraph_get_node): Just return NULL if !cgraph_hash.
2296
2297 2009-11-19  Paul Brook  <paul@codesourcery.com>
2298
2299         * config.gcc: Add new ARM --with-fpu options.
2300         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
2301         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
2302
2303 2009-11-18  Richard Guenther  <rguenther@suse.de>
2304
2305         * gimple.h (union gimple_statement_d): Add gsmembase member.
2306         (gimple_vuse_op): Use gsmembase for access.
2307         (gimple_vdef_op): Likewise.
2308         (gimple_vuse): Likewise.
2309         (gimple_vdef): Likewise.
2310         (gimple_vuse_ptr): Likewise.
2311         (gimple_vdef_ptr): Likewise.
2312         (gimple_set_vuse): Likewise.
2313         (gimple_set_vdef): Likewise.
2314         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
2315
2316 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
2317
2318         * doc/arm-neon-intrinsics.texi: Regenerated.
2319
2320 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
2321
2322         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
2323
2324 2009-11-18  Paul Brook  <paul@codesourcery.com>
2325             Daniel Jacobowitz  <dan@codesourcery.com>
2326
2327         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
2328         (arm_arch7em): New variable.
2329         (all_architectures): Add armv7e-m.
2330         (arm_override_options): Set arm_arch7em.
2331         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
2332         Include arm_arch7em.
2333         (arm_arch7em): Declare.
2334
2335 2009-11-18  Richard Guenther  <rguenther@suse.de>
2336
2337         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
2338         a valid field decl if checking is enabled.
2339
2340 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2341
2342         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
2343         (lto_ipa_fixup_call_notes): Declare.
2344         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
2345         (update_call_notes_after_inlining): Copy call stmt uid to the new
2346         edge.
2347         (ipa_write_param_call_note): New function.
2348         (ipa_read_param_call_note): New function
2349         (ipa_write_node_info): Write also param call notes.  Removed a bogus
2350         comment, reformatted to fit 80 columns.
2351         (ipa_read_node_info): Read also param call notes. Removed a bogus
2352         comment.  Remove ipa_edge_args_vector growth.
2353         (lto_ipa_fixup_call_notes): New function.
2354         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
2355         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
2356         inlining regardless of flag_wpa.
2357         (cgraph_decide_inlining_of_small_functions): Likewise.
2358         (cgraph_decide_inlining): Likewise.
2359         (inline_read_summary): Likewise.
2360
2361 2009-11-18  Jan Hubicka  <jh@suse.cz>
2362
2363         * predict.c (compute_function_frequency): Export.
2364         * predict.h (compute_function_frequency): Declare.
2365         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
2366
2367 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2368
2369         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
2370         on all nodes we write summaries for.
2371
2372 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
2373
2374         PR middle-end/22201
2375         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
2376         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
2377         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
2378         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
2379         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
2380         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
2381         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
2382         description string.
2383
2384 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
2385
2386         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
2387         unnecessarily.
2388         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
2389
2390         PR c++/3187
2391         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
2392         fields.
2393         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2394         prototypes.
2395         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
2396         cgraph_materialize_all_clones): Handle same_body aliases.
2397         * cgraph.c (cgraph_allocate_node): New function.
2398         (cgraph_create_node): Use it.
2399         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
2400         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
2401         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2402         functions.
2403         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
2404         (input_node): Stream in same_body aliases.
2405         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
2406         for same_body aliases.
2407         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
2408
2409 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2410
2411         PR other/39888
2412         * config/darwin.h: Use the extension stub libraries to access
2413         current libgcc_s features.
2414
2415 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2416
2417         PR debug/41926
2418         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
2419         (vect_transform_loop): Call it.
2420
2421 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2422
2423         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
2424         released SSA names.
2425
2426 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2427
2428         PR debug/41888
2429         PR debug/41886
2430         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
2431         are ok.
2432         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
2433         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
2434         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
2435         (sese_bad_liveouts_use): New.
2436         (sese_reset_debug_liveouts_bb): New.
2437         (sese_build_liveouts): Use it.
2438         (rename_variables_in_stmt): Reset debug stmts rather than creating
2439         new vars for them.
2440         (expand_scalar_variable_stmt): Likewise.
2441
2442 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2443
2444         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
2445         (df_ref_remove): Likewise.
2446
2447 2009-11-17  Jan Hubicka  <jh@suse.cz>
2448
2449         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
2450         info.
2451
2452 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
2453
2454         * toplev.c (process_options): Remove dead code.
2455         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
2456
2457 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
2458
2459         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
2460         nodes.
2461
2462 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2463
2464         PR tree-optimization/41857
2465         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
2466         TYPE's address space instead of pointer to TYPE.
2467
2468 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2469
2470         * reload.c (find_reloads_address): Fix typo.
2471
2472 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2473
2474         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
2475         registers in leaf functions if possible.
2476
2477 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2478
2479         * config/m68k/m68k-devices.def: Add MCF5441x family.
2480
2481 2009-11-17  Jan Hubicka  <jh@suse.cz>
2482
2483         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
2484         removed node.
2485         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
2486
2487 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
2488
2489         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
2490         nest ior expressions.
2491         (x86_64_szext_nonmemory_operand): Ditto.
2492         (call_insn_operand): Ditto.
2493
2494 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2495
2496         * stmt.c (expand_asm_stmt): Get locus from stmt.
2497
2498 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2499
2500         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
2501         Create the decl label for the new dest block on demand.  Require
2502         a fallthrough edge if no asm labels were redirected.
2503
2504 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
2505
2506         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
2507         operand 1 predicate.
2508         (cstoresi4): Ditto for operand 2.
2509         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
2510         patterns using SDWIM mode iterator.
2511         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
2512         using SWIM mode iterator.
2513         (cmpdi_1): Rename from cmpdi_1_rex64.
2514         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
2515         SWI48 mode iterator.
2516         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
2517         using SWI mode iterator.
2518         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
2519         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
2520         (*cmpqi_ext_3_insn): Make private.
2521         (*cmpqi_ext_3_insn_rex64): Make private.
2522         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
2523         * config/i386/predicates.md (cmpsi_operand): Remove.
2524
2525 2009-11-16  Paul Brook  <paul@codesourcery.com>
2526
2527         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
2528         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
2529
2530 2009-11-14  Jan Hubicka  <jh@suse.cz>
2531
2532         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
2533         ENTRY_BLOCK_PTR.
2534         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
2535         zero out all callees.
2536         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
2537         frequency and count match.
2538         * ipa-inline.c (update_noncloned_frequencies): New function.
2539         (cgraph_clone_inlined_nodes): Use it.
2540         * tree-inline.c (copy_bb): Fix frequency scaling; output
2541         diagnostic on frequency mismatches to dump file.
2542         (initialize_cfun): Do not scale frequency; fix count scaling;
2543         initialize entry and exit block frequencies; copy profile info.
2544         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
2545         (copy_body): Use frequency_scale as argument.
2546         (expand_call_inline): Compute frequency scale and output diagnostic
2547         to dump file.
2548         (delete_unreachable_blocks_update_callgrah): Remove checking that
2549         has to be done after edge redirection.
2550         (tree_function_versioning): Update initialize_cfun and copy_body call.
2551
2552 2009-11-14  Jan Hubicka  <jh@suse.cz>
2553
2554         * cgraph.c (cgraph_release_function_body): Update use of
2555         ipa_transforms_to_apply.
2556         (cgraph_remove_node): Remove ipa_transforms_to_apply.
2557         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
2558         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
2559         copied body.
2560         (cgraph_materialize_clone): Remove original if dead.
2561         * lto-streamer-in.c (lto_read_body): Remove FIXME and
2562         ipa_transforms_to_apply hack.
2563         * function.h (struct function): Add ipa_transforms_to_apply.
2564         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
2565         * tree-inline.c (copy_bb): Update sanity check.
2566         (initialize_cfun): Do not copy ipa_transforms_to_apply.
2567         (expand_call_inline): remove dead clone originals.
2568         (tree_function_versioning): Merge transformation queues.
2569         * passes.c (add_ipa_transform_pass): Remove.
2570         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
2571         tracking.
2572         (execute_all_ipa_transforms): Update.
2573         (execute_one_pass): Update.
2574
2575 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2576
2577         PR target/21078, 21080
2578         * config/avr/avr.c (avr_return_addr_rtx): New function for
2579         builtin_return_address.
2580         (expand_prologue): Calculate stack usage.
2581         (avr_asm_function_end_prologue): Output stack size and offset label.
2582         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
2583         (machine_function): Add stack_usage.
2584         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
2585
2586 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
2587
2588         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
2589         new 'outgoing' argument.
2590         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
2591         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2592         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
2593         iq2000_function_value_regno_p.
2594         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2595         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
2596         Declare.
2597
2598 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
2599
2600         PR target/42031
2601         * arm.md (adddi_sesidi_di): Place tied contraint first.
2602         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
2603         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
2604         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
2605         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
2606         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
2607         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
2608         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
2609         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
2610         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
2611
2612 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
2613
2614         * config/i386/predicates.md (call_register_no_elim_operand):
2615         New predicate.  Reject stack register as valid call operand
2616         for 32bit targets.
2617         (call_insn_operand): Use call_register_no_elim_operand.
2618
2619 2009-11-13  Richard Henderson  <rth@redhat.com>
2620
2621         * function.c (stack_protect_prologue): Don't bypass expand_expr
2622         for stack_protect_guard and guard_decl.
2623         (stack_protect_epilogue): Likewise.
2624
2625 2009-11-13  Jan Hubicka  <jh@suse.cz>
2626
2627         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
2628         when to PUBLIC is set.
2629
2630 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
2631
2632         PR middle-end/42029
2633         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
2634         tmp_load if needed.
2635
2636 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2637
2638         PR target/41900
2639         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
2640         *call_value_1): Use "lsm" as operand 1 constraint.
2641         * config/i386/predicates.md (call_insn_operand): Depend on
2642         index_register_operand to avoid %esp register.
2643
2644 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2645
2646         Revert:
2647         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2648
2649         PR target/41900
2650         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2651         (TARGET_CALL_ESP): New define.
2652         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2653         X86_ARCH_CALL_ESP.
2654         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2655         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2656         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2657         TARGET_CALL_ESP.
2658         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2659         New patterns, use "lsm" as operand 1 constraint.
2660         * config/i386/predicates.md (call_insn_operand): Depend on
2661         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2662
2663 2009-11-13  Jason Merrill  <jason@redhat.com>
2664
2665         PR debug/26965
2666         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
2667         Don't emit a second declaration at any scope.
2668
2669 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2670
2671         PR rtl-optimization/41697
2672         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
2673         a conditional jump has a single successor.
2674
2675 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2676
2677         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
2678         allocate reg_last when in case lazy_reg_last is true.
2679         (init_deps_reg_last): New.
2680         (free_deps): When max_reg is 0, this context is already freed.
2681         * sched-int.h (init_deps_reg_last): Export.
2682         (init_deps): Update prototype.
2683         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
2684         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
2685         * ddg.c (build_intra_loop_deps): Likewise.
2686         * sel-sched-ir.c (copy_deps_context, create_deps_context,
2687         reset_deps_context, deps_init_id): Likewise.
2688         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
2689         (free_data_for_scheduled_insn): New, break down from ...
2690         (free_first_time_insn_data): ... here.
2691         (has_dependence_p): Allocate reg_last now, when it is needed.
2692         (extend_insn_data): When maximal LUID is big enough, allocate
2693         per-insn data in smaller chunks.
2694         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
2695         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
2696         in scheduled insn.
2697
2698 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2699
2700         * config/i386/i386.md (call_value): Fix comment.
2701         (sibcall_value): Ditto.
2702
2703 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
2704
2705         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
2706         (MD_FROB_UPDATE_CONTEXT): Define.
2707
2708 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
2709             Laurent GUERBY  <laurent@guerby.net>
2710
2711         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
2712         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
2713         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
2714
2715 2009-11-12  Jan Hubicka  <jh@suse.cz>
2716
2717         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
2718         and clear DECL_COMMON on localized declarations.
2719
2720 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2721
2722         PR rtl-opt/38582
2723         * regrename.c (struct du_head): New structure; some elements moved
2724         from...
2725         (struct du_chain): ... this one.
2726         (open_chains, closed_chains): Now of type struct du_head *.
2727         (do_replace): Accept du_head argument, not du_chain.  All callers
2728         changed.  Modified code to match new data structures.
2729         (build_def_use): Return a list of du_head structures.  Modified code
2730         to match new data structures.
2731         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2732         callers changed.  Modified code to match new data structures.
2733         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2734         callers changed.  Modified code to match new data structures.
2735         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2736         Allocate a du_head structure as well as a du_chain when creating a
2737         new chain.  Modified other code to match new data structures.
2738
2739 2009-11-12  Jan Hubicka  <jh@suse.cz>
2740
2741         * cgraph.h (varpool_node_name): Declare.
2742         * cgraphunit.c (process_function_and_variable_attributes): Set
2743         force_output flag on used variables.
2744         * ipa.c (function_and_variable_visibility): Dump externally visible
2745         and needed variables.
2746         * varpool.c (varpool_node_name): Export.
2747         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2748         ignore needed flag.
2749
2750 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2751
2752         PR middle-end/41930
2753         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2754         processing if XEXP (x, i) is NULL.
2755
2756 2009-11-12  Jan Hubicka  <jh@suse.cz>
2757
2758         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2759         imply PUBLIC || EXTERNAL.
2760
2761 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2762
2763         PR middle-end/41440
2764         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2765         single successor block, ending with jump created by RTL expander.
2766
2767 2009-11-11  Jan Hubicka  <jh@suse.cz>
2768
2769         PR middle-end/41729
2770         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2771         and WEAK variables at -fwhole-program.
2772
2773         PR middle-end/41735
2774         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2775         functions/variables are not needed even if they are externally visible.
2776
2777 2009-11-11  Jan Hubicka  <jh@suse.cz>
2778
2779         (patch by Richard Guenther)
2780         * lto-streamer-out.c (output_function): Output head of argument list
2781         earlier.
2782         * lto-streamer-in.c (input_function): Re-map arguments into merged
2783         declaration.
2784
2785 2009-11-11  Jan Hubicka  <jh@suse.cz>
2786
2787         * lto-cgraph.c: Include gcov-io.h
2788         (output_profile_summary): New function.
2789         (output_cgraph): Use it.
2790         (input_profile_summary): New function.
2791         (input_cgraph): Use it.
2792         * coverage.c (build_ctr_info_value): Use varpool; initalize
2793         DECL_ASSEMBLER_NAME.
2794         (create_coverage): Likewise.
2795         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2796         (tree_init_edge_profiler): Likewise.
2797         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2798
2799 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2800
2801         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2802         * c-pragma.c (def_pragma_macro_value): Likewise.
2803         (def_pragma_macro): Likewise.
2804         (pushed_macro_table): Likewise.
2805         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2806         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2807
2808 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2809
2810         * doc/plugins.texi (Registering custom attributes): section
2811         renamed as (Registering custom attributes or pragmas).
2812         Mentions custom attributes & pragmas, and c_register_pragma, with
2813         a small example.
2814         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2815         pragmas.
2816         * doc/extend.texi (Function Attributes): Mentions that plugin can
2817         provide their attributes.
2818
2819 2009-11-11  Jon Beniston  <jon@beniston.com>
2820
2821         * config.gcc: Add lm32 elf and uclinux targets.
2822         * config/lm32: New directory.
2823         * config/lm32/lm32.c: New file.
2824         * config/lm32/lm32.h: New file.
2825         * config/lm32/lm32.md: New file.
2826         * config/lm32/lm32.opt: New file.
2827         * config/lm32/lm32-protos.h: New file.
2828         * config/lm32/constraints.md: New file.
2829         * config/lm32/predicates.md: New file.
2830         * config/lm32/sfp-machine.h: New file.
2831         * config/lm32/t-fprules-softfp: New file.
2832         * config/lm32/uclinux-elf.h: New file.
2833         * doc/invoke.texi: Document lm32 options.
2834         * doc/contrib.texi: Document lm32 porter.
2835         * doc/install.texi: Document lm32 targets.
2836
2837 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2838
2839         PR lto/41932
2840         * ipa-prop.c (ipa_update_after_lto_read): Call
2841         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2842         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2843
2844 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2845
2846         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2847         (neon_expand_vector_init): Use them.  Also handle non-constant
2848         vectors with identical elements and vectors with only one
2849         non-constant element.
2850         (arm_print_operand): Handle 'y' modifier.
2851         * config/arm/arm-protos.h (neon_make_constant): Declare.
2852         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2853         patterns.  Use VX instead of VDQW for the first one.  Allow
2854         a VFP alternative and V32 modes for the second one.
2855         * config/arm/neon.ml (shape_elt): Add Alternatives.
2856         (ops): Use Alternatives for vdup lane instructions.
2857         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2858         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2859
2860 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2861
2862         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2863         operands.
2864         (movti, mov<mode>): Call force_reg on one operand if required.
2865         * config/arm/vec-common.md (mov<mode>): Likewise.
2866
2867 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2868
2869         * config/arm/arm.c (arm_override_options): Enable scheduling for
2870         Thumb-2.
2871
2872 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2873
2874         PR target/10127
2875         PR ada/20548
2876         * expr.h (anti_adjust_stack_and_probe): Declare.
2877         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
2878         parameter and rewrite head comment.
2879         (allocate_dynamic_stack_space): Adjust call to above function.
2880         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
2881
2882         * tree.h (dwarf2out_args_size): Delete.
2883         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
2884         (dwarf2out_args_size_adjust): Delete prototype and move around.
2885         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2886         ACCUMULATE_OUTGOING_ARGS targets.
2887
2888 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2889
2890         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
2891         DECL_SIZE of DECL_RESULT before evaluating it.
2892
2893 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2894
2895         PR tree-optimization/41987
2896         * fold-const.c (const_binop): Avoid using fold_buildN().
2897
2898 2009-11-10  Martin Jambor  <mjambor@suse.cz>
2899
2900         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
2901         (execute_all_ipa_stmt_fixups): Declare.
2902         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
2903         * ipa-inline.c (pass_ipa_inline): Likewise.
2904         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
2905         * ipa-reference.c (pass_ipa_reference): Likewise.
2906         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
2907         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
2908         (pass_ipa_lto_finish_out): Likewise.
2909         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
2910         * passes.c (execute_ipa_stmt_fixups): New function.
2911         (execute_all_ipa_stmt_fixups): New function.
2912         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2913
2914 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2915
2916         PR ada/20548
2917         * explow.c (probe_stack_range): Fix typo.
2918         * config/sparc/sparc.md (probe_stack): New expander.
2919
2920 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
2921
2922         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2923
2924 2009-11-09  Jason Merrill  <jason@redhat.com>
2925
2926         * gdbinit.in (pgq): New function for printing gimple sequence.
2927
2928 2009-11-09  Paul Brook  <paul@codesourcery.com>
2929             Daniel Jacobowitz  <dan@codesourcery.com>
2930             Sandra Loosemore  <sandra@codesourcery.com>
2931
2932         * doc/extend.texi (Half-Precision): Update wording to reflect
2933         that there are now multiple -mfpu options that enable fp16
2934         hardware support.
2935         * doc/invoke.texi: Update list of ARM -mfpu= options.
2936         * config.gcc: Update ARM --with-fpu option list.
2937         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
2938         vfpv3xd and vfpv3xd-fp16.
2939         (use_vfp_abi): New function.
2940         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
2941         when undesirable.
2942         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
2943         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
2944         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
2945         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
2946         provides them.
2947         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
2948         NEON.
2949         (arm_print_operand): Handle 'p' modifier.
2950         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
2951         TARGET_FP16.
2952         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
2953         (TARGET_FP16): Define.
2954         * config/arm/vfp.md: Disable double-precision patterns if the FPU
2955         does not provide them.
2956         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
2957         double-precision values on a single-precision FPU.
2958         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
2959         double-precision constants.
2960         (movhf_vfp_neon): New pattern (was movhf_vfp).
2961         (movhf_vfp): Remove NEON instructions.
2962         * config/arm/constraints.md: Add new "Dy" constraint for
2963         double-precision constants.  Update description of "Dv".
2964         * config/arm/arm.md: Disable double-precision patterns if the FPU
2965         does not provide them
2966
2967 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
2968
2969         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
2970         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
2971         diagnostics.
2972
2973 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
2974
2975         * collect2.c (main): Search PLUGIN_LD for plugin linker.
2976
2977         * configure.ac (--with-plugin-ld): New.  Default to ld.
2978         * configure: Regenerated.
2979         * config.in: Likewise.
2980
2981         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
2982         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2983
2984 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
2985
2986         * config/openbsd-stdint.h: Change to reflect what
2987         c_common_nodes_and_builtins expects.
2988
2989 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
2990
2991         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
2992
2993 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
2994
2995         PR target/41985
2996         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
2997         function contains at least one local dynamic name.
2998         (print_operand) <case '&'>: Instead output operand lossage diagnostics
2999         here if that happens.
3000
3001 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
3002             Joern Rennecke  <amylaar@spamcop.net>
3003
3004         * cfgrtl.c (pass_free_cfg): Add pass name.
3005         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
3006         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
3007         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
3008         * df-core.c (pass_df_initialize_no_opt): Likewise.
3009         * except.c (pass_rtl_eh): Likewise.
3010         * function.c (pass_init_function, pass_leaf_regs): Likewise.
3011         * gcse.c (pass_rtl_pre): Change pass name.
3012         * passes.c (pass_postreload): Add pass name.
3013         (make_pass_instance): Don't use duplicate-tracking logic for
3014         names starting with '*'.
3015         (next_pass_1): Assert that pass has a name.
3016         (register_one_dump_file): If there is an space in the name,
3017         skip past it.
3018         * predict.c (pass_strip_predict_hints): Add pass name.
3019         * reg-stack.c (pass_stack_regs): Likewise.
3020         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
3021         * tree-cfg.c (pass_warn_function_return,
3022         pass_warn_function_noreturn): Add pass name.
3023         * tree-dfa.c (pass_referenced_vars): Likewise.
3024         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
3025         Fix whitespace before comment.
3026         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
3027         (pass_init_datastructures): Add pass name.
3028         * tree-ssa-loop.c (pass_record_bounds): Likewise.
3029         * tree-ssa.c (pass_early_warn_uninitialized,
3030         pass_late_warn_uninitialized): Likewise.
3031         * tree.c (pass_ipa_free_lang_data): Likewise.
3032         * doc/passes.texi (pass manager): Document how to disambiguate
3033         pass names.
3034
3035 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
3036
3037         * df-problems.c: Fix documentation for forward simulation of LR.
3038         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
3039         (df_simulate_finalize_forwards): Remove.
3040         * df.h (df_simulate_finalize_forwards): Remove.
3041
3042 2009-11-08  Richard Guenther  <rguenther@suse.de>
3043
3044         * tree-ssa-structalias.c (build_succ_graph): Properly make
3045         variables escape if they are stored to anything.
3046
3047 2009-11-08  Richard Guenther  <rguenther@suse.de>
3048
3049         PR rtl-optimization/41928
3050         * loop-invariant.c (free_loop_data): If we didn't allocate
3051         loop data do not try to free it.
3052
3053 2009-11-07  Jason Merrill  <jason@redhat.com>
3054
3055         * tree.c (reconstruct_complex_type): Preserve attributes.
3056
3057 2009-11-07  Richard Guenther  <rguenther@suse.de>
3058
3059         * tree-ssa-structalias.c (build_succ_graph): Feed stores
3060         to anything only to variables that can take pointers.
3061         (get_constraint_for_ssa_var): Properly exclude full
3062         variables from expanding.
3063         (first_vi_for_offset): Avoid overflow in arithmetic.
3064         (first_or_preceding_vi_for_offset): Likewise.
3065         (count_num_arguments): Fix implementation.
3066         (gate_ipa_pta): Do not run when not optimizing.
3067
3068 2009-11-07  David Binderman <dcb314@hotmail.com>
3069
3070         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
3071         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
3072         set but not used variables.
3073         (apply_args_reg_offset): Comment out as unused.
3074         * calls.c (flags_from_decl_or_type): Likewise.
3075         * genautomata.c (check_regexp_units_distribution): Likewise.
3076
3077 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
3078
3079         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
3080         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
3081         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
3082         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
3083         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
3084         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
3085         operand alternatives.
3086
3087 2009-11-06  Michael Matz  <matz@suse.de>
3088
3089         PR middle-end/41963
3090         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
3091         of a potential reciprocal to really be reciprocals.
3092
3093 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
3094
3095         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
3096         lwpintrin.h after immintrin.h.
3097         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
3098         typedefs.
3099
3100         PR middle-end/41935
3101         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
3102         or non-constant index, allow index one past the last element and
3103         allow exceeding array bound in arrays that might be used as flexible
3104         array members.
3105
3106 2009-11-05  Richard Henderson  <rth@redhat.com>
3107
3108         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
3109
3110 2009-11-05  Paul Brook  <paul@codesourcery.com>
3111
3112         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
3113         (arm_fpu_desc): New.
3114         (all_fpus): Add FPU details.
3115         (fp_model_for_fpu): Remove.
3116         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
3117         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
3118         (arm_file_start): Use arm_fpu_desc.
3119         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
3120         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
3121         arm_fpu_desc.
3122         (TARGET_FPA_EMU2): Define.
3123         (arm_fp_model, fputype, arm_fpu_tune): Remove.
3124         (vfp_reg_type, arm_fpu_desc): New.
3125         * config/arm/arm.md (attr fpu): Simplify.
3126         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
3127         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
3128         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
3129         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
3130         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
3131
3132 2009-11-05  Michael Matz  <matz@suse.de>
3133
3134         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
3135         on TARGET_RECIP.
3136         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
3137         for 1/sqrtf.
3138
3139 2009-11-04  Jason Merrill  <jason@redhat.com>
3140
3141         PR c++/36912
3142         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
3143         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
3144         (output_constant): Avoid crash after error.
3145
3146 2009-11-05  Martin Jambor  <mjambor@suse.cz>
3147
3148         * tree-sra.c (struct access): Changed comment of next_sibling field.
3149         (analyze_modified_params): Loop over accesses of a group rather than
3150         over all with the ame base, pass a common bitmap to
3151         walk_aliased_vdefs.
3152         (unmodified_by_ref_scalar_representative): Build link lists of
3153         accesses of a group.
3154         (splice_param_accesses): Likewise.
3155
3156 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
3157
3158         * df-scan.c (df-uses-record): Add case zero_extract of mem.
3159
3160 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
3161
3162         PR target/10127
3163         PR ada/20548
3164         * config/i386/i386.md (probe_stack): New expander.
3165         (logical operation peepholes): Do not split stack checking probes.
3166
3167 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
3168             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3169
3170         * doc/invoke.texi (-mlwp): Add documentation.
3171         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
3172         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
3173         (x86_64-*-*): Ditto.
3174         * config/i386/lwpintrin.h: New file, provide x86 compiler
3175         intrinisics for LWP.
3176         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
3177         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
3178         * config/i386/i386-c.c (ix86_target_macros_internal): Check
3179         ISA_FLAG for LWP.
3180         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
3181         * config/i386/i386.opt (-mlwp): New switch for LWP support.
3182         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
3183         (OPTION_MASK_ISA_LWP_UNSET): New.
3184         (ix86_handle_option): Handle -mlwp.
3185         (isa_opts): Handle -mlwp.
3186         (enum pta_flags): Add PTA_LWP.
3187         (override_options): Add LWP support.
3188         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
3189         (IX86_BUILTIN_LLWPCB32): Ditto.
3190         (IX86_BUILTIN_LLWPCB64): Ditto.
3191         (IX86_BUILTIN_SLWPCB16): Ditto.
3192         (IX86_BUILTIN_SLWPCB32): Ditto.
3193         (IX86_BUILTIN_SLWPCB64): Ditto.
3194         (IX86_BUILTIN_LWPVAL16): Ditto.
3195         (IX86_BUILTIN_LWPVAL32): Ditto.
3196         (IX86_BUILTIN_LWPVAL64): Ditto.
3197         (IX86_BUILTIN_LWPINS16): Ditto.
3198         (IX86_BUILTIN_LWPINS32): Ditto.
3199         (IX86_BUILTIN_LWPINS64): Ditto.
3200         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
3201         (builtin_description): Ditto.
3202         (ix86_init_mmx_sse_builtins): Ditto.
3203         (ix86_expand_special_args_builtin): Ditto.
3204         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
3205         LWP support.
3206         (UNSPEC_SLWP_INTRINSIC): Ditto.
3207         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
3208         (UNSPECV_LWPINS_INTRINSIC): Ditto.
3209         (lwp_llwpcbhi1): New lwp pattern.
3210         (lwp_llwpcbsi1): Ditto.
3211         (lwp_llwpcbdi1): Ditto.
3212         (lwp_slwpcbhi1): Ditto.
3213         (lwp_slwpcbsi1): Ditto.
3214         (lwp_slwpcbdi1): Ditto.
3215         (lwp_lwpvalhi3): Ditto.
3216         (lwp_lwpvalsi3): Ditto.
3217         (lwp_lwpvaldi3): Ditto.
3218         (lwp_lwpinshi3): Ditto.
3219         (lwp_lwpinssi3): Ditto.
3220         (lwp_lwpinsdi3): Ditto.
3221
3222 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3223             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
3224
3225         PR rtl-opt/41833
3226         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
3227         a vec_duplicate.
3228
3229 2009-11-04  Richard Guenther  <rguenther@suse.de>
3230             Rafael Avila de Espindola  <espindola@google.com>
3231
3232         * gcc.c (process_command): Handle arguments name@offset.
3233
3234 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
3235             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3236
3237         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
3238         (x86_64-*-*): Ditto.
3239         * config/i386/xopintrin.h: New file, provide common x86 compiler
3240         intrinisics for XOP.
3241         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
3242         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
3243         * config/i386/i386-c.c(ix86_target_macros_internal): Check
3244         ISA_FLAG for XOP.
3245         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
3246         * config/i386/i386.opt (-mxop): New switch for XOP support.
3247         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
3248         (UNSPEC_XOP_TRUEFALSE)
3249         (UNSPEC_XOP_PERMUTE)
3250         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
3251         (PPERM_*): New constants for vpperm instruction.
3252         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
3253         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
3254         (OPTION_MASK_ISA_XOP_UNSET): New.
3255         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
3256         (ix86_handle_option): Handle -mxop.
3257         (isa_opts): Handle -mxop.
3258         (enum pta_flags): Add PTA_XOP.
3259         (override_options): Add XOP support.
3260         (print_operand): Add code for XOP compare instructions.
3261         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
3262         (ix86_expand_int_vcond): Extend for XOP compare instruction.
3263
3264         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
3265         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
3266         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
3267         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
3268         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
3269         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
3270         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
3271
3272         (IX86_BUILTIN_VPCMOV256): Ditto.
3273         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
3274         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
3275         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
3276         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
3277         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
3278         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
3279
3280         (IX86_BUILTIN_VPPERM): Ditto.
3281
3282         (IX86_BUILTIN_VPMACSSWW): Ditto.
3283         (IX86_BUILTIN_VPMACSWW): Ditto.
3284         (IX86_BUILTIN_VPMACSSWD): Ditto.
3285         (IX86_BUILTIN_VPMACSWD): Ditto.
3286         (IX86_BUILTIN_VPMACSSDD): Ditto.
3287         (IX86_BUILTIN_VPMACSDD): Ditto.
3288         (IX86_BUILTIN_VPMACSSDQL): Ditto.
3289         (IX86_BUILTIN_VPMACSSDQH): Ditto.
3290         (IX86_BUILTIN_VPMACSDQL): Ditto.
3291         (IX86_BUILTIN_VPMACSDQH): Ditto.
3292         (IX86_BUILTIN_VPMADCSSWD): Ditto.
3293         (IX86_BUILTIN_VPMADCSWD): Ditto.
3294
3295         (IX86_BUILTIN_VPHADDBW): Ditto.
3296         (IX86_BUILTIN_VPHADDBD): Ditto.
3297         (IX86_BUILTIN_VPHADDBQ): Ditto.
3298         (IX86_BUILTIN_VPHADDWD): Ditto.
3299         (IX86_BUILTIN_VPHADDWQ): Ditto.
3300         (IX86_BUILTIN_VPHADDDQ): Ditto.
3301         (IX86_BUILTIN_VPHADDUBW): Ditto.
3302         (IX86_BUILTIN_VPHADDUBD): Ditto.
3303         (IX86_BUILTIN_VPHADDUBQ): Ditto.
3304         (IX86_BUILTIN_VPHADDUWD): Ditto.
3305         (IX86_BUILTIN_VPHADDUWQ): Ditto.
3306         (IX86_BUILTIN_VPHADDUDQ): Ditto.
3307         (IX86_BUILTIN_VPHSUBBW): Ditto.
3308         (IX86_BUILTIN_VPHSUBWD): Ditto.
3309         (IX86_BUILTIN_VPHSUBDQ): Ditto.
3310
3311         (IX86_BUILTIN_VPROTB): Ditto.
3312         (IX86_BUILTIN_VPROTW): Ditto.
3313         (IX86_BUILTIN_VPROTD): Ditto.
3314         (IX86_BUILTIN_VPROTQ): Ditto.
3315         (IX86_BUILTIN_VPROTB_IMM): Ditto.
3316         (IX86_BUILTIN_VPROTW_IMM): Ditto.
3317         (IX86_BUILTIN_VPROTD_IMM): Ditto.
3318         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
3319
3320         (IX86_BUILTIN_VPSHLB): Ditto.
3321         (IX86_BUILTIN_VPSHLW): Ditto.
3322         (IX86_BUILTIN_VPSHLD): Ditto.
3323         (IX86_BUILTIN_VPSHLQ): Ditto.
3324         (IX86_BUILTIN_VPSHAB): Ditto.
3325         (IX86_BUILTIN_VPSHAW): Ditto.
3326         (IX86_BUILTIN_VPSHAD): Ditto.
3327         (IX86_BUILTIN_VPSHAQ): Ditto.
3328
3329         (IX86_BUILTIN_VFRCZSS): Ditto.
3330         (IX86_BUILTIN_VFRCZSD): Ditto.
3331         (IX86_BUILTIN_VFRCZPS): Ditto.
3332         (IX86_BUILTIN_VFRCZPD): Ditto.
3333         (IX86_BUILTIN_VFRCZPS256): Ditto.
3334         (IX86_BUILTIN_VFRCZPD256): Ditto.
3335
3336         (IX86_BUILTIN_VPCOMEQUB): Ditto.
3337         (IX86_BUILTIN_VPCOMNEUB): Ditto.
3338         (IX86_BUILTIN_VPCOMLTUB): Ditto.
3339         (IX86_BUILTIN_VPCOMLEUB): Ditto.
3340         (IX86_BUILTIN_VPCOMGTUB): Ditto.
3341         (IX86_BUILTIN_VPCOMGEUB): Ditto.
3342         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
3343         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
3344
3345         (IX86_BUILTIN_VPCOMEQUW): Ditto.
3346         (IX86_BUILTIN_VPCOMNEUW): Ditto.
3347         (IX86_BUILTIN_VPCOMLTUW): Ditto.
3348         (IX86_BUILTIN_VPCOMLEUW): Ditto.
3349         (IX86_BUILTIN_VPCOMGTUW): Ditto.
3350         (IX86_BUILTIN_VPCOMGEUW): Ditto.
3351         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
3352         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
3353
3354         (IX86_BUILTIN_VPCOMEQUD): Ditto.
3355         (IX86_BUILTIN_VPCOMNEUD): Ditto.
3356         (IX86_BUILTIN_VPCOMLTUD): Ditto.
3357         (IX86_BUILTIN_VPCOMLEUD): Ditto.
3358         (IX86_BUILTIN_VPCOMGTUD): Ditto.
3359         (IX86_BUILTIN_VPCOMGEUD): Ditto.
3360         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
3361         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
3362
3363         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
3364         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
3365         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
3366         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
3367         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
3368         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
3369         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
3370         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
3371
3372         (IX86_BUILTIN_VPCOMEQB): Ditto.
3373         (IX86_BUILTIN_VPCOMNEB): Ditto.
3374         (IX86_BUILTIN_VPCOMLTB): Ditto.
3375         (IX86_BUILTIN_VPCOMLEB): Ditto.
3376         (IX86_BUILTIN_VPCOMGTB): Ditto.
3377         (IX86_BUILTIN_VPCOMGEB): Ditto.
3378         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
3379         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
3380
3381         (IX86_BUILTIN_VPCOMEQW): Ditto.
3382         (IX86_BUILTIN_VPCOMNEW): Ditto.
3383         (IX86_BUILTIN_VPCOMLTW): Ditto.
3384         (IX86_BUILTIN_VPCOMLEW): Ditto.
3385         (IX86_BUILTIN_VPCOMGTW): Ditto.
3386         (IX86_BUILTIN_VPCOMGEW): Ditto.
3387         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
3388         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
3389
3390         (IX86_BUILTIN_VPCOMEQD): Ditto.
3391         (IX86_BUILTIN_VPCOMNED): Ditto.
3392         (IX86_BUILTIN_VPCOMLTD): Ditto.
3393         (IX86_BUILTIN_VPCOMLED): Ditto.
3394         (IX86_BUILTIN_VPCOMGTD): Ditto.
3395         (IX86_BUILTIN_VPCOMGED): Ditto.
3396         (IX86_BUILTIN_VPCOMFALSED): Ditto.
3397         (IX86_BUILTIN_VPCOMTRUED): Ditto.
3398
3399         (IX86_BUILTIN_VPCOMEQQ): Ditto.
3400         (IX86_BUILTIN_VPCOMNEQ): Ditto.
3401         (IX86_BUILTIN_VPCOMLTQ): Ditto.
3402         (IX86_BUILTIN_VPCOMLEQ): Ditto.
3403         (IX86_BUILTIN_VPCOMGTQ): Ditto.
3404         (IX86_BUILTIN_VPCOMGEQ): Ditto.
3405         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
3406         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
3407
3408         (enum multi_arg_type): New enum for describing the various XOP
3409         intrinsic argument types.
3410         (bdesc_multi_arg): New table for XOP intrinsics.
3411         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
3412         (ix86_expand_multi_arg_builtin): New function for creating XOP
3413         intrinsics.
3414
3415         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
3416         (xop_pmacsww): Ditto.
3417         (xop_pmacssww): Ditto.
3418         (xop_pmacsdd): Ditto.
3419         (xop_pmacssdd): Ditto.
3420         (xop_pmacssdql): Ditto.
3421         (xop_pmacssdqh): Ditto.
3422         (xop_pmacsdql): Ditto.
3423         (xop_pmacsdql_mem): Ditto.
3424         (xop_mulv2div2di3_low): Ditto.
3425         (xop_pmacsdqh): Ditto.
3426         (xop_pmacsdqh_mem): Ditto.
3427         (xop_mulv2div2di3_high): Ditto.
3428         (xop_pmacsswd): Ditto.
3429         (xop_pmacswd): Ditto.
3430         (xop_pmadcsswd): Ditto.
3431         (xop_pmadcswd): Ditto.
3432         (xop_pcmov_<mode>): Ditto.
3433         (xop_pcmov_<mode>256): Ditto.
3434         (xop_phaddbw): Ditto.
3435         (xop_phaddbd): Ditto.
3436         (xop_phaddbq): Ditto.
3437         (xop_phaddwd): Ditto.
3438         (xop_phaddwq): Ditto.
3439         (xop_phadddq): Ditto.
3440         (xop_phaddubw): Ditto.
3441         (xop_phaddubd): Ditto.
3442         (xop_phaddubq): Ditto.
3443         (xop_phadduwd): Ditto.
3444         (xop_phadduwq): Ditto.
3445         (xop_phaddudq): Ditto.
3446         (xop_phsubbw): Ditto.
3447         (xop_phsubwd): Ditto.
3448         (xop_phsubdq): Ditto.
3449         (xop_pperm): Ditto.
3450         (rotl<mode>3): Ditto.
3451         (rotr<mode>3): Ditto.
3452         (xop_rotl<mode>3): Ditto.
3453         (xop_rotr<mode>3): Ditto.
3454         (vrotr<mode>3): Ditto.
3455         (vrotl<mode>3): Ditto.
3456         (xop_vrotl<mode>3): Ditto.
3457         (vlshr<mode>3): Ditto.
3458         (vashr<mode>3): Ditto.
3459         (vashl<mode>3
3460         (xop_ashl<mode>3): Ditto.
3461         (xop_lshl<mode>3): Ditto.
3462         (ashlv16qi3): Ditto.
3463         (lshlv16qi3): Ditto.
3464         (ashrv16qi3): Ditto.
3465         (ashrv2di3): Ditto.
3466         (xop_frcz<mode>2): Ditto.
3467         (xop_vmfrcz<mode>2): Ditto.
3468         (xop_frcz<mode>2256): Ditto.
3469         (xop_maskcmp<mode>3): Ditto.
3470         (xop_maskcmp_uns<mode>3): Ditto.
3471         (xop_maskcmp_uns2<mode>3): Ditto.
3472         (xop_pcom_tf<mode>3): Ditto.
3473
3474         * doc/invoke.texi (-mxop): Add documentation.
3475         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
3476
3477 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
3478
3479         PR driver/11810
3480         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
3481         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
3482         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
3483
3484 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
3485
3486         PR target/40835
3487         * arm.md (peephole2 patterns for move and compare): New.
3488
3489 2009-11-04  Nick Clifton  <nickc@redhat.com>
3490
3491         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
3492         Make sure that it does not allow CONST_DOUBLEs.
3493         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
3494         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
3495         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
3496         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
3497         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
3498         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
3499         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
3500         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
3501         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
3502         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
3503         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
3504         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
3505         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
3506         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
3507         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
3508
3509 2009-11-04  Richard Guenther  <rguenther@suse.de>
3510
3511         PR tree-optimization/41919
3512         * tree-vrp.c (test_for_singularity): Properly compare values.
3513
3514 2009-11-04  Revital Eres  <eres@il.ibm.com>
3515
3516         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3517         Consider peeling for alignment only for stores and remove
3518         redundant assignment.
3519
3520 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
3521
3522         PR target/41302
3523         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
3524         (m68k_ok_for_sibcall_p): Handle different result return locations.
3525
3526 2009-11-04  Richard Guenther  <rguenther@suse.de>
3527
3528         * c-opts.c (c_common_post_options): Move LTO option processing
3529         code ...
3530         * opts.c (decode_options): ... here.
3531
3532 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
3533
3534         * c-common.c (fold_offsetof_1): Use %wd instead of
3535         HOST_WIDE_INT_PRINT_DEC.
3536
3537 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3538
3539         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
3540         __pic__ or __PIC__.
3541
3542 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3543
3544         * config.gcc (vax-*-linux*): Keep the original contents of
3545         tmake_file while adding vax/t-linux.
3546
3547 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
3548
3549         PR target/10127
3550         PR ada/20548
3551         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
3552         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
3553         (STACK_CHECK_MOVING_SP): Likewise.
3554         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
3555         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
3556         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
3557         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
3558         Document PROBE_STACK.
3559         * explow.c (anti_adjust_stack_and_probe): New function.
3560         (allocate_dynamic_stack_space): Do not directly allocate space if
3561         STACK_CHECK_MOVING_SP, instead invoke above function.
3562         (emit_stack_probe): Handle probe_stack insn.
3563         (PROBE_INTERVAL): New macro.
3564         (STACK_GROW_OPTAB): Likewise.
3565         (STACK_GROW_OFF): Likewise.
3566         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
3567         loop condition in the small constant case.  Rewrite in the general
3568         case to be immune to wraparounds.  Make sure the address of probes
3569         is valid.  Try to use [base + disp] addressing mode if possible.
3570         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
3571         checking is enabled and STACK_CHECK_MOVING_SP.
3572         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
3573         return 1 for volatile references to the stack pointer.
3574         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
3575         __builtin_alloca if stack checking is enabled.
3576         * unwind-dw2.c (uw_identify_context): Take into account whether the
3577         context is that of a signal frame or not.
3578         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
3579         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
3580
3581 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
3582
3583         PR rtl-optimization/41917
3584         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
3585         operand isn't known to be 0, return 1.
3586
3587 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3588
3589         * config/mips/mips.md: Fix typos.
3590
3591 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3592
3593         * doc/invoke.texi: Fix typo.
3594
3595 2009-11-03  Paul Brook  <paul@codesourcery.com>
3596
3597         * config/arm/neon.ml (vectype): Add T_floatSF.
3598         (string_of_vectype): Ditto.
3599         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
3600         (deftypes): Use float for float32_t.
3601         * config/arm/arm_neon.h: Regenerate.
3602
3603 2009-11-03  Nick Clifton  <nickc@redhat.com>
3604             Kevin Buettner  <kevinb@redhat.com>
3605
3606         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
3607         order of expected registers.
3608         (rx_load_multiple_vector): Likewise.
3609         (rx_rtsd_vector): Likewise.
3610         * config/rx/rx.c (rx_cpu_type): New variable.
3611         (rx_print_operand): Fix bug printing 64-bit constant values.
3612         (rx_emit_stack_pushm): Reverse order of pushed registers.
3613         (gen_rx_store_vector): Likewise.
3614         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
3615         attribute name.
3616         (is_exception_func): Rename to is_interrupt_func and only accept
3617         "interrupt" as the attribute name.
3618         (rx_get_stack_layout): Use new function name.
3619         (rx_func_attr_inlinable): Likewise.
3620         (rx_attribute_table): Remove "exception".
3621         (rx_expand_prologue): If necessary push the accumulator register
3622         in the prologue of interrupt functions.
3623         (rx_expand_epilogue): If necessary pop the accumulator.
3624         (rx_builtins): Add RX_BUILTIN_MVTIPL.
3625         (rx_expand_builtin_stz): Remove.
3626         (rx_expand_builtin_mvtipl): New function.
3627         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
3628         (rx_expand_builtin): Likewise.
3629         (rx_enable_fpu): New variable.
3630         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
3631         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
3632         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
3633         (enum rx_cpu_types): Define.
3634         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
3635         (INCOMING_FRAME_SP_OFFSET): Define.
3636         (ARG_POINTER_CFA_OFFSET): Define.
3637         (FRAME_POINTER_CFA_OFFSET): Define.
3638         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
3639         (ALLOW_RX_FPU_INSNS): Define.
3640         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
3641         fast_math_flags_set_p.
3642         (UNSPEC_BUILTIN_MVTIPL): Define.
3643         (revl): Rename to bswapsi2.
3644         (bswaphi2): New pattern.
3645         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
3646         (mvtaclo): Likewise.
3647         (racw): Likewise.
3648         (mvtc): Remove clobber of cc0.
3649         (mvtcp): Delete.
3650         (opecp): Delete.
3651         * config/rx/rx.opt (mieee): Remove.
3652         (fpu): Add.
3653         (nofpu): Add.
3654         (mcpu=): Add.
3655         (patch=): Add.
3656         (msave-acc-in-interrupts): Add.
3657         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
3658         (MULTILIB_DIRS): Likewise.
3659         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
3660         * doc/extend.texi: Remove description of "exception" function
3661         attribute.
3662         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
3663         -msave-acc-in-interrupts options.
3664
3665 2009-11-03  Richard Guenther  <rguenther@suse.de>
3666
3667         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
3668
3669 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
3670
3671         PR c++/38699
3672         * c-common.c (fold_offsetof_1): Issue errors when the member
3673         designator of the offsetof expression is not legitimate.
3674
3675 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3676
3677         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
3678         names instead of numerical constants.
3679         (sse_prologue_save): Ditto.
3680         (*sse_prologue_save_insn): Ditto.
3681
3682 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3683
3684         PR target/41900
3685         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
3686         (TARGET_CALL_ESP): New define.
3687         * config/i386/i386.c (initial_ix86_tune_features): Initialize
3688         X86_ARCH_CALL_ESP.
3689         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
3690         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
3691         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
3692         TARGET_CALL_ESP.
3693         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
3694         New patterns, use "lsm" as operand 1 constraint.
3695         * config/i386/predicates.md (call_insn_operand): Depend on
3696         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
3697
3698 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3699
3700         PR tree-optimization/41857
3701         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
3702         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
3703         to create_mem_ref.
3704         * tree-ssa-address.c (move_hint_to_base): New function.
3705         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
3706         address space associated with TYPE.
3707         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
3708         most_expensive_mult_to_index.  Call move_hint_to_base.
3709         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
3710         TYPE to addr_to_parts.
3711
3712 2009-11-02  Martin Jambor  <mjambor@suse.cz>
3713
3714         PR tree-optimization/41750
3715         * tree-sra.c (analyze_modified_params): Loop over all
3716         representatives of components of a parameter.
3717
3718 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3719
3720         PR tree-optimization/41841
3721         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3722         local variables of not yet materialized clones.
3723
3724         PR debug/41893
3725         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3726         for a VOIDmode variable.
3727
3728         PR c++/41774
3729         * c-pragma.c (visstack): Change into vector of ints rather than
3730         enum symbol_visibility.
3731         (push_visibility): Add kind argument, push default_visibility together
3732         with kind.
3733         (pop_visibility): Add kind argument, return true if successful, fail
3734         if visibility stack is empty or if stack top is of different kind.
3735         (handle_pragma_visibility): Don't check length of visstack, instead
3736         call pop_visibility and issue diagnostics if it failed.  Pass 0
3737         as last argument to push_visibility and pop_visibility.
3738         * c-pragma.h (push_visibility): Add kind argument.
3739         (pop_visibility): Likewise.  Return bool instead of void.
3740
3741 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3742
3743         * tree.def (TARGET_MEM_REF): Update comment.
3744         * alias.c (get_alias_set): Retrieve the original memory reference for
3745         a TARGET_MEM_REF before proceeding.
3746
3747 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3748
3749         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3750         frv_function_value_regno_p): New functions.
3751         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3752         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3753         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3754         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3755
3756 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3757
3758         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3759         new 'outgoing' argument.
3760         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3761         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3762         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3763         LIBCALL_VALUE): Remove.
3764         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3765         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3766         (mh10300_function_value_regno_p): Declare.
3767
3768 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3769
3770         * config/arm/cortex-a9.md: New - integer pipeline description.
3771
3772 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3773
3774         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3775         aborting if the sizes of the two references don't match.
3776
3777 2009-10-31  Toon Moene  <toon@moene.org>
3778
3779         * ipa-inline.c (cgraph_decide_inlining):
3780         Include reason for not inlining called-once functions in dump file.
3781
3782 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3783
3784         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3785         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3786         (LINK_SPEC): BE_LINK_SPEC added.
3787
3788 2009-10-30  Richard Guenther  <rguenther@suse.de>
3789
3790         PR lto/41858
3791         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3792
3793 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3794
3795         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3796         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3797         label.
3798
3799 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3800
3801         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3802
3803 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3804
3805         PR target/40838
3806         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3807         first.  Move assert on stack_alignment_estimated just before
3808         setting stack_realign_needed.
3809         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3810         Don't call update_stack_boundary.
3811
3812         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3813         (verride_options): Don't check ix86_force_align_arg_pointer here.
3814         (ix86_function_ok_for_sibcall): Use it.
3815         (ix86_update_stack_boundary): Likewise.
3816
3817         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3818
3819 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3820
3821         * arm.md (QHSI): New mode iterator.
3822         (movqi): If generating for thumb, then truncate any immediate to
3823         8 bits.
3824         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3825         with...
3826         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3827         version.
3828
3829 2009-10-29  Cary Coutant  <ccoutant@google.com>
3830
3831         PR debug/41700
3832         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3833         locations in the source).
3834         (store_vcall_insn): New function.
3835         (lookup_vcall_insn): New function.
3836         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3837         (dwarf2out_copy_call_info): New function.
3838         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3839         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3840         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3841         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3842         (debug_nothing_rtx_rtx): New dummy hook.
3843         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3844         (xcoff_debug_hooks): Likewise.
3845         * sdbout.c (sdb_debug_hooks): Likewise.
3846         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3847
3848 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3849
3850         * doc/invoke.texi (mmcount-ra-address): Document new command line
3851         option.
3852         * config/mips/mips.opt (mmcount-ra-address): New option.
3853         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3854         function.
3855         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3856         member.
3857         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3858         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3859         rewritten.
3860         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3861         mips_function_profiler.
3862
3863 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3864
3865         PR middle-end/37565
3866         PR target/38018
3867         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3868         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3869         * optc-gen.awk (cl_target_option_restore): Include call to
3870         targetm.override_options_after_change.
3871         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3872         * target.h (override_options_after_change): New.
3873         * c-common.c (parse_optimize_options): Call
3874         targetm.override_options_after_change.
3875         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3876         (ia64_override_options_after_change): New.
3877         (ia64_override_options) Add call to above.
3878
3879 2009-10-29  Michael Matz  <matz@suse.de>
3880
3881         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
3882         (gate_convert_to_rsqrt): Ditto.
3883         (pass_convert_to_rsqrt): Ditto.
3884         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
3885         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
3886         to pass list.
3887
3888         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
3889
3890 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3891
3892         * config/arm/arm.c (find_best_start): Fix type of remainder to be
3893         unsigned.
3894
3895 2009-10-29  Martin Jambor  <mjambor@suse.cz>
3896
3897         PR tree-optimization/41775
3898         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
3899         (generate_subtree_copies): Do not unshare agg.
3900         (load_assign_lhs_subreplacements): Do not unshare rhs.
3901         (sra_modify_assign): Do not unshare exprs.
3902         (propagate_subacesses_accross_link): Renamed to
3903         propagate_subaccesses_across_link.
3904
3905 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
3906
3907         * arm.c (count_insns_for_constant): Rework to support counting for
3908         thumb2 immediates as well.
3909         (find_best_start): Split out from arm_gen_constant.
3910         (arm_gen_constant): Rework to support XOR with immediate.
3911
3912 2009-10-29  Chao-ying Fu  <fu@mips.com>
3913
3914         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
3915         functions.
3916         (mips_expand_synci_loop):  Use the length rtx to control the
3917         synci loop from the begin rtx that points to the first byte of
3918         the cache line.
3919
3920 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3921
3922         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
3923
3924 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3925
3926         * dbxout.c (dbxout_common_check): Accept non public trees.
3927         * dwarf2out.c (fortran_common): Accept non public trees.
3928
3929 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3930
3931         * common.opt (fuse-linker-plugin): New option.
3932         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
3933         fuse-linker-plugin.
3934         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
3935
3936 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3937
3938         PR rtl-optimization/39715
3939         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
3940         (gen_cstoresi_ltu_thumb1): New splitter.
3941
3942 2009-10-28  Richard Guenther  <rguenther@suse.de>
3943
3944         PR lto/41808
3945         PR lto/41839
3946         * tree-ssa.c (useless_type_conversion_p): Do not treat
3947         conversions to pointers to incomplete types as useless.
3948         * gimple.c (gimple_types_compatible_p): Compare struct tags,
3949         not typedef names.
3950
3951 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
3952
3953         * var-tracking.c (emit_note_insn_var_location): Don't call the second
3954         vt_expand_loc unnecessarily when location is not a register nor
3955         memory.
3956
3957         PR middle-end/41837
3958         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
3959         fields don't have DECL_NAME.
3960
3961         PR debug/41801
3962         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
3963         call convert_memory_address on addr.
3964
3965         PR target/41762
3966         * config/i386/i386.c (ix86_pic_register_p): Don't call
3967         rtx_equal_for_cselib_p for VALUEs discarded as useless.
3968
3969 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
3970
3971         * var-tracking.c (emit_note_insn_var_location): Get the mode of
3972         a variable part from its REG, MEM or VALUE.
3973
3974 2009-10-28  Richard Guenther  <rguenther@suse.de>
3975
3976         * gimple.c (gimple_get_alias_set): Fix comment typo.
3977
3978 2009-10-28  Richard Guenther  <rguenther@suse.de>
3979
3980         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
3981         (free_lang_data): Unconditionally compute alias sets for all
3982         standard integer types.  Bail out if gate bailed out previously.
3983         Do not reset the types_compatible_p langhook.
3984         (gate_free_lang_data): Remove.
3985         (struct pass_ipa_free_lang_data): Enable unconditionally.
3986         * gimple.c (gimple_get_alias_set): Use the same alias-set for
3987         all pointer types.
3988
3989 2009-10-28  Richard Guenther  <rguenther@suse.de>
3990
3991         PR middle-end/41855
3992         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
3993         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
3994         (call_may_clobber_ref_p_1): Likewise.
3995         * tree-ssa-structalias.c (find_func_aliases): Likewise.
3996         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
3997
3998 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3999
4000         PR rtl-optimization/41812
4001
4002         Revert:
4003         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
4004
4005         * df-problems.c (df_md_scratch): New.
4006         (df_md_alloc, df_md_free): Allocate/free it.
4007         (df_md_local_compute): Only include live registers in init.
4008         (df_md_transfer_function): Prune the in-set computed by
4009         the confluence function, and the gen-set too.
4010
4011 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4012
4013         PR rtl-optimization/39715
4014         * combine.c (simplify_comparison): Use extensions to
4015         widen comparisons.  Try an ANDing first.
4016
4017 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4018
4019         PR rtl-optimization/40741
4020         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
4021         a small constant is cheap.
4022         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
4023         force_reg on the LHS.
4024         (xorsi3): Likewise, and split the XOR if the constant is complex
4025         and not in Thumb mode.
4026
4027 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4028
4029         * expmed.c (emit_store_flag): Check costs before
4030         transforming to the opposite representation.
4031
4032 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4033
4034         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
4035         cstore result to DImode.
4036
4037 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4038
4039         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
4040         inside the unspec vector.
4041
4042 2009-10-27  Richard Henderson  <rth@redhat.com>
4043
4044         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
4045
4046 2009-10-27  Richard Henderson  <rth@redhat.com>
4047
4048         PR c++/41819
4049         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
4050         eh_region_may_contain_throw; update users.
4051         (eh_region_may_contain_throw): New function.
4052         (lower_catch): Check flag_exceptions before creating exception region.
4053         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
4054         (lower_cleanup): Tidy existing flag_exceptions check to match.
4055
4056 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
4057
4058         PR/41799
4059         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
4060         * config/i386/mingw.opt: Add fset-stack-executable.
4061         * config/i386/i386.c (ix86_trampoline_init): Make call to
4062         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
4063         defined and its value is not zero.
4064         * doc/invoke.texi
4065
4066 2009-10-27  Richard Guenther  <rguenther@suse.de>
4067
4068         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
4069         handle calls to externally visible functions like in regular mode.
4070         (create_variable_info_for): Do not create function infos here.
4071         (have_alias_info): Remove write-only variable.
4072         (solve_constraints): New function split out from common code
4073         in compute_points_to_sets and ipa_pta_execute.
4074         (compute_points_to_sets): Adjust.
4075         (ipa_pta_execute): Likewise.  Handle clones and externally visible
4076         functions like in non-IPA mode.
4077
4078 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
4079
4080         PR c/41842
4081         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
4082         error_mark_node.
4083
4084 2009-10-27  Richard Guenther  <rguenther@suse.de>
4085
4086         * tree-complex.c (expand_complex_div_wide): Check for
4087         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
4088
4089 2009-10-27  Revital Eres  <eres@il.ibm.com>
4090
4091         PR tree-optimization/40648
4092         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
4093         Change decision of when to peel for alignment.
4094
4095 2009-10-27  Richard Guenther  <rguenther@suse.de>
4096
4097         PR lto/41821
4098         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
4099
4100 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
4101
4102         PR bootstrap/41451
4103         * fold-const.c (fold_binary_loc): Do not call
4104         protected_set_expr_location.
4105
4106 2009-10-27  Wei Guozhi  <carrot@google.com>
4107
4108         PR target/41705
4109         * target.h (have_conditional_execution): Add a new target hook
4110         function.
4111         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
4112         * targhooks.h (default_have_conditional_execution): Likewise.
4113         * targhooks.c (default_have_conditional_execution): Likewise.
4114         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
4115         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
4116         (arm_have_conditional_execution): New function.
4117         * ifcvt.c (noce_process_if_block, find_if_header,
4118         cond_exec_find_if_block, dead_or_predicable): Change the usage of
4119         macro HAVE_conditional_execution to a target hook call.
4120         * recog.c (peephole2_optimize): Likewise.
4121         * sched-rgn.c (add_branch_dependences): Likewise.
4122         * final.c (asm_insn_count, final_scan_insn): Likewise.
4123         * bb-reorder.c (HAVE_conditional_execution): Remove it.
4124
4125 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4126             Michael Meissner  <meissner@linux.vnet.ibm.com>
4127             Ulrich Weigand  <uweigand@de.ibm.com>
4128
4129         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
4130         * config/spu/spu_cache.h: New file.
4131
4132         * config/spu/cachemgr.c: New file.
4133         * config/spu/cache.S: New file.
4134
4135         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
4136         (ADDR_SPACE_EA): Define.
4137         (TARGET_ADDR_SPACE_KEYWORDS): Define.
4138         * config/spu/spu.c (EAmode): New macro.
4139         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
4140         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
4141         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
4142         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
4143         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
4144         (TARGET_ADDR_SPACE_CONVERT): Likewise.
4145         (TARGET_ASM_SELECT_SECTION): Likewise.
4146         (TARGET_ASM_UNIQUE_SECTION): Likewise.
4147         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
4148         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
4149         (ea_symbol_ref): New function.
4150         (spu_legitimate_constant_p): Handle __ea qualified addresses.
4151         (spu_addr_space_legitimate_address_p): New function.
4152         (spu_addr_space_legitimize_address): Likewise.
4153         (cache_fetch): New global.
4154         (cache_fetch_dirty): Likewise.
4155         (ea_alias_set): Likewise.
4156         (ea_load_store): New function.
4157         (ea_load_store_inline): Likewise.
4158         (expand_ea_mem): Likewise.
4159         (spu_expand_mov): Handle __ea qualified memory references.
4160         (spu_addr_space_pointer_mode): New function.
4161         (spu_addr_space_address_mode): Likewise.
4162         (spu_addr_space_subset_p): Likewise.
4163         (spu_addr_space_convert): Likewise.
4164         (spu_section_type_flags): Handle "._ea" section.
4165         (spu_select_section): New function.
4166         (spu_unique_section): Likewise.
4167         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
4168         and __EA64__ predefined macros.
4169         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
4170         -matomic-updates switches.
4171
4172         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
4173         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
4174         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
4175         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
4176         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
4177         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
4178         $(T)cache128k.o): Likewise.
4179         ($(T)libgcc_%.a): Likewise.
4180
4181         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
4182         * config/spu/spu.opt (-mea32/-mea64): Add switches.
4183         (-maddress-space-conversion): Likewise.
4184         (-mcache-size=): Likewise.
4185         (-matomic-updates): Likewise.
4186         * doc/invoke.texi (-mea32/-mea64): Document.
4187         (-maddress-space-conversion): Likewise.
4188         (-mcache-size=): Likewise.
4189         (-matomic-updates): Likewise.
4190
4191 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4192             Michael Meissner  <meissner@linux.vnet.ibm.com>
4193             Ulrich Weigand  <uweigand@de.ibm.com>
4194
4195         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
4196
4197         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
4198         defined, add the named address space keywords.
4199         (c_addr_space_name): New function.
4200         (complete_array_type): Preserve named address space.
4201         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
4202         instead of targetm.valid_pointer_mode.
4203
4204         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
4205         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
4206         (ADDR_SPACE_KEYWORD): New macro.
4207         (c_addr_space_name): Add prototype.
4208
4209         * c-tree.h (struct c_declspecs): Add address_space member.
4210         (declspecs_add_addrspace): Add prototype.
4211
4212         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
4213
4214         * c-parser.c (c_parse_init): Add assertion.
4215         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
4216         (c_lex_one_token): Handle address space keywords.
4217         (c_token_starts_typename): Likewise.
4218         (c_token_starts_declspecs): Likewise.
4219         (c_parser_declspecs): Likewise.
4220         (c_parser_postfix_expression_after_paren_type): Diagnose compound
4221         literal within function qualified with named address space.
4222
4223         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
4224         address space qualifiers.
4225         (shadow_tag_warned): Warn about useless address space qualifiers.
4226         (quals_from_declspecs): Handle address space qualifiers.
4227         (grokdeclarator): Likewise.
4228         (build_null_declspecs): Likewise.
4229         (declspecs_add_addrspace): New function.
4230
4231         * c-typeck.c (addr_space_superset): New function.
4232         (qualify_type): Handle named address spaces.
4233         (composite_type): Likewise.
4234         (common_pointer_type): Likewise.
4235         (comp_target_types): Likewise.
4236         (build_conditional_expr): Likewise.
4237         (handle_warn_cast_qual): Likewise.
4238         (build_c_cast): Likewise.
4239         (convert_for_assignment): Likewise.
4240         (build_binary_op): Likewise.
4241         (pointer_diff): Handle named address spaces.  Use intermediate
4242         integer type of sufficient size if required.
4243
4244 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4245             Michael Meissner  <meissner@linux.vnet.ibm.com>
4246             Ulrich Weigand  <uweigand@de.ibm.com>
4247
4248         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
4249         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
4250         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
4251
4252         * target.h (struct target_def): Add pointer_mode, address_mode,
4253         and valid_pointer_mode to addr_space substructure.
4254         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
4255         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
4256         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
4257         (TARGET_ADDR_SPACE_HOOKS): Add them.
4258         * targhooks.c (target_default_pointer_address_modes_p): New function.
4259         * target.h (target_default_pointer_address_modes_p): Add prototype.
4260         * targhooks.c (default_addr_space_pointer_mode): New function.
4261         (default_addr_space_address_mode): Likewise.
4262         (default_addr_space_valid_pointer_mode): Likewise.
4263         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
4264         (default_addr_space_address_mode): Likewise.
4265         (default_addr_space_valid_pointer_mode): Likewise.
4266         * output.h (default_valid_pointer_mode): Move to ...
4267         * targhooks.h (default_valid_pointer_mode): ... here.
4268         * varasm.c (default_valid_pointer_mode): Move to ...
4269         * targhooks.c (default_valid_pointer_mode): ... here.
4270
4271         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
4272         instead of targetm.valid_pointer_mode.
4273
4274         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
4275         * tree.c (integer_pow2p): Likewise.
4276         (tree_log2): Likewise.
4277         (tree_floor_log2): Likewise.
4278         (signed_or_unsigned_type_for): Support pointer type of different size.
4279         (int_or_pointer_precision): New function.
4280         * tree.h (int_or_pointer_precision): Add prototype.
4281         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
4282         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
4283         incoming pointer type instead of POINTER_SIZE.
4284
4285         * tree.c (build_pointer_type): Use appropriate pointer mode
4286         instead of ptr_mode.
4287         (build_reference_type): Likewise.
4288         * expr.c (store_expr): Likewise.
4289         (expand_expr_addr_expr): Likewise.
4290         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
4291         * cfgexpand.c (expand_debug_expr): Likewise.
4292
4293         * auto-inc-dec.c: Include "target.h".
4294         (try_merge): Use appropriate address mode instead of Pmode.
4295         (find_inc): Likewise.
4296         * combine.c (find_split_point): Likewise.
4297         * cselib.c (cselib_record_sets): Likewise.
4298         * dse.c (replace_inc_dec): Likewise.
4299         (canon_address): Likewise.
4300         * var-tracking.c (replace_expr_with_values): Likewise.
4301         (count_uses): Likewise.
4302         (add_uses): Likewise.
4303         (add_stores): Likewise.
4304         * emit-rtl.c: Include "target.h".
4305         (adjust_address_1): Use appropriate address mode instead of Pmode.
4306         (offset_address): Likewise.
4307         * explow.c (break_out_memory_refs): Likewise.
4308         (memory_address_addr_space): Likewise.
4309         (promote_mode): Likewise.
4310         * expr.c (move_by_pieces): Likewise.
4311         (emit_block_move_via_loop): Likewise.
4312         (store_by_pieces): Likewise.
4313         (store_by_pieces_1): Likewise.
4314         (expand_assignment): Likewise.
4315         (store_constructor): Likewise.
4316         (expand_expr_addr_expr): Likewise.
4317         (expand_expr_real_1): Likewise.
4318         * cfgexpand.c (expand_debug_expr): Likewise.
4319         * ifcvt.c (noce_try_cmove_arith): Likewise.
4320         * regcprop.c (kill_autoinc_value): Likewise.
4321         * regmove.c (try_auto_increment): Likewise.
4322         * reload.c (find_reloads): Likewise.
4323         (find_reloads_address): Likewise.
4324         (find_reloads_address_1): Likewise.
4325         * sched-deps.c: Include "target.h".
4326         (sched_analyze_1): Use appropriate address mode instead of Pmode.
4327         (sched_analyze_2): Likewise.
4328         * sel-sched-dump.c: Include "target.h".
4329         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
4330         * stor-layout.c (layout_type): Likewise.
4331         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4332         (multiplier_allowed_in_address_p): Likewise.
4333         (get_address_cost): Likewise.
4334         * varasm.c (make_decl_rtl): Likewise.
4335
4336         * expr.c (expand_assignment): Always convert offsets to appropriate
4337         address mode.
4338         (store_expr): Likewise.
4339         (store_constructor): Likewise.
4340         (expand_expr_real_1): Likewise.
4341
4342         * reload.h (form_sum): Add MODE argument.
4343         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
4344         Update recursive calls.
4345         (subst_indexed_address): Update calls to form_sum.
4346
4347         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
4348         * tree-ssa-address.c: Include "target.h".
4349         (templates): Replace by ...
4350         (mem_addr_template_list): ... this new vector.
4351         (TEMPL_IDX): Handle address space numbers.
4352         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
4353         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
4354         instead of global cache.  Update call to gen_addr_rtx.
4355         (valid_mem_ref_p): Update call to addr_for_mem_ref.
4356         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
4357
4358         * rtl.h (convert_memory_address_addr_space): Add prototype.
4359         (convert_memory_address): Define as macro.
4360         * explow.c (convert_memory_address): Rename to ...
4361         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4362         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
4363         Update recursive calls.
4364         (memory_address_addr_space): Call convert_memory_address_addr_space.
4365         * expmed.c (make_tree): Likewise.
4366         * expr.c (expand_assignment): Likewise.
4367         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
4368         (expand_expr_addr_expr): Likewise.  Also, update call.
4369
4370         * alias.c (find_base_value): Guard pointer size optimizations.
4371         (find_base_term): Likewise.
4372         * rtlanal.c (nonzero_bits1): Likewise.
4373         (num_sign_bit_copies1): Likewise.
4374         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
4375
4376         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
4377         (emit-rtl.o): Likewise.
4378         (auto-inc-dec.o): Likewise.
4379         (sched-deps.o): Likewise.
4380
4381 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4382             Michael Meissner  <meissner@linux.vnet.ibm.com>
4383             Ulrich Weigand  <uweigand@de.ibm.com>
4384
4385         * doc/extend.texi (Named Address Spaces): New section.
4386         * coretypes.h (addr_space_t): New type.
4387         (ADDR_SPACE_GENERIC): New define.
4388         (ADDR_SPACE_GENERIC_P): New macro.
4389
4390         * doc/tm.texi (Named Address Spaces): New section.
4391         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
4392         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
4393         (TARGET_ADDR_SPACE_SUBSET_P): Document.
4394         (TARGET_ADDR_SPACE_CONVERT): Document.
4395         * target.h (struct gcc_target): Add addr_space substructure.
4396         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
4397         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
4398         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
4399         (TARGET_ADDR_SPACE_CONVERT): Likewise.
4400         (TARGET_ADDR_SPACE_HOOKS): Likewise.
4401         (TARGET_INITIALIZER): Initialize addr_space hooks.
4402         * targhooks.c (default_addr_space_legitimate_address_p): New function.
4403         (default_addr_space_legitimize_address): Likewise.
4404         (default_addr_space_subset_p): Likewise.
4405         (default_addr_space_convert): Likewise.
4406         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
4407         (default_addr_space_legitimize_address): Likewise.
4408         (default_addr_space_subset_p): Likewise.
4409         (default_addr_space_convert): Likewise.
4410
4411         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
4412         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
4413         (MEM_ADDR_SPACE): New macro.
4414         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
4415         address space memory attribute.
4416         (mem_attrs_htab_hash): Handle address space memory attribute.
4417         (mem_attrs_htab_eq): Likewise.
4418         (set_mem_attributes_minus_bitpos): Likewise.
4419         (set_mem_alias_set): Likewise.
4420         (set_mem_align): Likewise.
4421         (set_mem_expr): Likewise.
4422         (set_mem_offset): Likewise.
4423         (set_mem_size): Likewise.
4424         (adjust_address_1): Likewise.
4425         (offset_address): Likewise.
4426         (widen_memoy_address): Likewise.
4427         (get_spill_slot_decl): Likewise.
4428         (set_mem_attrs_for_spill): Likewise.
4429         (set_mem_addr_space): New function.
4430         * emit-rtl.h (set_mem_addr_space): Add prototype.
4431         * print-rtl.c (print_rtx): Print address space memory attribute.
4432         * expr.c (expand_assignment): Set address space memory attribute
4433         of generated MEM RTXes as appropriate.
4434         (expand_expr_real_1): Likewise.
4435         * cfgexpand.c (expand_debug_expr): Likewise.
4436         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4437
4438         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
4439         size of "spare" bitfield.
4440         (TYPE_ADDR_SPACE): New macro.
4441         (ENCODE_QUAL_ADDR_SPACE): Likewise.
4442         (DECODE_QUAL_ADDR_SPACE): Likewise.
4443         (CLEAR_QUAL_ADDR_SPACE): Likewise.
4444         (KEEP_QUAL_ADDR_SPACE): Likewise.
4445         (TYPE_QUALS): Encode type address space.
4446         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
4447         * tree.c (set_type_quals): Set type address space.
4448         (build_array_type): Inherit array address space from element type.
4449         * print-tree.c (print_node_brief): Print type address space.
4450         (print_node): Likewise.
4451         * tree-pretty-print.c (dump_generic_node): Likewise.
4452
4453         * explow.c (memory_address): Rename to ...
4454         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4455         Use address-space aware variants of memory address routines.
4456         * recog.c (memory_address_p): Rename to ...
4457         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4458         Use address-space aware variants of memory address routines.
4459         (offsettable_address_p): Rename to ...
4460         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
4461         Use address-space aware variants of memory address routines.
4462         * reload.c (strict_memory_address_p): Rename to ...
4463         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4464         Use address-space aware variants of memory address routines.
4465         (maybe_memory_address_p): Rename to ...
4466         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4467         Use address-space aware variants of memory address routines.
4468         * expr.h (memory_address_addr_space): Add prototype.
4469         (memory_address): Define as macro.
4470         * recog.h (memory_address_addr_space_p): Add prototype.
4471         (memory_address_p): Define as macro.
4472         (offsettable_address_addr_space_p): Add prototype.
4473         (offsettable_address_p): Define as macro.
4474         (strict_memory_address_addr_space_p): Add prototype.
4475         (strict_memory_address_p): Define as macro.
4476
4477         * combine.c (find_split_point): Use address-space aware variants
4478         of memory address routines.
4479         * emit-rtl.c (operand_subword): Likewise.
4480         (change_address_1): Likewise.
4481         (adjust_address_1): Likewise.
4482         (offset_address): Likewise.
4483         * expr.c (emit_move_insn): Likewise.
4484         (expand_assignment): Likewise.
4485         (expand_expr_real_1): Likewise.
4486         * recog.c (verify_changes): Likewise.
4487         (general_operand): Likewise.
4488         (offsettable_memref_p): Likewise.
4489         (offsettable_nonstrict_memref_p): Likewise.
4490         (constrain_operands): Likewise.
4491         * reload.c (get_secondary_mem): Likewise.
4492         (find_reloads_toplev): Likewise.
4493         (find_reloads_address): Likewise.
4494         (find_reloads_subreg_address): Likewise.
4495         * reload1.c (reload): Likewise.
4496         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
4497         * rtl.h (address_cost): Add ADDRSPACE argument.
4498         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
4499         aware variant of memory address routines.
4500         * loop-invariant.c (create_new_invariant): Update address_cost call.
4501         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
4502         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
4503         Use address-space aware variant of memory address routines.
4504         (propagate_rtx_1): Update call to should_replace_address.
4505         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
4506         argument.
4507         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
4508         ADDRSPACE argument.  Use per-address-space instead of global cache.
4509         Use address-space aware variant of memory address routines.
4510         (get_address_cost): Likewise.
4511         (get_computation_cost_at): Update calls.
4512         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
4513         Use address-space aware variant of memory address routines.
4514         (create_mem_ref_raw): Update call to valid_mem_ref_p.
4515         (most_expensive_mult_to_index): Update call to
4516         multiplier_allowed_in_address_p.
4517
4518         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
4519         attribute to indicate named address spaces.
4520
4521         * varasm.c (get_variable_section): DECLs in named address spaces
4522         cannot be "common".
4523
4524         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
4525         for addresses in a non-generic address space.
4526
4527         * expr.c (emit_block_move_hints): Do not use libcalls for
4528         memory in non-generic address spaces.
4529         (clear_storage_hints): Likewise.
4530         (expand_assignment): Likewise.
4531
4532         * fold-const.c (operand_equal_p): Expressions refering to different
4533         address spaces are not equivalent.
4534
4535         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
4536         spaces are not equivalent.
4537         (rtx_equal_p): Likewise.
4538         * cse.c (exp_equiv_p): Likewise.
4539         * jump.c (rtx_renumbered_equal_p): Likewise.
4540         * reload.c (operands_match_p): Likewise.
4541
4542         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
4543         address spaces may alias.
4544         (true_dependence): Likewise.
4545         (canon_true_dependence): Likewise.
4546         (write_dependence_p): Likewise.
4547
4548         * dse.c (canon_address): Handle named address spaces.
4549         * ifcvt.c (noce_try_cmove_arith): Likewise.
4550
4551         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
4552         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
4553         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
4554         to handle conversions between different address spaces.
4555         * fold-const.c (fold_convert_loc): Likewise.
4556         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
4557         * tree-pretty-print.c (dump_generic_node): Likewise.
4558         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
4559         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4560         * tree-inline.c (estimate_operator_cost): Likewise.
4561         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
4562         to different address spaces are not useless.
4563
4564 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
4565
4566         PR bootstrap/41345
4567         * cfgcleanup.c (trivially_empty_bb_p): New function.
4568         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
4569
4570         PR debug/41828
4571         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
4572         add_name_and_src_coords_attributes, gen_namespace_die,
4573         dwarf2out_set_name): Handle dwarf2_name returning NULL.
4574
4575 2009-10-26  Nick Clifton  <nickc@redhat.com>
4576
4577         * config.gcc: Add support for RX target.
4578         * config/rx: New directory.
4579         * config/rx/constraints.md: New file.
4580         * config/rx/predicates.md: New file.
4581         * config/rx/rx.c: New file.
4582         * config/rx/rx.h: New file.
4583         * config/rx/rx.md: New file.
4584         * config/rx/rx.opt: New file.
4585         * config/rx/rx-protos.h: New file.
4586         * config/rx/t-rx: New file.
4587         * doc/extend.texi: Document RX function attributes.
4588         * doc/invoke.texi: Document RX specific command line options.
4589         * doc/contrib.texi: Document RX contribution.
4590         * doc/md.texi: Document RX constraints.
4591         * doc/install.texi: Document RX support.
4592
4593 2009-10-26  Michael Matz  <matz@suse.de>
4594
4595         PR tree-optimization/41783
4596         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
4597         case for simple diamonds.
4598         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
4599         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
4600         argument, use alias oracle to skip some vdefs.
4601         (phi_translate_1): Change call to above, don't allocate new
4602         value ids if they can stay the same.
4603         (compute_avail): Allow vuse walking when looking up references.
4604
4605 2009-10-26  Richard Guenther  <rguenther@suse.de>
4606
4607         PR tree-optimization/41826
4608         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
4609         access to re-allocated vector fields.
4610
4611 2009-10-26  Richard Guenther  <rguenther@suse.de>
4612
4613         * graphite-sese-to-poly.c (check_poly_representation): Fix
4614         compile without checking.
4615
4616 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
4617
4618         PR fortran/41714
4619         * gimple.h (tree_annotate_all_with_location): Remove prototype.
4620         * gimplify.c (tree_should_carry_location_p,
4621         tree_annotate_one_with_location,tree_annotate_all_with_location):
4622         Remove obsolete functions.
4623
4624 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
4625
4626         PR target/41813
4627         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
4628
4629 2009-10-25  Richard Guenther  <rguenther@suse.de>
4630
4631         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
4632         Stream DECL_RESTRICTED_P.
4633         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
4634
4635 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
4636
4637         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
4638         a note when expanding to nothing.
4639
4640 2009-10-25  Richard Guenther  <rguenther@suse.de>
4641
4642         PR middle-end/41814
4643         * tree.c (find_decls_types_r): Deal with Java overloading
4644         BINFO_VIRTUALS for its own purpose.
4645
4646 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
4647
4648         * config/mips/predicates.md (hilo_operand): New predicate.
4649         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
4650         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
4651         splitter part from here ...:
4652         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
4653         op0 and op4 to match the DINS case.
4654         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
4655
4656 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4657
4658         PR middle-end/19154
4659         * avr.md (QIDI): Add new mode iterator.
4660         (sbrx_branch<mode>): Create new zero extract bit, test and jump
4661         patterns for all QI thru DI modes combinations.
4662         (sbrx_and_branch<mode>): Create new and based bit test and jump
4663         patterns for QI thru SI modes.
4664         avr.c (avr_out_sbxx_branch): Use only bit number.
4665
4666 2009-10-24  Jan Hubicka  <jh@suse.cz>
4667
4668         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
4669         to memory.
4670         (analyze_function): When analyzing noreturn nothrow call, do not
4671         compute written stats; free bitmaps of vars early if possible.
4672         (generate_summary): Only update bitmaps if computed.
4673         (propagate): Only dump bitmaps if computed.
4674         (ipa_reference_read_summary): Fix pasto.
4675
4676 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
4677
4678         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
4679         (aliasing_component_refs_p): ...this.  Return true if there is no
4680         common base and the base access types have the same alias set.
4681         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
4682         (indirect_refs_may_alias_p): Likewise.
4683
4684 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4685
4686         PR c/40033
4687         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
4688         a C_MAYBE_CONST_EXPR.
4689
4690 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
4691
4692         PR target/41787
4693         * config/rs6000/rs6000.c (struct machine_function): Add
4694         vsx_or_altivec_used_p to record if vector types are used.
4695         (rs6000_expand_to_rtl_hook): Rename from
4696         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
4697         any vector operations, so if there are, we can set VRSAVE to
4698         non-zero when only floating point vector registers are used.
4699         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
4700         (rs6000_check_vector_mode): Inner function to check if vector
4701         types are used in the code.
4702         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
4703         vector instructions are used.
4704
4705         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
4706         Indicate that VSX registers which overlap floating point
4707         registers, can't be used across a call, since the ABI only states
4708         the scalar part of the register will be saved and restored.
4709
4710 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4711
4712         PR c/41673
4713         * alias.c (get_alias_set): Call langhook before returning 0 for
4714         types with structural equality.
4715         * c-common.c (c_common_get_alias_set): Use alias set of element
4716         type for arrays with structural comparison.
4717
4718 2009-10-23  Richard Guenther  <rguenther@suse.de>
4719
4720         PR middle-end/41805
4721         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
4722         gimple_call_nothrow_p.
4723
4724 2009-10-23  Richard Guenther  <rguenther@suse.de>
4725
4726         PR tree-optimization/41778
4727         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
4728         redundancy along a path in the CFG we want to optimize for speed
4729         is going to be removed.
4730         (execute_pre): Do partial-PRE only if the function is to be
4731         optimized for speed.
4732         (gate_pre): Do not turn off all of PRE when not optimizing a
4733         function for speed.
4734
4735 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4736
4737         * builtins.c (fold_builtin_cabs): Use validate_arg().
4738         (fold_builtin_cexp): Fix if-logic.
4739         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
4740
4741 2009-10-22  Jeff Law  <law@redhat.com>
4742
4743         * ira-lives.c (process_single_reg_class_operands): Update the
4744         hard reg costs for all the hard registers desired by the
4745         single reg class operand.
4746
4747 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4748
4749         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
4750         for rtxes that aren't handled specially.
4751
4752 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4753
4754         * rtl.h (shallow_copy_rtvec): Declare.
4755         * rtl.c (shallow_copy_rtvec): New function.
4756         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
4757         rtx field if the subrtx has changed.
4758
4759 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
4760
4761         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
4762         (m32c_function_value): Make static, add new 'outgoing' argument.
4763         (m32c_libcall_value): Make static, add new 'fun' argument.
4764         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4765         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4766         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
4767         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
4768         (m32c_function_value, m32c_libcall_value): Delete declaration.
4769
4770 2009-10-22  Diego Novillo  <dnovillo@google.com>
4771
4772         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
4773
4774 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4775
4776         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
4777         space.
4778
4779 2009-10-22  Richard Guenther  <rguenther@suse.de>
4780
4781         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
4782         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
4783         (lto_symtab_merge): Do not merge cgraph nodes here.
4784         (lto_symtab_resolve_can_prevail_p): Simplify.
4785         (lto_symtab_resolve_symbols): Store cgraph node.
4786         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
4787         functions from the symtab.
4788         (lto_symtab_merge_cgraph_nodes_1): New function.
4789         (lto_symtab_merge_cgraph_nodes): Likewise.
4790
4791 2009-10-22  Richard Guenther  <rguenther@suse.de>
4792
4793         PR lto/41791
4794         * lto-streamer-out.c (lto_output_location): Stream the
4795         system header flag.
4796         * lto-streamer-in.c (lto_input_location): Likewise.
4797
4798 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4799
4800         * cfgloopmanip.c (duplicate_subloops): Export.
4801         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
4802         (transform_to_exit_first_loop): Duplicate bbs starting from
4803         header up to loop->latch instead of exit->src.
4804         Initialize control variable to the correct number of iterations.
4805         (gather_scalar_reductions): Do not register double reductions.
4806         (parallelize_loops): Dump which loop is tested.
4807         Indicate whether the parallelized loop is inner or not.
4808         Remove the innermost-loop requirement.
4809         * cfgloop.h (duplicate_subloops): Export.
4810         * tree-cfg.c (add_phi_args_after_redirect): New function.
4811         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
4812         Call duplicate_subloops.
4813         Update number of iterations at the exit condition.
4814         Don't redirect nexits always to the loop exit.
4815         Redirect copied edges from latch to the loop exit.
4816
4817 2009-10-22  Jan Hubicka  <jh@suse.cz>
4818
4819         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
4820         flag_ltrans check.
4821         * ipa-inline.c (cgraph_mark_inline_edge,
4822         cgraph_decide_inlining_of_small_function,
4823         cgraph_decide_inlining, inline_read_summary): Disable indirect
4824         inlining for WPA for time being.
4825
4826         PR tree-optimize/40556
4827         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
4828
4829 2009-10-22  Richard Guenther  <rguenther@suse.de>
4830
4831         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
4832         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
4833
4834 2009-10-22  Jan Hubicka  <jh@suse.cz>
4835
4836         PR lto/41730
4837         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
4838         global vars.
4839         (check_call): Handle only indirect calls.
4840         (propagate_bits): Update comment.
4841         (write_node_summary_p): Turn bogus check to assert.
4842         (ipa_reference_write_summary): Stream calls_read_all properly.
4843         (ipa_reference_read_summary): Stream in calls_read_all properly.
4844         (read_write_all_from_decl): New function.
4845         (propagate): Handle OVERWRITABLE nodes and external calls here.
4846         * ipa-pre-const.c (check_call): In IPA mode handle indirect
4847         calls only.
4848         (analyze_function): Do not check visibility here.
4849         (add_new_function): We summary OVERWRITABLE too.
4850         (generate_summary): Stream OVERWRITABLE nodes too.
4851         (propagate): Handle external calls and OVERWRITABLE nodes here.
4852         (local_pure_const): Check visibility here.
4853
4854 2009-10-22  Jan Hubicka  <jh@suse.cz>
4855
4856         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
4857         (pass_ipa_cp): Register them.
4858         (ipcp_init_stage): Analyze all functions for whopr/lto.
4859         (ipcp_propagate_stage): Skip external calls.
4860         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
4861         * ipa-reference.c (write_node_summary_p): Fix thinko about
4862         availability.
4863         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
4864         when in ltrans, skip executing of ipa passes since everything
4865         should've been done.
4866         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
4867         (inline_generate_summary): Likewise.
4868         (inline_read_summary): New function.
4869         (inline_write_summary): New function.
4870         (pass_ipa_inline): Register new hooks.
4871         * ipa-prop.c: Inlcude lto-streamer.h
4872         (ipa_edge_args_vector): Update declaration.
4873         (ipa_count_arguments, ipa_compute_jump_functions,
4874         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
4875         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
4876         ipa_read_node_info): New static functions.
4877         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
4878         (duplicate_array): Use xmalloc.
4879         (duplicate_ggc_array): New.
4880         (ipa_edge_duplication_hook): Use it.
4881         (ipa_update_after_lto_read): New function.
4882         * ipa-prop.h (ipa_prop_write_jump_functions,
4883         ipa_prop_read_jump_functions): Declare.
4884         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
4885         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
4886         (ipa_edge_args_vector): Move into GGC.
4887         (ipa_check_create_edge_args): Update.
4888         (ipa_update_after_lto_read): New.
4889         * passes.c (ipa_write_summaries_1): When in wpa, do not write
4890         summaries.
4891         (ipa_read_summaries): When in ltrans, so not read summaries.
4892         * lto-streamer.c (lto_get_section_name): Add
4893         LTO_section_jump_functions.
4894         * lto-streamer.h (LTO_section_jump_functions): New section.
4895         (produce_asm): Declare.
4896         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
4897         * lto-streamer-out.c (produce_asm): Export.
4898         * lto-streamer-in.c: Include tree-pass.h
4899         (input_function): Free dominance info when done.
4900         (lto_read_body): Push ipa_inline in ltrans stage.
4901         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
4902         * Makefile.in (GTFILES): Add ipa-prop.h
4903
4904 2009-10-22  Matthias Klose  <doko@ubuntu.com>
4905
4906         * doc/install.texi: Document --enable-browser-plugin.
4907
4908 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
4909
4910         * doc/invoke.texi (fira-loop-pressure): Update default value.
4911         * opts.c (decode_options): Remove default value setting for
4912         flag_ira_loop_pressure.
4913         * config/ia64/ia64.c (ia64_override_options): Set
4914         flag_ira_loop_pressure up for -O3.
4915         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
4916
4917 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
4918
4919         PR tree-optimization/41497
4920         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
4921         chrec_dont_know if the evolution function returned by follow_ssa_edge
4922         is constant in the analyzed loop and is not compatible with the
4923         initial value before the loop.
4924         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
4925
4926 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
4927
4928         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
4929
4930 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
4931
4932         PR other/25507
4933         * doc/invoke.texi: Document -print-multi-os-directory.
4934
4935 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
4936
4937         PR c++/41313
4938         * gcc/config/darwin10.h: Use default_emit_unwind_label.
4939         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
4940         when darwin_emit_unwind_label is used.
4941
4942 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
4943
4944         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
4945         order of checks.
4946
4947 2009-10-20  Richard Henderson  <rth@redhat.com>
4948
4949         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
4950         before emit_post_landing_pad.
4951
4952 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
4953
4954         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
4955         Use when calling rtx_costs.
4956         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
4957         global optimize_size.  Pass speed to mips_binary_cost.
4958
4959 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4960
4961         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
4962         of TREE_CONSTANT.
4963
4964 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
4965
4966         * rtl.h (simplify_replace_fn_rtx): Declare.
4967         (wrap_constant, unwrap_constant): Delete.
4968         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
4969         (expand_debug_expr): Don't call wrap_constant.
4970         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
4971         (auto_adjust_pair): Fold into...
4972         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
4973         Just return a new value.
4974         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
4975         otherwise use simplify_replace_rtx.
4976         * cselib.c (wrap_constant): Reinstate old definition.
4977         (cselib_expand_value_rtx_1): Don't wrap constants.
4978         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
4979         simplify_replace_rtx.
4980         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
4981         * reload1.c (reload): Skip all uses for an insn before adjusting it.
4982         Use simplify_replace_rtx.
4983         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
4984         adapted from...
4985         (simplify_replace_rtx): ...here.  Turn into a wrapper for
4986         simplify_replace_fn_rtx.
4987         (simplify_unary_operation): Don't unwrap CONSTs.
4988         * var-tracking.c (check_wrap_constant): Delete.
4989         (vt_expand_loc_callback): Don't call it.
4990         (vt_expand_loc): Likewise.
4991
4992 2009-10-20  Pascal Obry  <obry@adacore.com>
4993             Eric Botcazou  <ebotcazou@adacore.com>
4994
4995         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
4996
4997 2009-10-20  Michael Matz  <matz@suse.de>
4998
4999         * loop-invariant.c (create_new_invariant): Use different magic number.
5000
5001 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
5002
5003         PR target/39247
5004         * arm.c (arm_override_options): Forcibly disable hot/cold block
5005         partitioning.
5006
5007 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
5008
5009         PR debug/41739
5010         * haifa-sched.c (try_ready): Skip debug deps updating speculation
5011         status.
5012
5013 2009-10-20  Richard Guenther  <rguenther@suse.de>
5014
5015         * ggc-page.c: Include cfgloop.h.
5016         (struct max_alignment): Drop long double, add void *.
5017         (extra_order_size_table): Add low non-power-of-two multiples
5018         of MAX_ALIGNMENT.  Drop small type-based entries, add
5019         tree_type, cgraph_node and loop.
5020         * alloc-pool.c (struct allocation_object_def): Drop long double
5021         aligning element.
5022
5023 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
5024
5025         PR debug/41340
5026         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
5027         referenced just in DEBUG_INSNs.
5028
5029 2009-10-20  Richard Guenther  <rguenther@suse.de>
5030
5031         PR lto/41761
5032         * gimple.c (gimple_register_type): Make sure we register
5033         the types main variant first.
5034
5035 2009-10-20  Richard Guenther  <rguenther@suse.de>
5036
5037         * gimple.c (gimple_types_compatible_p): Simplify.  Move
5038         cheap checks before hashtable queries.  Add checks for
5039         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
5040
5041 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
5042
5043         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
5044         without size or with size that can't be represented as a host integer.
5045
5046 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
5047
5048         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
5049         the removal of a debug stmt as a significant change.
5050
5051 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
5052
5053         * config/s390/s390.md: Added agen condition to operand
5054         forwarding bypasses.  Added bypass for early address generation
5055         use of int results.  Updated comments.
5056
5057 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
5058
5059         * config/i386/i386.c: Remove signal.h #include.
5060
5061 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
5062
5063         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
5064         * doc/rtl.texi: Document ss_abs.
5065
5066 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
5067
5068         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
5069         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
5070         instead of C_LEX_RAW_STRINGS.
5071         (lex_string): Handle CPP_UTF8STRING.
5072         * c-parser.c (c_parser_postfix_expression): Likewise.
5073         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
5074         (C_LEX_STRING_NO_JOIN): ... this.
5075
5076 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
5077
5078         * config/cris/cris.c (cris_function_value, cris_libcall_value,
5079         cris_function_value_regno_p): New functions.
5080         (cris_promote_function_mode): Update comment.
5081         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
5082         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
5083         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
5084         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
5085
5086 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
5087
5088         * unwind-dw2.c (execute_stack_op): Fix operand order for
5089         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
5090
5091 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
5092
5093         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
5094         (lower_stmt) <GIMPLE_BIND>: Add comment.
5095         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
5096         and return.
5097         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
5098         Otherwise lower it and set cannot_fallthru to true.
5099         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
5100         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
5101         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
5102         to true for a noreturn call.  Do not remove statements.
5103         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
5104         Set cannot_fallthru to false on function exit.
5105         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
5106         <GIMPLE_ASSIGN>: Remove.
5107
5108 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5109
5110         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
5111
5112 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5113
5114         * config/s390/s390.c (s390_z10_optimize_cmp): Use
5115         next/prev_active_insn to skip DEBUG_INSNs as well.
5116
5117 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
5118
5119         * config/arm/arm.c (output_move_neon): Use DImode in call to
5120         adjust_address.
5121
5122 2009-10-19  Matthias Klose  <doko@ubuntu.com>
5123
5124         PR target/40134
5125         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
5126
5127 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
5128
5129         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
5130
5131 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
5132
5133         PR middle-end/41738
5134         * optabs.c (expand_binop): Make mode of shift count expression mode
5135         of shift count not target.
5136         Remove indent nit.
5137
5138 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
5139
5140         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
5141         case.  Force using values to replace references within the statement.
5142         (convert_local_reference_stmt): Likewise.
5143
5144 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
5145
5146         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
5147         remove a subsequent GOTO or RETURN statement.
5148
5149 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
5150
5151         * config/avr.md (*movqi): Add zero as equally preferable constraint
5152         as general register.
5153         (*movhi): Ditto.
5154
5155 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
5156
5157         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
5158
5159 2009-10-17  Richard Guenther  <rguenther@suse.de>
5160
5161         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
5162
5163 2009-10-17  Richard Guenther  <rguenther@suse.de>
5164
5165         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
5166         operands in COMPONENT_REFs.
5167
5168 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
5169
5170         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
5171         if not defined. Change type of second argument to const_rtx.
5172         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
5173         macro not defined.
5174         * targhooks.h (default_libcall_value): Update prototype.
5175         * target.h (struct gcc_target): Change type of second argument of
5176         libcall_value to const_rtx.
5177         * config/arm/arm.c (arm_libcall_value): Change type of second argument
5178         to const_rtx.
5179         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
5180         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
5181
5182 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
5183
5184         PR debug/40521
5185         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
5186         * cgraphunit.c (cgraph_optimize): Call it.
5187         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
5188         (dwarf2out_assembly_start): ... here.  New hook.
5189         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
5190         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
5191         hook.
5192         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
5193         * sdbout.c (sdb_debug_hooks): Likewise.
5194         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
5195         (vmsdbgout_assembly_start): New hook.
5196
5197 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
5198
5199         * rtl.h (RTL_LOCATION): Fix typo.
5200
5201 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
5202
5203         * print-rtl.c (print_rtx): Print locators in asm_operands
5204         and asm_input.
5205
5206 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
5207
5208         PR debug/41535
5209         * sched-deps.c (depl_on_debug_p): New.
5210         (attach_dep_link): Reject debug deps before nondebug deps.
5211         (add_to_deps_list): Insert debug deps after nondebug deps.
5212         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
5213         deps.
5214         (sd_add_dep): Do not reject debug deps.
5215         (add_insn_mem_dependence): Don't count debug deps.
5216         (remove_from_deps): Likewise.
5217         (sched_analyze_2): Set up mem deps on debug insns.
5218         (sched_analyze_insn): Record reg uses for deps on debug insns.
5219         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
5220         try_ready nondebug insn after debug insn.
5221         * ddg.c (create_ddg_dep_from_intra_loop_link,
5222         create_ddg_dep_no_link): Don't reject debug deps.
5223
5224 2009-10-16  Richard Guenther  <rguenther@suse.de>
5225
5226         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
5227         (maybe_merge_incomplete_and_complete_type): Likewise.
5228         (lto_symtab_merge): Do not call them.  Do not warn for
5229         complete vs. incomplete compatible types.
5230         (lto_symtab_merge_decls_2): Simplify.
5231         * gimple.c (gimple_force_type_merge): Remove.
5232         (gimple_types_compatible_p): Make it static.
5233         * gimple.h (gimple_force_type_merge): Remove.
5234         (gimple_types_compatible_p): Likewise.
5235
5236 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
5237
5238         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
5239         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
5240
5241 2009-10-16  Richard Guenther  <rguenther@suse.de>
5242
5243         PR tree-optimization/41728
5244         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
5245         if fold_stmt did anything.
5246
5247 2009-10-16  Richard Guenther  <rguenther@suse.de>
5248
5249         PR lto/41715
5250         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
5251         (maybe_fixup_handled_component): New function.
5252         (input_gimple_stmt): Fixup mismatched decl replacements.
5253
5254 2009-10-16  Richard Guenther  <rguenther@suse.de>
5255
5256         PR lto/41713
5257         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
5258         the same as VAR_DECL.
5259
5260 2009-10-16  Richard Guenther  <rguenther@suse.de>
5261
5262         * gimple.c (iterative_hash_gimple_type): For integer types
5263         also hash their minimum and maximum values and the string flag.
5264         For array types hash their domain and the string flag.
5265
5266 2009-10-16  Richard Guenther  <rguenther@suse.de>
5267
5268         * gimple.c (gimple_types_compatible_p): Restrict completing
5269         types to record or unions.  Simplify completion.
5270         Do not merge records or unions with different
5271         TYPE_STRUCTURAL_EQUALITY_P tag.
5272         (iterative_hash_gimple_type): Restrict non-recursing into
5273         pointer targets for records and unions.
5274
5275 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5276
5277         PR debug/41717
5278         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
5279         * dwarf2out.c (mem_loc_descriptor): Don't handle
5280         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
5281         punt if it is not lowpart subreg or if inner mode isn't
5282         MODE_INT.
5283
5284 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5285
5286         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
5287         investigating previous or next insns.
5288
5289 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
5290
5291         * tree-sra.c (build_ref_for_offset_1): Update comment.
5292
5293 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
5294
5295         * config/s390/s390.md (atype): Added missing values.
5296
5297 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5298
5299         PR target/41702
5300         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
5301         (casesi64p): Update pattern to reflect above.
5302
5303 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
5304
5305         PR rtl-optimization/41697
5306         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
5307
5308 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
5309
5310         PR target/23983
5311         * config/rs6000/predicates.md: Update copyright year.
5312         * config/rs6000/altivec.md: Ditto.
5313
5314         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
5315         (MD_INCLUDES): Add a2.md.
5316
5317         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
5318         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
5319         (builtin_classify): New static vector to classify various builtins
5320         to get the tree attributes correct.
5321         (def_builtin): Set the attributes of builtins based on what the
5322         builtin does (i.e. memory operation, floating point, saturation
5323         need special attributes, others are pure functions).
5324
5325         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
5326         the builtins.
5327         (enum rs6000_builtins): Include rs6000-builtin.def to define the
5328         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
5329         RS6000_BUILTIN_COUNT.
5330         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
5331         MAX_RS6000_BUILTINS.
5332
5333         * config/rs6000/rs6000-builtin.def: New file that combines the
5334         builtin enumeration name and attributes.
5335
5336 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
5337
5338         * config/i386/linux.h (ASM_SPEC): Add --32.
5339
5340 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5341
5342         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
5343         and DW_TAG_template_alias.
5344         (dwarf_attr_name): Handle DW_AT_main_subprogram,
5345         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
5346         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
5347         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
5348         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
5349         and DW_AT_GNU_odr_signature.
5350         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
5351         DW_FORM_flag_present and DW_FORM_ref_sig8.
5352         (output_signature): Only print name on the first byte.
5353         (output_die): Likewise for dw_val_class_data8.
5354
5355 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
5356
5357         * doc/invoke.texi: Clarify that most optimizations are not enabled
5358         without -O.
5359
5360 2009-10-15  Richard Guenther  <rguenther@suse.de>
5361
5362         PR lto/41668
5363         * gimple.c (compare_type_names_p): Handle anonymous names
5364         differently based on new mode argument.
5365         (gimple_types_compatible_p): For structs also compare the tags.
5366         (iterative_hash_type_name): Rename to ...
5367         (iterative_hash_name): ... this.  Hash all names.
5368         (iterative_hash_gimple_type): Fix hashing the struct tag of
5369         pointer targets.  Hash field decl names.
5370
5371 2009-10-15  Richard Guenther  <rguenther@suse.de>
5372
5373         PR lto/41669
5374         * gimple.c (gimple_get_alias_set): Avoid recursing on
5375         invalid type topology.
5376
5377 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5378
5379         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
5380
5381 2009-10-15  Richard Guenther  <rguenther@suse.de>
5382
5383         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
5384
5385 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5386
5387         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
5388         add --with-tune{,-32,-64} configured default for -mtune if explicit
5389         -mcpu is used.
5390
5391 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
5392
5393         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
5394
5395 2009-10-14  DJ Delorie  <dj@redhat.com>
5396
5397         * config/h8300/h8300.c (F): New.
5398         (Fpa): New.
5399         (h8300_emit_stack_adjustment): Call them.
5400         (push): Likewise.
5401         (h8300_push_pop): Likewise.
5402         (h8300_expand_prologue): Likewise.
5403         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
5404         (MUST_USE_SJLJ_EXCEPTIONS): Define.
5405         (INCOMING_RETURN_ADDR_RTX): Define.
5406         (INCOMING_FRAME_SP_OFFSET): Define.
5407         (DWARF_CIE_DATA_ALIGNMENT): Define.
5408
5409 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5410
5411         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
5412         fields in builtin structs.
5413         (finalize_record_size): Likewise.
5414
5415 2009-10-14  Richard Guenther  <rguenther@suse.de>
5416
5417         * gimple.c (gtc_ob): New global.
5418         (struct type_pair_d): Replace pointers with type UIDs.
5419         (type_pair_hash): Adjust.
5420         (type_pair_eq): Likewise.
5421         (lookup_type_pair): Likewise.  Allocate from an obstack.
5422         (gimple_force_type_merge): Adjust.
5423         (gimple_types_compatible_p): Likewise.
5424         (free_gimple_type_tables): Free the obstack.
5425
5426 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5427
5428         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
5429         stmts setting DEBUG_EXPR_DECLs.
5430
5431         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
5432         Don't crash if mode1 is VOIDmode.
5433
5434 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
5435
5436         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
5437         * params.h (IRA_LOOP_RESERVED_REGS): New.
5438         * tree-pass.h (pass_subregs_of_mode_init,
5439         pass_subregs_of_mode_finish): Remove.
5440         * passes.c (pass_subregs_of_mode_init,
5441         pass_subregs_of_mode_finish): Remove.
5442         (pass_reginfo_init): Move before loop optimizations.
5443         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
5444         * common.opt (fira-loop-pressure): New.
5445         * toplev.h (flag_ira_loop_pressure): New.
5446         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
5447         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
5448         Make external and void type functions.
5449         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
5450         pass_subregs_of_mode_finish): Remove.
5451         * ira-costs.c (init_costs): Call init_subregs_of_mode.
5452         * regmove.c: Include ira.h.
5453         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
5454         register pressure calculation in loops.
5455         * loop-invariant.c: Include REGS_H and ira.h.
5456         (struct loop_data): New members max_reg_pressure, regs_ref, and
5457         regs_live.
5458         (struct invariant): New member orig_regno.
5459         (curr_loop): New variable.
5460         (find_exits): Initialize regs_ref and regs_live.
5461         (create_new_invariant): Initialize orig_regno.
5462         (get_cover_class_and_nregs): New.
5463         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
5464         array.  Add code for flag_ira_loop_pressure.
5465         (gain_for_invariant): Make new_regs an array.  Add code for
5466         flag_ira_loop_pressure.
5467         (best_gain_for_invariant): Ditto.
5468         (set_move_mark): New parameter gain.  Use it for debugging output.
5469         (find_invariants_to_move): Make regs_needed and new_regs an array.
5470         Add code for flag_ira_loop_pressure.
5471         (move_invariant_reg): Set up orig_regno.
5472         (move_invariants): Set up reg classes for pseudos for
5473         flag_ira_loop_pressure.
5474         (free_loop_data): Clear regs_ref and regs_live.
5475         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
5476         get_regno_cover_class, change_pressure, mark_regno_live,
5477         mark_regno_death, mark_reg_store, mark_reg_clobber,
5478         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
5479         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
5480         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
5481         register pressure calculation in loops if new regs were added.
5482         Call finish_subregs_of_mode.
5483         * opts.c (decode_options): Set up flag_ira_loop_pressure.
5484         * Makefile.in (loop-invariant.o): Add ira.h.
5485         (regmove.o): Ditto.
5486         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
5487         Describe.
5488         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
5489
5490 2009-10-14  Richard Guenther  <rguenther@suse.de>
5491
5492         * lto-symtab.c (lto_symtab_compatible): Fold in ...
5493         (lto_symtab_merge): ... here.  Rewrite both to take the
5494         prevailing and a to-be-merged entry and to queue diagnostics properly.
5495         (lto_symtab_resolve_replaceable_p): New predicate for
5496         symbol resolution.
5497         (lto_symtab_resolve_can_prevail_p): Likewise.
5498         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
5499         handles merging commons by choosing the largest decl.  Fold
5500         in code that gives ODR errors.
5501         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
5502         diagnostics here.
5503         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
5504         case of no prevailing decl here.  Diagnose mismatches
5505         in object types here.  Drop all but the prevailing decls.
5506         (lto_symtab_prevailing_decl): Return the single prevailing decl.
5507         * lto-streamer-in.c (lto_input_tree_ref): Deal with
5508         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
5509
5510 2009-10-14  Richard Guenther  <rguenther@suse.de>
5511
5512         PR lto/41521
5513         * lto-streamer-in.c (input_bb): Replace debug stmts with
5514         nops instead of dropping them.
5515
5516 2009-10-14  Nick Clifton  <nickc@redhat.com>
5517
5518         * gcc/doc/extended.texi: Replace the dash character with @minus{}
5519         in situations where it is being used as a minus symbol.
5520         * gcc/doc/tm.texi: Likewise.
5521         * gcc/doc/md.texi: Likewise.
5522
5523 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5524
5525         PR preprocessor/41543
5526         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
5527         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
5528         * tree.c: Include intl.h.
5529         (expand_location): Handle BUILTINS_LOCATION.
5530         * Makefile.in (tree.o): Depend on intl.h.
5531
5532         PR debug/41695
5533         * dwarf2out.c (dwarf2out_var_location): Always clear
5534         last_postcall_label when changing last_label.
5535
5536 2009-10-14  Pascal Obry  <obry@adacore.com>
5537
5538         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
5539         (process_command): Handle -E as done with -c and -S.  Do not add
5540         the target executable suffix to the output file when -E is used.
5541         (main): Adjust error message accordingly.
5542
5543 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
5544
5545         PR debug/41343
5546         PR debug/41447
5547         PR debug/41264
5548         PR debug/41338
5549         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
5550         decl with rtl.
5551         (tree_code_size): Likewise.
5552
5553 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5554
5555         * builtins.c (fold_builtin_1): Support complex "arc" functions.
5556         * real.h (HAVE_mpc_arc): Define.
5557
5558 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5559
5560         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
5561         (struct builtin_description): Add fndecl field.
5562         (bdesc): Remove const qualifier.  Update initializer.
5563         (sh_media_init_builtins): Remove const qualifier for d.  Record
5564         the result of add_builtin_function to the fndecl field.
5565         (sh_builtin_decl): New.
5566         (sh_media_builtin_decl): New.
5567
5568 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
5569
5570         PR target/38948
5571         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
5572         requests between special registers.
5573
5574 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
5575
5576         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
5577
5578 2009-10-13  Richard Henderson  <rth@redhat.com>
5579
5580         PR tree-optimization/41377
5581         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
5582         (cleanup_empty_eh_merge_phis): New change_region parameter;
5583         pass it on to redirect_eh_edge_1.  Update callers.
5584         (cleanup_empty_eh_unsplit): Don't require an existing EH label
5585         at the destination block.
5586
5587 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
5588
5589         * passes.c (register_pass): Replaced gcc_unreachable by
5590         fatal_error on failure. Mentions plugins in comments & messages.
5591
5592 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
5593
5594         PR target/41693
5595         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
5596         * sched-vis.c (print_value): Use it.
5597         * cselib.c (cselib_hash_rtx): Likewise.
5598         * print-rtl.c (print_rtx): Likewise.
5599         * cfgexpand.c (expand_debug_rtx): Likewise.
5600         * var-tracking.c (vt_expand_loc_callback): Likewise.
5601
5602 2009-10-13  Richard Guenther  <rguenther@suse.de>
5603
5604         PR lto/41565
5605         * opts.c (handle_option): Split out code to handle setting
5606         the options flag var ...
5607         (set_option): ... here.
5608         * opts.h (set_option): Declare.
5609         * lto-opts.c (register_user_option_p): Include -fexceptions
5610         and all position independent code variants.
5611         (handle_common_option): Remove.
5612         (lto_reissue_options): Use set_option.
5613
5614 2009-10-13  Martin Jambor  <mjambor@suse.cz>
5615
5616         PR tree-optimization/41661
5617         * ipa-prop.c (compute_complex_pass_through): Allow only operations
5618         that are tcc_comparisons or do not change the type in any
5619         un-usleless way.
5620         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
5621         folding tcc_comparison operations.
5622
5623 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5624
5625         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
5626         properly.
5627
5628 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5629
5630         PR debug/41343
5631         PR debug/41447
5632         PR debug/41264
5633         PR debug/41338
5634         * tree.def (DEBUG_EXPR_DECL): New.
5635         * rtl.def (DEBUG_EXPR): New.
5636         * gengtype.c (adjust_field_rtx_def): Handle it.
5637         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
5638         (insert_debug_temp_for_var_def): ... this.  Drop support for
5639         moving.  Take iterator for def stmt; insert debug stmt before it.
5640         Scan early for use count and kind in debug stmts.
5641         (propagate_defs_into_debug_stmts): Rename to...
5642         (insert_debug_temps_for_defs): ... this.  Likewise.
5643         * tree.h (DEBUG_TEMP_UID): New.
5644         * tree.c (next_debug_decl_uid): New.
5645         (make_node_stat): Count debug decls separately.
5646         (copy_node_stat): Likewise.
5647         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
5648         * var-tracking.c (dv_is_decl_p): Recognize it.
5649         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
5650         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
5651         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
5652         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
5653         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
5654         (cselib_hash_rtx): Likewise.
5655         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
5656         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
5657         debug bind stmts.
5658         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
5659         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
5660         * rtl.c (copy_rtx): Likewise.
5661         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
5662         * print-rtl.c (print_rtx): Likewise.
5663         * sched-vis.c (print_value): Likewise.
5664         (print_insn): Handle DEBUG_EXPR_DECL.
5665         * tree-dump.c (dequeue_and_dump): Likewise.
5666         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
5667         * gimple-iterator (gsi_replace): Check for same lhs.
5668         (gsi_remove): Insert debug temps.
5669         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
5670         (move_computations_stmt): Drop explicit propagation into debug stmts.
5671         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
5672         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
5673         * tree-ssa-sink.c (statement_sink_location): Likewise.
5674         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
5675         * tree-ssanames.c (release_ssa_name): Adjust for rename.
5676         * tree-flow.h: Likewise.
5677         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
5678         debug temps without values.
5679         (eliminate_unnecessary_stmts): Don't discard just-inserted
5680         debug stmts.
5681
5682 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
5683
5684         PR target/26515
5685         * config/cris/cris.md (andu): Check that operand 1 is one of the
5686         general registers.  Fix typo in head comment.
5687
5688 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
5689
5690         * config/i386/i386.md (vswapmov): New.
5691         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
5692         (ix86_function_ms_hook_prologue): New.
5693         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
5694         * configure.ac: Test for swap suffix support in as.
5695         * configure: Rebuild.
5696
5697 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
5698
5699         PR target/41680
5700         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
5701         paradoxical subregs to prevent partial register stalls if the inner
5702         mode is integer mode.
5703
5704 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5705
5706         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
5707
5708 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
5709
5710         PR c++/41570
5711         * gcc/dwarf2out.c (template_parameter_pack_die,
5712         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
5713
5714 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5715
5716         PR debug/41616
5717         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
5718         on updates too.
5719         (maybe_register_def): Likewise.  Take stmt iterator.
5720         (rewrite_update_stmt): Take stmt iterator and pass it on.
5721         (rewrite_update_enter_block): Pass stmt iterator.
5722
5723 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5724
5725         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
5726         (spu_builtin_decl): New function.
5727
5728 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5729
5730         * config/i386/i386.md (SWIM): New mode iterator.
5731         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
5732         using SWIM mode iterator.
5733         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
5734         patterns using SWI48 mode iterator.
5735         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
5736         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
5737         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
5738         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
5739         patterns using SWI248 mode iterator.
5740         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
5741         gen_x86_movdicc_0_m1_rex64 for renamed function
5742
5743 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
5744             Eric Botcazou  <ebotcazou@adacore.com>
5745
5746         PR target/33743
5747         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
5748         * config/sparc/sol2-unwind.h: New file.
5749
5750 2009-10-11  Olivier Hainque  <hainque@adacore.com>
5751             Eric Botcazou  <ebotcazou@adacore.com>
5752
5753         PR target/33743
5754         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
5755         * config/i386/sol2-unwind.h: New file.
5756
5757 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
5758
5759         PR target/41665
5760         * config/i386/i386.md (addsi_1_zext): Get the proper second
5761         operand for lea.
5762
5763 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
5764
5765         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
5766         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
5767         replacement value.
5768
5769 2009-10-11  Richard Guenther  <rguenther@suse.de>
5770
5771         * gimple.c (iterative_hash_type_name): Do not handle special
5772         anonymous names.
5773
5774 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
5775
5776         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
5777         (*setcc_si_1_and): Ditto.
5778         (*setcc_si_1_movzbl): Ditto.
5779         (*setcc_<mode>_2): Ditto.
5780         (*setcc_qi): Rename from *setcc_1.
5781         (*setcc_qi_slp): Rename from *setcc_2.
5782
5783         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
5784         (*zero_extendqisi2_movzbw_and splitter): Ditto.
5785
5786         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
5787         "if" condition, there is already assert with reload_completed present.
5788
5789 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
5790
5791         * plugin.c (try_init_one_plugin): Improve constness of variable err.
5792
5793 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
5794
5795         * doc/install.texi (Final install): Refer to
5796         http://gcc.gnu.org/bugs/ for bug reporting.
5797
5798 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
5799
5800         * configure.ac: Add test for dci instruction.
5801         * configure: Regenerate.
5802         * config.in: Likewise.
5803         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
5804         * doc/invoke.texi: Add cpu_type 476 and 476fp.
5805         (-mmulhw): Add 476 to description.
5806         (-mdlmzb): Likewise.
5807         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
5808         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
5809         (processor_target_table): Add 476 and 476fp entries.
5810         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
5811         (rs6000_issue_rate): Add CPU_PPC476.
5812         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
5813         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
5814         (processor_type): Add PROCESSOR_PPC476.
5815         (EXTRA_SPECS): Add asm_cpu_476 string.
5816         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
5817         (define_attr "cpu"): Add ppc476.
5818         Include 476.md.
5819         Update comments for 476.
5820         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
5821         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
5822         Update copyright year.
5823         * config/rs6000/476.md: New file.
5824         * config/rs6000/40x.md: Add description for "isel" attribute.
5825         Update copyright year.
5826         * config/rs6000/440.md: Likewise.
5827         * config/rs6000/603.md: Likewise.
5828         * config/rs6000/6xx.md: Likewise.
5829         * config/rs6000/7450.md: Likewise.
5830         * config/rs6000/7xx.md: Likewise.
5831         * config/rs6000/8540.md: Likewise.
5832         * config/rs6000/cell.md: Likewise.
5833         * config/rs6000/e300c2c3.md: Likewise.
5834         * config/rs6000/e500mc.md: Likewise.
5835         * config/rs6000/mpc.md: Likewise.
5836         * config/rs6000/power4.md: Likewise.
5837         * config/rs6000/power5.md: Likewise.
5838         * config/rs6000/power6.md: Likewise.
5839         * config/rs6000/power7.md: Likewise.
5840         * config/rs6000/rios1.md: Likewise.
5841         * config/rs6000/rios2.md: Likewise.
5842         * config/rs6000/rs64.md: Likewise.
5843
5844 2009-10-10  Richard Guenther  <rguenther@suse.de>
5845
5846         PR tree-optimization/41654
5847         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
5848         a cond expr before calling gimple_cond_set_condition_from_tree.
5849         (ifcombine_iforif): Likewise.
5850
5851 2009-10-09  Ian Lance Taylor  <iant@google.com>
5852
5853         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
5854         * configure: Rebuild.
5855
5856 2009-10-09  Neil Vachharajani <nvachhar@google.com>
5857
5858         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
5859         deprecated.
5860
5861 2009-10-09  Richard Guenther  <rguenther@suse.de>
5862
5863         PR lto/41638
5864         * target-def.h (TARGET_BUILTIN_DECL): Define.
5865         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
5866         * target.h (struct gcc_target): Add builtin_decl target hook.
5867         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
5868         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
5869         target builtins.
5870         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
5871         not gcc_unreachable.
5872         (lto_output_builtin_tree): Sorry if the target does not support
5873         streaming target builtins.
5874         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
5875         (rs6000_builtin_decl): New function.
5876         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
5877         (ix86_builtin_decl): New function.
5878
5879 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
5880
5881         PR preprocessor/41445
5882         * c-ppoutput.c (do_line_change): New function.
5883         (cb_line_change): Use it.
5884         (scan_translation_unit): Call do_line_change if
5885         avoid_paste or PREV_WHITE and token location is on a different line
5886         than print.src_line.
5887
5888         PR debug/40521
5889         * dwarf2out.c (dwarf2out_init): Test whether
5890         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
5891         it is defined.
5892
5893         PR rtl-optimization/41646
5894         * calls.c (expand_call): For BLKmode types returned in registers
5895         avoid likely spilled hard regs in copy_blkmode_from_reg generated
5896         insns.
5897
5898 2009-10-09  Richard Guenther  <rguenther@suse.de>
5899
5900         PR tree-optimization/41634
5901         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
5902         we remove the correct elements.
5903         (optimize_stmt): Make sure to update stmt operands before
5904         optimizing redundancies.
5905
5906 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5907
5908         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
5909
5910 2009-10-09  Richard Guenther  <rguenther@suse.de>
5911
5912         PR driver/41637
5913         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
5914         globals.
5915         (lto_wrapper_exit): New function.
5916         (fatal): Use it.
5917         (fatal_perror): Likewise.
5918         (fork_execute): Use global args_name, do not free it.
5919         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
5920         * lto-streamer.h: Remove duplicate prototypes.
5921
5922 2009-10-09  Richard Guenther  <rguenther@suse.de>
5923
5924         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
5925         before calling stmt_can_throw_external.
5926
5927 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
5928
5929         PR tree-optimization/40071
5930         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
5931         pointer if the original data reference doesn't conflict with the
5932         created vector data reference.  Fix long line.
5933
5934 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
5935
5936         * config/i386/i386.md (any_div): New code iterator.
5937         (u): Handle div and udiv.
5938         (sgnprefix): Ditto.
5939         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
5940         code iterator.
5941         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
5942         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
5943         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
5944         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
5945
5946 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
5947
5948         * gcc.c (main): Remove trailing "." from diagnostics.
5949
5950 2009-10-08  Cary Coutant  <ccoutant@google.com>
5951
5952         Add support for debugging with ICF (Identical Code Folding).
5953         * calls.c (debug.h): New #include.
5954         (emit_call_1): Call virtual_call_token debug hook.
5955         * common.opt (-fenable-icf-debug): New option.
5956         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
5957         locations in the source).
5958         (poc_label_num): New variable.
5959         (dcall_entry, vcall_entry): New typedefs.
5960         (dcall_table, vcall_table): New variables.
5961         (struct vcall_insn): New type.
5962         (vcall_insn_table): New variable.
5963         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
5964         (size_of_dcall_table): New function.
5965         (output_dcall_table): New function.
5966         (size_of_vcall_table): New function.
5967         (output_vcall_table): New function.
5968         (dwarf2out_direct_call): New function.
5969         (vcall_insn_table_hash): New function.
5970         (vcall_insn_table_eq): New function.
5971         (dwarf2out_virtual_call_token): New function.
5972         (dwarf2out_virtual_call): New function.
5973         (dwarf2out_init): Allocate new tables and sections.
5974         (prune_unused_types): Mark DIEs referenced from direct call table.
5975         (dwarf2out_finish): Output direct and virtual call tables.
5976         * final.c (final_scan_insn): Call direct_call and virtual_call
5977         debug hooks.
5978         * debug.h (struct gcc_debug_hooks): Add direct_call,
5979         virtual_call_token, virtual_call hooks.
5980         (debug_nothing_uid): New function.
5981         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
5982         (debug_nothing_uid): New function.
5983         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
5984         (xcoff_debug_hooks): Likewise.
5985         * sdbout.c (sdb_debug_hooks): Likewise.
5986         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5987         * doc/invoke.texi (-fenable-icf-debug): New option.
5988
5989 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
5990
5991         PR debug/41353
5992         * regmove.c (regmove_backward_pass): Replace src with dst in the
5993         debug insn, and check for dst before rather than after.
5994
5995 2009-10-08  Janis Johnson <janis187@us.ibm.com>
5996
5997         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
5998         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
5999
6000 2009-10-08  Jan Hubicka  <jh@suse.cz>
6001
6002         PR middle-end/41626
6003         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
6004         do not mark cgraph nodes as needed.
6005         (record_references_in_initializer): Add new only_vars parameter.
6006         * cgraph.h (record_references_in_initializer): New parameter.
6007         * varasm.c (assemble_variable): Update call.
6008         * varpool.c (varpool_analyze_pending_decls): Always look for
6009         referenced vars.
6010
6011 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
6012
6013         * config/avr/avr.c (last_insn_address) Remove variable.
6014         (expand_prologue): Don't initialise last_insn_address variable.
6015         (final_prescan_insn): Don't output insn size.
6016         * config/avr/avr.opt (msize): Remove switch.
6017         * doc/invoke.texi (AVR Options): Remove documentation of -msize
6018         switch.
6019
6020 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
6021
6022         * combine.c (label_tick_ebb_start): Fix comment.
6023         (combine_instructions): Set label_tick and label_tick_ebb_start before
6024         calling setup_incoming_promotions.  Start them from 1.  Increment
6025         label_tick instead of deriving it from the BB index.  Rather than
6026         comparing ticks use the block from the previous iteration to decide
6027         whether to start a new EBB.  Remove empty lines before function.
6028
6029 2009-10-08  Michael Matz  <matz@suse.de>
6030
6031         PR middle-end/41573
6032         * builtins.c (fold_builtin_isascii): Use fold_build2.
6033         (fold_builtin_isdigit): Ditto.
6034         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
6035         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
6036         remove_useless_stmts_cond, remove_useless_stmts_tf,
6037         remove_useless_stmts_tc, remove_useless_stmts_bind,
6038         remove_useless_stmts_goto, remove_useless_stmts_label,
6039         remove_useless_stmts_1, remove_useless_stmts,
6040         pass_remove_useless_stmts): Remove.
6041         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
6042         * passes.c (init_optimization_passes): Don't add
6043         pass_remove_useless_stmts.
6044         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
6045         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
6046         static constants.
6047         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
6048         for static constants.
6049         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
6050         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
6051
6052 2009-10-08  Richard Guenther  <rguenther@suse.de>
6053
6054         * gimple.c (free_gimple_type_tables): New function.
6055         * gimple.h (free_gimple_type_tables): Declare.
6056
6057 2009-10-07  Mark Heffernan  <meheff@google.com>
6058
6059         * ipa-prop.c (ipa_print_node_params) Only print
6060         names of named arguments.
6061
6062 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
6063
6064         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
6065         being statically linked.
6066
6067 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6068
6069         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
6070
6071 2009-10-08  Jan Hubicka  <jh@suse.cz>
6072
6073         PR bootstrap/41620
6074         * ipa.c (cgraph_externally_visible_p,
6075         function_and_variable_visibility,
6076         whole_program_function_and_variable_visibility): Skip non-finalized
6077         nodes.
6078
6079 2009-10-08  Nick Clifton  <nickc@redhat.com>
6080
6081         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
6082         CONST_DOUBLEs.
6083
6084 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
6085
6086         PR bootstrap/37739
6087         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
6088
6089 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
6090
6091         PR c/41182
6092         * c-common.c (c_fully_fold_internal): Strip nops from the result
6093         of recursive calls to c_fully_fold_internal.
6094         (c_wrap_maybe_const): New.
6095         (c_save_expr): Use c_wrap_maybe_const.
6096         * c-common.h (c_wrap_maybe_const): Declare.
6097         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
6098         build_binary_op): Use c_wrap_maybe_const.
6099
6100 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6101
6102         * real.c: Fix comment to reflect actual exponent size.
6103
6104 2009-10-08  Ben Elliston  <bje@au.ibm.com>
6105
6106         * config/rs6000/a2.md: Add FSF comment header.
6107
6108 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
6109
6110         * config/i386/i386.md (any_extend): New code iterator.
6111         (u, s): New code attributes.
6112         (sgnprefix): Ditto.
6113         (DWIH): Rewrite as code iterator for SI and DI modes.
6114         (DWI): Rewrite as mode attribute.
6115         (dwi): New mode attribute.
6116         (di): Depend on SI mode and DI mode.
6117         (doubleint_general_operand): Remove mode attribute.
6118
6119         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
6120         DWIH mode iterator.
6121
6122         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
6123         (*sub<mode>3_doubleword): Ditto.
6124
6125         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
6126         using SWIM248 mode iterator.
6127         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
6128         using SWI48 mode iterator.
6129         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
6130         patterns using DWIH mode iterator and any_extend code iterator.
6131         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
6132         using any_extend code iterator.
6133         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
6134         patterns using DWIH mode iterator and any_extend code iterator.
6135         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
6136         using any_extend code iterator.
6137         (<s>mul<mode>3_highpart): Macroize expander from
6138         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
6139         and any_extend code iterator.
6140         (*<s>muldi3_highpart_1): Macroize insn from
6141         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
6142         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
6143         patterns using any_extend code iterator.
6144         (*<s>mulsi3_highpart_zext): Macroize insn from
6145         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
6146
6147 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
6148
6149         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
6150         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
6151         refering to a DIE with DW_AT_const_value.
6152
6153 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
6154
6155         PR middle-end/22072
6156         * ira-lives.c (check_and_make_def_conflict): Process all operands.
6157
6158 2009-10-06  Jan Hubicka  <jh@suse.cz>
6159
6160         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
6161         correctly.
6162
6163 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
6164
6165         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
6166         *lea_2_rex64): Move before *add<mode>_1 pattern.
6167
6168 2009-10-07  Jan Hubicka  <jh@suse.cz>
6169
6170         * collect2.c (main): Add -fno-whole-program.
6171         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
6172
6173 2009-10-07  Jan Hubicka  <jh@suse.cz>
6174
6175         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
6176         has no address taken.
6177         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
6178         never needed.
6179         (cgraph_clone_node): Clear externally_visible flag for clones.
6180         * cgraph.h (cgraph_only_called_directly_p,
6181         cgraph_can_remove_if_no_direct_calls_p): New predicates.
6182         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
6183         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
6184         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
6185         ipcp_insert_stage): Likwise.
6186         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
6187         externally_visible flag.
6188         (verify_cgraph_node): Verify that inline clones look right.
6189         (process_function_and_variable_attributes): Do not set
6190         externally_visible flags.
6191         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
6192         been already run.
6193         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
6194         boundaries.
6195         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
6196         clear externally_visible when turning into inline clones
6197         (cgraph_mark_inline_edge): Use new predicates.
6198         (cgraph_estimate_growth): Likewise.
6199         (cgraph_decide_inlining): Likewise.
6200         * ipa.c (cgraph_postorder): Likewise.
6201         (cgraph_remove_unreachable_nodes): Likewise; sanity check
6202         that inline clones are not needed.
6203         (cgraph_externally_visible_p): New predicate.
6204         (function_and_variable_visibility): Add whole_program parameter;
6205         always set externally_visible flag; handle COMDAT function
6206         privatization.
6207         (local_function_and_variable_visibility): New function.
6208         (gate_whole_program_function_and_variable_visibility): New function.
6209         (whole_program_function_and_variable_visibility): New function.
6210         (pass_ipa_whole_program_visibility): New function.
6211         * passes.c  (init_optimization_passes): Add whole program visibility
6212         pass.
6213         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
6214         not care about needed/reachable flags.
6215         * varpool.c: Include flags.h
6216         (decide_is_variable_needed): When doing LTO assume whole-program mode.
6217         (varpool_finalize_decl): When we are in LTO read-back, all variables
6218         are analyzed.
6219         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
6220
6221 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6222
6223         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
6224         add MASK_HARD_DFP.
6225
6226 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6227
6228         * config.gcc: Don't include the makefile fragments intended for
6229         libgcc.
6230         * config/s390/fixdfdi.h: File removed.
6231         * config/s390/libgcc-glibc.ver: File removed.
6232         * config/s390/s390.h: Remove the fixdfdi.h hack.
6233         * config/s390/t-crtstuff: File moved to libgcc dir.
6234         * config/s390/t-linux: Likewise.
6235         * config/s390/t-tpf: libgcc specific parts removed.
6236         * config/s390/t-linux64: Likewise.
6237
6238 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
6239
6240         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
6241         (lto-compress.o): Likewise.
6242
6243 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
6244
6245         PR target/41512
6246         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
6247         dllexport to class members here.
6248         (i386_pe_determine_dllimport_p): Only check static class data for
6249         definition.
6250         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
6251         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
6252         functions for vague linkage.
6253         (i386_pe_type_dllexport_p): Fix formatting.
6254         (maybe_add_dllexport) New function.
6255         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
6256         to class members.
6257
6258 2009-10-07  Ben Elliston  <bje@au.ibm.com>
6259
6260         * config/rs6000/a2.md: Remove duplicated lines.
6261
6262 2009-10-07  Ben Elliston  <bje@au.ibm.com>
6263
6264         * config.gcc (powerpc*-*-*): Handle a2.
6265         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
6266         * config/rs6000/a2.md: New file.
6267         * config/rs6000/rs6000.opt (mno-update): New.
6268         (mupdate): Return to using a mask, not a var.
6269         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
6270         (enum processor_type): Add PROCESSOR_PPCA2.
6271         * config/rs6000/rs6000.c (ppca2_cost): New costs.
6272         (rs6000_override_options): Add "a2" to processor_target_table.
6273         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
6274         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
6275
6276 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
6277
6278         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
6279         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
6280         reference to nonexistent gen_truncxfxf2 function.
6281
6282 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
6283
6284         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
6285         (DWIH, g, di, doubleint_general_operand): New mode attributes.
6286         (general_operand): Handle TI mode.
6287         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
6288         using SDWIM mode iterator.
6289         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
6290         pattern from *add{di,ti}3_1 patterns and corresponding splitters
6291         using DWI mode iterator.
6292         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
6293         patterns using SWI mode iterator.
6294         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
6295         using SWI48 mode iterator.
6296         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
6297         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
6298         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
6299         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
6300         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
6301         using SDWIM mode iterator.
6302         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
6303         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
6304         using DWI mode iterator.
6305         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
6306         patterns using SWI mode iterator.
6307         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
6308         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
6309         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
6310         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
6311         patterns using plusminus code iterator.
6312         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
6313         sub<mode>3 patterns using plusminus code iterator.
6314         * config/i386/i386.c (override_options): Update the call to
6315         gen_subdi_carry_rex64 for renamed function.
6316         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
6317         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
6318         calls to instruction expanders.
6319
6320 2009-10-06  Martin Jambor  <mjambor@suse.cz>
6321
6322         PR bootstrap/41395
6323         * opts.c (decode_options): Run IPA-SRA at -O2.
6324
6325 2009-10-06  Richard Guenther  <rguenther@suse.de>
6326
6327         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
6328
6329 2009-10-06  Tobias Burnus  <burnus@net-b.de>
6330
6331         PR lto/41591
6332         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
6333         -flto and -fwhole-program flags can be combined.
6334
6335 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
6336
6337         PR driver/41217
6338         * gcc.c (process_command): Check that -o argument was specified.
6339
6340 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
6341
6342         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
6343
6344 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6345
6346         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
6347         * doc/invoke.texi (Warning Options): Annotate allowed languages
6348         for -Wunsuffixed-float-constants.
6349
6350 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
6351
6352         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
6353         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
6354         same name and isn't the main variant.
6355
6356         PR debug/41558
6357         * dwarf2out.c (loc_by_reference): Removed.
6358         (dw_loc_list_1): New function.
6359         (dw_loc_list): Remove toplev argument, add want_address argument.
6360         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
6361         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
6362         want_address == 2 to dw_loc_list.  For successful dw_loc_list
6363         set have_address to 1 only if want_address is not 0.
6364
6365 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
6366
6367         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
6368         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
6369         a code block followed by two pointers.
6370         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
6371         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
6372         (MIPS_MOVE): Likewise.
6373         (MIPS_LUI): Likewise.
6374         (MIPS_JR): Likewise.
6375         (MIPS_BAL): Likewise.
6376         (MIPS_NOP): Likewise.
6377         (mips_asm_trampoline_template): Delete.
6378         (mips_trampoline_code_size): New function.
6379         (mips_trampoline_init): Add shorter sequences for all cases
6380         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
6381         Calculate the opcodes directly, rather than copying from a template.
6382         Only flush the code part of the trampoline.
6383         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
6384
6385 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
6386
6387         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
6388         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
6389         (INCOMING_RETURN_ADDR_RTX): Likewise.
6390         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
6391         with AT_REGNUM.
6392         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
6393         with RETURN_ADDR_REGNUM.
6394         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
6395         * config/mips/mips.c (mips16_build_call_stub): Replace
6396         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
6397         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
6398         (mips_print_operand_punctuation): Likewise.
6399         (mips_frame_set): Likewise.
6400         (mips16e_output_save_restore): Likewise.
6401         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
6402         (mips_save_reg_p): Likewise.
6403         (mips_return_addr): Likewise.
6404         (mips_set_return_address): Likewise.
6405         (mips_direct_save_slot_move_p): Likewise.
6406         (mips_output_function_prologue): Likewise.
6407         (mips_restore_reg): Likewise.
6408         (mips_expand_epilogue): Likewise.
6409         (mips_epilogue_uses): Likewise.
6410         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
6411         (*mov<mode>_ra): Use it instead of a hard-coded 31.
6412         (clear_hazard_<mode>): Likewise.
6413         (call_internal): Likewise.
6414         (call_internal_direct): Likewise.
6415         (call_direct_split): Likewise.
6416         (call_value_internal): Likewise.
6417         (call_value_split): Likewise.
6418         (call_value_internal_direct): Likewise.
6419         (call_value_direct_split): Likewise.
6420         (call_value_multiple_internal): Likewise.
6421         (call_value_multiple_split): Likewise.
6422
6423 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
6424             Jakub Jelinek  <jakub@redhat.com>
6425
6426         PR rtl-optimization/41511
6427         * combine.c (record_value_for_reg): Pass explicit values as argument
6428         to get_last_value_validate.
6429         (get_last_value_validate): Document INSN parameter.
6430         For non-readonly MEMs, assume they might have been modified if INSN
6431         was in another basic block.
6432         (get_last_value): Minor reformatting.
6433
6434 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6435
6436         PR tree-opt/40992
6437         * final.c (asm_str_count): Split out from asm_insn_count.
6438         * rtl.h (asm_str_count): New prototype.
6439         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
6440         asm_str_count.
6441
6442 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
6443
6444         * doc/plugins.texi: Change plugin_pass to register_pass_info.
6445
6446 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
6447             Rafael Espindola  <espindola@google.com>
6448
6449         * gengtype.c (write_types): Moved call to write_func_for_structure
6450         into seperate loops.
6451
6452 2009-10-05  Richard Guenther  <rguenther@suse.de>
6453
6454         PR lto/41281
6455         * lto-cgraph.c (output_cgraph): Output toplevel asms.
6456         (input_cgraph_1): Input toplevel asms.
6457
6458 2009-10-05  Richard Guenther  <rguenther@suse.de>
6459
6460         PR lto/40902
6461         * lto-symtab.c (lto_compatible_attributes_p): Remove.
6462         (external_aggregate_decl_p): Likewise.
6463         (lto_symtab_compatible): Re-structure.  Remove dead code.
6464         For variables ignore toplevel qualifiers when comparing types.
6465         Issue warnings, not errors for mismatched user-alignment.
6466
6467 2009-10-05  Richard Guenther  <rguenther@suse.de>
6468
6469         PR lto/41552
6470         PR lto/41487
6471         * lto-symtab.c (struct lto_symtab_base_def): Remove.
6472         (struct lto_symtab_identifier_def): Likewise.
6473         (struct lto_symtab_decl_def): Likewise.
6474         (struct lto_symtab_entry_def): New.
6475         (lto_symtab_identifier_t): Rename to ...
6476         (lto_symtab_entry_t): ... this.
6477         (lto_symtab_decls): Remove.
6478         (lto_symtab_base_hash): Rename to ...
6479         (lto_symtab_entry_hash): ... this.
6480         (lto_symtab_base_eq): Rename to ...
6481         (lto_symtab_entry_eq): ... this.
6482         (lto_symtab_base_marked_p): Rename to ...
6483         (lto_symtab_entry_marked_p): ... this.
6484         (lto_symtab_identifier_marked_p): Remove.
6485         (lto_symtab_decl_marked_p): Likewise.
6486         (lto_symtab_maybe_init_hash_tables): Rename to ...
6487         (lto_symtab_maybe_init_hash_table): ... this.
6488         (lto_symtab_set_resolution_and_file_data): Remove.
6489         (lto_symtab_register_decl): New function.
6490         (lto_symtab_get_identifier): Remove.
6491         (lto_symtab_get): New function.
6492         (lto_symtab_get_resolution): Adjust.
6493         (lto_symtab_get_identifier_decl): Remove.
6494         (lto_symtab_set_identifier_decl): Likewise.
6495         (lto_symtab_merge_decl): Rename to ...
6496         (lto_symtab_merge): ... this.  Rewrite.
6497         (lto_symtab_merge_var): Remove.
6498         (lto_symtab_merge_fn): Likewise.
6499         (lto_symtab_prevailing_decl): Adjust.
6500         (lto_cgraph_replace_node): New function.
6501         (lto_symtab_merge_decls_2): Likewise.
6502         (lto_symtab_merge_decls_1): Likewise.
6503         (lto_symtab_fixup_var_decls): Likewise.
6504         (lto_symtab_resolve_symbols): Likewise.
6505         (lto_symtab_merge_decls): Likewise.
6506         (lto_symtab_prevailing_decl): Adjust.
6507         (lto_symtab_get_symtab_def): Remove.
6508         (lto_symtab_get_file_data): Likewise.
6509         (lto_symtab_clear_resolution): Adjust.
6510         (lto_symtab_clear_resolution): Likewise.
6511         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
6512         (input_cgraph_1): Likewise.
6513         * lto-streamer-in.c (get_resolution): Do not provide fake
6514         symbol resolutions here.
6515         (deferred_global_decls): Remove.
6516         (lto_register_deferred_decls_in_symtab): Likewise.
6517         (lto_register_var_decl_in_symtab): Change signature, register
6518         variable via lto_symtab_register_decl.
6519         (lto_register_function_decl_in_symtab): Likewise.
6520         (lto_read_tree): Adjust.
6521         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
6522         (lto_symtab_merge_var): Likewise.
6523         (lto_symtab_merge_fn): Likewise.
6524         (lto_symtab_register_decl): Declare.
6525         (lto_symtab_merge_decls): Likewise.
6526
6527 2009-10-05  Richard Guenther  <rguenther@suse.de>
6528
6529         PR tree-optimization/23821
6530         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
6531         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
6532         simple IV increments.
6533
6534 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6535
6536         * config/arm/arm.c (arm_override_options): Really initialize
6537         flag_dwarf2_cfi_asm to 0.
6538
6539 2009-10-05  Doug Kwan  <dougkwan@google.com>
6540
6541         PR rtl-optimization/41574
6542         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
6543         floating point and we are not doing unsafe math optimizations.
6544
6545 2009-10-03  Simon Baldwin  <simonb@google.com>
6546             Cary Coutant  <ccoutant@google.com>
6547             Rafael Espindola  <espindola@google.com>
6548             Richard Guenther  <rguenther@suse.de>
6549             Jan Hubicka  <jh@suse.cz>
6550             Doug Kwan <dougkwan@google.com>
6551             H.J. Lu  <hongjiu.lu@intel.com>
6552             Bill Maddox  <maddox@google.com>
6553             Ryan Mansfield  <rmansfield@qnx.com>
6554             Diego Novillo  <dnovillo@google.com>
6555             Ollie Wild  <aaw@google.com>
6556             Kenneth Zadeck <zadeck@naturalbridge.com>
6557
6558         * lto-cgraph.c: New file.
6559         * lto-compress.c: New file.
6560         * lto-compress.h: New file.
6561         * lto-opts.c: New file.
6562         * lto-section-in.c: New file.
6563         * lto-section-out.c: New file.
6564         * lto-streamer-in.c: New file.
6565         * lto-streamer-out.c: New file.
6566         * lto-streamer.c: New file.
6567         * lto-streamer.h: New file.
6568         * lto-symtab.c: New file.
6569         * lto-wpa-fixup.c: New file.
6570         * lto-wrapper.c: New file.
6571
6572 2009-10-03  Simon Baldwin  <baldwin@google.com>
6573             Ben Elliston  <bje@au.ibm.com>
6574             Rafael Espindola  <espindola@google.com>
6575             Nathan Froyd  <froydnj@codesourcery.com>
6576             Jan Hubicka  <jh@suse.cz>
6577             Doug Kwan  <dougkwan@google.com>
6578             Diego Novillo  <dnovillo@google.com>
6579             Kenneth Zadeck  <zadeck@naturalbridge.com>
6580
6581         * Makefile.in (enable_lto): New.
6582         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
6583         (LINKER_PLUGIN_API_H): Define.
6584         (LTO_SYMTAB_H): Define.
6585         (LTO_STREAMER_H): Define.
6586         (TREE_VECTORIZER_H): Define.
6587         (INCLUDES): Add LIBELFINC.
6588         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
6589         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
6590         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
6591         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
6592         (native): Add lto-wrapper$(exeext)
6593         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
6594         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
6595         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
6596         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
6597         (varasm.o): Add dependency on tree-iterator.h.
6598         (cgraph.o): Add dependency on cif-code.def.
6599         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
6600         (ipa-pure-const.o): Likewise.
6601         (GTFILES): Add lto-symtab.c.
6602         (install-lto-wrapper): New.
6603         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
6604         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
6605         * config.in: Regenerate.
6606
6607 2009-10-03  Rafael Espindola  <espindola@google.com>
6608             Diego Novillo  <dnovillo@google.com>
6609
6610         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
6611         ipa_write_summaries.
6612         Call execute_ipa_summary_passes for all_regular_ipa_passes and
6613         all_lto_gen_passes.
6614         (cgraph_optimize): Make extern.
6615
6616 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
6617             Kenneth Zadeck <zadeck@naturalbridge.com>
6618
6619         * toplev.c (in_lto_p): Declare.
6620         * collect2.c (scan_prog_file): Read all the output when reading
6621         information for LTO.
6622         (enum lto_mode_d): Declare.
6623
6624 2009-10-03  Richard Guenther  <rguenther@suse.de>
6625             Diego Novillo  <dnovillo@google.com>
6626
6627         * gimple.c: Include target.h and alias.h.
6628         (gimple_types): Declare.
6629         (type_hash_cache): Declare.
6630         (gimple_alloc_stat): Make extern.
6631         (gimple_build_eh_must_not_throw): Call
6632         gimple_eh_must_not_throw_set_fndecl.
6633         (struct type_pair_d): Declare.
6634         (type_pair_t): Declare.
6635         (type_pair_hash): New.
6636         (type_pair_eq): New.
6637         (lookup_type_pair): New.
6638         (gimple_force_type_merge): New.
6639         (compare_type_names_p): New.
6640         (compare_field_offset): New.
6641         (gimple_types_compatible_p): New.
6642         (struct sccs): Declare.
6643         (next_dfs_num): Declare.
6644         (iterative_hash_gimple_type): New.
6645         (visit): New.
6646         (iterative_hash_type_name): New.
6647         (iterative_hash_gimple_type): New.
6648         (gimple_type_hash): New.
6649         (gimple_type_eq): New.
6650         (gimple_register_type): New.
6651         (print_gimple_types_stats): New.
6652         (gimple_signed_or_unsigned_type): New.
6653         (gimple_unsigned_type): New.
6654         (gimple_signed_type): New.
6655         (gimple_get_alias_set): New.
6656         (gimple_decl_printable_name): Do not use DMGL_TYPES.
6657         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
6658         (gimple_force_type_merge): Declare.
6659         (gimple_types_compatible_p): Declare.
6660         (gimple_register_type): Declare.
6661         (print_gimple_types_stats): Declare.
6662         (gimple_unsigned_type): Declare.
6663         (gimple_signed_type): Declare.
6664         (gimple_get_alias_set): Declare.
6665         (gimple_eh_must_not_throw_set_fndecl): New.
6666
6667 2009-10-03  Jan Hubicka  <jh@suse.cz>
6668             Kenneth Zadeck <zadeck@naturalbridge.com>
6669
6670         * ipa-pure-const.c: Include lto-streamer.h.
6671         (register_hooks): Factor out of ...
6672         (generate_summary): ... here.
6673         (pure_const_write_summary): New.
6674         (pure_const_read_summary): New.
6675         (pass_ipa_pure_const): Add pure_const_write_summary and
6676         pure_const_read_summary.
6677         * ipa-reference.c: Include lto-streamer.h.
6678         (add_new_function): New.
6679         (remove_node_data): New.
6680         (duplicate_node_data): New.
6681         (ipa_init): Guard against multiple calls.
6682         Move hook setup from analyze_function.
6683         (write_node_summary_p): New.
6684         (ipa_reference_write_summary): New.
6685         (ipa_reference_read_summary): New.
6686         (pass_ipa_reference): Add ipa_reference_write_summary and
6687         ipa_reference_read_summary.
6688         * cgraph.h (cgraph_local_info): Add field lto_file_data.
6689         (struct cgraph_edge): Add fields lto_stmt_uid and
6690         call_stmt_cannot_inline_p.
6691         (cgraph_optimize): Declare.
6692         (cgraph_decide_is_function_needed): Declare.
6693         (reset_inline_failed): Declare.
6694         (enum LTO_cgraph_tags): Declare.
6695         (LTO_cgraph_tag_names): Declare.
6696         (LCC_NOT_FOUND): Define.
6697
6698 2009-10-03  Doug Kwan  <dougkwan@google.com>
6699             Rafael Espindola  <espindola@google.com>
6700             Jan Hubicka  <jh@suse.cz>
6701             Diego Novillo  <dnovillo@google.com>
6702             Kenneth Zadeck  <zadeck@naturalbridge.com>
6703
6704         * passes.c (all_regular_ipa_passes): New.
6705         (all_ipa_passes): Rename to all_small_ipa_passes.
6706         (init_optimization_passes): Init all_regular_ipa_passes.
6707         * tree-pass.h (all_regular_ipa_passes): New.
6708         (all_ipa_passes): Rename to all_small_ipa_passes.
6709         * passes.c (all_lto_gen_passes): New.
6710         (init_optimization_passes): Initialize all_lto_gen_passes.
6711         (execute_ipa_summary_passes): Make non-static.
6712         (ipa_write_summaries_1): New.
6713         (ipa_write_summaries_2): New.
6714         (ipa_write_summaries): New.
6715         (ipa_write_summaries_of_cgraph_node_set): New.
6716         (ipa_read_summaries_1): New.
6717         (ipa_read_summaries): New.
6718         (execute_ipa_pass_list): Call cgraph_process_new_functions.
6719         (execute_regular_ipa_pass_list): Remove.
6720         (init_optimization_passes): Schedule
6721         pass_rebuild_cgraph_edges and pass_early_inline outside
6722         of pass_all_early_optimizations.  Document reason.
6723         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
6724         pass_ipa_lto_finish_out): New pass.
6725         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
6726         (execute_all_ipa_transforms): New.
6727         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
6728         (dump_properties, debug_properties): New.
6729         * tree-optimize.c (gate_all_early_local_passes): Return
6730         false if we are in lto1.
6731         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
6732         * tree-pass.h (execute_all_ipa_transforms): Declare.
6733         (pass_ipa_function_and_variable_visibility): Declare.
6734         (pass_ipa_early_inline): Declare.
6735         (pass_ipa_lto_gimple_out): Declare.
6736         (pass_ipa_lto_wpa_fixup): Declare.
6737         (pass_ipa_lto_finish_out): Declare.
6738         (all_small_ipa_passes, all_regular_ipa_passes,
6739         all_lto_gen_passes): Declare.
6740         (execute_ipa_summary_passes): Declare.
6741         (execute_all_ipa_transforms): Declare.
6742         (ipa_write_summaries): Declare
6743         (ipa_write_summaries_of_cgraph_node_set): Declare.
6744         (ipa_read_summaries): Declare.
6745
6746 2009-10-03  Doug Kwan  <dougkwan@google.com>
6747             Ollie Wild  <aaw@google.com>
6748
6749         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
6750
6751         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
6752         (lto_mode): New variable.
6753         (maybe_run_lto_and_relink): Handle the -fwpa option.
6754         (main): Handle the -fwpa option.
6755         (maybe_unlink_list): New function.
6756         * gcc.c (link_lto_options): Replace -flto with -fwpa.
6757         * common.opt (flto): New flag.
6758         * toplev.c (flag_generate_lto): Declare.
6759
6760 2009-10-03  Simon Baldwin  <simonb@google.com>
6761
6762         * common.opt (flto-compression-level): New flag.
6763
6764         * opts.c: Include lto-opts.h.
6765         (handle_option): Call lto_register_user_option for each
6766         valid option handled.
6767         (decode_options): Clear registered options before the options
6768         handling loop.
6769
6770 2009-10-03  Cary Coutant  <ccoutant@google.com>
6771
6772         * collect2.c (is_elf): New function.
6773         (scan_prog_file): Require LTO object to be in ELF format.
6774
6775 2009-10-03  Rafael Espindola  <espindola@google.com>
6776
6777         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
6778         libgcc to the linker.
6779
6780         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
6781
6782         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
6783         (collect_execute): Add flags argument. Pass flags to pex_run. Update
6784         all callers.
6785         * collect2.h (collect_execute): Add flags argument.
6786         * tlink.c (tlink_execute): Update call to collect_execute.
6787         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
6788         (use_linker_plugin): New.
6789         (use_linker_plugin_spec_function): New.
6790         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
6791         (linker_plugin_file_spec): New.
6792         (lto_wrapper_spec): New.
6793         (lto_gcc_spec): New.
6794         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
6795         (static_spec_functions): Add use-linker-plugin.
6796         (process_command): Handle -use-linker-plugin.
6797         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
6798         linker_plugin_file_spec and lto_gcc_spec.
6799         (use_linker_plugin_spec_function): New.
6800
6801 2009-10-03  Richard Guenther  <rguenther@suse.de>
6802
6803         PR lto/41547
6804         PR lto/41548
6805         * tree.h (is_lang_specific): Include LANG_TYPE.
6806         * tree.c (find_decls_types_r): Manually add interesting parts
6807         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
6808
6809         * gimple.c (type_pair_hash): Make symmetric.
6810         (type_pair_eq): Likewise.
6811         (lookup_type_pair): Increase initial hashtable size.
6812         (gimple_force_type_merge): Rely on type-pair symmetry.
6813         (visit): Remove excessive checking code.
6814         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
6815         (gimple_register_type): Remove getenv calls, shrink initial
6816         hashtable size.
6817
6818         PR middle-end/41502
6819         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
6820         inline functions if not generating lto output.
6821
6822         PR lto/41379
6823         * toplev.c (finalize): In WPA mode remove the asm file.
6824
6825 2009-10-03  Doug Kwan  <dougkwan@google.com>
6826
6827         * ipa-inline.c (cgraph_mark_inline): Check
6828         edge->call_stmt_cannot_inline_p instead of calling
6829         gimple_call_cannot_inline_p.
6830         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
6831         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
6832         (inline_generate_summary): Do nothing in LTRANS.
6833         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
6834         exists before calling gimple_call_cannot_inline_p.
6835         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
6836         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
6837         Update new_edge->lto_stmt_uid.
6838         * cgraphbuild.c (reset_inline_failed): New.
6839
6840         * common.opt (fwpa): New flag.
6841         (fltrans): New option.
6842         * gcc.c (gcc_lto_option_t): New type.
6843         (current_lto_option): New variable.
6844         (lto_single_spec_function): Remove and is replaced by ..
6845         (lto_option_spec_function): New function.
6846         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
6847         passing the -flto flag.
6848         (cc1_options): Separate non-LTO related parts into ..
6849         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
6850         (lto1_options): New spec for lto FE.
6851         (link_lto_options): New spec for handling LTO flags in linker.
6852         (invoke_lto_single): Re-format to fit in 80 column.  Replace
6853         lto-single with lto-option.
6854         (static_specs): Add cc1_non_lto_options, lto1_options and
6855         link_lto_options.
6856         (static_spec_function): Replace lto-single with lto-option.
6857         (process_command): Handle -flto, -fwpa and -fltran by setting
6858         current_lto_option and not passing it to subprocess unconditionally.
6859
6860 2009-10-03  Bill Maddox  <maddox@google.com>
6861
6862         Add `gcc' driver support for link-time code generation (LTO).
6863
6864         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
6865         (lto_flag, lto_objects, lto_o_file): New variables.
6866         (struct lto_object, struct lto_object_list): New structures.
6867         (collect_exit, handler): Remove LTO temporary output file on exit.
6868         (add_lto_object): New function.
6869         (maybe_run_lto_and_relink): New function. Perform link time code
6870         generation and relinking for object files containing LTO information.
6871         (main): Invoke maybe_run_lto_and_relink().
6872         (dump_argv): New function.  For debugging, currently disabled.
6873         (scan_prog_file): Add LTO information pass.
6874         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
6875         collect2.
6876         * toplev.c (compile_file): Emit assembler directive to create
6877         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
6878
6879 2009-10-03  Diego Novillo  <dnovillo@google.com>
6880
6881         * c.opt: Add LTO to warn_abi and warn_psabi.
6882
6883         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
6884         inline function.  Ignore language-specific nodes.  Update all users.
6885         (find_decls_types_r): Do not traverse the subtrees of
6886         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
6887         * tree.h (is_lang_specific): New.
6888         * langhooks.h (struct lang_hooks_for_decls): Remove
6889         may_need_assembler_name_p.  Update all users.
6890
6891         * c-common.c (set_builtin_user_assembler_name): Move ...
6892         * builtins.c (set_builtin_user_assembler_name): ... here.
6893         (is_builtin_name): Add comment
6894         (is_builtin_fn): New.
6895         * except.c (output_ttype): Only call
6896         lookup_type_for_runtime if TYPE is not a runtime type.
6897
6898         * passes.c (register_pass): Call position_pass on
6899         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
6900         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
6901         (TV_IPA_LTO_DECL_IO): Define.
6902         (TV_IPA_LTO_CGRAPH_IO): Define.
6903         (TV_LTO): Define.
6904         (TV_WHOPR_WPA): Define.
6905         (TV_WHOPR_WPA_IO): Define.
6906         (TV_WHOPR_LTRANS): Define.
6907         (TV_WHOPR_WPA_FIXUP): Define.
6908         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
6909         * tree-cfg.c (tree_node_can_be_shared): Make extern.
6910         * tree-flow.h (tree_node_can_be_shared): Declare.
6911         * tree-inline.c (tree_can_inline_p): Check that E has a
6912         statement associated with it.
6913         * tree.c (free_lang_data_in_binf): Factor out of ...
6914         (free_lang_data_in_type): ... here.
6915         Call RECORD_OR_UNION_TYPE_P.
6916         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
6917         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
6918         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
6919         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
6920         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
6921         (gate_free_lang_data): Return true if flag_generate_lto is set.
6922         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
6923         * c-common.h (set_builtin_user_assembler_name): Move ...
6924         * tree.h (set_builtin_user_assembler_name): ... here.
6925
6926         * common.opt (flto-report): New flag.
6927         * opts.c (complain_wrong_lang): Do not complain if running lto1.
6928         * collect2.c (scan_prog_file): Send the error output of
6929         'nm' to HOST_BIT_BUCKET.
6930
6931 2009-10-03  Ollie Wild  <aaw@google.com>
6932
6933         * langhooks-def.h (lhd_begin_section): New function declaration.
6934         (lhd_write_section): New function declaration.
6935         (lhd_end_section): New function declaration.
6936         (LANG_HOOKS_BEGIN_SECTION): New macro.
6937         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
6938         (LANG_HOOKS_END_SECTION): New macro.
6939         (LANG_HOOKS_LTO): New macro.
6940         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
6941         * langhooks.c (output.h): Add include.
6942         (saved_section): New static variable.
6943         (lhd_begin_section): New function.
6944         (lhd_write_section_data): New function.
6945         (lhd_end_section): New function.
6946         * langhooks.h (struct lang_hooks_for_lto): New structure.
6947         (struct lang_hooks): Add member lto.
6948         * Makefile.in (langhooks.o): Add dependency on output.h.
6949
6950         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
6951
6952 2009-10-03  Richard Guenther  <rguenther@suse.de>
6953
6954         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
6955         Handle LTO.
6956
6957 2009-10-03  Simon Baldwin  <simonb@google.com>
6958             Richard Guenther  <rguenther@suse.de>
6959             Janis Johnson  <janis187@us.ibm.com>
6960             Doug Kwan  <dougkwan@google.com>
6961             Diego Novillo  <dnovillo@google.com>
6962             Ramana Radhakrishnan  <ramana.r@gmail.com>
6963             Ollie Wild  <aaw@google.com>
6964
6965         * doc/install.texi: Add documentation for libelf and --enable-lto.
6966         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
6967         -flto-report, -flto-compression-level and -use-linker-plugin.
6968         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
6969         Add section for LTO Testing.
6970
6971 2009-10-02  Cary Coutant  <ccoutant@google.com>
6972
6973         Add support for comdat type sections for DWARF v4.
6974         Merge from dwarf4 branch.
6975
6976         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
6977         (dw_die_ref): Define vector type.
6978         (enum dw_val_class): Add dw_val_class_data8.
6979         (struct dw_val_struct): Add v.val_data8.
6980         (comdat_type_node_ref): New type.
6981         (struct die_struct): Move die_symbol into a union; add new field
6982         die_type_node.  Change all uses.
6983         (comdat_type_node): New type.
6984         (skeleton_chain_node): New type.
6985         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
6986         (comdat_type_list): New variable.
6987         (dwarf_tag_name): Add DW_TAG_type_unit.
6988         (dwarf_attr_name): Add DW_AT_signature.
6989         (add_AT_data8): New function.
6990         (replace_child): New function.
6991         (move_all_children): New function.
6992         (print_signature): New function.
6993         (print_die): Print signature information; add dw_val_class_data8.
6994         (attr_checksum): Support dw_val_class_data8.
6995         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
6996         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
6997         (checksum_sleb128, checksum_uleb128): New functions.
6998         (checksum_die_context): New function.
6999         (loc_checksum_ordered): New function.
7000         (attr_checksum_ordered): New function.
7001         (struct checksum_attributes): New structure.
7002         (collect_checksum_attributes): New function.
7003         (die_checksum_ordered): New function.
7004         (generate_type_signature): New function.
7005         (same_dw_val_p): Add dw_val_class_data8.
7006         (is_symbol_die): Use new is_declaration_die function.
7007         (is_declaration_die): New function.
7008         (should_move_die_to_comdat): New function.
7009         (clone_die): New function.
7010         (clone_tree): New function.
7011         (clone_as_declaration): New function.
7012         (copy_declaration_context): New function.
7013         (generate_skeleton_ancestor_tree): New function.
7014         (generate_skeleton_bottom_up): New function.
7015         (generate_skeleton): New function.
7016         (remove_child_or_replace_with_skeleton): New function.
7017         (break_out_comdat_types): New function.
7018         (struct decl_table_entry): New type.
7019         (htab_decl_hash): New function.
7020         (htab_decl_eq): New function.
7021         (htab_decl_del): New function.
7022         (copy_ancestor_tree): New function.
7023         (copy_decls_walk): New function.
7024         (copy_decls_for_unworthy_types): New function.
7025         (build_abbrev_table): Don't assert on missing die_symbol when doing
7026         comdat type sections.
7027         (size_of_die): Use DW_FORM_sig8 for external references.  Add
7028         dw_val_class_data8.
7029         (unmark_dies): Don't assert for unmarked dies when doing comdat
7030         type sections.
7031         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
7032         (output_signature): New function.
7033         (output_die): Likewise.
7034         (output_compilation_unit_header): Mark output as DWARF version 3
7035         even if generating DWARF 4.
7036         (output_comdat_type_unit): New function.
7037         (output_line_info): Mark output as DWARF version 3 even if generating
7038         DWARF 4.
7039         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
7040         DWARF-4.
7041         (dwarf2out_end_source_file): Likewise.
7042         (prune_unused_types_walk_attribs): Don't follow references into
7043         comdat type sections.
7044         (prune_unused_types_mark): When generating type units, do not mark
7045         children of non-defining declarations of types; do mark children of
7046         type entries.
7047         (prune_unused_types): Process comdat type sections.
7048         (htab_ct_hash): New function.
7049         (htab_ct_eq): New function.
7050         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
7051         Add a pointer to the line table from type unit entries so
7052         DW_AT_decl_file has meaning.
7053         * varasm.c (default_elf_asm_named_section): Use identifier name as
7054         comdat key instead of lang hook.
7055
7056 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
7057
7058         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
7059
7060 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
7061
7062         * config/i386/i386.md (SWIM248): New mode iterator.
7063         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
7064         divmodhi4 patterns using SWIM248 macro.
7065         (*divmod<mode>4): Macroize insn_and_split pattern from
7066         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
7067         and their corresponding splitters usign SWIM248 macro.  Split SImode
7068         insn to generate cltd and DImode insn to generate cqto instead of
7069         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
7070         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
7071         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
7072         *divmodsi_noext patterns using SWIM248 macro.
7073         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
7074         udivmodhi4 patterns using SWIM248 macro.
7075         (*udivmod<mode>4): Macroize insn_and_split pattern from
7076         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
7077         corresponding splitters using SWIM248 macro.
7078         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
7079         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
7080
7081 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
7082
7083         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
7084         of zero-sized element is zero-sized regardless of its extent.
7085
7086 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
7087
7088         PR debug/40521
7089         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
7090         * configure: Regenerated.
7091         * config.in: Regenerated.
7092         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
7093         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
7094         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
7095         not emitting .eh_frame, emit .cfi_sections .debug_frame
7096         directive.
7097
7098         PR debug/41404
7099         PR debug/41353
7100         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
7101         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
7102         with '\0'.
7103         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
7104         vars use DECL_RTL with resetting it back to NULL afterwards.
7105         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
7106         rtx_equal_p instead of asserting it is a SYMBOL_REF.
7107         (value_format): For dw_val_class_addr only use DW_FORM_addr if
7108         the attribute type allows it, otherwise use DW_FORM_dataN.
7109         (mem_loc_descriptor): Handle CONST_STRING.
7110         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
7111         Handle MEM with CONST_STRING address using add_AT_string.
7112         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
7113         CONST_STRING for const arrays initialized with a string literal.
7114         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
7115         (dwarf2out_finish): Call resolve_addr.
7116
7117 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
7118             Maxim Kuvyrkov  <maxim@codesourcery.com>
7119
7120         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
7121
7122 2009-10-02  Nick Clifton  <nickc@redhat.com>
7123
7124         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
7125         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
7126
7127 2009-10-01  Jan Hubicka  <jh@suse.cz>
7128
7129         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
7130         (cgraph_create_virtual_clone): Just pass redirect_callers
7131         around.
7132         * cgraph.h (cgraph_clone_node): Update prototype.
7133         * ipa-pure-const.c (self_recursive_p): New function.
7134         (propagate): Use it.
7135         * ipa-inline.c (cgraph_clone_inlined_nodes,
7136         cgraph_decide_recursive_inlining): Update.
7137
7138 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
7139
7140         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
7141         instructions for TARGET_OCTEON.
7142
7143 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7144
7145         * config/arm/arm.c (arm_override_options): Turn off
7146         flag_dwarf2_cfi_asm for AAPCS variants.
7147
7148 2009-10-01  Martin Jambor  <mjambor@suse.cz>
7149
7150         PR middle-end/12392
7151         * tree-sra.c (convert_callers): Do not call
7152         compute_inline_parameters on one caller more than once.
7153
7154 2009-10-01  Nick Clifton  <nickc@redhat.com>
7155
7156         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
7157         an empty string if not already defined.
7158
7159 2009-10-01  Martin Jambor  <mjambor@suse.cz>
7160
7161         PR bootstrap/41395
7162         * tree-sra.c (is_va_list_type): New function.
7163         (find_var_candidates): Call is_va_list_type.
7164         (find_param_candidates): Check that the type or the type pointed
7165         to are not va_list types.
7166
7167 2009-10-01  Martin Jambor  <mjambor@suse.cz>
7168
7169         PR c++/41503
7170         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
7171         DECL_ARTIFICIAL (param_decl) is true.
7172
7173 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
7174
7175         * tree.h (tree_decl_common::lang_flag_8): New.
7176         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
7177         keyword.
7178         * c-common.h (RID_CONSTEXPR): New.
7179
7180 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
7181
7182         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
7183         Use ref-all pointers.
7184         (alpha_gimplify_va_arg): Ditto.
7185
7186 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
7187
7188         PR target/41279
7189         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
7190         before insn counting loop now that BB_END (bb) is counted.  Ensure
7191         the return value isn't zero.
7192
7193 2009-09-30  Nick Clifton  <nickc@redhat.com>
7194
7195         * config.gcc (sh-symbianelf): Replace definition of extra_objs
7196         with separate definitions of c_target_objs and cxx_target_objs.
7197         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
7198         and symbian-base.o.
7199         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
7200         sh_symbian_import_export_class.
7201         * config/sh/sh-protos.h: Fix names of exported symbian functions.
7202         * config/sh/symbian.c: Delete, moving code into...
7203         * config/sh/symbian-base.c: ... here
7204         * config/sh/symbian-c.c: ... and here
7205         * config/sh/symbian-cxx.c: ... and here.
7206
7207 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
7208
7209         PR target/22093
7210         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
7211         of plus RTX into register.
7212
7213 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7214
7215         * doc/install.texi: Linguistic and markup fixes.
7216         (Configuration) <--disable-cpp>: Remove description.
7217         <--enable-maintainer-mode>: Autotools files are affected, too.
7218         <--with-sysroot>: Improve description.
7219         (Building): Bump required GNU make version.
7220
7221 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
7222
7223         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
7224         (x86_64-*-*): Ditto.
7225
7226         * config/i386/fma4intrin.h: New file, provide common x86 compiler
7227         intrinisics for FMA4.
7228         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
7229         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
7230         Add FMA4 check and fma4intrin.h.
7231         * config/i386/i386-c.c(ix86_target_macros_internal): Check
7232         ISA_FLAG for FMA4.
7233         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
7234         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
7235         constant for FMA4 support.
7236         (UNSPEC_FMA4_FMADDSUB): Ditto.
7237         (UNSPEC_FMA4_FMSUBADD): Ditto.
7238         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
7239         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
7240         (ix86_expand_fma4_multiple_memory): Ditto.
7241         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
7242         (OPTION_MASK_ISA_FMA4_UNSET): New.
7243         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
7244         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
7245         (ix86_handle_option): Handle -mfma4.
7246         (isa_opts): Handle -mfma4.
7247         (enum pta_flags): Add PTA_FMA4.
7248         (override_options): Add FMA4 support.
7249         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
7250         (IX86_BUILTIN_VFMADDSD): Ditto.
7251         (IX86_BUILTIN_VFMADDPS): Ditto.
7252         (IX86_BUILTIN_VFMADDPD): Ditto.
7253         (IX86_BUILTIN_VFMSUBSS): Ditto.
7254         (IX86_BUILTIN_VFMSUBSD): Ditto.
7255         (IX86_BUILTIN_VFMSUBPS): Ditto.
7256         (IX86_BUILTIN_VFMSUBPD): Ditto.
7257         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
7258         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
7259         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
7260         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
7261         (IX86_BUILTIN_VFNMADDSS): Ditto.
7262         (IX86_BUILTIN_VFNMADDSD): Ditto.
7263         (IX86_BUILTIN_VFNMADDPS): Ditto.
7264         (IX86_BUILTIN_VFNMADDPD): Ditto.
7265         (IX86_BUILTIN_VFNMSUBSS): Ditto.
7266         (IX86_BUILTIN_VFNMSUBSD): Ditto.
7267         (IX86_BUILTIN_VFNMSUBPS): Ditto.
7268         (IX86_BUILTIN_VFNMSUBPD): Ditto.
7269         (IX86_BUILTIN_VFMADDPS256): Ditto.
7270         (IX86_BUILTIN_VFMADDPD256): Ditto.
7271         (IX86_BUILTIN_VFMSUBPS256): Ditto.
7272         (IX86_BUILTIN_VFMSUBPD256): Ditto.
7273         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
7274         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
7275         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
7276         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
7277         (IX86_BUILTIN_VFNMADDPS256): Ditto.
7278         (IX86_BUILTIN_VFNMADDPD256): Ditto.
7279         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
7280         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
7281         (enum multi_arg_type): New enum for describing the various FMA4
7282         intrinsic argument types.
7283         (bdesc_multi_arg): New table for FMA4 intrinsics.
7284         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
7285         (ix86_expand_multi_arg_builtin): New function for creating FMA4
7286         intrinsics.
7287         (ix86_expand_builtin): Add FMA4 intrinsic support.
7288         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
7289         operand instructions.
7290         (ix86_expand_fma4_multiple_memory): New function to split the
7291         second memory reference from FMA4 instructions.
7292         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
7293         (ssemodesuffixf2s): Ditto.
7294         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
7295         instructions.
7296         (fma4_fmsub<mode>4): Ditto.
7297         (fma4_fnmadd<mode>4): Ditto.
7298         (fma4_fnmsub<mode>4): Ditto.
7299         (fma4_vmfmadd<mode>4): Ditto.
7300         (fma4_vmfmsub<mode>4): Ditto.
7301         (fma4_vmfnmadd<mode>4): Ditto.
7302         (fma4_vmfnmsub<mode>4): Ditto.
7303         (fma4_fmadd<mode>4256): Ditto.
7304         (fma4_fmsub<mode>4256): Ditto.
7305         (fma4_fnmadd<mode>4256): Ditto.
7306         (fma4_fnmsub<mode>4256): Ditto.
7307         (fma4_fmaddsubv8sf4): Ditto.
7308         (fma4_fmaddsubv4sf4): Ditto.
7309         (fma4_fmaddsubv4df4): Ditto.
7310         (fma4_fmaddsubv2df4): Ditto.
7311         (fma4_fmsubaddv8sf4): Ditto.
7312         (fma4_fmsubaddv4sf4): Ditto.
7313         (fma4_fmsubaddv4df4): Ditto.
7314         (fma4_fmsubaddv2df4): Ditto.
7315         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
7316         instructions for intrinsics.
7317         (fma4i_fmsub<mode>4): Ditto.
7318         (fma4i_fnmadd<mode>4): Ditto.
7319         (fma4i_fnmsub<mode>4): Ditto.
7320         (fma4i_vmfmadd<mode>4): Ditto.
7321         (fma4i_vmfmsub<mode>4): Ditto.
7322         (fma4i_vmfnmadd<mode>4): Ditto.
7323         (fma4i_vmfnmsub<mode>4): Ditto.
7324         (fma4i_fmadd<mode>4256): Ditto.
7325         (fma4i_fmsub<mode>4256): Ditto.
7326         (fma4i_fnmadd<mode>4256): Ditto.
7327         (fma4i_fnmsub<mode>4256): Ditto.
7328         (fma4i_fmaddsubv8sf4): Ditto.
7329         (fma4i_fmaddsubv4sf4): Ditto.
7330         (fma4i_fmaddsubv4df4): Ditto.
7331         (fma4i_fmaddsubv2df4): Ditto.
7332         (fma4i_fmsubaddv8sf4): Ditto.
7333         (fma4i_fmsubaddv4sf4): Ditto.
7334         (fma4i_fmsubaddv4df4): Ditto.
7335         (fma4i_fmsubaddv2df4): Ditto.
7336
7337         * doc/invoke.texi (-mfma4): Add documentation.
7338         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
7339
7340 2009-09-29  Richard Henderson  <rth@redhat.com>
7341
7342         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
7343         an edge to the new destination block.
7344
7345 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7346
7347         PR target/41393
7348         * pa.c (hppa_profile_hook): Use
7349         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
7350
7351 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
7352             Alexander Monakov  <amonakov@ispras.ru>
7353
7354         PR target/41365
7355         * config/ia64/predicates.md (not_postinc_destination_operand): New.
7356         (not_postinc_memory_operand): New.
7357         (not_postinc_move_operand): New.
7358         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
7359         (*cmovsi_internal): Ditto.
7360
7361 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
7362
7363         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
7364         restrict issue_rate in first pass when scheduling for register
7365         pressure.
7366
7367 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
7368             Rafael Avila de Espindola  <espindola@google.com>
7369
7370         * gengtype.c (plugin_output): New.
7371         (get_output_file_with_visibility): Return plugin_output for plugins.
7372         (main): Parse and use the -P option.
7373         * gty.texi: Update the command line format.
7374
7375 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
7376
7377         PR debug/41438
7378         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
7379         functions.
7380         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
7381         out if !const_ok_for_output.
7382
7383         PR debug/41474
7384         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
7385         case VAR_LOCATION>: Remove gcc_unreachable ().
7386
7387 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
7388
7389         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
7390         (x86_64-*-*): Ditto.
7391         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
7392         back to smmintrin.h.
7393         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
7394         * config/i386/x86intrin.h: Remove SSE5.
7395         * config/i386/mmintrin-common.h: Delete file.
7396         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
7397
7398 2009-09-29  Richard Guenther  <rguenther@suse.de>
7399
7400         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
7401         resulting from stack temporaries on STRICT_ALIGNMENT targets.
7402
7403 2009-09-29  Nick Clifton  <nickc@redhat.com>
7404
7405         * function.c (current_function_name): If there is no current
7406         function just return "<none>".
7407
7408 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
7409
7410         * tree-pass.h (register_pass_info): New structure.
7411         (pass_positioning_ops): Move enum from gcc-plugin.h.
7412         (register_pass): New function.
7413         * gcc-plugin.h (plugin_pass): Delete structure.
7414         (pass_positioning_ops): Delete enum.
7415         * plugin.c (regsiter_pass): Delete function.
7416         (position_pass): Delete function.
7417         (added_pass_nodes): Delete variable.
7418         (prev_added_pass_nodes): Delete variable.
7419         (pass_list_node): Delete structure.
7420         * passes.c (make_pass_instance): New function.
7421         (next_pass_1): Change to call make_pass_instance.
7422         (pass_list_node): Move structure from gcc-plugin.h.
7423         (added_pass_nodes): Move variable from plugin.c.
7424         (prev_added_pass_nodes): Move variable from plugin.c.
7425         (position_pass): New function.
7426         (register_pass): New function.
7427
7428 2009-09-28  Easwaran Raman  <eraman@google.com>
7429
7430         * ifcvt.c (noce_try_abs): Recognize pattern and call
7431         expand_one_cmpl_abs_nojump.
7432         * optabs.c (expand_one_cmpl_abs_nojump): New function.
7433         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
7434
7435 2009-09-28  Ian Lance Taylor  <iant@google.com>
7436
7437         PR middle-end/40500
7438         * c-opts.c (c_common_handle_option): Don't set
7439         warn_jump_misses_init for -Wall.
7440         * doc/invoke.texi (Warning Options): Update documentation.
7441
7442 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7443
7444         * Makefile.in ($(out_object_file)): Depend on
7445         gt-$(basename $(notdir $(out_file))).h.
7446
7447 2009-09-28  Richard Henderson  <rth@redhat.com>
7448
7449         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
7450         * except.c (gen_eh_region): Set it.
7451         (duplicate_eh_regions_1): Copy it.
7452         * tree-eh.c (lower_resx): Use it to determine which function
7453         to call to resume.
7454
7455         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
7456         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
7457         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
7458         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
7459         BUILT_IN_CXA_END_CLEANUP if necessary.
7460
7461         * c-common.c (c_define_builtins): Update call to
7462         build_common_builtin_nodes.
7463
7464 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7465
7466         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
7467
7468 2009-09-28  Michael Matz  <matz@suse.de>
7469
7470         * builtins.c (interclass_mathfn_icode): New helper.
7471         (expand_builtin_interclass_mathfn): Use it here, and split folding
7472         into ...
7473         (fold_builtin_interclass_mathfn): ... this new folder.
7474         (build_call_nofold_loc): New static helper.
7475         (build_call_nofold): New wrapper macro for above.
7476         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
7477         (expand_builtin_pow): Ditto.
7478         (expand_builtin_memset_args): Ditto.
7479         (expand_builtin_printf): Ditto.
7480         (expand_builtin_fprintf): Ditto.
7481         (expand_builtin_sprintf): Ditto.
7482         (expand_builtin_memory_chk): Ditto.
7483         (expand_builtin_mempcpy_args): Ditto and don't call folders.
7484         (expand_builtin_stpcpy): Ditto.
7485         (expand_builtin_strcmp): Ditto.
7486         (expand_builtin_strncmp): Ditto.
7487         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
7488         (expand_builtin_strcpy_args): Don't call folders.
7489         (expand_builtin_memcmp): Ditto.
7490         (expand_builtin_strncpy): Ditto, and use target.
7491         (expand_builtin_memcpy): Ditto.
7492         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
7493         expand_builtin_strpbrk, expand_builtin_memmove,
7494         expand_builtin_memmove_args, expand_builtin_bcopy,
7495         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
7496         expand_builtin_strspn, expand_builtin_strcspn,
7497         expand_builtin_fputs): Remove these.
7498         (expand_builtin): Don't call the above, change calls to other
7499         expanders that changed prototype.
7500         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
7501         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
7502         fold_builtin_interclass_mathfn.
7503         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
7504         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
7505
7506         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
7507         * passes.c (init_optimization_passes): Move pass_fold_builtins
7508         after last phiopt pass.
7509         * tree-inline.c (fold_marked_statements): When folding builtins
7510         iterate over all instruction potentially generated.
7511         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
7512         earlier.
7513         (fold_gimple_call): Use it to always fold calls (into potentially
7514         multiple instructions).
7515         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
7516         calls into zero at this time.
7517         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
7518         statements generated by builtin folding.
7519
7520 2009-09-28  Nick Clifton  <nickc@redhat.com>
7521
7522         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
7523
7524 2009-09-28  Duncan Sands  <baldrick@free.fr>
7525
7526         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
7527         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
7528         (register_callback): Dispatch it.
7529         (invoke_plugin_callbacks): Incorporate in sanity check.
7530         * ggc.h (ggc_register_cache_tab): Add declaration.
7531         * ggc-common.c (ggc_register_root_tab): Simplify.
7532         (const_ggc_cache_tab_t): New typedef.
7533         (extra_cache_vec): New vector of dynamically added cache tables.
7534         (ggc_register_cache_tab): New function.
7535         (ggc_scan_cache_tab): New function.
7536         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
7537         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
7538
7539 2009-09-27  Richard Henderson  <rth@redhat.com>
7540
7541         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
7542         which we remove __builtin_stack_restore.
7543
7544 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7545
7546         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
7547         to test for GRD_INVARIANT.
7548         (simple_rhs_p): Anything that's function_invariant_p is fine.
7549
7550 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
7551
7552         * gengtype.c (main): Use plunge_files instead of plugin_output.
7553
7554 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
7555             Rafael Avila de Espindola  <espindola@google.com>
7556
7557         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
7558         Don't print pch related info if it is false.
7559         (main): Don't print pch info in plugin mode.
7560
7561 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7562
7563         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
7564         with dw_val_class_const_double.
7565         (struct dw_val_struct): Replace val_long_long with val_double and
7566         adjust for above change.
7567         (output_loc_operands): Likewise.
7568         (add_AT_long_long): Rename into...
7569         (add_AT_double): ...this.
7570         (print_die): Replace dw_val_class_long_long with
7571         dw_val_class_const_double and adjust.
7572         (attr_checksum): Likewise.
7573         (same_dw_val_p): Likewise.
7574         (size_of_die): Likewise.
7575         (value_format): Likewise.
7576         (output_die): Likewise.
7577         (loc_descriptor) <CONST_DOUBLE>: Likewise.
7578         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
7579         instead of add_AT_long_long.
7580         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
7581         value with the precision of its type.
7582
7583 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
7584
7585         PR c/41476
7586         * c-typeck.c (build_conditional_expr): Use the readonly and
7587         volatile flags of the operand types, not of the operands itself.
7588
7589 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
7590
7591         * collect2.c (main): Look for -brtl before adding libraries.
7592
7593 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
7594
7595         * config.gcc: Update OpenBSD targets.
7596         * config/openbsd-stdint.h: New file.
7597         * config/openbsd-libpthread.h: New file.
7598         * config/openbsd.h: Update and break out LIB_SPEC definition.
7599         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
7600         * config/i386/openbsdelf.h: Correct types.
7601         * config/m68k/openbsd.h: Likewise.
7602         * config/mips/openbsd.h: Likewise.
7603         * config/vax/openbsd.h: Likewise.
7604
7605 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7606
7607         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
7608         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
7609         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
7610         of the length and zero.
7611
7612 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7613
7614         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
7615         (FLAGS_H): Add options.h $(REAL_H).
7616         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
7617         (TREE_VECTORIZER_H): New.
7618         (EBITMAP_H): Renamed from EBIMAP_H.
7619         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
7620         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
7621         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
7622         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
7623         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
7624         (graphite-clast-to-gimple.o, graphite-dependences.o)
7625         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
7626         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
7627         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
7628         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
7629         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
7630         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
7631         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
7632         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
7633         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
7634         updated and fixed as per above changes and per
7635         check_makefile_deps.sh output.
7636
7637         PR bootstrap/40928
7638         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
7639         * configure: Regenerate.
7640
7641 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7642
7643         * doc/install.texi: Update minimum MPC version to 0.7.
7644
7645 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
7646
7647         * doc/install.texi (Binaries): Remove reference to the binary
7648         distribution CD-ROM from the FSF.
7649
7650 2009-09-26  Michael Matz  <matz@suse.de>
7651
7652         PR lto/40758
7653         PR middle-end/41470
7654         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
7655         that are mentioned in the body.
7656
7657 2009-09-26  Michael Matz  <matz@suse.de>
7658
7659         PR tree-optimization/41454
7660         * tree-ssa-dom (stmts_to_rescan): Remove variable.
7661         (tree_ssa_dominator_optimize): Don't allocate and free it.
7662         (dom_opt_leave_block): Don't iterate over it.
7663         (eliminate_redundant_computations): Don't return a value.
7664         (cprop_operand, cprop_into_stmt): Ditto.
7665         (optimize_stmt): Don't defer updating stmts.
7666
7667 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
7668
7669         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
7670         generic_parameter_die, template_parameter_pack_die,
7671         gen_formal_parameter_die, gen_subprogram_die): Adjust after
7672         renaming DW_TAG_formal_parameter_pack and
7673         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
7674         and DW_TAG_GNU_template_parameter_pack.
7675
7676 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
7677
7678         * config/v850/v850.h (FUNCTION_VALUE): Remove.
7679         * config/v850/v850.c (v850_function_value): New function.
7680         (TARGET_FUNCTION_VALUE): Define.
7681
7682 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
7683
7684         * tree-vect-stmts.c (vectorizable_call): Call
7685         mark_symbols_for_renaming after vect_finish_stmt_generation.
7686
7687         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
7688         to loc_descriptor_from_tree.
7689         (add_location_or_const_value_attribute): Pass 0 instead of 2
7690         for decl_by_reference_p decls.
7691
7692 2009-09-25  Richard Guenther  <rguenther@suse.de>
7693
7694         PR middle-end/41463
7695         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
7696         arrays again.
7697
7698 2009-09-25  Ben Elliston  <bje@au.ibm.com>
7699
7700         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
7701         after `power7'.
7702
7703 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
7704
7705         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
7706         form of instruction.
7707
7708 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7709
7710         PR middle-end/41435
7711         * fold-const.c (const_binop): Handle complex int division.
7712         * tree-complex.c (expand_complex_div_straight,
7713         expand_complex_div_wide): Update comments.
7714
7715 2009-09-24  DJ Delorie  <dj@redhat.com>
7716
7717         PR target/41456
7718         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
7719         (reg_class): Likewise.
7720         (REG_CLASS_NAMES): Likewise.
7721         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
7722         (m32c_override_options): Disable -fivopts for M32C.
7723
7724 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
7725
7726         * config/rs6000/predicates.md (indexed_or_indirect_operand):
7727         Delete VSX load/store with update support.
7728         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
7729         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
7730         (vsx_movti): Ditto.
7731         (VSX_U): Delete.
7732         (VSbit): Ditto.
7733         (VStype_load_update): Ditto.
7734         (VStype_store_update): Ditto.
7735         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7736         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7737
7738         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
7739         load/store with update builtins.
7740
7741 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
7742
7743         * libgcc2.c (L_trampoline): Prototype for getpagesize
7744         and mprotect in WINNT case.
7745
7746 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
7747
7748         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
7749         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
7750         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
7751         'outgoing' argument.
7752         (TARGET_FUNCTION_VALUE): Define.
7753
7754 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7755
7756         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
7757
7758 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7759
7760         PR bootstrap/41405
7761         * common.opt: Initialize dwarf_strict to -1.
7762         * toplev.c (process_options): Catch unset dwarf_strict
7763         and set to 0 for all targets not overriding.
7764         * config/darwin.c (darwin_override_options): Catch unset
7765         dwarf_strict and override to 1.
7766
7767 2009-09-24  Jeff Law  <law@redhat.com>
7768
7769         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
7770
7771 2009-09-24  Richard Guenther  <rguenther@suse.de>
7772
7773         PR tree-optimization/36143
7774         PR tree-optimization/38747
7775         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
7776         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
7777
7778 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7779
7780         PR bootstrap/41457
7781         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
7782         return false instead of gcc_unreachable ().  For CONST return the
7783         value returned by recursive call instead of always returning true.
7784         (tree_add_const_value_attribute): Return the value returned by
7785         add_const_value_attribute instead of always returning true if rtl
7786         is non-NULL.
7787
7788 2009-09-23  Justin Seyster  <jrseys@gmail.com>
7789
7790         * Makefile.in (PLUGIN_HEADERS): Include real.h.
7791
7792 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7793
7794         * cgraphunit.c (cgraph_lower_function): Revert last change.
7795         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
7796         instead of DECL_NO_STATIC_CHAIN.
7797         * tree-cfg.c (verify_gimple_call): Likewise.
7798         * tree-nested.c (get_chain_decl, get_chain_field,
7799         convert_tramp_reference_op, convert_gimple_call): Likewise.
7800         (convert_all_function_calls): Likewise.  Always set or clear
7801         DECL_STATIC_CHAIN initially, for !n->outer clear it.
7802         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
7803         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
7804         if nested.
7805         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
7806         DECL_NO_STATIC_CHAIN.
7807         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
7808         instead of DECL_NO_STATIC_CHAIN.
7809         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
7810         decl_function_context.
7811         * varasm.c (initializer_constant_valid_p): Likewise.
7812         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
7813         (DECL_STATIC_CHAIN): ... this.
7814         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
7815         instead of DECL_NO_STATIC_CHAIN.
7816
7817 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
7818             Rafael Avila de Espindola  <espindola@google.com>
7819
7820         * gengtype.c (nb_plugin_files): Make it unsigned to match
7821         num_gt_files. Adjust other variables to avoid warnings.
7822         (main): Allocate an all zero lang_bitmap before each plugin file name
7823         to match regular file names.
7824
7825 2009-09-23  Richard Henderson  <rth@redhat.com>
7826
7827         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7828         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
7829         static chain passed in memory.
7830         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
7831         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
7832         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
7833         STATIC_CHAIN_REGNUM defined.
7834
7835         * config/picochip/picochip-protos.h: s/class/klass/.
7836         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
7837         (picochip_static_chain): New.
7838         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
7839         (STATIC_CHAIN_INCOMING): Remove.
7840
7841         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
7842         (xtensa_static_chain): New.
7843         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
7844         (STATIC_CHAIN_INCOMING): Remove.
7845
7846 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7847
7848         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
7849         * config/pa/pa-protos.h (function_value): Remove.
7850         * config/pa/pa.c (pa_function_value): Rename from function_value.
7851         Make static, add 'outgoing' argument.
7852         (TARGET_FUNCTION_VALUE): Define.
7853
7854 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7855
7856         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
7857         instead of cfun->machine->is_leaf.
7858         * config/avr/avr.h (machine_function): Remove is_leaf field.
7859
7860 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7861
7862         PR debug/41439
7863         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
7864         DW_OP_piece after DW_OP_stack_value, adjust size calculations
7865         for it, when DW_OP_stack_value and DW_OP_implicit_value has
7866         the same size, prefer DW_OP_stack_value.
7867         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
7868         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
7869
7870 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7871
7872         PR debug/41353
7873         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
7874
7875 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7876
7877         PR debug/41248
7878         * cfgexpand.c (convert_debug_memory_address): New.
7879         (expand_debug_expr): Convert base address and offset to the same
7880         mode.  Use it to convert addresses to other modes.  Accept
7881         ptr_mode addresses.
7882
7883 2009-09-23  Dodji Seketeli <dodji@redhat.com>
7884
7885         PR debug/41065
7886         * function.h (types_used_by_vars_hash): Declare new hash table.
7887         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
7888         equality and hash function for the hash table.
7889         (types_used_by_cur_var_decl): Declare a new global chained list.
7890         (types_used_by_var_decl_insert): Declare new function.
7891         * function.c (types_used_by_vars_hash): Define the hashtable ...
7892         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
7893         its equality and hash functions.
7894         (hash_types_used_by_vars_entry): New hash helper.
7895         (types_used_by_cur_var_decl): Define the global chained list.
7896         (used_types_insert): Update the list of types used by the global
7897         variable being parsed.
7898         (types_used_by_var_decl_insert): Define new function.
7899         * c-common.h (record_types_used_by_current_var_decl): Declare ...
7900         * c-common.c (record_types_used_by_current_var_decl): ... new
7901         function.
7902         * c-decl.c (finish_decl): Record the types used by the global
7903         variable declaration we've just parsed.
7904         * dwarf2out.c (premark_used_types): Insert a new line between
7905         comment and function.
7906         (premark_used_types_helper): Fix comment.
7907         (premark_types_used_by_global_vars_helper,
7908         premark_types_used_by_global_vars): New functions.
7909         (prune_unused_types): Do not prune types used by global variables.
7910
7911 2009-09-23  Richard Guenther  <rguenther@suse.de>
7912
7913         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
7914         produced for bigendian targets with promoted subregs.
7915
7916 2009-09-23  Richard Guenther  <rguenther@suse.de>
7917
7918         * value-prof.c (gimple_ic): Purge old EH edges only after building
7919         the new ones.
7920
7921 2009-09-23  Nick Clifton  <nickc@redhat.com>
7922
7923         * config/arc/arc.c (arc_trampoline_init): Fix typo.
7924
7925 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7926
7927         PR bootstrap/41405
7928         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
7929
7930         PR bootstrap/41436
7931         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
7932         on non-nested functions.
7933
7934 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7935             Jan Hubicka  <jh@suse.cz>
7936
7937         * dwarf2out.c (loc_list_plus_const): Only define if
7938         DWARF2_DEBUGGING_INFO.
7939         (address_of_int_loc_descriptor): Likewise.
7940
7941         PR debug/41411
7942         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
7943
7944 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
7945
7946         PR c/39779
7947         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
7948         constant is more than zero.
7949
7950 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
7951
7952         PR target/40473
7953         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
7954         call final to emit non-scheduled prologue, instead insert at entry.
7955
7956 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7957             Joseph S. Myers  <joseph@codesourcery.com>
7958
7959         * doc/install.texi (*-*-freebsd*): Add proper format codes.
7960
7961 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7962             Rafael Avila de Espindola  <espindola@google.com>
7963
7964         * gengtype.c (is_file_equal): New function.
7965         (close_output_files): Use is_file_equal. Free of->buf.
7966
7967 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7968             Rafael Avila de Espindola  <espindola@google.com>
7969
7970         * gengtype.c (write_types, write_local): Add the output_header
7971         argument. Update all callers.
7972
7973 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
7974
7975         * dwarf2out.c (template_parameter_pack_die,
7976         gen_formal_parameter_pack_die ): New functions.
7977         (make_ith_pack_parameter_name): Remove this function.
7978         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
7979         DW_TAG_formal_parameter_pack.
7980         (gen_generic_params_dies): Represent each template parameter pack
7981         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
7982         represented by usual DW_TAG_template_*_parameter DIEs that are
7983         children of the DW_TAG_template_parameter_pack element DIE.
7984         (generic_parameter_die): This doesn't deal with parameter pack
7985         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
7986         of parameter pack DIEs.
7987         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
7988         in certain cases, e.g. for pack elements.
7989         (gen_formal_types_die, gen_decl_die): Adjust usage of
7990         gen_formal_parameter_die.
7991         (gen_subprogram_die): Represent each function parameter pack by a
7992         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
7993         represented by usual DW_TAG_formal_parameter DIEs that are children
7994         of the DW_TAG_formal_parameter_pack DIE. Remove references to
7995         ____builtin_va_alist decls as no part of the compiler uses those
7996         anymore.
7997         * langhooks.h (struct lang_hooks_for_decls): Add
7998         function_parm_expanded_from_pack_p, get_generic_function_decl
7999         and function_parameter_pack_p hooks.  Fix comment for
8000         get_innermost_generic_parms hook.
8001         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
8002         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
8003         macros and use them to initialize lang_hook.
8004
8005 2009-09-22  Richard Henderson  <rth@redhat.com>
8006
8007         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
8008         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
8009         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
8010         on TRAMPOLINE_TEMPLATE.
8011         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
8012         TRAMPOLINE_ADJUST_ADDRESS.
8013         * targhooks.c (default_asm_trampoline_template): Remove.
8014         (default_trampoline_adjust_address): Remove.
8015         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
8016         * targhooks.h: Update decls.
8017
8018 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8019
8020         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
8021         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
8022         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
8023
8024 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
8025
8026         PR debug/41295
8027         * reload1.c (reload): Reset debug insns with pseudos without
8028         equivalences.
8029
8030 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
8031
8032         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
8033         unconditional true for decimal float modes.
8034         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
8035         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
8036
8037 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
8038
8039         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
8040         Enable a new case for __FreeBSD__ >= 7.
8041         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
8042         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
8043         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
8044         and USE_LD_AS_NEEDED.
8045
8046         * doc/install.texi (*-*-freebsd*): Update target information.
8047
8048 2009-09-22  Richard Guenther  <rguenther@suse.de>
8049
8050         PR middle-end/41395
8051         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
8052         arrays really properly.
8053
8054 2009-09-22  Richard Henderson  <rth@redhat.com>
8055
8056         PR target/41246
8057         * target.h (struct gcc_target): Add asm_out.trampoline_template,
8058         calls.static_chain, calls.trampoline_init,
8059         calls.trampoline_adjust_address.
8060         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8061         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
8062         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
8063         * builtins.c (expand_builtin_setjmp_receiver): Use
8064         targetm.calls.static_chain; only clobber registers.
8065         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
8066         set up memory attributes properly for the trampoline block.
8067         (expand_builtin_adjust_trampoline): Use
8068         targetm.calls.trampoline_adjust_address.
8069         * calls.c (prepare_call_address): Add fndecl argument.  Use
8070         targetm.calls.static_chain.
8071         * df-scan.c (df_need_static_chain_reg): Remove.
8072         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
8073         consolodate static chain handling.
8074         * doc/tm.texi: Document new hooks.
8075         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
8076         (init_emit_regs): Don't initialize them.
8077         * expr.h (prepare_call_address): Update decl.
8078         * final.c (profile_function): Use targetm.calls.static_chain.
8079         * function.c (expand_function_start): Likewise.
8080         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
8081         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
8082         only clobber registers.
8083         * targhooks.c (default_static_chain): New.
8084         (default_asm_trampoline_template, default_trampoline_init): New.
8085         (default_trampoline_adjust_address): New.
8086         * targhooks.h: Declare them.
8087         * varasm.c (assemble_trampoline_template): Use
8088         targetm.asm_out.trampoline_template.  Make the memory block const
8089         and set its size.
8090
8091         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
8092         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
8093         differences into the TARGET_ABI_OPEN_VMS code block.
8094         (TARGET_TRAMPOLINE_INIT): New.
8095         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
8096         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
8097         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
8098         (INITIALIZE_TRAMPOLINE): Remove.
8099
8100         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
8101         (TRAMPOLINE_TEMPLATE): Merge with ...
8102         (INITIALIZE_TRAMPOLINE): ... this and move ...
8103         * config/arc/arc.c (arc_trampoline_init): ... here.
8104         (TARGET_TRAMPOLINE_INIT): New.
8105
8106         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8107         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
8108         (arm_asm_trampoline_template): New.
8109         (arm_trampoline_init, arm_trampoline_adjust_address): New.
8110         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
8111         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
8112         code to arm_asm_trampoline_template.
8113         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
8114         arm_trampoline_adjust_address.
8115         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
8116         adjust for target hook parameters.
8117
8118         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
8119         Remove.
8120
8121         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
8122         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
8123         (bfin_trampoline_init): Rename from initialize_trampoline;
8124         make static; update for target hook parameters.
8125         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
8126         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
8127         bfin_asm_trampoline_template.
8128         (INITIALIZE_TRAMPOLINE): Remove.
8129
8130         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8131         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
8132         cris_trampoline_init): New.
8133         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
8134         cris_asm_trampoline_template.
8135         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
8136         adjust for target hook parameters.
8137
8138         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
8139
8140         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8141         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
8142         fr30_trampoline_init): New.
8143         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
8144         fr30_asm_trampoline_template.
8145         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
8146         adjust for target hook parameters.
8147
8148         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
8149         (frv_trampoline_init): Rename from frv_initialize_trampoline;
8150         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
8151         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
8152         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
8153
8154         * config/h8300/h8300.c (h8300_trampoline_init): New.
8155         (TARGET_TRAMPOLINE_INIT): New.
8156         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
8157         to h8300_trampoline_init and adjust for hook parameters.
8158
8159         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
8160         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
8161         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
8162         make static; adjust for hook parameters.
8163         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
8164
8165         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8166         (TARGET_TRAMPOLINE_INIT): New.
8167         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
8168         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
8169         iq2000_asm_trampoline_template.
8170         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
8171         (TRAMPOLINE_CODE_SIZE): New.
8172         (TRAMPOLINE_SIZE): Use it.
8173         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
8174
8175         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
8176         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
8177         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
8178         adjust for hook parameters.
8179         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
8180
8181         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
8182         (m32r_trampoline_init): New.
8183         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
8184         m32r_trampoline_init.
8185
8186         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
8187         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
8188         make static; update for hook parameters.
8189         * config/m68hc11/m68hc11-protos.h: Update.
8190         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
8191
8192         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8193         (TARGET_TRAMPOLINE_INIT): New.
8194         (mcore_function_value): Fix typo.
8195         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
8196         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
8197         to mcore_asm_trampoline_template.
8198         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
8199
8200         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
8201         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
8202         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
8203         update for hook parameters.
8204         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
8205
8206         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8207         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
8208         mips_trampoline_init): New.
8209         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
8210         mips_asm_trampoline_template.
8211         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
8212         update for hook parameters.
8213
8214         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8215         (TARGET_TRAMPOLINE_INIT): New.
8216         (mmix_trampoline_size): Remove.
8217         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
8218         make static.  Remove out-of-date tetra vs octa comment.
8219         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
8220         make static; update for hook parameters.
8221         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
8222         (INITIALIZE_TRAMPOLINE): Remove.
8223         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
8224         (TRAMPOLINE_ALIGNMENT): New.
8225         * gcc/config/mmix/mmix-protos.h: Update.
8226
8227         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8228         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
8229         mn10300_trampoline_init): New.
8230         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
8231         mn10300_asm_trampoline_template.
8232         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
8233
8234         * config/moxie/moxie.c (moxie_static_chain,
8235         moxie_asm_trampoline_template, moxie_trampoline_init,
8236         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
8237         TARGET_TRAMPOLINE_INIT): New.
8238         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
8239         moxie_trampoline_init.
8240         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
8241         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
8242
8243         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8244         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
8245         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
8246         pa_trampoline_adjust_address): New.
8247         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
8248         pa_asm_trampoline_template.
8249         (TRAMPOLINE_ALIGNMENT): New.
8250         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
8251         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
8252         adjust for hook parameters.
8253         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
8254
8255         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
8256         (TARGET_TRAMPOLINE_INIT): New.
8257         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
8258         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
8259
8260         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
8261
8262         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
8263         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
8264         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
8265         make static; adjust parameters for the hook.
8266         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
8267
8268         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
8269         s390_trampoline_template; make static.
8270         (s390_trampoline_init): Rename from s390_initialize_trampoline;
8271         make static; adjust for target hook.
8272         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
8273         * config/s390/s390-protos.h: Remove trampoline decls.
8274         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
8275         (TRAMPOLINE_TEMPLATE): Remove.
8276         (TRAMPOLINE_ALIGNMENT): New.
8277
8278         * config/score/score-protos.h (score_initialize_trampoline): Remove.
8279         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8280         (TARGET_TRAMPOLINE_INIT): New.
8281         (score_asm_trampoline_template): New.
8282         (score_trampoline_init): Rename from score_initialize_trampoline;
8283         make static; adjust for hook parameters.
8284         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
8285         score[37]_asm_trampoline_template.
8286         (INITIALIZE_TRAMPOLINE): Remove.
8287         * config/score/score3.c (score3_asm_trampoline_template): New.
8288         (score3_trampoline_init): Rename from score3_initialize_trampoline;
8289         adjust for target hook.
8290         * config/score/score7.c (score7_asm_trampoline_template): New.
8291         (score7_trampoline_init): Rename from score7_initialize_trampoline;
8292         adjust for target hook.
8293         * config/score/score3.h, config/score/score7.h: Update.
8294
8295         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
8296         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
8297         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
8298         (sh_trampoline_init): Rename from sh_initialize_trampoline;
8299         make static; adjust for target hook parameters.
8300         (sh_trampoline_adjust_address): New.
8301         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
8302         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
8303
8304         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
8305         (sparc32_initialize_trampoline): Rename from
8306         sparc_initialize_trampoline; make static; replace tramp parameter
8307         with m_tramp and update memory accesses.
8308         (sparc64_initialize_trampoline): Similarly.
8309         (sparc_trampoline_init): New.
8310         * config/sparc/sparc-protos.h: Remove trampoline decls.
8311         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
8312         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
8313
8314         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
8315         (array_to_constant): Make ARR parameter const.
8316         (spu_trampoline_init): Rename from spu_initialize_trampoline;
8317         make static; update for hook parameters.
8318         * config/spu/spu-protos.h: Update decls.
8319         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
8320
8321         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
8322         from xstormy16_initialize_trampoline; make static; update for
8323         hook parameters.
8324         (TARGET_TRAMPOLINE_INIT): New.
8325         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
8326
8327         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8328         (TARGET_TRAMPOLINE_INIT): New.
8329         (v850_can_eliminate): Make static.
8330         (v850_asm_trampoline_template, v850_trampoline_init): New.
8331         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
8332         v850_asm_trampoline_template.
8333         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
8334         and adjust for target hook parameters.
8335
8336         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8337         (TARGET_TRAMPOLINE_INIT): New.
8338         (vax_asm_trampoline_template, vax_trampoline_init): New.
8339         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
8340         vax_asm_trampoline_template.
8341         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
8342
8343         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8344         (TARGET_TRAMPOLINE_INIT): New.
8345         (xtensa_asm_trampoline_template): Rename from
8346         xtensa_trampoline_template; make static.
8347         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
8348         make static; update for hook parameters.
8349         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
8350         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
8351         (INITIALIZE_TRAMPOLINE): Remove.
8352
8353         * config/i386/i386.c (ix86_function_regparm): Do not issue an
8354         error for nested functions with regparm=3.
8355         (ix86_compute_frame_layout): Adjust frame pointer offset for
8356         ix86_static_chain_on_stack.
8357         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
8358         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
8359         don't reset to UNITS_PER_WORD.
8360         (ix86_emit_leave): Adjust ix86_cfa_state.
8361         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
8362         (ix86_static_chain): New.
8363         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
8364         make static; update for target hook parameters; use ix86_static_chain.
8365         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
8366         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
8367         (INITIALIZE_TRAMPOLINE): Remove.
8368         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
8369         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
8370         to the end.  Add static_chain_on_stack.
8371         (ix86_static_chain_on_stack): New.
8372
8373         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
8374         (m68k_output_mi_thunk): Don't use static_chain_rtx.
8375         (m68k_trampoline_init): New.
8376         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
8377         m68k_trampoline_init and adjust for hook parameters.
8378         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
8379         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
8380
8381 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8382
8383         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
8384         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
8385
8386         * reload1.c (reload): Call wrap_constant when substituting
8387         reg for equiv inside of DEBUG_INSNs.
8388
8389         PR bootstrap/41405
8390         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
8391         add_call_src_coords_attributes, add_high_low_attributes,
8392         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
8393         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
8394         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
8395         when -gdwarf-2 -gstrict-dwarf.
8396         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
8397         -gdwarf-[23] -gstrict-dwarf.
8398         (address_of_int_loc_descriptor, loc_descriptor,
8399         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
8400         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
8401         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
8402
8403 2009-09-22  Richard Guenther  <rguenther@suse.de>
8404
8405         PR tree-optimization/41428
8406         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
8407         (ccp_finalize): Pass it to substitute_and_fold.
8408
8409 2009-09-22  Richard Guenther  <rguenther@suse.de>
8410
8411         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
8412         (substitute_and_fold): Adjust prototype.
8413         * tree-vrp.c (vrp_evaluate_conditional): Make static.
8414         (simplify_stmt_using_ranges): Likewise.
8415         (fold_predicate_in): Move here from tree-ssa-propagate.c.
8416         (vrp_fold_stmt): New function.
8417         (vrp_finalize): Pass it to substitute_and_fold.
8418         * tree-flow.h (vrp_evaluate_conditional): Remove.
8419         (simplify_stmt_using_ranges): Likewise.
8420         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
8421         * tree-ssa-copy.c (fini_copy_prop): Likewise.
8422         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
8423         member.
8424         (fold_predicate_in): Move to tree-vrp.c.
8425         (substitute_and_fold): Use the callback instead of calling into
8426         tree-vrp.c functions directly.
8427
8428 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8429
8430         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
8431         comparison warning on rs6000.
8432
8433         PR middle-end/41429
8434         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
8435         GIMPLE_EH_MUST_NOT_THROW cleanup.
8436         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8437
8438 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
8439
8440         PR middle-end/41260
8441         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
8442         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
8443         LIB_SPEC for darwin10 and later since it always uses the unwinder in
8444         libSystem which is derived from the gcc 4.2.1 unwinder.
8445
8446 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8447
8448         PR middle-end/41357
8449         * varasm.c (default_encode_section_info): Copy TLS model into
8450         sym_ref flags regardless of backend support for TLS, for all
8451         model types except TLS_MODEL_EMULATED.
8452
8453 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8454
8455         PR bootstrap/41404
8456         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
8457         we can handle it correctly.
8458
8459 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8460
8461         * doc/install.texi (os2): Remove section.
8462
8463 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8464
8465         * doc/standards.texi (Objective-C): Adjust two URLs.
8466
8467 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
8468
8469         * tree-tailcall.c (process_assignment): Don't check if a
8470         multiplication or an addition are already present.
8471         (find_tail_calls): Combine multiple additions and multiplications.
8472         (adjust_accumulator_values): Emit accumulators.
8473
8474 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
8475
8476         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
8477         xmm register restore.
8478
8479 2009-09-21  Jan Hubicka  <jh@suse.cz>
8480
8481         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
8482         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
8483         restore at the end.
8484
8485 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
8486
8487         * stor-layout.c (layout_type): Remove obsolete code.
8488
8489 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
8490
8491         PR middle-end/41395
8492         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
8493
8494 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8495
8496         PR middle-end/30789
8497         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
8498         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
8499         (fold_builtin_2, do_mpc_arg1): Update accordingly.
8500         * fold-const.c (const_binop): Likewise.
8501         * real.h (do_mpc_arg2): Update prototype.
8502
8503 2009-09-20  Jan Hubicka  <jh@suse.cz>
8504
8505         * dwarf2out.c (add_const_value_attribute): Return true if successful.
8506         (add_location_or_const_value_attribute): Rewrite using
8507         loc_list_from_tree.
8508         (tree_add_const_value_attribute): Return true if successful.
8509         (tree_add_const_value_attribute_for_decl): Likewise.
8510
8511         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
8512         (loc_descriptor): ... here;
8513         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8514         (cst_pool_loc_descr): Break out from ...; do not reffer constant
8515         pool items that was not marked for output.
8516         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
8517         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8518         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8519         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
8520         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
8521         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
8522         DW_OP_stack_value to get address of items that are not available
8523         as addresses.
8524         (dw_loc_list): Handle single element lists correctly.
8525
8526 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
8527             Pascal Obry  <obry@adacore.com>
8528
8529         * unwind-dw2-fde.c (classify_object_over_fdes):
8530         Cast the constant 1 to _Unwind_Ptr.
8531         (add_fdes): Likewise.
8532         (linear_search_fdes): Likewise.
8533
8534 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
8535
8536         * stor-layout.c (set_sizetype): Avoid useless type copy.
8537
8538 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
8539
8540         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
8541         feature check.
8542         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
8543         * configure, config.in: Regenerate.
8544         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
8545         DW_EH_PE_absptr.
8546         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
8547         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
8548         for global data if the output could be used in a shared library.
8549         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
8550         to 0 if TARGET_WRITABLE_EH_FRAME.
8551
8552 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
8553
8554         PR rtl-optimization/39886
8555         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
8556         just when insn is equal to BB_END (bb).
8557
8558 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
8559
8560         * config/mips/mips.opt (mrelax-pic-calls): New option.
8561         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
8562         the file.
8563         (mips_unspec_call): Change "unspec_call" expander into this.
8564         (mips_strip_unspec_call): New function.
8565         (mips_got_load): Call mips_unspec_call instead of
8566         gen_unspec_call<mode>.
8567         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
8568         MIPS_CALL.
8569         (mips_cfg_in_reorg): New function.
8570         (mips16_lay_out_constants): Use it to decide whether to call
8571         CFG-aware insn splitting.
8572         (r10k_insert_cache_barriers): Move CFG set-up code from here to
8573         mips_reorg.  Move DF set-up code from here ...
8574         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
8575         from here.
8576         (mips_reorg): Call mips_df_reorg instead of
8577         r10k_insert_cache_barriers.  Move CFG set-up code here from
8578         r10k_insert_cache_barriers.
8579         (mips_call_expr_from_insn): New function.
8580         (mips_pic_call_symbol_from_set): Likewise.
8581         (mips_find_pic_call_symbol): Likewise.
8582         (mips_annotate_pic_call_expr): Likewise.
8583         (mips_get_pic_call_symbol): Likewise.
8584         (mips_annotate_pic_calls): Likewise.
8585         (mips_override_options): Disable -mrelax-pic-calls unless PIC
8586         calls are used.
8587         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
8588         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
8589         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
8590         directive.
8591         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
8592         (unspec_call<mode>): Remove it.
8593         (sibcall_internal, sibcall_value_internal,
8594         sibcall_value_multiple_internal, call_internal, call_split,
8595         call_value_internal, call_value_split,
8596         call_value_multiple_internal, call_value_multiple_split): Pass
8597         SIZE_OPNO to MIPS_CALL.
8598         (call_internal_direct, call_direct_split,
8599         call_value_internal_direct, call_value_direct_split): Pass -1 as
8600         SIZE_OPNO to MIPS_CALL.
8601         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
8602         * configure: Regenerate.
8603         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
8604         and -mno-relax-pic-calls.
8605         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
8606
8607 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8608
8609         PR bootstrap/35619
8610         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
8611         in the directory this rule is called from, rather than the
8612         toplevel 'gcc' directory, to fix in-tree build.
8613
8614 2009-09-19  Chris Demetriou  <cgd@google.com>
8615
8616         PR preprocessor/28435:
8617         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
8618         to cpplib that the preprocessor output is needed.
8619
8620 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
8621
8622         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
8623         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
8624         *return_and_restore_fpregs_<mode>,
8625         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
8626
8627         PR bootstrap/41397
8628         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
8629         instead of assuming it has always a REG inside of it.
8630
8631 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
8632
8633         * config/freebsd.h: Update comment on types.
8634         (WINT_TYPE): Define.
8635
8636 2009-09-18  Jason Merrill  <jason@redhat.com>
8637
8638         * c.opt: Add -fno-deduce-init-list.
8639
8640 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
8641
8642         * value-prof.c (interesting_stringop_to_profile_p): Added output
8643         argument to indicate which parameter is the size parameter.
8644         * value-prof.c (gimple_stringop_fixed_value): Use
8645         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
8646         * value-prof.c (gimple_stringops_transform): Update call sites to
8647         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
8648
8649 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
8650
8651         PR target/38288
8652         From David Binderman <dcb314@hotmail.com>:
8653         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
8654         local variable f.  Remove stale comments.
8655         (ix86_compute_frame_layout): Remove useless local variable total_size.
8656         Remove #if 0'd code.
8657         (legitimate_address_p): Remove useless local variables
8658         reason_rtx and reason.
8659         (ix86_split_copysign_const): Remove useless local variable op1.
8660         (scale_counter): Remove useless local variable piece_size_mask.
8661
8662 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
8663
8664         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
8665         output decl.
8666
8667 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
8668
8669         PR target/40913
8670         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
8671
8672 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
8673
8674         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
8675         TYPE_STUB_DECL.
8676
8677 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
8678
8679         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
8680         DW_OP_implicit_value even without dwarf_version 4.
8681
8682 2009-09-17  Jan Hubicka  <jh@suse.cz>
8683
8684         * dwarf2out.c: Include tree-pass.h and gimple.h.
8685         (loc_list_plus_const): New function.
8686         (loc_descriptor_from_tree_1): Rename to ...
8687         (loc_descriptor_from_tree): ... remove original.
8688         (loc_list_from_tree): New function.
8689         (add_AT_location_description): Accept location list.
8690         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
8691         (concatn_mem_loc_descriptor): Remove.
8692         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
8693         returning NULL.
8694         (secname_for_decl): Move up.
8695         (hidden_reference_p): New function; break out from ...
8696         (loc_by_refernece): ... here; move up.
8697         (dw_loc_list): New function.
8698         (single_element_loc_list): New function.
8699         (single_element_loc_list_p): New function.
8700         (add_loc_descr_to_each): New function.
8701         (add_loc_list): New function.
8702         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
8703         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
8704         add diagnostics why expansion failed.
8705         (add_location_or_const_value_attribute): Support location lists.
8706         (add_bound_info): Likewise.
8707         (descr_info_loc): Update call of loc_descriptor_from_tree.
8708         (gen_variable_die): Work on location lists.
8709         * final.c (pass_final): Add dump file.
8710         * Makefile.in (dwarf2out.o): Add new dependencies.
8711
8712 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
8713
8714         PR c/41049
8715         * real.c decimal_from_integer, decimal_integer_string): New.
8716         (real_from_integer): Use them as special case for decimal float.
8717         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
8718         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
8719         Do not append zero after the decimal point in string to convert.
8720
8721 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
8722
8723         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
8724         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
8725
8726 2009-09-17  Martin Jambor  <mjambor@suse.cz>
8727
8728         * common.opt (fipa-sra): New switch.
8729         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
8730         * timevar.def (TV_IPA_SRA): New timevar.
8731         * params.def (ipa-sra-ptr-growth-factor): New parameter.
8732         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
8733         * tree-sra.c: Include cgraph.c.
8734         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
8735         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
8736         and grp_not_necessarilly_dereferenced.
8737         (func_param_count): New variable.
8738         (encountered_apply_args): New variable.
8739         (bb_dereferences): New variable.
8740         (final_bbs): New variable.
8741         (no_accesses_representant): New variable.
8742         (no_accesses_p): New function.
8743         (dump_access): Dump the new fields.
8744         (sra_initialize): Set encountered_apply_args to false.
8745         (get_ssa_base_param): New function.
8746         (mark_parm_dereference): New function.
8747         (create_access): Caring for INIDRECT_REFs and different handling of
8748         varialble length accesses in early IPA SRA.  Store the stmt - a new
8749         parameter - to the new access.
8750         (build_access_from_expr_1): New parameter stmt, passed to
8751         create_access.  Handle INDIRECT_REFs.
8752         (build_access_from_expr): Pass the current statement to
8753         build_access_from_expr_1.
8754         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
8755         passes.
8756         (build_accesses_from_assign): Pass the current statement to
8757         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
8758         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
8759         final_bbs when necessary.  Check for calls to __builtin_apply_args.
8760         Fixup EH info if anythng was changed.
8761         (is_unused_scalar_param): New function.
8762         (ptr_parm_has_direct_uses): New function.
8763         (find_param_candidates): New function.
8764         (mark_maybe_modified): New function.
8765         (analyze_modified_params): New function.
8766         (propagate_dereference_distances): New function.
8767         (dump_dereferences_table): New function.
8768         (analyze_caller_dereference_legality): New function.
8769         (unmodified_by_ref_scalar_representative): New function.
8770         (splice_param_accesses): New function.
8771         (decide_one_param_reduction): New function.
8772         (enum ipa_splicing_result): New type.
8773         (splice_all_param_accesses): New function.
8774         (get_param_index): New function.
8775         (turn_representatives_into_adjustments): New function.
8776         (analyze_all_param_acesses): New function.
8777         (get_replaced_param_substitute): New function.
8778         (get_adjustment_for_base): New function.
8779         (replace_removed_params_ssa_names): New function.
8780         (sra_ipa_reset_debug_stmts): New function.
8781         (sra_ipa_modify_expr): New function.
8782         (sra_ipa_modify_assign): New function.
8783         (convert_callers): New function.
8784         (modify_function): New function.
8785         (ipa_sra_preliminary_function_checks): New function.
8786         (ipa_early_sra): New function.
8787         (ipa_early_sra_gate): New function.
8788         (pass_early_ipa_sra): New variable.
8789         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
8790
8791 2009-09-17  Michael Matz  <matz@suse.de>
8792
8793         PR middle-end/41347
8794         * tree.c (build_type_attribute_qual_variant): Export.
8795         * tree.h (build_type_attribute_qual_variant): Declare.
8796         * tree-inline.c (remap_type_1): Use it to build variants with
8797         the original qualifiers and attributes.
8798
8799 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8800
8801         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
8802         without a fallthrough edge.
8803
8804 2009-09-16  DJ Delorie  <dj@redhat.com>
8805
8806         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
8807         chip and ignore the "fast_interrupt" attribute if so.
8808
8809 2009-09-16  Richard Henderson  <rth@redhat.com>
8810
8811         PR middle-end/41360
8812         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
8813         barrier fix.
8814
8815 2009-09-16  Richard Henderson  <rth@redhat.com>
8816
8817         PR target/41246
8818         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
8819         is set only if DECL_NO_STATIC_CHAIN is unset.
8820         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
8821         (FOR_EACH_NEST_INFO): New.
8822         (walk_all_functions): Use it.
8823         (finalize_nesting_tree): Likewise.
8824         (unnest_nesting_tree): Likewise.
8825         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
8826         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
8827         (convert_gimple_call): Early out if gimple_call_chain already set.
8828         (convert_all_function_calls): Iterate until no new functions
8829         require a static chain.
8830         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
8831         when building a trampoline.  Use dump_function_to_file instead
8832         of dump_function.
8833         (lower_nested_functions): Open dump_file.  Validate that decls
8834         that have DECL_NO_STATIC_CHAIN from the front end don't have that
8835         bit reset by this pass.
8836
8837 2009-09-16  Michael Matz  <matz@suse.de>
8838
8839         PR fortran/41212
8840         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
8841         shorten decl_common_unused.
8842         (DECL_RESTRICTED_P): New accessor.
8843         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
8844         to disambiguate marked decls and restrict pointers.
8845
8846 2009-09-16  Richard Henderson  <rth@redhat.com>
8847
8848         PR middle-end/41360
8849         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
8850
8851 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
8852
8853         * integrate.c (set_block_abstract_flags): Call
8854         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
8855
8856 2009-09-16  Richard Guenther  <rguenther@suse.de>
8857
8858         PR middle-end/34011
8859         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
8860         as non-aliased.
8861
8862 2009-09-16  DJ Delorie  <dj@redhat.com>
8863             Kaz Kojima  <kkojima@gcc.gnu.org>
8864
8865         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
8866         (sh_expand_prologue): Update calls to output_stack_adjust.
8867         (sh_expand_epilogue): Likewise.
8868
8869 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
8870
8871         PR bootstrap/41349
8872         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
8873         trying to limit the extent of searches in the insn stream.
8874
8875 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
8876             Jakub Jelinek  <jakub@redhat.com>
8877
8878         PR target/41175
8879         PR target/40677
8880         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
8881         problem.
8882         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
8883         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
8884         (rs6000_savres_strategy): Always save FP registers inline if the
8885         target doesn't support hardware double-precision.  Set the above
8886         bits in return value when needed.
8887         (rs6000_savres_routine_sym): Fix computation for cache selector.
8888         Mark the generated symbol as a function.  Rename exitp argument to
8889         lr.  Move code for determining the name of the symbol...
8890         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
8891         getting the names right on AIX and 64-bit Linux.
8892         (savres_routine_name): New variable.
8893         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
8894         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
8895         on what the target routine uses as a base register.  If savep && lr
8896         describe saving of r0 into memory slot.
8897         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
8898         line calls for AIX ABI.
8899         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
8900         determine FP save/restore functions.
8901         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
8902         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
8903         gen_addsi3.
8904         (rs6000_emit_epilogue): Adjust computation of restore_lr.
8905         Duplicate restoration of LR and execute the appropriate one
8906         depending on whether GPRs are being restored inline.  Set r11 from
8907         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
8908         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
8909         Fix out of line calls for AIX ABI.
8910         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
8911         New insn.
8912         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
8913         register 11.
8914         (*restore_gpregs_spe): Likewise.
8915         (*return_and_restore_gpregs_spe): Likewise.
8916         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8917         Define to empty string unconditionally.
8918         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8919         Define to empty string unconditionally.
8920         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
8921         !TARGET_64BIT.
8922
8923 2009-09-15  Jan Hubicka  <jh@suse.cz>
8924
8925         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
8926         * params.def (inline-insns-auto): Likewise.
8927
8928 2009-09-15  Martin Jambor  <mjambor@suse.cz>
8929
8930         * ipa-inline.c (estimate_function_body_sizes): Dump info about
8931         individual statements only at TDF_DETAILS dump level.  Format
8932         source for 80 characters per line.
8933
8934 2009-09-15  Christian Bruel  <christian.bruel@st.com>
8935
8936         * regrename.c (do_replace): Update REG_DEAD notes.
8937
8938 2009-09-15  Revital Eres  <eres@il.ibm.com>
8939
8940         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
8941         * targhooks.c (default_builtin_support_vector_misalignment):
8942         New builtin function.
8943         * targhooks.h (default_builtin_support_vector_misalignment):
8944         Declare.
8945         * target.h (builtin_support_vector_misalignment):
8946         New field in struct gcc_target.
8947         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
8948         new builtin function.
8949         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
8950         Define.
8951         * config/rs6000/rs6000.c
8952         (rs6000_builtin_support_vector_misalignment): New function.
8953         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
8954
8955 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
8956
8957         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
8958         instead of INSN_P.
8959         (bfin_optimize_loop): Likewise.
8960         (bfin_gen_bundles): Likewise.
8961         (workaround_speculation): Likewise.
8962         (find_load): Return NULL_RTX for debug_insn.
8963
8964 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
8965
8966         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
8967         (sminsf3): Ditto.
8968
8969 2009-09-14  DJ Delorie  <dj@redhat.com>
8970
8971         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
8972         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
8973         VLIW mode.
8974
8975 2009-09-14  Richard Henderson  <rth@redhat.com>
8976             Jakub Jelinek  <jakub@redhat.com>
8977
8978         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
8979         * cfgbuild.c (make_edges): Handle asm goto.
8980         * cfglayout.c (fixup_reorder_chain): Likewise.
8981         * cfgrtl.c (patch_jump_insn): Likewise.
8982         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
8983         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
8984         (gimple_build_asm_vec): Add and use labels parameter.
8985         (gimple_build_asm): Remove.
8986         (walk_gimple_asm): Walk labels too.
8987         * gimple.def (GIMPLE_ASM): Update docs.
8988         * gimple.h: Update decls.
8989         (struct gimple_statement_asm): Change nc to use unsigned char;
8990         add nl member.
8991         (gimple_asm_nlabels): New.
8992         (gimple_asm_label_op, gimple_asm_set_label_op): New.
8993         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
8994         into gimple_build_asm_vec.
8995         * jump.c (mark_jump_label_asm): New.
8996         (mark_jump_label): Use it.
8997         (redirect_jump_1): Handle asm goto.
8998         (invert_jump_1): Soft fail if X is null.
8999         * recog.c (extract_asm_operands): New.
9000         (asm_noperands): Use it; handle asm labels.
9001         (decode_asm_operands): Use extract_asm_operands.
9002         (asm_operand_ok): Properly handle empty string.
9003         * reg-stack.c (get_asm_operands_in_out): Rename from
9004         get_asm_operand_n_inputs; use extract_asm_operands; return both
9005         inputs and outputs by reference; update all callers.
9006         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
9007         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
9008         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
9009         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
9010         (extract_asm_operands): Declare.
9011         * stmt.c (expand_asm_operands): Add and use labels parameter.
9012         (check_unique_operand_names): Likewise.
9013         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
9014         (expand_asm_stmt): Handle asm labels.
9015         * tree-cfg.c (make_gimple_asm_edges): New.
9016         (make_edges): Use it.
9017         (cleanup_dead_labels): Handle asm labels.
9018         (is_ctrl_altering_stmt): Likewise.
9019         (gimple_redirect_edge_and_branch): Likewise.
9020         * tree.def (ASM_EXPR): Add 5th operand.
9021         * tree.h (ASM_LABELS): New.
9022         (resolve_asm_operand_names): Update decl.
9023
9024         * c-parser.c (c_parser_asm_statement): Parse asm goto.
9025         (c_parser_asm_goto_operands): New.
9026         * c-tree.h (build_asm_expr): Update decl.
9027         * c-typeck.c (build_asm_expr): Add and use labels parameter.
9028         * doc/extend.texi: Document asm goto.
9029
9030 2009-09-14  Richard Henderson  <rth@redhat.com>
9031
9032         * except.h: Update declarations.
9033         (struct pointer_map_t): Forward declare.
9034         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
9035         (struct eh_landing_pad_d, eh_landing_pad): New.
9036         (struct eh_catch_d, eh_catch): New.
9037         (struct eh_region_d): Remove next_region_sharing_label, aka,
9038         label, tree_label, landing_pad, post_landing_pad, resume,
9039         may_contain_throw.  Rename region_number to index.  Remove
9040         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
9041         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
9042         (VEC(eh_landing_pad,gc)): New.
9043         (struct eh_status): Remove last_region_number.  Add lp_array,
9044         throw_stmt_table, ttype_data, ehspec_data.
9045         (ehr_next, FOR_ALL_EH_REGION_AT): New.
9046         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
9047         * except.c (lang_protect_cleanup_actions): Return tree.
9048         (struct ehl_map_entry): Remove.
9049         (init_eh_for_function): Push zero entries for region and lp_array.
9050         (gen_eh_region): Add to region_array immediately.
9051         (gen_eh_region_catch): Operate on eh_catch objects.
9052         (gen_eh_landing_pad): New.
9053         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
9054         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
9055         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
9056         (get_eh_landing_pad_from_number_fn): New.
9057         (get_eh_landing_pad_from_number): New.
9058         (get_eh_region_from_lp_number_fn): New.
9059         (get_eh_region_from_lp_number): New.
9060         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
9061         (get_exception_pointer, get_exception_filter): Remove.
9062         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
9063         (current_function_has_exception_handlers): Simplify.
9064         (bring_to_root, eh_region_replaceable_by_p): Remove.
9065         (replace_region, hash_type_list, hash_eh_region): Remove.
9066         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
9067         (label_to_region_map, num_eh_regions): Remove.
9068         (get_next_region_sharing_label, must_not_throw_labels): Remove.
9069         (find_exception_handler_labels): Remove.
9070         (duplicate_eh_regions_0, find_prev_try): Remove.
9071         (struct duplicate_eh_regions_data): New.
9072         (duplicate_eh_regions_1): Rewrite.
9073         (duplicate_eh_regions): Return a pointer map instead of an
9074         integer offset.
9075         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
9076         (redirect_eh_edge_to_label): Remove.
9077         (eh_region_outermost): Rewrite using eh_region pointers
9078         instead of integers.
9079         (add_ttypes_entry): Update for ttype_data move to eh_status.
9080         (add_ehspec_entry): Rewrite with VEC instead of varray.
9081         (assign_filter_values): Likewise.  Export.
9082         (build_post_landing_pads, connect_post_landing_pads): Remove.
9083         (dw2_build_landing_pads): Rewrite to use lp_array.
9084         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
9085         (sjlj_assign_call_site_values): Rewrite to use lp_array.
9086         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
9087         (sjlj_mark_call_sites): Update for landing pad numbers.
9088         (finish_eh_generation): Rewrite.
9089         (gate_handle_eh): Do nothing for no eh tree.
9090         (pass_rtl_eh): Move up near finish_eh_generation.
9091         (remove_eh_landing_pad): New.
9092         (remove_eh_handler): Export.
9093         (remove_eh_region, remove_eh_handler_and_replace): Remove.
9094         (for_each_eh_label): Rewrite to use lp_array.
9095         (make_reg_eh_region_note): New.
9096         (make_reg_eh_region_note_nothrow_nononlocal): New.
9097         (insn_could_throw_p): New.
9098         (copy_reg_eh_region_note_forward): New.
9099         (copy_reg_eh_region_note_backward): New.
9100         (check_handled, add_reachable_handler): Remove.
9101         (reachable_next_level, foreach_reachable_handler): Remove.
9102         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
9103         (get_eh_region_and_lp_from_rtx): New.
9104         (get_eh_region_from_rtx): New.
9105         (can_throw_internal_1, can_throw_external_1): Remove.
9106         (can_throw_internal): Use get_eh_region_from_rtx.
9107         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
9108         (insn_nothrow_p, can_nonlocal_goto): New.
9109         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
9110         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
9111         (add_action_record): Use VEC not varray.
9112         (collect_one_action_chain): Update for eh_region changes.
9113         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
9114         Use get_eh_region_and_lp_from_rtx.
9115         (gate_convert_to_eh_region_ranges): New.
9116         (pass_convert_to_eh_region_ranges): Use it.
9117         (push_uleb128, push_sleb128): Use VEC not varray.
9118         (output_one_function_exception_table): Likewise.
9119         (dump_eh_tree): Update for eh_region changes.
9120         (verify_eh_tree): Likewise.
9121         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
9122         * tree-eh.c: Include target.h.
9123         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
9124         Don't disallow GIMPLE_RESX; adjust argument check.
9125         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
9126         (record_stmt_eh_region): Update for landing pad numbers;
9127         generate a landing pad if necessary.
9128         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
9129         (remove_stmt_from_eh_lp_fn): Similarly.
9130         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
9131         Update for lp numbers; don't special case missing throw_stmt_table.
9132         (lookup_expr_eh_lp): Similarly.
9133         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
9134         (eh_seq, eh_region_may_contain_throw): New.
9135         (struct leh_state): Add ehp_region.
9136         (struct leh_tf_state): Remove eh_label.
9137         (emit_post_landing_pad): New.
9138         (emit_resx, emit_eh_dispatch): New.
9139         (note_eh_region_may_contain_throw): New.
9140         (frob_into_branch_around): Take eh_region not eh label;
9141         emit eh code into eh_seq.
9142         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
9143         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
9144         lower_eh_must_not_throw.  Emit code to eh_seq.
9145         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
9146         (lower_try_finally_onedest): Likewise.
9147         (lower_try_finally_copy): Likewise.
9148         (lower_try_finally_switch): Likewise.
9149         (lower_try_finally): Initialize ehp_region.
9150         (lower_catch): Update for eh_catch objects.
9151         (lower_eh_filter): Don't handle must_not_throw.
9152         (lower_eh_must_not_throw): New.
9153         (lower_cleanup): Don't set eh_label.
9154         (lower_eh_constructs_2): Resolve eh builtins.
9155         Handle GIMPLE_EH_MUST_NOT_THROW.
9156         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
9157         Add eh_seq to the end of the function body.
9158         (make_eh_dispatch_edges): New.
9159         (make_eh_edge): Remove.
9160         (make_eh_edges): Simplify for landing pads.
9161         (redirect_eh_edge_1): New.
9162         (redirect_eh_edge): Use it.
9163         (redirect_eh_dispatch_edge): New.
9164         (stmt_could_throw_p): Use a switch.  Allow RESX.
9165         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
9166         (stmt_can_throw_internal): Likewise.
9167         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
9168         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
9169         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
9170         (gate_refactor_eh): New.
9171         (pass_refactor_eh): Use it.
9172         (lower_resx, execute_lower_resx, pass_lower_resx): New.
9173         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
9174         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
9175         (remove_unreachable_handlers): Rename from
9176         tree_remove_unreachable_handlers; rewrite for landing pads;
9177         call remove_eh_handler directly.
9178         (remove_unreachable_handlers_no_lp): New.
9179         (unsplit_eh, unsplit_all_eh): New.
9180         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
9181         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
9182         (cleanup_empty_eh_unsplit): New.
9183         (cleanup_empty_eh): Rewrite.
9184         (cleanup_all_empty_eh): New.
9185         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
9186         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
9187         (gate_cleanup_eh): New.
9188         (pass_cleanup_eh): Use it.
9189         (verify_eh_edges): Move later in file.  Expect one EH edge.
9190         (verify_eh_dispatch_edge): New.
9191
9192         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
9193         (gtype-desc.o): Add TARGET_H.
9194         (tree.o): Use EXCEPT_H, not except.h.
9195         (cfgbuild.o): Add EXPR_H.
9196         (GTFILES): Add vecprim.h.
9197         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
9198         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
9199         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
9200         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
9201         * calls.c (emit_call_1): Use make_reg_eh_region_note.
9202         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
9203         calls to can_throw_internal.
9204         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
9205         (make_edges): Don't handle RESX; use can_nonlocal_goto.
9206         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
9207         (expand_gimple_stmt): Use make_reg_eh_region_note.
9208         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
9209         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
9210         or find_exception_handler_labels.
9211         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
9212         there is exacly one EH edge.  Use can_nonlocal_goto and
9213         can_throw_internal.
9214         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
9215         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
9216         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
9217         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
9218         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
9219         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
9220         * dse.c (scan_insn): Use insn_could_throw_p.
9221         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
9222         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
9223         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
9224         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
9225         EXC_PTR_EXPR or FILTER_EXPR.
9226         (tree_expr_nonzero_warnv_p): Likewise.
9227         * function.h: Include vecprim.h, not varray.h
9228         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
9229         move ttype_data and ehspec_data members to struct eh_status; change
9230         action_record_data member to a VEC.
9231         * gcse.c (hash_scan_set): Use can_throw_internal.
9232         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
9233         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
9234         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
9235         (block_may_fallthru): Don't handle RESX_EXPR.
9236         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
9237         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
9238         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
9239         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
9240         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
9241         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
9242         (gimple_size): Likewise.
9243         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
9244         (gimple_build_resx): Use gimple_build_with_ops.
9245         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
9246         (is_gimple_val): Likewise.
9247         (is_gimple_stmt): Remove RESX_EXPR.
9248         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
9249         (GIMPLE_RESX): Reorder with other EH constructs.
9250         * gimple.h (struct gimple_statement_eh_mnt): New.
9251         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
9252         (gimple_eh_filter_must_not_throw): Remove.
9253         (gimple_eh_filter_set_must_not_throw): Remove.
9254         (gimple_eh_must_not_throw_fndecl): New.
9255         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
9256         (is_gimple_resx): New.
9257         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
9258         Don't copy EH_FILTER_MUST_NOT_THROW.
9259         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
9260         * ipa-inline.c (estimate_function_body_sizes): Don't try to
9261         handle must_not_throw_labels specially.
9262         * ipa-pure-const.c (check_call): Update debug statement for LP.
9263         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
9264         * ipa-utils.c (get_base_var): Likewise.
9265         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
9266         * lower-subreg.c (move_eh_region_note): Remove.
9267         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
9268         * omp-low.c (new_omp_context): Update for eh_lp_nr.
9269         (create_task_copyfn): Likewise.
9270         (maybe_catch_exception): Use gimple_build_eh_filter.
9271         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
9272         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
9273         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
9274         and pass_lower_resx.
9275         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
9276         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
9277         can_throw_internal, can_nonlocal_goto.
9278         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
9279         copy_reg_eh_region_note_forward.
9280         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
9281         (emit_output_reload_insns): Likewise.
9282         (copy_eh_notes): Remove.
9283         * rtl.def (RESX): Remove.
9284         * rtl.h: Update declarations.
9285         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
9286         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
9287         (update_eh_label): Remove.
9288         (cleanup_dead_labels_eh): New.
9289         (cleanup_deal_labels): Use it instead of update_eh_label.
9290         (gimple_merge_blocks): Update landing pad data structure when
9291         removing a landing pad label.
9292         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
9293         test; handle GIMPLE_EH_MUST_NOT_THROW.
9294         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
9295         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
9296         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
9297         (verify_stmt): Likewise.  Verify landing pads.
9298         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
9299         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
9300         (struct move_stmt_d): Add eh_map.
9301         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
9302         (move_stmt_r): Remap eh region numbers in builtin calls,
9303         resx and eh_dispatch.
9304         (move_block_to_fn): Remove eh_offset parameter.  Use
9305         maybe_duplicate_eh_stmt_fn.
9306         (find_outermost_region_in_block): Operate on eh_region pointers
9307         instead of region numbers.
9308         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
9309         duplicate_eh_regions.
9310         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
9311         test earlier.  Disallow EH landing pads.
9312         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
9313         * tree-flow.h: Update declarations.
9314         (struct tree_ann_common_d): Replace rn with lp_nr.
9315         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
9316         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
9317         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
9318         resx and eh_dispatch.
9319         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
9320         (copy_edges_for_bb): Use make_eh_dispatch_edges.
9321         (copy_cfg_body): Expect eh_map instead of eh_region_offset
9322         from duplicate_eh_regions.
9323         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
9324         update RESX; handle EH_DISPATCH.
9325         (expand_call_inline): Set eh_lp_nr, not eh_region.
9326         (maybe_inline_call_in_expr): Likewise.
9327         * tree-inline.h (struct copy_body_data): Replace eh_region with
9328         eh_lp_nr, eh_region_offset with eh_map.
9329         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
9330         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
9331         * tree-pretty-print.c (dump_generic_node): Don't handle
9332         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
9333         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
9334         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
9335         EXC_PTR_EXPR, FILTER_EXPR.
9336         * tree-ssa-operands.c (get_expr_operands): Likewise.
9337         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
9338         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
9339         (ao_ref_init_from_vn_reference): Likewise.
9340         * tree-ssa-sink.c (statement_sink_location): Likewise.
9341         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9342         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
9343         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
9344         EXC_PTR_EXPR, FILTER_EXPR.
9345         (is_exception_related): Remove.
9346         (compute_avail): Don't call it.
9347         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
9348         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
9349         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
9350         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
9351         Build EH builtins.
9352         (build_resx): Remove.
9353         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
9354         * tree.h: Update declarations.
9355         (EH_FILTER_MUST_NOT_THROW): Remove.
9356         (struct tree_label_decl): Add eh_landing_pad_nr.
9357         (EH_LANDING_PAD_NR): New.
9358         * value-prof.c (gimple_ic): Tidy variable names.  Update for
9359         landing pad numbers.
9360         (gimple_stringop_fixed_value): Tidy variable names.  Assert
9361         that neither call stmt can throw.
9362         * vecprim.h (uchar): New.
9363         (VEC(uchar,heap), VEC(uchar,gc)): New.
9364
9365         * c-common.c (c_define_builtins): Update call to
9366         build_common_builtin_nodes.
9367         * c-parser.c (c_parse_file): Don't call
9368         default_init_unwind_resume_libfunc.
9369
9370 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
9371
9372         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
9373         (mips_cprestore_address_p): Likewise.
9374         (mips_save_gp_to_cprestore_slot): Likewise.
9375         (mips_restore_gp): Rename to...
9376         (mips_restore_gp_from_cprestore_slot): ...this.
9377         (mips_must_initialize_gp_p): Declare.
9378         (mips_emit_save_slot_move): Likewise.
9379         (mips_output_load_label): Return nothing.
9380         (mips_eh_uses): Declare.
9381         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
9382         (TARGET_CPRESTORE_DIRECTIVE): New macro.
9383         (TARGET_ABSOLUTE_JUMPS): Likewise.
9384         (EH_USES): Likewise.
9385         (FIRST_PSEUDO_REGISTER): Update comment.
9386         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
9387         (MIPS_CALL): ...here.
9388         (REGISTER_NAMES): Add $cprestore.
9389         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
9390         Add load_label_length, has_inflexible_gp_insn_p,
9391         has_flexible_gp_insn_p, must_initialize_gp_p and
9392         must_restore_gp_when_clobbered_p.
9393         (mips_expand_call): Don't generate split instructions here.
9394         (mips_split_call): Update the call to mips_restore_gp after
9395         the above name change.
9396         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
9397         (mips_find_gp_ref): New function.
9398         (mips_insn_has_inflexible_gp_ref_p): Likewise.
9399         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
9400         (mips_insn_has_flexible_gp_ref_p): Likewise.
9401         (mips_cfun_has_flexible_gp_ref_p): Likewise.
9402         (mips_function_has_gp_insn): Delete.
9403         (mips_global_pointer): Drop the df_regs_ever_live_p check.
9404         Use the new functions above.  Only return INVALID_REGNUM
9405         for TARGET_ABSOLUTE_JUMPS.
9406         (mips_must_initialize_gp_p): New function.
9407         (mips_get_cprestore_base_and_offset): New function, extracted from...
9408         (mips_cprestore_slot): ...here.  Take a bool parameter.
9409         (mips_cfun_has_cprestore_slot_p): New function.
9410         (mips_cprestore_address_p): Likewise.
9411         (mips_save_gp_to_cprestore_slot): Likewise.
9412         (mips_restore_gp): Rename to...
9413         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
9414         epilogue_completed.  Update the call to mips_cprestore_slot.
9415         Test cfun->machine->must_restore_gp_when_clobbered_p.
9416         (mips_direct_save_slot_move_p): New function.
9417         (mips_emit_save_slot_move): Likewise.
9418         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
9419         of cfun->machine->global_pointer.
9420         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
9421         (mips_save_reg): Use mips_emit_save_slot_move.
9422         (mips_expand_prologue): Set must_initialize_gp_p.
9423         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
9424         for all cprestore saves.  Emit a use_cprestore instruction after
9425         setting up the cprestore slot.
9426         (mips_restore_reg): Use mips_emit_save_slot_move.
9427         (mips_process_load_label): New function.
9428         (mips_load_label_length): Likewise.
9429         (mips_output_load_label): Don't return asm: output it here instead.
9430         Use mips_process_load_label.
9431         (mips_adjust_insn_length): Adjust the length of branch instructions
9432         that have length MAX_PIC_BRANCH_LENGTH.
9433         (mips_output_conditional_branch): Update the call to
9434         mips_output_load_label.  Assume the branch target is OPERANDS[0]
9435         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
9436         (mips_output_order_conditional_branch): Swap the meaning of
9437         OPERANDS[0] and OPERANDS[1].
9438         (mips_variable_issue): Don't count ghost instructions.
9439         (mips_expand_ghost_gp_insns): New function.
9440         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
9441         (mips_output_mi_thunk): Set must_initialize_gp_p.
9442         (mips_eh_uses): New function.
9443         * config/mips/predicates.md (cprestore_save_slot_operand)
9444         (cprestore_load_slot_operand): New predicates.
9445         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
9446         (UNSPEC_MOVE_GP): Likewise.
9447         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
9448         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
9449         (CPRESTORE_SLOT_REGNUM): New register.
9450         (MAX_PIC_BRANCH_LENGTH): New constant.
9451         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
9452         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
9453         branches.  Fix commentary.
9454         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
9455         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
9456         Change type to "ghost".
9457         (loadgp_absolute_<mode>): Likewise.
9458         (loadgp_rtp_<mode>): Likewise.
9459         (copygp_mips16): Likewise.
9460         (loadgp_blockage): Remove redundant mode attribute.
9461         (potential_cprestore): New instruction.
9462         (cprestore): Turn into an unspec set.
9463         (use_cprestore): New instruction.
9464         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
9465         (*branch_fp_inverted): Likewise.
9466         (*branch_order<mode>): Likewise.
9467         (*branch_order<mode>_inverted): Likewise.
9468         (*branch_equality<mode>): Likewise.
9469         (*branch_equality<mode>_inverted): Likewise.
9470         (*branch_bit<bbv><mode>): Likewise.
9471         (*branch_bit<bbv><mode>_inverted): Likewise.
9472         (*branch_equality<mode>_mips16): Remove redundant mode.
9473         (jump): Turn into a define_expand.
9474         (*jump_absolute): New instruction.
9475         (*jump_pic): Likewise.
9476         (*jump_mips16): Rename previously-unnamed pattern.  Remove
9477         redundant mode attribute.
9478         (restore_gp): Split on epilogue_completed rather than
9479         reload_completed.  Change type to "ghost".
9480         (move_gp<mode>): New instruction.
9481         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
9482         Remove redundant mode attribute.
9483         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
9484         (bc1any4f, bc1any2t, bc1any2f): Likewise.
9485         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
9486
9487 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
9488
9489         PR target/41210
9490         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
9491         are returned in the same register (vs34 or v2) that Altivec vector
9492         types are returned in.
9493         (rs6000_libcall_value): Ditto.
9494
9495         PR target/41331
9496         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
9497         instead of explicit addsi3/adddi3 calls.
9498         (rs6000_split_multireg_move): Ditto.
9499         (rs6000_emit_allocate_stack): Ditto.
9500         (rs6000_emit_prologue): Ditto.
9501         (rs6000_output_mi_thunk): Ditto.
9502
9503         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
9504         size is 64 bits if we can use 64-bit registers.
9505
9506 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9507
9508         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
9509         symbols.
9510
9511         From Jie Zhang <jie.zhang@analog.com>:
9512         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
9513         save FP and RETS with saveall attribute.
9514         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
9515         with saveall attribute.
9516
9517         * config/bfin/bfin.c (bfin_expand_builtin,
9518         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
9519         operands.
9520
9521         From Jie Zhang <jie.zhang@analog.com>:
9522         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
9523         before use in two places.
9524         * config/bfin/bfin.md (AREG): Define mode iterator.
9525         (reload_in, reload_out): Use mode iterator AREG.
9526
9527 2009-09-14  Richard Guenther  <rguenther@suse.de>
9528
9529         PR middle-end/41350
9530         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
9531         EH personality path.
9532
9533 2009-09-13  Richard Guenther  <rguenther@suse.de>
9534             Rafael Avila de Espindola  <espindola@google.com>
9535
9536         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
9537         (LANG_HOOKS_EH_PERSONALITY): Likewise.
9538         (LANG_HOOKS_INITIALIZER): Adjust.
9539         (lhd_pass_through_t): Declare.
9540         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
9541         eh_personality.
9542         * langhooks.c (lhd_pass_through_t): New function.
9543         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
9544         dwarf2out_begin_prologue): Use personality from current_function_decl.
9545         * expr.h (get_personality_function): Declare.
9546         * expr.c (get_personality_function): New function.
9547         (build_personality_function): Likewise.
9548         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
9549         (eh_personality_libfunc): Remove.
9550         * optabs.c (build_libfunc_function): New function split out from ...
9551         (init_one_libfunc): ... here.
9552         * tree.h (DECL_FUNCTION_PERSONALITY): New.
9553         (tree_function_decl): Add personality.
9554         (lhd_gcc_personality): Declare.
9555         (build_personality_function): Likewise.
9556         * tree.c (gcc_eh_personality_decl): New.
9557         (lhd_gcc_personality): New function.
9558         * except.h (lang_eh_runtime_type): Remove.
9559         (enum eh_personality_kind): New.
9560         (build_personality_function): Declare.
9561         (function_needs_eh_personality): Declare.
9562         * except.c (lang_eh_runtime_type): Remove.
9563         (function_needs_eh_personality): New function.
9564         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
9565         (sjlj_emit_function_enter, output_function_exception_table):
9566         Use personality from current_function_decl.
9567         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
9568         * tree-inline.c (tree_can_inline_p): Do not inline across different
9569         EH personalities.
9570         (expand_call_inline): Likewise.  Adjust the callers EH personality.
9571         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
9572         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
9573         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
9574         (c-parser.o): Likewise
9575         * c-tree.h (c_eh_initialized_p): Remove.
9576         (c_maybe_initialize_eh): Likewise.
9577         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
9578         (finish_decl): Don't call c_maybe_initialize_eh.
9579         (c_eh_initialized_p): Remove.
9580         (c_maybe_initialize_eh): Likewise.
9581         * c-parser.c (c_parser_omp_construct): Likewise.
9582         (c_parse_file): Initialize exception handling.
9583
9584 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
9585
9586         * config.gcc (tm_file): Remove i386/biarch32.h
9587         for i?86-w64-mingw* case.
9588         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
9589         support.
9590         * config.host: Set for x64 mingw the option
9591         use_long_long_for_widest_fast_int to yes.
9592
9593 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
9594
9595         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
9596         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
9597         (dbxout_begin_function): Likewise.
9598         * final.c (dwarf2_debug_info_emitted_p): New predicate.
9599         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
9600         set on the function.
9601         (final_end_function): Likewise.
9602         (final_scan_insn): Likewise.
9603         (rest_of_handle_final): Likewise.
9604         * varasm.c (assemble_start_function): Likewise.
9605         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
9606
9607 2009-09-12  Jason Merrill  <jason@redhat.com>
9608
9609         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
9610         * opts.c (common_handle_option): constify.
9611
9612 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9613
9614         * doc/install.texi (avr): Remove obsolete reference site.
9615
9616 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9617
9618         * doc/install.texi (Binaries): Adjust AIX link.
9619
9620 2009-09-12  Akim Demaille  <demaille@gostai.com>
9621
9622         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
9623         Use an imperative sentence.
9624
9625 2009-09-11  Richard Henderson  <rth@redhat.com>
9626
9627         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
9628         structure-name and has-tree-operands arguments; update all entries.
9629         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
9630         update all entries.
9631         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
9632         (gsstruct_code_size): New.
9633         (gss_for_code_): New.
9634         (gss_for_code): Remove.
9635         (gimple_size): Rewrite using gsstruct_code_size.
9636         (gimple_statement_structure): Move to gimple.h.
9637         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
9638         (gss_for_code, gimple_statement_structure): New.
9639         (gimple_ops): Use new arrays; tidy.
9640
9641 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9642
9643         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
9644         operand to be a PLUS expression.
9645         * config/pa/pa.c (pa_secondary_reload): Likewise.
9646
9647 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
9648
9649         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
9650
9651         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
9652         XEXP (in_rtx, 8).
9653
9654 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9655
9656         From Jie Zhang <jie.zhang@analog.com>:
9657         * doc/extend.texi (node Function Attributes): Document l2
9658         function attribute.
9659         (node Blackfin Variable Attributes): Document l2 variable attributes.
9660
9661 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
9662
9663         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
9664         to match the system compiler's configuration at inflection point.
9665         Add comment to remark a remaining difference with system compiler.
9666
9667         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
9668         * configure: Regenerate.
9669
9670 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9671
9672         From Jie Zhang <jie.zhang@analog.com>:
9673         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
9674         (bfin_handle_l2_attribute): New.
9675         (bfin_attribute_table): Add l2 attribute.
9676
9677 2009-09-11  Michael Matz  <matz@suse.de>
9678
9679         PR middle-end/41275
9680         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
9681         on the local_decls list.
9682
9683 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
9684
9685         PR debug/41276
9686         PR debug/41307
9687         * cselib.c (cselib_expand_value_rtx_cb): Document callback
9688         interface.
9689         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
9690         for VALUEs, to implement the documented interface.
9691         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
9692         Adjust for VALUEs and anything else, to implement the
9693         documented interface.
9694
9695 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
9696
9697         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
9698         with actual SPE/paired vector modes before using 64-bit alignment.
9699         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
9700
9701 2009-09-10  DJ Delorie  <dj@redhat.com>
9702
9703         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
9704         emitted.
9705
9706         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
9707         * config/mep/mep.c (mep_legitimate_constant_p): New.
9708         * config/mep/mep-protos.h: Prototype it.
9709
9710 2009-09-10  Richard Henderson  <rth@redhat.com>
9711
9712         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
9713
9714 2009-09-10  Jason Merrill  <jason@redhat.com>
9715
9716         * tree.c (chain_index): New fn.
9717         * tree.h: Declare it.
9718
9719 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9720
9721         * config/sol2-c.c (cmn_err_length_specs): Initialize
9722         scalar_identity_flag.
9723
9724 2009-09-10  Richard Henderson  <rth@redhat.com>
9725
9726         * tree.h (struct tree_decl_common): Move align member earlier;
9727         move label_decl_uid member ...
9728         (struct tree_label_decl): ... here.
9729         (LABEL_DECL_UID): Update to match.
9730
9731         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
9732         not TDF_DETAILS.
9733
9734         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
9735         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
9736
9737         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
9738         dest_prev if the edge is complex.
9739
9740         * tree-cfg.c (is_ctrl_stmt): Use a switch.
9741
9742         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
9743         loop latch tests earlier.
9744
9745         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
9746         before GIMPLE_RETURN, not after its predecessor; insert
9747         before GIMPLE_RESX.
9748
9749         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
9750         gimple_seq_empty_p to test for no PHI nodes.
9751         * tree-cfg.c (split_critical_edges): Likewise.
9752
9753         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
9754
9755 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9756
9757         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
9758         introduced by the VTA branch merge.
9759
9760 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9761
9762         * ira-conflicts.c: Use fputs or putc instead of fprintf
9763         where appropriate.
9764         * cfg.c: Ditto.
9765         * toplev.c: Ditto.
9766         * tree-switch-conversion.c: Ditto.
9767
9768 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9769
9770         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
9771         introduced by the VTA branch merge.
9772
9773 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9774
9775         Revert:
9776         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9777
9778         PR rtl-optimization/39779
9779         * expr.c (convert_modes): Return when mode == oldmode after
9780         CONST_INTs are processed.
9781
9782 2009-09-10  Nick Clifton  <nickc@redhat.com>
9783
9784         * config/mep/mep.c (mep_encode_section_info): Copy weakness
9785         attribute and referring decl when creating renamed symbol.
9786
9787 2009-09-10  Richard Guenther  <rguenther@suse.de>
9788
9789         PR middle-end/41257
9790         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
9791         reachable nodes.
9792         (cgraph_finalize_compilation_unit): Compute reachability
9793         before emitting thunks.  Properly process aliases before
9794         possibly removing unreachable nodes.
9795
9796 2009-09-10  Richard Guenther  <rguenther@suse.de>
9797
9798         PR middle-end/41254
9799         * tree.c (struct free_lang_data_d): Add worklist member.
9800         (find_decls_types_r): Push onto the worklist instead of recursing.
9801         Handle TREE_BINFOs properly.
9802         (find_decls_types): New function wrapped around find_decls_types_r
9803         to process the worklist.
9804         (find_decls_types_in_eh_region): Use it.
9805         (find_decls_types_in_node): Likewise.
9806         (find_decls_types_in_var): Likewise.
9807         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
9808         * tree.h (RECORD_OR_UNION_TYPE_P): New.
9809         (AGGREGATE_TYPE_P): Adjust.
9810
9811 2009-09-09  Jason Merrill  <jason@redhat.com>
9812
9813         * configure.ac: Check glibc version even if we have an in-tree
9814         assembler.
9815
9816 2009-09-09  Anthony Green  <green@moxielogic.com>
9817
9818         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
9819         the constant 0 when appropriate.
9820         * config/moxie/constraints.md: Add constraint O.
9821
9822         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
9823         to pass up to 6 32-bit argument values in registers.
9824         (moxie_function_arg): Ditto.
9825         (moxie_arg_partial_bytes): Ditto.
9826         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
9827         (REG_PARM_STACK_SPACE): Ditto.
9828         (FUNCTION_ARG_REGNO_P): Ditto.
9829
9830         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9831         instruction to allocate stack space.
9832
9833 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9834
9835         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
9836         unnecessarily stringent constraints.  Fix address
9837         calculation in the splitters.
9838
9839 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9840
9841         PR rtl-optimization/39779
9842         * expr.c (convert_modes): Return when mode == oldmode after
9843         CONST_INTs are processed.
9844
9845 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
9846
9847         PR/41315
9848         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
9849         (ix86_expand_prologue): Take frame.padding0 into logic of
9850         to_allocate checks.
9851         (ix86_expand_epilogue): Likewise.
9852
9853 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
9854
9855         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
9856         New variables.
9857         (SHLIB_LINK, SHLIB_INSTALL): Use them.
9858         * config/t-slibgcc-libgcc: New file.
9859         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
9860
9861 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9862
9863         PR tree-optimization/41089
9864         * tree-sra.c (find_var_candidates): Do not consider va_lists in
9865         early SRA.
9866
9867 2009-09-09  Richard Henderson  <rth@redhat.com>
9868
9869         * gimple.h (CASE_GIMPLE_OMP): New.
9870         (is_gimple_omp): Use it.
9871         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
9872         (verify_gimple_debug): Likewise.
9873
9874 2009-09-09  Richard Guenther  <rguenther@suse.de>
9875
9876         PR tree-optimization/41101
9877         * tree-ssa-pre.c (maximal_set): Remove.
9878         (compute_antic_aux): Treat the maximal set as implicitly all ones.
9879         Defer all blocks we didn't visit at least one successor.
9880         (add_to_exp_gen): Do not add to the maximal set.
9881         (make_values_for_phi): Likewise.
9882         (compute_avail): Likewise.
9883         (init_pre): Do not allocate the maximal set.
9884         (execute_pre): Do not dump it.
9885
9886 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9887
9888         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
9889         an SSA_NAME rather than a is_gimple_variable.
9890
9891 2009-09-09  Richard Guenther  <rguenther@suse.de>
9892
9893         PR middle-end/41317
9894         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
9895         code dealing with plain pointer bases.
9896         (maybe_fold_offset_to_reference): Likewise.
9897         (maybe_fold_stmt_addition): Adjust.
9898
9899 2009-09-09  Richard Guenther  <rguenther@suse.de>
9900
9901         * tree.c (free_lang_data_in_type): Do not free the type variant
9902         chains.
9903         (free_lang_data): Merge char_type_node with its properly signed
9904         variant.
9905         (pass_ipa_free): Collect after freeing language specific data.
9906
9907 2009-09-09  Michael Matz  <matz@suse.de>
9908
9909         PR middle-end/41268
9910         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
9911         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
9912         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
9913         to reflect reality.
9914
9915 2009-09-08  DJ Delorie  <dj@redhat.com>
9916
9917         * config/mep/mep.c (conversions[]): Add "ml" pattern.
9918
9919 2009-09-04  Jason Merrill  <jason@redhat.com>
9920
9921         * tree.c (tree_find_value): Remove.
9922         * tree.h: Remove prototype.
9923         * varasm.c (assemble_external): Use value_member instead.
9924
9925 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9926
9927         * toplev.c (process_options): Choose default debugging type when
9928         gtoggle enables debug info and type is unset.
9929
9930 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9931
9932         PR debug/41276
9933         PR debug/41307
9934         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
9935         invalid subreg.
9936
9937 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9938
9939         * configure: Rebuilt with modified libtool.m4.
9940
9941 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9942
9943         PR debug/41229
9944         PR debug/41291
9945         PR debug/41300
9946         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
9947
9948 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9949
9950         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
9951         (remove_statement): Likewise.
9952         (rewrite_use_nonlinear_expr): Adjust.
9953         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
9954         * tree-ssa.c (release_defs_bitset): ... this.  New.
9955         * tree-flow.h (release_defs_bitset): Declare.
9956
9957 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9958
9959         PR debug/41232
9960         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
9961         in the middle block.
9962
9963 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
9964
9965         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
9966         via intptr_t to long type.
9967         (insert_operand_rank): Cast long type via intptr_t to
9968         pointer type.
9969         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
9970         pointer to scalar.
9971         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
9972         from pointer to unsigned via uintptr_t.
9973
9974         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
9975         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
9976         and HAVE_INTPTR_T.
9977         * configure: Regenerated.
9978         * config.in: Regenerated
9979         * system.h (stdint.h): Add include.
9980         (inttypes.h): Likewise.
9981         * Makefile.in (aclocal): Add config/stdint.m4.
9982         * aclocal.m4: Regenerated.
9983
9984 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9985
9986         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
9987         variables.
9988         (note_np_check_stores): New function.
9989         (harmless_null_pointer_p): New function.
9990         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
9991         changed.  Take into account whether we're in the shadow of a condjump
9992         that tested NP_REG for NULL.
9993         Lose all code that tested for SEQUENCEs.
9994         (workaround_speculation): Avoid inserting NOPs for loads that are
9995         either always executed or a NULL pointer.
9996
9997 2009-09-08  Jan Hubicka  <jh@suse.cz>
9998
9999         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
10000         * params.def (early-inlining-insns): Likewise.
10001
10002 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
10003
10004         PR rtl-optimization/41239
10005         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
10006         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
10007         lists.
10008         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
10009         across calls, as the calls might not always return normally.
10010         (call_may_noreturn_p): New function.
10011         (deps_analyze_insn): Update last_function_call_may_noreturn list.
10012         (init_deps): Initialize it.
10013         (remove_from_deps): Also remove calls from
10014         last_function_call_may_noreturn list.
10015
10016 2009-09-07  Richard Henderson  <rth@redhat.com>
10017
10018         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
10019         more VR->OPERANDS than LHS operands.  Free LHS before returning.
10020
10021 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
10022
10023         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
10024         (attr "addrtype"): New member "spreg".
10025         Use it if mem_spfp_address_operand is true for the address.
10026         (attr "type"): New entry "stall".
10027         (cpu_unit "load"): New.
10028         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
10029         "load".
10030         (insn_reservation "loadsp"): New.
10031         (insn_reservation "load_stall1"): New.
10032         (insn_reservation "load_stall3"): New.
10033         (stall): New insn.
10034         * config/bfin/predicates.md (const1_operand, const3_operand): New.
10035         (mem_p_address_operand): Exclude stack and frame pointer based
10036         addresses.
10037         (mem_spfp_address_operand): New; match them here.
10038         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
10039         (bfin_reorg): Call it if scheduling insns.
10040         (bfin_gen_bundles): Remove dummy insns created by
10041         add_sched_insns_for_speculation.
10042
10043         From Jie Zhang <jie.zhang@analog.com>:
10044         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
10045         bfin_si_revision, bfin_workarounds): Move these ...
10046         * config/bfin/bfin.h: ... here.
10047
10048         From Mike Frysinger  <michael.frysinger@analog.com>
10049         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
10050         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
10051         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
10052         bf547m, bf548m, and bf549m.
10053         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
10054         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
10055         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
10056         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
10057         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
10058         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
10059         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
10060         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
10061         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
10062         bf542m, bf544m, bf547m, bf548m, and bf549m.
10063
10064         From Jie Zhang <jie.zhang@analog.com>:
10065         * config/bfin/predicates.md (p_register_operand): New predicate.
10066         (dp_register_operand): New predicate.
10067         * config/bfin/bfin-protos.h (WA_05000074): Define.
10068         (ENABLE_WA_05000074): Define.
10069         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
10070         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
10071         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
10072         (define_attr addrtype): Allow load/store register to be P register.
10073         (define_attr storereg): New.
10074         (define_cpu_unit anomaly_05000074): New.
10075         (define_insn_reservation dsp32shiftimm): New.
10076         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
10077         (define_insn_reservation loadp): Cannot use slot2.
10078         (define_insn_reservation loadsp): Cannot use slot2.
10079         (define_insn_reservation storep): Cannot use slot2. Does not
10080         apply when working around 05000074.
10081         (define_insn_reservation storep_anomaly_05000074): New.
10082         (define_insn_reservation storei): Does not apply when working
10083         around 05000074.
10084         (define_insn_reservation storei_anomaly_05000074): New.
10085         (define_attr length): Add dsp32shiftimm case.
10086         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
10087         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
10088         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
10089         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
10090         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
10091
10092 2009-09-07  Martin Jambor  <mjambor@suse.cz>
10093
10094         PR middle-end/41282
10095         * tree-sra.c (create_artificial_child_access): Return NULL if
10096         build_ref_for_offset fails.
10097         (propagate_subacesses_accross_link): Allow build_ref_for_offset
10098         and create_artificial_child_access to fail.
10099
10100 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
10101
10102         PR c++/41214
10103         * unwind-dw2.c (uw_init_context_1): Mark noinline.
10104         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
10105         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
10106
10107 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
10108
10109         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
10110         block, ensure it has an exit edge.  Emit a barrier after a jump.
10111
10112 2009-09-07  Nick Clifton  <nickc@redhat.com>
10113
10114         * gcc.c (this_is_linker_script): New variable.  Like
10115         this_is_library_file but for the %T constructor.
10116         (end_going_arg): If this_is_linker_script is set then locate the
10117         script and insert a --script switch before it
10118         (do_spec_2): Initialise this_is_linker_script.
10119         (do_spec_1): Likewise.  Handle %T construct.
10120         (eval_spec_function): Preserve this_is_linker_script.
10121         * doc/invoke.texi: Document %T construct in spec files.
10122         * config/m32c/m32c.h (LIB_SPEC): Use it.
10123
10124 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10125
10126         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
10127         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
10128         when volatile flag is set.
10129         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
10130
10131 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
10132
10133         PR bootstrap/41241
10134         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
10135         (combine_stack_adjustments_for_block): Allow insns between stack
10136         adjustments and stores with corresponding pre-(dec|inc)rement or
10137         pre-modify operation.
10138
10139 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
10140
10141         PR bootstrap/41241
10142         * combine-stack-adj.c (struct csa_memlist): Rename to...
10143         (struct csa_reflist): ... this.  Rename mem field to ref.
10144         (free_csa_memlist): Rename to...
10145         (free_csa_reflist): ... this.
10146         (record_one_stack_memref): Rename to...
10147         (record_one_stack_ref): ... this.  Handle also REG_P.
10148         (try_apply_stack_adjustment): Handle also REG_P.
10149         (struct record_stack_memrefs_data): Rename to...
10150         (struct record_stack_refs_data): ... this.  Rename memlist field to
10151         reflist.
10152         (record_stack_memrefs): Rename to...
10153         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
10154         subexpressions instead of failing when a MEM contains SP references.
10155         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
10156         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
10157
10158 2009-09-06  Richard Guenther  <rguenther@suse.de>
10159
10160         PR middle-end/41144
10161         * tree.c (build_array_type): Do not record types marked
10162         with structural equality in the canonical type hashtable.
10163
10164 2009-09-06  Richard Guenther  <rguenther@suse.de>
10165
10166         PR middle-end/41261
10167         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
10168
10169 2009-09-05  Richard Guenther  <rguenther@suse.de>
10170
10171         PR middle-end/41181
10172         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
10173
10174 2009-09-05  Richard Guenther  <rguenther@suse.de>
10175
10176         PR debug/41273
10177         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
10178
10179 2009-09-05  Richard Guenther  <rguenther@suse.de>
10180
10181         PR middle-end/41271
10182         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
10183         before comparing function argument types.
10184
10185 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10186
10187         PR target/41024
10188         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
10189         the assembler.
10190
10191 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
10192
10193         Revert:
10194         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10195
10196         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10197         locators before emit_insn is called.
10198
10199 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
10200
10201         PR bootstrap/41241
10202         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
10203         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
10204         (reginfo_init): Don't call allocate_reg_info.
10205
10206 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
10207
10208         PR target/41262
10209         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
10210         NONDEBUG_INSN_P instead of INSN_P.
10211
10212 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10213
10214         PR debug/41225
10215         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
10216
10217 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10218
10219         PR target/41252
10220         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
10221         pattern of the split.
10222
10223 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10224
10225         * toplev.c (process_options): Move setter of flag_var_tracking
10226         before other tests that depend on it.  Move down setter of
10227         flag_rename_registers.  Don't enable var-tracking-assignments
10228         by default if selective scheduling is enabled.  Warn if both
10229         are enabled.
10230
10231 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10232
10233         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
10234         comment.  Use switch statement to catch overlaps between rtx
10235         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
10236         (IS_DECL_CODE): ... here. Remove.
10237         (check_value_is_not_decl): Remove.
10238         (dv_from_decl, dv_from_value): Check after conversion.
10239
10240 2009-09-04  Richard Guenther  <rguenther@suse.de>
10241
10242         PR middle-end/41257
10243         * (cgraph_finalize_compilation_unit): Move finalizing aliases
10244         after emitting tunks.  Move emitting thunks and ctors from ...
10245         (cgraph_optimize): ... here.  Remove redundant
10246         cgraph_analyze_functions.
10247         * varasm.c (find_decl_and_mark_needed): Remove no longer
10248         necessary check.
10249         (finish_aliases_1): Adjust check for thunk aliases.
10250
10251 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
10252
10253         * config/arm/arm.md (ctzsi2): Added braces
10254         to avoid warning that broke booststrap.
10255
10256 2009-09-04  Martin Jambor  <mjambor@suse.cz>
10257
10258         PR tree-optimization/41112
10259         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
10260         handle variable-bounded arrays.
10261         (expr_with_var_bounded_array_refs_p): New function.
10262         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
10263
10264 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
10265
10266         * config/s390/2097.md: Removed two incorrect bypasses.
10267         (z10_fsimpdf): Fixed latency.
10268         (z10_fhex): New insn_reservation.
10269         (z10_floaddf): Fixed latency.
10270         (z10_floadsf): Fixed latency.
10271         (z10_ftrunctf): Fixed latency.
10272         (z10_ftruncdf): Fixed latency.
10273         * config/s390/s390.c (z10_cost): Fixed values.
10274         (s390_adjust_priority): Added z10 path.
10275         * config/s390/s390.md (type): Added fhex.
10276         (*mov<mode>_64dfp): Updated type attribute.
10277         (*mov<mode>_64): Updated type attribute.
10278         (*mov<mode>_31): Updated type attribute.
10279         (*mov<mode>"): Likewise.
10280         * config/s390/2084.md (x_fsimpdf): Updated condition.
10281
10282 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
10283
10284         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
10285         RTXs in the predicate for operand 1.
10286
10287 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
10288
10289         * config/arm/arm.md (UNSPEC_RBIT): New constant.
10290         (rbitsi2): New insn.
10291         (ctzsi2): New expand.
10292         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
10293
10294 2009-09-03  Martin Jambor  <mjambor@suse.cz>
10295
10296         * tree-sra.c (duplicate_expr_for_different_base): Removed.
10297         (create_artificial_child_access): Use build_ref_for_offset instead
10298         of duplicate_expr_for_different_base.
10299         (propagate_subacesses_accross_link): Likewise.
10300
10301 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
10302
10303         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
10304         of INSN_P.
10305         (mips16e_collect_argument_saves): Skip debug instructions.
10306         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
10307         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
10308         (r10k_insert_cache_barriers): Likewise.
10309         (mips_reorg_process_insns): Likewise.
10310
10311 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
10312
10313         PR bootstrap/41241
10314         * ira.c (update_equiv_reg): Remove check on class likely spill.
10315
10316 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
10317
10318         PR debug/41236
10319         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
10320         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
10321         it or SUBREG.
10322
10323         PR debug/41238
10324         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
10325         the stack slot if it is passed by invisible reference.
10326         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
10327         by invisible reference.
10328
10329 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
10330
10331         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
10332         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
10333         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
10334         0.
10335         * config/bfin/sync.md: New file.
10336         * config/bfin/bfin.md: Include it.
10337         (UNSPEC_ATOMIC): New.
10338         (UNSPEC_ONES): Provide a unique number.
10339
10340         From Jie Zhang <jie.zhang@analog.com>:
10341         * config/bfin/bfin.c (ret_regs): New.
10342         (must_save_fp_p): Don't return true because of frame_pointer_needed.
10343         (must_save_rets_p): New.
10344         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
10345         current_function_is_leaf.
10346         (do_link): Likewise.
10347         (do_unlink): Likewise.
10348         (expand_interrupt_handler_prologue): Use ret_regs array.
10349         (expand_interrupt_handler_epilogue): Use ret_regs array and
10350         pass return register to gen_return_internal.
10351         (bfin_expand_epilogue): Pass return register to
10352         gen_return_internal.
10353         (bfin_expand_call): Explicitly clobber RETS.
10354         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
10355         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
10356         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
10357         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
10358         RETS.
10359         (return_internal): Take a reg rtx rather than the register number.
10360
10361 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
10362
10363         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
10364         when comparing against estimated_loop_iterations_int return.
10365
10366 2009-09-03  Richard Guenther  <rguenther@suse.de>
10367
10368         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
10369         eh_personality_libfunc.
10370
10371 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10372
10373         * tree-parloops.c (separate_decls_in_region): Add space.
10374
10375 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10376
10377         * tree-parloops.c (separate_decls_in_region): Change the condition
10378         checking if there are reductions in the loop.
10379
10380 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10381
10382         PR tree-optimization/38275
10383         * tree-parloops.c (parallelize_loops): Replace profitability condition
10384         for expected number of iterations.
10385
10386 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
10387
10388         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
10389         (bootstrap-debug): Explain conditions in which it becomes default.
10390         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
10391         make it add to it.
10392
10393 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
10394
10395         * doc/invoke.texi (Optimize Options): Move
10396         -finline-small-functions to the -O2 list.
10397
10398 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
10399
10400         * toplev.c (process_options): Enable var-tracking-assignments
10401         by default if var-tracking is enabled.
10402
10403 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
10404
10405         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
10406         barrier.
10407         * emit-rtl.c (prev_nonnote_insn_bb): New function.
10408         * rtl.h (prev_nonnote_insn_bb): Declare it.
10409
10410 2009-09-03  Diego Novillo  <dnovillo@google.com>
10411
10412         * cgraph.c (cgraph_node_for_decl): New.
10413         * cgraph.h (cgraph_node_for_decl): Declare.
10414         * tree.c (host_integerp): Return 0 if T is NULL.
10415
10416 2009-09-03  Diego Novillo  <dnovillo@google.com>
10417
10418         * tree.h (struct alias_pair): Move from varasm.c.
10419         (alias_pairs): Likewise.
10420         (TYPE_MAXVAL): Define.
10421         (TYPE_MINVAL): Define.
10422         (iterative_hash_host_wide_int): Declare.
10423         (remove_unreachable_alias_pairs): Declare.
10424         * tree-pass.h (pass_ipa_free_lang_data): Declare.
10425         * diagnostic.c (default_diagnostic_starter): Make extern.
10426         (default_diagnostic_finalizer): Make extern.
10427         * diagnostic.h (default_diagnostic_starter): Declare.
10428         (default_diagnostic_finalizer): Declare.
10429         (default_tree_printer): Declare.
10430         * toplev.c (default_tree_printer): Make extern.
10431
10432 2009-09-03  Richard Guenther  <rguenther@suse.de>
10433             Diego Novillo  <dnovillo@google.com>
10434
10435         * cgraph.c (cgraph_add_new_function): Remove gimplification.
10436         * cgraphunit.c (cgraph_expand_function): Do not emit
10437         associated thunks from here.
10438         (cgraph_emit_thunks): New.
10439         (cgraph_optimize): Call it.
10440         Return if any IPA pass finds an error.
10441         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
10442         by thunks.
10443
10444 2009-09-03  Simon Baldwin  <simonb@google.com>
10445             Rafael Espindola  <espindola@google.com>
10446             Richard Guenther  <rguenther@suse.de>
10447             Doug Kwan  <dougkwan@google.com>
10448             Diego Novillo  <dnovillo@google.com>
10449
10450         * tree.c: Include tree-pass.h, langhooks-def.h,
10451         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
10452         (free_lang_data_in_type): New.
10453         (need_assembler_name_p): New.
10454         (free_lang_data_in_block): New.
10455         (free_lang_data_in_decl): New.
10456         (struct free_lang_data_d): New.
10457         (add_tree_to_fld_list): New.
10458         (find_decls_types_r): New.
10459         (get_eh_types_for_runtime): New.
10460         (find_decls_types_in_eh_region): New.
10461         (find_decls_types_in_node): New.
10462         (find_decls_types_in_var): New.
10463         (free_lang_data_in_cgraph): New.
10464         (free_lang_data): New.
10465         (gate_free_lang_data): New.
10466         (pass_ipa_free_lang_data): New.
10467
10468 2009-09-03  Diego Novillo  <dnovillo@google.com>
10469
10470         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
10471         * langhooks.h (struct lang_hooks): Add field free_lang_data.
10472         (lang_hooks): Remove const qualifier.
10473         * ipa.c (cgraph_remove_unreachable_nodes): Call
10474         remove_unreachable_alias_pairs.
10475         * except.c (add_type_for_runtime): Check if TYPE has
10476         already been converted.
10477         (lookup_type_for_runtime): Likewise.
10478         (check_handled): Handle converted types.
10479         * varasm.c (remove_unreachable_alias_pairs): New.
10480         * gimple.c: Include demangle.h.
10481         (gimple_decl_printable_name): New.
10482         (gimple_fold_obj_type_ref): New.
10483         * gimple.h (gimple_decl_printable_name): Declare.
10484         (gimple_fold_obj_type_ref): Declare.
10485         * passes.c (init_optimization_passes): Add pass
10486         pass_ipa_free_lang_data.
10487         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
10488         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
10489
10490 2009-09-03  Diego Novillo  <dnovillo@google.com>
10491
10492         * c-lang.c (lang_hooks): Remove const qualifier.
10493
10494 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
10495
10496         * doc/install.texi (*-*-freebsd*): Update target information.
10497
10498 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
10499
10500         * hard-reg-set.h (call_fixed_regs): Remove.
10501         * reginfo.c (call_fixed_regs): Remove.
10502         (init_reg_sets_1): Remove initialization of call_fixed_regs.
10503         (globalize_reg): Don't use call_fixed_regs.
10504         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
10505         call_fixed_regs.
10506
10507 2009-09-01  Michael Matz  <matz@suse.de>
10508
10509         * expr.h (emit_storent_insn, expand_expr_real_1,
10510         expand_expr_real_2): Declare.
10511         * expr.c (emit_storent_insn, expand_expr_real_1,
10512         expand_expr_real_2): Export.
10513         (store_expr): Setting and evaluating dont_return_target is useless.
10514         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
10515         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
10516         * except.c (expand_resx_expr): Rename to ...
10517         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
10518         * except.h (expand_resx_stmt): Declare.
10519         * stmt.c: Add include gimple.h
10520         (expand_asm_expr): Rename to ...
10521         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
10522         (expand_case): Rewrite to take gimple statement.
10523         * tree.h (expand_asm_stmt): Declare.
10524         (expand_case): Change prototype.
10525         * Makefile.in (stmt.o): Depend on gimple.h.
10526         * builtins.c (expand_builtin_synchronize): Build gimple asm
10527         statement, not an ASM_EXPR.
10528         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
10529         gimple_to_tree, release_stmt_tree): Remove.
10530         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
10531         ggc_free, but hold comparison code and operands separately.
10532         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
10533         (expand_call_stmt, expand_gimple_stmt_1,
10534         expand_gimple_stmt): New helpers.
10535         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
10536         release_stmt_tree.  Call expand_gimple_stmt instead.
10537         (expand_gimple_basic_block): Ditto.
10538
10539         * calls.c (emit_call_1): Don't look at EH regions here, make
10540         fntree parameter useless.
10541         (expand_call): New local rettype for TREE_TYPE(exp), use it
10542         throughout.  Remove local p, use addr instead.
10543         Don't look at EH regions here.
10544
10545 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
10546
10547         * doc/invoke.texi (-fsched-pressure): Document it.
10548         (-fsched-reg-pressure-heuristic): Remove it.
10549
10550         * reload.c (ira.h): Include.
10551         (find_reloads): Add choosing reload on number of small spilled
10552         classes.
10553
10554         * haifa-sched.c (ira.h): Include.
10555         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
10556         saved_reg_pressure, curr_reg_live, saved_reg_live,
10557         region_ref_regs): New variables.
10558         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
10559         initiate_reg_pressure_info, setup_ref_regs,
10560         initiate_bb_reg_pressure_info, save_reg_pressure,
10561         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
10562         functions.
10563         (setup_insn_reg_pressure_info): New function.
10564         (rank_for_schedule): Add pressure checking and insn issue time.
10565         Remove comparison of insn reg weights.
10566         (ready_sort): Set insn reg pressure info.
10567         (update_register_pressure, setup_insn_max_reg_pressure,
10568         update_reg_and_insn_max_reg_pressure,
10569         sched_setup_bb_reg_pressure_info): New functions.
10570         (schedule_insn): Add code for printing and updating reg pressure info.
10571         (find_set_reg_weight, find_insn_reg_weight): Remove.
10572         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
10573         (debug_ready_list): Print reg pressure info.
10574         (schedule_block): Ditto.  Check insn issue time.
10575         (sched_init): Set up sched_pressure_p.  Allocate and set up some
10576         reg pressure related info.
10577         (sched_finish): Free some reg pressure related info.
10578         (fix_tick_ready): Make insn always ready if pressure_p.
10579         (init_h_i_d): Don't call find_insn_reg_weight.
10580         (haifa_finish_h_i_d): Free insn reg pressure info.
10581
10582         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10583         ira_memory_move_cost, ira_class_hard_regs,
10584         ira_class_hard_regs_num, ira_no_alloc_regs,
10585         ira_available_class_regs, ira_reg_class_cover_size,
10586         ira_reg_class_cover, ira_class_translate): Move to ira.h.
10587
10588         * ira-lives.c (single_reg_class): Check mode to find how many
10589         registers are necessary for operand.
10590         (ira_implicitly_set_insn_hard_regs): New.
10591
10592         * common.opt (fsched-pressure): New options.
10593         (fsched-reg-pressure-heuristic): Remove.
10594
10595         * ira.c (setup_eliminable_regset): Rename to
10596         ira_setup_eliminable_regset.  Make it external.
10597         (expand_reg_info): Pass cover class to setup_reg_classes.
10598         (ira): Call resize_reg_info instead of allocate_reg_info.
10599
10600         * sched-deps.c: Include ira.h.
10601         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
10602         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
10603         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
10604         mark_insn_hard_regno_birth, mark_insn_reg_birth,
10605         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
10606         mark_insn_reg_store, mark_insn_reg_clobber,
10607         setup_insn_reg_pressure_info): New.
10608         (sched_analyze_1): Update implicit_reg_pending_uses.
10609         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
10610         Use them to create dependencies.  Set insn reg uses and pressure
10611         info.  Process reg_pending_uses in one place.
10612         (free_deps): Free implicit sets.
10613         (remove_from_deps): Remove implicit sets if necessary.  Check
10614         implicit sets when clearing reg_last_in_use.
10615         (init_deps_global): Clear implicit_reg_pending_clobbers and
10616         implicit_reg_pending_uses.
10617
10618         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10619         ira_memory_move_cost, ira_class_hard_regs,
10620         ira_class_hard_regs_num, ira_no_alloc_regs,
10621         ira_available_class_regs, ira_reg_class_cover_size,
10622         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
10623         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
10624         ira_implicitly_set_insn_hard_regs): New prototypes.
10625
10626         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
10627         cost_elements_num): New variables.
10628         (allocno_costs, total_costs): Rename to costs and
10629         total_allocno_costs.
10630         (COSTS_OF_ALLOCNO): Rename to COSTS.
10631         (allocno_pref): Rename to pref.
10632         (allocno_pref_buffer): Rename to pref_buffer.
10633         (common_classes): Rename to regno_cover_class.
10634         (COST_INDEX): New.
10635         (record_reg_classes): Set allocno attributes only if allocno_p.
10636         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
10637         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
10638         and COSTS_OF_ALLOCNO.
10639         (print_costs): Rename to print_allocno_costs.
10640         (print_pseudo_costs): New.
10641         (process_bb_node_for_costs): Split into 2 functions with new
10642         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
10643         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
10644         new parameter dump_file.  Use cost_elements_num instead of
10645         ira_allocnos_num.  Make one iteration if preferred classes were
10646         already calculated for scheduler.  Make 2 versions of code
10647         depending on allocno_p.
10648         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
10649         regno_cover_class and COSTS instead of common_classes and
10650         COSTS_OF_ALLOCNO.
10651         (init_costs, finish_costs): New.
10652         (ira_costs): Set up allocno_p and cost_elements_num.  Call
10653         init_costs and finish_costs.
10654         (ira_set_pseudo_classes): New.
10655
10656         * rtl.h (allocate_reg_info): Remove.
10657         (resize_reg_info): Change return type.
10658         (reg_cover_class): New.
10659         (setup_reg_classes): Add new parameter.
10660
10661         * sched-int.h (struct deps_reg): New member implicit_sets.
10662         (sched_pressure_p, sched_regno_cover_class): New external definitions.
10663         (INCREASE_BITS): New macro.
10664         (struct reg_pressure_data, struct reg_use_data): New.
10665         (struct _haifa_insn_data): Remove reg_weight.  Add members
10666         reg_pressure, reg_use_list, reg_set_list, and
10667         reg_pressure_excess_cost_change.
10668         (struct deps): New member implicit_sets.
10669         (pressure_p): New variable.
10670         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
10671         (struct reg_pressure_data, struct reg_use_data): New.
10672         (INSN_REG_WEIGHT): Remove.
10673         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
10674         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
10675         (sched_init_region_reg_pressure_info,
10676         sched_setup_bb_reg_pressure_info): New prototypes.
10677
10678         * reginfo.c (struct reg_pref): New member coverclass.
10679         (reg_cover_class): New function.
10680         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
10681         (reg_info_size): New variable.
10682         (allocate_reg_info): Make static.  Setup reg_info_size.
10683         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
10684         (setup_reg_classes): Add a new parameter.  Setup cover class too.
10685
10686         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
10687         the dependencies.
10688
10689         * sched-rgn.c (deps_join): Set up implicit_sets.
10690         (schedule_region): Set up region and basic blocks pressure
10691         relative info.
10692
10693         * passes.c (init_optimization_passes): Move
10694         pass_subregs_of_mode_init before pass_sched.
10695
10696 2009-09-02  Martin Jambor  <mjambor@suse.cz>
10697
10698         * tree-sra.c (struct access): New field grp_hint.
10699         (dump_access): Dump grp_hint.
10700         (sort_and_splice_var_accesses): Set grp_hint if a group is read
10701         multiple times.
10702         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
10703         those which have been specifically read and somehow written to.
10704         (propagate_subacesses_accross_link): Set grp_hint of right child and
10705         also possibly of the left child.
10706
10707 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
10708
10709         * tree-object-size.c (addr_object_size): Always use object_size_type
10710         0 or 2 when determining the pointer pointed object size.
10711
10712 2009-09-02  Richard Guenther  <rguenther@suse.de>
10713
10714         Revert
10715         2009-08-31  Richard Guenther  <rguenther@suse.de>
10716
10717         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10718         to query if the memory regions for memmove overlap.
10719         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10720         asserts on pointers, instead deal with odd trees.
10721         (ptr_derefs_may_alias_p): Likewise.
10722         (refs_may_alias_p_1): Constructor bases also never alias.
10723
10724 2009-08-01  Christian Bruel  <christian.bruel@st.com>
10725
10726         Revert:
10727         2009-07-31  Christian Bruel  <christian.bruel@st.com>
10728         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
10729
10730 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
10731
10732         * doc/invoke.texi (-fvar-tracking-assignments): New.
10733         (-fvar-tracking-assignments-toggle): New.
10734         (-fdump-final-insns=file): Mark filename as optional.
10735         (--param min-nondebug-insn-uid): New.
10736         (-gdwarf-@{version}): Mention version 4.
10737         * opts.c (common_handle_option): Accept it.
10738         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
10739         * regrename.c (regrename_optimize): Drop last.  Don't count debug
10740         insns as uses.  Don't reject change because of debug insn.
10741         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
10742         from the chain starter, and check for inexact matches in DEBUG_INSNS.
10743         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
10744         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
10745         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
10746         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
10747         * doc/gimple.texi (is_gimple_debug): New.
10748         (gimple_debug_bind_p): New.
10749         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
10750         * doc/install.texi (bootstrap-debug): More details.
10751         (bootstrap-debug-big, bootstrap-debug-lean): Document.
10752         (bootstrap-debug-lib): More details.
10753         (bootstrap-debug-ckovw): Update.
10754         (bootstrap-time): New.
10755         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
10756         (insert_phi_nodes_for): Insert debug stmts.
10757         (rewrite_stmt): Take iterator.  Insert debug stmts.
10758         (rewrite_enter_block): Adjust.
10759         (maybe_replace_use_in_debug_stmt): New.
10760         (rewrite_update_stmt): Use it.
10761         (mark_use_interesting): Return early for debug stmts.
10762         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
10763         stmts before replacing stmt.
10764         (move_computations_stmt): Likewise.
10765         * ira-conflicts.c (add_copies): Skip debug insns.
10766         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
10767         (regstat_bb_compute_ri): Skip debug insns.
10768         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
10769         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
10770         check_loop_closed_ssa_stmt): Skip debug stmts.
10771         * tree-tailcall.c (find_tail_calls): Likewise.
10772         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
10773         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
10774         (build_var_debug_value_stat): Declare.
10775         (build_var_debug_value): Define.
10776         (target_for_debug_bind): Declare.
10777         * reload.c (find_equiv_reg): Skip debug insns.
10778         * rtlanal.c (reg_used_between_p): Skip debug insns.
10779         (side_effects_p): Likewise.
10780         (canonicalize_condition): Likewise.
10781         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
10782         insns never depend on debug insns.
10783         (create_ddg_dep_no_link): Likewise.
10784         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
10785         Don't add inter-loop dependencies for debug insns.
10786         (build_intra_loop_deps): Likewise.
10787         (create_ddg): Count debug insns.
10788         * ddg.h (struct ddg::num_debug): New.
10789         (num_backargs): Pair up with previous int field.
10790         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
10791         -fcompare-debug-second.
10792         * final.c (get_attr_length_1): Skip debug insns.
10793         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
10794         * gcc.c (invoke_as): Call compare-debug-dump-opt.
10795         (driver_self_specs): Map -fdump-final-insns to
10796         -fdump-final-insns=..
10797         (get_local_tick): New.
10798         (compare_debug_dump_opt_spec_function): Test for . argument and
10799         compute output name.  Compute temp output spec without flag name.
10800         Compute -frandom-seed.
10801         (OPT): Undef after use.
10802         * cfgloopanal.c (num_loop_insns): Skip debug insns.
10803         (average_num_loop_insns): Likewise.
10804         * params.h (MIN_NONDEBUG_INSN_UID): New.
10805         * gimple.def (GIMPLE_DEBUG): New.
10806         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
10807         * auto-inc-dec.c (merge_in_block): Skip debug insns.
10808         (merge_in_block): Fix whitespace.
10809         * toplev.c (flag_var_tracking): Update comment.
10810         (flag_var_tracking_assignments): New.
10811         (flag_var_tracking_assignments_toggle): New.
10812         (process_options): Don't open final insns dump file if we're not
10813         going to write to it.  Compute defaults for var_tracking.
10814         * df-scan.c (df_insn_rescan_debug_internal): New.
10815         (df_uses_record): Handle debug insns.
10816         * haifa-sched.c (ready): Initialize n_debug.
10817         (contributes_to_priority): Skip debug insns.
10818         (dep_list_size): New.
10819         (priority): Use it.
10820         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
10821         they're ready.  Disregard previous debug insns to make decisions.
10822         (queue_insn): Never queue debug insns.
10823         (ready_add, ready_remove_first, ready_remove): Count debug insns.
10824         (schedule_insn): Don't reject debug insns because of issue rate.
10825         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
10826         (queue_to_ready): Skip and discount debug insns.
10827         (choose_ready): Let debug insns through.
10828         (schedule_block): Check boundary debug insns.  Discount debug
10829         insns, schedule them early.  Adjust whitespace.
10830         (set_priorities): Check for boundary debug insns.
10831         (add_jump_dependencies): Use dep_list_size.
10832         (prev_non_location_insn): New.
10833         (check_cfg): Use it.
10834         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
10835         stmts.
10836         (remove_unused_ivs): Reset debug stmts.
10837         * modulo-sched.c (const_iteration_count): Skip debug insns.
10838         (res_MII): Discount debug insns.
10839         (loop_single_full_bb_p): Skip debug insns.
10840         (sms_schedule): Likewise.
10841         (sms_schedule_by_order): Likewise.
10842         (ps_has_conflicts): Likewise.
10843         * caller-save.c (refmarker_fn): New.
10844         (save_call_clobbered_regs): Replace regs with saved mem in
10845         debug insns.
10846         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
10847         Call refmarker_fn mark for hardregnos.
10848         (mark_reg_as_referenced): New.
10849         (replace_reg_with_saved_mem): New.
10850         * ipa-pure-const.c (check_stmt): Skip debug stmts.
10851         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
10852         searching back.
10853         (cse_extended_basic_block): Skip debug insns.
10854         (count_reg_usage): Likewise.
10855         (is_dead_reg): New, split out of...
10856         (set_live_p): ... here.
10857         (insn_live_p): Use it for debug insns.
10858         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
10859         (execute_optimize_stdarg): Likewise.
10860         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
10861         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
10862         changes in debug stmts as changes.
10863         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
10864         (moveup_expr): Don't move across debug insns.  Don't move
10865         debug insn if it would create a bookkeeping block.
10866         (moveup_expr_cached): Don't use cache for debug insns that
10867         are heads of blocks.
10868         (compute_av_set_inside_bb): Skip debug insns.
10869         (sel_rank_for_schedule): Schedule debug insns first.  Remove
10870         dead code.
10871         (block_valid_for_bookkeeping_p); Support lax searches.
10872         (create_block_for_bookkeeping): Adjust block numbers when
10873         encountering debug-only blocks.
10874         (find_place_for_bookkeeping): Deal with debug-only blocks.
10875         (generate_bookkeeping_insn): Accept no place to insert.
10876         (remove_temp_moveop_nops): New argument full_tidying.
10877         (prepare_place_to_insert): Deal with debug insns.
10878         (advance_state_on_fence): Debug insns don't start cycles.
10879         (update_boundaries): Take fence as argument.  Deal with
10880         debug insns.
10881         (schedule_expr_on_boundary): No full_tidying on debug insns.
10882         (fill_insns): Deal with debug insns.
10883         (track_scheduled_insns_and_blocks): Don't count debug insns.
10884         (need_nop_to_preserve_insn_bb): New, split out of...
10885         (remove_insn_from_stream): ... this.
10886         (fur_orig_expr_not_found): Skip debug insns.
10887         * rtl.def (VALUE): Move up.
10888         (DEBUG_INSN): New.
10889         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
10890         (nearest_common_dominator_of_uses): Take debug_stmts argument.
10891         Set it if debug stmts are found.
10892         (statement_sink_location): Skip debug stmts.  Propagate
10893         moving defs into debug stmts.
10894         * ifcvt.c (first_active_insn): Skip debug insns.
10895         (last_active_insns): Likewise.
10896         (cond_exec_process_insns): Likewise.
10897         (noce_process_if_block): Likewise.
10898         (check_cond_move_block): Likewise.
10899         (cond_move_convert_if_block): Likewise.
10900         (block_jumps_and_fallthru_p): Likewise.
10901         (dead_or_predicable): Likewise.
10902         * dwarf2out.c (debug_str_hash_forced): New.
10903         (find_AT_string): Add comment.
10904         (gen_label_for_indirect_string): New.
10905         (get_debug_string_label): New.
10906         (AT_string_form): Use it.
10907         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
10908         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
10909         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
10910         several operations that cannot be represented with DWARF opcodes.
10911         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
10912         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
10913         (dwarf2out_var_location): Take during-call mark into account.
10914         (output_indirect_string): Update comment.  Output if there are
10915         label and references.
10916         (prune_indirect_string): New.
10917         (prune_unused_types): Call it if debug_str_hash_forced.
10918         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
10919         (dw_long_long_const): Remove.
10920         (struct dw_val_struct): Change val_long_long type to rtx.
10921         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
10922         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
10923         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
10924         component instead of HOST_BITS_PER_LONG.
10925         (output_loc_operands): Likewise.  For const8* assert
10926         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
10927         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
10928         rather than HOST_BITS_PER_LONG is >= 64.
10929         (add_AT_long_long): Remove val_hi and val_lo arguments, add
10930         val_const_double.
10931         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
10932         HOST_BITS_PER_LONG for dw_val_class_long_long.
10933         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
10934         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
10935         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
10936         DW_OP_stack_value.
10937         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
10938         Handle DW_OP_implicit_value.
10939         (extract_int): Move prototype earlier.
10940         (mem_loc_descriptor): For SUBREG punt if inner
10941         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
10942         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
10943         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
10944         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
10945         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
10946         instead of Pmode size.
10947         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
10948         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
10949         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
10950         (concat_loc_descriptor, concatn_loc_descriptor,
10951         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
10952         (add_location_or_const_value_attribute): Likewise.  For single
10953         location loc_lists attempt to use add_const_value_attribute
10954         for constant decls.  Add DW_AT_const_value even if
10955         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
10956         in its expression.
10957         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
10958         (control_flow_insn_p): Likewise.
10959         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
10960         (separate_decls_in_region_debug_bind): New.
10961         (separate_decls_in_region): Process debug bind stmts afterwards.
10962         * recog.c (verify_changes): Handle debug insns.
10963         (extract_insn): Likewise.
10964         (peephole2_optimize): Skip debug insns.
10965         * dse.c (scan_insn): Skip debug insns.
10966         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
10967         Pass it on.
10968         (setup_id_for_insn): Handle debug insns.
10969         (maybe_tidy_empty_bb): Adjust whitespace.
10970         (tidy_control_flow): Skip debug insns.
10971         (sel_remove_insn): Adjust for debug insns.
10972         (sel_estimate_number_of_insns): Skip debug insns.
10973         (create_insn_rtx_from_pattern): Handle debug insns.
10974         (create_copy_of_insn_rtx): Likewise.
10975         * sel-sched-.h (sel_bb_end): Declare.
10976         (sel_bb_empty_or_nop_p): New.
10977         (get_all_loop_exits): Use it.
10978         (_eligible_successor_edge_p): Likewise.
10979         (return_nop_to_pool): Adjust.
10980         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
10981         * ira-lives.c (process_bb_node_lives): Skip debug insns.
10982         * gimple-pretty-print.c (dump_gimple_debug): New.
10983         (dump_gimple_stmt): Use it.
10984         (dump_bb_header): Skip gimple debug stmts.
10985         * regmove.c (optimize_reg_copy_1): Discount debug insns.
10986         (fixup_match_2): Likewise.
10987         (regmove_backward_pass): Likewise.  Simplify combined
10988         replacement.  Handle debug insns.
10989         * function.c (instantiate_virtual_regs): Handle debug insns.
10990         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
10991         * print-rtl.h: Include cselib.h.
10992         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
10993         * df.h (df_inns_rescan_debug_internal): Declare.
10994         * gcse.c (alloc_hash_table): Estimate n_insns.
10995         (cprop_insn): Don't regard debug insns as changes.
10996         (bypass_conditional_jumps): Skip debug insns.
10997         (one_pre_gcse_pass): Adjust.
10998         (one_code_hoisting_pass): Likewise.
10999         (compute_ld_motion_mems): Skip debug insns.
11000         (one_cprop_pass): Adjust.
11001         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
11002         (if_convertible_stmt_p): Handle debug stmts.
11003         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
11004         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
11005         * ira-build.c (create_bb_allocnos): Skip debug insns.
11006         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
11007         (has_single_use): Likewise.
11008         (single_imm_use): Likewise.
11009         (num_imm_uses): Likewise.
11010         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
11011         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
11012         (create_outofssa_var_map): Likewise.
11013         * lower-subreg.c (adjust_decomposed_uses): New.
11014         (resolve_debug): New.
11015         (decompose_multiword_subregs): Use it.
11016         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
11017         * emit-rtl.c: Include params.h.
11018         (cur_debug_insn_uid): Define.
11019         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
11020         (copy_rtx_if_shared_1): Handle debug insns.
11021         (reset_used_flags): Likewise.
11022         (set_used_flags): LIkewise.
11023         (get_max_insn_count): New.
11024         (next_nondebug_insn): New.
11025         (prev_nondebug_insn): New.
11026         (make_debug_insn_raw): New.
11027         (emit_insn_before_noloc): Handle debug insns.
11028         (emit_jump_insn_before_noloc): Likewise.
11029         (emit_call_insn_before_noloc): Likewise.
11030         (emit_debug_insn_before_noloc): New.
11031         (emit_insn_after_noloc): Handle debug insns.
11032         (emit_jump_insn_after_noloc): Likewise.
11033         (emit_call_insn_after_noloc): Likewise.
11034         (emit_debug_insn_after_noloc): Likewise.
11035         (emit_insn_after): Take loc from earlier non-debug insn.
11036         (emit_jump_insn_after): Likewise.
11037         (emit_call_insn_after): Likewise.
11038         (emit_debug_insn_after_setloc): New.
11039         (emit_debug_insn_after): New.
11040         (emit_insn_before): Take loc from later non-debug insn.
11041         (emit_jump_insn_before): Likewise.
11042         (emit_call_insn_before): Likewise.
11043         (emit_debug_insn_before_setloc): New.
11044         (emit_debug_insn_before): New.
11045         (emit_insn): Handle debug insns.
11046         (emit_debug_insn): New.
11047         (emit_jump_insn): Handle debug insns.
11048         (emit_call_insn): Likewise.
11049         (emit): Likewise.
11050         (init_emit): Take min-nondebug-insn-uid into account.
11051         Initialize cur_debug_insn_uid.
11052         (emit_copy_of_insn_after): Handle debug insns.
11053         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
11054         location of single rhs in place.
11055         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
11056         (floor_sdiv_adjust): New.
11057         (cell_sdiv_adjust): New.
11058         (cell_udiv_adjust): New.
11059         (round_sdiv_adjust): New.
11060         (round_udiv_adjust): New.
11061         (wrap_constant): Moved from cselib.
11062         (unwrap_constant): New.
11063         (expand_debug_expr): New.
11064         (expand_debug_locations): New.
11065         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
11066         debug bind stmts.
11067         (gimple_expand_cfg): Expand debug locations.
11068         * cselib.c: Include tree-pass.h.
11069         (struct expand_value_data): New.
11070         (cselib_record_sets_hook): New.
11071         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
11072         (cselib_clear_table): Move, and implemnet in terms of...
11073         (cselib_reset_table_with_next_value): ... this.
11074         (cselib_get_next_unknown_value): New.
11075         (discard_useless_locs): Don't discard preserved values.
11076         (cselib_preserve_value): New.
11077         (cselib_preserved_value_p): New.
11078         (cselib_preserve_definitely): New.
11079         (cselib_clear_preserve): New.
11080         (cselib_preserve_only_values): New.
11081         (new_cselib_val): Take rtx argument.  Dump it in details.
11082         (cselib_lookup_mem): Adjust.
11083         (expand_loc): Take regs_active in struct.  Adjust.  Silence
11084         dumps unless details are requested.
11085         (cselib_expand_value_rtx_cb): New.
11086         (cselib_expand_value_rtx): Rename and reimplment in terms of...
11087         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
11088         without details.  Copy more subregs.  Try to resolve values
11089         using a callback.  Wrap constants.
11090         (cselib_subst_to_values): Adjust.
11091         (cselib_log_lookup): New.
11092         (cselib_lookup): Call it.
11093         (cselib_invalidate_regno): Don't count preserved values as useless.
11094         (cselib_invalidate_mem): Likewise.
11095         (cselib_record_set): Likewise.
11096         (struct set): Renamed to cselib_set, moved to cselib.h.
11097         (cselib_record_sets): Adjust.  Call hook.
11098         (cselib_process_insn): Reset table when it would be cleared.
11099         (dump_cselib_val): New.
11100         (dump_cselib_table): New.
11101         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
11102         (remove_forwarder_block): Support moving debug stmts.
11103         * cselib.h (cselib_record_sets_hook): Declare.
11104         (cselib_expand_callback): New type.
11105         (cselib_expand_value_rtx_cb): Declare.
11106         (cselib_reset_table_with_next_value): Declare.
11107         (cselib_get_next_unknown_value): Declare.
11108         (cselib_preserve_value): Declare.
11109         (cselib_preserved_value_p): Declare.
11110         (cselib_preserve_only_values): Declare.
11111         (dump_cselib_table): Declare.
11112         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
11113         (try_crossjump_to_edge): Likewise.
11114         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
11115         dominated blocks when debug stmts are present.
11116         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
11117         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
11118         (set_var_live_on_entry): Likewise.
11119         * loop-invariant.c (find_invariants_bb): Skip debug insns.
11120         * cfglayout.c (curr_location, last_location): Make static.
11121         (set_curr_insn_source_location): Don't avoid bouncing.
11122         (get_curr_insn_source_location): New.
11123         (get_curr_insn_block): New.
11124         (duplicate_insn_chain): Handle debug insns.
11125         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
11126         into debug stmts.
11127         * common.opt (fcompare-debug): Move to sort order.
11128         (fdump-unnumbered-links): Likewise.
11129         (fvar-tracking-assignments): New.
11130         (fvar-tracking-assignments-toggle): New.
11131         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
11132         because of debug stmts.
11133         (mark_stmt_if_obviously_necessary): Mark debug stmts.
11134         (eliminate_unnecessary_stmts): Walk dominated blocks before
11135         dominators.
11136         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
11137         * ira.c (memref_used_between_p): Skip debug insns.
11138         (update_equiv_regs): Likewise.
11139         * sched-deps.c (sd_lists_size): Accept empty list.
11140         (sd_init_insn): Mark debug insns.
11141         (sd_finish_insn): Unmark them.
11142         (sd_add_dep): Reject non-debug deps on debug insns.
11143         (fixup_sched_groups): Give debug insns group treatment.
11144         Skip debug insns.
11145         (sched_analyze_reg): Don't mark debug insns for sched before call.
11146         (sched_analyze_2): Handle debug insns.
11147         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
11148         insns.
11149         (deps_analyze_insn): Handle debug insns.
11150         (deps_start_bb): Skip debug insns.
11151         (init_deps): Initialize last_debug_insn.
11152         * tree-ssa.c (target_for_debug_bind): New.
11153         (find_released_ssa_name): New.
11154         (propagate_var_def_into_debug_stmts): New.
11155         (propagate_defs_into_debug_stmts): New.
11156         (verify_ssa): Skip debug bind stmts without values.
11157         (warn_uninialized_vars): Skip debug stmts.
11158         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
11159         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
11160         (rtx_equal_p): Likewise.
11161         * ira-costs.c (scan_one_insn): Skip debug insns.
11162         (process_bb_node_for_hard_reg_moves): Likewise.
11163         * rtl.h (DEBUG_INSN_P): New.
11164         (NONDEBUG_INSN_P): New.
11165         (MAY_HAVE_DEBUG_INSNS): New.
11166         (INSN_P): Accept debug insns.
11167         (RTX_FRAME_RELATED_P): Likewise.
11168         (INSN_DELETED_P): Likewise
11169         (PAT_VAR_LOCATION_DECL): New.
11170         (PAT_VAR_LOCATION_LOC): New.
11171         (PAT_VAR_OCATION_STATUS): New.
11172         (NOTE_VAR_LOCATION_DECL): Reimplement.
11173         (NOTE_VAR_LOCATION_LOC): Likewise.
11174         (NOTE_VAR_LOCATION_STATUS): Likewise.
11175         (INSN_VAR_LOCATION): New.
11176         (INSN_VAR_LOCATION_DECL): New.
11177         (INSN_VAR_LOCATION_LOC): New.
11178         (INSN_VAR_LOCATION_STATUS): New.
11179         (gen_rtx_UNKNOWN_VAR_LOC): New.
11180         (VAR_LOC_UNKNOWN_P): New.
11181         (NOTE_DURING_CALL_P): New.
11182         (SCHED_GROUP_P): Accept debug insns.
11183         (emit_debug_insn_before): Declare.
11184         (emit_debug_insn_before_noloc): Declare.
11185         (emit_debug_insn_beore_setloc): Declare.
11186         (emit_debug_insn_after): Declare.
11187         (emit_debug_insn_after_noloc): Declare.
11188         (emit_debug_insn_after_setloc): Declare.
11189         (emit_debug_insn): Declare.
11190         (make_debug_insn_raw): Declare.
11191         (prev_nondebug_insn): Declare.
11192         (next_nondebug_insn): Declare.
11193         (delegitimize_mem_from_attrs): Declare.
11194         (get_max_insn_count): Declare.
11195         (wrap_constant): Declare.
11196         (unwrap_constant): Declare.
11197         (get_curr_insn_source_location): Declare.
11198         (get_curr_insn_block): Declare.
11199         * tree-inline.c (insert_debug_decl_map): New.
11200         (processing_debug_stmt): New.
11201         (remap_decl): Don't create new mappings in debug stmts.
11202         (remap_gimple_op_r): Don't add references in debug stmts.
11203         (copy_tree_body_r): Likewise.
11204         (remap_gimple_stmt): Handle debug bind stmts.
11205         (copy_bb): Skip debug stmts.
11206         (copy_edges_for_bb): Likewise.
11207         (copy_debug_stmt): New.
11208         (copy_debug_stmts): New.
11209         (copy_body): Copy debug stmts at the end.
11210         (insert_init_debug_bind): New.
11211         (insert_init_stmt): Take id.  Skip and emit debug stmts.
11212         (setup_one_parameter): Remap variable earlier, register debug mapping.
11213         (estimate_num_insns): Skip debug stmts.
11214         (expand_call_inline): Preserve debug_map.
11215         (optimize_inline_calls): Check for no debug_stmts left-overs.
11216         (unsave_expr_now): Preserve debug_map.
11217         (copy_gimple_seq_and_replace_locals): Likewise.
11218         (tree_function_versioning): Check for no debug_stmts left-overs.
11219         Init and destroy debug_map as needed.  Split edges unconditionally.
11220         (build_duplicate_type): Init and destroy debug_map as needed.
11221         * tree-inline.h: Include gimple.h instead of pointer-set.h.
11222         (struct copy_body_data): Add debug_stmts and debug_map.
11223         * sched-int.h (struct ready_list): Add n_debug.
11224         (struct deps): Add last_debug_insn.
11225         (DEBUG_INSN_SCHED_P): New.
11226         (BOUNDARY_DEBUG_INSN_P): New.
11227         (SCHEDULE_DEBUG_INSN_P): New.
11228         (sd_iterator_cond): Accept empty list.
11229         * combine.c (create_log_links): Skip debug insns.
11230         (combine_instructions): Likewise.
11231         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
11232         return value is always unshared.
11233         (struct rtx_subst_pair): New.
11234         (auto_adjust_pair): New.
11235         (propagate_for_debug_subst): New.
11236         (propagate_for_debug): New.
11237         (try_combine): Skip debug insns.  Propagate removed defs into
11238         debug insns.
11239         (next_nonnote_nondebug_insn): New.
11240         (distribute_notes): Use it.  Skip debug insns.
11241         (distribute_links): Skip debug insns.
11242         * tree-outof-ssa.c (set_location_for_edge): Likewise.
11243         * resource.c (mark_target_live_regs): Likewise.
11244         * var-tracking.c: Include cselib.h and target.h.
11245         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
11246         MO_VAL_SET.
11247         (micro_operation_type_name): New.
11248         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
11249         (struct micro_operation_def): Update comments.
11250         (decl_or_value): New type.  Use instead of decls.
11251         (struct emit_note_data_def): Add vars.
11252         (struct attrs_def): Use decl_or_value.
11253         (struct variable_tracking_info_def): Add permp, flooded.
11254         (struct location_chain_def): Update comment.
11255         (struct variable_part_def): Use decl_or_value.
11256         (struct variable_def): Make var_part a variable length array.
11257         (valvar_pool): New.
11258         (scratch_regs): New.
11259         (cselib_hook_called): New.
11260         (dv_is_decl_p): New.
11261         (dv_is_value_p): New.
11262         (dv_as_decl): New.
11263         (dv_as_value): New.
11264         (dv_as_opaque): New.
11265         (dv_onepart_p): New.
11266         (dv_pool): New.
11267         (IS_DECL_CODE): New.
11268         (check_value_is_not_decl): New.
11269         (dv_from_decl): New.
11270         (dv_from_value): New.
11271         (dv_htab_hash): New.
11272         (variable_htab_hash): Use it.
11273         (variable_htab_eq): Support values.
11274         (variable_htab_free): Free from the right pool.
11275         (attrs_list_member, attrs_list_insert): Use decl_or_value.
11276         (attrs_list_union): Adjust.
11277         (attrs_list_mpdv_union): New.
11278         (tie_break_pointers): New.
11279         (canon_value_cmp): New.
11280         (unshare_variable): Return possibly-modified slot.
11281         (vars_copy_1): Adjust.
11282         (var_reg_decl_set): Adjust.  Split out of...
11283         (var_reg_set): ... this.
11284         (get_init_value): Adjust.
11285         (var_reg_delete_and_set): Adjust.
11286         (var_reg_delete): Adjust.
11287         (var_regno_delete): Adjust.
11288         (var_mem_decl_set): Split out of...
11289         (var_mem_set): ... this.
11290         (var_mem_delete_and_set): Adjust.
11291         (var_mem_delete): Adjust.
11292         (val_store): New.
11293         (val_reset): New.
11294         (val_resolve): New.
11295         (variable_union): Adjust.  Speed up merge of 1-part vars.
11296         (variable_canonicalize): Use unshared slot.
11297         (VALUED_RECURSED_INTO): New.
11298         (find_loc_in_1pdv): New.
11299         (struct dfset_merge): New.
11300         (insert_into_intersection): New.
11301         (intersect_loc_chains): New.
11302         (loc_cmp): New.
11303         (canonicalize_loc_order_check): New.
11304         (canonicalize_values_mark): New.
11305         (canonicalize_values_star): New.
11306         (variable_merge_over_cur): New.
11307         (variable_merge_over_src): New.
11308         (dataflow_set_merge): New.
11309         (dataflow_set_equiv_regs): New.
11310         (remove_duplicate_values): New.
11311         (struct dfset_post_merge): New.
11312         (variable_post_merge_new_vals): New.
11313         (variable_post_merge_perm_vals): New.
11314         (dataflow_post_merge_adjust): New.
11315         (find_mem_expr_in_1pdv): New.
11316         (dataflow_set_preserve_mem_locs): New.
11317         (dataflow_set_remove_mem_locs): New.
11318         (dataflow_set_clear_at_call): New.
11319         (onepart_variable_different_p): New.
11320         (variable_different_p): Use it.
11321         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
11322         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
11323         if not needed.
11324         (track_loc_p): Pass it true.
11325         (struct count_use_info): New.
11326         (find_use_val): New.
11327         (replace_expr_with_values): New.
11328         (log_op_type): New.
11329         (use_type): New, partially split out of...
11330         (count_uses): ... this.  Count new micro-ops.
11331         (count_uses_1): Adjust.
11332         (count_stores): Adjust.
11333         (count_with_sets): New.
11334         (VAL_NEEDS_RESOLUTION): New.
11335         (VAL_HOLDS_TRACK_EXPR): New.
11336         (VAL_EXPR_IS_COPIED): New.
11337         (VAL_EXPR_IS_CLOBBERED): New.
11338         (add_uses): Adjust.  Generate new micro-ops.
11339         (add_uses_1): Adjust.
11340         (add_stores): Generate new micro-ops.
11341         (add_with_sets): New.
11342         (find_src_status): Adjust.
11343         (find_src_set_src): Adjust.
11344         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
11345         Handle new micro-ops.  Canonicalize value equivalances.
11346         (vt_find_locations): Compute total size of hash tables for
11347         dumping.  Perform merge for var-tracking-assignments.  Don't
11348         disregard single-block loops.
11349         (dump_attrs_list): Handle decl_or_value.
11350         (dump_variable): Take variable.  Deal with decl_or_value.
11351         (dump_variable_slot): New.
11352         (dump_vars): Use it.
11353         (dump_dataflow_sets): Adjust.
11354         (set_slot_part): New, extended to support one-part variables
11355         after splitting out of...
11356         (set_variable_part): ... this.
11357         (clobber_slot_part): New, split out of...
11358         (clobber_variable_part): ... this.
11359         (delete_slot_part): New, split out of...
11360         (delete_variable_part): .... this.
11361         (check_wrap_constant): New.
11362         (vt_expand_loc_callback): New.
11363         (vt_expand_loc): New.
11364         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
11365         EMIT_NOTE_AFTER_CALL_INSN.
11366         (emit_notes_for_differences_1): Adjust.  Handle values.
11367         (emit_notes_for_differences_2): Likewise.
11368         (emit_notes_for_differences): Adjust.
11369         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
11370         Adjust.  Handle new micro-ops.
11371         (vt_add_function_parameters): Adjust.  Create and bind values.
11372         (vt_initialize): Adjust.  Initialize scratch_regs and
11373         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
11374         operations.  Move some code to count_with_sets and add_with_sets.
11375         (delete_debug_insns): New.
11376         (vt_debug_insns_local): New.
11377         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
11378         cselib.
11379         (var_tracking_main): If var-tracking-assignments is enabled
11380         but var-tracking isn't, delete debug insns and leave.  Likewise
11381         if we exceed limits or fail the stack adjustments tests, and
11382         after all var-tracking processing.
11383         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
11384         (dataflow_set): Add traversed_vars.
11385         (value_chain, const_value_chain): New typedefs.
11386         (value_chain_pool, value_chains): New variables.
11387         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
11388         add_value_chains, add_cselib_value_chains, remove_value_chain,
11389         remove_value_chains, remove_cselib_value_chains): New functions.
11390         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
11391         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
11392         static inlines.
11393         (shared_hash_find_slot_unshare, shared_hash_find_slot,
11394         shared_hash_find_slot_noinsert, shared_hash_find): Update.
11395         (dst_can_be_shared): New variable.
11396         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
11397         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
11398         different from set->vars, look up slot again instead of using the
11399         passed in slot.
11400         (dataflow_set_init): Initialize traversed_vars.
11401         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
11402         lookup if set->vars is shared.  Don't keep slot cleared before
11403         calling unshare_variable.  Unshare set->vars if needed.  Adjust
11404         unshare_variable callers.  Clear dst_can_be_shared if needed.
11405         Even ->refcount == 1 vars must be unshared if set->vars is shared
11406         and var needs to be modified.
11407         (dataflow_set_union): Set traversed_vars during canonicalization.
11408         (VALUE_CHANGED, DECL_CHANGED): Define.
11409         (set_dv_changed, dv_changed_p): New static inlines.
11410         (track_expr_p): Clear DECL_CHANGED.
11411         (dump_dataflow_sets): Set it.
11412         (variable_was_changed): Call set_dv_changed.
11413         (emit_note_insn_var_location): Likewise.
11414         (changed_variables_stack): New variable.
11415         (check_changed_vars_1, check_changed_vars_2): New functions.
11416         (emit_notes_for_changes): Do nothing if changed_variables is
11417         empty.  Traverse changed_variables with check_changed_vars_1,
11418         call check_changed_vars_2 on each changed_variables_stack entry.
11419         (emit_notes_in_bb): Add SET argument.  Just clear it at the
11420         beginning, use it instead of local &set, don't destroy it at the end.
11421         (vt_emit_notes): Call dataflow_set_clear early on all
11422         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
11423         computed set, dataflow_set_clear also VTI(bb)->in when we are
11424         done with the basic block.  Initialize changed_variables_stack,
11425         free it afterwards.  If ENABLE_CHECKING verify that after noting
11426         differences to an empty set value_chains hash table is empty.
11427         (vt_initialize): Initialize value_chains and value_chain_pool.
11428         (vt_finalize): Delete value_chains htab, free value_chain_pool.
11429         (variable_tracking_main): Call dump_dataflow_sets before calling
11430         vt_emit_notes, not after it.
11431         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
11432         (propagate_var_def_into_debug_stmts): Declare.
11433         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
11434         (df_set_note): Reject debug insns.
11435         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
11436         add notes to debug insns.
11437         (df_note_bb_compute): Adjust.  Likewise.
11438         (df_simulate_uses): Skip debug insns.
11439         (df_simulate_initialize_backwards): Likewise.
11440         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
11441         (subst_stack_regs_pat): Reject debug insns.
11442         (convert_regs_1): Handle debug insns.
11443         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
11444         (print-rtl.o): Depend on cselib.h.
11445         (cselib.o): Depend on TREE_PASS_H.
11446         (var-tracking.o): Depend on cselib.h and TARGET_H.
11447         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
11448         (init_ready_list): Skip boundary debug insns.
11449         (add_branch_dependences): Skip debug insns.
11450         (free_block_dependencies): Check for blocks with only debug insns.
11451         (compute_priorities): Likewise.
11452         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
11453         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
11454         all callers.
11455         (gimple_build_debug_bind_stat): New.
11456         (empty_body_p): Skip debug stmts.
11457         (gimple_has_side_effects): Likewise.
11458         (gimple_rhs_has_side_effects): Likewise.
11459         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
11460         (gimple_build_debug_bind_stat): Declare.
11461         (gimple_build_debug_bind): Define.
11462         (is_gimple_debug): New.
11463         (gimple_debug_bind_p): New.
11464         (gimple_debug_bind_get_var): New.
11465         (gimple_debug_bind_get_value): New.
11466         (gimple_debug_bind_get_value_ptr): New.
11467         (gimple_debug_bind_set_var): New.
11468         (gimple_debug_bind_set_value): New.
11469         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
11470         (gimple_debug_bind_reset_value): New.
11471         (gimple_debug_bind_has_value_p): New.
11472         (gsi_next_nondebug): New.
11473         (gsi_prev_nondebug): New.
11474         (gsi_start_nondebug_bb): New.
11475         (gsi_last_nondebug_bb): New.
11476         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
11477         (print_insn): Handle DEBUG_INSN.
11478         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
11479         of first insn prevail.
11480         (first_stmt): Skip debug stmts.
11481         (first_non_label_stmt): Likewise.
11482         (last_stmt): Likewise.
11483         (has_zero_uses_1): New.
11484         (single_imm_use_1): New.
11485         (verify_gimple_debug): New.
11486         (verify_types_in_gimple_stmt): Handle debug stmts.
11487         (verify_stmt): Likewise.
11488         (debug_loop_num): Skip debug stmts.
11489         (remove_edge_and_dominated_blocks): Remove dominators last.
11490         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
11491         (linearize_expr): Likewise.
11492         * config/i386/i386.c (ix86_delegitimize_address): Call
11493         default implementation.
11494         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
11495         (group_barrier_needed): Skip debug insns.
11496         (emit_insn_group_barriers): Likewise.
11497         (emit_all_insn_group_barriers): Likewise.
11498         (ia64_variable_issue): Handle debug insns.
11499         (ia64_dfa_new_cycle): Likewise.
11500         (final_emit_insn_group_barriers): Skip debug insns.
11501         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
11502         def cfa without frame.
11503         (process_set): Likewise.
11504         (process_for_unwind_directive): Pass frame on.
11505         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
11506         (rs6000_delegitimize_address): New.
11507         (rs6000_debug_adjust_cost): Handle debug insns.
11508         (is_microcoded_insn): Likewise.
11509         (is_cracked_insn): Likewise.
11510         (is_nonpipeline_insn): Likewise.
11511         (insn_must_be_first_in_group): Likewise.
11512         (insn_must_be_last_in_group): Likewise.
11513         (force_new_group): Likewise.
11514         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
11515         contains only debug insns.
11516         (rtl_merge_blocks): Skip debug insns.
11517         (purge_dead_edges): Likewise.
11518         (rtl_block_ends_with_call_p): Skip debug insns.
11519         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
11520         (mark_reg_dependencies): Skip debug insns.
11521         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
11522         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
11523         * tree-ssa-threadedge.c
11524         (record_temporary_equivalences_from_stmts): Skip debug stmts.
11525         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
11526         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
11527         (copyprop_hardreg_forward_1): Handle debug insns.
11528         * reload1.c (reload): Skip debug insns.  Replace unassigned
11529         pseudos in debug insns with their equivalences.
11530         (eliminate_regs_in_insn): Skip debug insns.
11531         (emit_input_reload_insns): Skip debug insns at first, adjust
11532         them later.
11533         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
11534         (get_indirect_ref_operands): Pass opf_no_vops on.
11535         (get_expr_operands): Likewise.  Skip debug stmts.
11536         (parse_ssa_operands): Scan debug insns with opf_no_vops.
11537
11538 2009-09-01  Richard Henderson  <rth@redhat.com>
11539
11540         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
11541         stmt_ends_pp_p statements at least once.
11542         * tree-vrp.c (vrp_initialize): Likewise.
11543         (vrp_visit_stmt): Be prepared for non-interesting stmts.
11544
11545 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
11546
11547         PR bootstrap/41205
11548         Fix AIX bootstrap after PR debug/30161
11549         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
11550         that is a GNU extension.
11551         (tmpl_value_parm_die_table): Move the definition of this global
11552         outside #ifdef DWARF2_DEBUGGING_INFO region.
11553
11554 2009-09-01  Richard Guenther  <rguenther@suse.de>
11555
11556         * tree.c (tree_expr_size): New function.
11557         * tree.h (tree_expr_size): Declare.
11558         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
11559         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
11560         * langhooks.c (lhd_expr_size): Remove.
11561         * langhooks.h (struct lang_hooks): Remove expr_size.
11562         * explow.c (expr_size): Use tree_expr_size.
11563         (int_expr_size): Likewise.
11564         * langhooks-def.h (lhd_expr_size): Remove.
11565         (LANG_HOOKS_EXPR_SIZE): Likewise.
11566         (LANG_HOOKS_INITIALIZER): Adjust.
11567
11568 2009-09-01  Richard Guenther  <rguenther@suse.de>
11569
11570         * tree-flow.h (mark_addressable): Move declaration ...
11571         * tree.h (mark_addressable): ... here.
11572         * stmt.c (expand_asm_operands): Use mark_addressable, not
11573         lang_hooks.mark_addressable.
11574         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
11575         LANG_HOOKS_MARK_ADDRESSABLE.
11576         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
11577         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
11578
11579 2009-08-31  Chris Demetriou  <cgd@google.com>
11580
11581         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
11582         vectorize if not TARGET_SSE2.
11583
11584 2009-08-31  DJ Delorie  <dj@redhat.com>
11585
11586         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
11587         registers if no coprocessor is enabled.
11588
11589 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
11590
11591         PR debug/30161
11592         * cgraph.h (cgraph_get_node): Declare ...
11593         * cgraph.c (cgraph_get_node): ... new function.
11594         * dwarf2out.c (gen_generic_params_dies,
11595         generic_parameter_die, tree_add_const_value_attribute_for_decl,
11596         make_ith_pack_parameter_name,
11597         append_entry_to_tmpl_value_parm_die_table,
11598         gen_remaining_tmpl_value_param_die_attribute): New functions.
11599         (gen_subprogram_die): Generate debug info for template parameters
11600         if debug info level is higher than DINFO_LEVEL_TERSE.
11601         Use tree_add_const_value_attribute_for_decl instead of
11602         tree_add_const_value_attribute.
11603         (gen_const_die): Use tree_add_const_value_attribute_for_decl
11604         instead of tree_add_const_value_attribute.
11605         (gen_struct_or_union_type_die): Generate debug
11606         info for template parameters if debug info level is higher than
11607         DINFO_LEVEL_TERSE.
11608         (tree_add_const_value_attribute): Handle integral and pointer
11609         constants. Update comment.
11610         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
11611         (dwarf_attr_name): Support DW_AT_GNU_template_name.
11612         (reference_to_unused): Fix thinko. Remove redundant predicates from
11613         tests.
11614         (tree_add_const_value_attribute): Make this work for constant
11615         expressions only.
11616         tree_add_const_value_attribute_for_decl is to be used for variable
11617         DECLs now.
11618         (add_location_or_const_value_attribute): Use
11619         tree_add_const_value_attribute_for_decl now.
11620         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
11621         DW_TAG_template_value_param DIEs after function DIEs have been
11622         emitted.
11623         * langhooks.h (lang_hooks_for_types): Add
11624         get_argument_pack_elems.
11625         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
11626         (lang_hooks): Added get_innermost_generic_parms,
11627         get_innermost_generic_args.
11628         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
11629         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
11630         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
11631         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
11632
11633 2009-08-31  DJ Delorie  <dj@redhat.com>
11634
11635         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
11636         it once we start generating the prologue or epilogue.
11637         (mep_call_saves_register): If the frame is locked, re-use
11638         cached values.
11639         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
11640         (mep_expand_prologue): Call it.
11641         (mep_expand_epilogue): Likewise.
11642         (mep_start_function): Use the same logic as mep_expand_prologue.
11643         (mep_pass_by_reference): Make logic more readable.
11644         (mep_return_in_memory): Zero-sized objects are passed in memory.
11645         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
11646
11647 2009-08-31  Richard Guenther  <rguenther@suse.de>
11648
11649         * builtins.c (fold_builtin_memory_op): Use the alias oracle
11650         to query if the memory regions for memmove overlap.
11651         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
11652         asserts on pointers, instead deal with odd trees.
11653         (ptr_derefs_may_alias_p): Likewise.
11654         (refs_may_alias_p_1): Constructor bases also never alias.
11655
11656 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
11657
11658         * doc/install.texi (Final install): Adjust reference on where to
11659         order printed manuals.
11660
11661 2009-08-30  Olivier Hainque  <hainque@adacore.com>
11662
11663         * dwarf2out.c (switch_to_frame_table_section): Move
11664         definition prior to first use.
11665
11666 2009-08-30  Richard Guenther  <rguenther@suse.de>
11667
11668         PR tree-optimization/41186
11669         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
11670         (ao_ref_init_from_ptr_and_size): New function.
11671         (ref_maybe_used_by_call_p_1): Be more precise tracking
11672         used ranges for builtin functions.
11673         (ref_maybe_used_by_call_p): Adjust.
11674         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
11675         ranges for builtin functions.
11676         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
11677
11678 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
11679
11680         PR target/41081
11681         * fwprop.c (get_reg_use_in): Delete.
11682         (free_load_extend): New function.
11683         (forward_propagate_subreg): Use it.
11684
11685 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11686
11687         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
11688
11689 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
11690
11691         PR/41184
11692         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
11693         padding.
11694
11695 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
11696
11697         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
11698         fini or fini_array section.
11699
11700 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11701
11702         * graphite-dependences.c (graphite_legal_transform_bb): Call
11703         pbb_remove_duplicate_pdrs.
11704         * graphite-poly.c (can_collapse_pdr): Removed.
11705         (pdr_find_duplicate): Removed.
11706         (can_collapse_pdrs): New.
11707         (pbb_remove_duplicate_pdrs): New.
11708         (new_poly_dr): Do not look for duplicates.
11709         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
11710         (PBB_PDR_DUPLICATES_REMOVED): New.
11711         (pbb_remove_duplicate_pdrs): Declared.
11712
11713 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11714
11715         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
11716         the strides by multiplying by PDR_NB_REFS.
11717         * graphite-poly.c (can_collapse_pdr): New.
11718         (pdr_find_duplicate): New.
11719         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
11720         Initialize PDR_NB_REFS.
11721         * graphite-poly.h (struct poly_dr): Add field nb_refs.
11722         (PDR_NB_REFS): New.
11723         (new_poly_dr): Number of subscripts is a graphite_dim_t.
11724
11725 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11726
11727         PR middle-end/40965
11728         * graphite-poly.c (apply_poly_transforms): Remove legality test before
11729         any transform.
11730
11731 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11732
11733         * graphite-dependences.c (pddr_original_scattering): Return NULL
11734         for read-read dependence relations.
11735         * graphite-poly.h (enum poly_dr_type): Fix comment.
11736         (pdr_read_p): New.
11737         (pdr_write_p): New.
11738         (pdr_may_write_p): New.
11739
11740 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11741
11742         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
11743         (struct poly_dr): Same.
11744         (new_poly_dr): Same.
11745         * graphite-poly.c (new_poly_dr): Same.
11746         * graphite-dependences.c (dot_deps): Disable call to system.
11747
11748 2009-08-28  Cary Coutant  <ccoutant@google.com>
11749
11750         PR debug/41063
11751         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
11752         struct/union/enum types local to a function.
11753
11754 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11755             Sebastian Pop  <sebastian.pop@amd.com>
11756
11757         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
11758         pbb_strip_mine_time_depth.  Changed the implementation so that
11759         transformation is expressed as a transformation on
11760         time (scatttering) dimensions.  Also, ensures that the 2d+1
11761         scheduling format is preserved.
11762         (pbb_strip_mine_profitable_p): Profitability is based on the
11763         iteration number of a given time (scattering) dimension,
11764         and not on a original loop depth dimension.
11765         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
11766         (pbb_do_strip_mine): Call psct_dynamic_dim.
11767         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
11768         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
11769         (pbb_nb_dynamic_scattering_transform): New.
11770         (psct_dynamic_dim): New.
11771
11772 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11773
11774         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11775         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11776         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
11777         * graphite-interchange.c (build_linearized_memory_access): Same.
11778         (memory_stride_in_loop): Same.
11779
11780 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11781
11782         * graphite-dependences.c (pddr_original_scattering): New.
11783         (graphite_legal_transform_dr): Call pddr_original_scattering.
11784         (dot_deps_1): New.
11785         (dot_deps): New.
11786         * graphite-dependences.h (dot_deps): Declared.
11787         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
11788         (print_pdr): Print PDR_ID.
11789         * graphite-poly.h (struct poly_dr): Add field id.
11790         (PDR_ID): New.
11791         (pbb_index): New.
11792         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
11793
11794 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11795
11796         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
11797         not delete the original dependence relation.
11798
11799 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11800
11801         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
11802         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
11803         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
11804         (free_poly_ddr): New.
11805         (pddr_is_empty): New.
11806         (dependence_polyhedron_1): Now returns a poly_ddr_p.
11807         (dependence_polyhedron): Same.  Remove useless gcc_assert.
11808         Remove fprintfs.
11809         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
11810         (graphite_carried_dependence_level_k): Call pddr_is_empty.
11811         * graphite-dependences.h (enum poly_dependence_kind): New.
11812         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
11813         (PDRP_SOURCE): Renamed PDDR_SOURCE.
11814         (PDRP_SINK): Renamed PDDR_SINK.
11815         (PDRP_DDP): Renamed PDDR_DDP.
11816         (PDDR_KIND): New.
11817         (free_poly_ddr): Declared.
11818         * graphite-poly.c (new_scop): Use the new hash function names.
11819         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
11820         into original_pddrs.
11821         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
11822
11823 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11824
11825         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
11826         bounds with LT_EXPR to make niter analysis more precise on code
11827         generated by Graphite.
11828
11829 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11830
11831         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
11832         (graphite_legal_transform_bb): Same.
11833         (poly_drs_may_alias_p): Same.
11834
11835 2009-08-28  Richard Guenther  <rguenther@suse.de>
11836
11837         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
11838
11839 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11840
11841         * config/i386/netware.c: Include langhooks.h.
11842         (i386_nlm_encode_section_info): Simplify.
11843         (netware_override_options): Delete.
11844         * config/i386/netware.h (netware_override_options): Delete
11845         declaration.
11846         (OVERRIDE_OPTIONS): Delete definition.
11847         (SUBTARGET_OVERRIDE_OPTIONS): Define.
11848         (ASM_COMMENT_START): Define.
11849         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
11850
11851 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11852
11853         * configure.ac: For in-tree ld, do a plain version check to
11854         determine whether comdat groups are supported.
11855         * configure: Regenerate.
11856
11857 2009-08-28  Olivier Hainque  <hainque@adacore.com>
11858
11859         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
11860         always defined.  Reflect definition or absence of such for
11861         COLLECT_EXPORT_LIST.  Readability helper.
11862         (scanfilter): New enum, to help control what symbols
11863         are to be considered or ignored by scan_prog_file.
11864         (enum pass): Rename as "scanpass", moved together with scanfilter
11865         prior to scan_prog_file's prototype.
11866         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
11867         Group prototype with the scanpass/scanfilter definitions, factorize
11868         head comments for the several implementations at the prototype.
11869         (main): Reorganize the first pass link control to let AIX
11870         drag only the needed frame tables in executables.  Prevent
11871         frame tables collection during the scan aimed at static ctors.
11872         Pre-link and scan for frame tables later to compensate.
11873         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
11874         A C statement to issue assembly directives that create a reference
11875         to the given DWARF table identifier label from the current function
11876         section.
11877         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
11878         to differentiate first time section entry.  Only emit a .data
11879         tables start identifier label the first time around.
11880         (switch_to_frame_table_section): New function.  Helper for
11881         output_call_frame_info to switch possibly BACK into the eh_frame
11882         or the debug_frame section depending on FOR_EH.
11883         (output_call_frame_info): Use helper to first enter the proper
11884         frame section.
11885         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
11886         emit a link to the frame table start label from each function
11887         section.
11888         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
11889         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
11890         * config/rs6000/rs6000-protos.h: Declare it.
11891         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
11892
11893 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11894
11895         * config/sh/sh.c (split_branches): Check the result of
11896         next_active_insn.
11897
11898 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
11899
11900         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
11901         using -pthread -fopenmp
11902
11903 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
11904
11905         * doc/service.texi (service directory): Update URL.
11906
11907 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
11908
11909         PR rtl-optimization/40861
11910         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
11911         extract word from a multi-word subreg for negative byte positions.
11912
11913 2009-08-27  Tristan Gingold  <gingold@adacore.com>
11914             Douglas B Rupp  <rupp@gnat.com>
11915
11916         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
11917         (SECTION_VMS_OVERLAY): Define.
11918         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
11919         attribute.
11920         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
11921         for common_object.
11922         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
11923         common_object declarations.
11924         (ia64_section_type_flags): Set section flag for common_object.
11925         * config/ia64/ia64-protos.h
11926         (ia64_vms_output_aligned_decl_common): Declare.
11927         (ia64_vms_elf_asm_named_section): Declare.
11928
11929 2009-08-27  Michael Matz  <matz@suse.de>
11930
11931         * expr.c (expand_expr_real_2): New function taking exploded
11932         unary or binary expression, split out from ...
11933         (expand_expr_real_1): ... here.  Move over all unary/binary
11934         switch parts to above function, in particular these codes:
11935         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
11936         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
11937         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
11938         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
11939         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
11940         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
11941         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
11942         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
11943         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
11944         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
11945         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
11946         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
11947         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
11948         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
11949         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
11950         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
11951         VEC_PACK_FIX_TRUNC_EXPR.
11952         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
11953         full expression.
11954
11955 2009-08-27  Richard Guenther  <rguenther@suse.de>
11956
11957         * gengtype.c (main): Handle uint64_t.
11958         * ipa-utils.c (get_base_var): Indent properly.
11959         * tree-ssa-live.c (debug_scope_block): New function.
11960         * tree-flow.h (debug_scope_block): Declare.
11961         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
11962         * basic-block.h (enum profile_status): Rename to
11963         enum profile_status_d.
11964         (x_profile_status): Adjust type.
11965
11966 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
11967
11968         PR debug/41170
11969         * dwarf2out.c (get_context_die): Declare this static function.
11970         (gen_type_die_with_usage): Make sure a DIE is a generated for
11971         the context of a typedef.
11972
11973 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
11974
11975         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
11976         switch.
11977
11978 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
11979
11980         * config/mips/mips-protos.h (mips_output_sync): Declare.
11981         (mips_sync_loop_insns): Likewise.
11982         (mips_output_sync_loop): Replace first two parameters with an rtx.
11983         * config/mips/mips.c (mips_multi_member): New structure.
11984         (mips_multi_members): New variable.
11985         (mips_multi_start): New function.
11986         (mips_multi_add): Likewise.
11987         (mips_multi_add_insn): Likewise.
11988         (mips_multi_add_label): Likewise.
11989         (mips_multi_last_index): Likewise.
11990         (mips_multi_copy_insn): Likewise.
11991         (mips_multi_set_operand): Likewise.
11992         (mips_multi_write): Likewise.
11993         (mips_print_operand_punctuation): Remove '%|' and '%-'.
11994         (mips_init_print_operand_punct): Update accordingly.
11995         (mips_start_ll_sc_sync_block): New function.
11996         (mips_end_ll_sc_sync_block): Likewise.
11997         (mips_output_sync): Likewise.
11998         (mips_sync_insn1_template): Likewise.
11999         (mips_sync_insn2_template): Likewise.
12000         (mips_get_sync_operand): Likewise.
12001         (mips_process_sync_loop): Likewise.
12002         (mips_output_sync_loop): Use mips_process_sync_loop.
12003         (mips_sync_loop_insns): New function.
12004         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
12005         (MIPS_COMPARE_AND_SWAP_12): Likewise.
12006         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
12007         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
12008         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
12009         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
12010         (MIPS_SYNC_OLD_OP_12): Likewise.
12011         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
12012         (MIPS_SYNC_NEW_OP_12): Likewise.
12013         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
12014         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
12015         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
12016         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
12017         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
12018         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
12019         * config/mips/mips.md (sync_mem): New attribute.
12020         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
12021         (sync_exclusive_mask, sync_required_oldval): Likewise.
12022         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
12023         (sync_release_barrier): Likewise.
12024         (length): Handle sync loops.
12025         (sync): Use mips_output_sync.
12026         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
12027         (sync_compare_and_swap<mode>): Set the new sync_* attributes
12028         and use mips_output_sync_loop.
12029         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
12030         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
12031         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
12032         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
12033         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
12034         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
12035         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
12036         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
12037         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
12038
12039 2009-08-26  Richard Guenther  <rguenther@suse.de>
12040
12041         PR middle-end/41163
12042         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
12043         the types to not match.
12044         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
12045         verification.
12046         * tree-ssa.c (useless_type_conversion_p): Conversions to
12047         pointers to unprototyped functions are useless.
12048
12049 2009-08-26  Richard Guenther  <rguenther@suse.de>
12050
12051         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
12052         whole-program condition, prepare to be called for non-globals.
12053         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
12054         params build a representative with known type and track its fields.
12055
12056 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
12057
12058         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
12059         clearing by a taken branch.
12060         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
12061         effectively after bbro pass.
12062         (sync_nand<mode>): Ditto.
12063         (sync_old_<fetchop_name><mode>): Ditto.
12064         (sync_old_nand<mode>): Ditto.
12065         (sync_new_<fetchop_name><mode>): Dito.
12066         (sync_new_nand<mode>): Ditto.
12067         (sync_compare_and_swap<mode>_1): Ditto.
12068         (*sync_compare_and_swap<mode>): Ditto.
12069         (sync_lock_test_and_set<mode>_1): Ditto.
12070         ("sync_lock_test_and_set<mode>): Ditto.
12071
12072 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
12073
12074         * hwint.h (HOST_LONG_FORMAT): New macro
12075         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
12076         Use HOST_PTR_PRINTF.
12077         * system.h (HOST_PTR_PRINTF): Resurrect old macro
12078         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
12079         (HOST_PTR_PRINTF): Document.
12080
12081 2009-08-25 Jan Hubicka  <jh@suse.cz>
12082
12083         * config/i386/bmmintrin.h: Replace by #error.
12084
12085         Revert:
12086         Michael Meissner  <michael.meissner@amd.com>
12087         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12088         Tony Linthicum  <tony.linthicum@amd.com>
12089
12090         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
12091         (TARGET_ROUND): New macro for the round/ptest instructions which
12092         are shared between SSE4.1 and SSE5.
12093         (OPTION_MASK_ISA_ROUND): Ditto.
12094         (OPTION_ISA_ROUND): Ditto.
12095         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
12096         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
12097
12098         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
12099         (-mfused-madd): New switch to give users control over whether the
12100         compiler optimizes to use the multiply/add SSE5 instructions.
12101
12102         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
12103         (ix86_handle_option): Turn off 3dnow if -msse5.
12104         (override_options): Add SSE5 support.
12105         (print_operand): %Y prints comparison codes for SSE5 com/pcom
12106         instructions.
12107         (ix86_expand_sse_movcc): Add SSE5 support.
12108         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
12109         vector type to the next largest size.
12110         (ix86_expand_sse5_pack): New function to use pperm to pack a
12111         vector type to the next smallest size.
12112         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
12113         (IX86_BUILTIN_FMADDSD): Ditto.
12114         (IX86_BUILTIN_FMADDPS): Ditto.
12115         (IX86_BUILTIN_FMADDPD): Ditto.
12116         (IX86_BUILTIN_FMSUBSS): Ditto.
12117         (IX86_BUILTIN_FMSUBSD): Ditto.
12118         (IX86_BUILTIN_FMSUBPS): Ditto.
12119         (IX86_BUILTIN_FMSUBPD): Ditto.
12120         (IX86_BUILTIN_FNMADDSS): Ditto.
12121         (IX86_BUILTIN_FNMADDSD): Ditto.
12122         (IX86_BUILTIN_FNMADDPS): Ditto.
12123         (IX86_BUILTIN_FNMADDPD): Ditto.
12124         (IX86_BUILTIN_FNMSUBSS): Ditto.
12125         (IX86_BUILTIN_FNMSUBSD): Ditto.
12126         (IX86_BUILTIN_FNMSUBPS): Ditto.
12127         (IX86_BUILTIN_FNMSUBPD): Ditto.
12128         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
12129         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
12130         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
12131         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
12132         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
12133         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
12134         (IX86_BUILTIN_PPERM): Ditto.
12135         (IX86_BUILTIN_PERMPS): Ditto.
12136         (IX86_BUILTIN_PERMPD): Ditto.
12137         (IX86_BUILTIN_PMACSSWW): Ditto.
12138         (IX86_BUILTIN_PMACSWW): Ditto.
12139         (IX86_BUILTIN_PMACSSWD): Ditto.
12140         (IX86_BUILTIN_PMACSWD): Ditto.
12141         (IX86_BUILTIN_PMACSSDD): Ditto.
12142         (IX86_BUILTIN_PMACSDD): Ditto.
12143         (IX86_BUILTIN_PMACSSDQL): Ditto.
12144         (IX86_BUILTIN_PMACSSDQH): Ditto.
12145         (IX86_BUILTIN_PMACSDQL): Ditto.
12146         (IX86_BUILTIN_PMACSDQH): Ditto.
12147         (IX86_BUILTIN_PMADCSSWD): Ditto.
12148         (IX86_BUILTIN_PMADCSWD): Ditto.
12149         (IX86_BUILTIN_PHADDBW): Ditto.
12150         (IX86_BUILTIN_PHADDBD): Ditto.
12151         (IX86_BUILTIN_PHADDBQ): Ditto.
12152         (IX86_BUILTIN_PHADDWD): Ditto.
12153         (IX86_BUILTIN_PHADDWQ): Ditto.
12154         (IX86_BUILTIN_PHADDDQ): Ditto.
12155         (IX86_BUILTIN_PHADDUBW): Ditto.
12156         (IX86_BUILTIN_PHADDUBD): Ditto.
12157         (IX86_BUILTIN_PHADDUBQ): Ditto.
12158         (IX86_BUILTIN_PHADDUWD): Ditto.
12159         (IX86_BUILTIN_PHADDUWQ): Ditto.
12160         (IX86_BUILTIN_PHADDUDQ): Ditto.
12161         (IX86_BUILTIN_PHSUBBW): Ditto.
12162         (IX86_BUILTIN_PHSUBWD): Ditto.
12163         (IX86_BUILTIN_PHSUBDQ): Ditto.
12164         (IX86_BUILTIN_PROTB): Ditto.
12165         (IX86_BUILTIN_PROTW): Ditto.
12166         (IX86_BUILTIN_PROTD): Ditto.
12167         (IX86_BUILTIN_PROTQ): Ditto.
12168         (IX86_BUILTIN_PROTB_IMM): Ditto.
12169         (IX86_BUILTIN_PROTW_IMM): Ditto.
12170         (IX86_BUILTIN_PROTD_IMM): Ditto.
12171         (IX86_BUILTIN_PROTQ_IMM): Ditto.
12172         (IX86_BUILTIN_PSHLB): Ditto.
12173         (IX86_BUILTIN_PSHLW): Ditto.
12174         (IX86_BUILTIN_PSHLD): Ditto.
12175         (IX86_BUILTIN_PSHLQ): Ditto.
12176         (IX86_BUILTIN_PSHAB): Ditto.
12177         (IX86_BUILTIN_PSHAW): Ditto.
12178         (IX86_BUILTIN_PSHAD): Ditto.
12179         (IX86_BUILTIN_PSHAQ): Ditto.
12180         (IX86_BUILTIN_FRCZSS): Ditto.
12181         (IX86_BUILTIN_FRCZSD): Ditto.
12182         (IX86_BUILTIN_FRCZPS): Ditto.
12183         (IX86_BUILTIN_FRCZPD): Ditto.
12184         (IX86_BUILTIN_CVTPH2PS): Ditto.
12185         (IX86_BUILTIN_CVTPS2PH): Ditto.
12186         (IX86_BUILTIN_COMEQSS): Ditto.
12187         (IX86_BUILTIN_COMNESS): Ditto.
12188         (IX86_BUILTIN_COMLTSS): Ditto.
12189         (IX86_BUILTIN_COMLESS): Ditto.
12190         (IX86_BUILTIN_COMGTSS): Ditto.
12191         (IX86_BUILTIN_COMGESS): Ditto.
12192         (IX86_BUILTIN_COMUEQSS): Ditto.
12193         (IX86_BUILTIN_COMUNESS): Ditto.
12194         (IX86_BUILTIN_COMULTSS): Ditto.
12195         (IX86_BUILTIN_COMULESS): Ditto.
12196         (IX86_BUILTIN_COMUGTSS): Ditto.
12197         (IX86_BUILTIN_COMUGESS): Ditto.
12198         (IX86_BUILTIN_COMORDSS): Ditto.
12199         (IX86_BUILTIN_COMUNORDSS): Ditto.
12200         (IX86_BUILTIN_COMFALSESS): Ditto.
12201         (IX86_BUILTIN_COMTRUESS): Ditto.
12202         (IX86_BUILTIN_COMEQSD): Ditto.
12203         (IX86_BUILTIN_COMNESD): Ditto.
12204         (IX86_BUILTIN_COMLTSD): Ditto.
12205         (IX86_BUILTIN_COMLESD): Ditto.
12206         (IX86_BUILTIN_COMGTSD): Ditto.
12207         (IX86_BUILTIN_COMGESD): Ditto.
12208         (IX86_BUILTIN_COMUEQSD): Ditto.
12209         (IX86_BUILTIN_COMUNESD): Ditto.
12210         (IX86_BUILTIN_COMULTSD): Ditto.
12211         (IX86_BUILTIN_COMULESD): Ditto.
12212         (IX86_BUILTIN_COMUGTSD): Ditto.
12213         (IX86_BUILTIN_COMUGESD): Ditto.
12214         (IX86_BUILTIN_COMORDSD): Ditto.
12215         (IX86_BUILTIN_COMUNORDSD): Ditto.
12216         (IX86_BUILTIN_COMFALSESD): Ditto.
12217         (IX86_BUILTIN_COMTRUESD): Ditto.
12218         (IX86_BUILTIN_COMEQPS): Ditto.
12219         (IX86_BUILTIN_COMNEPS): Ditto.
12220         (IX86_BUILTIN_COMLTPS): Ditto.
12221         (IX86_BUILTIN_COMLEPS): Ditto.
12222         (IX86_BUILTIN_COMGTPS): Ditto.
12223         (IX86_BUILTIN_COMGEPS): Ditto.
12224         (IX86_BUILTIN_COMUEQPS): Ditto.
12225         (IX86_BUILTIN_COMUNEPS): Ditto.
12226         (IX86_BUILTIN_COMULTPS): Ditto.
12227         (IX86_BUILTIN_COMULEPS): Ditto.
12228         (IX86_BUILTIN_COMUGTPS): Ditto.
12229         (IX86_BUILTIN_COMUGEPS): Ditto.
12230         (IX86_BUILTIN_COMORDPS): Ditto.
12231         (IX86_BUILTIN_COMUNORDPS): Ditto.
12232         (IX86_BUILTIN_COMFALSEPS): Ditto.
12233         (IX86_BUILTIN_COMTRUEPS): Ditto.
12234         (IX86_BUILTIN_COMEQPD): Ditto.
12235         (IX86_BUILTIN_COMNEPD): Ditto.
12236         (IX86_BUILTIN_COMLTPD): Ditto.
12237         (IX86_BUILTIN_COMLEPD): Ditto.
12238         (IX86_BUILTIN_COMGTPD): Ditto.
12239         (IX86_BUILTIN_COMGEPD): Ditto.
12240         (IX86_BUILTIN_COMUEQPD): Ditto.
12241         (IX86_BUILTIN_COMUNEPD): Ditto.
12242         (IX86_BUILTIN_COMULTPD): Ditto.
12243         (IX86_BUILTIN_COMULEPD): Ditto.
12244         (IX86_BUILTIN_COMUGTPD): Ditto.
12245         (IX86_BUILTIN_COMUGEPD): Ditto.
12246         (IX86_BUILTIN_COMORDPD): Ditto.
12247         (IX86_BUILTIN_COMUNORDPD): Ditto.
12248         (IX86_BUILTIN_COMFALSEPD): Ditto.
12249         (IX86_BUILTIN_COMTRUEPD): Ditto.
12250         (IX86_BUILTIN_PCOMEQUB): Ditto.
12251         (IX86_BUILTIN_PCOMNEUB): Ditto.
12252         (IX86_BUILTIN_PCOMLTUB): Ditto.
12253         (IX86_BUILTIN_PCOMLEUB): Ditto.
12254         (IX86_BUILTIN_PCOMGTUB): Ditto.
12255         (IX86_BUILTIN_PCOMGEUB): Ditto.
12256         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
12257         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
12258         (IX86_BUILTIN_PCOMEQUW): Ditto.
12259         (IX86_BUILTIN_PCOMNEUW): Ditto.
12260         (IX86_BUILTIN_PCOMLTUW): Ditto.
12261         (IX86_BUILTIN_PCOMLEUW): Ditto.
12262         (IX86_BUILTIN_PCOMGTUW): Ditto.
12263         (IX86_BUILTIN_PCOMGEUW): Ditto.
12264         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
12265         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
12266         (IX86_BUILTIN_PCOMEQUD): Ditto.
12267         (IX86_BUILTIN_PCOMNEUD): Ditto.
12268         (IX86_BUILTIN_PCOMLTUD): Ditto.
12269         (IX86_BUILTIN_PCOMLEUD): Ditto.
12270         (IX86_BUILTIN_PCOMGTUD): Ditto.
12271         (IX86_BUILTIN_PCOMGEUD): Ditto.
12272         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
12273         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
12274         (IX86_BUILTIN_PCOMEQUQ): Ditto.
12275         (IX86_BUILTIN_PCOMNEUQ): Ditto.
12276         (IX86_BUILTIN_PCOMLTUQ): Ditto.
12277         (IX86_BUILTIN_PCOMLEUQ): Ditto.
12278         (IX86_BUILTIN_PCOMGTUQ): Ditto.
12279         (IX86_BUILTIN_PCOMGEUQ): Ditto.
12280         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
12281         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
12282         (IX86_BUILTIN_PCOMEQB): Ditto.
12283         (IX86_BUILTIN_PCOMNEB): Ditto.
12284         (IX86_BUILTIN_PCOMLTB): Ditto.
12285         (IX86_BUILTIN_PCOMLEB): Ditto.
12286         (IX86_BUILTIN_PCOMGTB): Ditto.
12287         (IX86_BUILTIN_PCOMGEB): Ditto.
12288         (IX86_BUILTIN_PCOMFALSEB): Ditto.
12289         (IX86_BUILTIN_PCOMTRUEB): Ditto.
12290         (IX86_BUILTIN_PCOMEQW): Ditto.
12291         (IX86_BUILTIN_PCOMNEW): Ditto.
12292         (IX86_BUILTIN_PCOMLTW): Ditto.
12293         (IX86_BUILTIN_PCOMLEW): Ditto.
12294         (IX86_BUILTIN_PCOMGTW): Ditto.
12295         (IX86_BUILTIN_PCOMGEW): Ditto.
12296         (IX86_BUILTIN_PCOMFALSEW): Ditto.
12297         (IX86_BUILTIN_PCOMTRUEW): Ditto.
12298         (IX86_BUILTIN_PCOMEQD): Ditto.
12299         (IX86_BUILTIN_PCOMNED): Ditto.
12300         (IX86_BUILTIN_PCOMLTD): Ditto.
12301         (IX86_BUILTIN_PCOMLED): Ditto.
12302         (IX86_BUILTIN_PCOMGTD): Ditto.
12303         (IX86_BUILTIN_PCOMGED): Ditto.
12304         (IX86_BUILTIN_PCOMFALSED): Ditto.
12305         (IX86_BUILTIN_PCOMTRUED): Ditto.
12306         (IX86_BUILTIN_PCOMEQQ): Ditto.
12307         (IX86_BUILTIN_PCOMNEQ): Ditto.
12308         (IX86_BUILTIN_PCOMLTQ): Ditto.
12309         (IX86_BUILTIN_PCOMLEQ): Ditto.
12310         (IX86_BUILTIN_PCOMGTQ): Ditto.
12311         (IX86_BUILTIN_PCOMGEQ): Ditto.
12312         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
12313         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
12314         (enum multi_arg_type): New enum for describing the various SSE5
12315         intrinsic argument types.
12316         (bdesc_multi_arg): New table for SSE5 intrinsics.
12317         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
12318         (ix86_expand_multi_arg_builtin): New function for creating SSE5
12319         intrinsics.
12320         (ix86_expand_builtin): Add SSE5 intrinsic support.
12321         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
12322         operand instructions.
12323         (ix86_expand_sse5_multiple_memory): New function to split the
12324         second memory reference from SSE5 instructions.
12325         (type_has_variadic_args_p): Delete in favor of stdarg_p.
12326         (ix86_return_pops_args): Use stdarg_p to determine if the function
12327         has variable arguments.
12328         (ix86_setup_incoming_varargs): Ditto.
12329         (x86_this_parameter): Ditto.
12330
12331         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
12332         declaration.
12333         (ix86_expand_sse5_pack): Ditto.
12334         (ix86_sse5_valid_op_p): Ditto.
12335         (ix86_expand_sse5_multiple_memory): Ditto.
12336
12337         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
12338         constant for SSE5 support.
12339         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
12340         (UNSPEC_SSE5_TRUEFALSE): Ditto.
12341         (UNSPEC_SSE5_PERMUTE): Ditto.
12342         (UNSPEC_SSE5_ASHIFT): Ditto.
12343         (UNSPEC_SSE5_LSHIFT): Ditto.
12344         (UNSPEC_FRCZ): Ditto.
12345         (UNSPEC_CVTPH2PS): Ditto.
12346         (UNSPEC_CVTPS2PH): Ditto.
12347         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
12348         (PCOM_TRUE): Ditto.
12349         (COM_FALSE_S): Ditto.
12350         (COM_FALSE_P): Ditto.
12351         (COM_TRUE_S): Ditto.
12352         (COM_TRUE_P): Ditto.
12353         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
12354         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
12355         types.
12356         (memory attribute): Ditto.
12357         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
12358         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
12359         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
12360         (floor<mode>2): Ditto.
12361         (ceil<mode>2): Ditto.
12362         (btrunc<mode>2): Ditto.
12363         (nearbyintdf2): Ditto.
12364         (nearbyintsf2): Ditto.
12365         (sse_setccsf): Disable if SSE5.
12366         (sse_setccdf): Ditto.
12367         (sse5_setcc<mode>): New support for SSE5 conditional move.
12368         (sse5_pcmov_<mode>): Ditto.
12369
12370         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
12371         (SSEMODEF4): Ditto.
12372         (SSEMODEF2P): Ditto.
12373         (ssemodesuffixf4): New mode attribute for SSE5.
12374         (ssemodesuffixf2s): Ditto.
12375         (ssemodesuffixf2c): Ditto.
12376         (sserotatemax): Ditto.
12377         (ssescalarmode): Ditto.
12378         (sse_maskcmpv4sf3): Disable if SSE5.
12379         (sse_maskcmpv2df3): Ditto.
12380         (sse_vmmaskcmpv4sf3): Ditto.
12381         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
12382         (sse5_vmfmadd<mode>4): Ditto.
12383         (sse5_fmsub<mode>4): Ditto.
12384         (sse5_vmfmsub<mode>4): Ditto.
12385         (sse5_fnmadd<mode>4): Ditto.
12386         (sse5_vmfnmadd<mode>4): Ditto.
12387         (sse5_fnmsub<mode>4): Ditto.
12388         (sse5_vmfnmsub<mode>4): Ditto.
12389         (sse5i_fmadd<mode>4): Ditto.
12390         (sse5i_fmsub<mode>4): Ditto.
12391         (sse5i_fnmadd<mode>4): Ditto.
12392         (sse5i_fnmsub<mode>4): Ditto.
12393         (sse5i_vmfmadd<mode>4): Ditto.
12394         (sse5i_vmfmsub<mode>4): Ditto.
12395         (sse5i_vmfnmadd<mode>4): Ditto.
12396         (sse5i_vmfnmsub<mode>4): Ditto.
12397         (mulv16qi3): Add SSE5 support.
12398         (mulv4si3): Ditto.
12399         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
12400         (sse2_mulv4si3): Disable if SSE5.
12401         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
12402         (sse4_1_roundps): Ditto.
12403         (sse4_1_roundsd): Ditto.
12404         (sse4_1_roundss): Ditto.
12405         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
12406         be generated.
12407         (sse_maskcmpsf3): Ditto.
12408         (sse_vmmaskcmpv4sf3): Ditto.
12409         (sse2_maskcmpv2df3): Ditto.
12410         (sse2_maskcmpdf3): Ditto.
12411         (sse2_vmmaskcmpv2df3): Ditto.
12412         (sse2_eq<mode>3): Ditto.
12413         (sse2_gt<mode>3): Ditto.
12414         (sse5_pcmov_<mode>): Add SSE5 support.
12415         (vec_unpacku_hi_v16qi): Ditto.
12416         (vec_unpacks_hi_v16qi): Ditto.
12417         (vec_unpacku_lo_v16qi): Ditto.
12418         (vec_unpacks_lo_v16qi): Ditto.
12419         (vec_unpacku_hi_v8hi): Ditto.
12420         (vec_unpacks_hi_v8hi): Ditto.
12421         (vec_unpacku_lo_v8hi): Ditto.
12422         (vec_unpacks_lo_v8hi): Ditto.
12423         (vec_unpacku_hi_v4si): Ditto.
12424         (vec_unpacks_hi_v4si): Ditto.
12425         (vec_unpacku_lo_v4si): Ditto.
12426         (vec_unpacks_lo_v4si): Ditto.
12427         (sse5_pmacsww): New SSE5 intrinsic insn.
12428         (sse5_pmacssww): Ditto.
12429         (sse5_pmacsdd): Ditto.
12430         (sse5_pmacssdd): Ditto.
12431         (sse5_pmacssdql): Ditto.
12432         (sse5_pmacssdqh): Ditto.
12433         (sse5_pmacsdqh): Ditto.
12434         (sse5_pmacsswd): Ditto.
12435         (sse5_pmacswd): Ditto.
12436         (sse5_pmadcsswd): Ditto.
12437         (sse5_pmadcswd): Ditto.
12438         (sse5_pcmov_<move>): Conditional move support on SSE5.
12439         (sse5_phaddbw): New SSE5 intrinsic insn.
12440         (sse5_phaddbd): Ditto.
12441         (sse5_phaddbq): Ditto.
12442         (sse5_phaddwd): Ditto.
12443         (sse5_phaddwq): Ditto.
12444         (sse5_phadddq): Ditto.
12445         (sse5_phaddubw): Ditto.
12446         (sse5_phaddubd): Ditto.
12447         (sse5_phaddubq): Ditto.
12448         (sse5_phadduwd): Ditto.
12449         (sse5_phadduwq): Ditto.
12450         (sse5_phaddudq): Ditto.
12451         (sse5_phsubbw): Ditto.
12452         (sse5_phsubwd): Ditto.
12453         (sse5_phsubdq): Ditto.
12454         (sse5_pperm): Ditto.
12455         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
12456         (sse5_pperm_zero_v16qi_v8hi): Ditto.
12457         (sse5_pperm_sign_v8hi_v4si): Ditto.
12458         (sse5_pperm_zero_v8hi_v4si): Ditto.
12459         (sse5_pperm_sign_v4si_v2di): Ditto.
12460         (sse5_pperm_sign_v4si_v2di): Ditto.
12461         (sse5_pperm_pack_v2di_v4si): Ditto.
12462         (sse5_pperm_pack_v4si_v8hi): Ditto.
12463         (sse5_pperm_pack_v8hi_v16qi): Ditto.
12464         (sse5_perm<mode>): New SSE5 intrinsic insn.
12465         (rotl<mode>3): Ditto.
12466         (sse5_rotl<mode>3): Ditto.
12467         (sse5_ashl<mode>3): Ditto.
12468         (sse5_lshl<mode>3): Ditto.
12469         (sse5_frcz<mode>2): Ditto.
12470         (sse5s_frcz<mode>2): Ditto.
12471         (sse5_cvtph2ps): Ditto.
12472         (sse5_cvtps2ph): Ditto.
12473         (sse5_vmmaskcmp<mode>3): Ditto.
12474         (sse5_com_tf<mode>3): Ditto.
12475         (sse5_maskcmp<mode>3): Ditto.
12476         (sse5_maskcmp_uns<mode>3): Ditto.
12477         (sse5_maskcmp_uns2<mode>3): Ditto.
12478         (sse5_pcom_tf<mode>3): Ditto.
12479
12480         * config/i386/predicates.md (sse5_comparison_float_operator):
12481         New predicate to match the comparison operators supported by
12482         the SSE5 com instruction.
12483         (ix86_comparison_int_operator): New predicate to match just the
12484         signed int comparisons.
12485         (ix86_comparison_uns_operator): New predicate to match just the
12486         unsigned int comparisons.
12487
12488         * doc/invoke.texi (-msse5): Add documentation.
12489         (-mfused-madd): Ditto.
12490
12491         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
12492
12493         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
12494         mmintrin-common.h.
12495         (x86_64-*-*): Ditto.
12496
12497         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
12498
12499         * config/i386/bmmintrin.h: New file, provide common x86 compiler
12500         intrinisics for SSE5.
12501
12502         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
12503         mmintrin-common.h.
12504
12505         * config/i386/mmintrin-common.h: New file, to contain common
12506         instructions between SSE4.1 and SSE5.
12507
12508         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
12509         FOREACH_FUNCTION_ARGS to iterate over the argument list.
12510         (gen_regparm_prefix): Ditto.
12511
12512         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
12513         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
12514         prototype_p to determine if a function is prototyped.
12515
12516 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
12517
12518         * c-common.c (c_common_reswords) add the alignof keyword,
12519         with same RID as __alignof and __alignof__
12520
12521 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
12522
12523         * hooks.h (hook_bool_const_int_const_int_true): Declare.
12524         * hooks.c (hook_bool_const_int_const_int_true): New function.
12525         * target.h (struct gcc_target): Add can_eliminate field.
12526         * target-def.h (TARGET_CAN_ELIMINATE): Define.
12527         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
12528         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
12529         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
12530         (elim_table): Revise comment.
12531         * system.h (CAN_ELIMINATE): Poison.
12532         * defaults.h (CAN_ELIMINATE): Remove.
12533         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12534
12535         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
12536         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
12537         Define macro.
12538         (alpha_vms_can_eliminate): Declare as static, change return type to
12539         bool.
12540         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
12541
12542         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
12543         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
12544         (arm_can_eliminate): New function.
12545
12546         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
12547         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
12548         (avr_can_eliminate): Declare as static.
12549         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
12550
12551         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
12552         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
12553         (bfin_can_eliminate): New function.
12554
12555         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
12556         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
12557         (crx_can_eliminate): New function.
12558
12559         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
12560         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
12561         (fr30_can_eliminate): New function.
12562
12563         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
12564         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
12565         (frv_can_eliminate): New function.
12566
12567         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
12568         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
12569         (h8300_can_eliminate): New function.
12570
12571         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
12572         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
12573         (i386_can_eliminate): Declare as static, change return type to bool.
12574         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
12575
12576         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
12577         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
12578         (ia64_can_eliminate): New function.
12579
12580         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
12581         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
12582         (iq2000_can_eliminate): New function.
12583
12584         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
12585         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
12586         (m32r_can_eliminate): New function.
12587
12588         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
12589         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
12590         (m68hc11_can_eliminate): New function.
12591
12592         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
12593         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
12594         (m68k_can_eliminate): New function.
12595
12596         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
12597         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
12598         (mep_can_eliminate): New function.
12599
12600         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
12601         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
12602         (mips_can_eliminate): New function.
12603
12604         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
12605         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
12606         (rs6000_can_eliminate): New function.
12607
12608         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
12609         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
12610         (s390_can_eliminate): Declare as static.
12611         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
12612
12613         * config/score/score.h (CAN_ELIMINATE): Remove macro.
12614         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
12615         (score_can_eliminate): New function.
12616
12617         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
12618         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
12619         (sparc_can_eliminate): Declare as static.
12620         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
12621
12622         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
12623         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
12624         (xstormy16_can_eliminate): New function.
12625
12626         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
12627         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
12628         (v850_can_eliminate): New function.
12629
12630 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
12631
12632         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
12633         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
12634         (*movdfcc_ext[1234]): Disable for IEEE mode.
12635
12636 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
12637
12638         * gimplify.c (prepare_gimple_addressable): New static function.
12639         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
12640         it addressable.
12641         (gimplify_addr_expr): Invoke it similarly on the operand instead of
12642         manually fiddling with it.
12643
12644 2009-08-25  Michael Matz  <matz@suse.de>
12645
12646         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
12647         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
12648         full expression.
12649         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
12650         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
12651         (do_jump): Split out code for simple binary comparisons into ...
12652         (do_jump_1): ... this, taking the individual operands and code.
12653         Change callers to helper function above accordingly.
12654         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
12655         comparisons.
12656
12657 2009-08-25  Michael Matz  <matz@suse.de>
12658
12659         * expr.h (struct separate_ops, sepops): New type for passing
12660         around an exploded simple expression.
12661         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
12662         Use this structure instead of expression tree.
12663         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
12664         expression, only its type.
12665         (expand_vec_cond_expr): Take type and individual operands instead
12666         of full expression.
12667         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
12668         expand_vec_shift_expr): Change prototype accordingly.
12669         * tree-vect-stmts.c (vectorizable_condition): Change call of
12670         expand_vec_cond_expr_p to pass only type.
12671         * expr.c (do_store_flags): Change prototype and implementation
12672         to take an exploded expression.
12673         (expand_expr_real_1): New local ops initialized with details
12674         of the full expression.  Use it instead of full
12675         expression in calls to do_store_flags, expand_vec_cond_expr,
12676         expand_widen_pattern_expr and expand_vec_shift_expr.
12677
12678 2009-08-25  Michael Matz  <matz@suse.de>
12679
12680         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
12681         treeop2 initialized with first three operands of the full expression.
12682         Substitute all TREE_OPERAND (exp, [012]) calls with them.
12683
12684 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
12685
12686         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
12687         (__gthread_objc_condition_allocate): Mark arguments as unused.
12688         (__gthread_objc_condition_deallocate): Likewise.
12689         (__gthread_objc_condition_wait): Likewise.
12690         (__gthread_objc_condition_broadcast): Likewise.
12691         (__gthread_objc_condition_signal): Likewise.
12692         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
12693         (__gthread_objc_thread_id): Likewise.
12694
12695 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
12696
12697         PR middle-end/41149
12698         * tree-pretty-print.c (print_call_name): Print the correct call name
12699         for procedure pointer components.
12700
12701 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
12702
12703         * config/ia64/ia64.c (ia64_promote_function_mode): Call
12704         default_promote_function_mode when not VMS.
12705
12706 2009-08-24  Olivier Hainque  <hainque@adacore.com>
12707
12708         * convert.c (convert_to_integer): Don't assume an input pointer is
12709         POINTER_SIZE wide.  Fetch from the type instead.
12710
12711 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12712
12713         * configure.ac (AC_PREREQ): Bump to 2.64.
12714
12715 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
12716
12717         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
12718         (process_command): Don't search standard_exec_prefix_1 and
12719         standard_exec_prefix_2.
12720
12721 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12722
12723         * config/arm/arm.c (output_return_instruction): Handle for
12724         unified syntax.
12725
12726 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12727
12728         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
12729
12730 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12731
12732         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
12733         (*arm_movdf_vfp): Likewise.
12734
12735 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12736
12737         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
12738         (vashr<mode>3): Rename from ashr<mode>3.
12739         (vlshr<mode>3): Rename from lshr<mode>3.
12740
12741 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
12742
12743         PR/40786
12744         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
12745         (check_format_info_main): Use scalar_identify_flag.
12746         (check_format_types): Check for scalar size identity if
12747         scalar_identify_flag is set.
12748         (printf_length_specs): Extend by new field.
12749         (asm_fprintf_length_specs): Likewise.
12750         (gcc_diag_length_specs): Likewise.
12751         (scanf_length_specs): Likewise.
12752         (strfmon_length_specs): Likewise.
12753         (gcc_gfc_length_specs): Likewise.
12754         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
12755         (ms_printf_flag_specs): Likewise.
12756         * c-format.h (format_length_info): Add new member scalar_identity_flag.
12757
12758 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
12759
12760         PR target/40718
12761         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
12762         (*call_value_pop_1): Ditto.
12763         (*sibcall_pop_1): New insn pattern.
12764         (*sibcall_value_pop_1): Ditto.
12765
12766 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12767
12768         PR target/41081
12769         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
12770         ashrsi3_64): New.
12771
12772 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12773
12774         PR target/41081
12775         * fwprop.c (try_fwprop_subst): Allow multiple sets.
12776         (get_reg_use_in): New function.
12777         (forward_propagate_subreg): Propagate through subreg of zero_extend
12778         or sign_extend.
12779
12780 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12781
12782         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
12783         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
12784
12785 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12786
12787         * configure.ac: Remove --with-datarootdir, --with-docdir,
12788         --with-htmldir switches.  No need to call AC_SUBST for
12789         datarootdir, docdir, htmldir any more.
12790         * configure: Regenerate.
12791         * doc/install.texi (Configuration): Document --datarootdir,
12792         --docdir, --htmldir, --pdfdir; update documentation for
12793         --infodir, --mandir.
12794         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
12795         M4 to 1.4.6.
12796
12797         * aclocal.m4: Regenerate.
12798         * config.in: Regenerate.
12799         * configure: Regenerate.
12800
12801 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
12802             Olivier Hainque  <hainque@adacore.com>
12803
12804         * config/ia64/ia64.c: Include libfuncs.h.
12805         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
12806         (ia64_expand_call): Use reg 25 on VMS.
12807         (ia64_initialize_trampoline): Fix for VMS ABI.
12808         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
12809         (ia64_function_arg): Initialize reg 25 on VMS.
12810         Fix OpenVMS ABI issues for varargs.
12811         For OpenVMS, emit the Argument Information register set in the
12812         incoming/sibcall case as well.
12813         (ia64_arg_type): New function.
12814         (ia64_function_arg_advance): Keep track of cum->words.
12815         Fix OpenVMS ABI issues for varargs.
12816         (ia64_function_value): On VMS, promote mode of non-aggregate types.
12817         (ia64_override_options): Set flag_no_common on VMS.
12818         (ia64_init_builtins): Disable FWRITE builtin.
12819         (ia64_asm_output_external): Call DO_CRTL_NAMES.
12820         (ia64_vms_init_libfuncs): Add decc$ routines.
12821         (ia64_vms_valid_pointer_mode): New function.
12822         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
12823         (ia64_promote_function_mode): New function
12824         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
12825         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
12826         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12827         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
12828         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
12829         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
12830         Suppress trailing '#' if VALUE is numeric.
12831         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
12832         ia64_promote_function_mode.
12833         (TARGET_VALID_POINTER_MODE): Define.
12834
12835 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12836
12837         PR target/40671
12838         * config/rs6000/rs6000.c (rs6000_override_options): Use
12839         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
12840
12841         PR target/41145
12842         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
12843         reporting of vector + decimal/boolean/complex error.
12844
12845 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
12846
12847         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
12848         __vector double TYPE_DECL.
12849
12850 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
12851
12852         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
12853         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
12854         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
12855         to pointer to enum machine_mode.  Update all callers as needed.
12856
12857 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
12858
12859         * config/alpha/alpha.md (exception_receiver): Emit alternative
12860         GP load sequence if flag_reorder_blocks_and_partition is set.
12861         (*exception_receiver_2): Also enable when
12862         flag_reorder_blocks_and_partition is set.
12863
12864 2009-08-20  Matt Rice  <ratmice@gmail.com>
12865             Diego Novillo  <dnovillo@google.com>
12866
12867         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
12868         tree-ssa-sccvn.h.
12869
12870 2009-08-20  Richard Guenther  <rguenther@suse.de>
12871
12872         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
12873         * c-tree.h (c_dup_lang_specific_decl): Remove.
12874         (struct lang_decl, struct lang_type): Move definitions ...
12875         * c-lang.h: ... here.  New file.
12876         * c-decl.c: Include c-lang.h.
12877         (c_dup_lang_specific_decl): Remove.
12878         * c-typeck.c: Include c-lang.h.
12879         * Makefile.in (c-decl.o): Add c-lang.h dependency.
12880         (c-typeck.o): Likewise.
12881         * c-config-lang.in (gtfiles): Add c-lang.h.
12882         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
12883         like c-tree.h.
12884
12885 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
12886
12887         * config/alpha/alpha.c (alpha_end_function): Do not clear
12888         crtl->emit structure and free insn locators if cfun->is_thunk is true,
12889         this is now handled in generic code.
12890
12891 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12892
12893         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
12894         (s390_z10_fix_long_loop_prediction): New function.
12895         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
12896         (s390_reorg): Walk over the INSNs and invoke
12897         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
12898
12899 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12900
12901         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
12902         "*brx_64bit", "*brx_31bit"): New patterns.
12903         * config/s390/s390.c ('E'): New output modifier.
12904
12905 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12906             Richard Earnshaw  <richard.earnshaw@arm.com>
12907
12908         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
12909         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
12910
12911 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12912
12913         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
12914         patterns.
12915         * pa.c (emit_move_sequence): Check if address of operand1 is valid
12916         for mode mode of operand0 when doing secondary reload for SAR.
12917
12918 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12919
12920         PR middle-end/41123
12921         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
12922         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
12923
12924 2009-08-19  Jason Merrill  <jason@redhat.com>
12925
12926         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
12927         supported template depth in C++0x.
12928
12929 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12930
12931         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
12932         free_after_compilation.
12933         * config/score/score7.c (score7_output_mi_thunk): Likewise.
12934         * config/score/score3.c (score3_output_mi_thunk): Likewise.
12935         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
12936         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12937         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12938         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12939         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12940
12941 2009-08-19  Ian Lance Taylor  <iant@google.com>
12942
12943         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
12944         of (plus (mult (neg B) C) A).
12945
12946 2009-08-18  Michael Matz  <matz@suse.de>
12947
12948         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
12949         instead of comparing TYPE_MAIN_VARIANT for equality.
12950         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
12951         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
12952         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
12953         * gimplify.c (goa_lhs_expr_p): Ditto and use
12954         STRIP_USELESS_TYPE_CONVERSION.
12955
12956 2009-08-18  Michael Matz  <matz@suse.de>
12957
12958         * tree-ssa-structalias.c (create_variable_info_for): Also mark
12959         first field in a struct.
12960         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
12961
12962 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
12963
12964         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
12965         locators before emit_insn is called.  Remove assert that
12966         cfun->is_thunk.
12967         (alpha_end_function): Clear crtl->emit structure and free insn
12968         locators if cfun->is_thunk is true.
12969
12970 2009-08-18  Jason Merrill  <jason@redhat.com>
12971
12972         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
12973         type if available.
12974         * configure.ac: Test for it.
12975         * configure, config.in: Regenerate.
12976         * doc/install.texi: Document --enable-gnu-unique-object.
12977
12978 2009-08-18  Richard Guenther  <rguenther@suse.de>
12979
12980         PR middle-end/41094
12981         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
12982         pow(x,y*z) only if x is nonnegative.
12983
12984 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
12985
12986         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
12987         on jumps.
12988
12989         PR target/40971
12990         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
12991         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
12992
12993 2009-08-17  DJ Delorie  <dj@redhat.com>
12994
12995         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
12996         * config/m32c/prologue.md (epilogue_freit): New.
12997         (fset_b): New.
12998         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
12999         (bank_switch_p): Likewise.
13000         (fast_interrupt_p): Likewise.
13001         (interrupt_p): Likewise.
13002         (m32c_conditional_register_usage): Round memregs size up.
13003         (need_to_save): We only need to save $a0 when we use ENTER.
13004         (interrupt_p): Check for fast_interrupt too.
13005         (bank_switch_p): New.
13006         (fast_interrupt_p): New.
13007         (m32c_attribute_table): Add bank_switch and fast_interrupt.
13008         (m32c_emit_prolog): Support bank switching and fast interrupts.
13009         * doc/extend.texi (Function Attributes): Add bank_switch and
13010         fast_interrupt.
13011
13012 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
13013
13014         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
13015         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
13016
13017 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
13018
13019         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
13020         (menu): Add IA-64/VMS Options.
13021         (IA-64/VMS Options): Likewise.
13022
13023 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
13024
13025         PR target/38599
13026         * config/mips/mips.md (*lwxs): Use :P for pointer values.
13027
13028 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
13029
13030         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
13031         (mips_pop_asm_switch): Likewise.
13032         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
13033         with...
13034         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
13035         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
13036         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
13037         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
13038         instead of set_noreorder.
13039         (mips_output_function_prologue): Use the new functions.
13040         (mips_output_function_epilogue): Likewise.
13041         (mips_need_noat_wrapper_p): New function, split out from...
13042         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
13043         Use mips_push_asm_switch and mips_pop_asm_switch.
13044         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
13045         and mips_pop_asm_switch.
13046         (ASM_OUTPUT_REG_POP): Likewise.
13047         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
13048         Use mips_pop_asm_switch.
13049         (mips_asm_switch): New structure.
13050         (set_noreorder, set_nomacro): Replace with...
13051         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
13052         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
13053         instead of set_nomacro.
13054         (fix_truncsfsi2_macro): Likewise.
13055         (cprestore): Likewise.
13056         (hazard): Use mips_noreorder instead of set_noreorder.
13057         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
13058
13059 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
13060
13061         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
13062         from prev_active_insn.
13063
13064 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
13065
13066         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
13067         * config/avr/avr.c (avr_override_options): Initialize
13068         avr_current_arch variable.
13069         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
13070         __AVR_HAVE_16BIT_SP__ according to the device type.
13071         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
13072         TARGET_TINY_STACK.
13073         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
13074         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
13075
13076 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
13077
13078         PR debug/37801
13079         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
13080         generating inlined subroutine die only. We shouldn't be
13081         called for anything else.
13082         (gen_block_die): Don't generate inline subroutine debug info for
13083         abstract blocks.
13084
13085 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
13086
13087         * graphite-poly.c (print_pbb): Print PBB index.
13088
13089 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
13090
13091         PR middle-end/40981
13092         * graphite-interchange.c (ppl_max_for_le): Moved...
13093         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
13094         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
13095         ppl_Pointset_Powerset_C_Polyhedron_maximize.
13096         * graphite-ppl.h (ppl_max_for_le): Declared.
13097
13098 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
13099
13100         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
13101         supported on all platforms.
13102         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
13103         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
13104         * c-pragma.c: Likewise.
13105         * target-def.h (TARGET_INITIALIZER): Remove
13106         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
13107         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
13108
13109 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
13110
13111         * config/ia64/fde-vms.c: New file.
13112         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
13113         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
13114         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
13115         (uw_frame_state_for): Only register a personality routine if it is
13116         known to be compatible with our expectations.
13117         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
13118         Declare unw_table_entry stack variable and
13119         mod all calls to _Unwind_FindTableEntry to add arg.
13120         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
13121         (_Unwind_FindTableEntry): Add arg to prototype.
13122
13123 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
13124
13125         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
13126         field 'signal_pfs_loc'.
13127         (uw_frame_state_for): Remove duplicate code dealing with leaf
13128         procedures without unwind info.
13129         If in the frame after unwinding through a signal handler, restore
13130         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
13131         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
13132         'pfs_loc' to the AR.PFS location in the signal context; instead
13133         set 'signal_pfs_loc'.
13134         Manually generate the unwind info for the AR.PFS register.
13135         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
13136         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
13137         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
13138         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
13139         instead set 'signal_pfs_loc'.
13140         Remove code preventing the AR.PFS register from being restored
13141         from the signal context.
13142
13143 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
13144             Tristan Gingold  <gingold@adacore.com>
13145
13146         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
13147         * config/ia64/t-vms: New file.
13148         * config/ia64/vms64.h: New file.
13149         * config/ia64/vms.h: New file.
13150         * config/ia64/vms-crtinit.asm: New file.
13151         * config/ia64/vms_symvec_libgcc_s.opt: New file.
13152         * config/ia64/vms-unwind.h: New file.
13153
13154 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
13155
13156         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
13157         TFmode compares.
13158
13159 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13160
13161         PR middle-end/30789
13162         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
13163         Move declaration...
13164         * real.h (do_mpc_arg2): ... here.
13165         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
13166         and RDIV_EXPR.
13167
13168 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
13169
13170         * final.c (add_debug_prefix_map): Don't use GC memory for
13171         old_prefix and new_prefix.
13172
13173 2009-08-14  Richard Guenther  <rguenther@suse.de>
13174
13175         * ipa-prop.c (compute_complex_pass_through): If we cannot
13176         compute a non-varying offset for IPA_JF_ANCESTOR punt.
13177
13178 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13179
13180         * c-lex.c (c_lex_with_flags): Increase size of local variable
13181         to avoid memory clobber.
13182
13183 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
13184
13185         PR target/40934
13186         * config/i386/i386.c (ix86_fp_comparison_strategy):
13187         Only enable/disable sahf at function granularity.
13188
13189 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
13190
13191         PR rtl-optimization/41064
13192         * reload1.c (reload_as_needed): Don't call extract_insn
13193         for known invalid replacements after calling
13194         validate_replace_rtx_group and verify_changes.
13195
13196 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
13197
13198         PR target/41019
13199         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
13200         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
13201         ix86_expand_fp_vcond.
13202         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
13203         Assert that operation is supported by ix86_expand_int_vcond.
13204         (vcondu<SSEMODE124C8:mode>): Ditto.
13205
13206 2009-08-13  DJ Delorie  <dj@redhat.com>
13207
13208         * config/i386/djgpp-stdint.h: New.
13209         * config.gcc (djgpp): Use it.
13210
13211 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13212
13213         * config/sh/sh.c (sh_override_options): When flag_exceptions or
13214         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
13215
13216 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13217
13218         * tree-ssa-loop-prefetch.c
13219         (prune_ref_by_group_reuse): Enhance probabilistic analysis
13220         for long-stride pruning.
13221         (compute_miss_rate): New function to compute the probability
13222         that two memory references access different cache lines.
13223
13224 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
13225
13226         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
13227
13228 2009-08-13  Richard Guenther  <rguenther@suse.de>
13229
13230         PR middle-end/41047
13231         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
13232         use the constant pointer type.
13233         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
13234         of CV qualifiers on the target pointer type.
13235         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
13236         conversion check before restrict check.
13237
13238 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13239
13240         PR target/41029
13241         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
13242
13243 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13244
13245         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
13246
13247 2009-08-12  Richard Guenther  <rguenther@suse.de>
13248
13249         PR tree-optimization/41011
13250         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
13251         and reference constructing.
13252
13253 2009-08-12  Xinliang David Li  <davidxl@google.com>
13254
13255         PR tree-optimization/41012
13256         * tree-flow.h : New external interface.
13257         * gimple-low.c (check_call_arg): Change to public function.
13258         Remove argument mismatch check in lowering.
13259         * tree-inline.h (tree_can_inline_p): Interface change.
13260         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
13261         into this function.
13262         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
13263         Call change to tree_can_inline_p function.
13264         (cgraph_decide_inlining_incrementally): Ditto.
13265
13266 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
13267
13268         PR tree-optimization/41031
13269         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
13270         on the partition variable rather than promote_mode on the source
13271         type.  Assert that the partition variable's type has the same
13272         mode as the source value's.
13273
13274 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
13275
13276         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
13277         for for_return == 2.
13278         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
13279         comments.
13280         * calls.c (expand_call): Fix typo.
13281         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
13282         and PARM_DECL.
13283         * stmt.c (expand_value_return): Use promote_function_mode to copy out
13284         of pseudo.
13285         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
13286         * config/cris/cris.c (cris_promote_function_mode): Likewise.
13287         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
13288         * config/pa/pa.c (pa_promote_function_mode): Likewise.
13289
13290 2009-08-12  Andrew Haley  <aph@redhat.com>
13291
13292         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
13293
13294 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13295
13296         PR bootstrap/40103
13297         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
13298
13299 2009-08-12  Richard Guenther  <rguenther@suse.de>
13300
13301         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
13302         * gimplify.c (gimplify_modify_expr): Do not use
13303         lang_hooks.types_compatible_p.
13304         * tree-ssa.c (useless_type_conversion_p): For aggregates
13305         just return false if the canonical types differ.
13306
13307 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13308
13309         PR middle-end/40980
13310         * sese.c (convert_for_phi_arg): New.
13311         (add_guard_exit_phis): Use convert_for_phi_arg.
13312
13313 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13314
13315         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
13316         unknown subscript upper bounds.
13317
13318 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13319             Pranav Garg  <pranav.garg2107@gmail.com>
13320
13321         * graphite-interchange.c (gather_access_strides): Removed.
13322         (ppl_max_for_le): New.
13323         (build_linearized_memory_access): New.
13324         (memory_stride_in_loop): New.
13325         (pbb_interchange_profitable_p): Reimplemented.
13326         * graphite-ppl.h (ppl_new_id_map): New.
13327         (ppl_interchange): New.
13328
13329 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13330
13331         * graphite-interchange.c (compute_subscript): Removed.
13332         (compute_array_size_cstr): Removed.
13333         (compute_array_size_poly): Removed.
13334         (compute_array_size): Removed.
13335         (gather_access_strides_poly): Removed.
13336         (gather_access_strides): Empty.
13337
13338 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13339
13340         * graphite-dependences.c (dependence_polyhedron_1): Replace
13341         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
13342         (graphite_legal_transform_dr): Same.
13343         (graphite_carried_dependence_level_k): Same.
13344         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
13345         Initialize PDR_NB_SUBSCRIPTS.
13346         (print_pdr_access_layout): Replace pdr_nb_subscripts with
13347         PDR_NB_SUBSCRIPTS.
13348         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
13349         (PDR_NB_SUBSCRIPTS): New.
13350         (pdr_nb_subscripts): Removed.
13351         (pdr_dim): Simplified.
13352         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
13353         with PDR_NB_SUBSCRIPTS.
13354
13355 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13356
13357         * graphite-interchange.c (compute_array_size): Remove use of
13358         PDR_DATA_CONTAINER.
13359         * graphite-poly.c (new_poly_dr): Remove argument data_container.
13360         Do not initialize PDR_DATA_CONTAINER.
13361         (print_pdr): Do not print PDR_DATA_CONTAINER.
13362         * graphite-poly.h (struct poly_dr): Remove data_container field.
13363         (PDR_DATA_CONTAINER): Removed.
13364         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
13365         PDR_DATA_CONTAINER.
13366         (build_poly_dr): Same.
13367
13368 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
13369             Sebastian Pop  <sebastian.pop@amd.com>
13370
13371         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
13372         copy of the dependence polyhedron.  Free the temporary objects.
13373         (graphite_carried_dependence_level_k): Free unused objects before
13374         returning.
13375
13376 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13377
13378         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
13379         Early return without analyzing the data dependences if no
13380         transform has been done.  Call restore_scattering if the transform
13381         is not legal.
13382         (graphite-interchange.c): Same.
13383         * graphite-poly.c (print_scattering_function): Test for
13384         PBB_TRANSFORMED.
13385         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
13386         (apply_poly_transforms): Do not gcc_assert that
13387         the transform is legal.
13388         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
13389         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
13390         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
13391         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
13392         * graphite-poly.h (struct poly_scattering): New.
13393         (struct poly_bb): Add original, transformed, and saved fields.
13394         Remove transformed_scattering, original_scattering,
13395         nb_local_variables and nb_scattering_transform fields.
13396         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
13397         (poly_scattering_new): New.
13398         (poly_scattering_free): New.
13399         (poly_scattering_copy): New.
13400         (store_scattering_pbb): New.
13401         (store_scattering): New.
13402         (restore_scattering_pbb): New.
13403         (restore_scattering): New.
13404         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
13405         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
13406
13407 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13408
13409         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
13410         (print_scop): Same.
13411
13412 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13413
13414         * Makefile.in (graphite.o): Depends on PREDICT_H.
13415         * graphite.c: Include predict.h.
13416         (graphite_finalize): Call tree_estimate_probability.
13417         * predict.c (predict_loops): Do not call scev_initialize and
13418         scev_finalize.
13419         (tree_estimate_probability_bb): New.
13420         (tree_estimate_probability): Do not initialize loops: move that
13421         code to the driver.  Call tree_estimate_probability_bb.
13422         (tree_estimate_probability_driver): New.
13423         (pass_profile): Use tree_estimate_probability_driver.
13424         * predict.h (tree_estimate_probability): Declared.
13425
13426 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13427
13428         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
13429         * graphite-dependences.c (graphite_legal_transform): Add time to
13430         TV_GRAPHITE_DATA_DEPS.
13431         (dependency_between_pbbs_p): Same.
13432         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
13433
13434 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
13435
13436         PR rtl-optimization/41033
13437         * alias.c (nonoverlapping_component_refs_p): Punt when strict
13438         aliasing is disabled.
13439
13440 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13441
13442         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
13443         si_mask_operand, and_load_operand, low_bitmask_operand,
13444         and_reg_operand, and_operand): New predicates.
13445         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
13446         * config/mips/mips.c (and_operands_ok): New function.
13447         * config/mips/mips-protos.h (and_operands_ok): Declare it.
13448         * config/mips/mips.md (move_type): Add ext_ins and logical.
13449         (type): Handle them.
13450         (and<mode>3): Use and_reg_operand as the second operand's predicate.
13451         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
13452         shift_shift.  Remove commutative constraint modifier.
13453         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
13454         shift_shift.
13455         (*clear_upper32_dext): Remove define_insn_and_split.
13456         (*clear_upper32): Turn this define_insn_and_split ...
13457         (splitter for ANDing register with 0xffff_ffff): .. into this.
13458
13459 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13460
13461         * combine.c (try_widen_shift_mode): Factor out code to check if an
13462         integer constant is a low-order bitmask from here ...
13463         * rtlanal.c (low_bitmask_len): ... to here.
13464         * rtl.h (low_bitmask_len): Declare.
13465
13466 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
13467
13468         PR target/8603
13469         * config/alpha/alpha.md (addsi3): Remove expander.
13470         (addsi3): Rename from *addsi3_internal insn pattern.
13471         (subsi3): Remove expander.
13472         (subsi3): Rename from *subsi3_internal insn pattern.
13473
13474 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
13475
13476         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
13477         FWRITE_UNLOCKED.
13478
13479 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
13480             Eric Botcazou  <botcazou@adacore.com>
13481             Douglas B Rupp  <rupp@gnat.com>
13482
13483         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
13484         that records that fit in 64 bits are returned by immediate value,
13485         as required by OpenVMS Calling Standard.
13486         (function_value): Adjust for above modification.
13487         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
13488         virtual_incoming_args_rtx as base object, not next_arg.
13489         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
13490
13491 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13492
13493         * reload.c (find_reloads_subreg_address): Check the original
13494         req_equiv_mem address to detect the case where an address is
13495         not valid in the outer mode.
13496
13497 2009-08-11  Richard Guenther  <rguenther@suse.de>
13498
13499         PR bootstrap/40788
13500         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
13501
13502 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
13503
13504         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
13505         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
13506
13507 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
13508             Douglas B Rupp  <rupp@gnat.com>
13509
13510         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
13511         PT_STACK when frame_pointer_needed on OpenVMS.
13512         (alpha_pv_save_size, alpha_using_fp): Remove.
13513         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
13514         with proper processing for PT_NULL.
13515         (alpha_vms_initial_elimination_offset): New function. Support for
13516         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
13517         (alpha_sa_size): Force procedure type to PT_STACK when
13518         frame_pointer_needed on OpenVMS.
13519         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
13520         (alpha_using_fp): Likewise.
13521         (alpha_vms_can_eliminate): Add prototype.
13522         (alpha_vms_initial_elimination_offset): Likewise.
13523         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
13524         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
13525
13526 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
13527             Douglas B Rupp  <rupp@gnat.com>
13528
13529         * config/alpha/alpha.c (common_object_handler): New function.
13530         (vms_attribute_table): Declare a single attribute "common_object".
13531         (vms_output_aligned_decl_common): New global function.
13532         (SECTION_VMS_OVERLAY): Delete.
13533         (SECTION_VMS_GLOBAL): Likewise.
13534         (SECTION_VMS_INITIALIZE): Likewise.
13535         (vms_asm_named_section): Remove support for above flags.
13536         (vms_section_type_flags): Delete.
13537         (TARGET_SECTION_TYPE_FLAGS): Likewise.
13538         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
13539         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
13540         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
13541
13542 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13543
13544         PR target/41015
13545         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
13546         (sub_ddmmss): Likewise.
13547
13548 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
13549
13550         PR bootstrap/41018
13551         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
13552         year.
13553
13554 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13555
13556         PR target/37053
13557         * reload1.c (reload_as_needed): Use cancel_changes to completely
13558         undo a failed replacement attempt.
13559
13560 2009-08-10  Richard Guenther  <rguenther@suse.de>
13561
13562         PR middle-end/41006
13563         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
13564         (useless_type_conversion_p): ... here.  Require pointer targets
13565         to be compatible.
13566
13567 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
13568
13569         PR c++/40866
13570         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
13571         loose the original type of the statement list.
13572
13573 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13574
13575         * config/alpha/alpha.c: Include libfuncs.h
13576         (avms_asm_output_extern): New function.
13577         (alpha_init_libfuncs): Init some decc libfuncs.
13578         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
13579         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
13580         (DO_CRTL_NAMES): Define.
13581         (LIB_SPEC): Remove.
13582         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
13583         (LONG_TYPE_SIZE): Define.
13584         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
13585         (SUBTARGET_SWITCHES): Define malloc64 switch.
13586         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
13587         (MASK_RETURN_ADDR): Define.
13588         doc/invoke.texi (mmalloc64): Document switch.
13589
13590 2009-08-09  Olivier Hainque  <hainque@adacore.com>
13591             Douglas B Rupp  <rupp@gnat.com>
13592
13593         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
13594         uses_condition_handler.
13595         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
13596         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
13597         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
13598         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
13599         (code_for_builtin): New insn codes for the new alpha_builtins.
13600         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
13601         (alpha_sa_size): Account for uses_condition_handler.
13602         (alpha_expand_prologue): Likewise.
13603         (alpha_start_function): Likewise.
13604         (alpha_expand_epilogue): Likewise.
13605         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
13606         establish/revert expanders.
13607         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
13608         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
13609         New expander, resorting to the alpha.c associated function.
13610         (builtin_revert_vms_condition_handler): Likewise.
13611         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
13612         __gcc_shell_handler, the static VMS condition handler used as
13613         an indirection wrapper to the current dynamically established
13614         handler.
13615         * config/alpha/vms-unwind.h: Complete rewrite.
13616         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
13617         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
13618
13619 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
13620             Douglas B Rupp  <rupp@gnat.com>
13621
13622         * config/alpha/alpha.c (alpha_links): Add 'target' field.
13623         (alpha_need_linkage): Handle aliases.  Return function symbol.
13624         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
13625         Use ultimate alias target for the linkage name.
13626         * config/alpha/alpha.md (movmemdi): Use the symbol returned
13627         by alpha_need_linkage for the function symbol.
13628         (setmemdi): Likewise.
13629
13630 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13631
13632         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
13633         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
13634         (ASM_WEAKEN_LABEL): Define.
13635         (CRT_CALL_STATIC_FUNCTION): Define.
13636         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
13637         (ENDFILE_SPEC): Define.
13638         (INIT_SECTION_ASM_OP): Define.
13639         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
13640         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
13641         crtend.o crtendS.o.
13642         (MULTILIB_OSDIRNAMES): Define.
13643         (shlib_version): Define.
13644         (SHLIB_EXT): Define.
13645         (SHLIB_OBJS): Define.
13646         (SHLIB_NAME): Define.
13647         (SHLIB_MULTILIB): Define.
13648         (SHLIB_INSTALL): Define.
13649         (SHLIB_SYMVEC): Define.
13650         (SHLIB_SYMVECX2): Define.
13651         (SHLIB_LINK): Define.
13652
13653 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13654
13655         * config/alpha/alpha.c (alpha_initialize_trampoline):
13656         Initialize VMS trampoline IAW ABI for bounded procedure calls.
13657         (alpha_start_function): Emit transfer address on nested functions
13658         for VMS trampoline call.
13659         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
13660         since no longer used.
13661         * config/alpha/vms-tramp.asm: Remove.
13662         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
13663         since now only data initialized at runtime.
13664
13665 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13666
13667         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
13668         (LINK_GCC_C_SEQUENCE_SPEC): Define.
13669         (MD_EXEC_PREFIX): Remove, no longer used.
13670         (MD_STARTFILE_PREFIX): Likewise.
13671         (INCLUDE_DEFAULTS): Likewise.
13672         * config/alpha/t-vms:
13673         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
13674
13675 2009-08-09  Richard Guenther  <rguenther@suse.de>
13676
13677         PR tree-optimization/41016
13678         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
13679         (operand_precision): Remove.
13680         (integral_operand_p): Likewise.
13681         (recognize_single_bit_test): Adjust.
13682
13683 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13684
13685         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
13686         operation overflows.  Likewise non-cast unary arithmetic.
13687         If one arm of a conditional expression is always taken,
13688         inhibit evaluation warnings for the other arm.  Likewise inhibit
13689         evaluation warnings for the second && or || operand if the first
13690         operand is enough to determine the result.
13691         * c-typeck.c (build_conditional_expr): Apply the same inhibition
13692         rules here.
13693         (build_binary_op): Prevent duplicate evaluation warnings.
13694
13695 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13696
13697         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
13698         and destination have different modes, Use promote_mode to
13699         determine the signedness of the conversion.  Assert that the
13700         promoted source mode matches the destination mode.  Don't pass
13701         the destination and destination mode to expand_expr if the source
13702         mode is different.  Simplify conversion logic.
13703
13704 2009-08-09  Ira Rosen  <irar@il.ibm.com>
13705
13706         PR tree-optimization/41008
13707         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
13708         from condition only in case it's a comparison. Adjust checks.
13709
13710 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
13711
13712         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
13713         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
13714         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
13715         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
13716         (dump_cand): Handle them.
13717         (struct iv_cand): New members COST_STEP and AINC_USE.
13718         (stmt_after_increment): Likewise.
13719         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
13720         callers changed.  Use gimple_uid comparison instead of scanning.
13721         (add_candidate_1): When looking for identical candidates, take
13722         AINC_USE into account.  Set it for new candidates.
13723         (force_expr_to_var_cost): Cast target_spill_cost to int.
13724         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
13725         All callers changed.  Check for availability of autoinc addressing
13726         modes, both in general for a given mode, and in the specific use case.
13727         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
13728         changed.
13729         (get_computation_cost): Likewise.
13730         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
13731         add_autoinc_candidates): New static functions.
13732         (add_candidate): Call add_autoinc_candidates for candidates based on
13733         a USE_ADDRESS use.
13734         (find_iv_candidates): Call set_autoinc_for_original_candidates.
13735         (determine_use_iv_cost_address): If we have an autoinc candidate at
13736         the matching use, verify autoinc is possible and subtract the cost
13737         of the candidate's step from the cost.
13738         (determine_iv_cost): Record the cost of the increment in the COST_STEP
13739         member of the candidate.
13740         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
13741         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
13742
13743 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13744
13745         * config.build (ia64-hp-*vms*): New target.
13746         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13747         with ia64-hp-*vms*.
13748         * config.gcc (ia64-hp-*vms*): New target.
13749         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13750         with ia64-hp-*vms*.
13751         * config.host (ia64-hp-*vms*): New target.
13752         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13753         with ia64-hp-*vms*.
13754
13755 2009-08-08  Richard Guenther  <rguenther@suse.de>
13756
13757         PR tree-optimization/40991
13758         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
13759
13760 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
13761
13762         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
13763         mode check.  Do truncations in an integer mode.
13764         (force_to_mode): Handle subregs for all mode types.  Only do
13765         arithmetic simplifications on integer modes.
13766
13767 2009-08-07  Richard Guenther  <rguenther@suse.de>
13768
13769         PR tree-optimization/40999
13770         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
13771         (maybe_fold_reference): Lookup constant initializers.
13772         (fold_gimple_assign): Likewise.
13773
13774 2009-08-07  Richard Guenther  <rguenther@suse.de>
13775
13776         * tree-ssa.c (useless_type_conversion_p_1): Only for types
13777         that require structural equality defer to the langhook.
13778
13779 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13780
13781         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
13782         comments.
13783         (struct ipa_pass_through_data): New type.
13784         (struct ipa_ancestor_jf_data): New type.
13785         (union jump_func_value): Removed field formal_id, added fields
13786         pass_through and ancestor.
13787         (struct ipa_param_call_note): Changed type of formal_id to int from
13788         unsigned.
13789         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
13790         operations jump functions and ancestor jump functions.
13791         (compute_complex_pass_through): New function.
13792         (compute_scalar_jump_functions): Call compute_complex_pass_through,
13793         reflect changes in the jump function strucutre.
13794         (update_jump_functions_after_inlining): Ignore complex pass-through
13795         and ancestor jump functions.
13796         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
13797         polynomial pass-through with operation jump functions.
13798
13799 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
13800
13801         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
13802         fde->dw_fde_begin as begin label instead of hot/cold label.
13803         Use LLSDAC label instead of LLSDA for second section lsda.
13804         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
13805         label instead of LLSDA if it is true.
13806         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
13807         callers.
13808         * except.c (add_call_site, dw2_size_of_call_site_table): Add
13809         SECTION argument.  Use it as index into crtl->eh.call_site_record
13810         array.
13811         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
13812         use it to determine how to print table entries instead of using
13813         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
13814         label instead of normal begin label as base.
13815         (sjlj_assign_call_site_values): Adjust add_call_site caller.
13816         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
13817         ensure no EH range spans between sections and that landing pads
13818         are always in the corresponding section.
13819         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
13820         for crtl->eh.call_site_record being an array rather than scalar.
13821         (output_one_function_exception_table): New function, copied
13822         from output_function_exception_table.  Adjust
13823         dw2_size_of_call_site_table, dw2_output_call_site_table
13824         callers.  For SECOND section use *C suffixed labels.
13825         (output_function_exception_table): Call
13826         output_one_function_exception_table and, when doing hot/cold
13827         partitioning, also another time for the second section.
13828         * opts.c: Include except.h.
13829         (decode_options): Allow -freorder-blocks-and-partition with
13830         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
13831         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
13832         * function.h (struct rtl_eh): Change call_site_record from
13833         scalar into array of 2 elements.
13834
13835 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13836
13837         * ipa-prop.c (count_formal_params_1): New function.
13838         (ipa_get_vector_of_formal_parms): New function.
13839         (get_vector_of_formal_parm_types): New function.
13840         (ipa_modify_formal_parameters): New function.
13841         (ipa_modify_call_arguments): New function.
13842         (index_in_adjustments_multiple_times_p): New function.
13843         (ipa_combine_adjustments): New function.
13844         (ipa_dump_param_adjustments): New function.
13845         * ipa-prop.h (struct ipa_parm_adjustment): New type.
13846         (ipa_get_vector_of_formal_parms): Declare.
13847         (ipa_modify_formal_parameters): Declare.
13848         (ipa_modify_call_arguments): Declare.
13849         (ipa_combine_adjustments): Declare.
13850         (ipa_dump_param_adjustments): Declare.
13851         (build_ref_for_offset): Declare.
13852         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
13853         * tree-sra.c: Include ipa-prop.c.
13854         (build_ref_for_offset): Make public.
13855
13856 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
13857
13858         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
13859
13860 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
13861
13862         * gcc/doc/extend.texi (__builtin_extract_return_address)
13863         (__builtin_frob_return_address): Document.
13864
13865 2009-08-06  Paul Brook  <paul@codesourcery.com>
13866
13867         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
13868         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
13869         implementation on ARMv6-M.
13870
13871 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13872
13873         * doc/extend.texi (pcs): Document new attribute for ARM.
13874
13875 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13876
13877         * arm.c (pcs_attribute_args): Comment out unsupported attribute
13878         variants.
13879
13880 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13881
13882         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
13883         warning ().
13884
13885 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13886
13887         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
13888
13889 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13890
13891         Merge ARM/hard_vfp_branch to trunk.
13892
13893         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
13894
13895         * arm.c (libcall_eq): New function.
13896         (libcall_hash): New function.
13897         (add_libcall): New function.
13898         (arm_libcall_uses_aapcs_base): New function.
13899         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
13900         libcalls using the base PCS.
13901         (arm_init_cumulative_args): Likewise.
13902
13903         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
13904
13905         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
13906         Use base ABI for conversion libfuncs between HFmode and SFmode.
13907
13908         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13909
13910         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
13911         V4SImode as representatives of all 64-bit and 128-bit vector
13912         types.  Allow vector types without vector modes.
13913         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
13914         without vector modes like BLKmode.
13915         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
13916         BLKmode.  Avoid unsupported vector modes or TImode moves for
13917         non-TARGET_NEON.
13918         (aapcs_vfp_allocate_return_reg): Likewise.
13919         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
13920         V8QImode if TARGET_NEON || TARGET_IWMMXT.
13921
13922         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13923
13924         * config/arm/arm.c (arm_handle_pcs_attribute): New.
13925         (arm_get_pcs_model): Pass attribute arguments to
13926         arm_pcs_from_attribute.
13927         (arm_init_cumulative_args): Use base AAPCS for conversions from
13928         floating-point types to DImode.
13929         (arm_attribute_table): Add pcs attribute.
13930         (arm_handle_pcs_attribute): New.
13931         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
13932         conversions from floating-point types to DImode, also declare them
13933         to use base AAPCS and declare functions they call to use base
13934         AAPCS and their RTABI names.
13935
13936         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13937
13938         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
13939         -mfloat-abi=hard not being supported for VFP.
13940
13941         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
13942
13943         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
13944         SYMBOL_REF to hard_libcall_value.
13945
13946         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13947             Richard Earnshaw  <rearnsha@arm.com>
13948
13949         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
13950         has been put on the stack, all remaining co-processory arguments for
13951         that co-processor also go on the stack.
13952
13953         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13954
13955         * config/arm/arm.c (arm_return_in_memory): Handle returning
13956         vectors of suitable size in registers also for AAPCS case.
13957
13958         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
13959
13960         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
13961
13962         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
13963
13964         ARM Hard-VFP calling convention
13965         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
13966         * target.h (gcc_target): Add libcall_value to table of call hooks.
13967         * targhooks.h (default_libcall_value): Default implementation.
13968         * targhooks.c (default_libcall_value): Likewise.
13969         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
13970         * optabs.c (expand_unop): Use it.
13971         * expr.h (hard_libcall_value): Pass the function RTX through.
13972         * calls.c (emit_library_call_value_1): Update call to
13973         hard_libcall_value.
13974         * explow.c (hard_libcall_value): Use new target hook.
13975         * config/arm/arm.c: Include cgraph.h
13976         (TARGET_FUNCTION_VALUE): Override default hook.
13977         (arm_pcs_default): New variable.
13978         (arm_override_options): Don't fault hard calling convention with VFP.
13979         Add support for AAPCS variants.
13980         (arm_function_value): Make static.  Handle AAPCS variants.
13981         (arm_libcall_value): New function.
13982         (arm_apply_result_size): Handle VFP registers in results.
13983         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
13984         conventions.
13985         (pcs_attribute_args): New variable.
13986         (arm_pcs_from_attribute): New function.
13987         (arm_get_pcs_model): New function.
13988         (aapcs_vfp_cum_init): New function.
13989         (aapcs_vfp_sub_candidate): New function.
13990         (aapcs_vfp_is_return_candidate): New function.
13991         (aapcs_vfp_is_call_candidate): New function.
13992         (aapcs_vfp_allocate): New function.
13993         (aapcs_vfp_allocate_return_reg): New function.
13994         (aapcs_vfp_advance): New function.
13995         (aapcs_cp_arg_layout): New variable.
13996         (aapcs_select_call_coproc): New function.
13997         (aapcs_select_return_coproc): New function.
13998         (aapcs_allocate_return_reg): New function.
13999         (aapcs_libcall_value): New function.
14000         (aapcs_layout_arg): New function.
14001         (arm_init_cumulative_args): Initialize AAPCS args data.
14002         (arm_function_arg): Handle AAPCS variants using new interface.
14003         (arm_arg_parital_bytes): Likewise.
14004         (arm_function_arg_advance): New function.
14005         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
14006         calling conventions.
14007         (arm_setup_incoming_varargs): Handle new AAPCS args data.
14008         * arm.h (NUM_VFP_ARG_REGS): Define.
14009         (LIBCALL_VALUE): Update.
14010         (FUNCTION_VALUE): Delete.
14011         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
14012         (arm_pcs): New enum.
14013         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
14014         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
14015         (FUNCTION_ARG_REGNO_P): Add VFP regs.
14016         * arm-protos.h (arm_function_arg_advance): Add.
14017         (aapcs_libcall_value): Add.
14018         (arm_function_value): Delete.
14019
14020 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
14021             H.J. Lu  <hongjiu.lu@intel.com>
14022
14023         PR target/40957
14024         * config/i386/i386.c (standard_sse_mode_p): Remove.
14025         (standard_sse_constant_p): Return 2 for integer mode
14026         vector_all_ones_operand when SSE2 is enabled.
14027         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
14028         (ix86_expand_vector_move): Do not check for negative values from
14029         standard_sse_constant_p.
14030
14031 2009-08-06  Richard Guenther  <rguenther@suse.de>
14032
14033         * tree-ssa.c (useless_type_conversion_p_1): Make function and
14034         array type comparisons frontend independent.
14035         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
14036         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
14037         out array reference lower bound and element size operands.
14038         (ao_ref_init_from_vn_reference): Properly compute the offset
14039         for ARRAY_RANGE_REF.
14040         (vn_reference_fold_indirect): Fill out array reference lower
14041         bound and element size operands.
14042         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
14043         a non gimple valued reference operand which can happen for
14044         array reference lower bound or element size.
14045         (create_component_ref_by_pieces_1): Properly generate the
14046         element size operand for array references.
14047
14048 2009-08-06  Richard Guenther  <rguenther@suse.de>
14049
14050         PR tree-optimization/40964
14051         * tree.c (iterative_hash_host_wide_int): Export.
14052         * tree.h (iterative_hash_host_wide_int): Declare.
14053         * tree-ssa-structalias.c (heapvar_map): New struct.
14054         (heapvar_map_eq): New function.
14055         (heapvar_map_hash): Likewise.
14056         (heapvar_lookup): Adjust.
14057         (heapvar_insert): Likewise.
14058         (make_constraint_from_heapvar): Allow multiple heap variables
14059         per decl at different offsets.
14060         (init_alias_heapvars): Adjust.
14061
14062 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
14063
14064         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
14065         * mips_output_sync_loop (mips_output_sync_loop): Only emit
14066         trailing sync if TARGET_SYNC_AFTER_SC.
14067
14068 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
14069
14070         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
14071         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
14072         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
14073         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
14074         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
14075         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
14076         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
14077         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
14078         test_and_set_12): Rewrite calls to mips_output_sync_loop.
14079         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
14080         the prototype declaration match the definition.
14081         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
14082         instructions explicitly.  Add barrier_before and operands
14083         parameters.
14084         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
14085         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
14086         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
14087         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
14088         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
14089         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
14090
14091 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
14092
14093         * tree-ssa-alias.c: Fix intervals to use [) syntax.
14094
14095 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
14096             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
14097
14098         PR target/40906
14099         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
14100         source operand.
14101
14102 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
14103
14104         PR rtl-optimization/40924
14105         * dse.c (canon_address): Before calling cselib_expand_value_rtx
14106         make sure canon_rtx (mem_address) isn't simpler than
14107         canon_rtx (expanded_mem_address).
14108
14109 2009-08-05  Li Feng  <nemokingdom@gmail.com>
14110
14111         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
14112         for each poly_bb_p.
14113         (build_scop_drs): Build alias set for each SCoP.
14114
14115 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
14116
14117         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
14118         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
14119         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
14120         (MIPS_ARCH_FLOAT_SPEC): Likewise.
14121         (BASE_DRIVER_SELF_SPECS): Likewise.
14122
14123 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
14124
14125         * tree-ssa-alias.c: Fix some comment typos.
14126
14127 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
14128
14129         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
14130         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
14131
14132 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
14133
14134         PR c/39902
14135         * simplify-rtx.c (simplify_binary_operation_1): Disable
14136         simplifications for decimal float operations.
14137
14138 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
14139
14140         PR middle-end/40943
14141         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
14142         operand of INDIRECT_REF.
14143
14144 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
14145
14146         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
14147         constants referencing TLS symbols.
14148
14149 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
14150
14151         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
14152         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
14153
14154 2009-08-03  Richard Guenther  <rguenther@suse.de>
14155
14156         * tree.c (make_vector_type): Build a main variant first,
14157         get the canonical one and then build the variant.
14158         * tree-ssa.c (useless_type_conversion_p_1): Handle
14159         fixed-point types.
14160         (useless_type_conversion_p): Conversions to pointers to
14161         incomplete record types are useless.
14162
14163 2009-08-03  Richard Guenther  <rguenther@suse.de>
14164
14165         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
14166         file will be created.
14167         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
14168         * toplev.c (compile_file): Adjust comment.
14169
14170 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14171
14172         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
14173         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
14174         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14175         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
14176         (sh_promote_function_mode): Fix typo.
14177
14178 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
14179
14180         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
14181
14182 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14183
14184         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
14185         declaration arguments.
14186
14187 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
14188
14189         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
14190         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
14191         (ix86_split_ashl): Ditto.
14192         (ix86_expand_vector_init_one_nonzero): Ditto.
14193         (ix86_expand_vector_set): Ditto.
14194         (ix86_expand_reduc_v4sf): Ditto.
14195
14196 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
14197
14198         * explow.c (promote_function_mode): Remove assert.
14199         * config/sh/sh.c (sh_promote_function_mode): Declare.
14200
14201 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14202
14203         * config/pa/pa.c (pa_promote_function_mode): Declare.
14204         Change to static.  Fix promote_mode call.
14205
14206         * gthr-dce.h (CONST_CAST2): Define if not defined.
14207         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
14208
14209         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
14210
14211 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
14212
14213         * expr.c (store_constructor): Use promote_decl_mode.  Remove
14214         now write-only variable unsignedp.
14215         (expand_expr_real_1): Use promote_decl_mode.
14216         * expr.h (promote_function_mode, promote_decl_mode): New.
14217         (promote_mode): Remove last argument.
14218         * function.c (assign_temp): Drop last argument of promote_mode.
14219         (assign_parm_find_data_types): Use promote_function_mode.
14220         (assign_parm_setup_reg): Likewise.
14221         (expand_function_end): Use promote_function_mode.
14222         * calls.c (initialize_argument_information): Use promote_function_mode.
14223         (precompute_arguments): Use promote_mode instead of checking if
14224         only PROMOTE_FUNCTION_MODE is defined.
14225         (expand_call): When making sibcall decisions, use promote_function_mode.
14226         Below, remove an if for targetm.calls.promote_function_return and
14227         and use promote_function_mode.
14228         (emit_library_call_value_1): Use promote_function_mode, fix bug
14229         where promote_mode was passed FOR_CALL == 0 for a return value in an
14230         assertion.
14231         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
14232         * explow.c (promote_function_mode, promote_decl_mode): New.
14233         (promote_mode): Keep only the FOR_CALL == 0 case.
14234         * combine.c (setup_incoming_promotion): Remove test of
14235         promote_function_args.  Use promote_function_mode.
14236         * stmt.c (expand_value_return): Use promote_decl_mode.
14237         (expand_decl): Use promote_decl_mode.
14238
14239         * expr.c (store_constructor): Use promote_decl_mode.  Remove
14240         now write-only variable unsignedp.
14241         (expand_expr_real_1): Use promote_decl_mode.
14242         * expr.h (promote_function_mode, promote_decl_mode): New.
14243         (promote_mode): Remove last argument.
14244         * function.c (assign_temp): Drop last argument of promote_mode.
14245         (assign_parm_find_data_types): Use promote_function_mode.
14246         (assign_parm_setup_reg): Likewise.
14247         (expand_function_end): Use promote_function_mode.
14248         * calls.c (initialize_argument_information): Use promote_function_mode.
14249         (precompute_arguments): Use promote_mode instead of checking if
14250         only PROMOTE_FUNCTION_MODE is defined.
14251         (expand_call): When making sibcall decisions, use promote_function_mode.
14252         Below, remove an if for targetm.calls.promote_function_return and
14253         and use promote_function_mode.
14254         (emit_library_call_value_1): Use promote_function_mode, fix bug
14255         where promote_mode was passed FOR_CALL == 0 for a return value in an
14256         assertion.
14257         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
14258         * explow.c (promote_function_mode, promote_decl_mode): New.
14259         (promote_mode): Keep only the FOR_CALL == 0 case.
14260         * combine.c (setup_incoming_promotion): Remove test of
14261         promote_function_args.  Use promote_function_mode.
14262         * stmt.c (expand_value_return): Use promote_decl_mode.
14263         (expand_decl): Use promote_decl_mode.
14264
14265         * explow.c (promote_function_mode): Just call the target hook.
14266         * targhooks.c (default_promote_function_mode,
14267         default_promote_function_mode_always_promote): New.
14268         * targhooks.h (default_promote_function_mode,
14269         default_promote_function_mode_always_promote): Declare.
14270         * target.h (promote_function_args, promote_function_return): Remove.
14271         (promote_function_mode): New.
14272         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
14273         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14274         (TARGET_PROMOTE_FUNCTION_MODE): New.
14275         (TARGET_CALLS): Adjust.
14276         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
14277         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
14278
14279         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
14280         * config/s390/s390.c (s390_promote_function_mode): ... here,
14281         with pointer handling.
14282         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14283         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14284
14285         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
14286         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
14287         with pointer handling.
14288         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14289         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14290
14291         * config/sh/sh-protos.h (sh_promote_function_mode): New.
14292         * config/sh/sh.c (sh_promote_function_mode): New.
14293         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14294         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14295
14296         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
14297         * config/cris/cris.c (cris_promote_function_mode): ... here.
14298         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14299         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
14300
14301         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
14302         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
14303         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14304         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
14305
14306         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
14307         * config/arm/arm.c (arm_promote_function_mode): ... here, without
14308         complex type handling.
14309         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14310         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14311
14312         * config/pa/pa.c (pa_promote_function_mode): New.
14313         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14314         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14315
14316         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
14317         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14318         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
14319         * config/xtensa/xtensa.c: Likewise.
14320         * config/stormy16/stormy16.c: Likewise.
14321         * config/iq2000/iq2000.c: Likewise.
14322         * config/rs6000/rs6000.c: Likewise.
14323         * config/picochip/picochip.c: Likewise.
14324         * config/arc/arc.c: Likewise.
14325         * config/mcore/mcore.c: Likewise.
14326         * config/score/score.c: Likewise.
14327         * config/mips/mips.c: Likewise.
14328         * config/bfin/bfin.c: Likewise.
14329         * config/ia64/ia64.c: Likewise (disabled though).
14330
14331         * config/frv/frv.h: Remove pointless remark.
14332
14333         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
14334         TARGET_PROMOTE_FUNCTION_ARGS,
14335         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
14336         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
14337
14338 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
14339
14340         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
14341         -floop-parallelize-all.
14342         * toplev.c (process_options): Rename flag_graphite_force_parallel to
14343         flag_loop_parallelize_all.
14344         * tree-ssa-loop.c (gate_graphite_transforms): Same.
14345         * graphite.c (graphite_transform_loops): Same.
14346         * common.opt: Same.
14347         * graphite-poly.c (apply_poly_transforms): Same.
14348
14349 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
14350
14351         PR tree-optimization/40914
14352         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
14353         if set, then check the delta field of the PMF record.
14354         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
14355         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
14356         call is stored in the delta.
14357
14358 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
14359
14360         * config/mips/mips.md (*clear_upper32_dext): New pattern.
14361
14362 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
14363
14364         * config/i386/bsd.h (ASM_BYTE): New define.
14365         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
14366         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
14367         .byte.  Use fputs or putc instead of fprintf where appropriate.
14368         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
14369         fputs or putc instead of fprintf where appropriate.
14370         * config/i386/i386elf.h: Ditto.
14371         * config/i386/sysv4.h: Ditto.
14372
14373         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
14374         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
14375         (*tls_global_dynamic_64): Ditto.
14376
14377 2009-07-31  Christian Bruel  <christian.bruel@st.com>
14378
14379         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
14380
14381 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14382
14383         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
14384         Remove dead code for MINUS.
14385
14386 2009-07-31  Anthony Green  <green@moxielogic.com>
14387
14388         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
14389         $r12 in prologue.
14390         (moxie_expand_epilogue): Ditto for epilogue.
14391         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
14392         incoming arguments.
14393         (moxie_function_arg): Ditto.
14394         (moxie_pass_by_reference): Ditto.
14395         (moxie_arg_partial_bytes): Ditto.
14396         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
14397         (FUNCTION_ARG_ADVANCE) Ditto.
14398         (REG_PARM_STACK_SPACE) Ditto.
14399         (FUNCTION_ARG_REGNO_P) Dito.
14400
14401         * config.gcc: Add moxie linux config support.
14402         * gcc/config/moxie/uclinux.h: New file.
14403
14404 2009-07-31  DJ Delorie  <dj@redhat.com>
14405
14406         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
14407         (UNSPECV_SP_SWITCH_E): New.
14408         (sp_switch_1): Change to an unspec.
14409         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
14410         replace $r15.
14411         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
14412         reference the new stack's address
14413
14414 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14415
14416         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
14417         graphite-clast-to-gimple.o, graphite-dependences.o,
14418         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14419         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
14420         (graphite-blocking.o,
14421         graphite-clast-to-gimple.o, graphite-dependences.o,
14422         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14423         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
14424         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
14425         * cfgloop.h (struct loop): Add can_be_parallel field.
14426         * common.opt (fgraphite-identity): Moved up.
14427         (fgraphite-force-parallel): New flag.
14428         * graphite.c: Rewrite.
14429         * graphite.h: Rewrite.
14430         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
14431         after Graphite.
14432         * toplev.c (graphite_out_file): New file descriptor.
14433         (graphite_in_file): New.
14434         (process_options): flag_graphite_force_parallel cannot be used without
14435         Graphite.
14436         * tree-ssa-loop.c: Include toplev.h.
14437         (gate_graphite_transforms): Enable flag_graphite for
14438         flag_graphite_force_parallel.
14439
14440 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14441
14442         * ChangeLog.graphite: New.
14443         * graphite-blocking.c: New.
14444         * graphite-clast-to-gimple.c: New.
14445         * graphite-clast-to-gimple.h: New.
14446         * graphite-dependences.c: New.
14447         * graphite-dependences.h: New.
14448         * graphite-interchange.c: New.
14449         * graphite-poly.c: New.
14450         * graphite-poly.h: New.
14451         * graphite-ppl.c: New.
14452         * graphite-ppl.h: New.
14453         * graphite-scop-detection.c: New.
14454         * graphite-scop-detection.h: New.
14455         * graphite-sese-to-poly.c: New.
14456         * graphite-sese-to-poly.h: New.
14457         * sese.c: New.
14458         * sese.h: New.
14459
14460 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14461
14462         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
14463         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
14464
14465 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14466
14467         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
14468         (scev_is_linear_expression): Return false if the evolution is not
14469         affine multivariate.
14470
14471 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14472
14473         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
14474         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
14475
14476 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14477
14478         * tree-data-ref.c (debug_data_references): New.
14479         (debug_data_reference): New.
14480         * tree-data-ref.h (debug_data_references): Declared.
14481         (debug_data_reference): Declared.
14482
14483 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14484
14485         * tree-data-ref.c (stmt_simple_memref_p: Removed.
14486         * tree-data-ref.h (scop_p): Removed.
14487         (struct data_reference): Remove field scop.
14488         (DR_SCOP): Removed.
14489         (stmt_simple_memref_p): Removed.
14490
14491 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14492
14493         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
14494         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
14495         basic block empty.
14496
14497 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14498
14499         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
14500
14501 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14502
14503         * doc/invoke.texi (-fgraphite-identity): Documented.
14504
14505 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14506
14507         * tree-scalar-evolution.c: Fix comment.
14508         (instantiate_scev_1): Return unknow from scev instantiation if the
14509         result is not above instantiate_below.
14510
14511 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14512
14513         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
14514         static anymore.  Instantiate the symbols that may have been introduced
14515         by chrec_apply.
14516         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
14517         Declared.
14518
14519 2009-07-30  DJ Delorie  <dj@redhat.com>
14520
14521         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
14522         .vliw directive to VLIW sections.
14523
14524 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14525
14526         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
14527         New variables.
14528         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
14529         (AUTOHEADER): New variable.
14530         ($(srcdir)/cstamp-h.in): Use it.
14531
14532 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
14533             Pat Haugen  <pthaugen@us.ibm.com>
14534             Revital Eres <ERES@il.ibm.com>
14535
14536         * config/rs6000/vector.md (VEC_F): Add VSX support.
14537         (VEC_A): Ditto.
14538         (VEC_N): Ditto.
14539         (mov<mode>): Ditto.
14540         (vector_load_<mode>): Ditto.
14541         (vector_store_<mode>): Ditto.
14542         (vector GPR move split): Ditto.
14543         (vec_reload_and_plus_<mptrsize>): Ditto.
14544         (vec_reload_and_reg_<mptrsize>): Ditto.
14545         (add<mode>3): Ditto.
14546         (sub<mode>3): Ditto.
14547         (mul<mode>3): Ditto.
14548         (neg<mode>2): Ditto.
14549         (abs<mode>2): Ditto.
14550         (smin<mode>3): Ditto.
14551         (smax<mode>3): Ditto.
14552         (vector_eq<mode>): Ditto.
14553         (vector_gt<mode>): Ditto.
14554         (vector_ge<mode>): Ditto.
14555         (vector_gtu<mode>): Ditto.
14556         (vector_select_<mode>_uns): Ditto.
14557         (vector_eq_<mode>_p): Ditto.
14558         (vector_gt_<mode>_p): Ditto.
14559         (vector_ge_<mode>_p): Ditto.
14560         (vector_gtu_<mode>_p): Ditto.
14561         (cr6_test_for_zero): Ditto.
14562         (cr6_test_for_zero_reverse): Ditto.
14563         (cr6_test_for_lt): Ditto.
14564         (cr6_test_for_lt_reverse): Ditto.
14565         (xor<mode>3): Ditto.
14566         (ior<mode>3): Ditto.
14567         (and<mode>3): Ditto.
14568         (one_cmpl<mode>2): Ditto.
14569         (nor<mode>2): Ditto.
14570         (andc<mode>2): Ditto.
14571         (float<VEC_int<mode>2): Ditto.
14572         (unsigned_float<VEC_int><mode>2): Ditto.
14573         (fix_trunc<mode><VEC_int>2): Ditto.
14574         (fixuns_trunc<mode><VEC_int>2): Ditto.
14575         (vec_init<mode>):
14576         (vec_set<mode>): Ditto.
14577         (vec_extract<mode>): Ditto.
14578         (vec_interleave_highv4sf): Ditto.
14579         (vec_interleave_lowv4sf): Ditto.
14580         (vec_realign_load_<mode>): Ditto.
14581         (vec_shl_<mode>): Ditto.
14582         (vec_shr_<mode>): Ditto.
14583         (div<mode>3): New patterns for VSX.
14584         (vec_interleave_highv2df): Ditto.
14585         (vec_interleave_lowv2df): Ditto.
14586         (vec_pack_trunc_v2df): Ditto.
14587         (vec_pack_sfix_trunc_v2df): Ditto.
14588         (vec_pack_ufix_trunc_v2df): Ditto.
14589         (vec_unpacks_hi_v4sf): Ditto.
14590         (vec_unpacks_lo_v4sf): Ditto.
14591         (vec_unpacks_float_hi_v4si): Ditto.
14592         (vec_unpacks_float_lo_v4si): Ditto.
14593         (vec_unpacku_float_hi_v4si): Ditto.
14594         (vec_unpacku_float_lo_v4si): Ditto.
14595         (movmisalign<mode>): Ditto.
14596         (vector_ceil<mode>2): New patterns for vectorizing math library.
14597         (vector_floor<mode>2): Ditto.
14598         (vector_btrunc<mode>2): Ditto.
14599         (vector_copysign<mode>3): Ditto.
14600
14601         * config/rs6000/predicates.md (easy_vector_constant_msb): New
14602         predicate for setting the high bit in each word, used for copysign.
14603
14604         * config/rs6000/ppc-asm.h (f19): Whitespace.
14605         (f32-f63): Define if VSX.
14606         (v0-v31): Define if Altivec.
14607         (vs0-vs63): Define if VSX.
14608
14609         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
14610
14611         * config/rs6000/power7.md: New file, provide tuning parameters for
14612         -mcpu=power7.
14613
14614         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
14615         (rs6000_cpu_cpp_builtins): Ditto.
14616         (altivec_overloaded_builtins): Ditto.
14617         (altivec_resolve_overloaded_builtin): Ditto.
14618
14619         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
14620         debug switch to disable vectorizing simple math builtin
14621         functions.
14622
14623         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
14624         Vectorize simple math builtin functions.
14625         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
14626         hook to vectorize math builtins.
14627         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
14628         (rs6000_builtin_conversion): Add VSX/power7 support.
14629         (rs6000_builtin_vec_perm): Ditto.
14630         (vsplits_constant): Add support for loading up a vector constant
14631         with just the high bit set in each part.
14632         (rs6000_expand_vector_init): Add VSX/power7 support.
14633         (rs6000_expand_vector_set): Ditto.
14634         (rs6000_expand_vector_extract): Ditto.
14635         (rs6000_emit_move): Ditto.
14636         (bdesc_3arg): Ditto.
14637         (bdesc_2arg): Ditto.
14638         (bdesc_1arg): Ditto.
14639         (rs6000_expand_ternop_builtin): Ditto.
14640         (altivec_expand_builtin): Ditto.
14641         (rs6000_expand_unop_builtin): Ditto.
14642         (rs6000_init_builtins): Ditto.
14643         (altivec_init_builtins): Ditto.
14644         (builtin_function_type): Ditto.
14645         (rs6000_common_init_builtins): Ditto.
14646         (rs6000_handle_altivec_attribute); Ditto.
14647         (rs6000_mangle_type): Ditto.
14648         (rs6000_vector_mode_supported_p): Ditto.
14649         (rs6000_mode_dependent_address): Altivec addresses with AND -16
14650         are mode dependent.
14651
14652         * config/rs6000/vsx.md: New file for VSX support.
14653
14654         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
14655         identifing values with just the most significant bit set.
14656         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
14657         vectorized builtins.
14658
14659         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
14660         (UNSPEC_VRFIM): Delete.
14661         (splitter for loading up vector with most significant bit): New
14662         splitter for vectorizing copysign.
14663         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
14664         vectorizing simple math functions.
14665         (altivec_vrfip): Add support for vectorizing simple math functions.
14666         (altivec_vrfim): Ditto.
14667         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
14668
14669         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
14670         (power7.md, vsx.md): Include for power7 support.
14671         (copysigndf3): Use VSX instructions if -mvsx.
14672         (negdf2_fpr): Ditto.
14673         (absdf2_fpr): Ditto.
14674         (nabsdf2_fpr): Ditto.
14675         (adddf3_fpr): Ditto.
14676         (subdf3_fpr): Ditto.
14677         (muldf3_fpr): Ditto.
14678         (divdf3_fpr): Ditto.
14679         (fix_truncdfdi2_fpr): Ditto.
14680         (cmpdf_internal1): Ditto.
14681         (fred, fred_fpr): Convert into expander/insn to add VSX support.
14682         (btruncdf2, btruncdf2_fpr): Ditto.
14683         (ceildf2, ceildf2_fpr): Ditto.
14684         (floordf2, floordf2_fpr): Ditto.
14685         (floatdidf2, floatdidf2_fpr): Ditto.
14686         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
14687         (fmsubdf4_fpr): Ditto.
14688         (fnmadddf4_fpr_1): Ditto.
14689         (fnmadddf4_fpr_2): Ditto.
14690         (fnmsubdf4_fpr_1): Ditto.
14691         (fnmsubdf4_fpr_2): Ditto.
14692         (fixuns_truncdfdi2): Add expander for VSX support.
14693         (fix_truncdfdi2): Ditto.
14694         (fix_truncdfsi2): Ditto.
14695         (ftruncdf2): Ditto.
14696         (btruncsf2): Whitespace.
14697         (movdf_hardfloat32): Add support for VSX registers.
14698         (movdf_softfloat32): Ditto.
14699         (movdf_hardfloat64): Ditto.
14700         (movdf_hardfloat64_mfpgpr): Ditto.
14701         (movdf_softfloat64): Ditto.
14702         (movti splitters): Add check for vector registers supporting
14703         TImode in the future.
14704         (bpermd): Add power7 bpermd instruction.
14705
14706         * config/rs6000/altivec.h (vec_div): Define if VSX.
14707         (vec_mul): Ditto.
14708         (vec_msub): Ditto.
14709         (vec_nmadd): Ditto.
14710         (vec_nearbyint): Ditto.
14711         (vec_rint): Ditto.
14712         (vec_sqrt): Ditto.
14713         (all predicates): Use the generic builtin function, and not the V4SF
14714         specific function so that the predicates will work with VSX's V2DF.
14715         (vec_all_*): Ditto.
14716         (vec_any_*): Ditto.
14717
14718         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
14719         Document new VSX functions and types.
14720
14721         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
14722         switches.
14723
14724         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
14725         "wa", and "j" constraints.  Modify "v" to talk about Altivec
14726         instead of just vector.
14727
14728 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
14729
14730         PR debug/26475
14731         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
14732         location for phi arguments.
14733         (rewrite_update_phi_arguments): Find locations for reaching defs.
14734         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
14735         Add location to add_phi_arg calls.
14736         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
14737         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
14738         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
14739         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
14740         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
14741         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
14742         * tree-phinodes.c (make_phi_node): Initialize location.
14743         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
14744         (add_phi_arg): Add location parameter.
14745         (remove_phi_arg_num): Move location when moving phi argument.
14746         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
14747         location.
14748         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
14749         slpeel_update_phi_nodes_for_guard1,
14750         slpeel_update_phi_nodes_for_guard2,
14751         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
14752         vect_loop_versioning): Set locations.
14753         * tree-parloops.c (create_phi_for_local_result,
14754         transform_to_exit_first_loop, create_parallel_loop): Add locations.
14755         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
14756         * tree-vect-loop.c (get_initial_def_for_induction,
14757         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
14758         locations.
14759         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
14760         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
14761         (gimple_phi_arg_set_location): New.  Set locus.
14762         (gimple_phi_arg_has_location): New.  Check for locus.
14763         (redirect_edge_var_map_location): New.  Return locus from var_map.
14764         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
14765         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
14766         combining PHI arguments.
14767         (cond_store_replacement): Set location.
14768         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
14769         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
14770         scop_add_exit_phis_edge): Add locations.
14771         * tree-cfgcleanup.c (remove_forwarder_block,
14772         remove_forwarder_block_with_phi): Add locations.
14773         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
14774         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
14775         locations.
14776         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
14777         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
14778         flush_pending_stmts): Add source location.
14779         * lambda-code.c (perfect_nestify): Maintain location stack with argument
14780         stack to preserve locations.
14781         * tree-vect-stmts.c (vectorizable_load): Add location.
14782         * tree-inline.c (copy_phis_for_bb): Copy locus.
14783         (setup_one_parameter): Add call locus to inlined parameter stmts.
14784         (initialize_inlined_parameters): Pass in call location as parameter
14785         assignment locus.
14786         (tree_function_versioning): Pass location to setup_one_parameter.
14787         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
14788         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
14789         copy and edge lists.
14790         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
14791         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
14792         locus parameter and override the stmt default if provided.
14793         (new_elim_graph, clear_elim_graph, delete_elim_graph,
14794         elim_graph_add_edge, elim_graph_remove_succ_edge,
14795         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
14796         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
14797         eliminate_phi):  Add locus info in elimination graph for each edge and
14798         value copy.
14799         (insert_backedge_copies): Copy locus if present.
14800         * tree-flow.h (struct _edge_var_map): Add locus field.
14801         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
14802         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
14803         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
14804         locations.
14805         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
14806
14807 2009-07-30  Martin Jambor  <mjambor@suse.cz>
14808
14809         PR tree-optimization/40570
14810         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
14811         use inlining loops.
14812
14813 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
14814
14815         * ssa-loop-manip.c: Include langhooks.h.
14816         (rewrite_phi_with_iv): New.
14817         (rewrite_all_phi_nodes_with_iv): New.
14818         (canonicalize_loop_ivs): Move here from tree-parloops.c.
14819         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
14820         * tree-parloops.c (loop_parallel_p): Move out all conditions
14821         except dependency check.
14822         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
14823         (gen_parallel_loop): Call canonicalize_loop_ivs without
14824         reduction_list argument.
14825         (build_new_reduction): New.
14826         (gather_scalar_reductions): New.
14827         (try_get_loop_niter): New.
14828         (try_create_reduction_list): New.
14829         (parallleize_loops): Change the parallel conditions check.
14830         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
14831         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
14832
14833 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
14834
14835         * opt-functions.awk (opt_args): Allow argument to be enclosed in
14836         curly braces.
14837         * doc/options.texi (Option properties):  Mention new quoting syntax.
14838
14839 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14840
14841         * config/alpha/alpha.c (alpha_start_function):
14842         Handle VMS_DEBUG_MAIN_POINTER
14843         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
14844         * doc/invoke.texi: Document -mdebug-main switch.
14845
14846 2009-07-29  Richard Henderson  <rth@redhat.com>
14847
14848         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
14849         (cgraph_create_edge_including_clones): Likewise.
14850         * tree-inline.c (copy_bb): Operate on the correct edges
14851         when updating the callgraph.
14852
14853 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14854
14855         * config/alpha/vms-cc.c: Deleted.
14856         * config/alpha/vms-ld.c: Deleted.
14857         * config/alpha/t-vms64: Moved to config/vms
14858         * config/alpha/vms-crt0-64.c: Moved to config/vms
14859         * config/alpha/vms-crt0.c: Moved to config/vms
14860         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
14861         * config/alpha/vms-psxcrt0.c: Moved to config/vms
14862         * config/alpha/xm-vms.h: Moved to config/vms
14863         * config/alpha/x-vms: Moved to config/vms
14864         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
14865         config/vms/t-vms.
14866         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
14867         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
14868         (version): Set.
14869         * config/vms/t-vms64: Moved here from config/alpha
14870         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
14871         (argc,argv,envp): Enforce 32bit malloc'ing.
14872         * config/vms/vms-psxcrt0-64.c: Likewise.
14873         * config/vms/vms-crt0.c: Moved here from config/alpha.
14874         * config/vms/vms-psxcrt0.c: Likewise.
14875         * config/vms/vms-crtl-64.h: New file.
14876         * config/vms/vms-crtl.h: New file.
14877         * config/vms/vms.opt: New file.
14878         * config/vms/xm-vms64.h: New file.
14879         * config/vms/xm-vms.h: Moved here from config/alpha.
14880         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
14881         Set.
14882         * config/vms/x-vms: Moved here from config/alpha.
14883         (version, VMS_EXTRA_PARTS): Moved to t-vms.
14884         (vms-ld.o, vms-cc.o): Removed.
14885         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
14886
14887 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14888
14889         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
14890         correct stack (obvious VMS fix).
14891
14892 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14893
14894         * dwarf2out.c (output_file_names): Output VMS style file name, size,
14895         date, version info if VMS_DEBUGGING_INFO defined.
14896         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
14897         size, date calculating code moved here.
14898
14899 2009-07-29  Paul Brook  <paul@codesourcery.com>
14900
14901         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
14902         do_push/do_pop.
14903
14904 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
14905
14906         PR target/40577
14907         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
14908         to DImode when generating insq_le insn.
14909
14910 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14911
14912         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
14913         New macro set for VMS_DEBUGGGING_INFO.
14914         (AT_string_form): Use it.
14915
14916 2009-07-28  DJ Delorie  <dj@redhat.com>
14917
14918         * config/mep/mep.c (vtext_section): New.
14919         (vftext_section): New.
14920         (ftext_section): New.
14921         (mep_select_section): Add support for functions.
14922         (mep_unique_section): Likewise.
14923         (mep_asm_init_sections): Likewise.
14924         (mep_encode_section_info): Remove it from here.
14925
14926         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
14927
14928 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
14929
14930         * tree.h (TREE_DEPRECATED): Document it is used for types too.
14931         (TYPE_VECTOR_OPAQUE): Use default_def_flag
14932
14933 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14934
14935         * dwarf2out.c (output_file_names): Test new macro
14936         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
14937         (add_comp_dir_attribute): Likewise.
14938
14939 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
14940
14941         * config/i386/mingw-w64.h (LINK_SPEC): Add
14942         separating space between commands.
14943
14944 2009-07-28  Jan Hubicka  <jh@suse.cz>
14945
14946         PR tree-optimization/40759
14947         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
14948         for renaming.
14949
14950 2009-07-27  DJ Delorie  <dj@redhat.com>
14951
14952         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
14953         types are dword-aligned.
14954         (mep_expand_va_start): Likewise.
14955
14956 2009-07-27  Olivier Hainque  <hainque@adacore.com>
14957             Douglas B Rupp  <rupp@gnat.com>
14958
14959         * convert.c (convert_to_pointer): Don't assume the target
14960         pointer type is POINTER_SIZE long. Fetch its precision instead.
14961
14962 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
14963
14964         * system.h (fopen): Undefine if macro.
14965
14966 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
14967
14968         * dwarf2out.c (output_cfi_p): Removed.
14969         (output_cfis): New function.
14970         (output_fde): New function, split from output_call_frame_info.
14971         (output_call_frame_info): Use it.
14972         (dwarf2out_switch_text_section): Use output_cfis.
14973
14974 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14975
14976         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
14977         TARGET_BI_ARCH is specified without enabling SJLJ.
14978         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
14979         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
14980
14981 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
14982
14983         * arm.md (negdi2): Use DImode if forcing a value into a register.
14984
14985 2009-07-26  Ira Rosen  <irar@il.ibm.com>
14986
14987         PR tree-optimization/40801
14988         * tree-vect-stmts.c (vectorizable_call): Get previous copy
14989         of vector operand from the previous copy of vector statement.
14990         Pass the correct definition type value to
14991         vect_get_vec_def_for_stmt_copy().
14992
14993 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14994
14995         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
14996         const char ** conversion.
14997
14998 2009-07-25 David Daney <ddaney@caviumnetworks.com>
14999
15000         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
15001         fancy_abort() if !ENABLE_ASSERT_CHECKING.
15002         (gcc_unreachable): Invoke __builtin_unreachable() if
15003         !ENABLE_ASSERT_CHECKING.
15004
15005 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
15006
15007         PR rtl-optimization/40445
15008         * emit-rtl.c (next_nonnote_insn_bb): New function.
15009         * rtl.h (next_nonnote_insn_bb): Declare new function.
15010         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
15011         with no successors that is the successor of the ENTRY_BLOCK.
15012         Continue from the top after removing an empty fallthrough block.
15013         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
15014         of next_nonnote_insn.
15015
15016 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
15017
15018         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
15019
15020 2009-07-25  Martin Jambor  <mjambor@suse.cz>
15021
15022         * c-common.c (c_common_attribute_table): New element for noclone.
15023         (handle_noclone_attribute): New function. Forward-declare.
15024         * tree-inline.c (tree_versionable_function_p): Check for noclone
15025         attribute.
15026         * doc/extend.texi (Labels as Values): Document need for noclone.
15027         (Function Attributes): Document noclone attribute.
15028
15029 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
15030
15031         PR rtl-optimization/34999
15032         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
15033         and dw_fde_switched_cold_to_hot fields.
15034         (output_cfi_p): New function.
15035         (output_call_frame_info): If fde->dw_fde_switched_sections,
15036         output 2 FDEs instead of one with corrupted header.
15037         (dwarf2out_do_cfi_startproc): New function.
15038         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
15039         and fde->dw_fde_switched_cold_to_hot.
15040         (dwarf2out_switch_text_section): Compute
15041         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
15042         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
15043         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
15044         Otherwise, compute fde->dw_fde_switch_cfi.
15045
15046 2009-07-24  Cary Coutant  <ccoutant@google.com>
15047
15048         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
15049
15050 2009-07-24  Cary Coutant  <ccoutant@google.com>
15051
15052         * cfghooks.c (split_block): Copy discriminator to new block.
15053         * tree-cfg.c (assign_discriminator): Check location of last
15054         instruction in block as well as first.
15055
15056 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
15057
15058         * config/i386/linux.c: Use fputs or putc instead of fprintf
15059         where appropriate.
15060         * config/i386/gas.h: Ditto.
15061         * config/i386/x86-64.h: Ditto.
15062         * config/i386/att.h: Ditto.
15063
15064 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
15065
15066         * expmed.c (emit_store_flag): Use a recursive call to optimize the
15067         xor case.
15068
15069 2009-07-24  Martin Jambor  <mjambor@suse.cz>
15070
15071         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
15072         (ipa_push_func_to_list_1): Declare.
15073         (ipa_push_func_to_list): New function.
15074
15075         * ipa-prop.c (ipa_push_func_to_list_1): New function.
15076         (ipa_init_func_list): Call ipa_push_func_to_list_1.
15077         (ipa_push_func_to_list): Removed.
15078         (ipa_pop_func_from_list): Clear node_enqueued flag.
15079
15080 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15081
15082         * config/s390/s390.c (override_options): Default
15083         max-unrolled-insns to 100 for z10 tuning.
15084
15085 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
15086
15087         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
15088         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
15089         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
15090         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
15091         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
15092         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
15093         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
15094
15095 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
15096
15097         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
15098         use default set in mingw32.h header.
15099         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
15100         64-bit /mingw/include path.
15101         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
15102         path.
15103
15104 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
15105
15106         PR rtl-optimization/40209
15107         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
15108
15109 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
15110
15111         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
15112         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
15113         with the rest of string where appropriate.  Use fputs or putc
15114         instead of fprintf where appropriate.
15115
15116 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
15117             Pat Haugen  <pthaugen@us.ibm.com>
15118             Revital Eres <ERES@il.ibm.com>
15119
15120         * config/rs6000/vector.md: New file.  Move most of the vector
15121         expander support here from altivec.md to allow for the VSX vector
15122         unit in the future.  Add support for secondary_reload patterns.
15123         Rewrite the patterns for vector comparison, and vector comparison
15124         predicate instructions so that the RTL expresses the desired
15125         behavior, instead of using unspec.
15126
15127         * config/rs6000/constraints.md ("f" constraint): Use
15128         rs6000_constraints to hold the precalculated register class.
15129         ("d" constraint): Ditto.
15130         ("wd" constraint): New constraint for VSX.
15131         ("wf" constraint): Ditto.
15132         ("ws" constraint): Ditto.
15133         ("wa" constraint): Ditto.
15134         ("wZ" constraint): Ditto.
15135         ("j" constraint): Ditto.
15136
15137         * config/rs6000/predicates.md (vsx_register_operand): New
15138         predicate for VSX.
15139         (vfloat_operand): New predicate for vector.md.
15140         (vint_operand): Ditto.
15141         (vlogical_operand): Ditto.
15142         (easy_fp_constant): If VSX, 0.0 is an easy constant.
15143         (easy_vector_constant): Add VSX support.
15144         (altivec_indexed_or_indirect_operand): New predicate for
15145         recognizing Altivec style memory references with AND -16.
15146
15147         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
15148         for vector secondary reload support.
15149         (rs6000_vector_reg_class): Delete, replacing it with
15150         rs6000_constraints.
15151         (rs6000_vsx_reg_class): Ditto.
15152         (rs6000_constraints): New array to hold the register classes of
15153         each of the register constraints that can vary at runtime.
15154         (builtin_mode_to_type): New static array for builtin function type
15155         creation.
15156         (builtin_hash_table): New static hash table for builtin function
15157         type creation.
15158         (TARGET_SECONDARY_RELOAD): Define target hook.
15159         (TARGET_IRA_COVER_CLASSES): Ditto.
15160         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
15161         registers are 128 bits if VSX memory reference instructions are used.
15162         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
15163         unit is being used.
15164         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
15165         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
15166         Print several of the scheduling related parameters.
15167         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
15168         rs6000_constraints instead of rs6000_vector_reg_class.  Move
15169         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
15170         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
15171         Altivec.  Add VSX support.  Setup for secondary reload support on
15172         Altivec/VSX registers.
15173         (rs6000_override_options): Make power7 set the scheduling groups
15174         like the power5.  Add support for new debug switches to override
15175         the scheduling defaults.  Temporarily disable -mcpu=power7 from
15176         setting -mvsx.  Add support for debug switches -malways-hint,
15177         -msched-groups, and -malign-branch-targets.
15178         (rs6000_buitlin_conversion): Add support for returning unsigned
15179         vector conversion functions to fix regressions due to stricter
15180         type checking.
15181         (rs6000_builtin_mul_widen_even): Ditto.
15182         (rs6000_builtin_mul_widen_odd): Ditto.
15183         (rs6000_builtin_vec_perm): Ditto.
15184         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
15185         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
15186         to zero a register.
15187         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
15188         generated upstream.
15189         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
15190         VSX types for bit operations.  Changes to accomidate vector.md.
15191         (bdesc_2arg): Ditto.
15192         (bdesc_1arg): Ditto.
15193         (struct builtin_description_predicates): Rewrite predicate
15194         handling so that RTL describes the operation, instead of passing
15195         the instruction to be used as a string argument.
15196         (bdesc_altivec_preds): Ditto.
15197         (altivec_expand_predicate_builtin): Ditto.
15198         (altivec_expand_builtin): Ditto.
15199         (rs6000_expand_ternop_builtin): Use a switch instead of an if
15200         statement for vsldoi support.
15201         (altivec_expand_ld_builtin): Change to use new names from vector.md.
15202         (altivec_expand_st_builtin): Ditto.
15203         (paired_expand_builtin): Whitespace changes.
15204         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
15205         builtin_mode_to_type table for secondary reload.  Call
15206         builtin_function_type to build random builtin functions.
15207         (altivec_init_builtins): Change to use builtin_function_type to
15208         create builtin function types dynamically as we need them.
15209         (builtin_hash_function): New support for hashing the tree types
15210         for builtin function as we need it, rather than trying to build
15211         all of the trees that we need.  Add initial preliminary VSX support.
15212         (builtin_function_type): Ditto.
15213         (builtin_function_eq): Ditto.
15214         (builtin_hash_struct): Ditto.
15215         (rs6000_init_builtins): Ditto.
15216         (rs6000_common_init_builtins): Ditto.
15217         (altivec_init_builtins): Ditto.
15218         (rs6000_common_init_builtins): Ditto.
15219         (enum reload_reg_type): New enum for simplifing reg classes.
15220         (rs6000_reload_register_type): Simplify register classes into GPR,
15221         Vector, and other registers.  Altivec and VSX addresses in reload.
15222         (rs6000_secondary_reload_inner): Ditto.
15223         (rs6000_ira_cover_classes): New target hook, that returns the
15224         appropriate cover classes, based on -mvsx being used or not.
15225         (rs6000_secondary_reload_class): Add VSX support.
15226         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
15227         (get_vsel_insn): Ditto.
15228         (rs6000_emit_vector_compare): Rewrite vector conditional support
15229         so that where we can, we use RTL operators, instead of blindly use
15230         UNSPEC.
15231         (rs6000_emit_vector_select): Ditto.
15232         (rs6000_emit_vector_cond_expr): Ditto.
15233         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
15234         (create_TOC_reference): Add -mdebug=addr support.
15235         (emit_frame_save): VSX loads/stores need register indexed addressing.
15236
15237         * config/rs6000/rs6000.md: Include vector.md.
15238
15239         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
15240
15241         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
15242         support for V2DI, V2DF in logical, permute, select operations.
15243
15244         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
15245         switch for vsx/power7.
15246         (-mvsx-scalar-memory): Ditto.
15247         (-mvsx-align-128): Ditto.
15248         (-mallow-movmisalign): Ditto.
15249         (-mallow-df-permute): Ditto.
15250         (-msched-groups): Ditto.
15251         (-malways-hint): Ditto.
15252         (-malign-branch-targets): Ditto.
15253
15254         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
15255         hook instead.
15256         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
15257         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
15258         (rs6000_vector_reg_class): Delete.
15259         (rs6000_vsx_reg_class): Ditto.
15260         (enum rs6000_reg_class_enum): New enum for the constraints that
15261         vary based on target switches.
15262         (rs6000_constraints): New array to hold the register class for all
15263         of the register constraints that vary based on the switches used.
15264         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
15265         (enum rs6000_builtins): Add unsigned varients for the builtin
15266         declarations returned by target hooks for expanding multiplies,
15267         select, and permute operations.  Add VSX builtins.
15268         (enum rs6000_builtin_type_index): Add entries for VSX.
15269         (V2DI_type_node): Ditto.
15270         (V2DF_type_node): Ditto.
15271         (unsigned_V2DI_type_node): Ditto.
15272         (bool_long_type_node): Ditto.
15273         (intDI_type_internal_node): Ditto.
15274         (uintDI_type_internal_node): Ditto.
15275         (double_type_internal_node): Ditto.
15276
15277         * config/rs6000/altivec.md (whole file): Move all expanders to
15278         vector.md from altivec.md.  Rename insn matching functions to be
15279         altivec_foo.
15280         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
15281         (altivec_vcmp*): Ditto.
15282         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
15283         (VM): New iterator for moves that includes the VSX types.
15284         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
15285         (altivec_vperm_<mode>_uns): New, for unsigned types.
15286         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
15287         (altivec_eq<mode>): Ditto.
15288         (altivec_gt<mode>): Ditto.
15289         (altivec_gtu<mode>): Ditto.
15290         (altivec_eqv4sf): Ditto.
15291         (altivec_gev4sf): Ditto.
15292         (altivec_gtv4sf): Ditto.
15293         (altivec_vcmpbfp_p): Ditto.
15294
15295 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
15296
15297         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
15298         unsigned HWI.
15299
15300 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
15301
15302         PR target/40832
15303         * config/i386/i386.c (output_387_ffreep): Rewrite to use
15304         ASM_SHORT instead of .word.
15305         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
15306         instead of .word in asm template.
15307
15308 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
15309
15310         PR target/37488
15311         * ira-lives.c (bb_has_abnormal_call_pred): New function.
15312         (process_bb_node_lives): Use it.
15313
15314         * ira.c (setup_cover_and_important_classes): Don't setup
15315         ira_important_class_nums.  Add cover classes to the end of
15316         important classes.
15317         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
15318         New.
15319         (find_reg_class_closure): Use reorder_important_classes.
15320
15321         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
15322
15323         * config/i386/i386.c (i386_ira_cover_classes): New function.
15324         (TARGET_IRA_COVER_CLASSES): Redefine.
15325
15326         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
15327         importance of order of cover classes in the array.
15328
15329 2009-07-22  Diego Novillo  <dnovillo@google.com>
15330
15331         * tree-pass.h (TDF_EH): Define.
15332         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
15333         contains TDF_EH, print the EH region number holding GS.
15334         * tree-dump.c (dump_options): Add "eh".
15335         * doc/invoke.texi: Document it.
15336
15337 2009-07-22  Doug Kwan  <dougkwan@google.com>
15338
15339         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
15340
15341 2009-07-22  Michael Matz  <matz@suse.de>
15342
15343         PR tree-optimization/35229
15344         PR tree-optimization/39300
15345
15346         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
15347         (inhibit_phi_insertion): New function.
15348         (insert_into_preds_of_block): Call it for REFERENCEs.
15349         (init_pre): Initialize and finalize scalar evolutions.
15350         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
15351
15352 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
15353
15354         * config/i386/predicates.md (zero_extended_scalar_load_operand):
15355         Use CONST_VECTOR_NUNITS to determine number of elements.
15356
15357 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
15358
15359         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
15360         (U, W): Constraints are now deprecated and will be removed if we
15361         run out of letters.
15362         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
15363         the file.
15364         ("prefetch"): Add the stcmh instruction for prefetching.
15365         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
15366         changes.
15367         (s390_short_displacement): Return always true if compiling for
15368         machines not providing the long displacement facility.
15369         (s390_mem_constraint): Support the new constraint letter Z.
15370         (s390_check_qrst_address): New function.
15371
15372 2009-07-21  DJ Delorie  <dj@redhat.com>
15373
15374         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
15375         alone too.
15376
15377 2009-07-21  Jason Merrill  <jason@redhat.com>
15378
15379         * c-common.c (max_tinst_depth): Increase default to 1024.
15380
15381 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
15382
15383         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
15384         (vec_unpacku_float_lo_v4si): Ditto.
15385
15386 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
15387
15388         PR target/40811
15389         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
15390         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
15391         (builtin_description): Add __builtin_ia32_cvtudq2ps.
15392         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
15393
15394 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
15395
15396         PR tree-optimization/40813
15397         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
15398         it.
15399
15400 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
15401
15402         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
15403         with a NOP_EXPR if needed.
15404
15405 2009-07-21  Paul Brook <paul@codesourcery.com>
15406
15407         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
15408         Terminate debug dump with newline.
15409
15410 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15411
15412         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
15413         Cast "1" to unsigned HOST_WIDE_INT.
15414         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
15415         deposit length to the maximum length - lsb.  Extend length if
15416         HOST_BITS_PER_WIDE_INT is 32.
15417
15418 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
15419
15420         * cgraph.h (constant_pool_htab): New function.
15421         (constant_descriptor_tree): Move from varasm.c.
15422         * varasm.c (constant_pool_htab): New function.
15423         (constant_descriptor_tree): Move to cgraph.h.
15424
15425 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
15426
15427         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
15428
15429 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
15430
15431         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
15432         $(VARRAY_H).
15433
15434 2009-07-20  Xinliang David Li  <davidxl@google.com>
15435
15436         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
15437
15438 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
15439
15440         * config/mips/mips.md (move_type): Add arith.
15441         (type): Handle arith.
15442         (zero_extendsidi2): Rename this into ...
15443         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
15444         (zero_extendsidi2): New expander.
15445         (*zero_extendsidi2_dext): New pattern.
15446
15447 2009-07-20  Nick Clifton  <nickc@redhat.com>
15448
15449         * config.gcc (mips64-*-*): Add definition of tm_defines in order
15450         to set MIPS_ABI_DEFAULT.
15451         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
15452
15453 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
15454
15455         * tree-object-size.c (addr_object_size): Handle unions with
15456         array in it as last field of structs in __bos (, 1) as __bos (, 0).
15457
15458         PR tree-optimization/40792
15459         * tree.c (build_function_type_skip_args): Remove bogus assert.
15460
15461 2009-07-20  Jan Hubicka  <jh@suse.cz>
15462             Martin Jambor  <mjambor@suse.cz>
15463
15464         * cgraph.h (combined_args_to_skip): New field.
15465         * cgraph.c (cgraph_create_virtual_clone): Properly handle
15466         combined_args_to_skip and args_to_skip.
15467         * tree-inline.c (update_clone_info): New function.
15468         (tree_function_versioning): Call update_clone_info.
15469         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
15470         functions.
15471         (cgraph_materialize_all_clones): More extensive dumping, working
15472         with combined_args_to_skip rather than args_to_skip.
15473
15474 2009-07-20  Ira Rosen  <irar@il.ibm.com>
15475
15476         * tree-vectorizer.h (vectorizable_condition): Add parameters.
15477         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
15478         (get_initial_def_for_reduction): Likewise.
15479         (vectorizable_reduction): Skip the check of first operand in case
15480         of COND_EXPR. Add check that it is outer loop vectorization if
15481         nested cycle was detected. Call vectorizable_condition() for
15482         COND_EXPR. If reduction epilogue cannot be created do not fail for
15483         nested cycles (if it is not double reduction). Assert that there
15484         is only one type in the loop in case of COND_EXPR. Call
15485         vectorizable_condition() to vectorize COND_EXPR.
15486         * tree-vect-stmts.c (vectorizable_condition): Update comment.
15487         Add parameters. Allow nested cycles if called from
15488         vectorizable_reduction(). Use reduction vector variable if provided.
15489         (vect_analyze_stmt): Call vectorizable_reduction() before
15490         vectorizable_condition().
15491         (vect_transform_stmt): Update call to vectorizable_condition().
15492
15493 2009-07-20  Christian Bruel  <christian.bruel@st.com>
15494
15495         * config/sh/sh.opt (-mfmovd): Resurrect and document.
15496         * doc/invoke.texi (-mfmovd): Likewise.
15497         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
15498
15499 2009-07-20  Jan Hubicka  <jh@suse.cz>
15500
15501         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
15502         when handling SSA name.
15503
15504 2009-07-19  Jan Hubicka  <jh@suse.cz>
15505
15506         PR tree-optimization/40676
15507         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
15508         virtual PHIs in empty BBs.
15509
15510 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15511
15512         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
15513         re-expanded the compound use gen_lowpart instead to convert to the
15514         desired mode.
15515
15516 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15517
15518         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
15519         OUTER_CONST arguments.
15520         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
15521         the new wider mode will be masked off.
15522         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
15523
15524 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15525
15526         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
15527         high-order bits are zero.
15528
15529 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15530
15531         * combine.c (simplify_shift_const_1): Split code to determine
15532         shift_mode into ...
15533         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
15534         new bits shifted in are identical to the old sign bit.
15535
15536 2009-07-18  Richard Guenther  <rguenther@suse.de>
15537
15538         PR c/40787
15539         * gimplify.c (gimplify_call_expr): Reject code using results from
15540         functions returning void.
15541
15542 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15543
15544         * doc/md.texi: Document the new PowerPC "es" constraint.
15545         Document that "m" can include automodified addresses on this target,
15546         and explain how %U must be used.  Extend the "Q" and "Z" documentation
15547         to suggest "es" as well as "m".
15548         * config/rs6000/constraints.md (es): New memory constraint.
15549         (Q, Z): Update strings to match new documentation.
15550
15551 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15552
15553         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
15554         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
15555         * config/rs6000/predicates.md (volatile_mem_operand): Use
15556         offsettable_nonstrict_memref_p.
15557         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
15558         (*floatunssidf2_internal): Likewise.
15559         (*fix_truncdfsi2_internal): Likewise.
15560         (*fix_trunctfsi2_internal): Likewise.
15561
15562 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
15563
15564         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
15565         atmega32u2 devices.
15566         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15567
15568 2009-07-17  Richard Guenther  <rguenther@suse.de>
15569
15570         PR c/40401
15571         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
15572         (pass_warn_unused_result): Likewise.
15573         (TODO_set_props): Remove.
15574         * omp-low.c (diagnose_omp_structured_block_errors): Change to
15575         run as a pass.
15576         (pass_diagnose_omp_blocks): Define.
15577         * c-decl.c (pop_file_scope): Do not finalize the CU here.
15578         (c_gimple_diagnostics_recursively): Remove.
15579         (finish_function): Do not call it.
15580         (c_write_global_declarations): Continue after errors.
15581         Finalize the CU here.
15582         * c-gimplify.c (c_genericize): Do not gimplify here.
15583         * c-common.c (c_warn_unused_result): Move ...
15584         * tree-cfg.c (do_warn_unused_result): ... here.
15585         (run_warn_unused_result): New function.
15586         (gate_warn_unused_result): New function.
15587         (pass_warn_unused_result): New pass.
15588         * c-common.h (c_warn_unused_result): Remove.
15589         * flags.h (flag_warn_unused_result): Declare.
15590         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
15591         * opts.c (flag_warn_unused_result): Initialize to false.
15592         * toplev.c (compile_file): Add comment.
15593         * omp-low.c (create_omp_child_function): Do not register
15594         the function with the frontend.
15595         (diagnose_omp_structured_block_errors): Prepare to be
15596         called as optimization pass.
15597         (gate_diagnose_omp_blocks): New function.
15598         (pass_diagnose_omp_blocks): New pass.
15599         * cgraph.h (cgraph_optimize): Remove.
15600         (cgraph_analyze_function): Likewise.
15601         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
15602         * cgraphunit.c (cgraph_lower_function): Lower nested functions
15603         before their parents here.
15604         (cgraph_finalize_function): Not here.
15605         (cgraph_analyze_function): Gimplify functions here.
15606         (cgraph_finalize_compilation_unit): Continue after errors.
15607         Optimize the callgraph from here.
15608         (cgraph_optimize): Make static.
15609         * langhooks.c (write_global_declarations): Finalize the CU.
15610         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
15611         (gimplify_function_tree): Assert we gimplify only once.
15612         Set PROP_gimple_any property.
15613         * tree-nested.c (gimplify_all_functions): New function.
15614         (lower_nested_functions): Gimplify all nested functions.
15615         * gimple.h (diagnose_omp_structured_block_errors): Remove.
15616         * passes.c (init_optimization_passes): Add pass_warn_unused_result
15617         and pass_diagnose_omp_blocks after gimplification.  Do not
15618         set TODO_set_props on all_lowering_passes.
15619         (execute_one_pass): Do not handle TODO_set_props.
15620         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
15621         (gimplify.o): Add tree-pass.h dependency.
15622         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
15623         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
15624         (unsave_r): Likewise.
15625         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
15626         temporary variable.
15627
15628 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
15629
15630         * doc/service.texi (Service): Restore previously removed link,
15631         which isn't broken after all.
15632
15633 2009-07-17  Richard Guenther  <rguenther@suse.de>
15634
15635         PR tree-optimization/40321
15636         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
15637         PHI nodes to the maximal set.
15638         (make_values_for_phi): Add PHI arguments to the maximal set.
15639         (execute_pre): Dump PHI_GEN and the maximal set.
15640
15641 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
15642
15643         PR c++/40780
15644         * gimplify.c (gimplify_conversion): Don't change non-conversions into
15645         VIEW_CONVERT_EXPR.
15646
15647 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
15648
15649         * doc/extend.texi (Nested Functions): Replace broken link with
15650         textual reference.
15651         * doc/service.texi (Service): Remove broken link.
15652
15653 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
15654
15655         PR bootstrap/40781
15656         * builtins.c (expand_builtin_memcmp): Use loc instead of
15657         EXPR_LOCATION (exp).
15658         (expand_builtin_strncmp): Likewise.
15659
15660 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
15661             Manuel López-Ibáñez  <manu@gcc.gnu.org>
15662
15663         PR 40435
15664         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
15665         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
15666         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
15667         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
15668         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
15669         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
15670         tree-inline.c, c-common.c, c-common.h, gimple.c,
15671         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
15672         convert.c: Add location argument to fold_{unary,binary,ternary},
15673         fold_build[123], build_call_expr, build_size_arg,
15674         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
15675         fold_build1_initializer, fold_build2_initializer,
15676         fold_build3_initializer, fold_build_call_array,
15677         fold_build_call_array_initializer, fold_single_bit_test,
15678         omit_one_operand, omit_two_operands, invert_truthvalue,
15679         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
15680         combine_comparisons, fold_builtin_*, fold_call_expr,
15681         build_range_check, maybe_fold_offset_to_address, round_up,
15682         round_down.
15683
15684 2009-07-16  Jason Merrill  <jason@redhat.com>
15685
15686         PR libstdc++/37907
15687         * c-common.c (c_common_reswords): Add __is_standard_layout
15688         and __is_trivial.
15689         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
15690         * doc/implement-cxx.texi: New.
15691         * doc/gcc.texi: Include it.
15692
15693 2009-07-16  DJ Delorie  <dj@redhat.com>
15694
15695         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
15696         compares that may be indirectly affected by previous instructions.
15697
15698 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15699
15700         * builtins.c (do_mpc_arg2): New.
15701         (fold_builtin_2): Fold builtin cpow.
15702         * real.h (HAVE_mpc_pow): New.
15703
15704 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
15705
15706         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
15707         comparison to skip unprofitable schedule
15708
15709 2009-07-16  Simon Baldwin  <simonb@google.com>
15710
15711         * gcc.c (option_map): New flag -no-canonical-prefixes.
15712         * (display_help): Print help text for new flag.
15713         * (process_command): Move options translation and language specifics
15714         and handle new flag early.  Use it to set a function pointer to a
15715         prefix builder.  Replace make_relative_prefix calls with calls to
15716         the function pointed to.  Ignore new flag in regular options handling.
15717         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
15718
15719 2009-07-15  DJ Delorie  <dj@redhat.com>
15720
15721         * config/mep/mep.md (sibcall_internal): Change register to avoid
15722         argument registers.
15723         (sibcall_value_internal): Likewise.
15724
15725 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
15726
15727         PR rtl-optimization/40710
15728         * resource.c (mark_target_live_regs): Reset DF problem to LR.
15729
15730 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
15731
15732         * config/mips/mips.md (*extenddi_truncate<mode>,
15733         *extendsi_truncate<mode>): Change type attribute to move_type
15734         with shift_shift.  Split out code handling exts from here ...
15735         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
15736         pattern.
15737         (*extendhi_truncateqi): Change type attribute to move_type with
15738         shift_shift.  Split out code handling exts from here ...
15739         (*extendhi_truncateqi_exts): ... to this new pattern.
15740
15741 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
15742
15743         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
15744         instead of "and" with inverted sign bit mask value.  Use
15745         "nonimmediate_operand" for operand 1 and operand 2 predicate.
15746         Allocate registers only for operand 4 and operand 5.
15747
15748 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
15749
15750         PR middle-end/40747
15751         * fold-const.c (fold_cond_expr_with_comparison): When folding
15752         < and <= to MIN, make sure the MIN uses the same type as the
15753         comparison's operands.
15754
15755 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
15756
15757         * arm.md (ior_xor): New code iterator.
15758         (split for ior/xor with shift and zero-extend): New split pattern.
15759         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
15760
15761 2009-07-15  Richard Guenther  <rguenther@suse.de>
15762
15763         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
15764         offset member.
15765
15766 2009-07-15  Richard Guenther  <rguenther@suse.de>
15767
15768         PR middle-end/40753
15769         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
15770
15771 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15772
15773         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
15774         handle 2.6.30 kernel.
15775
15776 2009-07-15  DJ Delorie  <dj@redhat.com>
15777
15778         * config/mep/mep.md (sibcall_internal): Change register to allow
15779         for 24-bit addresses.
15780         (sibcall_value_internal): Likewise.
15781
15782 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15783
15784         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
15785         that are enabled/disabled by the flags introduced by a previous patch.
15786
15787 2009-07-14  DJ Delorie  <dj@redhat.com>
15788
15789         * config/mep/mep.md (sibcall_internal): Include non-toggling
15790         non-jmp case.
15791         (sibcall_value_internal): Likewise.
15792
15793 2009-07-14  Taras Glek  <tglek@mozilla.com>
15794             Rafael Espindola  <espindola@google.com>
15795
15796         * doc/sourcebuild.texi: Document install-plugin target.
15797         * configure.ac: Added install-plugin target to language makefiles.
15798         * configure: Regenerate.
15799         * Makefile.in (install-plugin): Install more headers,
15800         depend on lang.install-plugin.
15801
15802 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15803
15804         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
15805         translation.
15806
15807 2009-07-14  DJ Delorie  <dj@redhat.com>
15808
15809         * config/mep/mep.c (mep_vliw_jmp_match): New function.
15810         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
15811         * config/mep/mep.md (sibcall_internal): Change test from
15812         mep_vliw_mode_match to mep_vliw_jmp_match.
15813         (sibcall_value_internal): Likewise.
15814
15815 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
15816
15817         * config/i386/sse.md (copysign<mode>3): New expander.
15818         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
15819         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
15820         Use ix86_build_const_vector.
15821         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
15822         IX86_BUILTIN_CPYSGNPD.
15823         (builtin_description): Add __builtin_ia32_copysignps and
15824         __builtin_ia32_copysignpd.
15825         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
15826         and BUILT_IN_COPYSIGNF.
15827
15828 2009-07-13  Jason Merrill  <jason@redhat.com>
15829
15830         * builtins.c (can_trust_pointer_alignment): New fn.
15831         (get_pointer_alignment): Factor it out from here.
15832         * tree.h: Declare it.
15833
15834 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
15835
15836         * config/rs6000/predicates.md (offsettable_mem_operand): Test
15837         RTX_AUTOINC class.
15838
15839 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
15840
15841         PR debug/40705
15842         PR c++/403057
15843         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
15844
15845 2009-07-14  Richard Guenther  <rguenther@suse.de>
15846             Andrey Belevantsev <abel@ispras.ru>
15847
15848         PR middle-end/40745
15849         * cfgexpand.c (partition_stack_vars): Do not bother to update
15850         alias information when not optimizing.
15851
15852 2009-07-14  Richard Guenther  <rguenther@suse.de>
15853             Andrey Belevantsev <abel@ispras.ru>
15854
15855         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
15856         (pt_solution_set): Likewise.
15857         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
15858         * tree-ssa-structalias.c (pt_solution_set): New function.
15859         * final.c (rest_of_clean_state): Free SSA data structures.
15860         * print-rtl.c (print_decl_name): Remove.
15861         (print_mem_expr): Implement in terms of print_generic_expr.
15862         * alias.c (ao_ref_from_mem): New function.
15863         (rtx_refs_may_alias_p): Likewise.
15864         (true_dependence): Query alias-export info.
15865         (canon_true_dependence): Likewise.
15866         (write_dependence_p): Likewise.
15867         * tree-dfa.c (get_ref_base_and_extent): For void types leave
15868         size unknown.
15869         * emit-rtl.c (component_ref_for_mem_expr): Remove.
15870         (mem_expr_equal_p): Use operand_equal_p.
15871         (set_mem_attributes_minus_bitpos): Do not use
15872         component_ref_for_mem_expr.
15873         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
15874         (update_alias_info_with_stack_vars): Likewise.
15875         (partition_stack_vars): Call update_alias_info_with_stack_vars.
15876         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
15877         explicitly nor clear stmt operands.
15878         Free the decl-to-pointer map.
15879         * tree-optimize.c (execute_free_datastructures): Do not free
15880         SSA data structures here.
15881         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
15882         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
15883         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
15884         dependencies.
15885         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
15886
15887 2009-07-13  DJ Delorie  <dj@redhat.com>
15888
15889         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
15890         unrolling at the right iteration count.
15891
15892         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
15893         calculations.
15894
15895 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15896
15897         * haifa-sched.c (rank_for_schedule): Introduced flags to
15898         enable/disable individual scheduling heuristics.
15899         * common.opt: Introduced flags to enable/disable individual
15900         heuristics in the scheduler.
15901         * doc/invoke.texi: Introduced flags to enable/disable individual
15902         heuristics in the scheduler.
15903
15904 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
15905
15906         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
15907         config/i386/mingw-tls.c.
15908         * config/i386/mingw-tls.c: Removed.
15909
15910 2009-07-13  Ira Rosen  <irar@il.ibm.com>
15911
15912         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
15913         checks access only relevant statements.
15914         (vectorizable_reduction): Likewise.
15915
15916 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
15917
15918         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
15919         just for 32-bit case.
15920
15921 2009-07-12  Jan Hubicka  <jh@suse.cz>
15922
15923         PR tree-optimization/40585
15924         * except.c (expand_resx_expr): When there already is resume
15925         instruction, produce linked list.
15926         (build_post_landing_pads): Assert that resume is empty.
15927         (connect_post_landing_pads): Handle resume lists.
15928         (dump_eh_tree): Dump resume list.
15929
15930 2009-07-12  Ira Rosen  <irar@il.ibm.com>
15931
15932         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
15933         with additional argument.
15934         * tree-vectorizer.h (enum vect_def_type): Add
15935         vect_double_reduction_def.
15936         (vect_is_simple_reduction): Add argument.
15937         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
15938         indentation.
15939         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
15940         vect_is_simple_reduction with additional argument.
15941         (vect_analyze_loop_operations): Handle exit phi nodes in case of
15942         double reduction.
15943         (reduction_code_for_scalar_code): Handle additional codes by
15944         returning ERROR_MARK for them. Fix comment and indentation.
15945         (vect_is_simple_reduction): Fix comment, add argument to specify
15946         double reduction. Detect double reduction.
15947         (get_initial_def_for_induction): Fix indentation.
15948         (get_initial_def_for_reduction): Fix comment and indentation.
15949         Handle double reduction. Create initial definitions that do not
15950         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
15951         (vect_create_epilog_for_reduction): Fix comment, add argument to
15952         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
15953         epilogue result extraction. Create double reduction phi node and
15954         replace relevant uses.
15955         (vectorizable_reduction): Call vect_is_simple_reduction with
15956         additional argument. Fix indentation. Update epilogue code treatment
15957         according to the changes in reduction_code_for_scalar_code. Check
15958         for double reduction. Call vect_create_epilog_for_reduction with
15959         additional argument.
15960         * tree-vect-stmts.c (process_use): Handle double reduction, update
15961         documentation.
15962         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
15963         (vect_get_vec_def_for_operand): Likewise.
15964
15965 2009-07-12  Danny Smith  <dansmister@gmail.com>
15966
15967         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
15968         dllexport if !TREE_PUBLIC.
15969         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
15970
15971 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
15972
15973         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
15974         (avr_extra_arch_macro) Remove declatation.
15975         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
15976         (avr_extra_arch_macro) Declare as static.
15977         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
15978
15979 2009-07-11  Jan Hubicka  <jh@suse.cz>
15980
15981         PR middle-end/48388
15982         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
15983
15984 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
15985
15986         PR debug/40713
15987         * dwarf2out.c (dw_fde_struct): Add in_std_section and
15988         cold_in_std_section bits.
15989         (dwarf2out_begin_prologue): Initialize them.
15990         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
15991         if already covered by text_section or cold_text_section range.
15992
15993         PR rtl-optimization/40667
15994         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
15995         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
15996         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
15997         * config/i386/i386.c (ix86_minimum_alignment): New function.
15998         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
15999         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
16000         * emit-rtl.c (gen_reg_rtx): Likewise.
16001         * function.c (assign_parms): Likewise.  If nominal_type needs
16002         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
16003         rather than passed_type's alignment.
16004
16005         PR target/40668
16006         * function.c (assign_parm_setup_stack): Adjust
16007         MEM_OFFSET (data->stack_parm) if promoted_mode is different
16008         from nominal_mode on big endian.
16009
16010 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
16011
16012         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
16013
16014 2009-07-10  DJ Delorie  <dj@redhat.com>
16015
16016         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
16017
16018 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
16019
16020         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
16021         attribute.
16022         (thumb2_cbnz): Likewise.
16023
16024 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
16025
16026         PR target/39079
16027         * config.gcc (supported_defaults): Add synci.
16028         (with_synci): Add validation.
16029         (all_defaults): Add synci.
16030         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
16031         ISA_HAS_SYNCI.
16032         (synci): Same.
16033         * config/mips/mips.opt (msynci): New option.
16034         * config/mips/mips.c (mips_override_options): Warn on use of
16035         -msynci for targets that do now support it.
16036         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
16037         msynci.
16038         * gcc/doc/invoke.texi (-msynci): Document the new option.
16039         * doc/install.texi (--with-synci): Document the new option.
16040
16041 2009-07-10  Richard Guenther  <rguenther@suse.de>
16042
16043         PR tree-optimization/40496
16044         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
16045         the PHI result with a compatible type.
16046
16047 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16048
16049         PR 25509
16050         PR 40614
16051         * c.opt (Wunused-result): New.
16052         * doc/invoke.texi: Document it.
16053         * c-common.c (c_warn_unused_result): Use it.
16054
16055 2009-07-09  DJ Delorie  <dj@redhat.com>
16056
16057         * targhooks.c (default_target_can_inline_p): Rename from
16058         default_target_option_can_inline_p.
16059         * targhooks.h (default_target_can_inline_p): Likewise.
16060         * target-def.h (TARGET_CAN_INLINE_P): Rename from
16061         TARGET_OPTION_CAN_INLINE_P.
16062         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
16063         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
16064         (mep_target_can_inline_p): Rename from
16065         mep_target_option_can_inline_p.
16066
16067         PR target/40626
16068         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
16069         registers used to pass vectors.
16070
16071         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
16072
16073 2009-07-09  Tom Tromey  <tromey@redhat.com>
16074
16075         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
16076         * config/mmix/mmix.c: Include dwarf2.h.
16077         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
16078         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
16079         * config/sh/sh.c: Include dwarf2.h.
16080         * config/i386/i386.c: Include dwarf2.h.
16081         * Makefile.in (DWARF2_H): Remove 'elf'.
16082         * except.c: Include dwarf2.h.
16083         * unwind-dw2.c: Include dwarf2.h.
16084         * dwarf2out.c: Include dwarf2.h.
16085         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
16086         * unwind-dw2-fde.c: Include dwarf2.h.
16087         * dwarf2asm.c: Include dwarf2.h.
16088
16089 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
16090
16091         * haifa-sched.c (insn_finishes_cycle_p): New static function.
16092         (max_issue): Use it.
16093         * sched-int.h (struct sched_info: insn_finishes_block_p): New
16094         scheduler hook.
16095         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
16096         (region_sched_info): Update.
16097         * sched-ebb.c (ebb_sched_info): Update.
16098         * modulo-sched.c (sms_sched_info): Update.
16099         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
16100
16101 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
16102
16103         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
16104
16105 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
16106
16107         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
16108
16109 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
16110
16111         PR middle-end/40692
16112         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
16113         arg1 with arg01 if arg1 is already INTEGER_CST.
16114
16115 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
16116
16117         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
16118         Transform (and (truncate)) into (truncate (and)).
16119
16120 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
16121
16122         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
16123         creating LHS paradoxical subregs.  Fix surrounding returns to
16124         use NULL_RTX rather than 0.
16125
16126 2009-07-08  DJ Delorie  <dj@redhat.com>
16127
16128         * config/mep/mep.c (mep_option_can_inline_p): New.
16129         (TARGET_OPTION_CAN_INLINE_P): Define.
16130
16131 2009-07-08  Mark Wielaard  <mjw@redhat.com>
16132
16133         PR debug/40659
16134         * dwarf2out.c (add_data_member_location_attribute): When we have
16135         only a constant offset don't emit a new location description using
16136         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
16137         dwarf_version > 2.
16138
16139 2009-07-08  Richard Henderson  <rth@redhat.com>
16140
16141         PR target/38900
16142         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
16143         (enum reg_class): Add CLOBBERED_REGS.
16144         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
16145         * config/i386/i386.c (ix86_conditional_register_usage): Moved
16146         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
16147         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
16148         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
16149         force 64-bit sibcalls into R11.
16150         * config/i386/constraints.md (U): New constraint.
16151         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
16152         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
16153         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
16154
16155 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
16156
16157         * basic-block.h (dump_regset, debug_regset): Remove duplicate
16158         prototypes.
16159         * c-objc-common.h (c_initialize_diagnostics): Ditto.
16160         * ebitmap.h (dump_ebitmap): Ditto.
16161         * optabs.h (optab_libfunc): Ditto.
16162         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
16163         * tree-flow.h (vect_can_force_dr_alignment_p,
16164         get_vectype_for_scalar_type): Ditto.
16165         (vectorize_loops): Move prototype to ...
16166         * tree-vectorizer.h: ... here. Also, adjust comment.
16167         (vect_set_verbosity_level): Remove duplicate prototype.
16168         * tree-ssa-loop.c: Include tree-vectorizer.h.
16169         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
16170
16171 2009-07-08  Nick Clifton  <nickc@redhat.com>
16172
16173         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
16174         forward slash.
16175
16176 2009-07-08  DJ Delorie  <dj@redhat.com>
16177
16178         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
16179         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
16180         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
16181         written to.
16182         * config/mep/intrinsics.md: Regenerated.
16183         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
16184         registers when asm() or calls are detected.
16185
16186 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16187
16188         PR c++/31246
16189         * gimplify.c (gimplify_expr): Propagate no_warning flag when
16190         gimplifying.
16191         * gimple (gimple_build_call_from_tree): Likewise.
16192         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
16193         no_warning flag before warning.
16194
16195 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16196
16197         * tree.c (set_expr_locus): Remove.
16198         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
16199         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
16200         EXPR_LOCATION.
16201         * gimplify.c (internal_get_tmp_var): Likewise.
16202         (gimplify_call_expr): Likewise.
16203         (gimplify_one_sizepos): Likewise.
16204
16205 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
16206
16207         PR debug/40666
16208         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
16209         to variables for debugging purposes.
16210
16211 2009-06-23  Mark Loeser  <mark@halcy0n.com>
16212
16213         PR build/40010
16214         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
16215
16216 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16217
16218         * pretty-print.c (pp_base_format): Remove %J.
16219         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
16220         gcc_cxxdiag_char_table): Likewise.
16221         (init_dynamic_diag_info): Likewise.
16222
16223 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16224
16225         * pretty-print.c (pp_base_format): Remove %H.
16226         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
16227         gcc_cxxdiag_char_table): Likewise.
16228         (init_dynamic_diag_info): Likewise.
16229         * config/mep/mep.c (mep_select_section): Likewise.
16230
16231 2009-07-07  Duncan Sands  <baldrick@free.fr>
16232
16233         * final.c (pass_clean_state): Give the pass a name.
16234         * passes.c (pass_rest_of_compilation): Likewise.
16235         * tree-optimize.c (pass_all_optimizations): Likewise.
16236
16237 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
16238
16239         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
16240         an extra 'decl' for error_at.
16241
16242 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
16243
16244         PR middle-end/40669
16245         * tree-tailcall.c (adjust_return_value_with_ops,
16246         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
16247         if it has complex or vector type.
16248
16249 2009-07-07  Olivier Hainque  <hainque@adacore.com>
16250
16251         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
16252         pthread symbols.
16253
16254 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
16255
16256         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
16257
16258 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16259
16260         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
16261         * c-decl.c: Likewise.
16262         * function.c: Likewise.
16263         * varasm.c: Likewise.
16264         * tree-ssa.c: Likewise.
16265         * c-common.c: Likewise.
16266         * tree-cfg.c: Likewise.
16267         * config/spu/spu.c: Likewise.
16268         * config/ia64/ia64.c: Likewise.
16269         * config/v850/v850.c: Likewise.
16270
16271 2009-07-06  DJ Delorie  <dj@redhat.com>
16272
16273         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
16274         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
16275         unspecified accesses to control registers.
16276         * config/mep/intrinsics.md: Regenerate.
16277         * config/mep/intrinsics.h: Regenerate.
16278         * config/mep/mep-intrin.h: Regenerate.
16279
16280 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16281
16282         * c-lex.c: Replace %H by an explicit location. Update all calls.
16283         * c-common.c: Likewise.
16284         * c-decl.c: Likewise.
16285         * c-typeck.c: Likewise.
16286         * fold-const.c: Likewise.
16287         * gimplify.c: Likewise.
16288         * stmt.c: Likewise.
16289         * tree-cfg.c: Likewise.
16290         * tree-ssa-loop-niter.c: Likewise.
16291         * tree-vrp.c: Likewise.
16292         * value-prof.c: Likewise.
16293
16294 2009-07-06  Diego Novillo  <dnovillo@google.com>
16295
16296         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
16297         if it has one.  Handle cases where VAR does not have an
16298         annotation or cfun is NULL.
16299
16300 2009-07-06  Diego Novillo  <dnovillo@google.com>
16301
16302         * tree.c: Include debug.h.
16303         (initialize_tree_contains_struct): New.
16304         (init_ttree): Call it.
16305         (tree_node_structure_for_code): Factor out of ...
16306         (tree_node_structure): ... here.
16307         * treestruct.def (TS_PHI_NODE): Remove.
16308         (TS_GIMPLE_STATEMENT): Remove.
16309
16310 2009-07-06  Diego Novillo  <dnovillo@google.com>
16311
16312         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
16313         (debug_tree_chain): Handle cycles.
16314
16315 2009-07-06  Nick Clifton  <nickc@redhat.com>
16316             DJ Delorie  <dj@redhat.com>
16317
16318         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16319         __FMOVD_ENABLED__ is defined.
16320         * config/sh/sh.h
16321         (TARGET_FMOVD): Provide a default definition.
16322         (MASK_FMOVD): Likewise.
16323         (TARGET_CPU_CPP_BUILTINS): Define
16324         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16325         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16326         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
16327         (split for DF load from memory into register): Also handle
16328         MEMs which consist of REG+DISP addressing.
16329         (split for DF store from register to memory): Likewise.
16330         (movsf_ie): Always use single fp_mode.
16331         * config/sh/sh.c (sh_override_options): Do not automatically
16332         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16333         that to the -mfmovd command line switch.
16334         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
16335         (fldi_ok): Always allow.
16336         * config/sh/sh.opt (mfmovd): Remove this switch.
16337         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16338
16339 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
16340             Kaz Kojima  <kkojima@gcc.gnu.org>
16341
16342         PR rtl-optimization/30807
16343         * postreload.c (reload_combine): For every new use of REG_SUM,
16344         record the use of BASE.
16345
16346 2009-07-06  Jan Hubicka  <jh@suse.cz>
16347
16348         * params.def: Revert my accidental commit at 2009-06-30.
16349
16350 2009-07-04  Ian Lance Taylor  <iant@google.com>
16351
16352         PR target/40636
16353         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
16354         EXPORTED_CONST.
16355         (mingw_format_attribute_overrides): Likewise.
16356
16357 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
16358
16359         PR debug/40596
16360         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
16361         don't check cfa.reg.  Instead of cfa.indirect use
16362         fde && fde->drap_reg != INVALID_REGNUM test.
16363
16364 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
16365
16366         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
16367
16368 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
16369
16370         PR target/40587
16371         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
16372
16373 2009-07-03  Richard Guenther  <rguenther@suse.de>
16374
16375         PR tree-optimization/40640
16376         * tree-switch-conversion.c (build_arrays): Perform arithmetic
16377         in original type.
16378
16379 2009-07-03  Jan Hubicka  <jh@suse.cz>
16380
16381         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
16382         for size, reduce amount of inlining.
16383
16384 2009-07-03  Richard Guenther  <rguenther@suse.de>
16385
16386         PR middle-end/34163
16387         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
16388         if t +- x is known to not overflow and the conversion widens the
16389         operation.
16390         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
16391
16392 2009-07-03  Jan Hubicka  <jh@suse.cz>
16393
16394         * ipa-pure-const.c (analyze): Update loop optimizer init.
16395         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
16396         try_remove_empty_loop, remove_empty_loops): Remove.
16397         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
16398         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
16399         to mark regular loops as neccesary.
16400         (degenerate_phi_p): New function.
16401         (propagate_necessity, remove_dead_phis): Use it.
16402         (forward_edge_to_pdom): Likewise.
16403         (eliminate_unnecessary_stmts): Take care to remove uses of results of
16404         virtual PHI nodes that became unreachable.
16405         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
16406         * tree-flow.h (remove_empty_loops): Remove.
16407         * passes.c (init_optimization_passes): Remove.
16408
16409 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
16410
16411         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
16412         can_create_pseudo_p.
16413         (*fix_trunc<mode>_i387_1): Ditto.
16414         (*floathi<mode>2_1): Ditto.
16415         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
16416         (*fistdi2_1): Ditto.
16417         (*fist<mode>2_1): Ditto.
16418         (frndintxf2_floor): Ditto.
16419         (*fist<mode>2_floor_1): Ditto.
16420         (frndintxf2_ceil): Ditto.
16421         (*fist<mode>2_ceil_1): Ditto.
16422         (frndintxf2_trunc): Ditto.
16423         (frndintxf2_mask_pm): Ditto.
16424         (fxam<mode>2_i387_with_temp): Ditto.
16425         * config/i386/sse.md (mulv16qi3): Ditto.
16426         (*sse2_mulv4si3): Ditto.
16427         (mulv2di3): Ditto.
16428         (sse4_2_pcmpestr): Ditto.
16429         (sse4_2_pcmpistr): Ditto.
16430
16431 2009-07-03  Jan Hubicka  <jh@suse.cz>
16432
16433         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
16434         (mark_stmt_necessary): Set it.
16435         (mark_operand_necessary): Set it.
16436         (mark_control_dependent_edges_necessary): Set it.
16437         (mark_virtual_phi_result_for_renaming): New function.
16438         (get_live_post_dom): New function.
16439         (forward_edge_to_pdom): New function.
16440         (remove_dead_stmt): Fix handling of control dependences.
16441         (tree_dce_init): Init new bitmap.
16442         (tree_dce_done): Free it.
16443
16444 2009-07-02  Richard Guenther  <rguenther@suse.de>
16445
16446         PR bootstrap/40617
16447         * tree-ssa-structalias.c (new_var_info): Initialize
16448         is_restrict_var.
16449
16450 2009-07-02  Jan Hubicka  <jh@suse.cz>
16451
16452         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
16453         local.
16454
16455 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
16456
16457         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
16458         instead of recomputing it.  Adjust calls.
16459         (emit_store_flag): Adjust recursive calls.
16460
16461 2009-07-02  Richard Guenther  <rguenther@suse.de>
16462
16463         * tree-ssa-live.c (remove_unused_locals): Do not remove
16464         heap variables.
16465         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
16466         of DECL_EXTERNAL for HEAP variables.
16467         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
16468         HEAP variables.  Do not adjust RESTRICT vars.
16469         (find_what_var_points_to): Nobody cares if something
16470         points to READONLY.
16471
16472 2009-07-02  Ben Elliston  <bje@au.ibm.com>
16473
16474         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
16475         pc_low and pc_high declarations to the top of the function.
16476
16477 2009-07-01  DJ Delorie  <dj@redhat.com>
16478
16479         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
16480         registers as fixed.
16481         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
16482         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
16483         unspecified accesses to control registers.
16484         * config/mep/intrinsics.md: Regenerate.
16485         * config/mep/intrinsics.h: Regenerate.
16486         * config/mep/mep-intrin.h: Regenerate.
16487
16488 2009-07-01  Anthony Green  <green@moxielogic.com>
16489
16490         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
16491         instruction when possible.
16492         (moxie_expand_prologue): Ditto.  Also, save an instruction and
16493         some complexity by popping off of $r12 instead of $sp.
16494         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
16495         operands.
16496
16497 2009-07-01  Richard Henderson  <rth@redhat.com>
16498
16499         PR bootstrap/40347
16500         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
16501         contained no insns, reposition note before last insn.
16502
16503 2009-07-01  Richard Henderson  <rth@redhat.com>
16504
16505         PR debug/40431
16506         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
16507         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
16508
16509 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
16510
16511         PR bootstrap/40558
16512         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
16513         darwin9 for printing reg addresses with %y.
16514
16515 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16516
16517         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
16518         truncation from operands in binary operations.
16519
16520 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16521
16522         Revert:
16523         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
16524         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
16525         subreg of op0 to the original op0.
16526
16527         * expmed.c (store_bit_field_1): Use a temporary as the destination
16528         instead of a paradoxical subreg when we need to truncate the result.
16529
16530 2009-07-01  DJ Delorie  <dj@redhat.com>
16531
16532         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
16533         names to VLIW variants.
16534         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
16535         * config/mep/intrinsics.md: Regenerate.
16536         * config/mep/intrinsics.h: Regenerate.
16537         * config/mep/mep-intrin.h: Regenerate.
16538
16539 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
16540
16541         PR debug/40462
16542         * jump.c (returnjump_p): Revert last patch.
16543         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
16544
16545 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16546
16547         PR target/40575
16548         * pa.md (casesi32p): Use jump table label to determine the offset
16549         of the jump table.
16550         (casesi64p): Likewise.
16551
16552         * pa.c (forward_branch_p): Return bool type.  Use instruction
16553         addresses when available.  Assert that INSN has a jump label.
16554         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
16555         have a jump label.
16556
16557 2009-07-01  Richard Guenther  <rguenther@suse.de>
16558
16559         PR tree-optimization/19831
16560         * tree-ssa-dce.c (propagate_necessity): Calls to functions
16561         that only act as barriers do not make any previous stores necessary.
16562         * tree-ssa-structalias.c (handle_lhs_call): Delay making
16563         HEAP variables global, do not add a constraint from nonlocal.
16564         (find_func_aliases): Handle escapes through return statements.
16565         (compute_points_to_sets): Make escaped HEAP variables global.
16566
16567 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16568
16569         PR bootstrap/40597
16570         * expmed.c (emit_store_flag): Perform a conversion if necessary,
16571         after reducing a DImode cstore to SImode.
16572
16573 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16574
16575         * expr.c (expand_expr_real_1): Reinstate fallthrough to
16576         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
16577
16578 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
16579
16580         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
16581         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
16582         to 0.
16583         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
16584         and umod_optab if TARGET_BSD_DIVMOD.
16585         * config/vax/lib1funcs.asm: New file.
16586         * config/vax/t-linux: New file.
16587         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
16588
16589 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
16590
16591         PR c++/40566
16592         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
16593         to type arguments that have void type.
16594
16595         PR debug/40573
16596         * dwarf2out.c (gen_formal_parameter_die): Call
16597         equate_decl_number_to_die if node is different from origin.
16598
16599 2009-06-30  Anthony Green  <green@moxielogic.com>
16600
16601         Clean up moxie port for --enable-build-with-cxx.
16602         * config/moxie/moxie.c (moxie_function_value): First two
16603         parameters are const_tree, not tree.
16604         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
16605         (REG_CLASS_NAMES): Ditto.
16606         (REGNO_REG_CLASS): Ditto.
16607         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
16608         (moxie_function_value): Fix constyness of arguments.
16609
16610 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
16611
16612         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
16613         finalize_size_functions before further processing.
16614         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
16615         (variable_size): Call self_referential_size on size expressions
16616         that contain a PLACEHOLDER_EXPR.
16617         (size_functions): New static variable.
16618         (copy_self_referential_tree_r): New static function.
16619         (self_referential_size): Likewise.
16620         (finalize_size_functions): New global function.
16621         * tree.c: Include tree-inline.h.
16622         (push_without_duplicates): New static function.
16623         (find_placeholder_in_expr): New global function.
16624         (substitute_in_expr) <tcc_declaration>: Return the replacement object
16625         on equality.
16626         <tcc_expression>: Likewise.
16627         <tcc_vl_exp>: If the replacement object is a constant, try to inline
16628         the call in the expression.
16629         * tree.h (finalize_size_functions): Declare.
16630         (find_placeholder_in_expr): Likewise.
16631         (FIND_PLACEHOLDER_IN_EXPR): New macro.
16632         (substitute_placeholder_in_expr): Update comment.
16633         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
16634         is true.
16635         (copy_tree_body_r): Likewise.
16636         (copy_tree_body): New static function.
16637         (maybe_inline_call_in_expr): New global function.
16638         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
16639         (maybe_inline_call_in_expr): Declare.
16640         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
16641         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
16642         GIMPLE_H.
16643
16644 2009-06-30  Richard Guenther  <rguenther@suse.de>
16645
16646         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
16647         continue walking.
16648         (propagate_necessity): Do not mark reaching defs of stores
16649         as necessary.
16650
16651 2009-06-30  Jan Hubicka  <jh@suse.cz>
16652
16653         * cfgloopanal.c (check_irred): Move into ...
16654         (mark_irreducible_loops): ... here; return true if ireducible
16655         loops was found.
16656         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
16657         (analyze_function): Try to prove loop finiteness.
16658         * cfgloop.h (mark_irreducible_loops): Update prototype.
16659         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
16660
16661 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
16662
16663         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
16664
16665 2009-06-30  Ira Rosen  <irar@il.ibm.com>
16666
16667         PR tree-optimization/40542
16668         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
16669         types.
16670
16671 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16672
16673         PR tree-optimization/40582
16674         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
16675         than useless_type_conversion_p.
16676         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
16677         proper place.
16678
16679 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16680
16681         PR middle-end/40554
16682         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
16683
16684 2009-06-30  Richard Guenther  <rguenther@suse.de>
16685
16686         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
16687         use ao_ref references.
16688         (walk_aliased_vdefs): Likewise.
16689         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
16690         * tree-ssa-dce.c (struct ref_data): Remove.
16691         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
16692         (mark_aliased_reaching_defs_necessary): Adjust.
16693         (mark_all_reaching_defs_necessary_1): Likewise.
16694
16695 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
16696
16697         PR boostrap/40597
16698         * expmed.c (emit_cstore): New name of emit_store_flag_1.
16699         (emit_store_flag_1): Extract from emit_store_flag, adjust
16700         calls to (what now is) emit_cstore.
16701         (emit_store_flag): Call emit_store_flag_1 and also use it
16702         for what used to be recursive calls.
16703
16704 2009-06-30  Wei Guozhi  <carrot@google.com>
16705
16706         PR/40416
16707         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
16708         if the target bb post dominates from bb.
16709         * config/i386/i386.c (memory_address_length): Check existence of base
16710         register before using it.
16711
16712 2009-06-30  Nick Clifton  <nickc@redhat.com>
16713             DJ Delorie  <dj@redhat.com>
16714
16715         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16716         __FMOVD_ENABLED__ is defined.
16717         * config/sh/sh.h
16718         (TARGET_FMOVD): Provide a default definition.
16719         (MASK_FMOVD): Likewise.
16720         (TARGET_CPU_CPP_BUILTINS): Define
16721         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16722         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16723         two fmov instructions depending upon whether TARGET_FMOVD is
16724         enabled.
16725         (split for DF load from memory into register): Also handle
16726         MEMs which consist of REG+DISP addressing.
16727         (split for DF store from register to memory): Likewise.
16728         * config/sh/sh.opt (mfmovd): Remove this switch.
16729         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16730         * config/sh/sh.c (sh_override_options): Do not automatically
16731         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16732         that to the -mfmovd command line switch.
16733
16734         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
16735         the SH4 and SH4A.
16736         (fldi_ok): Always allow.
16737         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
16738
16739 2009-06-29  DJ Delorie  <dj@redhat.com>
16740
16741         * doc/install.texi (mep-x-elf): Correct chip's full name.
16742
16743 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
16744
16745         * doc/extend.texi: Fix typo.
16746
16747 2009-06-29  Tom Tromey  <tromey@redhat.com>
16748
16749         * dwarf2.h: Remove.
16750         * Makefile.in (DWARF2_H): New variable.
16751         (except.o): Use it.
16752         (dwarf2out.o): Likewise.
16753         (dwarf2asm.o): Likewise.
16754         * config/i386/t-i386: Use DWARF2_H.
16755         * except.c: Include elf/dwarf2.h.
16756         * unwind-dw2.c: Include elf/dwarf2.h.
16757         * dwarf2out.c: Include elf/dwarf2.h.
16758         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
16759         <dtprel>: New field.
16760         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
16761         (size_of_loc_descr): Likewise.
16762         (output_loc_operands_raw): Likewise.
16763         (output_loc_operands): Handle new dtprel field.
16764         (loc_checksum): Update.
16765         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
16766         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
16767         * unwind-dw2-fde.c: Include elf/dwarf2.h.
16768         * dwarf2asm.c: Include elf/dwarf2.h.
16769         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
16770         * config/mmix/mmix.c: Include elf/dwarf2.h.
16771         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
16772         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
16773         * config/sh/sh.c: Include elf/dwarf2.h.
16774         * config/i386/i386.c: Include elf/dwarf2.h.
16775
16776 2009-06-29  DJ Delorie  <dj@redhat.com>
16777
16778         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
16779
16780         * doc/extend.texi: Add MeP attributes and pragmas.
16781         * doc/invoke.text: Add MeP Options.
16782         * doc/contrib.texi: Add MeP contribution.
16783         * doc/md.texi: Add MeP constraints.
16784         * doc/install.texi: Add MeP target.
16785
16786 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
16787
16788         * target.h (struct gcc_target): Add frame_pointer_required field.
16789         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
16790         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
16791         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
16792         hook.
16793         * reload1.c (update_eliminables): (Ditto.).
16794         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
16795         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16796         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
16797
16798         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
16799
16800         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
16801         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16802         (arm_frame_pointer_required): New function.
16803
16804         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
16805         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16806         (avr_frame_pointer_required_p): Declare as static.
16807         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
16808
16809         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
16810         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16811         (bfin_frame_pointer_required): Make as static, change return type
16812         to bool.
16813         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
16814
16815         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
16816         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16817         (cris_frame_pointer_required): New function.
16818
16819         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
16820
16821         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
16822         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16823         (fr30_frame_pointer_required): New function.
16824
16825         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
16826         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16827         (frv_frame_pointer_required): Make as static, change return type
16828         to bool.
16829         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
16830
16831         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
16832         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16833         (ix86_frame_pointer_required): Make as static, change return type to
16834         bool.
16835         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
16836
16837         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
16838         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16839
16840         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
16841
16842         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
16843
16844         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
16845
16846         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
16847         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16848         (mips_frame_pointer_required): Make as static.
16849         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
16850
16851         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
16852         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16853         (mmix_frame_pointer_required): Mew function.
16854
16855         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
16856         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16857
16858         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
16859
16860         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
16861
16862         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
16863
16864         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
16865         (CAN_ELIMINATE): Redefine.
16866         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16867         (sparc_frame_pointer_required): New function.
16868         (sparc_can_eliminate): New function.
16869         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
16870
16871         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
16872         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16873
16874         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
16875         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16876         (xtensa_frame_pointer_required): Make as static, change return type
16877         to bool.
16878         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
16879         Remove.
16880
16881 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
16882
16883         * doc/plugins.texi: Document PLUGIN_START_UNIT.
16884         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
16885         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
16886         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
16887         (register_callback): Handle PLUGIN_START_UNIT.
16888         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
16889
16890 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
16891
16892         * tree.c (process_call_operands): Propagate TREE_READONLY from the
16893         operands.
16894         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
16895         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
16896
16897 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
16898
16899         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
16900         move cost.
16901
16902 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
16903
16904         * doc/extend.texi (Additional Floating Types): __float128 is also
16905         supported on i386 targets.
16906
16907 2009-06-29  Richard Guenther  <rguenther@suse.de>
16908
16909         PR middle-end/14187
16910         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
16911         flag.
16912         (pt_solutions_same_restrict_base): Declare.
16913         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
16914         flag.
16915         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
16916         (make_constraint_from, make_copy_constraint): Move earlier.
16917         (make_constraint_from_heapvar): New function.
16918         (make_constraint_from_restrict): Likewise.
16919         (handle_lhs_call): Use it.
16920         (find_func_aliases): Use it to track conversions to restrict
16921         qualified pointers.
16922         (struct fieldoff): Add only_restrict_pointers flag.
16923         (push_fields_onto_fieldstack): Initialize it.
16924         (create_variable_info_for): Track global restrict qualified pointers.
16925         (intra_create_variable_infos): Use make_constraint_from_heapvar.
16926         Track restrict qualified pointer arguments.
16927         (set_uids_in_ptset): Use varinfo is_global_var flag.
16928         (find_what_var_points_to): Set the vars_contains_restrict flag.
16929         Always create the points-to solution for sets including restrict tags.
16930         (pt_solutions_same_restrict_base): New function.
16931         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
16932         qualified pointers use pt_solutions_same_restrict_base as
16933         additional source for disambiguation.
16934
16935 2009-06-29  Richard Guenther  <rguenther@suse.de>
16936
16937         PR middle-end/38212
16938         * alias.c (find_base_decl): Remove.
16939         (get_deref_alias_set_1): Remove restrict handling.
16940         * c-common.c (c_apply_type_quals_to_decl): Do not set
16941         DECL_POINTER_ALIAS_SET.
16942         * gimplify.c (find_single_pointer_decl_1): Remove.
16943         (find_single_pointer_decl): Likewise.
16944         (internal_get_tmp_var): Remove restrict handling.
16945         (gimple_regimplify_operands): Likewise.
16946         * omp-low.c (expand_omp_atomic_pipeline): Do not set
16947         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
16948         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
16949         * tree.c (restrict_base_for_decl): Remove.
16950         (init_ttree): Do not allocate it.
16951         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
16952         LABEL_DECL_UID for label decls.
16953         (copy_node_stat): Do not copy restrict information.
16954         (decl_restrict_base_lookup): Remove.
16955         (decl_restrict_base_insert): Likewise.
16956         (print_restrict_base_statistics): Likewise.
16957         (dump_tree_statistics): Do not call print_restrict_base_statistics.
16958         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
16959         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
16960         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
16961         (LABEL_DECL_UID): Adjust.
16962         (DECL_BASED_ON_RESTRICT_P): Remove.
16963         (DECL_GET_RESTRICT_BASE): Likewise.
16964         (SET_DECL_RESTRICT_BASE): Likewise.
16965         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
16966
16967         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
16968         instead of DECL_POINTER_ALIAS_SET.
16969         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
16970         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
16971         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
16972
16973 2009-06-29  Richard Guenther  <rguenther@suse.de>
16974
16975         PR tree-optimization/40579
16976         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
16977         the IL to simplify has constants that overflowed.
16978
16979 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
16980
16981         PR tree-optimization/40550
16982         * tree-vect-generic.c (expand_vector_operations_1): Compute in
16983         vector_compute_type only when the size of vector_compute_type is
16984         less than the size of type.
16985
16986 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
16987
16988         * fold-const.c (contains_label_1): Fix comments.
16989         (contains_label_p): Do not walk trees multiple time.
16990
16991 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16992
16993         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
16994         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
16995         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
16996         ix86_fp_comparison_operator.
16997         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
16998         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
16999         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
17000         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
17001         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
17002         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
17003         (related splits): Change predicate to ix86_fp_comparison_operator.
17004         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
17005         instead of ix86_fp_comparison_codes.
17006         (ix86_trivial_fp_comparison_operator,
17007         ix86_fp_comparison_operator): New.
17008         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
17009         (ix86_expand_compare): Eliminate last two parameters.
17010         (ix86_fp_jump_nontrivial_p): Kill.
17011         * config/i386/i386.c (put_condition_code): Eliminate call to
17012         ix86_fp_comparison_codes and subsequent assertion.
17013         (ix86_fp_comparison_codes): Eliminate.
17014         (ix86_fp_swap_condition): New.
17015         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
17016         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
17017         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
17018         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
17019         and ix86_fp_swap_condition.
17020         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
17021         Use ix86_fp_comparison_strategy.
17022         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
17023         (ix86_fp_jump_nontrivial_p): Eliminate.
17024         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
17025         call to ix86_expand_compare.
17026         (ix86_split_fp_branch, ix86_expand_setcc,
17027         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
17028         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
17029
17030 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17031
17032         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
17033         related to jump_clobbers.
17034         * config/arm/arm.md (conds): Remove jump_clob case.
17035         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
17036         splits): Change comparison_operator to arm_comparison_operator.
17037         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
17038         Eliminate.
17039
17040 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17041
17042         * dojump.c (do_compare_rtx_and_jump): Try swapping the
17043         condition for floating point modes.
17044         * expmed.c (emit_store_flag_1): Move here a bigger part
17045         of emit_store_flag.
17046         (emit_store_flag): Try swapping the condition for floating point
17047         modes.
17048         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
17049
17050 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17051
17052         * expr.c (expand_expr_real_1): Just use do_store_flag.
17053         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
17054         emit_store_flag_force.
17055         * expmed.c (emit_store_flag_force): Copy here trick
17056         previously in expand_expr_real_1.  Try reversing the comparison.
17057         (emit_store_flag_1): Work if target is NULL.
17058         (emit_store_flag): Work if target is NULL, using the result mode
17059         from the comparison.  Use split_comparison, restructure final part
17060         to simplify conditionals.
17061
17062 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17063
17064         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
17065         * dojump.c (do_jump): Change handling of floating-point
17066         ops to use just do_compare_and_jump.
17067         (split_comparison): New.
17068         (do_compare_rtx_and_jump): Add here logic coming previously
17069         in do_jump, using split_comparison.
17070
17071 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
17072
17073         PR target/40489
17074         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
17075
17076 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17077
17078         * tree-ssa-alias.c: Fix unintentional commit.
17079
17080 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17081
17082         * passes.c (execute_one_pass): Fix unintentional commit.
17083
17084 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17085
17086         * df-problems.c (df_set_seen, df_unset_seen): Delete.
17087         (df_rd_local_compute, df_md_local_compute): Inline them.
17088
17089         (df_md_scratch): New.
17090         (df_md_alloc, df_md_free): Allocate/free it.
17091         (df_md_local_compute): Only include live registers in init.
17092         (df_md_transfer_function): Prune the in-set computed by
17093         the confluence function, and the gen-set too.
17094
17095 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17096
17097         PR rtl-optimization/26854
17098         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
17099         * df-problems.c (df_rd_add_problem): Fix comment.
17100         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
17101         df_md_simulate_artificial_defs_at_top,
17102         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
17103         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
17104         df_md_transfer_function, df_md_init, df_md_confluence_0,
17105         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
17106         problem_MD, df_md_add_problem): New.
17107         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
17108         df_md_get_bb_info): New.
17109         (DF_LAST_PROBLEM_PLUS1): Adjust.
17110
17111         * Makefile.in (fwprop.o): Include domwalk.h.
17112         * fwprop.c: Include domwalk.h.
17113         (reg_defs, reg_defs_stack): New.
17114         (bitmap_only_bit_between): Remove.
17115         (process_defs): New.
17116         (process_uses): Use reg_defs and local_md instead of
17117         bitmap_only_bit_between and local_rd.
17118         (single_def_use_enter_block): New, from build_single_def_use_links.
17119         (single_def_use_leave_block): New.
17120         (build_single_def_use_links): Remove code moved to
17121         single_def_use_enter_block, invoke domwalk.
17122         (use_killed_between): Adjust comment.
17123
17124 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17125
17126         * bitmap.h (bitmap_ior_and_into): New.
17127         * bitmap.c (bitmap_ior_and_into): New.
17128
17129 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17130
17131         * domwalk.h (struct dom_walk_data): Remove all callbacks except
17132         before_dom_children_before_stmts and after_dom_children_after_stmts.
17133         Rename the two remaining callbacks to just before_dom_children and
17134         after_dom_children. Remove other GIMPLE statement walking bits.
17135         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
17136         * graphite.c: Do not include domwalk.h.
17137         * tree-into-ssa.c (interesting_blocks): New global.
17138         (struct mark_def_sites_global_data): Remove it and names_to_rename.
17139         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
17140         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
17141         now that they're not domwalk callbacks.
17142         (rewrite_initialize_block): Rename to...
17143         (rewrite_enter_block): ... this, place after called functions.  Test
17144         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
17145         (rewrite_finalize_block): Rename to...
17146         (rewrite_leave_block): ... this, place after called functions.
17147         (rewrite_update_init_block): Rename to...
17148         (rewrite_update_enter_block): ... this, place after called functions.
17149         Test interesting_blocks, call rewrite_update_stmt and
17150         rewrite_update_phi_arguments.
17151         (rewrite_update_fini_block): Rename to...
17152         (rewrite_leave_block): ... this, place after called functions.
17153         (rewrite_blocks): Remove last argument, simplify initialization of
17154         walk_data.
17155         (mark_def_sites_initialize_block): Rename to...
17156         (mark_def_sites_block): ... this, call mark_def_sites.
17157         (mark_def_sites_blocks): Remove argument, simplify initialization of
17158         walk_data.
17159         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
17160         (update_ssa): Likewise.
17161         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
17162         callback.
17163         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
17164         (dom_opt_initialize_block): Rename to...
17165         (dom_opt_enter_block): ... this, place after called functions.  Walk
17166         statements here, inline propagate_to_outgoing_edges.
17167         (dom_opt_finalize_block): Rename to...
17168         (dom_opt_leave_block): ... this, place after called functions.
17169         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
17170         domwalk callback.
17171         (dse_enter_block, dse_record_phi): New.
17172         (dse_record_phis): Delete.
17173         (dse_finalize_block): Rename to...
17174         (dse_leave_block): ... this.
17175         (tree_ssa_dse): Simplify initialization of walk_data.
17176         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
17177         Adjust initialization of walk_data.
17178         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
17179         * tree-ssa-loop-phiopt.c (get_non_trapping):
17180         Adjust initialization of walk_data.
17181         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
17182         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
17183         it's not a domwalk callback.
17184         (uncprop_initialize_block): Rename to...
17185         (dse_enter_block): ... this, call uncprop_into_successor_phis.
17186         (dse_finalize_block): Rename to...
17187         (dse_leave_block): ... this.
17188         (tree_ssa_uncprop): Simplify initialization of walk_data.
17189         * Makefile.in: Adjust dependencies.
17190
17191 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
17192
17193         * arm.md (casesi): Fix test for Thumb1.
17194         (thumb1_casesi_internal_pic): Likewise.
17195         (thumb1_casesi_dispatch): Likewise.
17196
17197 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
17198
17199         * config/arm/arm-cores.def: Added core cortex-m0.
17200         * config/arm/arm-tune.md: Regenerated.
17201         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
17202
17203 2009-06-26  DJ Delorie  <dj@redhat.com>
17204
17205         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
17206
17207         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
17208         the scheduler doesn't tag jump insns.
17209
17210 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
17211
17212         * c-decl.c (merge_decls): Re-indent.
17213
17214 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
17215
17216         PR c/39902
17217         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
17218         Special-case decimal float constants.
17219
17220 2009-06-26  Richard Henderson  <rth@redhat.com>
17221
17222         * function.h (struct function): Add cannot_be_copied_reason,
17223         and cannot_be_copied_set.
17224         * tree-inline.c (has_label_address_in_static_1): Rename from
17225         inline_forbidden_p_2; don't set inline_forbidden_reason here.
17226         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
17227         don't set inline_forbidden_reason.
17228         (copy_forbidden): New function, split out of inline_forbidden_p.
17229         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
17230         (inline_forbidden_p): Use copy_forbidden.
17231         (tree_versionable_function_p): Likewise.
17232         (inlinable_function_p): Merge into tree_inlinable_function_p.
17233         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
17234         * ipa-cp.c (ipcp_versionable_function_p): New function.
17235         (ipcp_cloning_candidate_p): Use it.
17236         (ipcp_node_modifiable_p): Likewise.
17237
17238 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
17239
17240         * builtins.c (expand_builtin_alloca): Handle builtin alloca
17241         that is marked not to be inlined. Remove flag_mudflap use.
17242         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
17243         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
17244
17245 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
17246
17247         PR bootstrap/40338
17248         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
17249         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
17250
17251 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
17252
17253         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
17254         shared libgcc.
17255         (__mingwthr_remove_key_dtor): Likewise.
17256
17257 2009-06-26  Richard Guenther  <rguenther@suse.de>
17258
17259         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
17260
17261 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
17262
17263         PR middle-end/40525
17264         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
17265         try the non-cond_exec path also.
17266
17267 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17268
17269         PR target/40468
17270         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
17271         (output_cbranch): Use new functions.
17272         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
17273         Likewise.
17274
17275 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
17276             Pat Haugen  <pthaugen@us.ibm.com>
17277             Revital Eres <ERES@il.ibm.com>
17278
17279         * config/rs6000/rs6000.c (print_operand): Correct lossage message
17280         for %c error.  Add %x support to print VSX registers as a unified
17281         register set, instead of separate float and altivec registers.
17282         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
17283         %y case, and add support for VSX pre-modify addresses.
17284         (output_toc): Add assert for CONST containing an integer constant
17285         in the PLUS case.
17286         (rs6000_adjust_cost): Add POWER7 support.
17287         (insn_must_be_first_in_group): Ditto.
17288         (insn_must_be_last_in_group): Ditto.
17289         (rs6000_emit_popcount): Ditto.
17290         (rs6000_vector_mode_supported_p): Ditto.
17291
17292         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
17293         Change some of the functions called by macros to being called
17294         through a pointer, so debug functions can be inserted if
17295         -mdebug=addr or -mdebug=cost.
17296         (rs6000_preferred_reload_class_ptr): Ditto.
17297         (rs6000_secondary_reload_class_ptr): Ditto.
17298         (rs6000_secondary_memory_needed_ptr): Ditto.
17299         (rs6000_cannot_change_mode_class_ptr): Ditto.
17300         (rs6000_secondary_reload_inner): Ditto.
17301         (rs6000_legitimize_reload_address): Ditto.
17302         (rs6000_legitimize_reload_address_ptr): Ditto.
17303         (rs6000_mode_dependent_address): Ditto.
17304         (rs6000_mode_dependent_address_ptr): Ditto.
17305
17306         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
17307         function to return true if the mode allows reg + integer
17308         addresses.
17309         (virtual_stack_registers_memory_p): New function to return true if
17310         the address refers to a virtual stack register.
17311         (rs6000_legitimate_offset_address_p): Move code to say whether a
17312         mode supports reg+int addressing to reg_offset_addressing_ok_p and
17313         call it.
17314         (rs6000_legitimate_address_p): Add checks for modes that only can
17315         do reg+reg addressing.  Start adding VSX support.
17316         (rs6000_legitimize_reload_address): Ditto.
17317         (rs6000_legitimize_address): Ditto.
17318         (rs6000_debug_legitimate_address_p): New debug functions for
17319         -mdebug=addr and -mdebug=cost.
17320         (rs6000_debug_rtx_costs): Ditto.
17321         (rs6000_debug_address_costs): Ditto.
17322         (rs6000_debug_adjust_cost): Ditto.
17323         (rs6000_debug_legitimize_address): Ditto.
17324         (rs6000_legitimize_reload_address_ptr): Point to call normal
17325         function or debug function.  Make functions called via pointer
17326         static.
17327         (rs6000_mode_dependent_address_ptr): Ditto.
17328         (rs6000_secondary_reload_class_ptr): Ditto.
17329         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
17330         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
17331         into a friendlier error.
17332         (rs6000_init_builtins): Add initial VSX support.
17333         (rs6000_adjust_cost): Fix some spacing issues.
17334
17335         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
17336         (REG_CLASS_NAMES): Ditto.
17337         (REG_CLASS_CONTENTS): Ditto.
17338         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
17339         pointer, to add -mdebug=addr support.
17340         (CANNOT_CHANGE_MODE_CLASS): Ditto.
17341         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
17342         -mdebug=addr support.
17343         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
17344         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
17345         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
17346
17347         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
17348         16-bit values.
17349         (bswapsi*): Set attribute types for load/store.  Add combiner
17350         patterns to eliminate zero extend on 64-bit.
17351         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
17352         stdbrx if the hardware supports those instructions.
17353
17354 2009-06-25  Ian Lance Taylor  <iant@google.com>
17355
17356         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
17357         (Link Options): Document -static-libstdc++.
17358
17359 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17360
17361         PR target/38731
17362         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
17363         DATA_ALIGNMENT instead.
17364
17365 2009-06-25  Richard Guenther  <rguenther@suse.de>
17366
17367         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
17368         indirect references against the callused/escaped solutions.
17369         (call_may_clobber_ref_p_1): Likewise.
17370
17371 2009-06-25  Martin Jambor  <mjambor@suse.cz>
17372
17373         PR tree-optimization/40493
17374         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
17375         (enum unscalarized_data_handling): New type.
17376         (handle_unscalarized_data_in_subtree): Return what has been done.
17377         (load_assign_lhs_subreplacements): Handle left flushes differently.
17378         (sra_modify_assign): Use unscalarized_data_handling, simplified
17379         condition determining whether to remove the statement.
17380
17381 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
17382
17383         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
17384         excerpt - @ should be doubled for texinfo.
17385
17386 2009-06-24  Ian Lance Taylor  <iant@google.com>
17387
17388         * config/arc/arc.c: Include "df.h".
17389         (arc_attribute_table): Make static.  Move higher in file.
17390         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
17391         (output_shift): Initialize n later to avoid warning.
17392         * config/arm/arm.c (arm_attribute_table): Make static.  Move
17393         higher in file.
17394         * config/avr/avr.c (avr_attribute_table): Make static.  Move
17395         higher in file.
17396         (reg_class_tab): Change array type from int to enum reg_class.
17397         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
17398         LABEL_REF.
17399         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
17400         (lshrhi3_out): Likewise.
17401         (class_likely_spilled_p): Change return type to bool.
17402         (avr_rtx_costs): Use local code variable with enum type.
17403         * config/avr/avr.md (movmemhi): Use add_reg_note.
17404         (andhi3, andsi3): Don't use AS2 with "and".
17405         (iorhi3, iorsi3): Don't use AS2 with "or".
17406         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
17407         * config/crx/crx.c: Include "df.h".
17408         (crx_attribute_table): Make static.
17409         * config/m32r/m32r.c: Include "df.h".
17410         (m32r_attribute_table): Make static.  Move higher in file.
17411         (pop): Use add_reg_note.
17412         (block_move_call): Change 0 to LCT_NORMAL in function call.
17413         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
17414         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
17415         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
17416         declare, not just when TREE_CODE is defined.
17417         * config/m68hc11/m68hc11.c: Include "expr.h".
17418         (m68hc11_attribute_table): Make static.  Move higher in file.
17419         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
17420         function call.
17421         (m68hc11_register_indirect_p): Likewise.
17422         (m68hc11_function_arg_padding): Change return type to enum
17423         direction.
17424         (emit_move_after_reload): Use add_reg_note.
17425         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
17426         (m68hc11_split_logical): Likewise.
17427         (m68hc11_rtx_costs): Add local code_and outer_code variables with
17428         enum type.
17429         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
17430         to VOIDmode in function call.
17431         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
17432         tree is defined.
17433         (m68hc11_split_logical): Update declaration.
17434         (m68hc11_function_arg_padding): Update declaration.
17435         * config/mcore/mcore.c (regno_reg_class): Change form array of int
17436         to array of enum reg_class.
17437         (mcore_attribute_table): Make static.  Move higher in file.
17438         (mcore_rtx_costs): Add cast to enum type.
17439         * config/mcore/mcore.h (regno_reg_class): Update declaration.
17440         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
17441         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
17442         in file.
17443         * config/sh/predicates.md (trapping_target_operand): Rename and to
17444         and_expr.
17445         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
17446         higher in file.
17447         * config/spu/spu.c (spu_attribute_table): Make static.  Move
17448         higher in file.
17449         * config/v850/v850.c (v850_attribute_table): Make static.  Move
17450         higher in file.
17451         (v850_rtx_costs): Use local code with enum type.
17452         (expand_epilogue): Add cast.
17453         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
17454
17455 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
17456
17457         PR target/40515
17458         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
17459         -m2a-single-only and -m2a-nofpu.
17460         * config/sh/sh.opt: Document m2a generates FPU code.
17461
17462 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
17463
17464         * defaults.h (CAN_ELIMINATE): Provide default.
17465         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
17466         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
17467         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
17468         * config/spu/spu.h (CAN_ELIMINATE): Delete.
17469         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
17470         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
17471         * config/cris/cris.h (CAN_ELIMINATE): Delete.
17472         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
17473         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
17474         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
17475
17476 2009-06-24  DJ Delorie  <dj@redhat.com>
17477
17478         * mep-ext-cop.cpu: Fix copyright notice.
17479         * mep-default: Fix copyright notice.
17480         * mep-core: Fix copyright notice.
17481         * mep: Fix copyright notice.
17482         * mep-ivc2: Fix copyright notice.
17483         * mep-c5: Fix copyright notice.
17484
17485 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
17486
17487         * doc/contrib.texi (Contributors):
17488
17489 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17490
17491         PR middle-end/40501
17492         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
17493         src and dst operands if necessary.
17494
17495 2009-06-23  DJ Delorie  <dj@redhat.com>
17496
17497         Add MeP port.
17498         * config.gcc: Add mep support.
17499         * recog.c: Resurrect validate_replace_rtx_subexp().
17500         * recog.h: Likewise.
17501         * config/mep/: Add new port:
17502         * config/mep/constraints.md: New file.
17503         * config/mep/default.h: New file.
17504         * config/mep/intrinsics.h: New file.
17505         * config/mep/intrinsics.md: New file.
17506         * config/mep/ivc2-template.h: New file.
17507         * config/mep/mep-c5.cpu: New file.
17508         * config/mep/mep-core.cpu: New file.
17509         * config/mep/mep-default.cpu: New file.
17510         * config/mep/mep-ext-cop.cpu: New file.
17511         * config/mep/mep-intrin.h: New file.
17512         * config/mep/mep-ivc2.cpu: New file.
17513         * config/mep/mep-lib1.asm: New file.
17514         * config/mep/mep-lib2.c: New file.
17515         * config/mep/mep-pragma.c: New file.
17516         * config/mep/mep-protos.h: New file.
17517         * config/mep/mep-tramp.c: New file.
17518         * config/mep/mep.c: New file.
17519         * config/mep/mep.cpu: New file.
17520         * config/mep/mep.h: New file.
17521         * config/mep/mep.md: New file.
17522         * config/mep/mep.opt: New file.
17523         * config/mep/predicates.md: New file.
17524         * config/mep/t-mep: New file.
17525
17526 2009-06-23  Ian Lance Taylor  <iant@google.com>
17527
17528         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
17529         from loose_warn into c_loose_warn and from strict_warn into
17530         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
17531         --enable-build-with-cxx.  Set and substitute
17532         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
17533         * Makefile.in (CXXFLAGS): New variable.
17534         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
17535         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
17536         the default is the same as $(STRICT_WARN).
17537         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
17538         (CXX): New variable.
17539         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
17540         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
17541         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
17542         (HOST_LIBS): New variable.
17543         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
17544         (ALL_CXXFLAGS): New variable.
17545         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
17546         * doc/install.texi (Configuration): Document
17547         --enable-build-with-cxx, --with-stage1-ldflags,
17548         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
17549         * configure: Rebuild.
17550
17551 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17552
17553         * config/arm/arm.c (arm_override_options): Fix braces and formatting
17554         from previous commit.
17555
17556 2009-06-23  Ian Lance Taylor  <iant@google.com>
17557
17558         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
17559
17560 2009-06-23  Ian Lance Taylor  <iant@google.com>
17561
17562         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
17563         with ATTRIBUTE_UNUSED.
17564
17565 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
17566             Pat Haugen  <pthaugen@us.ibm.com>
17567             Revital Eres  <eres@il.ibm.com>
17568
17569         * config.in (HAVE_AS_POPCNTD): Add default definition.
17570         (HAVE_AS_LWSYNC): Ditto.
17571
17572         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
17573         release number.
17574         (gcc_cv_as_powerpc_cmpb): Ditto.
17575         (gcc_cv_as_powerpc_dfp): Ditto.
17576         (gcc_cv_as_powerpc_vsx): Ditto.
17577         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
17578         supporting the popcntd/lwsync instructions.
17579         (gcc_cv_as_powerpc_lwsync): Ditto.
17580         * configure: Regenerate.
17581
17582         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
17583         -mcpu=native and -mcpu=power7.
17584         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
17585
17586         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
17587         a variable instead of a mask to reduce the number of mask bits.
17588         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
17589         (-mbit-word): Ditto.
17590         (-mregnames): Ditto.
17591         * config/rs6000/rs6000.opt (-mupdate): Ditto.
17592         (-mfused-madd): Ditto.
17593
17594         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
17595         2.06 instructions.
17596         (-mvsx): New switch for VSX instructions.
17597         (-misel): Move from a variable to a mask to allow it to be set by
17598         -mcpu=.
17599
17600         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
17601         function declaration to an array declaration.
17602         (rs6000_hard_regno_nregs): New external array declaration.
17603
17604         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
17605         files included by rs6000.md.
17606
17607         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
17608         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
17609
17610         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
17611         a target mask.
17612         (rs6000_debug_reg): New -mdebug= variables.
17613         (rs6000_debug_addr): Ditto.
17614         (rs6000_debug_cost): Ditto.
17615         (rs6000_pmode): New variable to hold Pmode.
17616         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
17617         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
17618         calculated at compiler start.
17619         (rs6000_hard_regno_nregs): Change function to an array which holds
17620         HARD_REGNO_NREGS calculated at compiler start.
17621         (rs6000_explicit_options): Delete isel field.
17622         (rs6000_vector_unit): New array to hold which vector unit
17623         supports arithmetic options for a given type.
17624         (rs6000_vector_mem): New array to hold which vector unit supports
17625         memory reference operations for a given type.
17626         (rs6000_vector_align): New array to given the alignment of each
17627         vector type.
17628         (power7_cost): New basic costs for power7.
17629         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
17630         (rs6000_hard_regno_nregs_internal): New function, moved from
17631         HARD_REGNO_NREGS, to calculate the number of registers each hard
17632         register takes for each type.
17633         (rs6000_debug_reg_print): New function for -mdebug=reg support.
17634         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
17635         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
17636         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
17637         unit information here so it is calculated once at compiler startup
17638         time.
17639         (rs6000_override_options): Make -misel a target mask.  Add more
17640         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
17641         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
17642         -mdebug=cost.
17643         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
17644         (rs6000_handle_option): Move -misel from variable to target mask.
17645         (rs6000_builtin_mask_for_load): Add VSX support.
17646         (rs6000_conditional_register_usage): Ditto.
17647         (USE_ALTIVEC_FOR_ARG_P): Ditto.
17648         (function_arg_boundary): Ditto.
17649         (rs6000_expand_builtin): Ditto.
17650         (def_builtin): Make abort message a little friendlier.
17651         (rs6000_emit_int_cmove): Add support for 64-bit isel.
17652
17653         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
17654         assembler support the popcntd instruction instead of a vsx
17655         instruction to enable power7 support.
17656         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
17657         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
17658         option to the assembler if -mcpu=native.
17659         (ASM_CPU_NATIVE_SPEC): Ditto.
17660         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
17661         ISA 2.06 features.
17662         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
17663         the lwsync instruction.
17664         (enum processor_type): Add PROCESSOR_POWER7.
17665         (rs6000_debug_reg): New -mdebug= options.
17666         (rs6000_debug_addr): Ditto.
17667         (rs6000_debug_cost): Ditto.
17668         (rs6000_isel): Delete.
17669         (enum rs6000_vector): New enum to say what vector unit we have.
17670         (VECTOR_UNIT_*): New macros to say which vector unit has
17671         arithmetic operations for a given type.
17672         (VECTOR_MEM_*): New macros to say which vector unit has memory
17673         operations for a given type.
17674         (TARGET_LDBRX): Whether the machine supports the ldbrx
17675         instruction.
17676         (TARGET_ISEL): Delete, -misel moved to be a mask.
17677         (TARGET_ISEL64): New macro for 64-bit isel support.
17678         (UNITS_PER_VSX_WORD): New macro.
17679         (POINTER_SIZE): Move to be an external variable, rather than
17680         calculating whether we are generating 32 ot 64-bit code.
17681         (Pmode): Ditto.
17682         (STACK_BOUNDARY): Add VSX support.
17683         (LOCAL_ALIGNMENT): Ditto.
17684         (SLOW_UNALIGNED_ACCESS): Ditto.
17685         (VSX_REGNO_P): New macro for VSX support.
17686         (VFLOAT_REGNO_P): Ditto.
17687         (VINT_REGNO_P): Ditto.
17688         (VLOGICAL_REGNO_P): Ditto.
17689         (VSX_VECTOR_MODE): Ditto.
17690         (VSX_SCALAR_MODE): Ditto.
17691         (VSX_MODE): Ditto.
17692         (VSX_MOVE_MODE): Ditto.
17693         (VSX_REG_CLASS_P): Ditto.
17694         (HARD_REGNO_NREGS): Instead of calling a function, use an array
17695         lookup.
17696         (UNITS_PER_SIMD_WORD): Add VSX support.
17697         (MODES_TIEABLE_P): Ditto.
17698         (STARTING_FRAME_OFFSET): Ditto.
17699         (STACK_DYNAMIC_OFFSET): Ditto.
17700         (EPILOGUE_USES): Ditto.
17701         (REGNO_REG_CLASS): Move to array lookup.
17702         (CLASS_MAX_NREGS): Ditto.
17703         (rs6000_vector_reg_class): Add declaration.
17704         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
17705         overlap with the floating point and Altivec registers.
17706
17707         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
17708
17709         * config/rs6000/driver-rs6000.c (asm_names): New static array to
17710         give the appropriate asm switches if -mcpu=native.
17711         (host_detect_local_cpu): Add support for "asm".
17712         (host_detect_local_cpu): Follow GNU code guidelines for name.
17713
17714         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
17715         -mbit-word to a variable instead of being a target mask.
17716
17717         * config/rs6000/sync.md (lwsync): If the assembler supports it,
17718         emit the lwsync instruction instead of emitting the instruction as
17719         an integer constant.
17720
17721         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
17722         fixuns_trundfsi2, move expander into rs6000.md.
17723
17724         * config/rs6000/rs6000.md (cpu): Add power7.
17725         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
17726         (logical predicate patterns): Change the single instruction
17727         primitives that set CR0 to be fast_compare instead of compare.
17728         (norsi*): Ditto.
17729         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
17730         (popcntddi2): Ditto.
17731         (popcount<mode>): Ditto.
17732         (floating multiply/add insns): Name the floating point
17733         multiply/add insns.
17734         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
17735         (isel_unsigned_<mode>): Ditto.
17736         (fixuns_trundfsi2): Move expander here from spe.md.
17737         (smindi3): Define if we have -misel on 64-bit systems.
17738         (smaxdi3): Ditto.
17739         (umindi3): Ditto.
17740         (umaxdi3): Ditto.
17741
17742 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
17743
17744         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
17745         extra_objs.
17746         * config/avr/avr.c (avr_current_device): New variable.
17747         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
17748         (avr_arch, mcu_type_s): Move to avr.h.
17749         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
17750         default_data_section_start fields.
17751         (avr_arch): Moved from avr.c.
17752         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
17753         library_name fields.
17754         (avr_current_device, avr_mcu_types, avr_arch_types,
17755         avr_device_to_arch, avr_device_to_data_start,
17756         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
17757         (EXTRA_SPEC_FUNCTIONS): Define.
17758         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
17759         options mapping. Use device_to_arch and device_to_data_start insted.
17760         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
17761         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
17762         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
17763         * config/avr/driver-avr.c: New file.
17764         * config/avr/avr-devices.c: New file.
17765
17766 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
17767
17768         * var-tracking.c (unshare_variable): Force initialized to
17769         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
17770         (set_variable_part): Likewise.
17771         (struct variable_union_info): Remove pos_src field.
17772         (vui_vec, vui_allocated): New variables.
17773         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
17774         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
17775         == 1 use a simpler sorting algorithm.  Compute pos field right
17776         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
17777         Avoid quadratic comparison if !flag_var_tracking_uninit.
17778         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
17779         unshare_variable unconditionally.
17780         (dataflow_set_different_2): Removed.
17781         (dataflow_set_different): Don't traverse second hash table.
17782         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
17783         unconditionally to var_reg_set or var_mem_set.
17784         (emit_notes_in_bb): Likewise.
17785         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
17786         unshare_variable.
17787         (emit_note_insn_var_location): Don't set initialized to
17788         VAR_INIT_STATUS_INITIALIZED early.
17789         (vt_finalize): Free vui_vec if needed, clear vui_vec and
17790         vui_allocated.
17791         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
17792
17793         * tree-object-size.c (addr_object_size): Instead of checking
17794         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
17795         are no FIELD_DECLs following it.
17796
17797 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
17798
17799         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
17800         order to match bswaps with signed source operands.
17801
17802 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17803
17804         * sdbout.c (sdbout_one_type): Fix braces in switch.
17805
17806 2009-06-23  Richard Guenther  <rguenther@suse.de>
17807
17808         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
17809         member.
17810         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
17811         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
17812         var_callused, callused_tree, var_storedanything, storedanything_tree,
17813         var_integer, integer_tree): Remove global variables.
17814         (new_var_info): Do not pass new id, append the new var to the
17815         global variable vector.
17816         (do_ds_constraint): Use is_global_var member of the variable-info.
17817         (new_scalar_tmp_constraint_exp): Adjust.
17818         (create_function_info_for): Likewise.
17819         (create_variable_info_for): Likewise.
17820         (find_what_var_points_to): Remove dead code.
17821         (init_base_vars): Simplify.
17822         (compute_points_to_sets): Adjust.
17823
17824 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17825
17826         * combine.c (try_combine): Dump information about the insns we're
17827         combining.
17828
17829 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17830
17831         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
17832         check when calling force_to_mode on TRUNCATE's operand.
17833
17834 2009-06-22  Ian Lance Taylor  <iant@google.com>
17835
17836         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
17837
17838 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17839
17840         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
17841
17842 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17843
17844         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
17845         override library linkage flags such as -static-libgcc or
17846         -shared-libgcc.
17847
17848 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17849
17850         * config/m68k/m68k-devices.def: Add line for MCF5221x.
17851
17852 2009-06-22  Ian Lance Taylor  <iant@google.com>
17853
17854         * config/linux.opt: Put mglibc ahead of muclibc.
17855
17856         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
17857         for duplicate decls.
17858
17859 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17860
17861         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
17862
17863 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17864
17865         PR objc/28050
17866         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
17867         instead of NULL if a parser error occurs.
17868
17869 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17870
17871         * dwarf2out.c (dwarf2_debug_hooks): Initialize
17872         non-DWARF2_DEBUGGING_INFO version.
17873
17874 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
17875
17876         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
17877         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
17878
17879         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
17880         (LIBGCC2_TF_CEXT): Define.
17881         (TF_SIZE): Define.
17882
17883 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17884
17885         PR target/40463
17886         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
17887
17888 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17889
17890         * config/arm/arm.c (arm_override_options): Disable
17891         -mcaller-super-interworking and -mcallee-super-interworking.
17892         * doc/invoke.texi (ARM Options): Document this.
17893
17894 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
17895
17896         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
17897         * config/arm/constraints.md (j): New constraint for movw operands.
17898         (N): Remove thumb2 meaning.
17899         * config/arm/arm.md (*arm_movw): Delete.
17900         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
17901         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
17902         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
17903
17904 2009-06-22  Martin Jambor  <mjambor@suse.cz>
17905
17906         PR tree-optimization/40492
17907         * tree-sra.c (sra_modify_assign): Pass zero offsets to
17908         build_ref_for_offset.
17909
17910 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
17911
17912         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
17913         JUMP_TABLE_DATA_P predicates where applicable.
17914         * auto-inc-dec.c: Ditto.
17915         * builtins.c: Ditto.
17916         * caller-save.c: Ditto.
17917         * calls.c: Ditto.
17918         * cfgcleanup.c: Ditto.
17919         * cfglayout.c: Ditto.
17920         * cfgrtl.c: Ditto.
17921         * combine.c: Ditto.
17922         * combine-stack-adj.c: Ditto.
17923         * cse.c: Ditto.
17924         * cselib.c: Ditto.
17925         * dbxout.c: Ditto.
17926         * df-scan.c: Ditto.
17927         * dse.c: Ditto.
17928         * dwarf2asm.c: Ditto.
17929         * dwarf2out.c: Ditto.
17930         * emit-rtl.c: Ditto.
17931         * except.c: Ditto.
17932         * explow.c: Ditto.
17933         * expmed.c: Ditto.
17934         * expr.c: Ditto.
17935         * final.c: Ditto.
17936         * function.c: Ditto.
17937         * fwprop.c: Ditto.
17938         * gcse.c: Ditto.
17939         * genpreds.c: Ditto.
17940         * genrecog.c: Ditto.
17941         * ifcvt.c: Ditto.
17942         * ira-costs.c: Ditto.
17943         * ira-lives.c: Ditto.
17944         * jump.c: Ditto.
17945         * loop-iv.c: Ditto.
17946         * lower-subreg.c: Ditto.
17947         * modulo-sched.c: Ditto.
17948         * optabs.c: Ditto.
17949         * postreload.c: Ditto.
17950         * print-rtl.c: Ditto.
17951         * recog.c: Ditto.
17952         * reginfo.c: Ditto.
17953         * regmove.c: Ditto.
17954         * reload1.c: Ditto.
17955         * reload.c: Ditto.
17956         * reorg.c: Ditto.
17957         * rtlanal.c: Ditto.
17958         * rtl.c: Ditto.
17959         * sched-vis.c: Ditto.
17960         * sdbout.c: Ditto.
17961         * sel-sched-ir.c: Ditto.
17962         * simplify-rtx.c: Ditto.
17963         * targhooks.c: Ditto.
17964         * var-tracking.c: Ditto.
17965         * vmsdbgout.c: Ditto.
17966
17967 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17968
17969         * Makefile.in (install-plugin): Always use DESTDIR.
17970
17971 2009-06-22  Olivier Hainque  <hainque@adacore.com>
17972
17973         * config/pa/pa.c (output_call): Don't optimize post call jumps
17974         into return address adjustments if the call may throw.
17975
17976 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
17977
17978         * arm.c (thumb1_output_casesi): New function.
17979         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
17980         optimizing for size or PIC.
17981         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
17982         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
17983         (casesi): Handle Thumb-1 when optimizing for size or PIC.
17984         (thumb1_casesi_internal_pic): New expand rule.
17985         (thumb1_casesi_dispatch): New pattern.
17986         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
17987         thumb-1 mode.
17988         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
17989         in the text seciton when PIC or optimizing for size.
17990         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
17991         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
17992         preservation properties of code.
17993         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
17994         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
17995         (__gnu_thumb1_case_si): New function.
17996         * t-arm (LIB1ASMSRC): Define here.
17997         (LIB1ASMFUNCS): Add some common functions.
17998         * t-arm-elf (LIB1ASMSRC): Delete.
17999         (LIB1ASMFUNCS): Append to existing set.
18000         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18001         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18002         * t-symbian (LIB1ASMFUNCS): Likewise.
18003         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18004         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18005
18006 2009-06-21  Richard Guenther  <rguenther@suse.de>
18007
18008         PR tree-optimization/38729
18009         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
18010         to loops with a single exit if -fno-expensive-optimizations.
18011
18012 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
18013
18014         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
18015         (dataflow_set): Change vars type from htab_t to shared_hash.
18016         (shared_hash_pool, empty_shared_hash): New variables.
18017         (vars_clear): Removed.
18018         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
18019         shared_hash_find_slot_unshare, shared_hash_find_slot,
18020         shared_hash_find_slot_noinsert, shared_hash_find): New
18021         static inlines.
18022         (shared_hash_unshare, shared_hash_destroy): New functions.
18023         (unshare_variable): Unshare set->vars if shared, use
18024         shared_hash_htab.
18025         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
18026         (get_init_value, find_src_set_src, dump_dataflow_set,
18027         clobber_variable_part, emit_notes_for_differences): Use
18028         shared_hash_htab.
18029         (dataflow_set_init): Remove second argument, set vars to
18030         empty_shared_hash instead of creating a new htab.
18031         (dataflow_set_clear): Call shared_hash_destroy and set vars
18032         to empty_shared_hash instead of calling vars_clear.
18033         (dataflow_set_copy): Don't call vars_copy, instead just share
18034         the src htab with dst.
18035         (variable_union): Use shared_hash_*, use initially NO_INSERT
18036         lookup if set->vars is shared.  Don't keep slot cleared before
18037         calling unshare_variable.  Unshare set->vars if needed.
18038         Even ->refcount == 1 vars must be unshared if set->vars is shared
18039         and var needs to be modified.
18040         (variable_canonicalize): New function.
18041         (dataflow_set_union): If dst->vars is empty, just share src->vars
18042         with dst->vars and traverse with variable_canonicalize to canonicalize
18043         and unshare what is needed.
18044         (dataflow_set_different): If old_set and new_set use the same shared
18045         htab, they aren't different.  If number of htab elements is different,
18046         htabs are different.  Use shared_hash_*.
18047         (dataflow_set_destroy): Call shared_hash_destroy instead of
18048         htab_delete.
18049         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
18050         second argument to dataflow_set_init.
18051         (vt_initialize): Likewise.  Initialize shared_hash_pool and
18052         empty_shared_hash, move bb in/out initialization afterwards.
18053         Use variable_htab_free instead of NULL as changed_variables del hook.
18054         (variable_was_changed): Change type of second argument to pointer to
18055         dataflow_set.  When inserting var into changed_variables, bump
18056         refcount.  Unshare set->vars if set is shared htab and slot needs to
18057         be cleared.
18058         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
18059         lookup if set->vars is shared.  Unshare set->vars if needed.
18060         Even ->refcount == 1 vars must be unshared if set->vars is shared
18061         and var needs to be modified.  Adjust variable_was_changed caller.
18062         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
18063         vars must be unshared if set->vars is shared and var needs to be
18064         modified.  Adjust variable_was_changed caller.
18065         (emit_note_insn_var_location): Don't pool_free var.
18066         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
18067         instead of 1.
18068         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
18069         free_alloc_pool on shared_hash_pool.
18070
18071 2009-06-20  Anthony Green  <green@moxielogic.com>
18072
18073         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
18074         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
18075
18076 2009-06-20  Richard Guenther  <rguenther@suse.de>
18077
18078         * tree-ssa-structalias.c (find_func_aliases): For memset use
18079         a constraint from NULL if we memset to zero.
18080         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
18081         we explicitly handle that do not read from memory.
18082         (call_may_clobber_ref_p_1): Properly handle builtins that may
18083         set errno.
18084
18085 2009-06-20  Richard Guenther  <rguenther@suse.de>
18086
18087         PR tree-optimization/40495
18088         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
18089         (new_scalar_tmp_constraint_exp): New function.
18090         (process_constraint): Do not create temporary decls.
18091         (process_all_all_constraints): Likewise.
18092         (handle_const_call): Likewise.
18093         (create_function_info_for): Do not set decl.
18094
18095 2009-06-19  Ian Lance Taylor  <iant@google.com>
18096
18097         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
18098         (rs6000_attribute_table): Make static; move before use.
18099
18100 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
18101
18102         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
18103         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
18104         Propagate the TREE_READONLY flag without overwriting it.
18105         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
18106         Propagate the TREE_READONLY flag onto the result.
18107         (process_call_operands): Move around.  Use correct constant value.
18108
18109 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18110
18111         PR target/40482
18112         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
18113         * config/arm/arm.md: Likewise.
18114
18115 2009-06-19  Ian Lance Taylor  <iant@google.com>
18116
18117         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
18118         to GIMPLE_ERROR_MARK.
18119
18120         * c-typeck.c (build_conditional_expr): Add op1_original_type and
18121         op2_original_type parameters.  Warn about using different enum types.
18122         * c-parser.c (c_parser_conditional_expression): Pass original
18123         types to build_conditional_expr.
18124         * c-tree.h (build_conditional_expr): Update declaration.
18125
18126 2009-06-19  Ian Lance Taylor  <iant@google.com>
18127
18128         * config/i386/i386.c (ix86_function_specific_save): Test that
18129         fields match values, rather than testing the values are in a
18130         certain range.
18131
18132 2009-06-19  Richard Guenther  <rguenther@suse.de>
18133
18134         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
18135         ADDR_EXPR pointers.
18136         (ptr_derefs_may_alias_p): Likewise.
18137         (ptr_deref_may_alias_ref_p_1): New function.
18138         (ptr_deref_may_alias_ref_p): Likewise.
18139         (ref_maybe_used_by_call_p_1): Handle builtins that are not
18140         covered by looking at the ESCAPED solution.
18141         (call_may_clobber_ref_p_1): Likewise.
18142         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
18143         Handle NULL_TREE offset.  Do not produce redundant constraints.
18144         (process_all_all_constraints): New helper function.
18145         (do_structure_copy): Use it.
18146         (handle_lhs_call): Likewise.
18147         (find_func_aliases): Handle some builtins with pointer arguments
18148         and/or return values explicitly.
18149
18150 2009-06-19  Ian Lance Taylor  <iant@google.com>
18151
18152         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
18153
18154 2009-06-19  Ian Lance Taylor  <iant@google.com>
18155
18156         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
18157
18158 2009-06-19  Ian Lance Taylor  <iant@google.com>
18159
18160         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
18161         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
18162         version.
18163
18164         * c-decl.c (finish_decl): If -Wc++-compat, warn about
18165         uninitialized const.
18166
18167 2009-06-19  Ian Lance Taylor  <iant@google.com>
18168
18169         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
18170         all uses.
18171
18172         * c-decl.c (in_struct, struct_types): Remove.
18173         (struct c_binding): Add in_struct field.
18174         (c_binding_ptr): Define type, along with VEC.
18175         (struct c_struct_parse_info): Define.
18176         (struct_parse_info): New static variable.
18177         (bind): Initialize in_struct field.
18178         (start_struct): Remove enclosing_in_struct and
18179         enclosing_struct_types parameters.  Add
18180         enclosing_struct_parse_info parameter.  Change all callers.  Set
18181         struct_parse_info rather than in_struct and struct_types.
18182         (grokfield): If -Wc++-compat and there is a symbol binding for the
18183         field name, set the in_struct flag and push it on the
18184         struct_parse_info->fields vector.
18185         (warn_cxx_compat_finish_struct): New static function.
18186         (finish_struct): Remove enclosing_in_struct and
18187         enclosing_struct_types parameters.  Add
18188         enclosing_struct_parse_info parameter.  Change all callers.  Don't
18189         set C_TYPE_DEFINED_IN_STRUCT here.  Call
18190         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
18191         parameter.  Only push on struct_types if warn_cxx_compat.
18192         (finish_enum): Only push on struct_types if warn_cxx_compat.
18193         (declspecs_add_type): Add loc parameter.  Change all callers.
18194         Change all error calls to error_at.  Pass loc, not input_location,
18195         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
18196         defined in a struct.  If -Wc++-compat and parsing a struct, record
18197         that a typedef name was used.
18198         * c-parser.c (c_parser_declspecs): Get location to pass to
18199         declspecs_add_type.
18200         (c_parser_struct_or_union_specifier): Update calls to start_struct
18201         and finish_struct.
18202         * c-tree.h (struct c_struct_parse_info): Declare.
18203         (finish_struct, start_struct): Update declarations.
18204         (declspecs_add_type): Update declaration.
18205
18206 2009-06-19  Ian Lance Taylor  <iant@google.com>
18207
18208         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
18209         variable with an anonymous type.
18210
18211 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
18212
18213         * see.c: Remove for real.
18214
18215 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
18216
18217         * optabs.h (enum optab_index): Add new OTI_significand.
18218         (significand_optab): Define corresponding macro.
18219         * optabs.c (init_optabs): Initialize significand_optab.
18220         * genopinit.c (optabs): Implement significand_optab using
18221         significand?f2 patterns.
18222         * builtins.c (expand_builtin_mathfn): Handle
18223         BUILT_IN_SIGNIFICAND{,F,L}.
18224         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
18225         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
18226
18227         * config/i386/i386.md (significandxf2, significand<mode>2): New
18228         expanders to implement significandf, significand and significandl
18229         built-ins as inline x87 intrinsics.
18230
18231 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
18232
18233         * config/avr/avr.c (avr_override_options): Remove setting value of
18234         PARAM_INLINE_CALL_COST.
18235
18236 2009-06-18  Richard Henderson  <rth@redhat.com>
18237
18238         PR 40488
18239         * tree-pass.h (TDF_ASMNAME): New.
18240         * tree-dump.c (dump_options): Add asmname.
18241         * doc/invoke.texi: Document it.
18242
18243         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
18244         (dump_decl_name): ...here.
18245         (dump_function_name): New flags arg; mind TDF_ASMNAME.
18246         (dump_generic_node): Update dump_function_name calls.
18247         (print_call_name): New flags arg; update all dump calls.
18248         * diagnostic.h (print_call_name): Update.
18249         * gimple-pretty-print.c (dump_gimple_call): Update.
18250
18251 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
18252
18253         PR target/40470
18254         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
18255
18256 2009-06-18  Diego Novillo  <dnovillo@google.com>
18257
18258         * doc/plugins.texi: Document plugin_is_GPL_compatible.
18259         * plugin.c (str_license): Declare.
18260         (try_init_one_plugin): Assert that the symbol
18261         'plugin_is_GPL_compatible' exists.
18262
18263 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
18264
18265         * see.c: Remove.
18266         * Makefile.in (OBJS-common): Remove see.o.
18267         (see.o): Remove.
18268         * common.opt (fsee): Mark as preserved for backward compatibility.
18269         * opts.c (common_handle_option): Add OPT_fsee to the backward
18270         compatibility section.
18271         * passes.c (init_optimization_passes, pass_see): Remove pass.
18272         * timevar.def (TV_SEE): Remove.
18273         * tree-pass.h (pass_see): Remove declaration.
18274         * doc/invoke.texi (-fsee): Remove documentation.
18275
18276 2009-06-18  Martin Jambor  <mjambor@suse.cz>
18277
18278         * tree-sra.c: Include statistics.h
18279         (sra_stats): New variable.
18280         (sra_initialize): Clear sra_stats.
18281         (create_access_replacement): Increment sra_stats.replacements.
18282         (get_access_replacement): Do not return twice.
18283         (analyze_all_variable_accesses): Increment statistics counter by the
18284         number of scalarized aggregates.
18285         (generate_subtree_copies): Increment sra_stats.subtree_copies.
18286         (sra_modify_expr): Increment sra_stats.exprs.
18287         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
18288         (sra_modify_assign): Increment sra_stats.exprs,
18289         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
18290         (perform_intra_sra): Update statistics counters.
18291         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
18292
18293 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
18294
18295         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
18296         (arm_scalar_mode_supported_p): New function.
18297
18298 2009-06-18  Paul Brook  <paul@codesourcery.com>
18299             Sandra Loosemore  <sandra@codesourcery.com>
18300
18301         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
18302         (__extendhfsf2, __truncsfhf2): Define.
18303         * config/arm/fp16.c: New file.
18304         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
18305         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
18306
18307 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
18308
18309         * doc/extend.texi (Half-Precision): New section.
18310         * doc/invoke.texi (Option Summary): List -mfp16-format.
18311         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
18312         * config/arm/arm.opt (mfp16-format=): New.
18313         * config/arm/arm.c: Include intl.h.
18314         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
18315         (TARGET_INVALID_RETURN_TYPE): Redefine.
18316         (TARGET_PROMOTED_TYPE): Redefine.
18317         (TARGET_CONVERT_TO_TYPE): Redefine.
18318         (arm_fp16_format): Define.
18319         (all_fpus): Add entry for neon-fp16.
18320         (fp_model_for_fpu): Likewise.
18321         (struct fp16_format): Declare.
18322         (all_fp16_formats): Define.
18323         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
18324         functions.
18325         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
18326         and no ldrh.
18327         (arm_legitimate_index_p): Treat HFmode like HImode.
18328         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
18329         (coproc_secondary_reload_class): Special-case HFmode.
18330         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
18331         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
18332         (arm_init_fp16_builtins): New.
18333         (arm_init_builtins): Call it.
18334         (arm_invalid_parameter_type): New.
18335         (arm_invalid_return_type): New.
18336         (arm_promoted_type): New.
18337         (arm_convert_to_type).
18338         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
18339         format.
18340         (arm_emit_fp16_const): New function.
18341         (arm_mangle_type): Mangle __fp16 as "Dh".
18342         * config/arm/arm.h (TARGET_VFPD32): Make it know about
18343         FPUTYPE_NEON_FP16.
18344         (TARGET_NEON_FP16): New.
18345         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
18346         (enum fputype): Add FPUTYPE_NEON_FP16.
18347         (enum arm_fp16_format_type): Declare.
18348         (arm_fp16_format): Declare.
18349         (LARGEST_EXPONENT_IS_NORMAL): Define.
18350         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
18351         * config/arm/arm-modes.def (HFmode): Define.
18352         * config/arm/vfp.md (*movhf_vfp): New.
18353         (extendhfsf2): New.
18354         (truncsfhf2): New.
18355         * config/arm/arm.md (fpu): Add neon_fp16.
18356         (floatsihf2, floatdihf2): New.
18357         (fix_trunchfsi2, fix_trunchfdi2): New.
18358         (truncdfhf2): New.
18359         (extendhfdf2): New.
18360         (movhf): New.
18361         (*arm32_movhf): New.
18362         (*thumb1_movhf): New.
18363         (consttable_2): Add check for HFmode constants.
18364         (consttable_4): Handle HFmode constants.
18365
18366 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
18367
18368         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
18369
18370 2009-06-17  Olivier Hainque  <hainque@adacore.com>
18371
18372         * collect2.c (main): Use CONST_CAST2 to perform char ** to
18373         const char ** conversion in AIX specific section.
18374
18375 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
18376
18377         * config/i386/i386.c (ix86_special_builtin_type): Remove
18378         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
18379         (bdesc_special_args): Updated.
18380         (ix86_init_mmx_sse_builtins): Likewise.
18381         (ix86_expand_special_args_builtin): Likewise.
18382
18383 2009-06-17  Richard Henderson  <rth@redhat.com>
18384
18385         * tree-pretty-print.c (maybe_dump_asm_name): New.
18386         (dump_decl_name): Use it.
18387         (PRINT_FUNCTION_NAME): Merge into...
18388         (dump_function_name): ... here.  Use maybe_dump_asm_name.
18389
18390 2009-06-17  Cary Coutant  <ccoutant@google.com>
18391
18392         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
18393         Change caller.
18394         * debug.c (struct gcc_debug_hooks): Change placeholder for
18395         source_line hook.
18396         (debug_nothing_int_charstar_int): Replaced by...
18397         (debug_nothing_int_charstar_int_bool): ...this.
18398         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
18399         source_line prototype.
18400         (debug_nothing_int_charstar_int): Replaced by...
18401         (debug_nothing_int_charstar_int_bool): ...this.
18402         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
18403         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
18404         Output is_stmt operand when necessary.
18405         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
18406         (notice_source_line): Add is_stmt parameter.
18407         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
18408         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
18409         Change callers.
18410         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
18411         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
18412
18413 2009-06-17  Ian Lance Taylor  <iant@google.com>
18414
18415         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
18416         Change all uses.
18417         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
18418         call uses.
18419
18420 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
18421
18422         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
18423         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
18424         tree_strip_sign_nop_conversions and
18425         tree_ssa_strip_useless_type_conversions rather than stripping
18426         the operations here.
18427         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
18428         Declare them.
18429         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
18430         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
18431         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
18432         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
18433         functions.
18434
18435 2009-06-17  Michael Eager  <eager@eagercon.com>
18436
18437         * config/rs6000/constraints.md (register_constraint "d"): New.
18438         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
18439         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
18440         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
18441         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
18442         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
18443         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
18444         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
18445         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
18446         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
18447         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
18448         __fctiwz): Same.
18449         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
18450         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
18451         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
18452         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
18453         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
18454         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
18455         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
18456         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
18457         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
18458         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
18459         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
18460         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
18461         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
18462         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
18463
18464 2009-06-16  Ian Lance Taylor  <iant@google.com>
18465
18466         * profile.c (total_num_never_executed): Don't define.
18467         (compute_branch_probabilities): Don't count or print
18468         num_never_executed.
18469         (init_branch_prob): Don't set total_num_never_executed.
18470         (end_branch_prob): Don't print total_num_never_executed.
18471
18472 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
18473
18474         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
18475
18476 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
18477
18478         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
18479         (nabstd2_fpr): Same.
18480
18481 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
18482
18483         * expr.c (expand_assignment): Change complex type check.
18484
18485 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
18486
18487         * doc/plugins.texi (Building GCC plugins): Added new section.
18488
18489 2009-06-17  Ian Lance Taylor  <iant@google.com>
18490
18491         * c-pch.c (get_ident): Don't set size of templ array.
18492         (pch_init): Don't set size of partial_pch array.
18493
18494         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
18495         string constant to intialize an array whose size is the length of
18496         the string.
18497
18498 2009-06-17  Richard Guenther  <rguenther@suse.de>
18499
18500         PR tree-optimization/40389
18501         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
18502         to addressable types.
18503         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
18504
18505 2009-06-17  Richard Guenther  <rguenther@suse.de>
18506
18507         PR middle-end/40460
18508         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
18509         if there is no evolution of left in the loop bail out.
18510         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
18511         chrec_fold_multiply.
18512
18513 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
18514             Janis Johnson  <janis187@us.ibm.com>
18515
18516         PR target/39254
18517         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
18518         for the symbol ref of a constant that is the source of a move
18519         - nor for any other not-obvious-label-ref constants.
18520
18521 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
18522
18523         * plugin.c (position_pass): Skip newly inserted pass during list
18524         traversal to avoid repeated insertion.
18525
18526 2009-06-16  Ian Lance Taylor  <iant@google.com>
18527
18528         * vec.h (VEC_stack_alloc): Define different version if
18529         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
18530         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
18531         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
18532         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
18533
18534 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
18535
18536         * config.gcc (extra_headers): Add ia32intrin.h for x86.
18537
18538         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
18539         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
18540         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
18541         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
18542         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
18543         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18544         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18545         (bdesc_special_args): Add __builtin_ia32_rdtsc and
18546         __builtin_ia32_rdtscp.
18547         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
18548         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
18549         and __builtin_ia32_rorhi.
18550         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
18551         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18552         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18553         (ix86_expand_args_builtin): Likewise.
18554         (ix86_expand_special_args_builtin): Likewise.
18555
18556         * config/i386/i386.md (UNSPECV_RDTSCP): New.
18557         (UNSPECV_RDTSC): Likewise.
18558         (UNSPECV_RDPMC): Likewise.
18559         (*bsr): Renamed to ...
18560         (bsr): This
18561         (*bsr_rex64): Renamed to ...
18562         (bsr_rex64): This.
18563         (rdpmc): New.
18564         (*rdpmc): Likewise.
18565         (*rdpmc_rex64): Likewise.
18566         (rdtsc): Likewise.
18567         (*rdtsc): Likewise.
18568         (*rdtsc_rex64): Likewise.
18569         (rdtscp): Likewise.
18570         (*rdtscp): Likewise.
18571         (*rdtscp_rex64): Likewise.
18572
18573         * config/i386/ia32intrin.h: New.
18574
18575         * config/i386/x86intrin.h: Include <ia32intrin.h>.
18576
18577 2009-06-16  Ian Lance Taylor  <iant@google.com>
18578
18579         * ira-build.c (copy_info_to_removed_store_destinations):
18580         Initialize parent_a.
18581
18582 2009-06-16  Ian Lance Taylor  <iant@google.com>
18583
18584         * c-decl.c (grokdeclarator): Change size_varies to bool.
18585
18586 2009-06-16  Ian Lance Taylor  <iant@google.com>
18587
18588         * sel-sched.c: Make forward declarations of move_op_hooks and
18589         fur_hooks explicitly extern.
18590
18591 2009-06-16  Ian Lance Taylor  <iant@google.com>
18592
18593         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
18594         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
18595
18596 2009-06-16  Ian Lance Taylor  <iant@google.com>
18597
18598         * resource.c (mark_referenced_resources): Change
18599         include_delayed_effects parameter to bool.  Change all callers.
18600         (mark_end_of_function_resources): Likewise.
18601         * reorg.c (insn_references_resource_p): Likewise.
18602         (insn_sets_resource_p): Likewise.
18603         * resource.h (mark_referenced_resources): Update declaration.
18604         (mark_end_of_function_resources): Update declaration.
18605
18606 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18607
18608         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
18609
18610 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18611
18612         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
18613         GCC can bootstrap on AIX with GNU Binutils 2.20.
18614
18615 2009-06-16  Ian Lance Taylor  <iant@google.com>
18616
18617         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
18618
18619 2009-06-16  Ian Lance Taylor  <iant@google.com>
18620
18621         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
18622         inline, not extern inline.
18623         (exact_log2): Likewise.
18624         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
18625         test CLZ_HWI.
18626         (exact_log2): Likewise, but don't test CTZ_HWI.
18627
18628 2009-06-16  Ian Lance Taylor  <iant@google.com>
18629
18630         * bitmap.c (bitmap_clear): Don't declare as inline.
18631         * gimple.c (gimplify_assign): Likewise.
18632         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
18633         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
18634         (sched_scan_info): Remove duplicate definition.
18635
18636 2009-06-16  Ian Lance Taylor  <iant@google.com>
18637
18638         * c-common.c (skip_evaluation): Don't define.
18639         (c_inhibit_evaluation_warnings): Define global variable.
18640         (overflow_warning): Check c_inhibit_evaluation_warnings rather
18641         than skip_evaluation.
18642         (convert_and_check, warn_for_div_by_zero): Likewise.
18643         * c-common.h (skip_evaluation): Don't declare.
18644         (c_inhibit_evaluation_warnings): Declare.
18645         * c-parser.c (c_parser_typeof_specifier): Set
18646         c_inhibit_evaluation_warnings rather than skip_evaluation.
18647         (c_parser_conditional_expression): Likewise.
18648         (c_parser_binary_expression): Likewise.
18649         (c_parser_sizeof_expression): Likewise.
18650         (c_parser_alignof_expression): Likewise.
18651         * c-typeck.c (build_indirect_ref): Check
18652         c_inhibit_evaluation_warnings rather than skip_evaluation.
18653         (build_conditional_expr, build_binary_op): Likewise.
18654
18655 2009-06-16  Richard Guenther  <rguenther@suse.de>
18656
18657         * tree-ssa-alias.c (is_escape_site): Remove.
18658         * tree-ssa-alias.h (enum escape_type): Remove.
18659         (is_escape_site): Likewise.
18660         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
18661         via casts and asms without deferring to is_escape_site.
18662
18663 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
18664
18665         PR middle-end/40446
18666         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
18667         use gen_lowpart if op0 has complex mode.
18668
18669 2009-06-16  Richard Guenther  <rguenther@suse.de>
18670
18671         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
18672         variables add them to ESCAPED.
18673         (find_func_aliases): Do not make all indirectly stored values escaped.
18674
18675 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
18676
18677         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
18678         make_decl_one_only.
18679
18680 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18681
18682         PR tree-optimization/40432
18683         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
18684         check whether we need to force gimple register operand.
18685
18686 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18687
18688         PR tree-optimization/40413
18689         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
18690         build_ref_for_offset.
18691         (propagate_subacesses_accross_link): Fix a typo in a comment.
18692
18693 2009-06-16  Ira Rosen  <irar@il.ibm.com>
18694
18695         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
18696         with additional parameter.
18697         * tree-vectorizer.h (enum vect_def_type): Add new value
18698         vect_nested_cycle.
18699         (enum vect_relevant): Add comments.
18700         (vect_is_simple_reduction): Add new argument.
18701         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
18702         Detect nested cycles.
18703         (vect_is_simple_reduction): Update documentation, add an argument to
18704         distinguish inner-loop reduction from nested cycle, detect nested
18705         cycles, fix printings and indentation, don't swap operands in case
18706         of nested cycle.
18707         (get_initial_def_for_reduction): Handle subtraction.
18708         (vect_create_epilog_for_reduction): Add new argument to specify
18709         reduction variable.
18710         (vect_finalize_reduction): Handle subtraction, fix comments.
18711         (vectorizable_reduction): Handle nested cycles. In case of nested
18712         cycle keep track of the reduction variable position. Call
18713         vect_is_simple_reduction with additional parameter. Use original
18714         statement code in reduction epilogue for nested cycle. Call
18715         vect_create_epilog_for_reduction with additional parameter.
18716         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
18717         inner-loop vectorization.
18718         (vect_recog_widen_sum_pattern): Likewise.
18719         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
18720         and reductions.
18721         (vect_mark_stmts_to_be_vectorized): Likewise.
18722         (vect_get_vec_def_for_operand): Handle nested cycles.
18723
18724 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18725
18726         * doc/invoke.texi (Debugging Options): Fix option index entries
18727         for -fdump-statistics, -frandom-seed add entries for
18728         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
18729         (FRV Options): Fix entries for -mTLS, -mtls.
18730         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
18731         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
18732         (M68hc1x Options): Fix @itemx for -mnominmax.
18733         (MCore Options): Fix entry for -mno-lsim.
18734         (MMIX Options): Fix entry for -mabi=mmixware.
18735         (PDP-11 Options): Fix entry for -mbcopy-builtin.
18736
18737 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
18738
18739         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
18740         Mention the plugin mode of gengtype.
18741         * doc/gty.texi (Source Files Containing Type Information): Likewise.
18742         * gengtype.c: Updated copyright.
18743         (plugin_files, nb_plugin_files) Added new static variables.
18744         (measure_input_list) Care about plugin_files.
18745         (write_rtx_next): Added early return in plugin mode.
18746         (create_file): Updated copyright year in generated file. Added
18747         asserts.
18748         (oprintf): Added early return if NULL outf.
18749         (get_output_file_with_visibility): Care of plugin_files.
18750         (get_output_file_name): May return null.
18751         (write_local): Added early return.
18752         (put_mangled_filename): Ditto.
18753         (finish_root_table): Added check for base_files.
18754         (write_roots): Care about null when plugins.
18755         (main): Added plugin mode.
18756
18757 2009-06-15  Ian Lance Taylor  <iant@google.com>
18758
18759         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
18760         * gcov.c (read_count_file): Add braces around variables declared
18761         before label.
18762
18763         * c.opt (Wjump-misses-init): New warning.
18764         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
18765         -Wall and -Wc++-compat if not already set.
18766         (c_common_post_options): Clear warn_jump_misses_init if it was not
18767         set.
18768         * c-decl.c (struct c_binding): Change type field to a union with
18769         new label field.  Make it the first field in the struct.  Update
18770         references to type to use u.type instead.
18771         (struct c_spot_bindings): Define.
18772         (struct c_goto_bindings): Define.
18773         (c_goto_bindings_p): Define, along with VECs.
18774         (struct c_label_vars): Define.
18775         (struct c_scope): Add has_label_bindings field.
18776         (bind_label, set_spot_bindings): New static functions.
18777         (decl_jump_unsafe, update_spot_bindings): New static functions.
18778         (update_label_decls): New static function.
18779         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
18780         Update binding u.label field to shadowed field.
18781         (c_binding_start_stmt_expr): New function.
18782         (c_binding_end_stmt_expr): New function.
18783         (pushdecl): Don't call c_begin_vm_scope.
18784         (make_label): Add defining and p_label_vars parameters.  Change
18785         all callers.
18786         (lookup_label): Correct test for whether a label has not yet been
18787         defined.  Call bind_label rather than bind.
18788         (warn_about_goto): New static function.
18789         (lookup_label_for_goto): New function.
18790         (declare_label): Call bind_label rather than bind.
18791         (check_earlier_gotos): New static function.
18792         (define_label): Don't give errors about jumping into statement
18793         expressions or scopes of variably modified types.  Call
18794         set_spot_bindings and check_earlier_gotos.  Call bind_label
18795         instead of bind.  Don't set label_context_stack_se or
18796         label_context_stack_vm.
18797         (c_get_switch_bindings): New function.
18798         (c_release_switch_bindings): New function.
18799         (c_check_switch_jump_warnings): New function.
18800         (start_function): Don't set label_context_stack_se or
18801         label_context_stack_vm.
18802         (finish_function): Likewise.
18803         * c-typeck.c (label_context_stack_se): Don't define.
18804         (label_context_stack_vm): Don't define.
18805         (c_finish_goto_label): Call lookup_label_for_goto rather than
18806         lookup_label.  Don't give errors about jumping into a statement
18807         expression or the scope of a variably modified type.  Don't set
18808         label_context_stack_se or label_context_stack_vm.
18809         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
18810         fields.  Add bindings field.
18811         (c_start_case): Don't set deleted fields.  Set bindings field.
18812         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
18813         or blocked_vm.  Call c_check_switch_jump_warnings.
18814         (c_finish_case): Don't test blocked_stmt_expr field.  Call
18815         c_release_switch_bindings.
18816         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
18817         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18818         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
18819         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
18820         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18821         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
18822         (c_begin_vm_scope, c_end_vm_scope): Don't define.
18823         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
18824         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
18825         (C_DECL_UNJUMPABLE_VM): Don't define.
18826         (C_DECL_UNDEFINABLE_VM): Don't define.
18827         (struct c_label_list): Don't define.
18828         (struct c_label_context_se): Don't define.
18829         (struct c_label_context_vm): Don't define.
18830         (struct c_spot_bindings): Declare.
18831         (c_bindings_start_stmt_expr): Declare.
18832         (c_bindings_end_stmt_expr): Declare.
18833         (lookup_label_for_goto): Declare.
18834         (c_get_switch_bindings, c_release_switch_bindings): Declare.
18835         (c_check_switch_jump_warnings): Declare.
18836         (label_context_stack_se, label_context_stack_vm): Don't declare.
18837         (c_finish_goto_label): Update declaration.
18838         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
18839         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
18840         (Warning Options): Document -Wjump-misses-init.
18841
18842 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
18843
18844         * tree-object-size.c (addr_object_size): Fix a pasto in the last
18845         change.
18846
18847 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18848
18849         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
18850
18851 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18852
18853         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
18854
18855 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18856
18857         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
18858
18859 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18860
18861         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
18862         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
18863         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
18864         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
18865         * dwarf2asm.c (dw2_force_const_mem): Update call to
18866         make_decl_one_only.
18867         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
18868         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
18869         * langhooks.c (lhd_comdat_group): Remove.
18870         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
18871         * tree.h (DECL_COMDAT_GROUP): New.
18872         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
18873         (tree_decl_with_vis): Add comdat_group. Remove one_only.
18874         (make_decl_one_only): Change signature.
18875         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
18876         make_decl_one_only.
18877         (make_decl_one_only): Change signature.
18878         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
18879
18880 2009-06-15  Richard Guenther  <rguenther@suse.de>
18881
18882         PR middle-end/40439
18883         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
18884
18885 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18886
18887         * tree-ssa-math-opts.c: Remove extra divide.
18888
18889 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18890
18891         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
18892
18893 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18894
18895         * passes.c: Add bswap pass.
18896         * tree-pass.h: Add pass_optimize_bswap declaration.
18897         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
18898         Include rtl.h, expr.h and optabs.h for optab_handler check.
18899         (struct symbolic_number, pass_optimize_bswap): New definition.
18900         (do_shift_rotate, verify_symbolic_number_p): New functions.
18901         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
18902         (gate_optimize_bswap): New function.
18903         * tree.c (widest_int_cst_value): New function.
18904         * tree.h (widest_int_cst_value): Prototype added.
18905
18906 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
18907
18908         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
18909         REG_EQUAL/REG_EQUIV notes.
18910
18911 2009-06-14  Richard Guenther  <rguenther@suse.de>
18912
18913         PR middle-end/40389
18914         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
18915         has its address taken if NRV was applied and it is addressable.
18916         * tree-ssa-structalias.c (get_constraint_for_address_of): New
18917         function split out from ...
18918         (get_constraint_for_1): ... here.
18919         (handle_rhs_call): Use it to mark the return slot escaped if
18920         it is addressable and NRV was applied.
18921
18922 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18923
18924         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
18925         Change first argument type to location_t.
18926         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
18927         Do not set input_location.
18928         Use loc instead of input_location throughout.
18929
18930 2009-06-13  Richard Guenther  <rguenther@suse.de>
18931
18932         PR tree-optimization/40421
18933         * tree-predcom.c (should_unroll_loop_p): Remove.
18934         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
18935
18936 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
18937
18938         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18939         Add location argument.
18940
18941 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18942
18943         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
18944         build_decl.
18945         * config/s390/s390.c (s390_build_builtin_va_list): Same.
18946         (s390_gimplify_va_arg): Pass location to create_artificial_label.
18947         * config/spu/spu-protos.h: Add location to
18948         spu_resolve_overloaded_builtin.
18949         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
18950         spu_build_builtin_va_list.
18951         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
18952         argument.  Pass location to build_function_call_vec.
18953         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
18954         build_decl.
18955         (emit_fpu_switch): Same.
18956         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
18957         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
18958         to build_decl and create_artificial_label.
18959         (xtensa_gimplify_va_arg_expr): Same.
18960         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
18961         (xstormy16_gimplify_va_arg_expr): Same.
18962         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
18963         * config/arm/arm.c (arm_build_builtin_va_list): Same.
18964         * config/mips/mips.c (mips_build_builtin_va_list): Same.
18965         (mips16_build_function_stub): Same.
18966         (mips16_build_call_stub): Same.
18967
18968 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
18969
18970         PR target/40327
18971         * arm/constraints.md (Pa, Pb): New constraints.
18972         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
18973         split pattern to deal with them.
18974
18975 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
18976
18977         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
18978         fix index entry for -Xpreprocessor.
18979
18980 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18981
18982         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18983         Add location argument to build_decl call.
18984         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
18985         (rs6000_init_builtins): Same.
18986         (spe_init_builtins): Same.
18987         (rs6000_gimplify_va_arg): Add location argument to
18988         create_artificial_label call.
18989
18990 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
18991
18992         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
18993         * combine-stack-adj.c (pass_stack_adjustments): Use it.
18994         * Makefile.in: Fix GGC dependency for gcse.o.
18995
18996 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18997
18998         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
18999         * gimple-pretty-print.c (dump_gimple_stmt): Same.
19000         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
19001         created.
19002         * c-parser.c (c_parser_binary_expression): Use current column while
19003         building binary operations.
19004         * common.opt (fshow-column): Enable by default.
19005         * tree-vrp.c (check_array_ref): Use warning_at.
19006         (check_array_bounds): Use location from call back if expr has no
19007         location.
19008         * tree.h: Add location argument to maybe_fold_*.
19009         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
19010         (maybe_fold_offset_to_array_ref): Add location argument and use it.
19011         (maybe_fold_offset_to_component_ref): Same.
19012         (maybe_fold_offset_to_reference): Same.
19013         (maybe_fold_offset_to_address): Same.
19014         (maybe_fold_stmt_indirect): Same.
19015         (maybe_fold_stmt_addition): Same.
19016         (fold_stmt_r): Pass location to maybe_fold_*.
19017         (fold_gimple_assign): Same.
19018         * c-tree.h: Add location argument to finish_decl,
19019         default_function_array_conversion, store_init_value.
19020         * c-decl.c (define_label): Use error_at.
19021         (c_make_fname_decl): Pass location to finish_decl.
19022         (finish_decl): New location argument.
19023         (build_compound_literal): Pass location to store_init_value.
19024         (grokdeclarator): Pass location to finish_decl.
19025         (grokfield): Same.
19026         * c-typeck.c (array_to_pointer_conversion): New location argument.
19027         (function_to_pointer_conversion): Same.
19028         (default_function_array_conversion): Same.
19029         (parser_build_unary_op): Pass location to overflow_warning.
19030         (parser_build_binary_op): Same.  Use warning_at.
19031         (build_unary_op): Pass location to array_to_pointer_conversion.
19032         (build_c_cast): Pass location to digest_init.
19033         (build_modify_expr): New location argument.
19034         (convert_for_assignment): Same.
19035         (store_init_value): Same.
19036         (digest_init): Same.
19037         (output_init_element): Pass location to digest_init and
19038         array_to_pointer_conversion.
19039         (c_finish_return): Pass location to convert_for_assignment.
19040         * gimplify.c (gimplify_conversion): Pass location to
19041         maybe_fold_offset_to_address.
19042         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
19043         to maybe_fold_stmt_addition.
19044         * c-omp.c (c_finish_omp_atomic): Pass new location to
19045         build_modify_expr.
19046         (c_finish_omp_for): Same.
19047         * c-common.c (overflow_warning): New argument.
19048         * c-common.h: New argument to build_modify_expr, overflow_warning.
19049         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
19050         finish_decl.
19051         (c_parser_initializer): Pass location to
19052         default_function_array_conversion.
19053         (c_parser_initelt): Same.
19054         (c_parser_initval): Same.
19055         (c_parser_asm_operands): Same.
19056         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
19057         (c_parser_conditional_expression): Same.
19058         (c_parser_binary_expression): Add location info to stack.  Use it.
19059         (c_parser_unary_expression): Pass location to
19060         default_function_array_conversion, parser_build_unary_op,
19061         build_indirect_ref, c_parser_postfix_expression_after_primary.
19062         (c_parser_postfix_expression_after_primary): New location argument.
19063         Use it.
19064         (c_parser_expression_conv): Pass location to
19065         default_function_array_conversion.
19066         (c_parser_expr_list): Same.
19067         (c_parser_omp_atomic): Same.
19068         (c_parser_omp_for_loop): Same.
19069         * c-tree.h (struct c_declarator): Add comment to id_loc.
19070         (build_array_declarator): New argument.
19071         * c-decl.c (build_array_declarator): Add location argument.
19072         (grokdeclarator): Set id_loc for cdk_array.
19073         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
19074         build_array_declarator.
19075         * tree.c (build_omp_clause): Add location argument.
19076         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
19077         (OMP_CLAUSE_LOCATION): New macro.
19078         (struct tree_omp_clause): Add location field.
19079         (build_omp_clause): Add argument.
19080         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
19081         build_omp_clause.
19082         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
19083         (cp_parser_omp_clause_collapse): Same.
19084         (cp_parser_omp_clause_default): Same.
19085         (cp_parser_omp_clause_if): Same.
19086         (cp_parser_omp_clause_nowait): Same.
19087         (cp_parser_omp_clause_num_threads): Same.
19088         (cp_parser_omp_clause_ordered): Same.
19089         (cp_parser_omp_clause_schedule): Same.
19090         (cp_parser_omp_clause_untied): Same.
19091         (cp_parser_omp_for_loop): Same.
19092         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
19093         * c-tree.h (c_start_case): Add location argument.
19094         (c_process_expr_stmt): Same.
19095         (c_finish_goto_*): Same.
19096         * tree-parloops.c (initialize_reductions): Pass location to
19097         build_omp_clause.
19098         (create_parallel_loop): Same.
19099         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
19100         (gfc_trans_omp_reduction_list): Same.
19101         (gfc_trans_omp_clauses): Same.
19102         (gfc_trans_omp_do): Same.
19103         * c-typeck.c (c_finish_goto_label): Same.
19104         (c_finish_goto_ptr): New location argument.
19105         (c_start_case): Same.
19106         (emit_side_effect_warnings): Same.
19107         (c_process_expr_stmt): Same.
19108         (c_finish_stmt_expr): Same.
19109         (c_finish_omp_clauses): Use error_at instead of error.
19110         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
19111         build_omp_clause.
19112         * c-omp.c (c_split_parallel_clauses): New location argument.
19113         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
19114         to build_omp_clause.
19115         (convert_local_reference_stmt): Same.
19116         (convert_gimple_call): Same.
19117         * c-common.h (c_split_parallel_clauses): New argument.
19118         * c-parser.c (c_parser_statement_after_labels): Pass location to
19119         c_finish_goto_label.
19120         (c_parser_switch_statement): Pass location to c_start_case.
19121         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
19122         and c_process_expr_stmt.
19123         (c_parser_omp_variable_list): Add location argument.
19124         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
19125         (c_parser_omp_clause_default): Same.
19126         (c_parser_omp_clause_if): Same.
19127         (c_parser_omp_clause_num_threads): Same.
19128         (-c_parser_omp_clause_ordered): Same.
19129         (c_parser_omp_clause_reduction): Pass location to
19130         c_parser_omp_variable_list.
19131         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
19132         (c_parser_omp_clause_untied): Same.
19133         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
19134         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
19135
19136         * c-tree.h (check_for_loop_decls, undeclared_variable,
19137         build_component_ref, build_array_ref, build_external_ref,
19138         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
19139         build_conditional_expr, build_compound_expr, c_cast_expr,
19140         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
19141         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
19142         argument.
19143         * c-semantics.c (build_stmt): Same.
19144         (build_case_label): Same.
19145         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
19146         (undeclared_variable): New argument.
19147         (make_label): Same.
19148         (lookup_label): Pass location on down.
19149         (define_label): Same.
19150         (finish_decl): Same.
19151         (build_compound_literal): Same.
19152         (finish_struct): Same.
19153         (finish_function): Do not set location here.
19154         (check_for_loop_decls): New argument.
19155         * tree.c (save_expr): Set location.
19156         (build_empty_stmt): New argument.
19157         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
19158         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
19159         * builtins.c (gimplify_va_arg_expr): Use locations.
19160         (expand_builtin_sync_operation): Same.
19161         * c-typeck.c (build_component_ref): New argument.
19162         (build_array_ref): Same.
19163         (build_external_ref): Same.
19164         (c_expr_sizeof_expr): Same.
19165         (c_expr_sizeof_type): Same.
19166         (parser_build_unary_op): Same.
19167         (build_conditional_expr): Same.
19168         (build_compound_expr): Pass location on down.
19169         (build_compound_expr): New argument.
19170         (build_c_cast): Same.
19171         (c_cast_expr): Same.
19172         (build_asm_expr): Same.
19173         (c_finish_return): Same.
19174         (c_process_expr_stmt): Pass location on down.
19175         (c_finish_stmt_expr): New argument.
19176         (push_clenaup): Same.
19177         (c_finish_omp_parallel): Same.
19178         (c_finish_omp_task): Same.
19179         * gimplify.c (gimplify_call_expr): Pass location on down.
19180         * c-omp.c (c_finish_omp_master): New argument.
19181         (c_finish_omp_critical): Same.
19182         (c_finish_omp_ordered): Same.
19183         (c_finish_omp_barrier): Same.
19184         (-c_finish_omp_taskwait): Same.
19185         (c_finish_omp_atomic): Same.
19186         (c_finish_omp_flush): Same.
19187         * tree-inline.c (copy_tree_body_r): Pass location on down.
19188         (inline_forbidden_p): Remove use of input_location.
19189         * c-gimplify.c (c_build_bind_expr): New argument.
19190         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
19191         (c_sizeof_or_alignof_type): New argument.
19192         (c_alignof_expr): Same.
19193         (build_va_arg): Same.
19194         (c_add_case_label): Same.
19195         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
19196         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
19197         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
19198         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
19199         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
19200         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
19201         New argument.
19202         * stub-objc.c (objc_build_selector_expr): Same.
19203         (objc_build_throw_stmt): Same.
19204         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
19205         (c_parser_initelt): Same.
19206         (c_parser_compound_statement): Same.
19207         (c_parser_compound_statement_nostart): Same.
19208         (c_parser_label): Same.
19209         (c_parser_statement_after_labels): Same.
19210         (c_parser_if_body): Same.
19211         (c_parser_else_body): Same.
19212         (c_parser_if_statement): Same.
19213         (c_parser_switch_statement): Same.
19214         (c_parser_while_statement): Same.
19215         (c_parser_do_statement): Same.
19216         (c_parser_for_statement): Same.
19217         (c_parser_asm_statement): Same.
19218         (c_parser_conditional_expression): Same.
19219         (c_parser_binary_expression): Same.
19220         (c_parser_cast_expression): Same.
19221         (c_parser_unary_expression): Same.
19222         (c_parser_sizeof_expression): Same.
19223         (c_parser_alignof_expression): Same.
19224         (c_parser_postfix_expression): Same.
19225         (c_parser_expression): Same.
19226         (c_parser_objc_receiver): Same.
19227         (c_parser_omp_variable_list): Same.
19228         (c_parser_omp_structured_block): Same.
19229         (c_parser_omp_atomic): New argument.
19230         (c_parser_omp_barrier): Same.
19231         (c_parser_omp_critical): Same.
19232         (c_parser_omp_flush): Pass location on down.
19233         (c_parser_omp_for_loop): New argument.
19234         (c_parser_omp_for): Same.
19235         (c_parser_omp_master): Same.
19236         (c_parser_omp_ordered): Same.
19237         (c_parser_omp_sections_scope): Same.
19238         (c_parser_omp_sections): Same.
19239         (c_parser_omp_parallel): Same.
19240         (c_parser_omp_single): Same.
19241         (c_parser_omp_task): Same.
19242         (c_parser_omp_taskwait): Pass location on down.
19243         (c_parser_omp_construct): Same.
19244         (c_parser_omp_threadprivate): Same.
19245         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
19246         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
19247         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
19248         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
19249         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
19250         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
19251         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
19252         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
19253         config/i386/i386.c, stmt.c:
19254         Add location argument to the following function definitions and/or
19255         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
19256         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
19257         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
19258         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
19259         do_case, c_finish_bc_stmt, build_compound_literal,
19260         build_function_call.
19261         * c-decl.c (build_compound_literal): Add location argument.
19262         Make all diagnostic calls use location.
19263         (start_struct): Same.
19264         (finish_struct): Same.
19265         (start_enum): Same.
19266         (build_enumerator): Same.
19267         (start_function): Same.
19268         (grokdeclarator): Make all diagnostic calls use location.
19269         (store_parm_decls_oldstyle): Same.
19270         * c-typeck.c (build_function_call): Add location argument.
19271         Make all diagnostic calls use location.
19272         (do_case): Same.
19273         (c_finish_bc_stmt): Same.
19274         * tree-nested.c (get_trampoline_type): Add argument.
19275         Pass location to build_decl.
19276         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
19277         * rtl.h (RTL_LOCATION): New.
19278         * c-common.c (c_add_case_label): Add location argument.
19279         Make all diagnostic calls use location.
19280         * c-common.h: Add location argument to make_fname_decl, do_case,
19281         c_add_case_label, build_function_call, resolve_overloaded_builtin.
19282         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
19283         Set it appropriately for every case.  Pass enum_loc to start_enum
19284         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
19285         parser_xref_tag.
19286         (c_parser_struct_or_union_specifier): Save location.  Use it for
19287         start_struct, finish_struct, and parser_xref_tag.
19288
19289 2009-06-12  Ian Lance Taylor  <iant@google.com>
19290
19291         * fold-const.c (fold_unary): Rename local variable and to and_expr.
19292
19293         * c-opts.c (c_common_handle_option): For -Wc++-compat set
19294         cpp_opts->warn_cxx_operator_names.
19295
19296 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19297
19298         PR tree-opt/38865
19299         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
19300         is returns NULL and OP is a VCE, look through the VCE.
19301
19302 2009-06-12  Ian Lance Taylor  <iant@google.com>
19303
19304         PR bootstrap/40430
19305         * collect2.c (main): Use CONST_CAST2 in code inside #if
19306         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
19307
19308 2009-06-12  Joey Ye  <joey.ye@intel.com>
19309
19310         PR middle-end/39146
19311         * cfgexpand.c (get_decl_align_unit): Update
19312         max_used_stack_slot_alignment with align instead of
19313         stack_alignment_needed.
19314
19315         * function.c (assign_stack_local_1): Update
19316         max_used_stack_slot_alignment with alignment_in_bits instead
19317         of stack_alignment_needed.
19318         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
19319         here.
19320
19321 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
19322
19323         * dwarf2out.c (last_var_location_insn): New variable.
19324         (dwarf2out_end_epilogue): Clear last_var_location_insn.
19325         (dwarf2out_var_location): Don't record anything after last real
19326         insn.  Only change labels if there were any real instructions
19327         in between last note and this one, or if changed sections.
19328
19329 2009-06-11  Richard Henderson  <rth@redhat.com>
19330
19331         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
19332         note when storing the frame pointer in a register.
19333         (FRP): Don't redefine to nothing for epilogue.
19334         (alpha_expand_epilogue): Mark register and sp restores.
19335         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
19336
19337         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
19338         when gen_lowpart is needed.
19339
19340 2009-06-11  Richard Henderson  <rth@redhat.com>
19341
19342         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
19343
19344         * dwarf2out.c (need_data_align_sf_opcode): New.
19345         (div_data_align): Move earlier.
19346         (def_cfa_1, reg_save): Use it.
19347
19348 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
19349
19350         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
19351         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
19352         (ix86_handle_option): Handle OPT_mcrc32.
19353         (ix86_target_string): Add -mcrc32.
19354         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
19355
19356         * config/i386/i386.h (TARGET_CRC32): New.
19357
19358         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
19359         (sse4_2_crc32di): Likewise.
19360
19361         * config/i386/i386.opt (mcrc32): New.
19362
19363         * doc/invoke.texi: Document -mcrc32.
19364
19365 2009-06-11  Richard Henderson  <rth@redhat.com>
19366
19367         * common.opt (gdwarf-): Accept a version number.
19368         * doc/invoke.texi (gdwarf-): Update docs.
19369         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
19370         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
19371         version level, and record it.
19372
19373         * dwarf2.h (DW_CIE_VERSION): Remove.
19374         * dwarf2out.c (DWARF_VERSION): Remove.
19375         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
19376         (output_call_frame_info): Use CIE version 3 for dwarf3,
19377         or if the return register column is out of range for version 1.
19378         (dwarf_stack_op_name): Add all dwarf3 values.
19379         (DEBUG_PUBTYPES_SECTION): New.
19380         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
19381         encoding change for dwarf3.
19382         (output_die) [dw_val_class_die_ref]: Likewise.
19383         (output_compilation_unit_header): Emit correct version for dwarf3.
19384         (output_line_info): Likewise.
19385         (output_pubnames): Update for DWARF_VERSION removal.
19386         (output_aranges): Likewise.
19387         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
19388         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
19389         (dwarf2out_finish): Likewise.
19390
19391 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
19392
19393         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
19394         in r148403.
19395
19396 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
19397
19398         PR c/39252
19399         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
19400         * builtins.c (expand_builtin_unreachable): New function.
19401         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
19402         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
19403         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
19404         successors.
19405         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
19406         searching for missing barriers.
19407
19408 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19409
19410         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
19411         when -fprofile-generate* was passed.
19412         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
19413
19414 2009-06-11  Anthony Green  <green@moxielogic.com>
19415
19416         * config/moxie/moxie.md: Define length attribute for all instructions.
19417         (rCC): Define.
19418         (*b<cond:code>): Support limited branch ranges for new PC-relative
19419         branch instructions.
19420         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
19421
19422 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
19423
19424         * config/i386/i386.c (min_insn_size): Use get_attr_length
19425         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
19426         For __asm return 0.
19427
19428         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
19429         instead of emit_insn_before.
19430
19431 2009-06-10  Ian Lance Taylor  <iant@google.com>
19432
19433         PR bootstrap/40408
19434         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
19435         GIMPLE_SWITCH.
19436
19437 2009-06-10  Revital Eres  <eres@il.ibm.com>
19438
19439         * passes.c (init_optimization_passes): Reschedule
19440         predictive-commoning pass before complete unroll pass.
19441
19442 2009-06-10  Martin Jambor  <mjambor@suse.cz>
19443
19444         * cgraph.c (cgraph_node_can_be_local_p): New function.
19445         (cgraph_make_node_local): New function.
19446         * cgraph.h (cgraph_node_can_be_local_p): Declare.
19447         (cgraph_make_node_local): Declare.
19448
19449 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
19450
19451         * tree.h (tree_base): Add packed_flag and user_align fields.
19452         Decrease size of spare field.
19453         (TYPE_USER_ALIGN): Use user_align from tree_base.
19454         (DECL_USER_ALIGN): Likewise.
19455         (TYPE_PACKED): Use packed_flag from tree_base.
19456         (DECL_PACKED): Likewise.
19457         (tree_type): Delete packed_flag and user_align fields.  Widen
19458         precision field.  Widen mode field and shuffle fields to align
19459         mode on an 8-bit boundary.
19460         (tree_decl_common): Delete decl_flag_1 and user_align fields.
19461         Renumber decl_flag_* fields.  Fix comments.  Widen
19462         decl_common_unused field.
19463         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
19464         (DECL_EXTERNAL): Likewise.
19465         (DECL_BIT_FIELD): Likewise.
19466         (DECL_NONADDRESSABLE_P): Likewise.
19467         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
19468         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
19469
19470 2009-06-10  Ian Lance Taylor  <iant@google.com>
19471
19472         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
19473         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
19474         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
19475         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
19476         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
19477         DEF_VEC_ALLOC_FUNC_P.
19478         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
19479         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
19480         DEF_VEC_ALLOC_FUNC_O.
19481         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
19482         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
19483         DEF_VEC_ALLOC_FUNC_I.
19484         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
19485         (vec_stack_p_reserve_exact_1): Declare.
19486         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
19487         (vec_stack_free): Declare.
19488         (VEC_stack_alloc): Define.
19489         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
19490         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
19491         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
19492         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
19493         for void_p.
19494         (stack_vecs): New static variable.
19495         (vec_stack_p_reserve_exact_1): New function.
19496         (vec_stack_o_reserve_1): New static function.
19497         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
19498         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
19499         (vec_stack_free): New function.
19500         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
19501         (VEC_df_ref_stack_alloc): Define.
19502         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
19503         DEF_VEC_ALLOC_P_STACK.
19504         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
19505         (struct df_collection_rec): Change _vec fields to VEC.  Remove
19506         _use fields.
19507         (df_free_collection_rec): Adjust for new fields.
19508         (df_insn_rescan): Use new df_collection_rec fields.
19509         (df_notes_rescan, df_canonize_collection_rec): Likewise.
19510         (df_ref_create_structure, df_ref_record): Likewise.
19511         (df_get_conditional_uses, df_get_call_refs): Likewise.
19512         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
19513         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
19514         (df_record_exit_block_uses, df_bb_verify): Likewise.
19515         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
19516         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
19517         Remove count parameter.  Change return type to void.  Change all
19518         callers.
19519         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
19520         Remove count parameter.  Change return type to void.  Change all
19521         callers.
19522         (df_install_refs): Change old_vec parameter to VEC.  Remove count
19523         parameter.  Change all callers.
19524         (df_install_mws): Change old_vec parameter to VEC.  Remove count
19525         parameter.  Change all callers.
19526         (df_refs_verify): Change new_rec parameter to VEC.  Change call
19527         callers.
19528         (df_mws_verify): Likewise.
19529
19530 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
19531
19532         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
19533
19534 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
19535
19536         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
19537
19538 2009-06-10  Anthony Green  <green@moxielogic.com>
19539
19540         * config/moxie/crti.asm: New file.
19541         * config/moxie/crtn.asm: New file.
19542         * config/moxie/moxie.c: New file.
19543         * config/moxie/moxie.h: New file.
19544         * config/moxie/sfp-machine.h: New file.
19545         * config/moxie/moxie-protos.h: New file.
19546         * config/moxie/t-moxie: Created.
19547         * config/moxie/t-moxie-softfp: Created.
19548         * config/moxie/moxie.md: Created.
19549         * config/moxie/constraints.md: Created.
19550         * config.gcc: Add moxie support.
19551         * doc/md.texi (Machine Constraints): Add moxie constraints.
19552         * doc/contrib.texi (Contributors): Mention moxie port.
19553         * doc/install.texi (Specific): Mention the moxie port.
19554
19555 2009-06-09  Ian Lance Taylor  <iant@google.com>
19556
19557         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
19558         compiling with C++.
19559         * optabs.c (optab_table): Only use designated initializers if
19560         HAVE_DESIGNATED_INITIALIZERS is defined.
19561         (convert_optab_table): Likewise.
19562         (init_optabs): Always call init_insn_codes if
19563         HAVE_DESIGNATED_INITIALIZERS is not defined.
19564
19565 2009-06-09  Ian Lance Taylor  <iant@google.com>
19566
19567         * targhooks.c (default_builtin_vectorized_function): Change fn
19568         parameter to unsigned int.
19569         (default_builtin_vectorized_conversion): Change code parameter to
19570         unsigned int.
19571         (default_builtin_reciprocal): Change fn parameter to unsigned int.
19572         * targhooks.h: Update declarations.
19573         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
19574         parameter to unsigned int.
19575
19576         * c-typeck.c (comptypes_check_enum_int): New static function.
19577         (comptypes_internal): Add enum_and_int_p parameter.  Change all
19578         callers.
19579         (comp_target_types): Add location parameter.  Change all callers.
19580         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
19581         Change all callers.
19582         (function_types_compatible_p, type_lists_compatible_p): Likewise.
19583         (build_conditional_expr): Add colon_loc parameter.  Change all
19584         callers.
19585         (convert_for_assignment): Add location parameter.  Change all callers.
19586         * c-parser.c (c_parser_conditional_expression): Pass location of
19587         colon to build_conditional_expr.
19588         * c-tree.h (build_conditional_expr): Update declaration.
19589
19590 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19591
19592         * graphite.c: Revert previous patch.
19593
19594 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19595
19596         PR bootstrap/40103
19597         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
19598
19599 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19600
19601         * tree-ssa-loop-prefetch.c
19602         (loop_prefetch_arrays): Fixed a portability problem in printf format
19603         string.
19604
19605 2009-06-09  Martin Jambor  <mjambor@suse.cz>
19606
19607         PR tree-optimization/40351
19608         * tree-sra.c (propagate_subacesses_accross_link): Check that a
19609         refrence to a potential artifical subaccess can be constructed.
19610
19611 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19612
19613         * config/sh/sh-protos.h (sh_optimization_options): Declare.
19614         (sh_override_options): Likewise.
19615         * config/sh/sh.c: Include params.h.
19616         (sh_optimization_options): New.
19617         (sh_override_options): Likewise.
19618         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
19619         (OVERRIDE_OPTIONS): Use sh_override_options.
19620
19621 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19622
19623         * dwarf2out.c (emit_cfa_remember): New variable.
19624         (add_fde_cfi): If emit_cfa_remember, recurse to add
19625         DW_CFA_remember_state first.
19626         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
19627         instead just set emit_cfa_remember.
19628
19629 2009-06-08  Jan Hubicka  <jh@suse.cz>
19630
19631         PR debug/40126
19632         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
19633
19634 2009-06-08  Jan Hubicka  <jh@suse.cz>
19635
19636         PR middle-end/39834
19637         * cgraphunit.c (save_inline_function_body): Do not copy transform
19638         hooks for saved inline bodies.
19639         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
19640         for given function.
19641
19642 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
19643
19644         * jump.c (returnjump_p): Handle delayed branches.  Add missing
19645         function comment.
19646
19647 2009-06-08  Jan Hubicka  <jh@suse.cz>
19648
19649         PR middle-end/40102
19650         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
19651         original node might've been modified.
19652         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
19653
19654 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19655
19656         * tree-object-size.c (addr_object_size): Add OSI argument.
19657         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
19658         (compute_builtin_object_size, expr_object_size): Adjust callers.
19659         (plus_stmt_object_size): Call addr_object_size instead of
19660         compute_builtin_object_size.
19661
19662 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19663             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19664
19665         * tree-ssa-loop-prefetch.c
19666         (gather_memory_references): Introduced a counter for the number of
19667         memory references.
19668         (anything_to_prefetch_p): Introduced a counter for the number of
19669         prefetches.
19670         (is_loop_prefetching_profitable): New function with a cost model
19671         for prefetching.
19672         (loop_prefetch_arrays): Use the new cost model to determine if
19673         prefetching is profitable.
19674         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
19675         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19676         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
19677         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19678         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
19679         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19680
19681 2009-06-08  Michael Matz  <matz@suse.de>
19682
19683         PR debug/40012
19684         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
19685         partitions use the same.
19686         (expand_one_var): Deal with DECL_RTL sometimes begin set also
19687         for basevars of SSA_NAMEs.
19688         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
19689         to not expand them twice.
19690         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
19691         multiple places.
19692
19693 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
19694
19695         * common.opt (fcompare-debug=, fcompare-debug-second): New.
19696         (fdump-final-insns=, gtoggle): New.
19697         * doc/invoke.texi: Document them.
19698         * final.c (rest_of_clean_state): Dump final insn stream.
19699         * gcc.c (invoke_as): Hook in -fcompare-debug.
19700         (static_spec_functions): Add compare-debug-dump-opt,
19701         compare-debug-self-opt and compare-debug-auxbase-opt.
19702         (compare_debug, compare_debug_second, compare_debug_opt): New.
19703         (switches_debug_check, n_switches_debug_check): New.
19704         (debug_auxbase_opt, debug_check_temp_file): New.
19705         (process_command): Handle -fno-compare-debug, -fcompare-debug and
19706         -fcompare-debug=*.
19707         (do_self_spec): Handle arguments after switches.
19708         (do_spec_1): Add .gk extension to temp file basenames for compare.
19709         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
19710         (cc1_options): Use it instead of normal auxbase computation for
19711         the second compare-debug compilation.
19712         (compare_files): New.
19713         (main): Set up and implement compare debug mode.
19714         (compare_debug_dump_opt_spec_function): New.
19715         (compare_debug_self_opt_spec_function): New.
19716         (compare_debug_auxbase_opt_spec_function): New.
19717         * toplev.c (process_options): Handle flag_gtoggle,
19718         flag_dump_final_insns.
19719         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
19720         during -fcompare-debug-second compilation.
19721
19722 2009-06-07  Ian Lance Taylor  <iant@google.com>
19723
19724         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
19725         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
19726
19727         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
19728         with no default node.  Change warning with %H to warning_at.
19729         Don't clear warn_switch around case checking.
19730         * doc/invoke.texi (Warning Options): Clarify distinction between
19731         -Wswitch and -Wswitch-enum.
19732
19733 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19734
19735         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
19736
19737 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19738
19739         * gbl-ctors.h: Add header guard.
19740
19741 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19742
19743         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
19744         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
19745         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
19746         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
19747         prototypes for removed functions.
19748         (expressions_equal_p): Move to ...
19749         * tree-ssa-sccvn.h: ... here and ...
19750         * matrix-reorg.c: ... adjust includes.
19751
19752 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19753
19754         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
19755
19756 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19757
19758         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
19759         (finish_function): Remove erroneous whitespace.
19760
19761 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19762
19763         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
19764         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
19765
19766 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19767
19768         * errors.c (internal_error): Commentary typo fix.
19769         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
19770         * tree-ssa-pre.c: Ditto.
19771
19772 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19773
19774         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
19775         them is supposed to hold actual statements.
19776
19777 2009-06-06  Ian Lance Taylor  <iant@google.com>
19778
19779         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
19780         empty statements can now have attributes.
19781
19782 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
19783
19784         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
19785         * config/mips/mips.md: Ditto.
19786
19787 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19788
19789         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
19790         _RELOCATABLE.
19791         (__eabi_uconvert): Likewise.
19792
19793 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19794
19795         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
19796         CFI_* definitions with IN_GCC.
19797
19798 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
19799
19800         * xcoffout.h (xcoffout_source_line): Update prototype.
19801
19802 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19803
19804         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
19805         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
19806
19807 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19808
19809         PR middle-end/40340
19810         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
19811         inlined_function_outer_scope_p blocks for artificial inlines
19812         even at -g0/-g1.
19813         * tree.c (tree_nonartificial_location): Rewrite using
19814         block_nonartificial_location.
19815
19816 2009-06-05  Revital Eres  <eres@il.ibm.com>
19817             Leehod Baruch  <leehod@il.ibm.com>
19818
19819         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
19820         (expand_expr_real_1): Remove comment.
19821         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
19822         Vectorize misaligned access when the target supports it.
19823         (vect_supportable_dr_alignment): Check for unaligned access support.
19824         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
19825         and remove asset.
19826
19827 2009-06-05  Julian Brown  <julian@codesourcery.com>
19828
19829         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
19830         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
19831
19832 2009-06-05  Richard Guenther  <rguenther@suse.de>
19833
19834         PR bootstrap/40350
19835         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
19836         as possibly unused.
19837
19838 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19839
19840         * config/s390/s390.c (global_not_special_regno_p): New static inline.
19841         (save_gprs): Don't tell unwinder when a global register is saved.
19842         (s390_emit_epilogue): Emit needed epilogue unwind info.
19843
19844 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19845
19846         * dwarf2out.c (deferred_asm_name): New.
19847         (add_name_and_src_coords_attributes): Defer creation of
19848         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
19849         computed yet.
19850         (move_linkage_attr): New.
19851         (dwarf2out_finish): Revisit deferrals and emit attributes at the
19852         right place.
19853
19854 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19855
19856         * tree-nested.c (finalize_nesting_tree_1): Declare the
19857         frame_decl in the binding tree.
19858
19859 2009-06-04  Cary Coutant  <ccoutant@google.com>
19860
19861         * basic-block.h (struct basic_block_def): Add discriminator field.
19862         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
19863         callers.
19864         * debug.c (do_nothing_debug_hooks): Add additional entry.
19865         (debug_nothing_int_charstar_int): New function.
19866         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
19867         (debug_nothing_int_charstar_int): New declaration.
19868         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
19869         discriminator value in .loc directive.
19870         * final.c (last_discriminator): New variable.
19871         (discriminator): New variable.
19872         (final_start_function): Initialize above variables, pass current
19873         discriminator to debug hook.
19874         (notice_source_line): Check for discriminator change.
19875         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
19876         * sdbout.c (sdbout_source_line): New parameter.
19877         * tree-cfg.c (struct locus_discrim_map): New structure type.
19878         (discriminator_per_locus): New hash table.
19879         (build_gimple_cfg): Allocate and free discriminator hash table.
19880         (make_edges): Call assign_discriminator.
19881         (locus_map_hash): New function.
19882         (locus_map_eq): New function.
19883         (next_discriminator_for_locus): New function.
19884         (same_line_p): New function.
19885         (assign_discriminator): New function.
19886         (make_cond_expr_edges): Call assign_discriminator.
19887         (make_gimple_switch_edges): Likewise.
19888         (first_non_label_stmt): New function.
19889         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
19890         all callers.
19891         * xcoffout.c (xcoffout_source_line): Add new parameter.
19892
19893         * configure.ac (gcc_cv_as_discriminator): New configury check for
19894         gas support for discriminator.
19895         * configure: Regenerate.
19896         * config.in: Regenerate.
19897
19898 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19899
19900         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
19901         val after checking for integers.
19902
19903 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
19904
19905         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
19906         X64_REGPARM_MAX.
19907         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
19908         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
19909         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
19910         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
19911         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
19912         X64_SSE_REGPARM_MAX.
19913         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
19914         X64_SSE_REGPARM_MAX.
19915
19916 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19917
19918         * gcc.c (report_times_to_file): New.
19919         (execute): Implement it.
19920         (process_command): Support -time=.
19921         * doc/invoke.texi: Document it.
19922
19923 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19924
19925         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
19926         that have value exprs.
19927
19928 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19929
19930         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
19931         declarations for constants until...
19932         (dw2_output_indirect_constant_1): ... this point.
19933
19934 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
19935
19936         PR target/10242
19937         * arm.md (arm_addsi3): Don't try to split an add with an
19938         eliminable register until after reload has completed.
19939
19940 2009-06-03  Ian Lance Taylor  <iant@google.com>
19941
19942         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
19943         * genattrtab.c (write_length_unit_log): Likewise.
19944         * genchecksum.c (dosum): Likewise.
19945         * gengtype.c (write_rtx_next): Likewise.
19946         (finish_root_table, write_roots): Likewise.
19947         * gimple.c (gimple_ops_offset_): Likewise.
19948         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
19949         * config/arc/arc.c (arc_attribute_table): Likewise.
19950         * config/arm/arm.c (arm_attribute_table): Likewise.
19951         * config/avr/avr.c (avr_attribute_table): Likewise.
19952         * config/crx/crx.c (crx_attribute_table): Likewise.
19953         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
19954         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
19955         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
19956         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
19957         * config/sh/sh.c (sh_attribute_table): Likewise.
19958         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
19959         * config/spu/spu.c (spu_attribute_table): Likewise.
19960         * config/v850/v850.c (v850_attribute_table): Likewise.
19961
19962         * config/alpha/alpha.c (vms_attribute_table): Make static.
19963         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
19964         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
19965         * config/mips/mips.c (mips_attribute_table): Likewise.
19966
19967         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
19968         $(SYSTEM_H).
19969         (cc1-checksum.o): Likewise.
19970
19971 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
19972
19973         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
19974
19975 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
19976
19977         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
19978         insn if it is changing sp.  Use gen_add3_insn instead of
19979         conditionally gen_addsi3 and gen_adddi3.
19980         (offset_below_red_zone_p): New static inline function.
19981         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
19982         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
19983         * config/rs6000/ppc-asm.h: Include auto-host.h.
19984         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
19985         CFI_RESTORE): Define.
19986         * config/rs6000/crtresxgpr.asm: Add unwind info.
19987         * config/rs6000/crtresxfpr.asm: Likewise.
19988         * config/rs6000/crtresgpr.asm: Likewise.
19989         * config/rs6000/crtresfpr.asm: Likewise.
19990         * config/rs6000/crtsavgpr.asm: Likewise.
19991         * config/rs6000/crtsavfpr.asm: Likewise.
19992
19993         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
19994         argument of DWARF2_FRAME_REG_OUT macros.
19995
19996 2009-06-03  Julian Brown  <julian@codesourcery.com>
19997
19998         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
19999         words or less (including TImode) in core registers.
20000
20001 2009-06-03  Richard Guenther  <rguenther@suse.de>
20002
20003         PR middle-end/40328
20004         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
20005
20006 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
20007
20008         * statistics.c (statistics_counter_event): Do not record event
20009         in pass dump if its number == -1.
20010         (curr_statistics_hash): Add assert that we never get passes
20011         with static number == -1.
20012
20013 2009-06-03  Richard Guenther  <rguenther@suse.de>
20014             Andrey Belevantsev  <abel@ispras.ru>
20015
20016         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
20017         non-BLKmode arrays addressable.
20018
20019 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
20020
20021         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
20022         * config/m68k/m68k.h: ... here.
20023
20024 2009-06-03  Martin Jambor  <mjambor@suse.cz>
20025
20026         PR tree-optimization/40323
20027         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
20028         assignment.
20029
20030 2009-06-03  Richard Guenther  <rguenther@suse.de>
20031
20032         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
20033         consistently.
20034
20035 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
20036
20037         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
20038         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
20039         JUMP_TABLE_DATA_P where applicable.
20040         * config/sh/sh.c: Ditto.
20041         * config/sh/sh.h: Ditto.
20042         * config/sh/sh.md: Ditto.
20043         * config/sh/symbian.c: Ditto.
20044
20045 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
20046
20047         * config/i386/driver-i386.c (describe_cache): Optimize
20048         concatenation of strings.  Use snprintf instead of sprintf.
20049         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
20050         target when not compiling with GCC.
20051
20052 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
20053
20054         * config/sh/sh.c: Revert last change.
20055         (sh_expand_epilogue): Emit a blockage insn before the frame
20056         pointer adjustment unconditionally.
20057
20058 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20059
20060         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
20061         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
20062         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
20063         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
20064         to COLLECT_GCC_OPTIONS.
20065
20066 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20067
20068         * collect2.c (target_system_root): New variable.
20069         (main): Handle --sysroot=.
20070         (ignore_library): Strip the sysroot from the library path.
20071
20072 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20073
20074         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
20075         (collect2.o): Depend on collect2-aix.h.
20076         (collect2-aix.o): New rule.
20077         * collect2-aix.h: New file.
20078         * collect2-aix.c: Likewise.
20079         * collect2.c: Include collect2-aix.h.  Don't undefine
20080         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
20081         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
20082         Use TARGET_AIX_VERSION instead of _AIX51.
20083         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
20084         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
20085         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
20086         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
20087         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
20088
20089 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20090
20091         * collect2.c (ignore_library): Avoid premature post-increment
20092         and null deference.
20093
20094 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20095
20096         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
20097         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
20098         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
20099         CROSS_DIRECTORY_STRUCTURE too.
20100         (LINK_LIBG_SPEC): Likewise.
20101         (LIB_SPEC): Add %R to sysroot paths.
20102         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
20103         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
20104         * config/rs6000/aix51.h: As for aix43.h.
20105         * config/rs6000/aix52.h: Likewise.
20106         * config/rs6000/aix53.h: Likewise.
20107         * config/rs6000/aix61.h: Likewise.
20108         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
20109         to the beginning of sysroot paths.
20110
20111 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20112
20113         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
20114         INSN_LISTs that are out of the REG_NOTE range.
20115
20116 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20117
20118         * loop-unroll.c (struct iv_to_split): Add pointer to next.
20119         (struct var_to_expand): Likewise.
20120         (struct opt_info): Add head and tail for linked lists of the above.
20121         (analyze_insn_to_expand_var): Initialize next.
20122         (analyze_iv_to_split_insn): Likewise.
20123         (analyze_insns_in_loop): Create linked lists.
20124         (allocate_basic_variable): Simplify for use without hash table.
20125         (insert_var_expansion_initialization): Likewise, make it type-safer.
20126         (combine_var_copies_in_loop_exit): Likewise.
20127         (apply_opt_in_copies): Walk lists rather than hash tables.
20128         (release_var_copies): Simplified and inlined by hand into...
20129         (free_opt_info): ... this function.
20130
20131 2009-06-02  Richard Guenther  <rguenther@suse.de>
20132
20133         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
20134         for field decls.
20135
20136 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20137
20138         * cfgexpand.c (gimple_expand_cfg): Discard the source location
20139         only for builtins that are not overridden.
20140
20141 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20142
20143         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
20144         label string.
20145
20146 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20147
20148         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
20149
20150 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20151
20152         * combine.c (move_deaths): Compare LUIDs within the same BB only.
20153
20154 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20155
20156         * common.opt (fdump-unnumbered-links): New.
20157         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
20158         * print-rtl.c (flag_dump_unnumbered_links): New.
20159         (print_rtx): Test it.
20160
20161 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
20162
20163         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
20164         push/pop multiple to 8-byte alignment.
20165
20166 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
20167
20168         * config/i386/i386.c (queued_cfa_restores): New static variable.
20169         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
20170         functions.
20171         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
20172         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
20173         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
20174         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
20175         note unconditionally.
20176         (ix86_emit_restore_regs_using_mov): Likewise.
20177         (ix86_emit_restore_sse_regs_using_mov): Likewise.
20178         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
20179         it through to ix86_emit_restore_reg_using_pop.
20180         (ix86_emit_leave): Add RED_OFFSET argument.  Call
20181         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
20182         instead of adding REG_CFA_OFFSET note unconditionally.
20183         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
20184         the above functions.  Call ix86_add_queued_cfa_restore_notes when
20185         needed.
20186
20187         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
20188         force output of the label even for dwarf2out_do_cfi_asm.
20189         (add_fde_cfi): If -g2 and above and cfi might change CFA,
20190         force creation of CFI label and chain DW_CFA_set_loc jumping to it
20191         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
20192         caller.
20193         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
20194         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
20195         dwarf2out_cfi_label callers.
20196         * tree.h (dwarf2out_cfi_label): Adjust prototype.
20197         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
20198         Adjust dwarf2out_cfi_label callers.
20199         * config/vax/vax.c (vax_output_function_prologue): Likewise.
20200
20201         * config/i386/i386.h (struct machine_cfa_state,
20202         struct machine_function): Guard with ifndef USED_FOR_TARGET
20203         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
20204
20205         PR other/40024
20206         * emutls.c (__emutls_get_address): Change arr->size to mean number
20207         of allocated arr->data entries instead of # of slots + 1.
20208
20209         PR middle-end/40316
20210         * recog.c (peep2_reinit_state): New function.
20211         (peephole2_init_state): Use it at the end of a basic block and also
20212         when seeing a RTX_FRAME_RELATED_P insn.
20213
20214 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
20215
20216         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
20217         fixuns_truncrfdi2): New.
20218         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
20219         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
20220         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
20221         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
20222         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
20223         *recip_approx): Remove.
20224         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
20225         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
20226         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
20227         move to div.md.
20228         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
20229         setf_exp_rf): New.
20230
20231 2009-06-01  Ian Lance Taylor  <iant@google.com>
20232
20233         * attribs.c (register_attribute): Use CONST_CAST.
20234         * collect2.c (main): Use CONST_CAST2.
20235         (scan_prog_file): Likewise.
20236         * gcc.c (process_command, main): Likewise.
20237         * toplev.c (toplev_main): Likewise.
20238
20239         * c-typeck.c (handle_warn_cast_qual): New static function,
20240         partially broken out of build_c_cast.
20241         (build_c_cast): Call handle_warn_cast_qual.
20242         * doc/invoke.texi (Warning Options): Document new effect of
20243         -Wcast-qual.
20244
20245 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
20246
20247         * diagnostic.c (diagnostic_build_prefix): Always print columns.
20248         (diagnostic_report_current_module): Print columns.
20249         * common.opt (flag_show_column): Enable by default.
20250
20251 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
20252
20253         * alias.c (find_base_term): Check for NULL term before returning.
20254
20255 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
20256
20257         Revert due to PR40320:
20258         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
20259         * calls.c (emit_library_call_value_1): Don't force_operand for move
20260         and push insns.
20261
20262 2009-06-01  Olivier Hainque  <hainque@adacore.com>
20263             Eric Botcazou  <ebotcazou@adacore.com>
20264
20265         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
20266         to be processed as a bitfield for constructor output purposes.
20267         * output.h (initializer_constant_valid_for_bitfield_p): Declare
20268         new function.
20269         * varasm.c (oc_local_state): New type, output_constructor
20270         local state to support communication with helpers.
20271         (oc_outer_state): New type, output_constructor outer state of
20272         relevance in recursive calls.
20273         (output_constructor_array_range): New output_constructor helper,
20274         extracted code for an array range element.
20275         (output_constructor_regular_field): New output_constructor helper,
20276         extracted code for an element that is not a bitfield.
20277         (output_constructor_bitfield): New output_constructor helper,
20278         extracted code for a bitfield element.  Accept an OUTER state
20279         argument for recursive processing.  Recurse on record or array
20280         CONSTRUCTOR values, possibly past noop conversions.
20281         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
20282         VALUE is a valid constant-valued expression for use in a static
20283         bit-field initializer.
20284         (output_constructor): Rework to use helpers.  Accept and honor an
20285         OUTER state argument for recursive calls.  Return total size.  Be
20286         prepared for nested constructors initializing bitfields.
20287         (output_constant): Feed OUTER in calls to output_constructor.
20288
20289 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
20290
20291         * calls.c (emit_library_call_value_1): Don't force_operand for move
20292         and push insns.
20293
20294 2009-06-01  Nick Clifton  <nickc@redhat.com>
20295
20296         * doc/invoke.texi (IA-64 Options): Fix typo.
20297
20298 2009-06-01  Ira Rosen  <irar@il.ibm.com>
20299
20300         PR tree-optimization/39129
20301         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
20302         printed message.
20303         (vect_do_peeling_for_loop_bound): Use
20304         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
20305         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
20306         (vect_loop_versioning): Likewise.
20307         (vect_create_cond_for_alias_checks): Fix indentation.
20308         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
20309         macros.
20310         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
20311         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
20312         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
20313         "control flow in loop".
20314         (vect_estimate_min_profitable_iters): Use
20315         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
20316         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
20317         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
20318         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
20319         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
20320         statement belongs to a group of strided accesses with the exact code
20321         check.
20322         (vectorizable_load): Likewise.
20323         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
20324         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20325
20326 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
20327
20328         * config/freebsd-stdint.h: New file.
20329         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
20330         Add freebsd-stdint.h to tm_file.
20331
20332 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
20333
20334         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
20335         (thumb2_extendhidi2): Likewise.
20336
20337 2009-05-31  Ian Lance Taylor  <iant@google.com>
20338
20339         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
20340
20341 2009-05-31  Ian Lance Taylor  <iant@google.com>
20342
20343         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
20344         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
20345         (ipa-reference.o): Depend upon gt-ipa-reference.h.
20346
20347 2009-05-31  Jason Merrill  <jason@redhat.com>
20348
20349         * tree-pretty-print.c (print_call_name): Take the callee, not the
20350         call itself.  Make non-static.  Use dump_function_name for functions.
20351         (dump_generic_node): Adjust.
20352         * diagnostic.h: Declare print_call_name.
20353         * gimple-pretty-print.c (dump_gimple_call): Use it.
20354
20355 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
20356
20357         * config/sh/sh.md (ashldi3_std): New define_expand.
20358         (ashldi3): Use it.
20359
20360 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
20361
20362         PR target/40313
20363         * config/sh/sh.c: Include debug.h.
20364         (sh_expand_epilogue): Emit a blockage insn before the frame
20365         pointer adjustment also when dwarf2out_do_frame returns true.
20366
20367 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
20368
20369         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
20370         (thumb2_extendqidi2): New pattern.
20371
20372 2009-05-31  Ira Rosen  <irar@il.ibm.com>
20373
20374         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
20375         mark phis for renaming.
20376         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
20377         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
20378         Call mark_sym_for_renaming.
20379         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
20380         * tree-vect-loop.c (vect_transform_loop): Remove
20381         vect_memsyms_to_rename initialization and a call to
20382         mark_set_for_renaming.
20383
20384 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
20385
20386         PR middle-end/40304
20387         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
20388         frame related even if !set_cfa && style < 0.
20389
20390 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
20391
20392         * config/i386/mingw-tls.c: New file.
20393         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
20394         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
20395         defining _WIN32 but not __CYGWIN__.
20396
20397 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20398
20399         * configure.ac: Add MPC support.
20400
20401         * config.in, configure: Regenerate.
20402
20403 2009-05-29  Richard Henderson  <rth@redhat.com>
20404
20405         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
20406         NOTE_INSN_BASIC_BLOCK.
20407         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
20408         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
20409         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
20410         to be deleted.
20411         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
20412         add in_use field.
20413         (add_cfi): Disable check redefining cfa away from drap.
20414         (lookup_cfa_1): Add remember argument; handle remember/restore.
20415         (lookup_cfa): Pass remember argument.
20416         (cfa_remember): New.
20417         (compute_barrier_args_size_1): Remove sibcall check.
20418         (dwarf2out_frame_debug_def_cfa): New.
20419         (dwarf2out_frame_debug_adjust_cfa): New.
20420         (dwarf2out_frame_debug_cfa_offset): New.
20421         (dwarf2out_frame_debug_cfa_register): New.
20422         (dwarf2out_frame_debug_cfa_restore): New.
20423         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
20424         (dwarf2out_begin_epilogue): New.
20425         (dwarf2out_frame_debug_restore_state): New.
20426         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
20427         DW_CFA_restore_state.
20428         (output_cfi_directive): Likewise.
20429         (convert_cfa_to_fb_loc_list): Likewise.
20430         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
20431         * dwarf2out.h: Update.
20432         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
20433         (copy_insn_1): Early out for null.
20434         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
20435         and dwarf2out_frame_debug_restore_state.
20436         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
20437         (prologue_insn_hash, epilogue_insn_hash): New.
20438         (free_after_compilation): Adjust freeing accordingly.
20439         (record_insns): Create hash table if needed; push insns into
20440         hash instead of array.
20441         (maybe_copy_epilogue_insn): New.
20442         (contains): Search hash table instead of array.
20443         (sibcall_epilogue_contains): Remove.
20444         (thread_prologue_and_epilogue_insns): Split eh_return insns
20445         and mark them as epilogues.
20446         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
20447         scanning in terms of basic blocks.
20448         * insn-notes.def (CFA_RESTORE_STATE): New.
20449         * jump.c (returnjump_p_1): Accept EH_RETURN.
20450         (eh_returnjump_p_1, eh_returnjump_p): New.
20451         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
20452         CFA_REGISTER, CFA_RESTORE): New.
20453         * rtl.def (EH_RETURN): New.
20454         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
20455
20456         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
20457         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
20458
20459         * config/i386/i386.c (gen_push): Update cfa state.
20460         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
20461         add a CFA_ADJUST_CFA note.
20462         (ix86_dwarf_handle_frame_unspec): Remove.
20463         (ix86_expand_prologue): Update cfa state.
20464         (ix86_emit_restore_reg_using_pop): New.
20465         (ix86_emit_restore_regs_using_pop): New.
20466         (ix86_emit_leave): New.
20467         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
20468         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
20469         * config/i386/i386.h (struct machine_cfa_state): New.
20470         (ix86_cfa_state): New.
20471         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
20472         (eh_return_internal): Merge from eh_return_<mode>,
20473         use eh_return rtx, split w/ epilogue.
20474
20475 2009-05-29  Ian Lance Taylor  <iant@google.com>
20476
20477         * builtins.c (validate_gimple_arglist): Don't use va_arg with
20478         enum type.
20479         * calls.c (emit_library_call_value_1): Likewise.
20480
20481         * c-typeck.c (c_build_va_arg): New function.
20482         * c-tree.h (c_build_va_arg): Declare.
20483         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
20484         instead of build_va_arg.
20485
20486 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
20487
20488         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
20489         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
20490         (ptr_difference_cost): Use affine combinations to compute it.
20491         (difference_cost): Likewise.
20492         (get_computation_cost_at): Compute more accurate cost for addresses
20493         if the ratio is a multiplier allowed in addresses.
20494         For non-addresses, consider that an additional offset or symbol is
20495         added only once.
20496
20497 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20498
20499         * config/i386/i386.c (ix86_decompose_address): Avoid useless
20500         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
20501
20502         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
20503         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
20504         (prefix_rex): For UNIT_MMX don't imply the prefix by default
20505         if MODE_DI.
20506         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
20507         to 1 for TYPE_SSE{IADD1,CVT1}.
20508         (prefix_vex_imm8): Removed.
20509         (length_vex): Only pass 1 as second argument to
20510         ix86_attr_length_vex_default if prefix_extra is 0.
20511         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
20512         (length): For prefix vex computation use length_immediate
20513         attribute instead of prefix_vex_imm8.
20514         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
20515         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
20516         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
20517         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
20518         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
20519         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
20520         a space in between the operands.
20521         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
20522         if one operand is 0xff and the other one si, di, bp or sp.
20523         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
20524         other one si, di, bp or sp.
20525         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
20526         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
20527         type and mode attributes.
20528         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
20529         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
20530         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
20531         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
20532         prefix_data16 attribute iff MODE_DF.
20533         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
20534         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
20535         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
20536         constm128_operand in length_immediate computation.
20537         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
20538         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
20539         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
20540         length_immediate attribute to 1.
20541         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
20542         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
20543         for certain alternatives.
20544         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
20545         prefix_data16 attribute if MODE_V1DF.
20546         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
20547         length_immediate to 1.
20548         (set_got_rex64, set_rip_rex64): Remove length attribute, set
20549         length_address to 4, set mode attribute to MODE_DI.
20550         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
20551         (fxam<mode>2_i387): Set length attribute to 4.
20552         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
20553         *prefetch_3dnow_rex): Override length_address attribute.
20554         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
20555         attributes.
20556         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
20557         (constm128_operand): Removed.
20558         * config/i386/i386.c (memory_address_length): For
20559         disp && !index && !base in 64-bit mode account for SIB byte if
20560         print_operand_address can't optimize disp32 into disp32(%rip)
20561         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
20562         for fs: or gs: segment.
20563         (ix86_attr_length_immediate_default): When checking if shortform
20564         is possible, truncate immediate to the length of the non-shortened
20565         immediate.
20566         (ix86_attr_length_address_default): Ignore MEM_P operands
20567         with X constraint.
20568         (ix86_attr_length_vex_default): Only check for DImode on
20569         GENERAL_REG_P operands.
20570         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
20571         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
20572         (sse_cvttps2pi): Clear prefix_rep attribute.
20573         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
20574         attribute.
20575         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
20576         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
20577         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
20578         iff operand 2 is const_int_operand.
20579         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
20580         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
20581         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
20582         instead of vex.
20583         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
20584         prefix_data16.
20585         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
20586         prefix_data16 attribute for movlpd and movhpd instructions.
20587         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
20588         length_immediate for shufpd instruction.
20589         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
20590         (avx_cmpp<avxmodesuffixf2c><mode>3,
20591         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
20592         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
20593         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
20594         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
20595         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
20596         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
20597         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
20598         prefix_data16 attribute for the first alternative to 1.
20599         (*avx_loadlps): Override length_immediate for the first alternative.
20600         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
20601         attributes for second alternative.
20602         (*vec_concatv2sf_sse4_1): Override length_immediate and
20603         prefix_data16 attributes for second alternative.
20604         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
20605         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
20606         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
20607         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
20608         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
20609         prefix_data16 and length_immediate to 1.
20610         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
20611         to 1.
20612         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
20613         prefix_extra attribute for variants that don't have 0f prefix alone.
20614         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
20615         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
20616         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
20617         *sse4_1_pextrd): Set length_immediate to 1.
20618         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
20619         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
20620         to 1.
20621         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
20622         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
20623         length_immediate to 1 for second alternative.
20624         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
20625         prefix_extra and length_immediate attributes for the first
20626         alternative.
20627         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
20628         first alternative.
20629         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
20630         to 1 for the first and third alternative.
20631         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
20632         alternative.
20633         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
20634         attribute.
20635         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
20636         attribute to 0.
20637         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
20638         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
20639         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
20640         *avx_psign<mode>3): Set prefix_extra attribute to 1.
20641         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
20642         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
20643         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
20644         ssse3_psign<mode>3): Override prefix_rex attribute.
20645         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
20646         (ssse3_palignrti): Override length_immediate to 1.
20647         (ssse3_palignrdi): Override length_immediate to 1, override
20648         prefix_rex attribute.
20649         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
20650         (sse4a_extrqi): Override length_immediate to 2.
20651         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
20652         (sse4a_insertq): Override prefix_data16 to 0.
20653         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
20654         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
20655         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
20656         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
20657         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
20658         and length_immediate to 1.
20659         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
20660         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
20661         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
20662         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
20663         and length_immediate to 1.
20664         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
20665         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
20666         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
20667         avx_ptest256): Override prefix_extra to 1.
20668         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
20669         Override prefix_data16 and length_immediate to 1.
20670         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
20671         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
20672         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
20673         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
20674         prefix_data16 to 0 and prefix_extra to 2.
20675         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
20676         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
20677         attribute.
20678         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
20679         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
20680         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
20681         and prefix_extra to 2.
20682         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
20683         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
20684         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
20685         avx_vpermilvar<mode>3,
20686         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
20687         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
20688         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
20689         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
20690         Override prefix_extra to 1.
20691         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
20692         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
20693         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
20694         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
20695         prefix_extra and length_immediate to 1.
20696         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
20697         modrm to 0.
20698         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
20699         to 1 for the first alternative.
20700         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
20701         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
20702         cases.
20703         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
20704         *movv2sf_internal_avx, *movv2sf_internal): Override
20705         prefix_rep attribute for certain alternatives.
20706         (*mov<mode>_internal): Override prefix_rep or prefix_data16
20707         attributes for certain alternatives.
20708         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
20709         attributes for certain alternatives.
20710         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
20711         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
20712         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
20713         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
20714         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
20715         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
20716         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
20717         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
20718         length_immediate to 1 if operand 2 is const_int_operand.
20719         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
20720         *vec_extractv2si_1): Set length_immediate attribute to 1.
20721         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
20722         using old 3DNOW insn rather than SSE/3DNOW_A.
20723         (mmx_emms, mmx_femms): Clear modrm attribute.
20724
20725 2009-05-29  Martin Jambor  <mjambor@suse.cz>
20726
20727         * tree-sra.c:  New implementation of SRA.
20728
20729         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
20730         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
20731         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
20732         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
20733         (SRA_MAX_STRUCTURE_COUNT): Removed.
20734         (SRA_FIELD_STRUCTURE_RATIO): Removed.
20735         * doc/invoke.texi (sra-max-structure-size): Removed.
20736         (sra-field-structure-ratio): Removed.
20737
20738 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20739
20740         PR middle-end/40291
20741         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
20742         before expansion.
20743
20744 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
20745
20746         PR rtl-optimization/40101
20747         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
20748         seqno.  Adjust comment.
20749         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
20750         inserting bookkeeping before a jump, the jump is not scheduled.
20751         When no positive seqno found, provide a value.  Add comment.
20752
20753 2009-05-29  Richard Guenther  <rguenther@suse.de>
20754
20755         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
20756         short-cutting on the first component.
20757
20758 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20759
20760         PR middle-end/39958
20761         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
20762         for trees other than decls/types.
20763
20764 2009-05-29  Richard Guenther  <rguenther@suse.de>
20765
20766         * tree-ssa-operands.c (get_expr_operands): Do not handle
20767         INDIRECT_REFs in the handled-component case.  Remove
20768         unused get_ref_base_and_extent case.
20769         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
20770         tree_low_cst and host_integerp where possible.
20771         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
20772         codes for equivalence.
20773         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
20774
20775 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
20776
20777         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
20778         to tmake_file for i[34567]86-*-cygwin*.
20779
20780 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20781
20782         PR target/40017
20783         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
20784         (altivec_categorize_keyword, init_vector_keywords,
20785         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
20786         similar to bool.
20787
20788 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
20789
20790         * tree.c (handle_dll_attribute): Check if node is
20791         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
20792
20793 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
20794
20795         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
20796         component.
20797         (thumb2_zero_extendqidi2): Likewise.
20798
20799 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20800
20801         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
20802         instead of gen_movrt.
20803         * config/sh/sh.md (movrt): Remove.
20804
20805 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
20806
20807         * doc/invoke.texi (IA-64 Options):
20808         Add -msdata, -mfused-madd, -mno-inline-float-divide,
20809         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
20810         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
20811         -msched-prefer-non-control-spec-insns,
20812         -msched-stop-bits-after-every-cycle,
20813         -msched-count-spec-in-critical-path,
20814         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
20815         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
20816         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
20817         and -msched-spec-verbose.
20818
20819 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
20820
20821         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
20822         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
20823         error if used.
20824         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
20825
20826 2009-05-28  Richard Guenther  <rguenther@suse.de>
20827
20828         * tree-ssa-alias.c (ao_ref_init): New function.
20829         (ao_ref_base): Likewise.
20830         (ao_ref_base_alias_set): Likewise.
20831         (ao_ref_alias_set): Likewise.
20832         (refs_may_alias_p_1): Change signature.
20833         (refs_may_alias_p): Adjust.
20834         (refs_anti_dependent_p): Likewise.
20835         (refs_output_dependent_p): Likewise.
20836         (call_may_clobber_ref_p_1): Change signature.
20837         (call_may_clobber_ref_p): Adjust.
20838         (stmt_may_clobber_ref_p_1): New function split out from ...
20839         (stmt_may_clobber_ref_p): ... here.
20840         (maybe_skip_until): Adjust signature.
20841         (get_continuation_for_phi): Likewise.
20842         (walk_non_aliased_vuses): Likewise.
20843         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
20844         (ao_ref_init): Declare.
20845         (ao_ref_base): Likewise.
20846         (ao_ref_alias_set): Likewise.
20847         (stmt_may_clobber_ref_p_1): Likewise.
20848         (walk_non_aliased_vuses): Adjust.
20849         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
20850         (get_ref_from_reference_ops): remove.
20851         (vn_reference_lookup_2): Adjust signature.
20852         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
20853         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
20854         (vn_reference_lookup): Adjust.
20855         (vn_reference_insert): Likewise.
20856         (vn_reference_insert_pieces): Adjust signature.
20857         (visit_reference_op_call): Adjust.
20858         * tree-ssa-pre.c (get_expr_type): Simplify.
20859         (phi_translate_1): Adjust.
20860         (compute_avail): Likewise.
20861         (translate_vuse_through_block): Do not re-build trees.
20862         (value_dies_in_block_x): Likewise.
20863         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
20864         fields.
20865         (vn_reference_lookup_pieces): Adjust declaration.
20866         (vn_reference_insert_pieces): Likewise.
20867
20868 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
20869
20870         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
20871         with checking disabled.
20872
20873 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
20874
20875         PR target/37216
20876
20877         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
20878         macro definition for support of three-operand format aligned
20879         .comm directive in assembler on cygwin/pe/mingw target OS.
20880         * configure:  Regenerate.
20881         * config.h:  Regenerate.
20882
20883         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
20884         aligned form of .comm directive if -mpe-aligned-commons is in effect.
20885         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
20886
20887         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
20888         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
20889
20890 2009-05-28  Ira Rosen  <irar@il.ibm.com>
20891
20892         PR tree-optimization/40254
20893         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
20894         in analysis of basic blocks.
20895
20896 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
20897
20898         PR middle-end/33699
20899         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
20900         * target-def.h (TARGET_CONST_ANCHOR): New macro.
20901         (TARGET_INITIALIZER): Use it.
20902         * cse.c (CHEAPER): Move it up to the other macros.
20903         (insert): Rename this ...
20904         (insert_with_costs): ... to this.  Add cost parameters.  Update
20905         function comment.
20906         (insert): New function.  Call insert_with_costs.
20907         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
20908         find_reg_offset_for_const, try_const_anchors): New functions.
20909         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
20910         when using a const-anchor.  Call insert_const_anchors.
20911         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
20912         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
20913
20914 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20915
20916         * tree-inline.c (remap_decls): Enable nonlocalized variables
20917         when not optimizing.
20918
20919 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20920
20921         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
20922         Simplify other tests involving optimize.
20923
20924 2009-05-27  Tom Tromey  <tromey@redhat.com>
20925
20926         * unwind-dw2.c (_Unwind_DebugHook): New function.
20927         (uw_install_context): Call _Unwind_DebugHook.
20928
20929 2009-05-27  Tom Tromey  <tromey@redhat.com>
20930
20931         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
20932
20933 2009-05-27  Ian Lance Taylor  <iant@google.com>
20934
20935         * Makefile.in (LINKER, LINKER_FLAGS): Define.
20936         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
20937         (ALL_LINKERFLAGS): Define.
20938         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
20939         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20940         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
20941         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20942         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
20943         $(LINKER_FOR_BUILD).
20944         (build/gcov-iov$(build_exeext)): Likewise.
20945
20946 2009-05-27  Julian Brown  <julian@codesourcery.com>
20947
20948         * gcse.c (target.h): Include.
20949         (can_assign_to_reg_without_clobbers_p): Check that the target allows
20950         copy of argument to a pseudo register.
20951
20952 2009-05-27  Diego Novillo  <dnovillo@google.com>
20953
20954         * tree-ssa-live.c (dump_scope_block): Document arguments.
20955         (dump_scope_blocks): Document.
20956         (debug_scope_blocks): New.
20957         * tree-flow.h (debug_scope_blocks): Declare.
20958
20959 2009-05-21  Denis Chertykov  <denisc@overta.ru>
20960
20961         * doc/contrib.texi (Contributors): Add myself to the list.
20962
20963 2009-05-27  Olivier Hainque  <hainque@adacore.com>
20964
20965         * expr.c (target_align): New function.  Alignment the TARGET of an
20966         assignment may be assume to have.
20967         (highest_pow2_factor_for_target): Use it instead of relying on
20968         immediate tree attributes of TARGET, not necessarily honored when
20969         intermediate bitfields are involved.
20970
20971 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
20972
20973         PR target/40266
20974         * config/i386/driver-i386.c (host_detect_local_cpu): Support
20975         AVX, SSE4, AES, PCLMUL and POPCNT.
20976
20977 2009-05-27  Diego Novillo  <dnovillo@google.com>
20978
20979         * tree-pretty-print.c (dump_location): New.
20980         (dump_generic_node): Call it.
20981         Factor code to handle BLOCK nodes ...
20982         (dump_block_node): ... here.
20983
20984 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
20985
20986         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
20987         with it.
20988         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
20989         included.
20990         * gcc-plugin.h: Include config.h and system.h.
20991         (IN_GCC): Define if not defined.
20992
20993 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
20994
20995         PR middle-end/40249
20996         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
20997         with -fno-inline.
20998
20999 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
21000
21001         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
21002         applicable.
21003         * config/m32r/m32r.h: Ditto.
21004         * config/m32r/m32r.md: Ditto.
21005         * config/m32r/predicates.md: Ditto.
21006
21007 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
21008
21009         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
21010
21011 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
21012
21013         * doc/plugins.texi
21014         (Loading plugins): typo.
21015         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
21016         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
21017         (Interacting with the GCC Garbage Collector): Added new section.
21018         (Giving information about a plugin): Added new section for
21019         PLUGIN_INFO.
21020         * ggc.h (ggc_register_root_tab): Added declaration.
21021         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
21022         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
21023         (register_callback): Improved comment in declaration.
21024         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
21025         (extra_root_vec) Added static variable for dynamic roots registration.
21026         (ggc_register_root_tab) Added new routine.
21027         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
21028         PLUGIN_GGC_MARKING event.
21029         * ggc-zone.c: Include plugin.h.
21030         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
21031         * ggc-page.c: Include plugin.h.
21032         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
21033         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
21034         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
21035         (register_callback): check lack of callbacks for
21036         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
21037         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
21038         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
21039         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
21040         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
21041         dependency on plugin.h.
21042         (plugin.o): Added dependency on ggc.h...
21043
21044 2009-05-26  Richard Guenther  <rguenther@suse.de>
21045
21046         PR middle-end/40248
21047         Revert
21048         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21049         with mismatched comparison modes.
21050
21051         * expr.c (expand_expr_real_1): Expand the operand of a
21052         VIEW_CONVERT_EXPR in its natural mode.
21053
21054 2009-05-26  Ian Lance Taylor  <iant@google.com>
21055
21056         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
21057         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
21058         (ALL_COMPILERFLAGS): Define.
21059         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
21060         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
21061         (collect2$(exeext), collect2.o): Likewise.
21062         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
21063         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
21064         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
21065         (libbackend.o, intl.o, cppdefault.o): Likewise.
21066         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
21067         (build/%.o): Use $(COMPILER_FOR_BUILD).
21068         (build/gen%$(build_exeext)): Likewise.
21069         (build/gcov-iov$(build_exeext)): LIkewise.
21070         * config/t-darwin (darwin.o): Use $(COMPILER).
21071         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
21072         * config/t-sol2 (sol2-c.o): Likewise.
21073         (sol2.o): Likewise.
21074         * config/t-vxworks (vxworks.o): Likewise.
21075         * config/x-darwin (host-darwin.o): Likewise.
21076         * config/x-hpux (host-hpux.o): Likewise.
21077         * config/x-linux (host-linux.o): Likewise.
21078         * config/x-solaris (host-solaris.o): Likewise.
21079         * config/alpha/x-alpha (driver-alpha.o): Likewise.
21080         * config/arm/t-arm (arm-c.o): Likewise.
21081         * config/arm/t-pe (pe.o): Likewise.
21082         * config/arm/t-wince-pe (pe.o): Likewise.
21083         * config/i386/t-cygming (winnt.o): Likewise.
21084         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
21085         * config/i386/t-cygwin (cygwin1.o): Likewise.
21086         (cygwin2.o): Likewise.
21087         * config/i386/t-i386 (i386-c.o): Likewise.
21088         * config/i386/t-interix (winnt.o): Likewise.
21089         * config/i386/t-netware (netware.o): Likewise.
21090         * config/i386/t-nwld (nwld.o): Likewise.
21091         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
21092         * config/i386/x-i386 (driver-i386.o): Likewise.
21093         * config/i386/x-cygwin (host-cygwin.o): Likewise.
21094         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
21095         * config/ia64/t-ia64 (ia64-c.o): Likewise.
21096         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
21097         * config/mips/x-native (driver-native.o): Likewise.
21098         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
21099         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
21100         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
21101         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
21102         * config/score/t-score-elf (score7.o): Likewise.
21103         (score3.o): Likewise.
21104         * config/sh/t-sh (sh-c.o): Likewise.
21105         * config/sh/t-symbian (sh-c.o): Likewise.
21106         (symbian.o): Likewise.
21107         * config/spu/t-spu-elf (spu-c.o): Likewise.
21108         * config/v850/t-v850 (v850-c.o): Likewise.
21109         * config/v850/t-v850e (v850-c.o): Likewise.
21110
21111 2009-05-26  Richard Guenther  <rguenther@suse.de>
21112
21113         PR tree-optimization/40122
21114         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
21115         VECTOR_CSTs if possible.
21116         (fold_gimple_assign): Likewise.
21117
21118 2009-05-26  Richard Guenther  <rguenther@suse.de>
21119
21120         PR middle-end/40252
21121         * fold-const.c (fold_binary): Use the correct types for building
21122         rotates.
21123
21124 2009-05-26  Richard Guenther  <rguenther@suse.de>
21125
21126         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
21127         redundant calls to merge_alias_info.
21128         (bump_vector_ptr): Likewise.
21129         * tree-ssa-copy.c (merge_alias_info): Remove.
21130         (replace_exp_1): Remove call to merge_alias_info.
21131         (propagate_tree_value): Likewise.
21132         (fini_copy_prop): Propagate points-to info.
21133         * tree-flow.h (merge_alias_info): Remove.
21134
21135 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21136
21137         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
21138
21139 2009-05-25  Jan Hubicka  <jh@suse.cz>
21140
21141         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21142         * cgraph.h (struct inline_summary): New filed self_wize,
21143         size_inlining_benefit, self_time and time_inlining_benefit.
21144         (struct cgraph_global_info): Replace insns by time ans size fields.
21145         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21146         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21147         (ipcp_update_callgraph): Do not touch function bodies.
21148         * ipa-inline.c: Include except.h
21149         (MAX_TIME): New constant.
21150         (overall_insns): Remove.
21151         (leaf_node_p): New.
21152         (overall_size, max_benefit): New static variables.
21153         (cgraph_estimate_time_after_inlining): New function.
21154         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21155         (cgraph_clone_inlined_nodes): Update size.
21156         (cgraph_mark_inline_edge): Update size.
21157         (cgraph_estimate_growth): Use size info.
21158         (cgraph_check_inline_limits): Check size.
21159         (cgraph_default_inline_p): Likewise.
21160         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21161         (cgraph_decide_recursive_inlining): Check size.
21162         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21163         and times.
21164         (cgraph_decide_inlining): Likewise.
21165         (cgraph_decide_inlining_incrementally): Likewise; honor
21166         PARAM_EARLY_INLINING_INSNS.
21167         (likely_eliminated_by_inlining_p): New predicate.
21168         (estimate_function_body_sizes): New function.
21169         (compute_inline_parameters): Use it.
21170         * except.c (must_not_throw_labels): New function.
21171         * except.h (must_not_throw_labels): Declare.
21172         * tree-inline.c (init_inline_once): Kill inlining_weigths
21173         * tree-ssa-structalias.c: Avoid uninitialized warning.
21174         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21175         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21176         (PARAM_INLINE_CALL_COST): Remove.
21177         (PARAM_EARLY_INLINING_INSNS): New.
21178
21179 2009-05-25  Richard Guenther  <rguenther@suse.de>
21180
21181         PR tree-optimization/36327
21182         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
21183         callback for reference translation or lookup at the point of may-defs.
21184         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
21185         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
21186         for union COMPONENT_REFs.
21187         (vn_reference_lookup_3): New callback.  Lookup from memset
21188         and CONSTRUCTOR assignment, translate through struct copies.
21189         (vn_reference_lookup_pieces): Make sure to not free the
21190         passed operands array.  Adjust walk_non_aliased_vuses call.
21191         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
21192         make sure we do not leak memory.
21193
21194 2009-05-25  Richard Guenther  <rguenther@suse.de>
21195
21196         * tree-ssa-alias.h (dump_points_to_solution): Declare.
21197         * tree-inline.c (expand_call_inline): Reset the escaped and
21198         callused solutions.
21199         * tree-ssa-structalias.c (pass_build_ealias): New.
21200         * tree-pass.h (pass_build_ealias): Declare.
21201         * passes.c (init_optimization_passes): Add PTA during
21202         early optimizations.
21203         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
21204         and CALLUSED solutions.
21205         (dump_points_to_solution): New function, split out from ...
21206         (dump_points_to_info_for): ... here.
21207         * tree-parloops.c (parallelize_loops): Reset the escaped and
21208         callused solutions.
21209
21210 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21211
21212         PR bootstrap/40027
21213         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
21214         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
21215
21216 2009-05-25  Ira Rosen  <irar@il.ibm.com>
21217
21218         PR tree-optimization/40238
21219         * tree-vect-stmts.c (vect_init_vector): Insert initialization
21220         statements after basic block's labels.
21221         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
21222         to free the allocated memory.
21223
21224 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
21225
21226         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
21227         return address with a USE.
21228
21229 2009-05-24  Richard Guenther  <rguenther@suse.de>
21230
21231         PR middle-end/40233
21232         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
21233         array type from the main variant of the inner type.
21234
21235 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
21236
21237         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
21238         definition to bool (from int) to un-break build.
21239         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
21240
21241 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
21242
21243         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
21244         discard_stmt_changes): Delete.
21245         * tree-ssa-operands.c (scb_stack): Delete.
21246         (init_ssa_operands): Do not initialize it.
21247         (fini_ssa_operands): Do not free it.
21248         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
21249
21250         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
21251         update_stmt, remove the others.  Fix comments.
21252         * tree-dfa.c (optimize_stack_restore): Likewise.
21253         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
21254         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
21255         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
21256         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
21257         Likewise.
21258         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
21259         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
21260         (dom_opt_finalize_block): Likewise, adjusting access to
21261         stmts_to_rescan.
21262         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
21263         (stmts_to_rescan): Change item type to gimple.
21264         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
21265
21266 2009-05-24  Ira Rosen  <irar@il.ibm.com>
21267
21268         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
21269         * tree-pass.h (pass_slp_vectorize): New pass.
21270         * params.h (SLP_MAX_INSNS_IN_BB): Define.
21271         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
21272         * tree-vectorizer.c (timevar.h): Include.
21273         (user_vect_verbosity_level): Declare.
21274         (vect_location): Fix comment.
21275         (vect_set_verbosity_level): Update user_vect_verbosity_level
21276         instead of vect_verbosity_level.
21277         (vect_set_dump_settings): Add an argument. Ignore user defined
21278         verbosity if dump flags require higher level of verbosity. Print to
21279         stderr only for loop vectorization.
21280         (vectorize_loops): Update call to vect_set_dump_settings.
21281         (execute_vect_slp): New function.
21282         (gate_vect_slp): Likewise.
21283         (struct gimple_opt_pass pass_slp_vectorize): New.
21284         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
21285         access its members.
21286         (vec_info_for_bb): New function.
21287         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
21288         (VECTORIZATION_ENABLED): New macro.
21289         (SLP_ENABLED, SLP_DISABLED): Likewise.
21290         (vect_is_simple_use): Add bb_vec_info argument.
21291         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
21292         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
21293         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
21294         vect_schedule_slp, vect_analyze_slp): Likewise.
21295         (vect_analyze_stmt): Add slp_tree argument.
21296         (find_bb_location): Declare.
21297         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
21298         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
21299         (vect_analyze_loop_operations, vect_analyze_loop,
21300         get_initial_def_for_induction, vect_create_epilog_for_reduction,
21301         vect_finalize_reduction, vectorizable_reduction,
21302         vectorizable_live_operation, vect_transform_loop): Likewise.
21303         * tree-data-ref.c (dr_analyze_innermost): Update comment,
21304         skip evolution analysis if analyzing a basic block.
21305         (dr_analyze_indices): Likewise.
21306         (initialize_data_dependence_relation): Skip the test whether the
21307         object is invariant for basic blocks.
21308         (compute_all_dependences): Skip dependence analysis for data
21309         references in basic blocks.
21310         (find_data_references_in_stmt): Don't fail in case of invariant
21311         access in basic block.
21312         (find_data_references_in_bb): New function.
21313         (find_data_references_in_loop): Move code to
21314         find_data_references_in_bb and add a call to it.
21315         (compute_data_dependences_for_bb): New function.
21316         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
21317         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
21318         that STEP is 0.
21319         (vect_analyze_data_ref_dependence): Check for interleaving in case of
21320         unknown dependence in basic block and fail in case of dependence in
21321         basic block.
21322         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
21323         dependence instances from either loop or basic block vectorization
21324         info.
21325         (vect_compute_data_ref_alignment): Check if it is loop vectorization
21326         before calling nested_in_vect_loop_p.
21327         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
21328         dependence instances from either loop or basic block vectorization
21329         info.
21330         (vect_verify_datarefs_alignment): Likewise.
21331         (vect_enhance_data_refs_alignment): Adjust function calls.
21332         (vect_analyze_data_refs_alignment): Likewise.
21333         (vect_analyze_group_access): Fix printing. Skip different checks if
21334         DR_STEP is 0. Keep strided stores either in loop or basic block
21335         vectorization data structure. Fix indentation.
21336         (vect_analyze_data_ref_access): Fix comments, allow zero step in
21337         basic blocks.
21338         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
21339         dependence instances from either loop or basic block vectorization
21340         info.
21341         (vect_analyze_data_refs): Update comment. Call
21342         compute_data_dependences_for_bb to analyze basic blocks.
21343         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
21344         case of loop vectorization. In case of basic block vectorization use
21345         data-ref itself as a base.
21346         (vect_create_data_ref_ptr): In case of basic block vectorization:
21347         don't advance the pointer, add new statements before the current
21348         statement.  Adjust function calls.
21349         (vect_supportable_dr_alignment): Support only aligned accesses in
21350         basic block vectorization.
21351         * common.opt (ftree-slp-vectorize): New flag.
21352         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
21353         (vect_pattern_recog_1): Likewise.
21354         * tree-vect-stmts.c (process_use): Likewise.
21355         (vect_init_vector): Add new statements in the beginning of the basic
21356         block in case of basic block SLP.
21357         (vect_get_vec_def_for_operand): Adjust function calls.
21358         (vect_finish_stmt_generation): Likewise.
21359         (vectorizable_call): Add assert that it is loop vectorization, adjust
21360         function calls.
21361         (vectorizable_conversion, vectorizable_assignment): Likewise.
21362         (vectorizable_operation): In case of basic block SLP, take
21363         vectorization factor from statement's type and skip the relevance
21364         check. Adjust function calls.
21365         (vectorizable_type_demotion): Add assert that it is loop
21366         vectorization, adjust function calls.
21367         (vectorizable_type_promotion): Likewise.
21368         (vectorizable_store): Check for outer loop only in case of loop
21369         vectorization. Adjust function calls. For basic blocks, skip the
21370         relevance check and don't advance pointers.
21371         (vectorizable_load): Likewise.
21372         (vectorizable_condition): Add assert that it is loop vectorization,
21373         adjust function calls.
21374         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
21375         that it is not reduction, get vector type, call only supported
21376         functions, skip loop specific parts.
21377         (vect_transform_stmt): Check for outer loop only in case of loop
21378         vectorization.
21379         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
21380         (vect_is_simple_use): Fix comment, add new argument, fix conditions
21381         for external definition.
21382         * passes.c (pass_slp_vectorize): New pass.
21383         * tree-vect-slp.c (find_bb_location): New function.
21384         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
21385         check for patterns only in loops.
21386         (vect_build_slp_tree): Add argument, adjust function calls, fail in
21387         case of multiple types in basic block SLP.
21388         (vect_mark_slp_stmts_relevant): New function.
21389         (vect_supported_load_permutation_p): Fix comment.
21390         (vect_analyze_slp_instance): Add argument. In case of basic block
21391         SLP, take vectorization factor from statement's type, check that
21392         unrolling factor is 1. Adjust function call. Save SLP instance in
21393         either loop or basic block vectorization structure. Return FALSE,
21394         if SLP failed.
21395         (vect_analyze_slp): Add argument. Get strided stores groups from
21396         either loop or basic block vectorization structure. Return FALSE
21397         if basic block SLP failed.
21398         (new_bb_vec_info): New function.
21399         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
21400         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
21401         (vect_schedule_slp): Add argument. Get SLP instances from either
21402         loop or basic block vectorization structure. Set vectorization factor
21403         to be 1 for basic block SLP.
21404         (vect_slp_transform_bb): New function.
21405         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
21406
21407 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
21408
21409         * final.c (shorten_branches): Do not align labels for jump tables.
21410         (final_scan_insn): Use JUMP_TABLE_DATA_P.
21411
21412 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
21413
21414         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
21415         Remove outdated reference to flow.c and fix nits.
21416         * doc/gccint.texi: Tweak RTL description.
21417         * doc/rtl.texi: Likewise.
21418
21419 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
21420
21421         * config/avr/avr.c: Change my email address.
21422         * config/avr/avr.h: Likewise.
21423         * config/avr/avr.md: Likewise.
21424         * config/avr/avr-protos.h: Likewise.
21425         * config/avr/libgcc.S: Likewise.
21426
21427 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
21428
21429         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
21430         (spu_split_load, spu_split_store): Change return type to int.
21431         (spu_split_convert): Declare.
21432         * config/spu/predicates.md (spu_mem_operand): Remove.
21433         (spu_mov_operand): Update.
21434         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
21435         * config/spu/spu.c (regno_aligned_for_load): Remove.
21436         (reg_aligned_for_addr, spu_expand_load): Define.
21437         (spu_expand_extv): Reimplement and handle MEM.
21438         (spu_expand_insv): Handle MEM.
21439         (spu_sched_reorder): Handle insn's with length 0.
21440         (spu_legitimate_address_p): Reimplement.
21441         (store_with_one_insn_p): Return TRUE for any mode with size
21442         larger than 16 bytes.
21443         (address_needs_split): Define.
21444         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
21445         operands.
21446         (spu_convert_move): Define.
21447         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
21448         (spu_split_store): Change all MEM's to TImode.
21449         (spu_init_expanders): Preallocate registers that correspond to
21450         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
21451         mark_reg_pointer.
21452         (spu_split_convert): Define.
21453         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
21454         (_move<mode>, _movdi, _movti): Update predicate and condition.
21455         (load, store): Change to define_split.
21456         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
21457         extend<mode>ti2.
21458         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
21459         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
21460         define_insn_and_split of lshr<mode>3.
21461         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
21462         (<v>ashr<mode>3_imm): Define.
21463         (extv, extzv, insv): Allow MEM operands.
21464         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
21465         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
21466         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
21467         (_spu_convert2): Change to define_insn_and_split and remove the
21468         corresponding define_peephole2.
21469         (stack_protect_set, stack_protect_test, stack_protect_test_si):
21470         Change predicates to memory_operand.
21471
21472 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21473
21474         * config/arm/thumb2.md: Add 16-bit multiply instructions.
21475
21476 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
21477
21478         PR tree-optimization/40219
21479         * tree.c (iterative_hash_expr): Make sure the builtin function is
21480         a normal builtin function and not a front end or back end builtin
21481         before indexing into the built_in_decls array.
21482
21483 2009-05-22  Richard Guenther  <rguenther@suse.de>
21484
21485         PR middle-end/38964
21486         * alias.c (write_dependence_p): Do not use TBAA for answering
21487         anti-dependence or output-dependence.
21488         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
21489         (emit_pointer_definition): Remove.
21490         (emit_alias_warning): Likewise.
21491         (find_what_var_points_to): Remove TBAA pruning code.
21492         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
21493         violations.
21494         (compute_points_to_sets): Remove code computing the set of
21495         dereferenced pointers.
21496         * tree-data-ref.c (dr_may_alias_p): Properly use the split
21497         oracle for querying anti and output dependencies.
21498         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
21499         if TBAA may be applied.
21500         (refs_anti_dependent_p): New function.
21501         (refs_output_dependent_p): Likewise.
21502         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
21503         (refs_output_dependent_p): Likewise.
21504         * doc/tree-ssa.texi (Memory model): New section.
21505         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21506         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21507         * cfgexpand.c (expand_gimple_basic_block): Do not handle
21508         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
21509         * expr.c (expand_expr_real_1): Likewise.
21510         * gimple-low.c (lower_stmt): Likewise.
21511         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
21512         (dump_gimple_cdt): Remove.
21513         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21514         (gimple_size): Likewise.
21515         (walk_gimple_op): Likewise.
21516         (is_gimple_stmt): Likewise.
21517         (walk_stmt_load_store_addr_ops): Likewise.
21518         (gimple_build_cdt): Remove.
21519         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21520         * gimple.h (gimple_cdt_new_type): Remove.
21521         (gimple_cdt_new_type_ptr): Likewise.
21522         (gimple_cdt_set_new_type): Likewise.
21523         (gimple_cdt_location): Likewise.
21524         (gimple_cdt_location_ptr): Likewise.
21525         (gimple_cdt_set_location): Likewise.
21526         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21527         * tree-cfg.c (remove_useless_stmts_1): Do not handle
21528         GIMPLE_CHANGE_DYNAMIC_TYPE.
21529         (verify_types_in_gimple_stmt): Likewise.
21530         * tree-inline.c (estimate_num_insns): Likewise.
21531         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
21532         (copy_decl_to_var): Likewise.
21533         (copy_result_decl_to_var): Likewise.
21534         * tree-pretty-print.c (dump_generic_node): Do not handle
21535         CHANGE_DYNAMIC_TYPE_EXPR.
21536         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
21537         * tree-ssa-operands.c (get_expr_operands): Likewise.
21538         * tree-ssa-structalias.c (struct variable_info): Remove
21539         no_tbaa_pruning member.
21540         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
21541         (unify_nodes): Do not copy it.
21542         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21543         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
21544         (set_uids_in_ptset): Do not check it.
21545         (find_what_var_points_to): Likewise.
21546         (compute_tbaa_pruning): Remove.
21547         (compute_points_to_sets): Do not call it.
21548         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21549         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21550         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
21551         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
21552         (DECL_NO_TBAA_P): Likewise.
21553         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
21554         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
21555         (expand_omp_atomic_pipeline): Do not set it.
21556         * print-tree.c (print_node): Do not dump it.
21557         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21558         redundant check.
21559
21560 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
21561
21562         PR target/39856
21563         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
21564         for clobber.
21565
21566 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21567
21568         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
21569         non-external.
21570
21571 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21572
21573         * Makefile.in (bversion.h, s-bversion): New targets.
21574         (TOPLEV_H): Add bversion.h.
21575         * toplev.h: Include "bversion.h".
21576         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
21577         the __format__ attribute only if compiling with the same version
21578         of GCC as the sources (the "build version").
21579
21580 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21581
21582         * c-format.c (handle_format_attribute): Fix comment typo.
21583
21584 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
21585
21586         PR target/37846
21587         * config/ia64/ia64.opt (mfused-madd): New.
21588         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
21589         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
21590         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
21591         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
21592         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
21593         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
21594         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
21595         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
21596         instruction if !TARGET_FUSED_MADD.
21597         (fpma, fpms): Remove colon from name.
21598
21599 2009-05-22  Richard Guenther  <rguenther@suse.de>
21600
21601         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
21602         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
21603         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
21604         TARGET_MEM_REF.
21605         (create_expression_by_pieces): Only convert if necessary.
21606         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
21607         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
21608
21609 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
21610
21611         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
21612         regular pattern from a template and rename it ...
21613         (*extzv_truncsi_exts): ... to this.
21614
21615 2009-05-21  Richard Guenther  <rguenther@suse.de>
21616
21617         * cgraph.h (struct cgraph_node): Remove inline_decl member.
21618         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
21619         (cgraph_default_inline_p): Likewise.
21620         (cgraph_decide_inlining_incrementally): Likewise.
21621
21622 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
21623             Uros Bizjak  <ubizjak@gmail.com>
21624
21625         * config/i386/cpuid.h (bit_MOVBE): New.
21626
21627         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
21628
21629         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
21630         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
21631         (ix86_handle_option): Handle OPT_mmovbe.
21632         (ix86_target_string): Add -mmovbe.
21633         (pta_flags): Add PTA_MOVBE.
21634         (processor_alias_table): Add PTA_MOVBE to "atom".
21635         (override_options): Handle PTA_MOVBE.
21636
21637         * config/i386/i386.h (TARGET_MOVBE): New.
21638
21639         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
21640         (*bswapsi_movbe): New.
21641         (*bswapdi_movbe): Likewise.
21642         (bswapdi2): Renamed to ...
21643         (*bswapdi_1): This.
21644         (bswapdi2): New expander.
21645
21646         * config/i386/i386.opt (mmovbe): New.
21647
21648         * doc/invoke.texi: Document -mmovbe.
21649
21650 2009-05-21  Taras Glek  <tglek@mozilla.com>
21651
21652         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
21653         * gcc-plugin.h (plugin_init): Updated signature.
21654         * gcc-plugin.h (plugin_name_args): Moved to this header.
21655         * doc/plugins.texi (plugin_init): Updated documention to reflect
21656         API change.
21657         * doc/plugins.texi (plugin_name_args): Added to documention.
21658
21659 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
21660
21661         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
21662         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
21663
21664 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
21665
21666         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
21667         JUMP_TABLE_DATA_P predicates where applicable.
21668         * config/i386/predicates.md: Ditto.
21669         * config/i386/sse.md: Ditto.
21670
21671 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
21672
21673         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
21674         operand2 -128 override length_immediate attribute to 1.
21675         * config/i386/predicates.md (constm128_operand): New predicate.
21676
21677         * config/i386/i386.c (memory_address_length): Handle %r12
21678         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
21679         also check REGNO.
21680         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
21681         mode look through optional ZERO_EXTEND and SUBREG.
21682         * config/i386/i386.md (R12_REG): New define_constant.
21683         (prefix_data16): For sse unit set also for MODE_TI insns.
21684         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
21685         insns set if operand 1 is ext_QIreg_operand.
21686         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
21687         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
21688         immediate.
21689         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
21690         mode from MODE_DI to MODE_SI.
21691         (movdi_1_rex64): Override modrm and length_immediate attributes
21692         only for movabs (TYPE_IMOV, alternative 2).
21693         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
21694         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
21695         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
21696         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
21697         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
21698         prefix_rex attribute if DImode.
21699         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
21700         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
21701         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
21702         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
21703         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
21704         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
21705         Likewise.  For TYPE_IMOV clear length_immediate attribute.
21706         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
21707         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
21708         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
21709         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
21710         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
21711         or one operand TYPE_ISHIFT.
21712         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
21713         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
21714         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
21715         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
21716         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
21717         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
21718         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
21719         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
21720         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
21721         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
21722         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
21723         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
21724         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
21725         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
21726         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
21727         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
21728         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
21729         set mode attribute, don't override length attribute.
21730         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
21731         to 1.
21732         (return_internal_long): Set length attribute to 2 instead of 1.
21733         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
21734         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
21735         prefix_rex attribute.
21736         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
21737         New predicates.
21738         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
21739
21740 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21741
21742         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
21743
21744 2009-05-20  Ian Lance Taylor  <iant@google.com>
21745
21746         * tree.c (build_tree_list_vec_stat): New function.
21747         (ctor_to_vec): New function.
21748         (build_nt_call_vec): New function.
21749         (build_call_array): Change args to be a const pointer.
21750         (build_call_vec): New function.
21751         * tree.h (build_nt_call_vec): Declare.
21752         (build_tree_list_vec_stat): Declare.
21753         (build_tree_list_vec): Define.
21754         (build_call_array): Update declaration.
21755         (build_call_vec): Declare.
21756         (ctor_to_vec): Declare.
21757         * c-common.c (tree_vector_cache): New static variable.
21758         (make_tree_vector): New function.
21759         (release_tree_vector): New function.
21760         (make_tree_vector_single): New function.
21761         (make_tree_vector_copy): New function.
21762         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
21763         (make_tree_vector_single, make_tree_vector_copy): Declare.
21764         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
21765         (c_parser_expr_list): Don't manage cache here, instead call
21766         make_tree_vector.
21767         (c_parser_release_expr_list): Remove static function.
21768         (c_parser_vec_to_tree_list): Remove static function.
21769         (c_parser_attributes): Call build_tree_list_vec instead of
21770         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
21771         c_parser_release_expr_list.
21772         (c_parser_postfix_expression_after_primary): Likewise.
21773         (c_parser_objc_keywordexpr): Likewise.
21774
21775 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
21776
21777         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
21778         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
21779         TARGET_CONVERT_TO_TYPE.
21780         * hooks.c (hook_tree_const_tree_null): Define.
21781         * hooks.h (hook_tree_const_tree_null): Declare.
21782         * target.h (struct gcc_target):  Add invalid_parameter_type,
21783         invalid_return_type, promoted_type, and convert_to_type fields.
21784         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
21785         (TARGET_INVALID_RETURN_TYPE): Define.
21786         (TARGET_PROMOTED_TYPE): Define.
21787         (TARGET_CONVERT_TO_TYPE): Define.
21788         (TARGET_INITIALIZER): Update for new fields.
21789         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
21790         (grokparms): Check targetm.invalid_parameter_type.
21791         * c-typeck.c (default_conversion): Check targetm.promoted_type.
21792         * c-convert.c (convert): Check targetm.convert_to_type.
21793
21794 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
21795
21796         * config/mips/mips.md (*extenddi_truncate<mode>,
21797         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
21798         defintions.
21799         (*extendhi_truncateqi): New define_insn_and_sptit.
21800
21801 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
21802
21803         PR middle-end/40204
21804         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
21805         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
21806
21807 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
21808
21809         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
21810         the operand of VIEW_CONVERT_EXPR.
21811
21812 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
21813
21814         * config/i386/driver-i386.c (host_detect_local_cpu): Check
21815         extended family and model for Intel processors.  Support Intel Atom.
21816
21817 2009-05-20  Olivier Hainque  <hainque@adacore.com>
21818
21819         * gstab.h (stab_code_type): Define, to be used instead of the
21820         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
21821         notice.
21822         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
21823         occurrences by stab_code_type.
21824         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
21825
21826 2009-05-20  Martin Jambor  <mjambor@suse.cz>
21827
21828         * tree-flow.h (insert_edge_copies_seq): Undeclare.
21829         (sra_insert_before): Likewise.
21830         (sra_insert_after): Likewise.
21831         (sra_init_cache): Likewise.
21832         (sra_type_can_be_decomposed_p): Likewise.
21833         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
21834         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
21835         (sra_insert_before): Likewise.
21836         (sra_insert_after): Likewise.
21837         (sra_init_cache): Likewise.
21838         (insert_edge_copies_seq): Made static and moved upwards.
21839
21840         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
21841         case.
21842
21843         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
21844
21845         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
21846         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
21847         simple copies.
21848
21849 2009-05-20  Richard Guenther  <rguenther@suse.de>
21850
21851         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21852         with mismatched comparison modes.
21853
21854 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21855
21856         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
21857         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
21858         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
21859         with shifts for Thumb2.
21860         (orsi_notsi): New for orn.
21861         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
21862         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
21863         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
21864         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
21865         Don't invert remainder for IOR.
21866
21867 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
21868
21869         PR tree-optimization/40087
21870         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
21871         number_of_iterations_ne): Rename never_infinite argument.
21872         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
21873         number_of_iterations_le): Handle pointer-type ivs when
21874         exit_must_be_taken is false.
21875         (number_of_iterations_cond):  Do not always assume that
21876         exit_must_be_taken if the control variable is a pointer.
21877
21878 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21879
21880         * c-typeck.c (build_binary_op): Allow % on integal vectors.
21881         * doc/extend.texi (Vector Extension): Document that % is allowed too.
21882
21883 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
21884
21885         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
21886         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
21887
21888 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21889
21890         PR c/40172
21891         * c.opt (Wlogical-op): Disabled by default.
21892         * c-opt (c_common_post_options): Do not enable Wlogical-op with
21893         Wextra.
21894         * doc/invoke.texi (Wlogical-op): Likewise.
21895
21896 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
21897
21898         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
21899         into CASE_CONVERT.
21900         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
21901         Propagate the type of the first operand.
21902         <ASSERT_EXPR>: Simplify.
21903         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
21904         Rewrite using the RHS code as discriminant.
21905         <NOP_EXPR>: Turn into CASE_CONVERT.
21906         <PLUS_EXPR>: Propagate the type of the first operand.
21907
21908 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
21909
21910         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
21911         (ia64_dconst_0_375): New.
21912         * config/ia64/ia64.c (ia64_override_options): Remove
21913         -minline-sqrt-min-latency warning.
21914         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
21915         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
21916         * config/ia64/ia64.md (*sqrt_approx): Remove.
21917         (sqrtsf2): Remove #if 0.
21918         (sqrtsf2_internal_thr): Rewrite and move to div.md.
21919         (sqrtdf): Remove assert.
21920         (sqrtdf2_internal_thr): Rewrite and move to div.md.
21921         (sqrtxf2): Remove #if 0.
21922         (sqrtxf2_internal_thr): Rewrite and move to div.md.
21923         * div.md (sqrt_approx_rf): New.
21924         (sqrtsf2_internal_thr): New implementation.
21925         (sqrtsf2_internal_lat): New.
21926         (sqrtdf2_internal_thr: New implementation.
21927         (sqrtxf2_internal): New implementation.
21928
21929 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21930             Hans-Peter Nilsson  <hp@axis.com>
21931
21932         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
21933         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
21934         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
21935         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
21936         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
21937         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
21938         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
21939         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
21940         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
21941         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
21942         * c-common.c: ...from here.
21943
21944 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21945
21946         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
21947
21948 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21949
21950         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
21951
21952 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21953
21954         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
21955         assignments with memcpy calls.
21956         (add_fdes): Likewise.
21957         (binary_search_unencoded_fdes): Likewise.
21958         (linear_search_fdes): Eliminate type puns.
21959
21960 2009-05-19  Richard Guenther  <rguenther@suse.de>
21961
21962         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
21963         not falsely claim to have propagated into all uses.
21964
21965 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21966
21967         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
21968         version to v3.0.
21969
21970 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21971
21972         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
21973         * config/sh/sh.c (sh_legitimate_address_p): Make static.
21974         (TARGET_LEGITIMATE_ADDRESS_P): New.
21975         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21976         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21977
21978 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
21979
21980         PR debug/40109
21981         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
21982         child of the containing namespace's DIE.
21983
21984 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
21985
21986         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
21987         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
21988         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
21989         extend patterns.
21990
21991 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
21992
21993         PR target/39942
21994         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
21995         gen_align with gen_pad.
21996         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
21997         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
21998
21999         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
22000         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
22001
22002         * config/i386/i386.md (align): Renamed to ...
22003         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
22004         ASM_OUTPUT_MAX_SKIP_PAD.
22005
22006 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
22007
22008         * config.gcc: Fix variable syntax.
22009
22010         PR target/39531
22011         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
22012         before calling exact_log2.
22013         (output_iorsi3): Likewise.
22014         (output_xorsi3): Likewise.
22015
22016 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
22017
22018         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
22019         for the none zero constant operand except for EQ and NE
22020         comprisons even when the first operand is R0.
22021
22022 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
22023
22024         * config/s390/2064.md: Remove trailing whitespaces.
22025         * config/s390/2084.md: Likewise.
22026         * config/s390/constraints.md: Likewise.
22027         * config/s390/fixdfdi.h: Likewise.
22028         * config/s390/libgcc-glibc.ver: Likewise.
22029         * config/s390/s390-modes.def: Likewise.
22030         * config/s390/s390-protos.h: Likewise.
22031         * config/s390/s390.c: Likewise.
22032         * config/s390/s390.h: Likewise.
22033         * config/s390/s390.md: Likewise.
22034         * config/s390/tpf-unwind.h: Likewise.
22035
22036 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
22037
22038         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
22039
22040 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
22041
22042         M68K TLS support.
22043         * configure.ac (m68k-*-*): Check if binutils support TLS.
22044         * configure: Regenerate.
22045         * config/m68k/predicates.md (symbolic_operand): Extend comment.
22046         * config/m68k/constraints.md (Cu): New constraint.
22047         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
22048         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
22049         (movsi): Handle TLS symbols.
22050         (addsi3_5200): Handle XTLS symbols, indent.
22051         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
22052         (m68k_tls_reference_p): Declare.
22053         (m68k_legitimize_address): Declare.
22054         (m68k_unwrap_symbol): Declare.
22055         * config/m68k/m68k.opt (mxtls): New option.
22056         * config/m68k/m68k.c (ggc.h): Include.
22057         (m68k_output_dwarf_dtprel): Implement hook.
22058         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
22059         (m68k_expand_prologue): Load GOT pointer when function needs it.
22060         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
22061         (m68k_legitimate_constant_address_p): Same.
22062         (m68k_decompose_address): Handle TLS references.
22063         (m68k_get_gp): New static function.
22064         (enum m68k_reloc): New contants.
22065         (TLS_RELOC_P): New macro.
22066         (m68k_wrap_symbol): New static function.
22067         (m68k_unwrap_symbol): New function.
22068         (m68k_final_prescan_insn_1): New static function.
22069         (m68k_final_prescan_insn): New function.
22070         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
22071         functions.
22072         (legitimize_pic_address): Handle TLS references..
22073         (m68k_tls_get_addr, m68k_get_tls_get_addr)
22074         (m68k_libcall_value_in_a0_p)
22075         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
22076         (m68k_call_m68k_read_tp): Helper variables and functions for ...
22077         (m68k_legitimize_tls_address): Handle TLS references.
22078         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
22079         New functions.
22080         (m68k_legitimize_address): Handle TLS symbols.
22081         (m68k_get_reloc_decoration): New static function.
22082         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
22083         UNSPEC_RELOC32.
22084         (m68k_output_dwarf_dtprel): Implement hook.
22085         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
22086         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
22087         m68k_call_* routines.
22088         (sched_attr_op_type): Handle TLS symbols.
22089         (gt-m68k.h): Include.
22090         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
22091         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
22092
22093 2009-05-18  Martin Jambor  <mjambor@suse.cz>
22094
22095         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
22096         (visit_store_addr_for_mod_analysis): New function.
22097         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
22098         (determine_cst_member_ptr): Use gimple_assign_single_p.
22099         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
22100         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
22101         operands.  Don't check number of operands of a NOP_EXPR.
22102
22103 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
22104
22105         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
22106
22107 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22108
22109         PR c/40172
22110         * c-common.c (warn_logical_operator): Don't warn if one of
22111         expression isn't always true or false.
22112
22113 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
22114
22115         * config/i386/biarch32.h: New file.
22116         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
22117
22118 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
22119
22120         * config/mips/mips.md (*zero_extend<mode>_trunchi,
22121         *zero_extend<mode>_truncqi): Merge these into ...
22122         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
22123         Name the pattern following this as *zero_extendhi_truncqi.
22124
22125 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
22126
22127         PR middle-end/39301
22128         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
22129         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
22130         (output_info): Make field HOST_WIDEST_INT.
22131         (print_statistics): Use HOST_WIDEST_INT_PRINT.
22132         (dump_bitmat_statistics): Same.
22133
22134 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
22135
22136         * config.gcc (use_gcc_stdint):  Set to wrap.
22137         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
22138         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
22139         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22140         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22141         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22142         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22143         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22144         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
22145
22146 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
22147
22148         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
22149         tune_64.
22150         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
22151         Move definitions earlier.
22152         (OPT_ARCH64, OPT_ARCH32): Define.
22153         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
22154         and tune_64.
22155
22156 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
22157
22158         PR target/40153
22159         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
22160         implies.
22161
22162 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
22163
22164         * arm.md (movdi2): Copy non-reg values to DImode registers.
22165
22166 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
22167
22168         PR target/39942
22169         * final.c (label_to_max_skip): New function.
22170         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
22171         CODE_LABEL_NUMBER <= max_labelno.
22172         * output.h (label_to_max_skip): New prototype.
22173         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
22174         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
22175         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
22176         Handle CODE_LABELs with >= 16 byte alignment or with
22177         max_skip == (1 << align) - 1.
22178         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
22179         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
22180
22181         PR target/39942
22182         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
22183         .p2align 3 if MAX_SKIP is smaller than 7.
22184         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
22185
22186 2009-05-15  Ian Lance Taylor  <iant@google.com>
22187
22188         * alias.c (struct alias_set_entry_d): Rename from struct
22189         alias_set_entry.  Change all uses.
22190         * except.c (struct call_site_record_d): Rename from struct
22191         call_site_record.  Change all uses.
22192         * except.h (struct eh_region_d): Rename from struct eh_region.
22193         Change all uses.
22194         * gcse.c (struct hash_table_d): Rename from struct hash_table.
22195         Change all uses.
22196         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
22197         ivtype_map_elt.  Change all uses.
22198         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
22199         Change all uses.
22200         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
22201         * graphite.h (struct name_tree_d): Rename from struct name_tree.
22202         Change all uses.
22203         (struct sese_d): Rename from struct sese.  Change all uses.
22204         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
22205         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
22206         * optabs.h (struct optab_d): Rename from struct optab.  Change all
22207         uses.
22208         (struct convert_optab_d): Rename from struct convert_optab.
22209         Change all uses.
22210         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
22211         ipa_opt_pass.  Change all uses.
22212         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
22213         all uses.
22214
22215         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
22216         defined as a typedef.
22217         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
22218         defined as a tag.
22219
22220 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22221
22222         PR 16302
22223         * fold-const.c (make_range,build_range_check,merge_ranges): Move
22224         declaration to...
22225         (merge_ranges): Returns bool.
22226         * tree.h (make_range): .. to here.
22227         (build_range_check): Likewise.
22228         (merge_ranges): Likewise. Renamed from merge_ranges.
22229         * c-typeck.c (parser_build_binary_op): Update calls to
22230         warn_logical_operator.
22231         * c-common.c (warn_logical_operator): Add new warning.
22232         * c-common.h (warn_logical_operator): Update declaration.
22233
22234 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22235
22236         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
22237
22238 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22239
22240         * doc/install.texi: Document MPC requirements, flags etc.
22241
22242         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
22243         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
22244         Evaluate constant arguments.
22245         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
22246         (fold_builtin_1): Likewise, also evaluate constant arguments.
22247         Remove superfluous break.
22248         (do_mpc_ckconv): New.
22249         * real.h: Include mpc.h.
22250         * toplev.c (print_version): Output MPC version info if available.
22251
22252 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
22253
22254         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
22255
22256 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
22257
22258         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
22259         only once.
22260
22261 2009-05-15  Jan Hubicka  <jh@suse.cz>
22262
22263         * doc/invoke.texi (max-early-inliner-iterations): New flag.
22264         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
22265         (try_inline): Fix return value.
22266         (cgraph_decide_inlining_incrementally): Honor new value.
22267         (cgraph_early_inlining): Handle indirect inlining.
22268         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
22269
22270 2009-05-15  Jan Hubicka  <jh@suse.cz>
22271
22272         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
22273         * cgraphunit.c (cgraph_finalize_function): Set it.
22274         (cgraph_expand_function): Use it.
22275
22276 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
22277
22278         * real.c (encode_ieee_half): Define.
22279         (decode_ieee_half): Define.
22280         (ieee_half_format): Define.
22281         (arm_half_format): Define.
22282         * real.h (ieee_half_format): Declare.
22283         (arm_half_format): Declare.
22284
22285 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
22286
22287         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
22288         swapped, and reversed optabs exist before trying to use them.
22289
22290 2009-05-15  Paul Brook  <paul@codesourcery.com>
22291             Sandra Loosemore  <sandra@codesourcery.com>
22292
22293         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
22294         loads.  Allow PRE_DEC.
22295         (output_move_neon): Handle PRE_DEC.
22296         (arm_print_operand): Add 'A' for neon structure loads.
22297         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
22298         * config/arm/neon.md (neon_mov): Update comment.
22299         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
22300         calls.
22301         (Um): New constraint.
22302
22303 2009-05-15  Jan Hubicka  <jh@suse.cz>
22304
22305         Revert the following patch until testsuite fallout is fixed:
22306         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
22307         * cgraph.h (struct inline_summary): New filed self_wize,
22308         size_inlining_benefit, self_time and time_inlining_benefit.
22309         (struct cgraph_global_info): Replace insns by time ans size fields.
22310         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
22311         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
22312         (ipcp_update_callgraph): Do not touch function bodies.
22313         * ipa-inline.c: Include except.h
22314         (MAX_TIME): New constant.
22315         (overall_insns): Remove
22316         (overall_size, max_benefit): New static variables.
22317         (cgraph_estimate_time_after_inlining): New function.
22318         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
22319         (cgraph_clone_inlined_nodes): Update size.
22320         (cgraph_mark_inline_edge): Update size.
22321         (cgraph_estimate_growth): Use size info.
22322         (cgraph_check_inline_limits): Check size.
22323         (cgraph_default_inline_p): Likewise.
22324         (cgraph_edge_badness): Compute badness based on benefit and size cost.
22325         (cgraph_decide_recursive_inlining): Check size.
22326         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
22327         and times.
22328         (cgraph_decide_inlining): Likewise.
22329         (cgraph_decide_inlining_incrementally): Likewise; honor
22330         PARAM_EARLY_INLINING_INSNS.
22331         (likely_eliminated_by_inlining_p): New predicate.
22332         (estimate_function_body_sizes): New function.
22333         (compute_inline_parameters): Use it.
22334         * except.c (must_not_throw_labels): New function.
22335         * except.h (must_not_throw_labels): Declare.
22336         * tree-inline.c (init_inline_once): Kill inlining_weigths
22337         * tree-ssa-structalias.c: Avoid uninitialized warning.
22338         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22339         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22340         (PARAM_INLINE_CALL_COST): Remove.
22341         (PARAM_EARLY_INLINING_INSNS): New.
22342
22343 2009-05-15  Richard Guenther  <rguenther@suse.de>
22344
22345         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
22346         not TODO_update_ssa.
22347
22348 2009-05-15  Richard Guenther  <rguenther@suse.de>
22349
22350         PR tree-optimization/39999
22351         * gimple.h (gimple_expr_type): Use the expression type looking
22352         through useless conversions.
22353         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
22354         (vn_nary_op_insert_stmt): Likewise.
22355         (simplify_binary_expression): Likewise.
22356
22357 2009-05-15  Richard Guenther  <rguenther@suse.de>
22358
22359         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
22360         New options, enabled by default.
22361         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
22362         Document.
22363         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
22364         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
22365         * tree-ssa-structalias.c (gate_tree_pta): New function.
22366         (pass_build_alias): Use it.
22367
22368 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
22369
22370         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
22371         recurse on an invariant address if a conversion from a pointer
22372         type to a wider integer type is involved.
22373
22374 2009-05-15  Jan Hubicka  <jh@suse.cz>
22375
22376         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
22377         * cgraph.h (struct inline_summary): New filed self_wize,
22378         size_inlining_benefit, self_time and time_inlining_benefit.
22379         (struct cgraph_global_info): Replace insns by time ans size fields.
22380         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
22381         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
22382         (ipcp_update_callgraph): Do not touch function bodies.
22383         * ipa-inline.c: Include except.h
22384         (MAX_TIME): New constant.
22385         (overall_insns): Remove
22386         (overall_size, max_benefit): New static variables.
22387         (cgraph_estimate_time_after_inlining): New function.
22388         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
22389         (cgraph_clone_inlined_nodes): Update size.
22390         (cgraph_mark_inline_edge): Update size.
22391         (cgraph_estimate_growth): Use size info.
22392         (cgraph_check_inline_limits): Check size.
22393         (cgraph_default_inline_p): Likewise.
22394         (cgraph_edge_badness): Compute badness based on benefit and size cost.
22395         (cgraph_decide_recursive_inlining): Check size.
22396         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
22397         and times.
22398         (cgraph_decide_inlining): Likewise.
22399         (cgraph_decide_inlining_incrementally): Likewise; honor
22400         PARAM_EARLY_INLINING_INSNS.
22401         (likely_eliminated_by_inlining_p): New predicate.
22402         (estimate_function_body_sizes): New function.
22403         (compute_inline_parameters): Use it.
22404         * except.c (must_not_throw_labels): New function.
22405         * except.h (must_not_throw_labels): Declare.
22406         * tree-inline.c (init_inline_once): Kill inlining_weigths
22407         * tree-ssa-structalias.c: Avoid uninitialized warning.
22408         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22409         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22410         (PARAM_INLINE_CALL_COST): Remove.
22411         (PARAM_EARLY_INLINING_INSNS): New.
22412         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
22413         (inline-call-cost): Remove.
22414         (early-inlining-insns): New.
22415
22416 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
22417
22418         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
22419         for bounds.
22420         (print_int_cst_bounds_in_octal_p): Likewise.
22421         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
22422         with subtypes.
22423         * dwarf2out.c (base_type_die): Likewise.
22424         (is_subrange_type): Delete.
22425         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
22426         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
22427         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
22428         if the destination type is boolean.
22429         (build_range_check): Do not special-case subtypes.
22430         (fold_sign_changed_comparison): Likewise.
22431         (fold_unary): Likewise.
22432         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
22433         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
22434         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
22435         * tree.c (subrange_type_for_debug_p): New predicate based on the
22436         former is_subrange_type.
22437         * tree.h (subrange_type_for_debug_p): Declare.
22438         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
22439         (convert_affine_scev): Remove call to above function.
22440         (chrec_convert_aggressive): Likewise.
22441         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
22442         false for conversions involving subtypes.
22443         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
22444         (vrp_val_min): Likewise.
22445         (needs_overflow_infinity): Likewise.
22446         (extract_range_from_unary_expr): Likewise.
22447
22448 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
22449
22450         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
22451         * config/frv/frv.c: Likewise.
22452         * config/s390/s390.c: Likewise.
22453         * config/sparc/sparc.h: Likewise.
22454         * config/i386/i386.h: Likewise.
22455         * config/i386/i386.c: Likewise.
22456         * config/crx/crx.c: Likewise.
22457         * config/m68hc11/m68hc11.h: Likewise.
22458         * config/iq2000/iq2000.c: Likewise.
22459         * config/mn10300/mn10300.h: Likewise.
22460         * config/mn10300/mn10300.c: Likewise.
22461         * config/m68k/m68k.c: Likewise.
22462         * config/rs6000/rs6000.c: Likewise.
22463         * config/rs6000/xcoff.h: Likewise.
22464         * config/rs6000/linux64.h: Likewise.
22465         * config/rs6000/sysv4.h: Likewise.
22466         * config/score/score3.c: Likewise.
22467         * config/score/score7.c: Likewise.
22468         * config/score/score.c: Likewise.
22469         * config/arm/arm.md: Likewise.
22470         * config/mips/mips.c: Likewise.
22471         * config/mips/mips.md: Likewise.
22472         * config/bfin/bfin.h: Likewise.
22473         * config/pa/pa.c: Likewise.
22474         * config/pa/constraints.md: Likewise.
22475
22476         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
22477         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
22478         * config/pdp11/pdp11.h: Use memory_address_p instead.
22479
22480 2009-05-14  Ian Lance Taylor  <iant@google.com>
22481
22482         * passes.c (finish_optimization_passes): Change i to int.
22483         * plugin.c (plugins_active_p): Change event to int.
22484         (dump_active_plugins): Likewise.
22485         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
22486         Add cast.
22487         * tree.c (tree_range_check_failed): Change c to unsigned int.
22488         (omp_clause_range_check_failed): Likewise.
22489         (build_common_builtin_nodes): Change mode to int.  Add cast.
22490         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
22491         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
22492
22493         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
22494         ++ or -- with a variable of enum type.
22495
22496 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22497
22498         PR driver/40144
22499         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
22500
22501 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22502
22503         * store-motion.c: Do not include params.h
22504         * Makefile.in: Fix dependencies for various files.
22505
22506 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22507
22508         * auto-inc-dec.c: Fix pass description, remove apparent
22509         accidental duplication.
22510
22511 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
22512
22513         PR middle-end/40147
22514         * ipa-utils.h (memory_identifier_string): Moved to ...
22515         * tree.h (memory_identifier_string): Here.  Add GTY(()).
22516
22517 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22518
22519         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
22520         in the former documentation of...
22521         (GO_IF_LEGITIMATE_ADDRESS): ... this.
22522         * ira-conflicts.c (get_dup_num): Use address_operand.
22523         * targhooks.c (default_legitimate_address_p): New.
22524         * targhooks.h (default_legitimate_address_p): New.
22525         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
22526         Call hook.
22527         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
22528         * target.h (struct target): Add legitimate_address_p.
22529         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
22530         (TARGET_INITIALIZER): Include it.
22531
22532         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22533         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
22534         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
22535         (TARGET_LEGITIMATE_ADDRESS_P): New.
22536
22537         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22538         (REG_OK_STRICT_P): Delete.
22539         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
22540         (frv_legitimate_address_p_1): ... this.
22541         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
22542         (frv_legitimate_address_p_1): ... the renamed old
22543         frv_legitimate_address_p.
22544         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
22545         (TARGET_LEGITIMATE_ADDRESS_P): New.
22546
22547         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22548         * config/s390/s390-protos.h (legitimate_address_p): Remove.
22549         * config/s390/s390.c (legitimate_address_p): Rename to...
22550         (s390_legitimate_address_p): ... this, make static.
22551         (legitimize_address): Adjust call.
22552         (TARGET_LEGITIMATE_ADDRESS_P): New.
22553         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
22554
22555         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22556         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
22557         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
22558         (TARGET_LEGITIMATE_ADDRESS_P): New.
22559
22560         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22561         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
22562         * config/spu/spu.c (spu_legitimate_address): Rename to...
22563         (spu_legitimate_address_p): ... this, make static.
22564         (TARGET_LEGITIMATE_ADDRESS_P): New.
22565
22566         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22567         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
22568         * config/sparc/sparc.c (legitimate_address_p): Rename to...
22569         (sparc_legitimate_address_p): ... this, make static and return bool.
22570         (legitimize_address): Adjust call.
22571         (TARGET_LEGITIMATE_ADDRESS_P): New.
22572
22573         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22574         * config/i386/i386-protos.h (legitimate_address_p): Remove.
22575         * config/i386/i386.c (legitimate_address_p): Rename to...
22576         (ix86_legitimate_address_p): ... this, make static.
22577         (constant_address_p): Move after it, adjust call.
22578         (TARGET_LEGITIMATE_ADDRESS_P): New.
22579
22580         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22581         * config/avr/avr-protos.h (legitimate_address_p): Remove.
22582         * config/avr/avr.c (legitimate_address_p): Rename to...
22583         (avr_legitimate_address_p): ... this, make static.
22584         (legitimize_address): Adjust call.
22585         (TARGET_LEGITIMATE_ADDRESS_P): New.
22586
22587         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22588         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
22589         * config/crx/crx.c (crx_legitimate_address_p): Make static.
22590         (TARGET_LEGITIMATE_ADDRESS_P): New.
22591
22592         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22593         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
22594         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
22595         (TARGET_LEGITIMATE_ADDRESS_P): New.
22596
22597         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22598         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
22599         Remove.
22600         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
22601         Make static.
22602         (TARGET_LEGITIMATE_ADDRESS_P): New.
22603
22604         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22605         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
22606         Remove.
22607         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
22608         Rename to...
22609         (m68hc11_legitimate_address_p): ... this, make static.
22610         (go_if_legitimate_address_internal): Rename to...
22611         (m68hc11_legitimate_address_p_1): ... this.
22612         (legitimize_address): Adjust call.
22613         (TARGET_LEGITIMATE_ADDRESS_P): New.
22614
22615         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22616         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
22617         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
22618         (TARGET_LEGITIMATE_ADDRESS_P): New.
22619
22620         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22621         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
22622         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
22623         (mn10300_legitimate_address_p): ... this, make static.
22624         (TARGET_LEGITIMATE_ADDRESS_P): New.
22625
22626         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22627         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
22628         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
22629         (TARGET_LEGITIMATE_ADDRESS_P): New.
22630
22631         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22632         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
22633         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
22634         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22635         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
22636         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
22637         (rs6000_legitimate_address_p): ... this, make static.
22638         (TARGET_LEGITIMATE_ADDRESS_P): New.
22639         (REG_MODE_OK_FOR_BASE_P): Delete.
22640         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
22641
22642         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22643         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
22644         Delete.
22645         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
22646         static, adjust types.
22647         (TARGET_LEGITIMATE_ADDRESS_P): New.
22648
22649         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22650         * config/score/score.c (score_address_p): Rename to...
22651         (score_legitimate_address_p): ... this.
22652         (TARGET_LEGITIMATE_ADDRESS_P): New.
22653         * config/score/score3.c (score3_address_p): Rename to...
22654         (score3_legitimate_address_p): ... this.
22655         * config/score/score7.c (score7_address_p): Rename to...
22656         (score7_legitimate_address_p): ... this.
22657
22658         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
22659         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
22660         GO_IF_LEGITIMATE_ADDRESS): Delete.
22661         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
22662         thumb2_legitimate_address_p): Delete.
22663         (arm_legitimate_address_p): Rename to...
22664         (arm_legitimate_address_outer_p): ... this.
22665         * config/arm/constraints.md ("Uq"): Adjust call.
22666         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
22667         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
22668         to...
22669         (arm_legitimate_address_outer_p): ... this.
22670         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
22671         static.
22672         (TARGET_LEGITIMATE_ADDRESS_P): New.
22673
22674         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22675         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
22676         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
22677         (TARGET_LEGITIMATE_ADDRESS_P): New.
22678
22679         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22680         * config/vax/vax-protos.h (legitimate_address_p): Remove.
22681         * config/vax/vax.c (legitimate_address_p): Rename to...
22682         (vax_legitimate_address_p): ... this, make static.
22683         (TARGET_LEGITIMATE_ADDRESS_P): New.
22684
22685         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22686         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
22687         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
22688         (TARGET_LEGITIMATE_ADDRESS_P): New.
22689
22690         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22691         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
22692         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
22693         (mmix_legitimate_address_p): ... this, make static.
22694         (TARGET_LEGITIMATE_ADDRESS_P): New.
22695
22696         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22697         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
22698         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
22699         (TARGET_LEGITIMATE_ADDRESS_P): New.
22700
22701 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22702
22703         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
22704         of MODE_COMPLEX_INT.
22705
22706 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
22707
22708         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
22709         LCT_NORMAL in function call.
22710         * mips-tdump.c (print_file_desc): Add cast to enum type.
22711         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
22712         (mark_stabs): Add casts to enum types.
22713         (parse_stabs_common): Add casts to enum types.
22714
22715 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22716
22717         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
22718         Check for invalid values of LETTER.
22719
22720 2009-05-13  Taras Glek  <tglek@mozilla.com>
22721
22722         * attribs.c (register_attribute): moved out attribute registration
22723         into register_attribute.
22724         * doc/plugins.texi: Documented register_attribute and
22725         PLUGIN_ATTRIBUTES.
22726         * gcc-plugin.h: Added forward decl for register_attribute.
22727         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
22728         * plugin.c (register_callback, invoke_plugin_callbacks): Added
22729         PLUGIN_ATTRIBUTES boilerplate.
22730
22731 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
22732
22733         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
22734         values even in sentinel and empty entries.
22735         (ms_printf_flag_specs):  Likewise.
22736         (ms_scanf_flag_specs):  Likewise.
22737         (ms_strftime_flag_specs):  Likewise.
22738         (ms_print_char_table):  Likewise.
22739         (ms_scan_char_table):  Likewise.
22740         (ms_time_char_table):  Likewise.
22741
22742 2009-05-13  Doug Kwan  <dougkwan@google.com>
22743
22744         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
22745
22746 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22747
22748         * config/mips/mips.md (store): Add attributes for QI and HI.
22749         Update comment.
22750         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
22751         (truncdi<mode>2): ... this new pattern.
22752
22753 2009-05-13  Brad Hards  <bradh@kde.org>
22754
22755         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
22756
22757 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
22758             Ben Elliston <bje@au.ibm.com>
22759
22760         PR middle-end/40035
22761         * dse.c (check_mem_read_rtx): Guard against width == -1.
22762
22763 2009-05-13  Michael Matz  <matz@suse.de>
22764
22765         PR middle-end/39976
22766         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
22767         (trivially_conflicts_p): New function.
22768         (insert_backedge_copies): Use it.
22769
22770 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
22771
22772         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
22773         (handle_stdc_pragma): Use new enum constant names.
22774         (handle_pragma_float_const_decimal64): Ditto.
22775
22776 2009-05-13  Ian Lance Taylor  <iant@google.com>
22777
22778         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
22779         tree.def.
22780
22781 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
22782
22783         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
22784         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
22785         multilibs.
22786         * config/m68k/m68k.h (FL_UCLINUX): Define.
22787
22788 2009-05-13  Jan Hubicka  <jh@suse.cz>
22789
22790         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
22791
22792 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22793
22794         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
22795         unless -fschedule-insns is specified.
22796
22797 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22798
22799         PR target/39561
22800         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
22801         TARGET_EXPAND_CBRANCHDI4.
22802         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
22803         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
22804         (cmpeqdi): Fix comment.
22805
22806 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22807
22808         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
22809         (sh_legitimate_address_p): Likewise.
22810         * config/sh/sh.c (sh_legitimate_index_p): New.
22811         (sh_legitimate_address_p): Likewise.
22812         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
22813         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
22814         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
22815         (MAYBE_BASE_REGISTER_RTX_P): New macro.
22816         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
22817         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
22818         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
22819         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
22820         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
22821
22822 2009-05-12  Jan Hubicka  <jh@suse.cz>
22823
22824         * tree-inline.c (estimate_operator_cost): Add operands;
22825         when division happens by constant, it is cheap.
22826         (estimate_num_insns): Loads and stores are not having cost of 0;
22827         EH magic stuff is cheap; when computing runtime cost of switch,
22828         use log2 base of amount of its cases; builtin_expect has cost of 0;
22829         compute cost for moving return value of call.
22830         (init_inline_once): Initialize time_based flags.
22831         * tree-inline.h (eni_weights_d): Add time_based flag.
22832
22833 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22834
22835         * df-core.c: Update head documentation.
22836
22837 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22838
22839         PR bootstrap/40118
22840         * rs6000.c (rs6000_generate_compare): Use op1b instead of
22841         shadowing exisiting variable op1.
22842
22843 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
22844
22845         PR target/37179
22846         * config/i386/driver-i386.c (processor_signatures): New enum.
22847         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
22848         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
22849         processor signature to detect geode processor.
22850
22851 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22852
22853         Revert:
22854
22855         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22856
22857         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22858         causes spurious differences between trunk and cond-optab branch.
22859
22860 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22861
22862         * dojump.c (compare_from_rtx): Delete.
22863         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
22864         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
22865         if the comparison does not satisfy the predicate; test predicates for
22866         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
22867         further if one existing pattern fails.
22868         * expr.h (compare_from_rtx): Delete.
22869         (prepare_operand): Declare it.
22870         * optabs.c: Change "lib call" to "libcall" throughout.
22871         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
22872         HAVE_conditional_trap, emit_cmp_insn): Delete.
22873         (can_compare_p): Delete cmp_optab case.
22874         (prepare_float_lib_cmp): Return an rtx and a machine mode.
22875         Accept other parameters by value.
22876         (prepare_operand): Make non-static.
22877         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
22878         other parameters by value.  Try to widen operands here based on
22879         an optab_methods argument and looking at cbranch_optab.
22880         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
22881         loop.  Use cbranch_optab directly.
22882         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
22883         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
22884         assertion.
22885         (emit_conditional_move, emit_conditional_add): Inline what's needed
22886         of compare_from_rtx, using new prepare_cmp_insn for the rest.
22887         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
22888         with COMPARE.  Move cmov_optab and cstore_optab above
22889         with cbranch_optab, move cmp_optab down with ucmp_optab,
22890         remove tst_otpab.  Do not initialize trap_rtx.
22891         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
22892         for trap code.  Do not check HAVE_conditional_trap.  Use
22893         prepare_cmp_insn.  Accept no predicate for operand 3.
22894         * optabs.h (OTI_cmp): Mark as used only for libcalls.
22895         (OTI_ctrap, ctrap_optab): New.
22896         (tst_optab): Delete.
22897         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
22898         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
22899         with lookup of ctrap_optab.
22900         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
22901         Delete.
22902         (ctrap_optab): New.
22903
22904         * combine.c (combine_simplify_rtx, simplify_set): Do not
22905         special case comparing against zero for cc0 machines.
22906         * simplify-rtx.c (simplify_binary_operation_1): Never remove
22907         COMPARE on cc0 machines.
22908         (simplify_relational_operation): Return a new expression when
22909         a COMPARE could be removed.
22910         * final.c (final_scan_insn): Compare cc_status values
22911         against LHS of a (compare FOO (const_int 0)) cc0 source.
22912         Also check if cc_status.value is the full compare.
22913
22914         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
22915         (cstoreMM4): Document.
22916         (conditional_trap): Document ctrapMM4 instead.
22917         (sync_compare_and_swapMM): Refer to cbranchcc4.
22918         (Dependent Patterns): Eliminate obsolete information referring to
22919         the old jump optimization phase.
22920         (Canonicalization): Include cbranchcc4 case, omit canonicalization
22921         of compares with 0 on cc0 machines.
22922         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
22923         avoiding references to cc0.  Remove text about storing operands
22924         in cmpMM.
22925         * doc/tm.texi (Condition Codes): Include blurb on different
22926         condition code representations, separate into subsections for
22927         CC0, MODE_CC and conditional execution.
22928
22929         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
22930         alpha_emit_setcc): Accept operands and a machine mode.
22931         * config/alpha/alpha.c (alpha_emit_conditional_branch):
22932         Get code/op0/op1 from operands, use machine mode argument
22933         instead of alpha_compare.fp_p.  Emit the branch here.
22934         (alpha_emit_setcc): Likewise, and return boolean.
22935         (alpha_emit_conditional_move): Likewise.  Assert that
22936         cmp_op_mode == cmp_mode, and simplify accordingly.
22937         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
22938         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
22939         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
22940         Delete.
22941         (stack probe test): Use cbranchdi4.
22942         * config/alpha/predicates.md (alpha_cbranch_operator): New.
22943
22944         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
22945         * config/arc/arc.h (movsicc, movsfcc): Use it.
22946         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
22947         (cbranchsi4, cstoresi4): New.
22948         (cmpsi, bCC and sCC expanders): Remove.
22949
22950         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
22951         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
22952         * config/arm/predicates.md (arm_comparison_operator): Only include
22953         floating-point operators if there is a hardware floating-point unit.
22954         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
22955         deferring to cbranch_cc and cstore_cc respectively.
22956         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
22957         cbranch_cc, cstore_cc): New.
22958         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
22959         arm_compare_op1.
22960         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
22961
22962         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
22963         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
22964         as an argument.
22965         (adjust_insn_length): Adjust calls.
22966         (avr_reorg): Handle (compare (foo) (const_int 0)).
22967         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
22968         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
22969         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
22970         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
22971         (bCC): Remove.
22972         (cbranchqi4, cbranchhi4, cbranchsi4): New.
22973         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
22974
22975         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
22976         (cbranchsi4, cstorebi4, cstoresi4): New.
22977         (movbisi): This insn is duplicate, split it to zero_extend.
22978         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
22979         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
22980         (bfin_optimize_loop): Use cbranch expander.
22981         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
22982         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
22983         (bfin_bimode_comparison_operator): ... this.
22984         (bfin_direct_comparison_operator): New.
22985
22986         * config/cris/cris.c (cris_normal_notice_update_cc): Look
22987         inside (compare FOO (const_int 0)).
22988         (cris_rtx_costs): Handle ZERO_EXTRACT.
22989         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
22990         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
22991         (*tstdi_v32): Delete.
22992         (*cmpdi_non_v32): Add M alternative for operand 1.
22993         (cmpsi, cmp<mode>): Make private.
22994         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
22995         with COMPARE.
22996         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
22997
22998         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
22999         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
23000         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
23001         (cc_reg_operand): New.
23002         (any_cond): Delete.
23003         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
23004         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
23005         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
23006         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
23007         crx_expand_scond): Delete.
23008
23009         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
23010         (cbranchsi4): New.
23011         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
23012         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
23013
23014         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
23015         cstoresi4, cstoresf4, cstoredf4): New.
23016         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
23017         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
23018         Receive the entire operands array.
23019         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
23020         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
23021         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
23022         Get test/op0/op1 from the operands array.
23023         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
23024
23025         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
23026         (h8300_expand_store): New.
23027         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
23028         (const_int 0)).
23029         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
23030         (h8300_expand_store): New.
23031         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
23032         or do not try to produce (set (cc0) REG).
23033         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
23034         change a compare into a move to a scratch register.  Disable some
23035         peepholes when comparing with zero.
23036         (tstsi, tsthi, tstsi, cmpqi): Make private.
23037         (cmphi): Delete.
23038         (bCC, sCC): Delete.
23039         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
23040         cstoresi4): New.
23041
23042         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
23043         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
23044         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
23045         (ix86_emit_i387_log1p): Use cbranchxf2.
23046         (ix86_expand_setcc): Return void.
23047         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
23048         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
23049         cmp<MODEF>, cmpcc): Remove.
23050         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
23051         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
23052         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
23053         (sCC and bCC expanders): Remove.
23054         (stack_protect_test): Use cbranchcc4.
23055
23056         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
23057         Delete.
23058         (ia64_expand_compare): Accept three rtx by reference and return void.
23059         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
23060         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
23061         from *expr.  Update *expr with the BImode comparison to do.
23062         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
23063         cmptf, bCC, sCC, conditional_trap): Delete.
23064         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
23065         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
23066         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
23067         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
23068         * config/ia64/predicates.md (ia64_cbranch_operator): New.
23069
23070         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
23071         type of last argument.
23072         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
23073         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
23074         use machine mode argument instead of branch_type.  Remove dead
23075         code for floating-point comparisons.
23076         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
23077         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
23078         Remove.
23079         (cbranchsi4, cstoresi4): New.
23080         * config/iq2000/predicates.md (reg_or_const_operand): New.
23081
23082         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
23083         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
23084         (b<code>_op): Rewrite to...
23085         (bcc_op): ... this, using match_operator.
23086         (s<code>_op): Rewrite to...
23087         (scc_op): ... this, using match_operator.
23088         (s<code>_24_op): Rewrite to...
23089         (scc_op_24): ... this, using match_operator.
23090         (s<code>_<mode>): Rewrite to...
23091         (cstore<mode>4): ... this, using match_operator.
23092         (s<code>_<mode>_24): Rewrite to...
23093         (cstore<mode>4_24): ... this, using match_operator.
23094         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
23095         m32c_unpend_compare, m32c_expand_scc): Delete.
23096         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
23097         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
23098         (m32c_expand_movcc): Change NE to EQ if necessary.
23099         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
23100
23101         * config/m32r/m32r-protos.h (gen_cond_store): New.
23102         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
23103         (gen_cond_store): New, from sCC patterns.
23104         (m32r_expand_block_move): Use cbranchsi4.
23105         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
23106         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
23107         (cbranchsi4, cstoresi4): New.
23108
23109         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
23110         Delete.
23111         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
23112         (m68hc11_notice_update_cc): Look into a compare with 0.
23113         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
23114         Delete.
23115         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
23116         cmphi, cmpqi, bCC): Delete.
23117         (cbranchsi4, cbranchhi4, cbranchqi4): New.
23118         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
23119         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
23120         sets with COMPARE.
23121
23122         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
23123         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
23124         * config/m68k/constraints.md (H): New.
23125         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
23126         the define_insn below.
23127         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
23128         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
23129         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
23130         patterns): Wrap RHS with COMPARE.
23131         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
23132         (*cmpdi_internal): Name this pattern.
23133         (cmpdi): Change to define_insn.
23134         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
23135         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
23136         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
23137         predicate.
23138         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
23139         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
23140         (conditional_trap): Change to...
23141         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
23142         (*conditional_trap): Use the ordered_comparison_operator and
23143         const1_operand predicates.
23144         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
23145         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
23146         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
23147         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
23148
23149         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
23150         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
23151         (mcore_gen_compare): New.
23152         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
23153         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
23154         (mcore_gen_compare): ... this.
23155         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
23156         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
23157         (stack probe pattern): Use cbranchsi4.
23158
23159         * config/mips/predicates.md (mips_cstore_operator): New.
23160         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
23161         * config/mips/mips.md (any_cond): Delete.
23162         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
23163         always succeed.
23164         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
23165         fixuns_truncsfdi2): Use cbranch patterns.
23166         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
23167         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
23168         Adjust call to mips_expand_conditional_branch.
23169         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
23170         cstore<GPR:mode>4.
23171         * config/mips/mips-protos.h (mips_expand_conditional_branch,
23172         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
23173         * config/mips/mips.c (cmp_operands): Delete.
23174         (mips_emit_compare): Get comparison operands from *op0/*op1.
23175         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
23176         that it succeeds.  Use op0/op1 instead of cmp_operands.
23177         (mips_expand_conditional_branch, mips_expand_conditional_move,
23178         mips_expand_conditional_trap): Likewise.
23179         (mips_block_move_loop): Use cbranch patterns.
23180         * config/mips/mips.h (cmp_operands): Delete.
23181
23182         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
23183         (mmix_gen_compare_reg): Just return a register in the right CC mode.
23184         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
23185         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
23186         (*cmpcc_folded): Rename to...
23187         (*cmpdi_folded): this.
23188         (*cmpcc): Rename to...
23189         (*cmps): ... this.
23190         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
23191         (bCC): Remove.
23192         (cbranchdi4): New.
23193         (cbranchdf4): New.  Handle invalid comparisons here.
23194         * config/mmix/predicates.md (float_comparison_operator): New.
23195
23196         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
23197         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
23198         * config/mn10300/mn10300.md (tst): Delete.
23199         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
23200         Name these patterns and wrap RHS in a compare.
23201         (*cmpsi): Make this pattern private.  Include tst.
23202         (*cmpsf): Make this pattern private.
23203         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
23204         (compare with zero peepholes): Likewise.
23205         (bCC): Remove.
23206         (cbranchsi4, cbranchsf4): New.
23207         (casesi): Use cbranchsi4.
23208
23209         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
23210         hppa_branch_type): Delete.
23211         (return_addr_rtx): Use cbranchsi4.
23212         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
23213         Emit CCFPmode comparison here.
23214         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
23215         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
23216         hppa_branch_type): Delete.
23217         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
23218         (movsicc, movdicc): Remove references to hppa_compare_op0,
23219         hppa_compare_op1 and compare_from_rtx.
23220         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
23221         (casesi): Use cbranchsi4.
23222
23223         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
23224         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
23225         * config/pdp11/pdp11.md (register_or_const0_operand): New.
23226         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
23227         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
23228         (bCC): Delete.
23229         (cbranchdf4, cbranchhi4, cbranchqi4): New.
23230         (*branch, *branch_inverted): New.
23231
23232         * config/picochip/picochip.md (cbranchhi4): Use
23233         ordered_comparison_operator.
23234         (cmphi, bCC): Remove.
23235
23236         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
23237         (trap_comparison_operator): Delete.
23238         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
23239         rs6000_emit_cbranch): Accept mode and operands.
23240         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
23241         rs6000_compare_fp_p): Delete.
23242         (rs6000_generate_compare): Accept mode and comparison.  Extract code
23243         and op0/op1 from there.  Replace references to rs6000_compare_op0
23244         and rs6000_compare_op1.
23245         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
23246         extract result from passed operands.
23247         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
23248         extract loc from passed operands.
23249         (rs6000_emit_cmove): Likewise.
23250         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
23251         rs6000_compare_fp_p): Delete.
23252         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
23253         (cbranch<GPR>4, cbranch<FP>4): New.
23254         (cstore<mode>4): New.  Consolidate here all choices about when to use
23255         portable or specialized sCC sequences.
23256         (stack_protect_test): Use cbranchsi4.
23257         (conditional_trap): Replace with ctrap<GPR>4.
23258         (conditional trap insn): Replace trap_comparison_operator with
23259         ordered_comparison_operator.
23260
23261         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
23262         (s390_emit_prologue): Use ctrap.
23263         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
23264         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
23265         New predicates replacing...
23266         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
23267         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
23268         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
23269         (add<mode>cc): Do not use s390_compare_op0/op1.
23270         (s<code>): Change to...
23271         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
23272         (seq): Change to...
23273         (cstorecc4): ... this.  Handle EQ or NE equally.
23274         (*sne): Un-privatize for use in cstorecc4.
23275         (b<code>): Change to...
23276         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
23277         (conditional_trap): Replace with...
23278         (ctrap<GPR>4, ctrap<FP>4): ... these.
23279         (stack_protect): Use cbranchcc4.
23280
23281         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
23282         * config/score/score-protos.h (score_gen_cmp): Delete.
23283         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
23284         (score_block_move-loop): Use cbranchsi4.
23285         * config/score/score.md (cbranchsi4): New.
23286         (cmpsi, bCC): Delete.
23287         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
23288         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
23289         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
23290         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
23291         * config/score/score3.h (score3_gen_cmp): Delete.
23292         * config/score/score7.h (score7_gen_cmp): Delete.
23293
23294         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
23295         (sh_emit_scc_to_t): ... this.  Return void.
23296         (from_compare): Rename to...
23297         (sh_emit_compare_and_branch): ... this.
23298         (sh_emit_compare_and_set): New.
23299         (sh_expand_t_scc): Accept operands.
23300         * config/sh/predicates.md (sh_float_comparison_operator): New.
23301         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
23302         (prepare_scc_operands): Rename to...
23303         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
23304         arguments.
23305         (sh_emit_cheap_store_flag): New.
23306         (sh_emit_set_t_insn): New.
23307         (from_compare): Rename to...
23308         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
23309         handling of TARGET_SH2E floating point to avoid recursive call.
23310         Generate branch here.
23311         (sh_emit_compare_and_set): New.
23312         (sh_expand_t_scc): Get op0/op1 from arguments.
23313         (sh_emit_cheap_store_flag): New.
23314         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
23315         cases.
23316         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
23317         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
23318         (movsicc, movdicc): Do nothing when it recreated operands from
23319         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
23320         prepare_scc_operands (now sh_emit_scc_to_t).
23321         (udivdi3): Use cstoresi4.
23322         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
23323         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
23324         (cbranchint4_media, cbranchfp4_media): New.
23325         (casesi): Use cbranchdi4.
23326         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
23327         Delete.
23328         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
23329         (movnegt): Remove second operand.
23330         (cbranchsf4, cbranchdf4): New.
23331         (stack_protect): Use cbranchdi4/cbranchsi4.
23332
23333         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
23334         (gen_compare_reg): Accept comparison, extract part of it to...
23335         (gen_compare_reg_1): ... this.
23336         (gen_compare_operator): Delete.
23337         (gen_v9_scc): Accept separate destination, comparison code and arms.
23338         Do not use sparc_compare_op0/sparc_compare_op1.
23339         (emit_scc_insn, emit_conditional_branch_insn): New.
23340         (emit_v9_brxx): Make static.  Remove useless assertion.
23341         (sparc_emit_float_lib_cmp): Return RTL instead of calling
23342         emit_cmp_insn.
23343         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
23344         * config/sparc/sparc-protos.h (gen_compare_reg,
23345         sparc_emit_float_lib_cmp): Adjust prototype.
23346         (emit_scc_insn, emit_conditional_branch_insn): New.
23347         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
23348         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
23349         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
23350         iterators to the top.
23351         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
23352         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
23353         snedi_special_trunc): Delete.
23354         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
23355         and snedi_special_trunc.
23356         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
23357         cbranchdi4, cbranch<F:mode>4): New.
23358         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
23359         here.  Use gen_compare_reg instead of gen_compare_operator.
23360         (conditional_trap): Replace with...
23361         (ctrapsi4, ctrapdi4): ... this.
23362         (stack_protect_test): Use cbranchcc4.
23363
23364         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
23365         argument to rtx.
23366         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
23367         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
23368         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
23369         from operands[0] or operands[3] depending on is_set.
23370         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
23371         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
23372         cmpdf, bCC), sCC: Remove.
23373         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
23374         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
23375         cstoredf4): New.
23376         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
23377         spu_emit_branch_or_set.
23378
23379         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
23380         Add two arguments.
23381         * config/stormy16/stormy16.h (xstormy16_compare_op0,
23382         xstormy16_compare_op1): Delete.
23383         * config/stormy16/stormy16.c (xstormy16_compare_op0,
23384         xstormy16_compare_op1): Delete.
23385         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
23386         Adjust calls.
23387         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
23388         (cmphi, cmpsi, bCC): Remove.
23389
23390         * config/v850/v850.md (tstsi, cmpsi): Fold into...
23391         (*cmpsi): ... this one.
23392         (cbranchsi4, cstoresi4): New.
23393         (bCC expanders): Delete.
23394         (sCC insns): Fold into...
23395         (*setcc): ... this one.
23396         (casesi): Do not use gen_cmpsi and gen_bgtu.
23397         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
23398         (movsicc): Simplify.
23399         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
23400
23401         * config/vax/vax-protos.h (cond_name): New.
23402         (vax_output_conditional_branch): Remove.
23403         * config/vax/vax.c (cond_name): New.
23404         (vax_output_conditional_branch): Remove.
23405         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
23406         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
23407         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
23408         (bit<VAXint>): Wrap source with (compare).
23409         (b<code> and following unnamed pattern): Rename to *branch and
23410         *branch_reversed.  Change macroization to match_operator.
23411         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
23412
23413         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
23414         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
23415         Change last argument to machine_mode.
23416         (xtensa_expand_scc): Add machine_mode argument.
23417         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
23418         (gen_conditional_move, xtensa_expand_conditional_branch,
23419         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
23420         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
23421         Adjust operand numbers.
23422         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
23423         Delete.
23424         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
23425         (cmpsi, cmpsf, b<code>, s<code>): Delete.
23426         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
23427
23428 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
23429
23430         * optabs.c (prepare_cmp_insn): Temporarily disable test that
23431         causes spurious differences between trunk and cond-optab branch.
23432
23433 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23434
23435         PR target/37137
23436         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
23437
23438 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23439
23440         * tree.c (iterative_hash_pointer): Delete.
23441         (iterative_hash_expr): Short-circuit handling of NULL pointer.
23442         Hash UIDs and versions of SSA names.  Don't special-case built-in
23443         function declarations.
23444
23445 2009-05-11  Ian Lance Taylor  <iant@google.com>
23446
23447         PR bootstrap/40103
23448         * graphite.c: Force -Wc++-compat to only be a warning before
23449         #including "cloog/cloog.h".
23450
23451 2009-05-11  Martin Jambor  <mjambor@suse.cz>
23452
23453         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
23454
23455 2009-05-11  Jan Hubicka  <jh@suse.cz>
23456
23457         * tree-ssa-loop-ivcanon.c: Include target.h
23458         (struct loop_size): new structure.
23459         (constant_after_peeling): New predicate.
23460         (tree_estimate_loop_size): New function.
23461         (estimated_unrolled_size): Rewrite for new estimates.
23462         (try_unroll_loop_completely): Use new estimates.
23463         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
23464
23465 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23466
23467         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
23468         libcpp interface change.
23469         (spu_macro_to_expand): Likewise.
23470
23471 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
23472
23473         PR tree-optimization/40026
23474         * gimplify.c (gimplify_init_constructor): Change initial conditional
23475         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
23476         optimize_compound_literals_in_ctor.
23477
23478 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
23479
23480         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
23481         New devices.
23482         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
23483
23484 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
23485
23486         * tree-vect-data-refs.c (vect_analyze_group_access): Use
23487         HOST_WIDE_INT for gap.
23488
23489 2009-05-11  Ira Rosen  <irar@il.ibm.com>
23490
23491         PR tree-optimization/40074
23492         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
23493         account in group size and step comparison.
23494
23495 2009-05-11  Richard Guenther  <rguenther@suse.de>
23496
23497         * passes.c (init_optimization_passes): Strip now incorrect comment.
23498         (execute_function_todo): Do not set PROP_alias.
23499         * tree-pass.h (PROP_alias): Remove.
23500         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
23501         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
23502         * tree-nrv.c (pass_return_slot): Likewise.
23503         * tree-object-size.c (pass_object_sizes): Likewise.
23504         * tree-ssa-dom.c (pass_dominator): Likewise.
23505         (pass_phi_only_cprop): Likewise.
23506         * tree-ssa-dse.c (pass_dse): Likewise.
23507         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
23508         (pass_cselim): Likewise.
23509         * tree-ssa-pre.c (pass_pre): Likewise.
23510         (pass_fre): Likewise.
23511         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
23512         * tree-ssa-sink.c (pass_sink_code): Likewise.
23513         * tree-stdarg.c (pass_stdarg): Likewise.
23514         * tree-tailcall.c (pass_tail_calls): Likewise.
23515         * tree-vrp.c (pass_vrp): Likewise.
23516
23517 2009-05-10  Ian Lance Taylor  <iant@google.com>
23518
23519         * basic-block.h (enum profile_status): Break out of struct
23520         control_flow_graph.
23521         * cgraph.h (struct inline_summary): Break out of struct
23522         cgraph_local_info.
23523         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
23524         of struct cgraph_order_sort.
23525         * combine.c (enum undo_kind): New enum, broken out of struct undo.
23526         * cse.c (struct branch_path): Break out of struct
23527         cse_basic_block_data.
23528         * except.h (enum eh_region_type): Break out of struct eh_region.
23529         * gcc.c (enum add_del): Break out of struct modify_target.
23530         * genrecog.c (enum decision_type): Break out of struct decision_test.
23531         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
23532         ggc_pch_data.
23533         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
23534         * regmove.c (enum match_use): New enum, broken out of struct match.
23535         * sched-int.h (enum post_call_group): New enum, broken out of
23536         struct deps.
23537         (struct deps_reg): Break out of struct deps.
23538         * target.h (struct asm_int_op): Break out of struct gcc_target.
23539         * tree-eh.c (struct goto_queue_node): Break out of struct
23540         leh_tf_state.
23541         * tree-inline.h (enum copy_body_cge_which): Break out of
23542         copy_body_data.
23543         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
23544
23545         * c-decl.c (in_struct, struct_types): New static variables.
23546         (pushtag): Add loc parameter.  Change all callers.
23547         (lookup_tag): Add ploc parameter.  Change all callers.
23548         (check_compound_literal_type): New function.
23549         (parser_xref_tag): Add loc parameter.  Change all callers.  If
23550         -Wc++-compat, warn about struct/union/enum types defined within a
23551         struct or union.
23552         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
23553         and loc parameters.  Change all callers.  Change error calls to
23554         error_at, using loc.  For a redefinition, if the location of the
23555         original definition is known, report it.  Set in_struct and
23556         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
23557         (finish_struct): Add new parameters enclosing_in_struct and
23558         enclosing_struct_types.  Change all callers.  Set
23559         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
23560         in the struct.  If in a struct, add this struct to struct_types.
23561         (start_enum): Add loc parameter.  Change all callers.  Use
23562         error_at for errors, using loc.  For a redefinition, if the
23563         location of the original definition is known, report it.  If in a
23564         struct, add this enum type to struct_types.  If -Wc++-compat warn
23565         if in sizeof, typeof, or alignof.
23566         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
23567         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
23568         (c_parser_enum_specifier): Get enum location for start_enum.
23569         (c_parser_struct_or_union_specifier): Get struct location for
23570         start_struct.  Save in_struct and struct_types status between
23571         start_struct and finish_struct.
23572         (c_parser_cast_expression): Get location of cast.
23573         (c_parser_alignof_expression): Get location of type.
23574         (c_parser_postfix_expression): Likewise.
23575         (c_parser_postfix_expression_after_paren_type): Add type_loc
23576         parameter.  Change all callers.  Call check_compound_literal_type.
23577         Use type_loc for error about variable size type.
23578         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
23579         of an enum constant from an enum type defined in a struct or union.
23580         (c_cast_expr): Add loc parameter.  Change all callers.  If
23581         -Wc++-compat, warn about defining a type in a cast.
23582         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
23583         (start_enum, start_struct, finish_struct): Update declarations.
23584         (parser_xref_tag, c_cast_expr): Update declarations.
23585         (check_compound_literal_type): Declare.
23586
23587 2009-05-11  Ben Elliston  <bje@au.ibm.com>
23588
23589         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
23590         for recent libcpp interface change.
23591         (rs6000_macro_to_expand): Likewise.
23592
23593 2009-05-10  Michael Matz  <matz@suse.de>
23594
23595         PR target/40031
23596         * config/arm/arm.c (require_pic_register): Emit on entry edge,
23597         not at entry of function.
23598
23599 2009-05-10  Richard Guenther  <rguenther@suse.de>
23600
23601         PR tree-optimization/40081
23602         Revert
23603         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23604         using the main variant of the element type.  Do not fiddle with
23605         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23606
23607         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
23608         structs with volatile fields.
23609
23610 2009-05-10  Jan Hubicka  <jh@suse.cz>
23611
23612         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
23613         (estimate_move_cost): Assert that it does not get called for
23614         VOID_TYPE_P.
23615         (estimate_num_insns): Skip VOID types in argument handling.
23616         (optimize_inline_calls): Delete unreachable blocks and verify that
23617         callgraph is valid.
23618
23619 2009-05-10  Jan Hubicka  <jh@suse.cz>
23620
23621         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
23622         * cgraph.c (cgraph_mark_address_taken_node): New function.
23623         (dump_cgraph_node): Dump new flag.
23624         * cgraph.h (struct cgraph_node): Add address_taken.
23625         (cgraph_mark_address_taken_node): New function.
23626         * ipa.c (cgraph_postorder): Prioritize functions with address taken
23627         since new direct calls can be born.
23628
23629 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23630
23631         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
23632         tok->val.node.node.
23633
23634 2009-05-10  Jan Hubicka  <jh@suse.cz>
23635
23636         PR middle-end/40084
23637         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
23638         argument; rewrite.
23639         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
23640         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
23641         * tree-inline.c (copy_bb): Set frequency correctly.
23642         (fold_marked_statements): Update call to
23643         cgraph_update_edges_for_call_stmt.
23644
23645 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23646
23647         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
23648         identifiers in diagnostics.
23649         * config/arm/arm.c (arm_handle_fndecl_attribute,
23650         arm_handle_isr_attribute): Likewise.
23651         * config/avr/avr.c (avr_handle_progmem_attribute,
23652         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
23653         * config/bfin/bfin.c (handle_int_attribute,
23654         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
23655         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
23656         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
23657         Likewise.
23658         * config/darwin.c (darwin_handle_kext_attribute,
23659         darwin_handle_weak_import_attribute): Likewise.
23660         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
23661         h8300_handle_eightbit_data_attribute,
23662         h8300_handle_tiny_data_attribute): Likewise.
23663         * config/i386/i386.c (ix86_handle_cconv_attribute,
23664         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
23665         * config/i386/winnt.c (ix86_handle_shared_attribute,
23666         ix86_handle_selectany_attribute): Likewise.
23667         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
23668         * config/m32c/m32c.c (function_vector_handler): Likewise.
23669         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
23670         m68hc11_handle_fntype_attribute): Likewise.
23671         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
23672         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
23673         * config/mips/mips.c (mips_insert_attributes,
23674         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
23675         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
23676         rs6000_handle_struct_attribute): Likewise.
23677         * config/sh/sh.c (sh_insert_attributes,
23678         sh_handle_resbank_handler_attribute,
23679         sh_handle_interrupt_handler_attribute,
23680         sh2a_handle_function_vector_handler_attribute,
23681         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
23682         Likewise.
23683         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
23684         * config/spu/spu.c (spu_handle_fndecl_attribute,
23685         spu_handle_vector_attribute): Likewise.
23686         * config/stormy16/stormy16.c
23687         (xstormy16_handle_interrupt_attribute): Likewise.
23688         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
23689         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
23690
23691 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23692
23693         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
23694         (pp_translate_identifiers): New.
23695         (pp_identifier): Only conditionally translate identifier to locale
23696         character set.
23697         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
23698         (pp_base_tree_identifier): Only conditionally translate identifier
23699         to locale character set.
23700         * c-pretty-print.c (M_): Define.
23701         (pp_c_type_specifier, pp_c_primary_expression): Mark English
23702         fragments for conditional translation with M_.
23703         * tree-pretty-print.c (maybe_init_pretty_print): Disable
23704         identifier translation.
23705
23706 2009-05-10  Richard Guenther  <rguenther@suse.de>
23707
23708         PR tree-optimization/40081
23709         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23710         using the main variant of the element type.  Do not fiddle with
23711         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23712
23713 2009-05-09  Jan Hubicka  <jh@suse.cz>
23714
23715         PR middle-end/40080
23716         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
23717         indirect calls; verify cgraph afterwards.
23718
23719 2009-05-09  Jan Hubicka  <jh@suse.cz>
23720
23721         PR bootstrap/40082
23722         * ipa.c (update_inlined_to_pointer): New function.
23723         (cgraph_remove_unreachable_nodes): Use it.
23724
23725 2009-05-09  Jan Hubicka  <jh@suse.cz>
23726
23727         * tree-eh.c (struct leh_state): Remove prev_try.
23728         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
23729         not track prev_try.
23730         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
23731         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
23732         remove_eh_handler_and_replace, foreach_reachable_handler,
23733         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
23734         * except.h (struct eh_region): Remove eh_region_u_cleanup.
23735         (gen_eh_region_cleanup): Update prototype.
23736
23737 2009-05-09  Jan Hubicka  <jh@suse.cz>
23738
23739         PR middle-end/40043
23740         * except.c (copy_eh_region): Always set prev_try.
23741         (redirect_eh_edge_to_label): Find outer try.
23742         (foreach_reachable_handler): When looking for prev try
23743         handle case where previous try is not going to be taken.
23744
23745 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23746
23747         PR tree-optimization/40049
23748         * tree-vect-stmts.c (vectorizable_operation): If the machine has
23749         only vector/vector shifts, convert the type of the constant to the
23750         appropriate type to avoid building incorrect trees, which
23751         eventually have problems with garbage collection.
23752
23753 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23754
23755         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
23756         -1 for complex floating-point types if honoring signed zeros.
23757
23758 2009-05-08  Jan Hubicka  <jh@suse.cz>
23759
23760         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
23761         argument; handle correctly when profile is absent.
23762         (build_cgraph_edges): Update.
23763         (rebuild_cgraph_edges): Update.
23764         * cgraph.c: Do not include varray.h.
23765         (cgraph_set_call_stmt_including_clones): New function.
23766         (cgraph_create_edge_including_clones): Likewise
23767         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
23768         (cgraph_update_edges_for_call_stmt): Handle clones.
23769         (cgraph_remove_node): Handle clone tree.
23770         (cgraph_remove_node_and_inline_clones): New function.
23771         (dump_cgraph_node): Dump clone tree.
23772         (cgraph_clone_node): Handle clone tree.
23773         (clone_function_name): Bring here from tree-inline.c.
23774         (cgraph_create_virtual_clone): New function.
23775         * cgraph.h (ipa_replace_map): Move here from ipa.h.
23776         (cgraph_clone_info): New function.
23777         (strut cgraph_node): Add clone_info and new clone tree pointers.
23778         (cgraph_remove_node_and_inline_clones,
23779         cgraph_set_call_stmt_including_clones,
23780         cgraph_create_edge_including_clones,
23781         cgraph_create_virtual_clone): Declare.
23782         (cgraph_function_versioning): Use VEC argument.
23783         (compute_call_stmt_bb_frequency): Update prototype.
23784         (cgraph_materialize_all_clones): New function.
23785         * ipa-cp.c (ipcp_update_cloned_node): Remove.
23786         (ipcp_create_replace_map): Update to VECtors.
23787         (ipcp_update_callgraph): Use virtual clones.
23788         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
23789         (ipcp_update_profiling): Do not update local profiling.
23790         (ipcp_insert_stage): Use VECtors and virtual clones.
23791         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
23792         (clone_of_p): New function.
23793         (cgraph_preserve_function_body_p): Use clone tree.
23794         (cgraph_optimize): Materialize clones.
23795         (cgraph_function_versioning): Update for VECtors.
23796         (save_inline_function_body): Use clone tree.
23797         (cgraph_materialize_clone): New function.
23798         (cgraph_materialize_all_clones): Likewise.
23799         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
23800         * ipa.c: Include gimple.h.
23801         (cgraph_remove_unreachable_nodes): Use clone tree.
23802         * ipa-prop.c (ipa_note_param_call): Update call to
23803         compute_call_stmt_bb_frequencycall.
23804         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
23805         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
23806         (copy_bb): Handle updating of clone tree; add new edge when new call
23807         appears.
23808         (expand_call_inline): Be strict about every call having edge.
23809         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
23810         (delete_unreachable_blocks_update_callgraph): New function.
23811         (tree_function_versioning): Use VECtors; always remove unreachable
23812         blocks and fold conditionals.
23813         * tree-inline.h: Do not include varray.h.
23814         (tree_function_versioning): Remove.
23815         * Makefile.in (GTFILES): Remove tree-inline.c
23816         * passes.c (do_per_function): Do only functions having body.
23817         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
23818         tree.
23819
23820 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
23821             Andrew Morrow  <acm@google.com>
23822
23823         PR c/36892
23824         * c-common.c (c_common_attribute_table): Permit deprecated
23825         attribute to take an optional argument.
23826         (handle_deprecated_attribute): If the optional argument to
23827         __attribute__((deprecated)) is not a string ignore the attribute
23828         and emit a warning.
23829
23830         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
23831         * c-typeck.c (build_component_ref): Likewise.
23832         (build_external_ref): Likewise.
23833
23834         * toplev.c (warn_deprecated_use): Add an attribute argument.
23835         Emit the message associated with __attribute__((deprecated)).
23836
23837         * toplev.h (warn_deprecated_use): Updated.
23838
23839         * doc/extend.texi: Document new optional parameter to
23840         __attribute__((deprecated))
23841
23842 2009-05-08  Michael Eager <eager@eagercon.com>
23843
23844         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
23845         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
23846
23847 2009-05-08  Richard Guenther  <rguenther@suse.de>
23848
23849         PR tree-optimization/40062
23850         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
23851         Avoid exponential behavior.
23852
23853 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23854
23855         PR rtl-optimization/33928
23856         PR 26854
23857         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
23858         process_uses, build_single_def_use_links): New.
23859         (update_df): Update use_def_ref.
23860         (forward_propagate_into): Use get_def_for_use instead of use-def
23861         chains.
23862         (fwprop_init): Call build_single_def_use_links and let it initialize
23863         dataflow.
23864         (fwprop_done): Free use_def_ref.
23865         (fwprop_addr): Eliminate duplicate call to df_set_flags.
23866         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
23867         df_rd_simulate_one_insn): New.
23868         (df_rd_bb_local_compute_process_def): Update head comment.
23869         (df_chain_create_bb): Use the new RD simulation functions.
23870         * df.h (df_rd_simulate_artificial_defs_at_top,
23871         df_rd_simulate_one_insn): New.
23872         * opts.c (decode_options): Enable fwprop at -O1.
23873         * doc/invoke.texi (-fforward-propagate): Document this.
23874
23875 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23876
23877         PR c/24581
23878         * c-typeck.c (build_binary_op): Handle arithmetic between one real
23879         and one complex operand specially.
23880         * tree-complex.c (some_nonzerop): Do not identify a real value as
23881         zero if flag_signed_zeros.
23882
23883 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23884
23885         PR rtl-optimization/33928
23886         * loop-invariant.c (record_use): Fix && vs. || mishap.
23887
23888 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23889
23890         PR rtl-optimization/33928
23891         * loop-invariant.c (struct use): Add addr_use_p.
23892         (struct def): Add n_addr_uses.
23893         (struct invariant): Add cheap_address.
23894         (create_new_invariant): Set cheap_address.
23895         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
23896         (record_uses): Pass df_ref to record_use.
23897         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
23898         used only as such.
23899
23900 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
23901
23902         * config/sh/sh.c: Do not include c-pragma.h.
23903
23904 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23905
23906         * config/spu/spu.c: Remove include of c-common.h.
23907
23908 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
23909
23910         PR c/39037
23911         * c-common.h (mark_valid_location_for_stdc_pragma,
23912         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
23913         clear_float_const_decimal64, float_const_decimal64_p): New.
23914         * c.opt (Wunsuffixed-float-constants): New.
23915         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
23916         unsuffixed float constant, handle new warning.
23917         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
23918         * c-decl.c (c_scope): New flag float_const_decimal64.
23919         (set_float_const_decimal64, clear_float_const_decimal64,
23920         float_const_decimal64_p): New.
23921         (push_scope): Set new flag.
23922         * c-parser.c (c_parser_translation_unit): Mark when it's valid
23923         to use STDC pragmas.
23924         (c_parser_external_declaration): Ditto.
23925         (c_parser_compound_statement_nostart): Ditto.
23926         * c-pragma.c (valid_location_for_stdc_pragma,
23927         mark_valid_location_for_stdc_pragma,
23928         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
23929         handle_pragma_float_const_decimal64): New.
23930         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
23931         * cp/semantics.c (valid_location_for_stdc_pragma_p,
23932         set_float_const_decimal64, clear_float_const_decimal64,
23933         float_const_decimal64_p): New dummy functions.
23934         * doc/extend.texi (Decimal Float): Remove statement that the
23935         pragma, and suffix for double constants, are not supported.
23936         * doc/invoke.texi (Warning Options): List new option.
23937         (-Wunsuffixed-float-constants): New.
23938
23939 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
23940
23941         * config/i386/i386.c: Do not include c-common.h.
23942
23943 2009-05-07  Mark Heffernan  <meheff@google.com>
23944
23945         * doc/invoke.texi (Debugging Options): Document change of debugging
23946         dump location.
23947         * opts.c (decode_options): Make dump_base_name relative to
23948         aux_base_name directory.
23949
23950 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
23951
23952         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
23953         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
23954
23955 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
23956
23957         * Makefile.in (install-plugin): Simplify a bit.
23958
23959 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
23960
23961         * Makefile.in (OBJS-common): Add regcprop.o.
23962         (regcprop.o): New.
23963         * timevar.def (TV_CPROP_REGISTERS): New.
23964         * regrename.c (regrename_optimize): Return 0.
23965         (rest_of_handle_regrename): Delete.
23966         (pass_rename_registers): Point to regrename_optimize.
23967         (struct value_data_entry, struct value_data,
23968         kill_value_one_regno, kill_value_regno, kill_value,
23969         set_value_regno, init_value_data, kill_clobbered_value,
23970         kill_set_value, kill_autoinc_value, copy_value,
23971         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
23972         replace_oldest_value_reg, replace_oldest_value_addr,
23973         replace_oldest_value_mem, copyprop_hardreg_forward_1,
23974         debug_value_data, validate_value_data): Move...
23975         * regcprop.c: ... here.
23976         (rest_of_handle_cprop): Delete.
23977         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
23978
23979 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
23980
23981         PR middle-end/40057
23982         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
23983         GEN_INT for 1 << bitnum.
23984         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
23985         build_int_cst_type.
23986
23987 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
23988
23989         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
23990         Remove wrong description of "nand" operation.
23991
23992 2009-05-06  Richard Guenther  <rguenther@suse.de>
23993             Adam Nemet  <anemet@caviumnetworks.com>
23994
23995         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
23996         comment.  Add that if LHS is not a gimple register, then RHS1 has
23997         to be a single object (GIMPLE_SINGLE_RHS).
23998
23999 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
24000
24001         * expr.c (get_def_for_expr): Move it up in the file.
24002         (store_field): When expanding a bit-field store, look at the
24003         defining gimple stmt for the masking conversion.
24004
24005 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
24006
24007         PR middle-end/39986
24008         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
24009         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
24010         32-bit memcpy into long.
24011
24012 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
24013
24014         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
24015         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
24016         new_reg_loc_descr.
24017         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
24018         instead of appending DW_OP_deref*.
24019
24020 2009-05-06  Michael Matz  <matz@suse.de>
24021
24022         PR middle-end/40021
24023         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
24024         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
24025
24026 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
24027
24028         * Makefile.in (install-plugin): Fix srcdir handling.
24029
24030 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
24031
24032         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
24033         when processing for not_regs_needed bitmap.
24034         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
24035         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
24036         handling it for rhs.
24037
24038 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
24039
24040         * config/i386/i386.md (unnamed inc/dec peephole): Use
24041         optimize_insn_for_size_p instead of optimize_size.
24042         * config/i386/predicates.md (incdec_operand): Likewise.
24043         (aligned_operand): Likewise.
24044         * config/i386/sse.md (divv8sf3): Likewise.
24045         (sqrtv8sf2): Likewise.
24046
24047 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
24048
24049         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
24050
24051         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
24052
24053 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
24054
24055         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
24056         ssemodesuffixf2c with avxmodesuffixf2c.
24057
24058 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
24059
24060         PR c/40032
24061         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
24062
24063 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
24064
24065         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
24066         (struct tree_base): Adjust spacing for 8 bit boundaries.
24067         (struct tree_decl_common): Add decl_by_reference_flag bit.
24068         (DECL_BY_REFERENCE): Adjust.
24069         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
24070         print DECL_BY_REFERENCE bit.
24071         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
24072         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
24073         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
24074         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
24075         unconditionally.
24076
24077         PR middle-end/39666
24078         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
24079         range of the type, but default label is missing, add it with one
24080         of the existing labels instead of adding a new label for it.
24081
24082 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
24083
24084         * dwarf.h: Remove.
24085
24086 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
24087
24088         * Makefile.in (enable_plugin, plugin_includedir): New.
24089         (install): Depend on install-plugin.
24090         (PLUGIN_HEADERS): New.
24091         (install-plugin): New.
24092         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
24093
24094 2009-05-05  Richard Guenther  <rguenther@suse.de>
24095
24096         PR tree-optimization/40022
24097         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
24098         the only vuse.
24099         (phivn_valid_p): Fix tuplification error, simplify.
24100         (phiprop_insert_phi): Add dumps.
24101         (propagate_with_phi): Simplify.
24102
24103 2009-05-05  Richard Guenther  <rguenther@suse.de>
24104
24105         PR middle-end/40023
24106         * builtins.c (gimplify_va_arg_expr): Properly build the address.
24107
24108 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
24109
24110         * tree.h (strip_float_extensions): Remove duplicate declaration.
24111         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
24112         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
24113         block_ultimate_origin): Rearrange the declarations line to match the
24114         comment that indicates the .c file which the functions are defined.
24115         (dwarf2out_*, set_decl_rtl): Add comment.
24116         (get_base_address): Adjust comment.
24117         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
24118         declarations line and add comment.
24119         (is_builtin_name): Add blank after function name, for clarity.
24120
24121 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
24122
24123         * attribs.c (decl_attributes): Use %qE for identifiers in
24124         diagnostics.
24125         * cgraphunit.c (verify_cgraph_node): Translate function names to
24126         locale character set in diagnostics.
24127         * coverage.c (get_coverage_counts): Use %qE for identifiers in
24128         diagnostics.
24129         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
24130         Document that functions are named in UTF-8.
24131         * expr.c (expand_expr_real_1): Translate function names to locale
24132         character set in diagnostics.
24133         * gimplify.c (omp_notice_variable, omp_is_private,
24134         gimplify_scan_omp_clauses): Use %qE for identifiers in
24135         diagnostics.
24136         * langhooks.c (lhd_print_error_function): Translate function names
24137         to locale character set.
24138         * langhooks.h (decl_printable_name): Document that return value is
24139         in internal character set.
24140         * stmt.c: Include pretty-print.h
24141         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
24142         diagnostics.
24143         (resolve_operand_name_1): Translate named operand name to locale
24144         character set.
24145         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
24146         diagnostics.
24147         * toplev.c (announce_function): Translate function names to locale
24148         character set.
24149         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
24150         (default_tree_printer): Use pp_identifier or translate identifiers
24151         to locale character set.  Mark "<anonymous>" for translation.
24152         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
24153         for identifiers in diagnostics.
24154         * tree.c (handle_dll_attribute): Use %qE for identifiers in
24155         diagnostics.
24156         * varasm.c (output_constructor): Use %qE for identifiers in
24157         diagnostics.
24158
24159 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
24160
24161         * configure.ac: use ` ` instead of $()
24162         * configure: Regenerate.
24163
24164 2009-05-05  Ben Elliston  <bje@au.ibm.com>
24165
24166         * config/pa/linux-atomic.c: Eliminate conditional include of
24167         errno.h on non-LP64 systems to simplify build requirements.
24168
24169 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
24170
24171         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
24172         diagnostics.
24173         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
24174         and pass value to identifier_to_locale.
24175         (warn_variable_length_array): Make name a tree.
24176         (grokdeclarator): Separate diagnostic texts for named and unnamed
24177         declarators.  Use %qE for named declarators.
24178         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
24179         diagnostics.
24180         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
24181         identifiers in diagnostics.
24182         * c-typeck.c (push_member_name, start_init): Pass identifiers to
24183         identifier_to_locale.  Mark "anonymous" strings for translation.
24184
24185 2009-05-04  Michael Eager <eager@eagercon.com>
24186
24187         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
24188         address for DImode/DFmode only if double-precision FP regs.
24189
24190 2009-05-04  Michael Eager <eager@eagercon.com>
24191
24192         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
24193         TARGET_SINGLE_FLOAT check.
24194
24195 2009-05-04  Michael Eager <eager@eagercon.com>
24196
24197         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
24198
24199 2009-05-04  Michael Eager <eager@eagercon.com>
24200
24201         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
24202         * config/rs6000/t-xilinx: New
24203
24204 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
24205
24206         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
24207         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
24208         * gcc/explow.c (memory_address): Use target hook.
24209         * gcc/targhooks.c (default_legitimize_address): New.
24210         * gcc/targhooks.h (default_legitimize_address): New.
24211         * gcc/target.h (legitimize_address): New.
24212         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
24213         (TARGET_INITIALIZER): Include it.
24214         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
24215
24216         * config/bfin/bfin-protos.h (legitimize_address): Remove.
24217         * config/bfin/bfin.c (legitimize_address): Remove.
24218         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
24219         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
24220         Remove.
24221         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
24222         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
24223
24224         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
24225         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
24226         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
24227         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
24228         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
24229         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
24230         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
24231         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
24232         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
24233         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
24234         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
24235         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
24236         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
24237         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
24238         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
24239         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
24240         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
24241         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
24242         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
24243         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
24244         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
24245         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
24246         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
24247
24248         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
24249         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
24250         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
24251         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
24252         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
24253         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
24254         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
24255         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
24256         (thumb_legitimize_address): Delete.
24257         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
24258         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
24259         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
24260         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
24261         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
24262         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
24263         Delete.
24264         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
24265         Delete.
24266
24267         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
24268         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
24269         * config/m32r/m32r.c (m32r_legitimize_address): New.
24270         * config/m68k/m68k.c (m68k_legitimize_address): New.
24271         * config/score/score.c (score_legitimize_address): Standardize.
24272         * config/score/score3.c (score3_legitimize_address): Standardize.
24273         * config/score/score3.h (score3_legitimize_address): Adjust.
24274         * config/score/score7.c (score7_legitimize_address): Standardize.
24275         * config/score/score7.h (score7_legitimize_address): Adjust.
24276         * config/sh/sh.c (sh_legitimize_address): New.
24277         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
24278
24279         * gcc/config/s390/s390.c (legitimize_address): Rename to...
24280         (s390_legitimize_address): ... this.
24281         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
24282         (sparc_legitimize_address): ... this.
24283         * gcc/config/i386/i386.c (legitimize_address): Rename to...
24284         (ix86_legitimize_address): ... this.
24285         * gcc/config/avr/avr.c (legitimize_address): Rename to...
24286         (avr_legitimize_address): ... this.
24287         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
24288         (mn10300_legitimize_address): ... this.
24289         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
24290         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
24291         (alpha_expand_mov): Adjust call.
24292
24293         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
24294         * config/spu/spu.c (spu_legitimize_address): Likewise.
24295         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
24296         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
24297
24298 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
24299
24300         * intl.c (locale_encoding, locale_utf8): New.
24301         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
24302         * intl.h (locale_encoding, locale_utf8): Declare.
24303         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
24304         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
24305         New.
24306         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
24307         argument.
24308         (pp_tree_identifier): Define to call pp_base_tree_identifier.
24309         (pp_base_tree_identifier): Declare as function.
24310         (identifier_to_locale): Declare.
24311         * Makefile.in (pretty-print.o): Update dependencies.
24312         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
24313
24314 2009-05-04  Richard Guenther  <rguenther@suse.de>
24315
24316         PR middle-end/40015
24317         * builtins.c (fold_builtin_memory_op): Do not decay to element
24318         type if the size matches the whole array.
24319
24320 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
24321
24322         * expmed.c (synth_mult): When trying out a shift, pass the result
24323         of a signed shift.
24324
24325 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
24326
24327         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
24328         (shiftsub1_cost): New.
24329         (init_expmed): Compute shiftsub1_cost.
24330         (synth_mult): Optimize multiplications by constants of the form
24331         -(2^^m-1) for some constant positive integer m.
24332
24333 2009-05-03  Richard Guenther  <rguenther@suse.de>
24334
24335         PR c/39983
24336         * c-typeck.c (array_to_pointer_conversion): Do not built
24337         ADDR_EXPRs of arrays of pointer-to-element type.
24338         * c-gimplify.c (c_gimplify_expr): Revert change fixing
24339         up wrong ADDR_EXPRs after-the-fact.
24340         * c-common.c (strict_aliasing_warning): Strip pointer
24341         conversions for obtaining the original type.
24342         * builtins.c (fold_builtin_memset): Handle array types.
24343         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
24344         and array types
24345
24346 2009-05-03  Richard Guenther  <rguenther@suse.de>
24347
24348         PR middle-end/23329
24349         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
24350         Do not lose casts from array types with unknown extent to array
24351         types with known extent.
24352         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
24353         alias set compatibility.
24354
24355 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24356
24357         * flags.h (extra_warnings): Delete.
24358         * toplev.c (process_options): Handle Wuninitialized here.
24359         * opts.c (extra_warnings): Delete.
24360         (set_Wextra): Delete.
24361         (common_handle_option): -Wextra can be handled automatically.
24362         * c-opts.c (c_common_handle_option): Delete obsolete code.
24363         (c_common_post_options): Simplify comment.
24364         * common.opt (W): Add Var.
24365         (Wextra): Add Var.
24366         (Wuninitialized): Initialize to -1.
24367
24368 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
24369             Richard Guenther  <rguenther@suse.de>
24370
24371         * expr.c (get_def_for_expr): New function.
24372         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
24373         SSA rather than trees.
24374         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
24375         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
24376
24377 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
24378
24379         * c-common.c (reswords): Add _Imaginary.
24380         * c-common.c (enum rid): Add RID_IMAGINARY.
24381
24382 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
24383
24384         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
24385         Patch by Richard Guenther.
24386
24387 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
24388
24389         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
24390         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
24391         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
24392         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
24393         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
24394         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
24395         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
24396         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
24397         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
24398         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
24399         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
24400         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
24401         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
24402         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
24403         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
24404         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
24405         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
24406         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
24407
24408 2009-05-02  Richard Guenther  <rguenther@suse.de>
24409
24410         PR tree-optimization/39940
24411         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
24412         doing so.
24413
24414 2009-05-02  Richard Guenther  <rguenther@suse.de>
24415
24416         PR middle-end/40001
24417         * tree-ssa.c (execute_update_addresses_taken): Properly check
24418         if we can mark a variable DECL_GIMPLE_REG_P.
24419         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
24420         back to the end of the function.
24421         (is_gimple_reg_type): Remove complex type special casing.
24422         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
24423         if not optimizing.
24424
24425 2009-05-02  Ben Elliston  <bje@au.ibm.com>
24426
24427         * doc/collect2.texi (Collect2): Document search path behaviour
24428         when configured with --with-ld.
24429
24430 2009-05-02  Jan Hubicka  <jh@suse.cz>
24431
24432         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
24433         parameter; update callers.
24434         (coalesce_cost_edge): EH edges are costier because they needs
24435         splitting even if not critical and even more costier when there are
24436         multiple EH predecestors.
24437
24438 2009-05-02  Jan Hubicka  <jh@suse.cz>
24439
24440         * except.c (remove_eh_handler_and_replace): Handle updating after
24441         removing TRY blocks.
24442
24443 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
24444
24445         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
24446
24447 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
24448
24449         * varasm.c: Do not include c-pragma.h.
24450         * attribs.c: Do not incude c-common.h.
24451
24452 2009-05-01  Michael Matz  <matz@suse.de>
24453
24454         * calls.c (initialize_argument_information): Handle SSA names like
24455         decls with a non MEM_P DECL_RTL.
24456
24457 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24458
24459         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
24460         * ipa-utils.c: Likewise.
24461         * ipa-type-escape.c: Likewise.
24462         * cgraphunit.c Do not include c-common.h.
24463         * ipa-pure-const.c: Likewise.
24464         * tree-if-conv.c: Likewise.
24465         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
24466         * ipa-struct-reorg.c: Likewise.
24467         * tree-nomudflap.c: Likewise.
24468         * tree-ssa-structalias.c: Likewise.
24469
24470 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24471
24472         * store-motion.c: Many cleanups to make this pass a first-class
24473         citizen instead of an appendix to gcse load motion.  Add TODO list
24474         to make this pass faster/cleaner/better.
24475
24476         (struct ls_expr): Post gcse.c-split cleanups.
24477         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
24478         "stores" field to "avail_stores".
24479         (pre_ldst_mems): Rename to store_motion_mems.
24480         (pre_ldst_table): Rename to store_motion_mems_table.
24481         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
24482         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
24483         (ldst_entry): Rename to st_expr_entry, update users.
24484         (free_ldst_entry): Rename to free_st_expr_entry, update users.
24485         (free_ldst_mems): Rename to free_store_motion_mems, update users.
24486         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
24487         update caller.
24488         (first_ls_expr): Rename to first_st_expr, update users.
24489         (next_ls_expr): Rename to next_st_expr, update users.
24490         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
24491         fields properly for store motion instead of names inherited from load
24492         motion in gcse.c.
24493         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
24494         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
24495         are done with it.
24496
24497         (ae_kill): Rename to st_kill, update users.
24498         (ae_gen): Rename to st_avloc, update users.
24499         (transp): Rename to st_transp, update users.
24500         (pre_insert_map): Rename to st_insert_map, update users.
24501         (pre_delete_map): Rename to st_delete_map, update users.
24502         (insert_store, build_store_vectors, free_store_memory,
24503         one_store_motion_pass): Update for abovementioned changes.
24504
24505         (gcse_subst_count, gcse_create_count): Remove.
24506         (one_store_motion_pass): New statistics counters "n_stores_deleted"
24507         and "n_stores_created", local variables.
24508
24509         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
24510         use for_each_rtx.
24511
24512         (regvec, compute_store_table_current_insn): Remove.
24513         (reg_set_info, reg_clear_last_set): Remove.
24514         (compute_store_table): Use DF caches instead of local dataflow
24515         solvers.
24516
24517 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
24518
24519         * c-objc-common.c (c_tree_printer): Print identifiers with
24520         pp_identifier, not pp_string.  Mark "({anonymous})" for
24521         translation.
24522         * c-pretty-print.c (pp_c_ws_string): New.
24523         (pp_c_cv_qualifier, pp_c_type_specifier,
24524         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
24525         pp_c_storage_class_specifier, pp_c_function_specifier,
24526         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
24527         pp_c_primary_expression, pp_c_postfix_expression,
24528         pp_c_unary_expression, pp_c_shift_expression,
24529         pp_c_relational_expression, pp_c_equality_expression,
24530         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
24531         use pp_string and pp_c_ws_string in place of pp_identifier and
24532         pp_c_identifier for non-identifiers.  Mark English strings for
24533         translation.
24534         * c-pretty-print.h (pp_c_ws_string): Declare.
24535
24536 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
24537             Roland McGrath <roland@redhat.com>
24538
24539         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
24540         (ENABLE_LD_BUILDID): New configuration option.
24541         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
24542         (LINK_BUILDID_SPEC): New macro.
24543         (init_spec): If defined, prepend it between LINK_EH_SPEC and
24544         link_spec.
24545         * doc/install.texi: Document --enable-linker-build-id option.
24546         * configure: Rebuild.
24547         * config.in: Rebuild.
24548
24549 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
24550
24551         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
24552         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
24553         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
24554         MIPS_GP_SAVE_AREA_SIZE.
24555         * config/mips/mips.c (struct mips_frame_info): Update comment
24556         before arg_pointer_offset and hard_frame_pointer_offset.
24557         (mips_compute_frame_info): Update diagram before function: to
24558         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
24559         indicate the position of frame_pointer_rtx with -fstack-protector and
24560         to show args_size.  Don't allocate cprestore area for leaf functions
24561         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
24562         cprestore_size.
24563         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
24564
24565 2009-04-30  Michael Matz  <matz@suse.de>
24566
24567         PR tree-optimization/39955
24568         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
24569
24570 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
24571
24572         * ira.c (setup_cover_and_important_classes):  Use safe macro
24573         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
24574         directly.
24575         * genpreds.c (write_tm_preds_h):  Output suitable definition of
24576         REG_CLASS_FOR_CONSTRAINT.
24577
24578 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24579
24580         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
24581         instead of an int.
24582         * bitmap.c (bitmap_descriptor): Likewise.
24583         * ggc-common.c (loc_descriptor): Likewise.
24584         * varray.c (varray_descriptor): Likewise.
24585         * vec.c (vec_descriptor): Likewise.
24586
24587 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
24588
24589         * Makefile.in (dce.o): Add $(EXCEPT_H).
24590         * dce.c: Include except.h and delete redundant vector definitions.
24591         (deletable_insn_p): Return false for non-call insns that can throw
24592         if DF is running.
24593
24594 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
24595
24596         * gcse.c (ae_gen): Remove.
24597         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
24598         and make non-static function to make it available in store-motion.c.
24599         Update call sites with search-and-replace.
24600         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
24601         extract_mentioned_regs, extract_mentioned_regs_helper,
24602         find_moveable_store, compute_store_table, load_kills_store, find_loads,
24603         store_killed_in_insn, store_killed_after, store_killed_before,
24604         build_store_vectors, insert_insn_start_basic_block, insert-store,
24605         remove_reachable_equiv_notes, replace_store_insn, delete_store,
24606         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
24607         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
24608         * store-motion.c: ...new file.  Also copy data structures from gcse.c
24609         and clean up to remove parts not used by store motion.
24610         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
24611         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
24612
24613 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24614
24615         PR target/38571
24616         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
24617         when optimizing for size.
24618
24619 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
24620
24621         * gcse.c (gcse_constant_p): Fix typo in last change.
24622
24623 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24624
24625         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
24626
24627 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
24628
24629         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
24630
24631 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
24632
24633         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
24634         CONST_HIGH_PART result.
24635
24636 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
24637
24638         * config/avr/avr.c (initial_elimination_offset): Rename to
24639         avr_initial_elimination_offset.
24640         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
24641         change return type to bool.
24642         (avr_can_eliminate): New function.
24643         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
24644         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
24645         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
24646         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
24647         avr_initial_elimination_offset.
24648         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
24649         (avr_initial_elimination_offset): Define.
24650
24651 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
24652             Steven Bosscher  <steven@gcc.gnu.org>
24653
24654         PR rtl-optimization/39938
24655         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
24656         * cfgrtl.c: Include insn-attr.h.
24657         (rest_of_pass_free_cfg): New function.
24658         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
24659         * resource.c (init_resource_info): Remove call to df_analyze.
24660
24661 2009-04-29  Richard Guenther  <rguenther@suse.de>
24662
24663         PR target/39943
24664         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
24665         allow conversion to signed integers.
24666
24667 2009-04-29  Richard Guenther  <rguenther@suse.de>
24668
24669         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
24670         shifts of floating point vectors if the shift amount is
24671         a constant multiple of the element size.
24672
24673 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
24674             Michael Matz  <matz@suse.de>
24675
24676         PR middle-end/39927
24677         PR bootstrap/39929
24678         * tree-outof-ssa.c (emit_partition_copy): New function.
24679         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
24680         insert_part_to_rtx_on_edge): Perform the partition base var
24681         copy using emit_partition_copy.
24682         (insert_value_copy_on_edge): Convert constants to the right mode.
24683         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
24684         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
24685
24686 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24687
24688         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
24689         scan backwards to try to find a constant to initialize it.
24690
24691         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
24692         insn before the loop_end instruction, don't look past labels.
24693
24694 2009-04-29  Richard Guenther  <rguenther@suse.de>
24695
24696         PR middle-end/39937
24697         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
24698         loose type conversions.
24699         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
24700         stmts only if there are no uses of its definition.
24701
24702 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24703
24704         * config/bfin/bfin.h (splitting_loops): Declare.
24705         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
24706         Reorder bit definitions to be ascending.
24707         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
24708         * config/bfin/bfin.c (splitting_loops): New variable.
24709         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
24710         (struct loop_info): Remove members INIT and LOOP_INIT.
24711         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
24712         the LSETUP sequence.  Allow LC to be loaded from any register, but
24713         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
24714         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
24715         set to 1.
24716         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
24717         of reload_completed.
24718
24719         From Jie Zhang:
24720         * config/bfin/bfin.md (movsi_insn): Refine constraints.
24721
24722 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
24723
24724         * Makefile.in (PLUGIN_VERSION_H): New.
24725         (OBJS-common): Remove plugin-version.o.
24726         (plugin.o): Depend on (PLUGIN_VERSION_H).
24727         (plugin-version.o): Remove.
24728         * configure: Regenerate
24729         * configure.ac: Create plugin-version.h.
24730         * gcc-plugin.h (plugin_gcc_version): Remove.
24731         (plugin_default_version_check): Change signature.
24732         * plugin-version.c: Remove.
24733         * plugin.c: Include plugin-version.h.
24734         (str_plugin_gcc_version_name): Remove.
24735         (try_init_one_plugin): Pass gcc version to plugin_init.
24736         (plugin_default_version_check): Both gcc and plugin versions are now
24737         arguments.
24738
24739 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24740
24741         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
24742         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
24743         Remove special case testing for last insn of inner loops. Don't fail
24744         if the loop ends with a jump, emit an extra nop instead.
24745
24746         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
24747         DREGS rather than comparing directly.  Remove code that tries to
24748         account for latencies.
24749
24750 2009-04-29  Richard Guenther  <rguenther@suse.de>
24751
24752         PR tree-optimization/39941
24753         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
24754         eliminating an indirect call.
24755
24756 2009-04-29  Richard Guenther  <rguenther@suse.de>
24757
24758         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
24759         parameter.  Allow invariants as base if !require_lvalue.
24760         (verify_gimple_assign_single): Adjust.
24761
24762 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24763
24764         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
24765         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
24766         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
24767         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
24768         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
24769         a VEC_SELECT.
24770         * config/bfin/bfin.c (bfin_expand_builtin,
24771         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
24772
24773 2009-04-28  Richard Guenther  <rguenther@suse.de>
24774
24775         * tree-vect-loop.c (get_initial_def_for_induction): Use
24776         correct types for pointer increment.
24777
24778 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24779
24780         * toplev.c (print_version): Update GMP version string calculation.
24781
24782 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
24783
24784         PR rtl-optimization/39938
24785         * resource.c (init_resource_info): Add call to df_analyze.
24786
24787 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24788
24789         * config/alpha/alpha.md (usegp): Cast the result of
24790         alpha_find_lo_sum_using_gp to enum attr_usegp.
24791         * config/alpha/alpha.c (override_options): Remove end-of-structure
24792         marker element from cpu_table.  Use array size of cpu_table to handle
24793         -mcpu and -mtune options.
24794         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
24795
24796 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
24797
24798         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
24799         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
24800         tune_32 and tune_64.
24801         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
24802         support on PowerPC.
24803         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
24804         * config/rs6000/option-defaults.h: ... here.  New file.
24805         (OPT_64, OPT_32): Define.
24806         (MASK_64BIT): Define to 0 if not already defined.
24807         (OPT_ARCH64, OPT_ARCH32): Define.
24808         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
24809         and tune_64.
24810
24811 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24812
24813         * config/arm/arm.c (arm_override_options): Emit error on using
24814         fpa with AAPCS.
24815
24816 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24817
24818         PR rtl-optimization/39914
24819         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24820         registers for allocnos created from user-defined variables only
24821         when not optimizing.
24822
24823 2009-04-28  Richard Guenther  <rguenther@suse.de>
24824
24825         PR middle-end/39937
24826         * fold-const.c (fold_binary): Use distribute_real_division only
24827         on float types.
24828
24829 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
24830
24831         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
24832         add hpux-stdint.h to tm_file.
24833         (hppa[12]*-*-hpux11*): Ditto.
24834         (ia64*-*-hpux*): Ditto.
24835         * config/hpux-stdint.h: New.
24836         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
24837         __STDC_EXT__ for all compiles.
24838         * config/pa/pa-hpux.h: Ditto.
24839         * config/pa/pa-hpux10.h: Ditto.
24840         * config/pa/pa-hpux11.h: Ditto.
24841
24842 2009-04-28  Catherine Moore  <clm@codesourcery.com>
24843
24844         * debug.h (set_name): Add comment.
24845
24846 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
24847
24848         PR target/39929
24849         * config/darwin.c (machopic_gen_offset): Check
24850         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
24851         * config/arm/arm.c (require_pic_register): Likewise.
24852
24853 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
24854
24855         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
24856         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
24857         m32c_promote_prototypes): Delete.
24858
24859 2009-04-28  Michael Matz  <matz@suse.de>
24860
24861         PR middle-end/39922
24862         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
24863         constants.
24864
24865 2009-04-28  Richard Guenther  <rguenther@suse.de>
24866
24867         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
24868
24869 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24870
24871         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
24872         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
24873         * config/arm/arm-tune.md: Regenerate.
24874
24875 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
24876
24877         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
24878         block if there are complex incoming edges.
24879         (sel_merge_blocks): Remove useless assert.
24880         (sel_redirect_edge_and_branch): Check that edge was redirected.
24881         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
24882         (sel_find_rgns): Delete declaration.
24883         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
24884         the region when it is not a preheader.
24885
24886 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24887
24888         PR c/39323
24889         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
24890
24891 2009-04-28  Richard Guenther  <rguenther@suse.de>
24892
24893         * tree.h (SSA_NAME_VALUE): Remove.
24894         (struct tree_ssa_name): Remove value_handle member.
24895         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
24896         array for jump threading.
24897         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
24898         SSA_NAME_VALUEs.
24899         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
24900         * tree-flow.h (threadedge_initialize_values): Declare.
24901         (threadedge_finalize_values): Likewise.
24902         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
24903         (SSA_NAME_VALUE): Define.
24904         (threadedge_initialize_values): New function.
24905         (threadedge_finalize_values): Likewise.
24906         * tree-ssa-dom.c (ssa_name_values): New global variable.
24907         (SSA_NAME_VALUE): Define.
24908         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
24909
24910 2009-04-28  Ira Rosen  <irar@il.ibm.com>
24911
24912         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
24913         Use REPORT_VECTORIZED_LOCATIONS instead
24914         REPORT_VECTORIZED_LOOPS.
24915         * tree-vectorizer.c (vect_verbosity_level): Make static.
24916         (vect_loop_location): Rename to vect_location.
24917         (vect_set_verbosity_level): Update comment.
24918         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
24919         and vect_location.
24920         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
24921         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
24922         instead REPORT_UNVECTORIZED_LOOPS.
24923         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
24924         and vect_loop_def to vect_external_def and vect_internal_def.
24925         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
24926         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
24927         REPORT_UNVECTORIZED_LOCATIONS.
24928         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
24929         and vect_used_in_loop and to vect_unused_in_scope and
24930         vect_used_in_scope.
24931         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
24932         (vect_verbosity_level): Remove declaration.
24933         (vect_analyze_operations): Likewise.
24934         (vect_analyze_stmt): Declare.
24935         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
24936         REPORT_UNVECTORIZED_LOCATIONS.
24937         (vect_get_loop_niters): Fix indentation.
24938         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
24939         (vect_analyze_loop_operations): New function.
24940         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
24941         vect_analyze_operations.
24942         (vect_is_simple_reduction): Use new names.
24943         (vectorizable_live_operation, vect_transform_loop): Likewise.
24944         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
24945         to specify whether the data references can be a part of interleaving
24946         chain.
24947         (vect_analyze_data_ref_dependence): Use new names.
24948         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
24949         (vect_create_addr_base_for_vector_ref): Remove redundant code.
24950         * tree-vect-patterns.c (widened_name_p): Use new names.
24951         (vect_recog_dot_prod_pattern): Likewise.
24952         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
24953         (process_use, vect_mark_stmts_to_be_vectorized,
24954         vect_model_simple_cost, vect_model_store_cost,
24955         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
24956         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
24957         vectorizable_operation, vectorizable_type_demotion,
24958         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
24959         vectorizable_condition): Likewise.
24960         (vect_analyze_operations): Split into vect_analyze_loop_operations
24961         and ...
24962         (vect_analyze_stmt): ... new function.
24963         (new_stmt_vec_info): Use new names.
24964         (vect_is_simple_use): Use new names and fix comment.
24965         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
24966         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
24967
24968 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24969
24970         PR target/39911
24971         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
24972         and integer modes for x87 operands.  Do not ICE for unsupported size,
24973         generate error instead.  Generate error for unsupported operand types.
24974         ['z']: Do not handle HImode memory operands specially.  Warning
24975         for floating-point operands.  Fallthru to 'Z' for unsupported operand
24976         types.  Do not ICE for unsupported size, generate error instead.
24977         (output_387_binary_op): Use %Z to output operands.
24978         (output_fp_compare): Ditto.
24979         (output_387_reg_move): Ditto.
24980
24981 2009-04-28  Ben Elliston  <bje@au.ibm.com>
24982
24983         PR c++/35652
24984         Revert:
24985
24986         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24987
24988         * builtins.c (c_strlen): Do not warn here.
24989         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
24990         * c-common.c (pointer_int_sum): Take an explicit location.
24991         Warn about offsets out of bounds.
24992         * c-common.h (pointer_int_sum): Adjust declaration.
24993
24994 2009-04-27  Ian Lance Taylor  <iant@google.com>
24995
24996         * collect2.c (is_ctor_dtor): Change type of ret field in struct
24997         names to symkind.
24998         * dce.c (run_fast_df_dce): Change type of old_flags to int.
24999         * df-core.c (df_set_flags): Change return type to int.  Change
25000         type of old_flags to int.
25001         (df_clear_flags): Likewise.
25002         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
25003         (df_get_conditional_uses): Likewise.
25004         * df.h (df_set_flags, df_clear_flags): Update declarations.
25005         * dwarf2out.c (struct indirect_string_node): Change type of form
25006         field to enum dwarf_form.
25007         (AT_string_form): Change return type to enum dwarf_form.
25008         * fixed-value.c (fixed_compare): Add cast to enum type.
25009         * fwprop.c (update_df): Change 0 to VOIDmode.
25010         * gensupport.c: Change 0 to UNKNOWN.
25011         * gimple.h (gimple_cond_code): Add cast to enum type.
25012         * haifa-sched.c (reemit_notes): Add cast to enum type.
25013         * hooks.c (hook_int_void_no_regs): Remove function.
25014         * hooks.h (hook_int_void_no_regs): Remove declaration.
25015         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
25016         * predict.c (combine_predictions_for_insn): Add casts to enum type.
25017         * real.c (real_arithmetic): Add cast to enum type.
25018         (real_compare): Likewise.
25019         * target.h (struct gcc_target): Change return type of
25020         branch_target_register_class to enum reg_class.
25021         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
25022         default_branch_target_register_class.
25023         * targhooks.c (default_branch_target_register_class): New function.
25024         * targhooks.h (default_branch_target_register_class): Declare.
25025         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
25026         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
25027         cast to int.
25028         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
25029         ERROR_MARK.
25030         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
25031         vect_uninitialized_def.  Change 0 to ERROR_MARK.
25032         * tree-vect-stmts.c (supportable_widening_operation): Don't
25033         initialize icode1 and icode2.
25034         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
25035         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
25036         and to STD_C89.
25037         (cmn_err_flag_specs): Change 0 to STD_C89.
25038         (cmn_err_char_table): Likewise.
25039         * config/arm/arm.c (get_arm_condition_code): Change type of code
25040         to enum arm_cond_code.
25041         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
25042         (IWMMXT_BUILTIN2): Likewise.
25043         (neon_builtin_type_bits): Don't define typedef.
25044         (neon_builtin_datum): Change type of bits field to int.
25045         (arm_expand_neon_args): Add cast to enum type.
25046         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
25047         TLS_MODEL_NONE.
25048         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
25049         casts to enum type.
25050         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
25051         MIPS_FP_COND_f.
25052         * config/mips/mips.md (jal_macro): Return enum constant.
25053         (single_insn): Likewise.
25054         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
25055         CODE_FOR_nothing.
25056         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
25057         casts to enum type.
25058         * config/s390/s390.c (s390_tune_flags): Change type to int.
25059         (s390_arch_flags): Likewise.
25060         (s390_handle_arch_option): Change flags field of struct pta to int.
25061         * config/s390/s390.h (s390_tune_flags): Update declaration.
25062         (s390_arch_flags): Likewise.
25063         * config/sh/sh.c (prepare_move_operands): Compare
25064         tls_symbolic_operand result with enum constant.
25065         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
25066         (sh_expand_prologue): Add cast to enum type.
25067         (sh_expand_epilogue): Likewise.
25068         (tls_symbolic_operand): Change return type to enum tls_model.
25069         (fpscr_set_from_mem): Add cast to enum type.
25070         (legitimize_pic_address): Compare tls_symbolic_operand result with
25071         enum constant.
25072         (sh_target_reg_class): Change return type to enum reg_class.
25073         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
25074         PROCESSOR_xxx.
25075         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
25076         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
25077         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
25078         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
25079         (delayed_branch, tls_call_delay): Likewise.
25080         (eligible_for_sibcall_delay): Likewise.
25081         (eligible_for_return_delay): Likewise.
25082         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
25083         (spu_expand_builtin_1): Likewise.
25084
25085         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
25086         for all types of conversions.
25087         (output_init_element): Issue -Wc++-compat warning if needed when
25088         initializing a bitfield with enum type.
25089         * c-parser.c (c_parser_expression): Set original_type to
25090         original_type of right hand operand of comma operator.
25091
25092 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25093
25094         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
25095         grammar nits.
25096         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
25097         * doc/cpp.texi (Standard Predefined Macros)
25098         (Implementation-defined behavior): Likewise.
25099         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
25100         * doc/gimple.texi (GIMPLE Exception Handling)
25101         (@code{GIMPLE_ASSIGN}): Likewise.
25102         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
25103         * doc/invoke.texi (Warning Options, Optimize Options)
25104         (AVR Options, Darwin Options): Likewise.
25105         (Optimize Options): Reformulate -fwhole-program description.
25106         * doc/loop.texi (Lambda): Likewise.
25107         * doc/md.texi (Output Template, Define Constraints)
25108         (Standard Names, Insn Splitting): Likewise.
25109         * doc/options.texi (Option properties): Likewise.
25110         * doc/passes.texi (Tree-SSA passes): Likewise.
25111         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
25112         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
25113         (File Names and DBX): Likewise.
25114         * doc/trouble.texi (Incompatibilities): Likewise.
25115
25116 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
25117
25118         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
25119         instruction is correct.
25120
25121 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
25122
25123         Allow non-constant arguments to conversion intrinsics.
25124         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
25125         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
25126         * spu.c (print_operand): Handle 'v' and 'w'.
25127         (exp2_immediate_p, spu_gen_exp2): Define.
25128         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
25129         spu_convtf_1): Update parameter descriptions.
25130         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
25131         * constraints.md ('v', 'w'): New.
25132         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
25133         Remove.
25134         (i2f, I2F): New define_mode_attr.
25135         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
25136         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
25137         fixuns_truncv4sfv4si2):  Update to use mode attribute.
25138         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
25139         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
25140         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
25141         patterns for combine.
25142
25143 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
25144
25145         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
25146         (cprop, hoist, pre, store_motion): New debug counters.
25147         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
25148         is not an RTL pass anymore.
25149         (pass_profiling): Remove extern decl for pass removed in 2005.
25150         (pass_gcse, pass_jump_bypass): Remove.
25151         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
25152         to 0 for clean state.
25153         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
25154         * cse.c (gate_handle_cse_after_global_opts,
25155         rest_of_handle_cse_after_global_opts): New functions.
25156         (pass_cse_after_global_opts): New pass, does local CSE.
25157         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
25158         (TV_CPROP): New timevar.
25159         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
25160         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
25161         (gcse_main, recompute_all_luids): Remove.
25162         (compute_hash_table_work): Call max_reg_num instead of reading
25163         max_gcse_regno.
25164         (cprop_jump): Don't set run_jump_opt_after_gcse.
25165         (constprop_register): Always allow to alter jumps.
25166         (cprop_insn): Likewise.
25167         (do_local_cprop): Likewise.
25168         (local_cprop_pass): Likewise.  Return non-zero if something changed.
25169         (cprop): Remove function, fold interesting bits into one_cprop_pass.
25170         (find_implicit_sets): Add note about missed optimization opportunity.
25171         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
25172         pass_rtl_cprop execute function.
25173         Don't bother tracking the pass number, each pass gets its own dumpfile
25174         now anyway.
25175         Always allow to alter jumpsand bypass jumps.
25176         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
25177         will just find no suitable set.
25178         (pre_edge_insert): Fix dumping, this function is for PRE only.
25179         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
25180         pass_rtl_pre execute function.
25181         (hoist_code): Return non-zero if something changed.  Keep track of
25182         substitutions and insertions for statistics gathering similar to PRE.
25183         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
25184         called from the pass_rtl_hoist execute function.  Show pass statistics.
25185         (compute_store_table): Use max_reg_num directly instead of using the
25186         formerly global max_gcse_regno.
25187         (build_store_vectors): Likewise.
25188         (replace_store_insn): Fix dumping.
25189         (store_motion): Rename to ...
25190         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
25191         pass, called from the pass_rtl_store_motion execute function.  Keep
25192         track of substitutions and insertions for statistics gathering similar
25193         to PRE.
25194         (bypass_jumps): Remove, fold interesting bits into ...
25195         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
25196         from the pass_rtl_cprop execute function.
25197         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
25198         pass_jump_bypass): Remove.
25199         (gate_handle_gcse, rest_of_handle_gcse): Remove.
25200         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
25201         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
25202         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
25203         (gate_rtl_store_motion, execute_rtl_store_motion,
25204         pass_rtl_store_motion): New.
25205         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
25206         make it clear that -fcse-skip-blocks is a no-op for backward compat.
25207         * passes.c (init_optimization_passes): Remove pass_gcse and
25208         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
25209         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
25210         instead of pass_jump_bypass.
25211
25212 2009-04-27  Richard Guenther  <rguenther@suse.de>
25213
25214         PR middle-end/39928
25215         * gimplify.c (gimplify_expr): If we are required to create
25216         a temporary make sure it ends up as register.
25217
25218 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
25219
25220         PR target/39903
25221         * config/i386/i386.c (construct_container): Don't call
25222         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
25223         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
25224
25225 2009-04-27  Michael Matz  <matz@suse.de>
25226
25227         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
25228         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
25229         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
25230         (dump_replaceable_exprs): Take a bitmap.
25231         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
25232         array.
25233         (expand_gimple_basic_block): Likewise.
25234         * tree-ssa-ter.c (struct temp_expr_table_d): Make
25235         replaceable_expressions member a bitmap.
25236         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
25237         (mark_replaceable): Likewise.
25238         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
25239         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
25240
25241 2009-04-27  Richard Guenther  <rguenther@suse.de>
25242
25243         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
25244         (verify_stmts): Dispatch to gimple/type verification code.
25245         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
25246         issue with call argument types.
25247
25248 2009-04-27  Michael Matz  <matz@suse.de>
25249
25250         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
25251         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
25252         to above.
25253
25254 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
25255             Eric Botcazou  <ebotcazou@adacore.com>
25256
25257         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
25258         a label's basic block.
25259         (mark_target_live_regs): Tidy and rework obsolete comments.
25260         Change back DF problem to LIVE.  If a label starts a basic block,
25261         assume that all registers that used to be live then still are.
25262         (init_resource_info): If a label starts a basic block, set its
25263         BLOCK_FOR_INSN accordingly.
25264         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
25265
25266 2009-04-27  Richard Guenther  <rguenther@suse.de>
25267
25268         * tree-flow-inline.h (function_ann): Remove.
25269         (get_function_ann): Likewise.
25270         * tree-dfa.c (create_function_ann): Remove.
25271         * tree-flow.h (struct static_var_ann_d): Remove.
25272         (struct function_ann_d): Likewise.
25273         (union tree_ann_d): Remove fdecl member.
25274         (function_ann_t): Remove.
25275         (function_ann, get_function_ann, create_function_ann): Remove
25276         declarations.
25277
25278 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
25279
25280         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
25281
25282 2009-04-27  Jan Hubicka  <jh@suse.cz>
25283
25284         * ipa-pure-const.c (struct funct_state_d): New fields
25285         state_previously_known, looping_previously_known; remove
25286         state_set_in_source.
25287         (analyze_function): Use new fields.
25288         (propagate): Avoid assumption that state_set_in_source imply
25289         nonlooping.
25290
25291         * tree-ssa-loop-niter.c (finite_loop_p): New function.
25292         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
25293         * cfgloop.h (finite_loop_p): Declare.
25294
25295 2009-04-26  Michael Matz  <matz@suse.de>
25296
25297         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
25298
25299 2009-04-26  Michael Matz  <matz@suse.de>
25300
25301         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
25302         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
25303         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
25304         pass_mark_used_blocks): Remove.
25305         * tree-optimize.c (pass_free_datastructures,
25306         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
25307         * passes.c (init_optimization_passes): Don't call
25308         pass_mark_used_blocks, remove dead code.
25309
25310 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
25311
25312         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
25313         * tree-ssa-live.h (register_ssa_partition): Likewise.
25314
25315 2009-04-26  Michael Matz  <matz@suse.de>
25316
25317         Expand from SSA.
25318         * builtins.c (fold_builtin_next_arg): Handle SSA names.
25319         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
25320         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
25321         SSA names.
25322         (compare_pairs): Swap cost comparison.
25323         (coalesce_ssa_name): Don't use change_partition_var.
25324         * tree-nrv.c (struct nrv_data): Add modified member.
25325         (finalize_nrv_r): Set it.
25326         (tree_nrv): Use it to update statements.
25327         (pass_nrv): Require PROP_ssa.
25328         * tree-mudflap.c (mf_decl_cache_locals,
25329         mf_build_check_statement_for): Use make_rename_temp.
25330         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
25331         * alias.c (find_base_decl): Handle SSA names.
25332         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
25333         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
25334         * rtl.h (set_reg_attrs_for_parm): Declare.
25335         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
25336         to "optimized", remove unused locals at finish.
25337         (execute_free_datastructures): Make global, call
25338         delete_tree_cfg_annotations.
25339         (execute_free_cfg_annotations): Don't call
25340         delete_tree_cfg_annotations.
25341
25342         * ssaexpand.h: New file.
25343         * expr.c (toplevel): Include ssaexpand.h.
25344         (expand_assignment): Handle SSA names the same as register variables.
25345         (expand_expr_real_1): Expand SSA names.
25346         * cfgexpand.c (toplevel): Include ssaexpand.h.
25347         (SA): New global variable.
25348         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
25349         (SSAVAR): New macro.
25350         (set_rtl): New helper function.
25351         (add_stack_var): Deal with SSA names, use set_rtl.
25352         (expand_one_stack_var_at): Likewise.
25353         (expand_one_stack_var): Deal with SSA names.
25354         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
25355         before unique numbers.
25356         (expand_stack_vars): Use set_rtl.
25357         (expand_one_var): Accept SSA names, add asserts for them, feed them
25358         to above subroutines.
25359         (expand_used_vars): Expand all partitions (without default defs),
25360         then only the local decls (ignoring those expanded already).
25361         (expand_gimple_cond): Remove edges when jumpif() expands an
25362         unconditional jump.
25363         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
25364         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
25365         SSA name.
25366         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
25367         members of SA; deal with PARM_DECL partitions here; expand
25368         all PHI nodes, free tree datastructures and SA.  Commit instructions
25369         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
25370         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
25371         info and statements at start, collect garbage at finish.
25372         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
25373         (VAR_ANN_PARTITION) Remove.
25374         (change_partition_var): Don't declare.
25375         (partition_to_var): Always return SSA names.
25376         (var_to_partition): Only accept SSA names.
25377         (register_ssa_partition): Only check argument.
25378         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
25379         member.
25380         (delete_var_map): Don't free it.
25381         (var_union): Only accept SSA names, simplify.
25382         (partition_view_init): Mark only useful SSA names as used.
25383         (partition_view_fini): Only deal with SSA names.
25384         (change_partition_var): Remove.
25385         (dump_var_map): Use ssa_name instead of partition_to_var member.
25386         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
25387         basic blocks.
25388         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
25389         (struct _elim_graph): New member const_dests; nodes member vector of
25390         ints.
25391         (set_location_for_edge): New static helper.
25392         (create_temp): Remove.
25393         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
25394         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
25395         (new_elim_graph): Allocate const_dests member.
25396         (clean_elim_graph): Truncate const_dests member.
25397         (delete_elim_graph): Free const_dests member.
25398         (elim_graph_size): Adapt to new type of nodes member.
25399         (elim_graph_add_node): Likewise.
25400         (eliminate_name): Likewise.
25401         (eliminate_build): Don't take basic block argument, deal only with
25402         partition numbers, not variables.
25403         (get_temp_reg): New static helper.
25404         (elim_create): Use it, deal with RTL temporaries instead of trees.
25405         (eliminate_phi): Adjust all calls to new signature.
25406         (assign_vars, replace_use_variable, replace_def_variable): Remove.
25407         (rewrite_trees): Only do checking.
25408         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
25409         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
25410         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
25411         contains_tree_r, MAX_STMTS_IN_LATCH,
25412         process_single_block_loop_latch, analyze_edges_for_bb,
25413         perform_edge_inserts): Remove.
25414         (expand_phi_nodes): New global function.
25415         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
25416         functions, initialize new parameter, remember partitions having a
25417         default def.
25418         (finish_out_of_ssa): New global function.
25419         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
25420         don't reset in_ssa_p here, don't disable TER when mudflap.
25421         (pass_del_ssa): Remove.
25422         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
25423         partition members.
25424         (execute_free_datastructures): Declare.
25425         * Makefile.in (SSAEXPAND_H): New variable.
25426         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
25427         * basic-block.h (commit_one_edge_insertion): Declare.
25428         * passes.c (init_optimization_passes): Move pass_nrv and
25429         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
25430         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
25431         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
25432         (redirect_branch_edge): Deal with super block when expanding, split
25433         out jump patching itself into ...
25434         (patch_jump_insn): ... here, new static helper.
25435
25436 2009-04-26  Michael Matz  <matz@suse.de>
25437
25438         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
25439         beyond num_ssa_names.
25440         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
25441         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
25442
25443 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25444
25445         PR inline-asm/39543
25446         * fwprop.c (forward_propagate_asm): New function.
25447         (forward_propagate_and_simplify): Propagate also into __asm, if it
25448         doesn't increase the number of referenced registers.
25449
25450         PR c/39889
25451         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
25452
25453 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25454
25455         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
25456         note_nonlocal_vla_type for nonlocal VLAs.
25457         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
25458         contains_remapped_vars, remap_vla_decls): New functions.
25459         (convert_nonlocal_reference_stmt): If not optimizing, call
25460         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
25461         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
25462         if it wasn't found in var_map.
25463         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
25464         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
25465         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
25466         declare_vars.
25467         * gimplify.c (nonlocal_vlas): New variable.
25468         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
25469         referenced VLAs.
25470         (gimplify_body): Create and destroy nonlocal_vlas.
25471
25472         * dwarf2out.c (loc_descr_plus_const): New function.
25473         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
25474         mem_loc_descriptor, loc_descriptor_from_tree_1,
25475         descr_info_loc, gen_variable_die): Use it.
25476
25477         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
25478         !TREE_STATIC VAR_DECLs.
25479         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
25480         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
25481         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
25482         DECL_BY_REFERENCE is valid.
25483         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
25484         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
25485         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
25486         Copy DECL_BY_REFERENCE.
25487         (struct nesting_copy_body_data): New type.
25488         (nesting_copy_decl): New function.
25489         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
25490         if they have variable length.
25491
25492 2009-04-26  Michael Matz  <matz@suse.de>
25493
25494         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
25495         mark new temporaries for renaming.
25496
25497 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25498
25499         PR c/39581
25500         * c-decl.c (global_bindings_p): Return negative value.
25501         (c_variable_size): New.  Based on variable_size from
25502         stor-layout.c.
25503         (grokdeclarator): Call c_variable_size not variable_size.
25504
25505 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
25506
25507         * config/i386/i386.c (print_operand) ['z']: Fix typo.
25508
25509 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
25510
25511         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
25512         Redefine it to just use mingw/include.
25513         (ASM_SPEC): Rules for -m32 and -m64.
25514         (LINK_SPEC): Use Likewise.
25515         (SPEC_32): New define.
25516         (SPEC_64): Likewise.
25517         (SUB_LINK_SPEC): Likewise.
25518         (MULTILIB_DEFAULTS): New define.
25519         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
25520         Add multilib options.
25521         (MULTILIB_DIRNAMES): Likewise.
25522         (MULTILIB_OSDIRNAMES): Likewise.
25523         (LIBGCC): Likewise.
25524         (INSTALL_LIBGCC): Likewise.
25525
25526 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25527
25528         PR c/39556
25529         * c-tree.h (enum c_inline_static_type): New.
25530         (record_inline_static): Declare.
25531         * c-decl.c (struct c_inline_static, c_inline_statics,
25532         record_inline_static, check_inline_statics): New.
25533         (pop_file_scope): Call check_inline_statics.
25534         (start_decl): Call record_inline_static instead of pedwarning
25535         directly for static in inline function.
25536         * c-typeck.c (build_external_ref): Call record_inline_static
25537         instead of pedwarning directly for static referenced in inline
25538         function.
25539
25540 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
25541
25542         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
25543         not new but only being rescanned.
25544         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
25545         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
25546         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
25547         record_set_info, compute_set, grealloc): Remove.
25548         (recompute_all_luids): New function.
25549         (gcse_main): Don't compute sets, and don't do related memory
25550         allocations/free-ing.  If something changed before the end of the
25551         pass, update LUIDs using recompute_all_luids.
25552         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
25553         (free_gcse_mem): Don't free it either.
25554         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
25555         Use the df insn LUIDs.
25556         (load_killed_in_block): Likewise.
25557         (compute_hash_table_work): Don't compute reg_set_in_block.
25558         (compute_transp): Use DF_REG_DEF_CHAINs.
25559         (local_cprop_pass): Don't use compute_sets and related functions.
25560         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
25561         Use get_max_uid() instead of max_cuid.
25562         (insert_insn_end_basic_block, pre_insert_copy_insn,
25563         update_ld_motion_stores): Don't try to
25564         keep reg_set tables up to date.
25565         (pre_insert_copies): Use df insn LUIDs.
25566         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
25567         (reg_set_info): Don't use extra bitmap argument.
25568         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
25569         information to compute regs_set_in_block.
25570         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
25571         (bypass_jumps): Don't use compute_sets and friends.
25572
25573 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25574
25575         PR testsuite/39710
25576         * opts.c (undocumented_msg): Do not leave blank even with
25577         ENABLE_CHECKING.
25578
25579 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25580
25581         * c-decl.c (build_enumerator): Allow values folding to integer
25582         constants but not integer constant expressions with a pedwarn if
25583         pedantic.
25584
25585 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25586
25587         PR c/39582
25588         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
25589         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
25590         type is an integer constant.
25591
25592 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25593
25594         PR target/39897
25595         * config/i386/i386.c (print_operand) ['z']: Revert handling of
25596         HImode operands.
25597
25598 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25599
25600         PR c/39564
25601         * c-decl.c (grokdeclarator): Diagnose declarations of functions
25602         with variably modified return type and no storage class
25603         specifiers, except for the case of nested functions.  Distinguish
25604         extern declarations of functions with variably modified return
25605         types from those of objects with variably modified types.
25606
25607 2009-04-25  Jan Hubicka  <jh@suse.cz>
25608
25609         * tree.c (list_equal_p): New function.
25610         * tree.h (list_equal_p): Declare.
25611         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25612         basic_block_def, basic_block, const_basic_block): New.
25613         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
25614         (redirect_eh_edge): New function.
25615         (make_eh_edge_update_phi): EH edges are not abnormal.
25616         * except.c: Include tree-flow.h.
25617         (list_match): New function.
25618         (eh_region_replaceable_by_p): New function.
25619         (replace_region): New function.
25620         (hash_type_list): New function.
25621         (hash_eh_region): New function.
25622         (eh_regions_equal_p): New function.
25623         (merge_peers): New function.
25624         (remove_unreachable_regions): Verify EH tree when checking;
25625         merge peers.
25626         (copy_eh_region_1): New function.
25627         (copy_eh_region): New function.
25628         (push_reachable_handler): New function.
25629         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
25630         regions without label but with live RESX.
25631         * except.h (redirect_eh_edge_to_label): New.
25632         * tree-flow.h (redirect_eh_edge): New.
25633         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25634         basic_block_def, basic_block, const_basic_block): Remove.
25635         * Makefile.in (except.o): Add dependency on tree-flow.h
25636         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
25637         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
25638         Remove.
25639
25640 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
25641
25642         PR bootstrap/39645
25643         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
25644         on the destination of memcpy.
25645
25646 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
25647
25648         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
25649         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
25650         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
25651
25652 2009-04-25  Jan Hubicka  <jh@suse.cz>
25653
25654         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
25655         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
25656         to be reached by different label than left.
25657         (update_eh_edges): Update comment; remove edge_to_remove if possible
25658         and return true if suceeded.
25659         (cleanup_empty_eh): Accept sharing map; handle shared regions.
25660         (cleanup_eh): Compute sharing map.
25661         * except.c (remove_eh_handler_and_replace): Add argument if we should
25662         update regions.
25663         (remove_unreachable_regions): Update for label sharing.
25664         (label_to_region_map): Likewise.
25665         (get_next_region_sharing_label): New function.
25666         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
25667         prev_try pointers.
25668         (remove_eh_handler): Update.
25669         (remove_eh_region_and_replace_by_outer_of): New function.
25670         * except.h (struct eh_region): Add next_region_sharing_label.
25671         (remove_eh_region_and_replace_by_outer_of,
25672         get_next_region_sharing_label): Declare.
25673         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
25674
25675 2009-04-25  Jan Hubicka  <jh@suse.cz>
25676
25677         * tree-cfg.c (split_critical_edges): Split also edges where we can't
25678         insert code even if they are not critical.
25679
25680 2009-04-25  Jan Hubicka  <jh@suse.cz>
25681
25682         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25683         (gimple_can_remove_branch_p): EH edges won't remove branch by
25684         redirection.
25685         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
25686         updating of non-abnormal EH edges.
25687         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25688         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
25689         (split_critical_edges): Split also edges where emitting code on them
25690         will lead to splitting later.
25691
25692 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25693             H.J. Lu  <hongjiu.lu@intel.com>
25694
25695         PR target/39590
25696         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
25697         the configured assembler supports fildq and fistpq mnemonics.
25698         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
25699         * configure: Regenerated.
25700         * config.in: Ditto.
25701
25702         * config/i386/i386.c (print_operand): Handle 'Z'.
25703         ['z']: Remove handling of special fild/fist suffixes.
25704         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
25705         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
25706         suffix of fild insn.
25707         (*floatsi<mode>2_vector_mixed): Ditto.
25708         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
25709         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
25710         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
25711         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
25712         * config/i386/gas.h (GAS_MNEMONICS): Remove.
25713
25714 2009-04-25  Ben Elliston  <bje@au.ibm.com>
25715
25716         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
25717         the source of a set operation.
25718
25719 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
25720
25721         * target.h (struct gcc_target): Add case_values_threshold field.
25722         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
25723         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
25724         * targhooks.c (default_case_values_threshold): New function.
25725         * targhooks.h (default_case_values_threshold): Declare function.
25726         * stmt.c (expand_case): Use case_values_threshold target hook.
25727         * expr.h (case_values_threshold): Remove declartation.
25728         * expr.c (case_values_threshold): Remove function.
25729         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
25730
25731         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
25732         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25733         (avr_case_values_threshold): Declare as static.
25734         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
25735
25736         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
25737         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25738         (mn10300_case_values_threshold): New function.
25739
25740 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25741
25742         * ira.c (setup_cover_and_important_classes): Add enum cast.
25743
25744 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
25745
25746         * genpreds.c (write_enum_constraint_num): Output definition of
25747         CONSTRAINT_NUM_DEFINED_P macro.
25748         * ira.c (setup_cover_and_important_classes): Use
25749         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
25750
25751 2009-04-24  DJ Delorie  <dj@redhat.com>
25752
25753         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
25754         __SH2A_SINGLE_ONLY__ also.
25755
25756 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
25757
25758         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
25759         (movdf_internal): Ditto.
25760         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
25761         SFmode and DFmode constants.
25762         (ia64_print_operand): Add 'G' format for printing
25763         floating point constants.
25764
25765 2009-04-24  Richard Guenther  <rguenther@suse.de>
25766
25767         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
25768         from unsigned additions.
25769
25770 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
25771
25772         * c-typeck.c (set_init_index): Allow array designators that are
25773         not integer constant expressions with a pedwarn if pedantic.
25774
25775 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25776
25777         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
25778         zero if no overlap in nonzero bits between the operands.
25779
25780 2009-04-24  Ian Lance Taylor  <iant@google.com>
25781
25782         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
25783         (record_dead_and_set_regs): Likewise.
25784         * df.h (struct df_mw_hardreg): Change flags field to int.
25785         (struct df_base_ref): Likewise.
25786         (struct df): Change changeable_flags field to int.
25787         * df-scan.c (df_defs_record): Change clobber_flags to int.
25788         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
25789         constants rather than #define macros.
25790         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
25791         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
25792         (enum dwarf_calling_convention): Likewise.
25793         (enum dwarf_line_number_x_ops): Likewise.
25794         (enum dwarf_call_frame_info): Likewise.
25795         (enum dwarf_source_language): Likewise.
25796         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
25797         (add_calling_convention_attribute): Likewise.
25798         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
25799         (combine_comparisons): Change compcode to int.  Add cast to enum type.
25800         * genrecog.c (maybe_both_true_2): Change c to int.
25801         (write_switch): Likewise.  Add cast to enum type.
25802         * gimplify.c (gimplify_omp_for): Handle return values from
25803         gimplify_expr using MIN rather than bitwise or.
25804         (gimplify_expr): Add cast to enum type.
25805         * ipa-prop.c (update_jump_functions_after_inlining): Change
25806         IPA_BOTTOM to IPA_JF_UNKNOWN.
25807         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
25808         Add casts to enum type.
25809         (setup_cover_and_important_classes): Change cl to int.  Add casts
25810         to enum type.
25811         (setup_class_translate): Change cl and mode to int.
25812         (ira_init_once): Change mode to int.
25813         (free_register_move_costs): Likewise.
25814         (setup_prohibited_mode_move_regs): Add casts to enum type.
25815         * langhooks.c (add_builtin_function_common): Rework assertion that
25816         value fits bitfield.
25817         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
25818         * omega.c (omega_do_elimination): Avoid math on enum types.
25819         * optabs.c (expand_vec_shift_expr): Remove casts to int.
25820         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
25821         int local to handle integral_argment value.
25822         * regmove.c (try_auto_increment): Change PUT_MODE to
25823         PUT_REG_NOTE_KIND.
25824         * reload.c (push_secondary_reload): Add casts to enum type.
25825         (secondary_reload_class, find_valid_class): Likewise.
25826         * reload1.c (emit_input_reload_insns): Likewise.
25827         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
25828         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
25829         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
25830         constant.
25831         * tree.c (build_common_builtin_nodes): Add casts to enum type.
25832         * tree-complex.c (complex_lattice_t): Typedef to int rather than
25833         enum type.
25834         (expand_complex_libcall): Add casts to enum type.
25835         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
25836         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
25837         with ERROR_MARK, not NUM_TREE_CODES.
25838         (vect_create_epilog_for_reduction): Likewise.
25839         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
25840         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
25841         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
25842         enum machine_mode.
25843         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
25844         vect_unused_in_loop.  Change 0 to loop_vect.
25845         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
25846         * var-tracking.c (get_init_value): Change return type to enum
25847         var_init_status.
25848         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
25849         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
25850         arm_fp_model.
25851         (arm_override_options): Add casts to enum type.
25852         (arm_emit_tls_decoration): Likewise.
25853         * config/i386/i386.c (ix86_function_specific_restore): Add casts
25854         to enum type.
25855         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
25856         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
25857         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
25858         enum type.
25859         * config/s390/s390.c (code_for_builtin_64): Change to array of
25860         enum insn_code.
25861         (code_for_builtin_31): Likewise.
25862         (s390_expand_builtin): Change code_for_builtin to enum insn_code
25863         const *.
25864         * config/sparc/sparc.c (sparc_override_options): Change value
25865         field in struct code_model to enum cmodel.  In initializer change
25866         0 to NULL and add cast to enum type.
25867
25868         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
25869         Change all callers.  Issue a -Wc++-compat warning using
25870         lhs_origtype if necessary.
25871         (convert_for_assignment): Issue -Wc++-compat warnings about
25872         invalid conversions to enum type on assignment.
25873         * c-common.h (build_modify_expr): Update declaration.
25874
25875 2009-04-24  Nick Clifton  <nickc@redhat.com>
25876
25877         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
25878         (function_arg_advance): Likewise.
25879         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
25880         5th alternative.
25881
25882 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25883
25884         * config/s390/constraints.md ('I', 'J'): Fix condition.
25885
25886 2009-04-24  Diego Novillo  <dnovillo@google.com>
25887
25888         * gengtype-parse.c (parse_error): Add newline after message.
25889
25890 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25891
25892         * config/i386/sse.md (avxmodesuffixs): Removed.
25893         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
25894         (*avx_pinsr<ssevecsize>): This.
25895
25896 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25897
25898         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
25899         follow chains of regs with a single definition, and allow expressions
25900         that are function_invariant_p.
25901         (simple_rhs_p): Allow expressions that are function_invariant_p.
25902
25903 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
25904
25905         PR middle-end/39867
25906         * fold-const.c (fold_cond_expr_with_comparison): When folding
25907         > and >= to MAX, make sure the MAX uses the same type as the
25908         comparison's operands.
25909
25910 2009-04-24  Nick Clifton  <nickc@redhat.com>
25911
25912         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
25913         addressing for DImode accesses.
25914         (frv_print_operand_address): Handle PLUS case.
25915         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
25916
25917 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
25918
25919         PR rtl-optimization/39794
25920         * alias.c (canon_true_dependence): Add x_addr argument.
25921         * rtl.h (canon_true_dependence): Adjust prototype.
25922         * cse.c (check_dependence): Adjust canon_true_dependence callers.
25923         * cselib.c (cselib_invalidate_mem): Likewise.
25924         * gcse.c (compute_transp): Likewise.
25925         * dse.c (scan_reads_nospill): Likewise.
25926         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
25927         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
25928         canon_base_addr of the group, plus optional offset.
25929         (struct group_info): Rename canon_base_mem to
25930         canon_base_addr.
25931         (get_group_info): Set canon_base_addr to canon_rtx of base, not
25932         canon_rtx of base_mem.
25933
25934 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
25935
25936         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
25937         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
25938
25939 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25940
25941         * config/spu/spu-builtins.h: Delete file.
25942
25943         * config/spu/spu.h (enum spu_builtin_type): Move here from
25944         spu-builtins.h.
25945         (struct spu_builtin_description): Likewise.  Add GTY marker.
25946         Do not use enum spu_function_code or enum insn_code.
25947         (spu_builtins): Add extern declaration.
25948
25949         * config/spu/spu.c: Do not include "spu-builtins.h".
25950         (enum spu_function_code, enum spu_builtin_type_index,
25951         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
25952         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
25953         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
25954         unsigned_V2DI_type_node): Move here from spu-builtins.h.
25955         (spu_builtin_types): Make static.  Add GTY marker.
25956         (spu_builtins): Add extern declaration with GTY marker.
25957         Include "gt-spu.h".
25958
25959         * config/spu/spu-c.c: Do not include "spu-builtins.h".
25960         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
25961         Check programmatically whether all parameters are scalar.
25962
25963         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
25964
25965 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
25966
25967         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
25968         assignment from the constructor either if the target is volatile.
25969
25970 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
25971
25972         * config/arm/arm.md (insv): Do not share operands[0].
25973
25974 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
25975
25976         * config/vxlib-tls.c (active_tls_threads): Delete.
25977         (delete_hook_installed): New.
25978         (tls_delete_hook): Don't delete the delete hook.
25979         (tls_destructor): Delete it here.
25980         (__gthread_set_specific): Adjust installing the delete hook.
25981         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
25982         __gthread_leave_tsd_dtor_context.
25983
25984 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
25985
25986         * c-format.c (gcc_tdiag_char_table): Add support for %E.
25987
25988 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
25989
25990         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
25991         enum type.
25992         (alpha_rtx_costs): Ditto.
25993         (emit_unlikely_jump): Use add_reg_note.
25994         (emit_frame_store_1): Ditto.
25995         (alpha_expand_prologue): Ditto.
25996         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25997         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
25998
25999 2009-04-23  Nick Clifton  <nickc@redhat.com>
26000
26001         * config/v850/v850.md (epilogue): Remove suppressed code.
26002         (return): Rename to return_simple and remove test of frame size.
26003         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
26004         to gen_return_simple.
26005
26006 2009-04-22  Jing Yu  <jingyu@google.com>
26007
26008         PR testsuite/39781
26009         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
26010
26011 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26012
26013         PR C/31499
26014         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
26015         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
26016         value is a VECTOR_CST, the element type is the element type of the
26017         vector.
26018
26019 2009-04-22  DJ Delorie  <dj@redhat.com>
26020
26021         * config/m32c/m32c.h: Update GTY annotations to new syntax.
26022
26023 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
26024
26025         * alias.c (find_base_term): Move around LO_SUM case, so that
26026         CONST falls through into PLUS/MINUS handling.
26027
26028         PR c/39855
26029         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
26030         into 0, use omit_one_operand.
26031
26032 2009-04-23  Ben Elliston  <bje@au.ibm.com>
26033
26034         * config/rs6000/linux-unwind.h (get_regs): Remove type
26035         puns. Change the type of `pc' to an array of unsigned ints and
26036         update all users.  Constify frame24.
26037
26038 2009-04-22  DJ Delorie  <dj@redhat.com>
26039
26040         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
26041         declarations before code.
26042         (current_function_special_page_vector): Likewise.
26043         (m32c_expand_insv): Silence a warning.
26044
26045 2009-04-21  Taras Glek  <tglek@mozilla.com>
26046
26047         * alias.c: Update GTY annotations to new syntax.
26048         * basic-block.h: Likewise.
26049         * bitmap.h: Likewise.
26050         * c-common.h: Likewise.
26051         * c-decl.c: Likewise.
26052         * c-parser.c: Likewise.
26053         * c-pragma.c: Likewise.
26054         * c-tree.h: Likewise.
26055         * cfgloop.h: Likewise.
26056         * cgraph.h: Likewise.
26057         * config/alpha/alpha.c: Likewise.
26058         * config/arm/arm.h: Likewise.
26059         * config/avr/avr.h: Likewise.
26060         * config/bfin/bfin.c: Likewise.
26061         * config/cris/cris.c: Likewise.
26062         * config/darwin.c: Likewise.
26063         * config/frv/frv.c: Likewise.
26064         * config/i386/i386.c: Likewise.
26065         * config/i386/i386.h: Likewise.
26066         * config/i386/winnt.c: Likewise.
26067         * config/ia64/ia64.h: Likewise.
26068         * config/iq2000/iq2000.c: Likewise.
26069         * config/mips/mips.c: Likewise.
26070         * config/mmix/mmix.h: Likewise.
26071         * config/pa/pa.c: Likewise.
26072         * config/pa/pa.h: Likewise.
26073         * config/rs6000/rs6000.c: Likewise.
26074         * config/s390/s390.c: Likewise.
26075         * config/sparc/sparc.c: Likewise.
26076         * config/xtensa/xtensa.c: Likewise.
26077         * cselib.h: Likewise.
26078         * dbxout.c: Likewise.
26079         * dwarf2out.c: Likewise.
26080         * except.c: Likewise.
26081         * except.h: Likewise.
26082         * fixed-value.h: Likewise.
26083         * function.c: Likewise.
26084         * function.h: Likewise.
26085         * gimple.h: Likewise.
26086         * integrate.c: Likewise.
26087         * optabs.c: Likewise.
26088         * output.h: Likewise.
26089         * real.h: Likewise.
26090         * rtl.h: Likewise.
26091         * stringpool.c: Likewise.
26092         * tree-data-ref.c: Likewise.
26093         * tree-flow.h: Likewise.
26094         * tree-scalar-evolution.c: Likewise.
26095         * tree-ssa-address.c: Likewise.
26096         * tree-ssa-alias.h: Likewise.
26097         * tree-ssa-operands.h: Likewise.
26098         * tree.c: Likewise.
26099         * tree.h: Likewise.
26100         * varasm.c: Likewise.
26101         * varray.h: Likewise.
26102         * vec.h: Likewise.
26103         * coretypes.h: Do not define GTY macro if it is already defined.
26104         * doc/gty.texi: Update GTY documentation to new syntax.
26105         * gengtype-lex.l: Enforce attribute-like syntax for GTY
26106         annotations on structs.
26107         * gengtype-parse.c: Likewise.
26108
26109 2009-04-22  Mark Heffernan  <meheff@google.com>
26110
26111         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
26112
26113 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
26114
26115         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
26116         where appropriate.
26117
26118 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
26119
26120         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
26121         the same as a PLUS without a shift.  Increase the cost of a
26122         CONST_INT in MULT.
26123
26124 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26125
26126         * Makefile.in: Update dependencies.
26127         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
26128         * errors.h: Remove bogus comment about compatibility.
26129         (warning): Update declaration.
26130         * genautomata.c: Update all calls to warning.
26131         * gimple.c: Do not include errors.h. Include toplev.h.
26132         * tree-ssa-structalias.c: Do not include errors.h.
26133         * omega.c: Likewise.
26134         * tree-ssa-reassoc.c: Likewise.
26135         * config/spu/spu-c.c: Likewise.
26136         * config/spu/t-spu-elf: Update dependencies.
26137
26138 2009-04-22  Richard Guenther  <rguenther@suse.de>
26139
26140         PR tree-optimization/39824
26141         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
26142         make sure the types are compatible.
26143
26144 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26145
26146         PR c++/14875
26147         * c-common.c (c_parse_error): Take a token_flags parameter.
26148         Use token_type for the token type instead.
26149         Pass token_flags to cpp_type2name.
26150         * c-common.h (c_parse_error): Update declaration.
26151         * c-parser.c (c_parser_error): Pass 0 as token flags.
26152
26153 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
26154
26155         PR rtl-optimization/39580
26156         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
26157
26158 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26159
26160         * function.c (expand_function_end): Do not emit a jump to the "naked"
26161         return label for fall-through returns.
26162         * except.c (sjlj_emit_function_exit): Always place the call to the
26163         unregister function at the location installed by expand_function_end.
26164
26165 2009-04-22  Richard Guenther  <rguenther@suse.de>
26166
26167         PR tree-optimization/39845
26168         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
26169         (gen_inbound_check): Likewise.
26170
26171 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
26172
26173         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
26174         padding for PPC.
26175         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
26176         * config/vxlib.c (__gthread_once): Add race guard for PPC.
26177
26178 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
26179
26180         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
26181         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
26182         shift counts to avoid out-of-bounds array accesses.
26183
26184 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
26185
26186         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
26187         (Pmode): Move above.
26188
26189 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
26190
26191         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
26192         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
26193         GET_CODE macro.  Use IN_RANGE macro where appropriate.
26194         * config/alpha/alpha.h: Ditto.
26195         * config/alpha/alpha.md: Ditto.
26196         * config/alpha/constraints.md: Ditto.
26197         * config/alpha/predicates.md: Ditto.
26198
26199 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
26200
26201         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
26202         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26203         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26204         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26205         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26206         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26207         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26208         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26209         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26210         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26211         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26212         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26213         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26214         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26215         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26216         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26217         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26218         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26219         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26220         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26221         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26222         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26223         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26224         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26225         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26226         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26227         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26228
26229 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
26230
26231         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
26232         references from comments.
26233         * cfgbuild.c (count_basic_blocks): Delete.
26234         (find_basic_blocks_1): Delete.
26235         (find_basic_blocks): Delete.
26236         * except.c (finish_eh_generation): Make static.  Move comment from
26237         except.h here.  Remove find_basic_blocks references from comments.
26238         * except.h (finish_eh_generation): Delete.
26239         * basic-block.h (find_basic_blocks): Delete.
26240         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
26241
26242 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
26243
26244         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
26245         (sdbout_parms):  Likewise.
26246
26247 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
26248
26249         * config/sh/sh.c (prepare_cbranch_operands): Use
26250         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
26251         (expand_cbranchdi4): Likewise.
26252         (from_compare): Add cast to enum type.
26253         (expand_cbranchsi4): Use add_reg_note.
26254         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
26255         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
26256         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
26257         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26258         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
26259         instead of CODE_FOR_nothing.
26260         (cbranchdi4): Likewise.  Fix the order of arguments for
26261         gen_rtx_fmt_ee.
26262         (push_fpscr): Use add_reg_note.
26263         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
26264         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
26265
26266 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
26267
26268         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
26269         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
26270         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
26271         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
26272         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
26273         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
26274         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
26275         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
26276         config/alpha/x-vms, config/arc/t-arc,
26277         config/arm/README-interworking, config/arm/arm-c.c,
26278         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
26279         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
26280         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
26281         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
26282         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
26283         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
26284         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
26285         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
26286         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
26287         config/cris/t-elfmulti, config/crx/t-crx,
26288         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
26289         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
26290         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
26291         config/h8300/t-h8300, config/i386/athlon.md,
26292         config/i386/darwin-libgcc.10.4.ver,
26293         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
26294         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
26295         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
26296         config/i386/t-linux64, config/i386/t-nwld,
26297         config/i386/t-rtems-i386, config/i386/t-sol2-10,
26298         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
26299         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
26300         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
26301         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
26302         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
26303         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
26304         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
26305         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
26306         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
26307         config/m68k/t-uclinux, config/mcore/t-mcore,
26308         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
26309         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
26310         config/mips/crtn.asm, config/mips/irix-crti.asm,
26311         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
26312         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
26313         config/mips/mips-fixed.md, config/mips/sb1.md,
26314         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
26315         config/mips/t-iris6, config/mips/t-isa3264,
26316         config/mips/t-libgcc-mips16, config/mips/t-linux64,
26317         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
26318         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
26319         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
26320         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
26321         config/mn10300/t-linux, config/mn10300/t-mn10300,
26322         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
26323         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
26324         config/picochip/libgccExtras/clzsi2.asm,
26325         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
26326         config/rs6000/darwin-libgcc.10.4.ver,
26327         config/rs6000/darwin-libgcc.10.5.ver,
26328         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
26329         config/rs6000/t-aix43, config/rs6000/t-aix52,
26330         config/rs6000/t-darwin, config/rs6000/t-fprules,
26331         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
26332         config/rs6000/t-lynx, config/rs6000/t-netbsd,
26333         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
26334         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
26335         config/rs6000/t-rtems, config/rs6000/t-spe,
26336         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
26337         config/score/t-score-elf, config/sh/divcost-analysis,
26338         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
26339         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
26340         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
26341         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
26342         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
26343         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
26344         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
26345         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
26346         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
26347         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
26348         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
26349         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
26350         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
26351         limitx.h, version.c, xcoff.h: Add copyright and license notices.
26352         * config/h8300/genmova.sh: Include copyright and license notices
26353         in generated output.
26354         * config/h8300/mova.md: Regenerate.
26355         * doc/install.texi2html: Include word "Copyright" in copyright
26356         notice and use name "Free Software Foundation, Inc.".
26357         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
26358         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
26359         ChangeLog-2007, ChangeLog-2008: Correct dates.
26360
26361 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
26362
26363         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
26364         NE_EXPR operations as well.
26365         * c-parser.c (c_parser_condition): Do not set location information on
26366         the condition.
26367         (c_parser_conditional_expression): Likewise.
26368         (c_parser_binary_expression): Set location information on operators.
26369         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
26370         TRUTH_NOT_EXPR has been folded.
26371         * fold-const.c (fold_truth_not_expr): Copy location information from
26372         the incoming expression to the outgoing one.
26373         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
26374         recursive calls on the LHS of the operator but pass that of the
26375         operator to recursive calls on the RHS of the operator.  Set it
26376         on the COND_EXPR.
26377         (shortcut_cond_expr): Set the locus of the operator on the second
26378         COND_EXPR and that of the expression on the first in degenerate cases.
26379         Pass the locus of the expression to calls to shortcut_cond_r.
26380         Set the locus of the 'then' block on the associated jump, if any.
26381         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
26382         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
26383         expression to call to gimplify_boolean_expr.
26384
26385 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
26386
26387         * config.gcc: Add additional configuration for
26388         i686-w64-mingw* and x86_64-w64-mingw* triplet.
26389         * config/i386/mingw-w64.h: New mingw-w64 specific header.
26390         (CPP_SPEC): Redefine for allowing -municode option.
26391         (STARTFILE_SPEC): Likewise.
26392         * config/i386/t-mingw-w64: New.
26393         * config/i386/mingw-w64.opt: New.
26394         (municode): Add new target option.
26395         * doc/invoke.texi (municode): Add documentation for new option.
26396
26397 2009-04-21  Ian Lance Taylor  <iant@google.com>
26398
26399         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26400         Correct test for number of arguments.
26401         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
26402
26403 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
26404
26405         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
26406         argument of emit_library_call.
26407
26408 2009-04-21  Richard Guenther  <rguenther@suse.de>
26409
26410         PR middle-end/39829
26411         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
26412         inside VIEW_CONVERT_EXPRs.
26413
26414 2009-04-21  Martin Jambor  <mjambor@suse.cz>
26415
26416         * tree-switch-conversion.c (build_constructors): Split a long line.
26417         (constructor_contains_same_values_p): New function.
26418         (build_one_array): Create assigns of constants if possible, do not
26419         call mark_sym_for_renaming, call update_stmt.
26420         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
26421         make_rename_temp.  Do not call mark_symbols_for_renaming, call
26422         update_stmt.
26423         (gen_def_assigns): Do not call mark_symbols_for_renaming or
26424         find_new_referenced_vars, call update_stmt.
26425         (gen_inbound_check): Use create_tmp_var and create ssa names manually
26426         instead of calling make_rename_temp.  Do not call
26427         find_new_referenced_vars or mark_symbols_for_renaming, call
26428         update_stmt.
26429
26430 2009-04-21  Richard Guenther  <rguenther@suse.de>
26431
26432         PR tree-optimization/39827
26433         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
26434         (tree_ssa_phiprop): Pass the correct array size.
26435
26436 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
26437
26438         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
26439
26440 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26441
26442         PR 16202
26443         * c-typeck.c (lvalue_p): Move declaration ...
26444         * c-common.h (lvalue_p): ... to here.
26445         * c-common.c (candidate_equal_p): New.
26446         (add_tlist): Use it.
26447         (merge_tlist): Use it.
26448         (warn_for_collisions_1): Likewise.
26449         (warning_candidate_p): Accept more candidates.
26450         (verify_tree): A warning candidate can be an expression. Use
26451         candidate_equal_p.
26452
26453 2009-04-21  Ben Elliston  <bje@au.ibm.com>
26454
26455         PR target/5267
26456         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
26457         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
26458         options.  Remove -mcall-solaris documentation.
26459
26460 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26461
26462         PR c++/13358
26463         * doc/invoke.texi (-Wlong-long): Update description.
26464         * c-lex (interpret_integer): Only warn if there was no previous
26465         overflow and -Wlong-long is enabled.
26466         * c-decl.c (declspecs_add_type): Drop redundant flags.
26467         * c.opt (Wlong-long): Init to -1.
26468         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
26469         and front-end warn_long_long. Wlong-long only depends on other
26470         flags if it is uninitialized.
26471         * c-parser.c (disable_extension_diagnostics): warn_long_long is
26472         the same for CPP and FE.
26473         (restore_extension_diagnostics): Likewise.
26474
26475 2009-04-20  Ian Lance Taylor  <iant@google.com>
26476
26477         Fix enum conversions which are invalid in C++:
26478         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
26479         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
26480         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
26481         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
26482         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
26483         (dbxout_parms): Likewise.
26484         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
26485         (df_clear_flags): Likewise.
26486         * df-problems.c (df_rd_bb_local_compute_process_def): Change
26487         top_flag parameter to int.
26488         (df_chain_create_bb_process_use): Likewise.
26489         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
26490         Remove cast.
26491         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
26492         (df_ref_create_structure, df_def_record_1): Likewise.
26493         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
26494         (df_notes_rescan): Change 0 to VOIDmode in function call.
26495         (df_get_call_refs, df_insn_refs_collect): Likewise.
26496         (df_bb_regs_collect): Likewise.
26497         (df_entry_block_defs_collect): Likewise.
26498         (df_exit_block_uses_collect): Likewise.
26499         * df.h: Update declarations.
26500         * double-int.c (double_int_divmod): Add cast to enum type.
26501         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
26502         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
26503         (based_loc_descr): Likewise.
26504         (loc_descriptor_from_tree_1): Change first_op and second_op to
26505         enum dwarf_location_atom.  Add cast to enum type.
26506         * expmed.c (init_expmed): Change 0 to SET in function call.
26507         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
26508         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
26509         (do_store_flag): Likewise.
26510         * fixed-value.h (struct fixed_value): Change mode to enum
26511         machine_mode.
26512         * function.c (assign_parms): Change 0 to VOIDmode in function call.
26513         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
26514         function call.
26515         (insert_insn_decl, insert_decl, insert_state): Likewise.
26516         (automata_list_finish): Likewise.
26517         * genrecog.c (process_define_predicate): Add cast to enum type.
26518         * gensupport.c (init_predicate_table): Add cast to enum type.
26519         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
26520         function call.
26521         (gimple_build_call_1, gimple_build_label): Likewise.
26522         (gimple_build_goto, gimple_build_asm_1): Likewise.
26523         (gimple_build_switch_1, gimple_build_cdt): Likewise.
26524         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
26525         (enum fallback): Rename from enum fallback_t.
26526         (fallback_t): Typedef as int.
26527         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
26528         GSI_SAME_STMT in function call.
26529         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
26530         enum type.
26531         (setup_reg_class_relations): Likewise.
26532         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
26533         (setup_prohibited_class_mode_regs): Add cast to enum type.
26534         (setup_prohibited_mode_move_regs): Likewise.
26535         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
26536         (record_address_regs): Change i to enum reg_class.
26537         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
26538         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
26539         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
26540         (GET_MODE_2XWIDER_MODE): Likewise.
26541         (GET_CLASS_NARROWEST_MODE): Likewise.
26542         * omp-low.c (expand_omp_for): Add cast to enum type.
26543         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
26544         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
26545         * postreload.c (reload_cse_simplify_operands): Change rclass local
26546         to enum reg_class.
26547         * predict.c (combine_predictions_for_insn): Change best_predictor
26548         and predictor to enum br_predictor.
26549         (combine_predictions_for_bb): Likewise.
26550         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
26551         use SET_PREDICT_EXPR_OUTCOME.
26552         * real.c (real_arithmetic): Change icode to code in function call.
26553         * reginfo.c (init_move_cost): Add casts to enum type.
26554         (init_reg_sets_1, init_fake_stack_mems): Likewise.
26555         * regmove.c (regclass_compatible_p): Change class0 and class1 to
26556         enum reg_class.
26557         * reload.c (find_valid_class): Add casts to enum type.
26558         (push_reload): Change 0 to NO_REGS in function call.
26559         (find_reloads): Change this_alternative to array of enum
26560         reg_class.  Remove some now-unnecessary casts.
26561         (make_memloc): Change 0 to VOIDmode in function call.
26562         * reload1.c (reload): Change 0 to VOIDmode in function call.
26563         (eliminate_regs_1, elimination_effects): Likewise.
26564         (eliminate_regs_in_insn): Likewise.
26565         (emit_input_reload_insns): Add cast to enum type.
26566         (delete_output_reload): Change 0 to VOIDmode in function call.
26567         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
26568         to enum type in function call.
26569         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
26570         (SET_PREDICT_EXPR_OUTCOME): Define.
26571         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
26572         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
26573         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
26574         (dump_function): Likewise.
26575         * tree-dump.h: Update declarations.
26576         * tree-pass.h: Update declarations.
26577         * varasm.c (assemble_integer): Change mclass to enum mode_class.
26578         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
26579         enum type.
26580         (arm_rtx_costs_1): Correct parenthesization.
26581         (arm_rtx_costs): Add casts to enum type.
26582         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
26583         (vfp_emit_fstmd): Use add_rg_note.
26584         (emit_multi_reg_push, emit_sfm): Likewise.
26585         (thumb_set_frame_pointer): Likewise.
26586         (arm_expand_prologue): Likewise.
26587         (arm_regno_class): Change return type to enum reg_class.
26588         (thumb1_expand_prologue): Use add_reg_note.
26589         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
26590         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
26591         in function call.
26592         * config/arm/gentune.sh: Add cast to enum type.
26593         * config/arm/arm-tune.md: Rebuild.
26594         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
26595         (ix86_split_fp_branch, predict_jump): Likewise.
26596         (ix86_expand_multi_arg_builtin): Change sub_code from enum
26597         insn_code to enum rtx_code.
26598         (ix86_builtin_vectorized_function): Add cast to enum type.
26599         * config/i386/i386.md (truncdfsf2): Change slot to enum
26600         ix86_stack_slot.
26601         (truncxf<mode>2, isinf<mode>2): Likewise.
26602         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
26603         enum type.
26604         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
26605         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
26606         (insert_bundle_state): Change 1 to INSERT in function call.
26607         (ia64_add_bundle_selector_before): Likewise.
26608         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
26609         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
26610         (restore_stack_nonlocal): Likewise.
26611         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
26612         function call.
26613         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
26614         function call.
26615         (mips_rtx_costs): Likewise.
26616         (mips_override_options): Add casts to enum type.
26617         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
26618         in function call.
26619         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
26620         (store_reg, set_reg_plus_d): Likewise.
26621         (hppa_expand_prologue, hppa_profile_hook): Likewise.
26622         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
26623         cast to enum type.
26624         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
26625         function call.
26626         (emit_unlikely_jump): Use add_reg_note.
26627         (rs6000_emit_allocate_stack): Likewise.
26628         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
26629         (output_toc): Change 1 to INSERT in function call.
26630         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
26631         (rs6000_initialize_trampoline): Likewise.
26632         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
26633         function call.
26634         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
26635         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
26636         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
26637         (save_gprs): Use add_reg_note.
26638         (s390_emit_prologue): Likewise.
26639         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26640         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
26641         (sparc_fold_builtin): Add cast to enum type.
26642         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
26643         enum insn_code.
26644         (spu_expand_prologue): Use add_reg_note.
26645         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
26646
26647 2009-04-20  Ian Lance Taylor  <iant@google.com>
26648
26649         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
26650         (c_parser_postfix_expression_after_primary): Get VEC for list of
26651         arguments.  Get original types of arguments.  Call
26652         build_function_call_vec.
26653         (cached_expr_list_1, cached_expr_list_2): New static variables.
26654         (c_parser_expr_list): Change return type to VEC *.  Add
26655         p_orig_types parameter.  Change all callers.
26656         (c_parser_release_expr): New static function.
26657         (c_parser_vec_to_tree_list): New static function.
26658         * c-typeck.c (build_function_call): Rewrite to build a VEC and
26659         call build_function_call_vec.
26660         (build_function_call_vec): New function, based on old
26661         build_function_call.
26662         (convert_arguments): Remove nargs and argarray parameters.  Change
26663         values to a VEC.  Add origtypes parameter.
26664         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
26665         (convert_for_assignment): Add origtype parameter.  Change all
26666         callers.  If warn_cxx_compat, check for conversion to an enum
26667         type when calling a function.
26668         (store_init_value): Add origtype parameter.  Change all callers.
26669         (digest_init): Likewise.
26670         (struct init_node): Add origtype field.
26671         (add_pending_init): Add origtype parameter.  Change all callers.
26672         (output_init_element): Likewise.
26673         (output_pending_init_elements): Pass origtype from init_node to
26674         output_init_element.
26675         (process_init_element): Pass origtype from c_expr to
26676         output_init_element.
26677         (c_finish_return): Add origtype parameter.  Change all callers.
26678         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
26679         caller.
26680         (sync_resolve_params): Likewise.
26681         (sync_resolve_return): Change params to first_param.  Change caller.
26682         (resolve_overloaded_builtins): Change params to VEC *.  Change
26683         callers.  Save first parameter around call to build_function_call_vec.
26684         * c-decl.c (finish_decl): Add origtype parameter.  Change all
26685         callers.  Call build_function_call_vec rather than
26686         build_function_call for cleanup.
26687         * c-tree.h: Update declarations.
26688         * c-common.h: Update declarations.
26689         * stub-objc.c (objc_rewrite_function_call): Change parameter from
26690         params to first_param.
26691         * target.h (struct gcc_target): Change resolve_overloaded_builtin
26692         params parameter from tree to void *.
26693         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26694         Change arglist parameter to have type void *, and to be a pointer
26695         to a VEC.
26696         * config/rs6000/rs6000-protos.h
26697         (altivec_resolve_overloaded_builtin): Update declaration.
26698         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
26699         fnargs parameter to have type void *, and to be a pointer to a
26700         VEC.  Call build_function_call_vec instead of
26701         build_function_call.
26702         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
26703
26704 2009-04-20  Joey Ye  <joey.ye@intel.com>
26705             Xuepeng Guo  <xuepeng.guo@intel.com>
26706             H.J. Lu  <hongjiu.lu@intel.com>
26707
26708         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
26709
26710         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
26711         (IX86_LEA_PRIORITY): Likewise.
26712         (distance_non_agu_define): New function.
26713         (distance_agu_use): Likewise.
26714         (ix86_lea_for_add_ok): Likewise.
26715         (ix86_dep_by_shift_count): Likewise.
26716
26717         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
26718         should split for LEA.
26719
26720         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
26721         function.
26722         (ix86_dep_by_shift_count): Likewise.
26723
26724 2009-04-20  Richard Guenther  <rguenther@suse.de>
26725
26726         * expr.c (handled_component_p): Move ...
26727         * tree.h (handled_component_p): ... here.
26728         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
26729         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
26730         and REALPART_EXPR to be in one group.
26731
26732 2009-04-20  Richard Guenther  <rguenther@suse.de>
26733
26734         * basic-block.h (get_all_dominated_blocks): Declare.
26735         * dominance.c (get_all_dominated_blocks): New function.
26736         * tree-cfg.c (get_all_dominated_blocks): Remove.
26737         (remove_edge_and_dominated_blocks): Adjust.
26738         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
26739         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
26740         instead of recursing.
26741
26742 2009-04-20  Doug Kwan  <dougkwan@google.com>
26743
26744         * cgraph.h (cgraph_node_ptr): New type for vector functions.
26745         (struct cgraph_node_set_def): New type.
26746         (cgraph_node_set) New type. Also declare vector functions.
26747         (struct cgraph_node_set_element_def): New type.
26748         (cgraph_node_set_element): Ditto.
26749         (cgraph_node_set_iterator): New iterator type.
26750         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
26751         cgraph_node_set_remove, dump_cgraph_node_set,
26752         debug_cgraph_node_set): New prototypes.
26753         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
26754         cgraph_node_set_size): New inlines.
26755         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
26756         including cgraph.h.
26757         (struct ipa_opt_pass): Add struct cgraph_node_set_def
26758         argument to function 'write_summary'.
26759         * ipa.c: Include ggc.h.
26760         (hash_cgraph_node_set_element,
26761         eq_cgraph_node_set_element, cgraph_node_set_new,
26762         cgraph_node_set_add, cgraph_node_set_remove,
26763         cgraph_node_set_find, dump_cgraph_node_set,
26764         debug_cgraph_node_set): New functions.
26765         * Makefile.in (ipa.o): Add dependency on GGC_H.
26766
26767 2009-04-20  Ira Rosen  <irar@il.ibm.com>
26768
26769         PR tree-optimization/39675
26770         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
26771         check of the return code of vect_schedule_slp. Check that
26772         stmt_vec_info still exists for the statement, before checking its
26773         vectorization type.
26774
26775 2009-04-20  Michael Matz  <matz@suse.de>
26776
26777         * Makefile.in (generated_files): Take out $(simple_generated_c).
26778
26779 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
26780
26781         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
26782         (UINTPTR_TYPE):  Likewise.
26783
26784 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26785
26786         PR c/37481
26787         * c-typeck.c (digest_init): Check for initializing an array with a
26788         string literal.
26789
26790 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26791
26792         PR c/19771
26793         * c-semantics.c (pop_stmt_list): Propagate
26794         STATEMENT_LIST_HAS_LABEL to parent statement list.
26795
26796 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
26797
26798         * config/mips/mips.h (mips_tune_attr): New macro.
26799         * config/mips/mips.md (cpu): Use it.
26800
26801 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26802
26803         PR c/38243
26804         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
26805         declaring a tag.
26806
26807 2009-04-19  Diego Novillo  <dnovillo@google.com>
26808
26809         * toplev.c (compile_file): Move call to coverage_finish ...
26810         * cgraphunit.c (ipa_passes): ... here.
26811         Call cgraph_process_new_functions.
26812         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
26813         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
26814
26815 2009-04-19  Jan Hubicka  <jh@suse.cz>
26816
26817         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
26818         cfun.
26819         (dump_cgraph_node): Dump can throw external flag.
26820         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
26821
26822 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26823
26824         PR c/32061
26825         PR c++/36954
26826         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
26827         * common.opt (Wlogical-op): Move from here...
26828         * c.opt (Wlogical-op): ... to here.
26829         * c-typeck.c (parser_build_binary_op): Update call to
26830         warn_logical_operator.
26831         * c-opts.c (c_common_post_options): Enable warn_logical_op with
26832         extra_warnings.
26833         * c-common.c (warn_logical_op): Update.
26834         * c-common.h (warn_logical_op): Update declaration.
26835
26836 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
26837
26838         * tree.c (protected_set_expr_location): Fix formatting.
26839
26840 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26841
26842         PR c/27676
26843         * c-typeck.c (readonly_warning): new.
26844         (build_unary_op, build_modify_expr): Use readonly_warning for
26845         storing into something readonly but not const-qualified.
26846
26847 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26848
26849         PR c/22367
26850         * c-typeck.c (build_unary_op): Check for taking address of
26851         expression of type void.
26852
26853 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26854
26855         PR c/35210
26856         * c-typeck.c (build_function_call): Check for calling a function
26857         with qualified void return types.  Call require_complete_type when
26858         generating a trap.
26859
26860 2009-04-18  Jan Hubicka  <jh@suse.cz>
26861
26862         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
26863         Set nothrow flag.
26864         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
26865         can_throw_external flag.
26866         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
26867         * ipa-pure-const.c (ignore_edge): New function.
26868         (propagate): Compute order for NOTHROW computation; set NOTHROWs
26869         only over can_throw_external edges.
26870         (local_pure_const): Add nothrow flag.
26871         * ipa-utils.c (searchc): Add ignore_edge callback.
26872         (ipa_utils_reduced_inorder): Add ignore_edge callback.
26873         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
26874         (set_nothrow_function_flags): Update cgraph.
26875         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
26876
26877 2009-04-18  Richard Guenther  <rguenther@suse.de>
26878
26879         PR middle-end/39804
26880         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
26881         (fold_stmt): ... this and ...
26882         (fold_stmt_inplace): ... this.
26883         (fold_stmt_1): Fold references in calls and asms.
26884         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
26885
26886 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26887
26888         * tree-vrp.c (ssa_name_nonzero_p): Remove.
26889         * tree.h: Remove the prototype for ssa_name_nonzero_p.
26890
26891 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26892
26893         * tree.c (function_args_count): Remove.
26894         * tree.h: Remove the prototype for function_args_count.
26895
26896 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26897
26898         * tree-iterator.c (expr_only): Remove.
26899         * tree.h: Remove the prototype for expr_only.
26900
26901 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26902
26903         * reginfo.c (cannot_change_mode_set_regs): Remove.
26904         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
26905
26906 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
26907
26908         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
26909         whether operands 0 and 1 overlaps.
26910
26911 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26912
26913         PR middle-end/36902
26914         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
26915         pointer. Use warning_at instead of warning.
26916         (search_for_addr_array): Likewise.
26917         (check_array_bounds): Likewise.
26918         (check_all_array_refs): Check that the incoming edge is not in the
26919         list of edges to be removed.
26920         (check_all_array_refs): Avoid the temporal pointer.
26921         (vrp_visit_cond_stmt): Fix typo.
26922         (simplify_switch_using_ranges): Handle the case where the switch
26923         index is an integer constant.
26924
26925 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
26926
26927         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
26928
26929 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26930
26931         * doc/extend.texi, doc/invoke.texi: Fix typos.
26932
26933 2009-04-17  Cary Coutant  <ccoutant@google.com>
26934
26935         * tree-flow-inline.h (get_lineno): Fix inverted test.
26936
26937 2009-04-17  Diego Novillo  <dnovillo@google.com>
26938
26939         * tree-ssa-pre.c (create_expression_by_pieces): Remove
26940         assertion for AVAIL_OUT.
26941
26942 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
26943
26944         PR target/38627
26945         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
26946         * config/sh/linux-atomic.asm: Likewise.
26947
26948 2009-04-17  Diego Novillo  <dnovillo@google.com>
26949
26950         * except.c (debug_eh_tree): New.
26951         (struct eh_region, struct eh_status): Move ...
26952         * except.h: ... here.
26953         (add_type_for_runtime): Declare extern.
26954         (lookup_type_for_runtime): Likewise.
26955         (debug_eh_tree): Declare.
26956         * Makefile.in (GTFILES): List except.h before except.c
26957
26958 2009-04-17  Diego Novillo  <dnovillo@google.com>
26959
26960         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
26961         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
26962         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
26963         (find_vars_r): ... here.
26964         * tree-flow.h (find_referenced_vars_in): Declare.
26965         * tree-ssa-pre.c (create_expression_by_pieces): Assert
26966         that AVAIL_OUT exists for BLOCK.
26967         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
26968         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
26969         (tree-parloops.o): Likewise.
26970
26971 2009-04-17  Simon Baldwin  <simonb@google.com>
26972
26973         * toplev.c (default_tree_printer): Add handling for %E format.
26974
26975 2009-04-17  Diego Novillo  <dnovillo@google.com>
26976
26977         * tree-pretty-print.c (dump_generic_node): Add break after
26978         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
26979         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
26980         FUNCTION_TYPE together.  Call print_struct_decl when printing
26981         structures and TDF_SLIM is not given.
26982         (print_struct_decl): Fix logic for detecting recursion.
26983
26984 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26985
26986         PR 31567
26987         * gcc.c (create_at_file): New.
26988         (compile_input_file_p): New.
26989         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
26990         * main.c (main): Update call to toplev_main.
26991         * toplev.c (toplev_main): Change signature. Call expandargv.
26992         * toplev.h (toplev_main): Change signature.
26993
26994 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26995
26996         * dwarf2out.c (field_byte_offset): Use the type size as the field size
26997         if the latter is not constant.
26998
26999 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
27000
27001         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
27002
27003 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
27004
27005         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
27006         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
27007
27008 2009-04-17  Richard Guenther  <rguenther@suse.de>
27009
27010         * tree-ssa-structalias.c (get_constraint_for_component_ref):
27011         Handle component references view-converting an invariant address.
27012
27013 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
27014
27015         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
27016         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
27017         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
27018         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
27019         Use @deftypevr rather than @deftypevar.
27020
27021 2009-04-17  Richard Guenther  <rguenther@suse.de>
27022
27023         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
27024         (get_prop_source_stmt): Likewise.
27025         (can_propagate_from): Likewise.
27026
27027 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
27028
27029         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
27030         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
27031         (--with-multilib-list): Add default value.
27032         * configure: Regenerate.
27033         * Makefile.in (TM_ENDIAN_CONFIG): Define.
27034         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
27035         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
27036         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
27037         Don't add default cpu to multilib list unnecessarily, but do enable
27038         the relevant compiler option..
27039         Add support for --with-multilib-list=<blank> and
27040         --with-multilib-list=!<somelib> to supress unwanted multilibs.
27041         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
27042         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
27043         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
27044         TM_MULTILIB_CONFIG.
27045         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
27046         (MULTILIB_OSDIRNAMES): New variable.
27047         * config/sh/t-1e: Delete file.
27048         * config/sh/t-mlib-sh1: Delete file.
27049         * config/sh/t-mlib-sh2: Delete file.
27050         * config/sh/t-mlib-sh2a: Delete file.
27051         * config/sh/t-mlib-sh2a-nofpu: Delete file.
27052         * config/sh/t-mlib-sh2a-single: Delete file.
27053         * config/sh/t-mlib-sh2a-single-only: Delete file.
27054         * config/sh/t-mlib-sh2e: Delete file.
27055         * config/sh/t-mlib-sh3e: Delete file.
27056         * config/sh/t-mlib-sh4: Delete file.
27057         * config/sh/t-mlib-sh4-nofpu: Delete file.
27058         * config/sh/t-mlib-sh4-single: Delete file.
27059         * config/sh/t-mlib-sh4-single-only: Delete file.
27060         * config/sh/t-mlib-sh4a: Delete file.
27061         * config/sh/t-mlib-sh4a-nofpu: Delete file.
27062         * config/sh/t-mlib-sh4a-single: Delete file.
27063         * config/sh/t-mlib-sh4a-single-only: Delete file.
27064         * config/sh/t-mlib-sh4al: Delete file.
27065         * config/sh/t-mlib-sh5-32media: Delete file.
27066         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
27067         * config/sh/t-mlib-sh5-64media: Delete file.
27068         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
27069         * config/sh/t-mlib-sh5-compact: Delete file.
27070         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
27071         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
27072         * doc/install.texi (Options specification): Add
27073         --with-multilib-list and --with-endian.
27074
27075 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
27076
27077         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
27078         REVISION_c.
27079         (OBJS-common): Add plugin-version.o.
27080         (plugin-version.o): New.
27081         * gcc-plugin.h (plugin_gcc_version): New.
27082         (plugin_default_version_check): New.
27083         (plugin_init_func, plugin_init): Add version argument.
27084         * plugin-version.c: New.
27085         * plugin.c (str_plugin_gcc_version_name): New.
27086         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
27087         pass it to the init function.
27088         (plugin_default_version_check): New.
27089
27090 2009-04-17  Richard Guenther  <rguenther@suse.de>
27091
27092         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
27093         for decl-vs-decl disambiguation.
27094
27095 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
27096
27097         * config/s390/s390.h (s390_tune_attr): New macro definition.
27098         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
27099
27100 2009-04-17  Richard Guenther  <rguenther@suse.de>
27101
27102         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
27103         (fold_stmt_r): Likewise.
27104         (maybe_fold_reference): New function.
27105         (fold_gimple_assign): Handle cases fold_stmt_r did.
27106         (fold_stmt): Do not use fold_stmt_r.
27107         (fold_stmt_inplace): Likewise.
27108
27109 2009-04-17  Richard Guenther  <rguenther@suse.de>
27110
27111         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
27112         (record_equivalences_from_stmt): Remove useless checks and
27113         simplifications.
27114         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
27115         the type is already suitable.
27116
27117 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
27118
27119         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
27120
27121 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
27122
27123         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
27124         (CMPtype): Define as __gcc_CMPtype.
27125
27126 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
27127
27128         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
27129         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
27130
27131 2009-04-17  Richard Guenther  <rguenther@suse.de>
27132
27133         PR tree-optimization/39746
27134         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
27135         special-casing for builtins and static variable use/def.
27136         (call_may_clobber_ref_p_1): Likewise.
27137
27138 2009-04-16  Ian Lance Taylor  <iant@google.com>
27139
27140         * df.h: Include "timevar.h".
27141         (struct df_problem): Change tv_id field to timevar_id_t.
27142         * tree-pass.h: Include "timevar.h".
27143         (struct opt_pass): Change tv_id field to timevar_id_t.
27144         * timevar.h (timevar_id_t): Define TV_NONE.
27145         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
27146         TV_NONE rather than tv_id != 0.
27147         (execute_one_pass): Likewise.
27148         * Makefile.in (DF_H): Add $(TIMEVAR_H).
27149         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
27150         dependencies to $(TREE_PASS_H).
27151         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
27152         to TV_NONE.
27153         (pass_branch_target_load_optimize2): Likewise.
27154         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
27155         (pass_outof_cfg_layout_mode): Likewise.
27156         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
27157         (pass_rebuild_cgraph_edges): Likewise.
27158         (pass_remove_cgraph_callee_edges): Likewise.
27159         * df-core.c (pass_df_initialize_opt): Likewise.
27160         (pass_df_initialize_no_opt): Likewise.
27161         (pass_df_finish): Likewise.
27162         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
27163         * except.c (pass_set_nothrow_function_flags): Likewise.
27164         (pass_convert_to_eh_region_ranges): Likewise.
27165         * final.c (pass_compute_alignments): Likewise.
27166         * function.c (pass_instantiate_virtual_regs): Likewise.
27167         (pass_init_function): Likewise.
27168         (pass_leaf_regs): Likewise.
27169         (pass_match_asm_constraints): Likewise.
27170         * gimple-low.c (pass_lower_cf): Likewise.
27171         (pass_mark_used_blocks): Likewise.
27172         * init-regs.c (pass_initialize_regs): Likewise.
27173         * integrate.c (pass_initial_value_sets): Likewise.
27174         * ira.c (pass_ira): Likewise.
27175         * jump.c (pass_cleanup_barriers): Likewise.
27176         * omp-low.c (pass_expand_omp): Likewise.
27177         (pass_lower_omp): Likewise.
27178         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
27179         * recog.c (pass_split_all_insns): Likewise.
27180         (pass_split_after_reload): Likewise.
27181         (pass_split_before_regstack): Likewise.
27182         (pass_split_before_sched2): Likewise.
27183         (pass_split_for_shorten_branches): Likewise.
27184         * reginfo.c (pass_reginfo_init): Likewise.
27185         (pass_subregs_of_mode_init): Likewise.
27186         (pass_subregs_of_mode_finish): Likewise.
27187         * passes.c (pass_postreload): Likewise.
27188         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
27189         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
27190         (pass_warn_function_return): Likewise.
27191         (pass_warn_function_noreturn): Likewise.
27192         * tree-complex.c (pass_lower_complex): Likewise.
27193         (pass_lower_complex_O0): Likewise.
27194         * tree-if-conv.c (pass_if_conversion): Likewise.
27195         * tree-into-ssa.c (pass_build_ssa): Likewise.
27196         * tree-mudflap.c (pass_mudflap_1): Likewise.
27197         (pass_mudflap_2): Likewise.
27198         * tree-nomudflap.c (pass_mudflap_1): Likewise.
27199         (pass_mudflap_2): Likewise.
27200         * tree-nrv.c (pass_return_slot): Likewise.
27201         * tree-object-size.c (pass_object_sizes): Likewise.
27202         * tree-optimize.c (pass_all_optimizations): Likewise.
27203         (pass_early_local_passes): Likewise.
27204         (pass_all_early_optimizations): Likewise.
27205         (pass_cleanup_cfg): Likewise.
27206         (pass_cleanup_cfg_post_optimizing): Likewise.
27207         (pass_free_datastructures): Likewise.
27208         (pass_free_cfg_annotations): Likewise.
27209         (pass_fixup_cfg): Likewise.
27210         (pass_init_datastructures): Likewise.
27211         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
27212         (pass_late_warn_uninitialized): Likewise.
27213         (pass_update_address_taken): Likewise.
27214         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
27215         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
27216         (pass_cse_sincos): Likewise.
27217         (pass_convert_to_rsqrt): Likewise.
27218         * tree-ssa-structalias.c (pass_build_alias): Likewise.
27219         * tree-stdarg.c (pass_stdarg): Likewise.
27220         * tree-tailcall.c (pass_tail_recursion): Likewise.
27221         (pass_tail_calls): Likewise.
27222         * tree-vect-generic.c (pass_lower_vector): Likewise.
27223         (pass_lower_vector_ssa): Likewise.
27224         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
27225
27226 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
27227
27228         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
27229         XLR entry.
27230         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
27231         Handle -march=xlr.
27232         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
27233         logical and signext.
27234
27235 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
27236
27237         PR target/39767
27238         * config/sh/predicates.md (arith_operand): Check if the operand
27239         of TRUNCATE is a REG.
27240
27241 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27242
27243         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
27244         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
27245
27246 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27247
27248         * tree-iterator.c (tsi_split_statement_list_after,
27249         tsi_split_statement_list_before): Remove.
27250         * tree-iterator.h: Remove the prototypes for
27251         tsi_split_statement_list_after and tsi_split_statement_list_before.
27252
27253 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27254
27255         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
27256         * tree-ssa-propagate.h: Remove the prototype for
27257         stmt_makes_single_load.
27258
27259 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27260
27261         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
27262         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
27263
27264 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27265
27266         * tree-iterator.c (EXPR_LAST_BODY): Remove.
27267
27268 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27269
27270         * except.c (eh_region_outer_p): Remove.
27271         * except.h: Remove the prototype for eh_region_outer_p.
27272
27273 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27274
27275         * function.c (current_function_assembler_name): Remove.
27276         * function.h: Remove the prototype for
27277         current_function_assembler_name.
27278
27279 2009-04-16  Ian Lance Taylor  <iant@google.com>
27280
27281         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
27282         (add_reg_note): Call alloc_reg_note.
27283         * rtl.h (alloc_reg_note): Declare.
27284         * combine.c (try_combine): Use alloc_reg_note.
27285         (recog_for_combine, move_deaths): Likewise.
27286         (distribute_notes): Use alloc_reg_note and add_reg_note.
27287         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
27288         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
27289         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
27290
27291 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
27292
27293         PR rtl-optimization/39762
27294         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
27295         ira_may_move_out_cost): Add comments about way of their usage.
27296         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
27297
27298         * ira-conflicts.c (process_regs_for_copy): Use function
27299         ira_get_register_move_cost instead of global
27300         ira_register_move_cost.
27301
27302         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
27303         color_pass, move_spill_restore, update_curr_costs): Ditto.
27304
27305         * ira-lives.c (process_single_reg_class_operands): Ditto.
27306
27307         * ira-emit.c (emit_move_list): Ditto.
27308
27309         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
27310         (record_reg_classes): Ditto.  Use functions
27311         ira_get_register_move_cost and ira_get_may_move_cost instead of
27312         global vars ira_register_move_cost, ira_may_move_out_cost and
27313         ira_may_move_in_cost.
27314         (record_address_regs): Don't call ira_init_register_move_cost.
27315         Use function ira_get_may_move_cost instead of global
27316         ira_may_move_in_cost.
27317         (process_bb_node_for_hard_reg_moves): Use function
27318         ira_get_register_move_cost instead of global ira_register_move_cost.
27319         (ira_costs): Don't call ira_init_register_move_cost.
27320
27321 2009-04-16  Richard Guenther  <rguenther@suse.de>
27322
27323         * tree-cfg.c (verify_gimple_assign_binary):
27324         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
27325         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
27326         (create_general_new_stmt): Note that this function is broken.
27327
27328 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27329
27330         * common.opt (fhelp): Add Var(help_flag).
27331         * gcc-plugin.h (plugin_info): Add help.
27332         * plugin.c (plugin_name_args): Add help.
27333         (register_plugin_info): Set plugin->help.
27334         (print_help_one_plugin): New.
27335         (print_plugins_help): New.
27336         * plugin.h (print_plugins_help): New.
27337         * toplev.c (toplev_main): Call print_plugins_help if needed.
27338
27339 2009-04-16  Richard Guenther  <rguenther@suse.de>
27340
27341         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
27342         (gimple_ior_addresses_taken_1): New function.
27343         (gimple_ior_addresses_taken): Likewise.
27344         * gimple.h (struct gimple_statement_with_ops_base): Remove
27345         addresses_taken member.
27346         (gimple_ior_addresses_taken): Declare.
27347         (gimple_addresses_taken, gimple_addresses_taken_ptr,
27348         gimple_set_addresses_taken): Remove.
27349         * ipa-reference.c (mark_address): New function.
27350         (scan_stmt_for_static_refs): Use it for marking addresses taken.
27351         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
27352         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
27353         (gimple_add_to_addresses_taken): Remove.
27354         (get_tmr_operands): Call mark_address_taken.
27355         (get_asm_expr_operands): Likewise.
27356         (get_expr_operands): Likewise.
27357         (build_ssa_operands): Do not clear the addresses_taken bitmap.
27358         (free_stmt_operands): Do not free it.
27359         * tree-ssa.c (delete_tree_ssa): Likewise.
27360         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
27361
27362 2009-04-16  Richard Guenther  <rguenther@suse.de>
27363
27364         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
27365         (walk_stmt_load_store_ops): Likewise.
27366         * gimple.c (get_base_loadstore): New function.
27367         (walk_stmt_load_store_addr_ops): Likewise.
27368         (walk_stmt_load_store_ops): Likewise.
27369         * ipa-pure-const.c (check_op): Simplify.
27370         (check_load, check_store): New functions.
27371         (check_stmt): Use walk_stmt_load_store_ops.
27372         * ipa-reference.c (mark_load): Adjust signature.
27373         (mark_store): Likewise.
27374         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
27375
27376 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27377
27378         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
27379         (plugin_info): New.
27380         * opts.c (common_handle_option): Don't call print_version.
27381         * plugin.c (plugin_name_args): Add version.
27382         (register_plugin_info): New.
27383         (register_callback): Handle PLUGIN_INFO.
27384         (try_init_one_plugin): New.
27385         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
27386         if failed to init.
27387         (finalize_one_plugin): New.
27388         (finalize_plugins): New.
27389         (print_one_plugin): New.
27390         (print_plugins_versions): New.
27391         * plugin.h (print_plugins_versions): New.
27392         (finalize_plugins): New.
27393         * toplev.c (compile_file): Don't call initialize_plugins.
27394         (print_version): Call print_plugins_versions.
27395         (toplev_main): Call initialize_plugins. Print version if needed.
27396         Call finalize_plugins.
27397
27398 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27399
27400         * common.opt (fversion): New.
27401         * gcc.c (print_version): New.
27402         (process_command): Don't print the version. Just set print_version.
27403         (main): Print version. Call subprocesses if print_version and
27404         verbose_flag are set.
27405         * opts.c (common_handle_option): Handle OPT_fversion.
27406
27407 2009-04-16  Richard Guenther  <rguenther@suse.de>
27408             Ira Rosen  <irar@il.ibm.com>
27409
27410         PR tree-optimization/39698
27411         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
27412         type of the reduction variable.  Only generate the def if
27413         it is needed.
27414
27415         * omp-low.c (expand_omp_for_generic): When converting to a pointer
27416         make sure to first convert to an integer of the same precision.
27417         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
27418         the type of the evolution correctly in computing the new
27419         induction variable base.
27420
27421 2009-04-16  Richard Guenther  <rguenther@suse.de>
27422
27423         PR middle-end/39625
27424         * tree-cfg.c (make_blocks): Split statements with to-be
27425         abnormal SSA names on the lhs.
27426
27427 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
27428
27429         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
27430         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
27431         * c-typeck.c (really_start_incremental_init): Likewise.
27432         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
27433         (TARGET_INITIALIZER): Remove it.
27434         * target.h (struct target): Remove vector_opaque_p.
27435         * tree.c (build_opaque_vector_type): New.
27436         * tree.h (TYPE_VECTOR_OPAQUE): New.
27437         (build_opaque_vector_type): Declare.
27438         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
27439         * config/rs6000/rs6000.c (build_opaque_vector_type,
27440         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
27441         (rs6000_init_builtins): Use build_opaque_vector_type for
27442         opaque_V4SI_type_node.
27443
27444 2009-04-15  Catherine Moore  <clm@codesourcery.com>
27445
27446         * debug.h (set_name):  Declare.
27447         * dwarf2out.c (dwarf2out_set_name): Declare.
27448         (dwarf2_debug_hooks): Add set_name.
27449         (find_AT_string): New.
27450         (add_AT_string): Call find_AT_string.
27451         (dwarf2out_set_name): New.
27452         * cp/decl.c (grokdeclarator): Call set_name.
27453         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
27454         * debug.c (do_nothing_debug_hooks):  Likewise.
27455         * dbxout.c (dbx_debug_hooks): Likewise.
27456         * sdbout.c (sdb_debug_hooks): Likewise.
27457
27458 2009-04-15  Michael Eager  <eager@eagercon.com>
27459
27460         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
27461         reg for single-precision FPU.
27462         * config/rs6000/rs6000.md (movsi_internal1): Only for
27463         !TARGET_SINGLE_FPU.
27464         (movsi_internal1_single): New. Add pattern to move SI values to/from
27465         single-precision FP regs.
27466
27467 2009-04-15  Richard Guenther  <rguenther@suse.de>
27468
27469         * omp-low.c (lower_rec_input_clauses): Build correct address
27470         expressions.
27471         (expand_omp_for_generic): Fix multiplication type.
27472         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
27473         (generate_memset_zero): Fix types.
27474         * tree-profile.c (prepare_instrumented_value): Correctly
27475         widen a pointer.
27476
27477 2009-04-15  Ian Lance Taylor  <iant@google.com>
27478
27479         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
27480         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
27481         for -Wall and for -Wc++-compat.
27482         (c_common_post_options): For C++, set warn_enum_compare if not
27483         already set.
27484         * c-tree.h (struct c_expr): Add field original_type.
27485         (build_external_ref): Update declaration.
27486         * c-parser.c (c_parser_braced_init): Set original_type.
27487         (c_parser_initelt): Likewise.
27488         (c_parser_expr_no_commas): Likewise.
27489         (c_parser_conditional_expression): Likewise.
27490         (c_parser_cast_expression): Likewise.
27491         (c_parser_unary_expression): Likewise.  Pull setting of
27492         original_code to top of function.
27493         (c_parser_sizeof_expression): Set original_type.
27494         (c_parser_alignof_expression): Likewise.
27495         (c_parser_postfix_expression): Likewise.  Pull setting of
27496         original_code to top of function.
27497         (c_parser_postfix_expression_after_paren_type): Set original_type.
27498         (c_parser_postfix_expression_after_primary): Likewise.
27499         (c_parser_expression): Likewise.
27500         * c-typeck.c (build_external_ref): Add type parameter.  Change all
27501         callers.
27502         (c_expr_sizeof_expr): Set original_type field.
27503         (parser_build_unary_op): Likewise.
27504         (parser_build_binary_op): Likewise.  Optionally warn about
27505         comparisons of enums of different types.
27506         (digest_init): Set original_type field.
27507         (really_start_incremental_init): Likewise.
27508         (push_init_level, pop_init_level): Likewise.
27509         * doc/invoke.texi (Warning Options): -Wenum-compare now
27510         supported in C.
27511
27512 2009-04-15  Richard Guenther  <rguenther@suse.de>
27513
27514         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
27515         out a necessary conversion.
27516         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
27517         names we didn't value number.
27518         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
27519
27520 2009-04-15  Richard Guenther  <rguenther@suse.de>
27521
27522         PR tree-optimization/39764
27523         * tree-ssa-ccp.c (get_value): Canonicalize value with
27524         canonicalize_float_value.
27525
27526 2009-04-15  Jan Hubicka  <jh@suse.cz>
27527
27528         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
27529         Wrong version of patch.
27530
27531 2009-04-15  Jan Hubicka  <jh@suse.cz>
27532
27533         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
27534
27535 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
27536
27537         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
27538         our distinct integral and vector types.
27539
27540 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
27541
27542         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
27543         * init.c (build_vtbl_address): Remove call to assemble_external.
27544
27545 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
27546
27547         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
27548         output for other floating point modes.
27549
27550 2009-04-14  Diego Novillo  <dnovillo@google.com>
27551
27552         * diagnostic.c (diagnostic_report_diagnostic): Do not
27553         warn about loaded plugins for DK_ERROR and DK_WARNING.
27554         * c-decl.c (declspecs_add_type): Move call to
27555         invoke_plugin_callbacks ...
27556         * c-parser.c (c_parser_declspecs): ... here.
27557         * plugin.c (dump_active_plugins): Tidy output.
27558
27559 2009-04-14  Diego Novillo  <dnovillo@google.com>
27560             Le-Chun Wu  <lcwu@google.com>
27561
27562         * configure.ac: Add --enable-plugin support.
27563         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
27564         * Makefile.in (PLUGIN_H): Define.
27565         Export ENABLE_PLUGIN and GMPINC to site.exp.
27566         Add PLUGINLIBS to link command.
27567         Add/modify dependencies for plugin.o and files including plugin.h.
27568         (plugin.o): New.
27569         * config.in: Regenerate.
27570
27571         * opts.c (common_handle_option): Handle OPT_fplugin_ and
27572         OPT_fplugin_arg_.
27573
27574 2009-04-14  Le-Chun Wu  <lcwu@google.com>
27575
27576         * tree-pass.h (register_one_dump_file): Add a prototype for
27577         register_one_dump_file.
27578         * toplev.c (compile_file): Call initialize_plugins.
27579         (do_compile): Call invoke_plugin_callbacks.
27580         (toplev_main): Call invoke_plugin_callbacks.
27581         * common.opt: Add -fplugin= and -fplugin-arg-.
27582         * gcc-plugin.h: New public header file for plugins to include.
27583         * plugin.c: New source file.
27584         * plugin.h: New internal header file.
27585         * passes.c (register_one_dump_file): Make it external.
27586
27587         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
27588
27589 2009-04-14  Diego Novillo  <dnovillo@google.com>
27590
27591         * doc/plugins.texi: New.
27592         * doc/gccint.texi: Add reference to Plugins chapter.
27593         * doc/invoke.texi: Document -fplugin and -fplugin-arg
27594         * diagnostic.c (diagnostic_report_diagnostic): Warn about
27595         loaded plugins, if any.
27596         * timevar.def (TV_PLUGIN_INIT): Define.
27597         (TV_PLUGIN_RUN): Define.
27598         * plugin.c: Include timevar.h
27599         (plugins_active_p): New.
27600         (dump_active_plugins): New.
27601         (debug_active_plugins): New.
27602
27603 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
27604
27605         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
27606         library paths.
27607         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
27608
27609 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
27610
27611         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
27612         the same as a minus without a shift.
27613
27614 2009-04-14  Nick Clifton  <nickc@redhat.com>
27615
27616         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
27617         comparisons with small integers will always produce a short
27618         branch.
27619
27620 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
27621
27622         Merge:
27623         2008-12-19  Diego Novillo  <dnovillo@google.com>
27624
27625         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
27626
27627 2009-04-14  Richard Guenther  <rguenther@suse.de>
27628
27629         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
27630         verification.
27631         (verify_gimple_assign_binary): Likewise.  Handle shifts and
27632         rotates correctly.
27633         (verify_gimple_phi): Print the mismatched argument position.
27634         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
27635         Fix types.
27636         (vect_update_init_of_dr): Likewise.
27637         * matrix-reorg.c (transform_access_sites): Do what the
27638         comment suggests.
27639         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
27640
27641 2009-04-13  Michael Eager  <eager@eagercon.com>
27642
27643         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
27644         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
27645         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
27646         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
27647         remove duplicate config
27648
27649 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
27650
27651         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
27652         file_name:line_number type locator of the call site.
27653
27654 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
27655
27656         * genautomata.c: Put blank after comma.
27657         (automaton_decls): New.
27658         (struct unit_usage): Add comments to member next.
27659         (store_alt_unit_usage): Keep the list ordered.
27660         (unit_present_on_list_p, equal_alternatives_p): New.
27661         (check_regexp_units_distribution): Check units distribution
27662         correctness correctly.
27663         (main): Don't write automata if error is found.  Return correct
27664         exit code.
27665
27666         * config/m68k/cf.md (cfv4_ds): Remove.
27667         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
27668         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
27669
27670         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
27671         power4-load-ext, power4-store, power4-store-update,
27672         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
27673         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
27674         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
27675         power4-sqrt, power4-isync): Modify reservation to make correct
27676         unit distribution to automata.
27677
27678         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
27679         power5-store-update, power5-two, power5-three, power5-lmul,
27680         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
27681
27682 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
27683
27684         * except.c (pass_set_nothrow_function_flags): Set name and add
27685         TODO_dump_func.
27686         (set_nothrow_function_flags): Mention in the dump file when
27687         changing a function to nothrow.
27688
27689 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
27690
27691         PR/39066
27692         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
27693         instead of unsigned long.
27694
27695 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27696
27697         * config/arm/arm.c (return_used_this_function): Remove.
27698         (arm_output_function_prologue): Remove use of
27699         return_used_this_function.
27700         (output_return_instruction): Replace use of
27701         return_used_this_function
27702         by cfun->machine->return_used_this_function.
27703         (arm_output_epilogue): Likewise.
27704         (arm_output_function_epilogue): Likewise.
27705         (thumb_unexpanded_epilogue): Likewise.
27706         * config/arm/arm.h (struct machine_function):
27707         New member return_used_this_function.
27708
27709 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
27710
27711         * doc/install.texi: Correct description of default directory for
27712         --with-gxx-include-dir.
27713
27714 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
27715
27716         * fold-const.c (build_range_check): Properly deal with enumeral and
27717         boolean base types.
27718
27719 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
27720
27721         * doc/invoke.texi (max_gcse_passes): Remove documentation.
27722         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
27723         * params.h (MAX_GCSE_PASSES): Remove.
27724         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
27725         in sequence.  Remove ability to run multiple passes.
27726         (bypass_jumps): Report run as third CPROP pass.
27727
27728 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
27729
27730         PR middle-end/39651
27731         * except.c (can_throw_external): Look at each insn in a SEQUENCE
27732         when deciding whether the whole SEQUENCE can throw.
27733
27734 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
27735
27736         PR target/39740
27737         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
27738         offseted label references.
27739
27740 2009-04-11  Jan Hubicka  <jh@suse.cz>
27741
27742         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
27743
27744 2009-04-11  Richard Guenther  <rguenther@suse.de>
27745
27746         PR middle-end/39732
27747         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
27748         return variables as TREE_ADDRESSABLE.
27749
27750 2009-04-11  Richard Guenther  <rguenther@suse.de>
27751
27752         PR tree-optimization/39713
27753         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
27754         reference trees have SSA_NAME operands.
27755
27756 2009-04-11  Richard Guenther  <rguenther@suse.de>
27757
27758         PR c/39712
27759         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
27760         address expressions.
27761
27762 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
27763
27764         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
27765         match changes in Cygwin 1.7
27766         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27767         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
27768
27769 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27770
27771         PR tree-optimization/39701
27772         * doc/invoke.texi (Optimization Options): Document change in
27773         meaning and initialization of -fdelete-null-pointer-checks.
27774
27775 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27776
27777         PR middle-end/39701
27778         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
27779
27780         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
27781         here.
27782
27783         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
27784
27785 2009-04-10  Chao-ying Fu  <fu@mips.com>
27786
27787         * doc/tm.texi (Instruction Output): Document
27788         TARGET_ASM_FINAL_POSTSCAN_INSN.
27789         * target.h (final_postscan_insn): New field in asm_out.
27790         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27791         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
27792         * final.c (final_scan_insn): Call
27793         targetm.asm_out.final_postscan_insn after outputting
27794         an asm macro and a normal instruction.
27795
27796         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
27797         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
27798         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
27799         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
27800         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27801
27802 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27803
27804         PR middle-end/39701
27805         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
27806         variables as non-NULL even with -fdelete-null-pointer-checks.
27807
27808 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27809
27810         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
27811
27812 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
27813
27814         PR target/39678
27815         * config/i386/i386.c (classify_argument): Handle SCmode with
27816         (bit_offset % 64) != 0.
27817
27818 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
27819
27820         * doc/invoke.texi (Optimize Options): Add cross-reference to
27821         -Q --help=optimizers examples.
27822
27823 2009-04-10  Ben Elliston  <bje@au.ibm.com>
27824
27825         PR target/36800
27826         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
27827         regalign for the reg == fpr and TDmode case.
27828
27829 2009-04-09  David Ayers  <ayers@fsfe.org>
27830
27831         PR objc/29200
27832         * objc/objc-act.c (warn_with_method): Remove helper function.
27833         (check_duplicates): Call warning and inform directly.
27834         (really_start_method): Likewise.
27835
27836 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27837
27838         * expmed.c (expand_divmod): Always use a comparison for a division
27839         by a large unsigned integer.
27840
27841         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
27842         for things others than variables or functions as nonzero.
27843
27844 2009-04-09  Nick Clifton  <nickc@redhat.com>
27845
27846         * unwind-compat.c: Change copyright header to refer to version
27847         3 of the GNU General Public License with version 3.1 of the
27848         GCC Runtime Library Exception and to point readers at the
27849         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
27850         * config/alpha/crtfastmath.c: Likewise.
27851         * config/alpha/linux-unwind.h: Likewise.
27852         * config/alpha/qrnnd.asm: Likewise.
27853         * config/alpha/vms-crt0-64.c: Likewise.
27854         * config/alpha/vms-crt0.c: Likewise.
27855         * config/alpha/vms-dwarf2.asm: Likewise.
27856         * config/alpha/vms-dwarf2eh.asm: Likewise.
27857         * config/alpha/vms-psxcrt0-64.c: Likewise.
27858         * config/alpha/vms-psxcrt0.c: Likewise.
27859         * config/alpha/vms_tramp.asm: Likewise.
27860         * config/arc/initfini.c: Likewise.
27861         * config/arc/lib1funcs.asm: Likewise.
27862         * config/arm/bpabi-v6m.S: Likewise.
27863         * config/arm/bpabi.S: Likewise.
27864         * config/arm/bpabi.c: Likewise.
27865         * config/arm/crti.asm: Likewise.
27866         * config/arm/crtn.asm: Likewise.
27867         * config/arm/ieee754-df.S: Likewise.
27868         * config/arm/ieee754-sf.S: Likewise.
27869         * config/arm/lib1funcs.asm: Likewise.
27870         * config/arm/libunwind.S: Likewise.
27871         * config/arm/linux-atomic.c: Likewise.
27872         * config/arm/mmintrin.h: Likewise.
27873         * config/arm/pr-support.c: Likewise.
27874         * config/arm/unaligned-funcs.c: Likewise.
27875         * config/arm/unwind-arm.c: Likewise.
27876         * config/arm/unwind-arm.h: Likewise.
27877         * config/avr/libgcc.S: Likewise.
27878         * config/bfin/crti.s: Likewise.
27879         * config/bfin/crtlibid.s: Likewise.
27880         * config/bfin/crtn.s: Likewise.
27881         * config/bfin/lib1funcs.asm: Likewise.
27882         * config/bfin/linux-unwind.h: Likewise.
27883         * config/cris/arit.c: Likewise.
27884         * config/cris/cris_abi_symbol.c: Likewise.
27885         * config/darwin-64.c: Likewise.
27886         * config/darwin-crt2.c: Likewise.
27887         * config/darwin-crt3.c: Likewise.
27888         * config/darwin.h: Likewise.
27889         * config/dbxelf.h: Likewise.
27890         * config/dfp-bit.c: Likewise.
27891         * config/dfp-bit.h: Likewise.
27892         * config/elfos.h: Likewise.
27893         * config/fixed-bit.c: Likewise.
27894         * config/fixed-bit.h: Likewise.
27895         * config/fp-bit.c: Likewise.
27896         * config/fp-bit.h: Likewise.
27897         * config/fr30/crti.asm: Likewise.
27898         * config/fr30/crtn.asm: Likewise.
27899         * config/fr30/lib1funcs.asm: Likewise.
27900         * config/freebsd-spec.h: Likewise.
27901         * config/frv/cmovd.c: Likewise.
27902         * config/frv/cmovh.c: Likewise.
27903         * config/frv/cmovw.c: Likewise.
27904         * config/frv/frvbegin.c: Likewise.
27905         * config/frv/frvend.c: Likewise.
27906         * config/frv/lib1funcs.asm: Likewise.
27907         * config/glibc-stdint.h: Likewise.
27908         * config/h8300/clzhi2.c: Likewise.
27909         * config/h8300/crti.asm: Likewise.
27910         * config/h8300/crtn.asm: Likewise.
27911         * config/h8300/ctzhi2.c: Likewise.
27912         * config/h8300/fixunssfsi.c: Likewise.
27913         * config/h8300/lib1funcs.asm: Likewise.
27914         * config/h8300/parityhi2.c: Likewise.
27915         * config/h8300/popcounthi2.c: Likewise.
27916         * config/i386/ammintrin.h: Likewise.
27917         * config/i386/att.h: Likewise.
27918         * config/i386/avxintrin.h: Likewise.
27919         * config/i386/biarch64.h: Likewise.
27920         * config/i386/bmmintrin.h: Likewise.
27921         * config/i386/cpuid.h: Likewise.
27922         * config/i386/cross-stdarg.h: Likewise.
27923         * config/i386/crtfastmath.c: Likewise.
27924         * config/i386/crtprec.c: Likewise.
27925         * config/i386/cygming-crtbegin.c: Likewise.
27926         * config/i386/cygming-crtend.c: Likewise.
27927         * config/i386/cygwin.asm: Likewise.
27928         * config/i386/emmintrin.h: Likewise.
27929         * config/i386/gmm_malloc.h: Likewise.
27930         * config/i386/gthr-win32.c: Likewise.
27931         * config/i386/i386.h: Likewise.
27932         * config/i386/immintrin.h: Likewise.
27933         * config/i386/linux-unwind.h: Likewise.
27934         * config/i386/linux64.h: Likewise.
27935         * config/i386/mm3dnow.h: Likewise.
27936         * config/i386/mmintrin-common.h: Likewise.
27937         * config/i386/mmintrin.h: Likewise.
27938         * config/i386/nmmintrin.h: Likewise.
27939         * config/i386/pmm_malloc.h: Likewise.
27940         * config/i386/pmmintrin.h: Likewise.
27941         * config/i386/smmintrin.h: Likewise.
27942         * config/i386/sol2-c1.asm: Likewise.
27943         * config/i386/sol2-ci.asm: Likewise.
27944         * config/i386/sol2-cn.asm: Likewise.
27945         * config/i386/sol2-gc1.asm: Likewise.
27946         * config/i386/tmmintrin.h: Likewise.
27947         * config/i386/unix.h: Likewise.
27948         * config/i386/w32-unwind.h: Likewise.
27949         * config/i386/wmmintrin.h: Likewise.
27950         * config/i386/x86-64.h: Likewise.
27951         * config/i386/x86intrin.h: Likewise.
27952         * config/i386/xmmintrin.h: Likewise.
27953         * config/ia64/crtbegin.asm: Likewise.
27954         * config/ia64/crtend.asm: Likewise.
27955         * config/ia64/crtfastmath.c: Likewise.
27956         * config/ia64/crti.asm: Likewise.
27957         * config/ia64/crtn.asm: Likewise.
27958         * config/ia64/fde-glibc.c: Likewise.
27959         * config/ia64/lib1funcs.asm: Likewise.
27960         * config/ia64/linux-unwind.h: Likewise.
27961         * config/ia64/quadlib.c: Likewise.
27962         * config/ia64/unwind-ia64.c: Likewise.
27963         * config/linux.h: Likewise.
27964         * config/m32c/m32c-lib1.S: Likewise.
27965         * config/m32c/m32c-lib2-trapv.c: Likewise.
27966         * config/m32c/m32c-lib2.c: Likewise.
27967         * config/m32r/initfini.c: Likewise.
27968         * config/m68hc11/larith.asm: Likewise.
27969         * config/m68hc11/m68hc11-crt0.S: Likewise.
27970         * config/m68k/cf.md: Likewise.
27971         * config/m68k/crti.s: Likewise.
27972         * config/m68k/crtn.s: Likewise.
27973         * config/m68k/lb1sf68.asm: Likewise.
27974         * config/m68k/linux-unwind.h: Likewise.
27975         * config/mcore/crti.asm: Likewise.
27976         * config/mcore/crtn.asm: Likewise.
27977         * config/mcore/lib1.asm: Likewise.
27978         * config/mips/linux-unwind.h: Likewise.
27979         * config/mips/loongson.h: Likewise.
27980         * config/mips/mips16.S: Likewise.
27981         * config/mmix/crti.asm: Likewise.
27982         * config/mmix/crtn.asm: Likewise.
27983         * config/pa/fptr.c: Likewise.
27984         * config/pa/hpux-unwind.h: Likewise.
27985         * config/pa/lib2funcs.asm: Likewise.
27986         * config/pa/linux-atomic.c: Likewise.
27987         * config/pa/linux-unwind.h: Likewise.
27988         * config/pa/milli64.S: Likewise.
27989         * config/pa/quadlib.c: Likewise.
27990         * config/pa/stublib.c: Likewise.
27991         * config/picochip/libgccExtras/adddi3.asm: Likewise.
27992         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
27993         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
27994         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
27995         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
27996         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
27997         * config/picochip/libgccExtras/divmod15.asm: Likewise.
27998         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
27999         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
28000         * config/picochip/libgccExtras/longjmp.asm: Likewise.
28001         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
28002         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
28003         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
28004         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
28005         * config/picochip/libgccExtras/setjmp.asm: Likewise.
28006         * config/picochip/libgccExtras/subdi3.asm: Likewise.
28007         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
28008         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
28009         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
28010         * config/rs6000/750cl.h: Likewise.
28011         * config/rs6000/altivec.h: Likewise.
28012         * config/rs6000/biarch64.h: Likewise.
28013         * config/rs6000/crtresfpr.asm: Likewise.
28014         * config/rs6000/crtresgpr.asm: Likewise.
28015         * config/rs6000/crtresxfpr.asm: Likewise.
28016         * config/rs6000/crtresxgpr.asm: Likewise.
28017         * config/rs6000/crtsavfpr.asm: Likewise.
28018         * config/rs6000/crtsavgpr.asm: Likewise.
28019         * config/rs6000/darwin-asm.h: Likewise.
28020         * config/rs6000/darwin-fallback.c: Likewise.
28021         * config/rs6000/darwin-fpsave.asm: Likewise.
28022         * config/rs6000/darwin-ldouble.c: Likewise.
28023         * config/rs6000/darwin-tramp.asm: Likewise.
28024         * config/rs6000/darwin-unwind.h: Likewise.
28025         * config/rs6000/darwin-vecsave.asm: Likewise.
28026         * config/rs6000/darwin-world.asm: Likewise.
28027         * config/rs6000/e500crtres32gpr.asm: Likewise.
28028         * config/rs6000/e500crtres64gpr.asm: Likewise.
28029         * config/rs6000/e500crtres64gprctr.asm: Likewise.
28030         * config/rs6000/e500crtrest32gpr.asm: Likewise.
28031         * config/rs6000/e500crtrest64gpr.asm: Likewise.
28032         * config/rs6000/e500crtresx32gpr.asm: Likewise.
28033         * config/rs6000/e500crtresx64gpr.asm: Likewise.
28034         * config/rs6000/e500crtsav32gpr.asm: Likewise.
28035         * config/rs6000/e500crtsav64gpr.asm: Likewise.
28036         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
28037         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
28038         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
28039         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
28040         * config/rs6000/eabi-ci.asm: Likewise.
28041         * config/rs6000/eabi-cn.asm: Likewise.
28042         * config/rs6000/eabi.asm: Likewise.
28043         * config/rs6000/linux-unwind.h: Likewise.
28044         * config/rs6000/linux64.h: Likewise.
28045         * config/rs6000/paired.h: Likewise.
28046         * config/rs6000/paired.md: Likewise.
28047         * config/rs6000/ppc64-fp.c: Likewise.
28048         * config/rs6000/ppu_intrinsics.h: Likewise.
28049         * config/rs6000/rs6000.h: Likewise.
28050         * config/rs6000/si2vmx.h: Likewise.
28051         * config/rs6000/sol-ci.asm: Likewise.
28052         * config/rs6000/sol-cn.asm: Likewise.
28053         * config/rs6000/spe.h: Likewise.
28054         * config/rs6000/spu2vmx.h: Likewise.
28055         * config/rs6000/sysv4.h: Likewise.
28056         * config/rs6000/tramp.asm: Likewise.
28057         * config/rs6000/vec_types.h: Likewise.
28058         * config/s390/linux-unwind.h: Likewise.
28059         * config/s390/tpf-unwind.h: Likewise.
28060         * config/score/crti.asm: Likewise.
28061         * config/score/crtn.asm: Likewise.
28062         * config/sh/crt1.asm: Likewise.
28063         * config/sh/crti.asm: Likewise.
28064         * config/sh/crtn.asm: Likewise.
28065         * config/sh/divtab-sh4-300.c: Likewise.
28066         * config/sh/divtab-sh4.c: Likewise.
28067         * config/sh/divtab.c: Likewise.
28068         * config/sh/lib1funcs-4-300.asm: Likewise.
28069         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
28070         * config/sh/lib1funcs.asm: Likewise.
28071         * config/sh/lib1funcs.h: Likewise.
28072         * config/sh/linux-atomic.asm: Likewise.
28073         * config/sh/linux-unwind.h: Likewise.
28074         * config/sh/shmedia.h: Likewise.
28075         * config/sh/sshmedia.h: Likewise.
28076         * config/sh/ushmedia.h: Likewise.
28077         * config/sparc/crtfastmath.c: Likewise.
28078         * config/sparc/linux-unwind.h: Likewise.
28079         * config/sparc/sol2-c1.asm: Likewise.
28080         * config/sparc/sol2-ci.asm: Likewise.
28081         * config/sparc/sol2-cn.asm: Likewise.
28082         * config/spu/divmodti4.c: Likewise.
28083         * config/spu/divv2df3.c: Likewise.
28084         * config/spu/float_disf.c: Likewise.
28085         * config/spu/float_unsdidf.c: Likewise.
28086         * config/spu/float_unsdisf.c: Likewise.
28087         * config/spu/float_unssidf.c: Likewise.
28088         * config/spu/mfc_multi_tag_release.c: Likewise.
28089         * config/spu/mfc_multi_tag_reserve.c: Likewise.
28090         * config/spu/mfc_tag_release.c: Likewise.
28091         * config/spu/mfc_tag_reserve.c: Likewise.
28092         * config/spu/mfc_tag_table.c: Likewise.
28093         * config/spu/multi3.c: Likewise.
28094         * config/spu/spu_internals.h: Likewise.
28095         * config/spu/spu_intrinsics.h: Likewise.
28096         * config/spu/spu_mfcio.h: Likewise.
28097         * config/spu/vec_types.h: Likewise.
28098         * config/spu/vmx2spu.h: Likewise.
28099         * config/stormy16/stormy16-lib2.c: Likewise.
28100         * config/svr4.h: Likewise.
28101         * config/sync.c: Likewise.
28102         * config/v850/lib1funcs.asm: Likewise.
28103         * config/vxlib-tls.c: Likewise.
28104         * config/vxlib.c: Likewise.
28105         * config/vxworks-dummy.h: Likewise.
28106         * config/xtensa/crti.asm: Likewise.
28107         * config/xtensa/crtn.asm: Likewise.
28108         * config/xtensa/ieee754-df.S: Likewise.
28109         * config/xtensa/ieee754-sf.S: Likewise.
28110         * config/xtensa/lib1funcs.asm: Likewise.
28111         * config/xtensa/lib2funcs.S: Likewise.
28112         * config/xtensa/linux-unwind.h: Likewise.
28113         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
28114         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
28115         * coretypes.h: Likewise.
28116         * crtstuff.c: Likewise.
28117         * defaults.h: Likewise.
28118         * dwarf2.h: Likewise.
28119         * emutls.c: Likewise.
28120         * gbl-ctors.h: Likewise.
28121         * gcov-io.h: Likewise.
28122         * ginclude/float.h: Likewise.
28123         * ginclude/iso646.h: Likewise.
28124         * ginclude/stdarg.h: Likewise.
28125         * ginclude/stdbool.h: Likewise.
28126         * ginclude/stddef.h: Likewise.
28127         * ginclude/stdfix.h: Likewise.
28128         * ginclude/stdint-gcc.h: Likewise.
28129         * ginclude/tgmath.h: Likewise.
28130         * gthr-aix.h: Likewise.
28131         * gthr-dce.h: Likewise.
28132         * gthr-gnat.c: Likewise.
28133         * gthr-gnat.h: Likewise.
28134         * gthr-lynx.h: Likewise.
28135         * gthr-mipssde.h: Likewise.
28136         * gthr-nks.h: Likewise.
28137         * gthr-posix.c: Likewise.
28138         * gthr-posix.h: Likewise.
28139         * gthr-posix95.h: Likewise.
28140         * gthr-rtems.h: Likewise.
28141         * gthr-single.h: Likewise.
28142         * gthr-solaris.h: Likewise.
28143         * gthr-tpf.h: Likewise.
28144         * gthr-vxworks.h: Likewise.
28145         * gthr-win32.h: Likewise.
28146         * gthr.h: Likewise.
28147         * libgcc2.c: Likewise.
28148         * libgcc2.h: Likewise.
28149         * libgcov.c: Likewise.
28150         * tsystem.h: Likewise.
28151         * typeclass.h: Likewise.
28152         * unwind-c.c: Likewise.
28153         * unwind-compat.h: Likewise.
28154         * unwind-dw2-fde-compat.c: Likewise.
28155         * unwind-dw2-fde-darwin.c: Likewise.
28156         * unwind-dw2-fde-glibc.c: Likewise.
28157         * unwind-dw2-fde.c: Likewise.
28158         * unwind-dw2-fde.h: Likewise.
28159         * unwind-dw2.c: Likewise.
28160         * unwind-dw2.h: Likewise.
28161         * unwind-generic.h: Likewise.
28162         * unwind-pe.h: Likewise.
28163         * unwind-sjlj.c: Likewise.
28164         * unwind.inc: Likewise.
28165         * config/arm/neon-gen.ml: Change generated copyright header to
28166         refer to version 3 of the GNU General Public License with
28167         version 3.1 of the GCC Runtime Library Exception and to point
28168         readers at the COPYING3 and COPYING3.RUNTIME files and the
28169         FSF's license web page.
28170         * config/arm/arm_neon.h: Regenerate.
28171
28172 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
28173
28174         * config/cris/cris.md: Change copyright header to refer to version
28175         3 of the GNU General Public License.
28176         * doc/install.texi2html: Change copyright header to refer to version
28177         3 of the GNU General Public License and to point readers at the
28178         COPYING3 file and the FSF's license web page.
28179         * config/vax/linux.h: Likewise.
28180
28181 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
28182
28183         * config/i386/i386.md (cmpcc): New.
28184         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
28185         (sync_compare_and_swap_cc*): Delete.
28186
28187         * config/s390/s390.c (s390_compare_emitted): Remove.
28188         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
28189         s390_compare_emitted used to be handled.  Assert that modes match.
28190         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
28191         refer to sync_compare_and_swap_ccsi.
28192         * config/s390/s390.h (s390_compare_emitted): Remove.
28193         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
28194         instead of s390_compare_emitted.
28195         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
28196         instead of s390_compare_emitted.
28197         * config/s390/s390.md (cmpcc): New.
28198         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
28199         CC_REGNUM, do not pretend it's set.
28200         (sync_compare_and_swap_cc*): Delete.
28201         * config/s390/predicates.md (cc_reg_operand): New.
28202
28203         * expr.c (sync_compare_and_swap_cc): Delete.
28204         * optabs.h (sync_compare_and_swap_cc): Delete.
28205         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
28206         is being used with can_compare_p.
28207         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
28208         (find_cc_set): New.
28209         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
28210         look for a MODE_CC set instead.  Use emit_store_flag.
28211         (expand_compare_and_swap_loop): Likewise, with some additional
28212         complication to avoid a force_reg when useless.  Use
28213         emit_cmp_and_jump_insns.
28214         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
28215         * doc/md.texi (sync_compare_and_swap_cc): Merge with
28216         sync_compare_and_swap documentation.
28217
28218 2009-04-09  Jan Hubicka  <jh@suse.cz>
28219
28220         * except.c (find_prev_try): Break out from ....
28221         (duplicate_eh_regions): ... here; properly update prev_try pointers
28222         when duplication part of tree.
28223         (dump_eh_tree): Improve dumping.
28224         (verify_eh_region): New.
28225         (verify_eh_tree): Use it.
28226
28227 2009-04-06  Richard Guenther  <rguenther@suse.de>
28228
28229         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
28230         &ARRAY addresses by adjusting their types and prepending
28231         a conversion.
28232         * tree-cfg.c (verify_gimple_assign_single): Verify that
28233         addresses are correct.
28234
28235 2009-04-09  Richard Guenther  <rguenther@suse.de>
28236
28237         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
28238         indices into an array reference if possible.
28239         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
28240         Fold POINTER_PLUS_EXPR statements with invariant address.
28241
28242 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
28243
28244         PR target/39634
28245         * config.gcc (powerpc64-*-linux*): Always build biarch.
28246
28247 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
28248
28249         PR c/39613
28250         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
28251         it and pedwarn if this results in an INTEGER_CST.
28252
28253 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28254
28255         * doc/install.texi: Update minimum GMP version.  Remove obsolete
28256         text in MPFR section.
28257
28258 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
28259
28260         * dwarf2out.c (class_scope_p): New static inline.
28261         (class_or_namespace_scope_p): Use it.
28262         (gen_variable_die): Use DW_TAG_member tag for static data member
28263         declarations instead of DW_TAG_variable.
28264
28265         PR middle-end/39573
28266         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
28267         variables.
28268
28269 2009-04-08  Richard Guenther  <rguenther@suse.de>
28270
28271         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
28272         valueize random data.
28273
28274 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
28275
28276         * config.gcc (aix tm_file):  Add aix-stdint.h.
28277         (aix tm clause use_gcc_stdint):  Set to wrap.
28278         * config/rs6000/aix-stdint.h:  New file.
28279
28280 2009-04-08  Richard Guenther  <rguenther@suse.de>
28281
28282         PR middle-end/36291
28283         * tree-dfa.c (add_referenced_var): Do not recurse into
28284         global initializers.
28285         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
28286         exposed variables.
28287         (fold_const_aggregate_ref): Likewise.
28288
28289 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
28290
28291         * recog.c (ordered_comparison_operator): New.
28292         * gensupport.c (std_preds): Add it.
28293         * doc/md.texi (Machine-Independent Predicates): Document it.
28294
28295 2009-04-08  Jan Hubicka  <jh@suse.cz>
28296
28297         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
28298         * function.h (rtl_eh): Remove exception_handler_label_map.
28299         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
28300         remove_exception_handler_label, for_each_eh_label_1): Remove.
28301         (rtl_remove_unreachable_regions): Remove.
28302         (convert_from_eh_region_ranges): Do not remove unreachable regions.
28303         (find_exception_handler_labels): Don't build the hashtable.
28304         (maybe_remove_eh_handler): Remove.
28305         (for_each_eh_label): Rewrite to walk the tree.
28306         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
28307         * except.h (maybe_remove_eh_handler): Remove.
28308         * passes.c (init_optimization_passes): Schedule second EH cleanup
28309         before out-of-ssa.
28310         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
28311         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
28312
28313 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
28314
28315         * genoutput.c (validate_optab_operands): New.
28316         (gen_insn, gen_expand): Call it.
28317
28318         * genflags.c (gen_insn): Detect misused iterators.
28319         (main): Pass line_no to gen_insn, exit with status 1 on error.
28320
28321         * genextract.c (line_no): Make global.
28322         (VEC_safe_set_locstr): Change assertion to error message.
28323         (main): Exit with status 1 on error.
28324
28325 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
28326
28327         PR c/39614
28328         PR c/39673
28329         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
28330         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
28331         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
28332         * c-convert.c (convert): Do not call fold on results of conversion
28333         functions when the result is a C_MAYBE_CONST_EXPR.
28334         * c-parser.c (c_parser_postfix_expression): Do not fold condition
28335         of __builtin_choose_expr.
28336         * c-typeck.c (remove_c_maybe_const_expr): New.
28337         (build_unary_op, build_conditional_expr, build_compound_expr,
28338         build_binary_op, c_objc_common_truthvalue_conversion): Call
28339         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
28340         integer operands.
28341
28342 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
28343
28344         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
28345         CODE to produce a new one. Add a prototype to use fold_convert_const
28346
28347 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
28348
28349         PR bootstrap/39660
28350         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
28351         mix declarations and code.
28352
28353 2009-04-08  Ben Elliston  <bje@au.ibm.com>
28354
28355         * gcc.c: Replace `CC' with `GCC' throughout.
28356
28357 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
28358
28359         * doc/invoke.texi: Document Atom support.
28360
28361 2009-04-07  Jason Merrill  <jason@redhat.com>
28362
28363         PR c++/25185
28364         * c-common.h, c-common.c: Add flag_pretty_templates.
28365         * c-opts.c (c_common_handle_option): Set it.
28366         * c.opt: Add -fno-pretty-templates.
28367         * doc/invoke.texi (C++ Dialect Options): Likewise.
28368
28369 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
28370
28371         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
28372         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
28373         (ia64_expand_builtin): Likewise.
28374
28375 2009-04-07  Martin Jambor  <mjambor@suse.cz>
28376
28377         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
28378         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
28379         ADDR_EXPRS are include too.
28380
28381 2009-04-07  Richard Guenther  <rguenther@suse.de>
28382
28383         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
28384         decls are only used if passes as parameters or if they are
28385         local statics and the call is not to a builtin.
28386         (call_may_clobber_ref_p_1): Likewise.
28387
28388 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28389
28390         * expr.c (do_store_flag): Remove last argument.  Simplify code
28391         to avoid duplication of tests already done by can_compare_p.
28392         (expand_expr_real_1): Adjust caller.
28393
28394 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28395
28396         * optabs.c (can_compare_p): Test the predicate of a
28397         cbranch and cstore pattern.
28398
28399 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28400
28401         * expr.c (convert_move): Use emit_store_flag instead of
28402         "emulating" it.
28403
28404 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28405
28406         * config/i386/i386.c (ix86_compare_emitted): Remove.
28407         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
28408         ix86_compare_op0 like ix86_compare_emitted used to be handled.
28409         * config/i386/i386.h (ix86_compare_emitted): Remove.
28410         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
28411         instead of ix86_compare_emitted.
28412         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
28413
28414 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
28415
28416         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
28417         Add t-sysroot-suffix to tmake_file.
28418         * config/print-sysroot-suffix.sh: New file.
28419         * config/t-sysroot-suffix: New file.
28420
28421 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28422
28423         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
28424         as the latter produces a warning when the target does not support
28425         infinity.
28426
28427 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28428
28429         * dfp.c: Replace type punning assignments with memcpy throughout.
28430         * Makefile.in (dfp.o-warn): Remove.
28431
28432 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
28433
28434         PR target/39634
28435         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
28436         Include soft-fp/t-softfp after rs6000/t-linux64.
28437
28438 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
28439
28440         * stor-layout.c (set_sizetype): Use the full precision of their
28441         machine mode for bitsize types.
28442
28443 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
28444
28445         * config/i386/i386.md: Revert 2 accidental checkins.
28446
28447 2009-04-06  Joey Ye  <joey.ye@intel.com>
28448             Xuepeng Guo  <xuepeng.guo@intel.com>
28449             H.J. Lu  <hongjiu.lu@intel.com>
28450
28451         Atom pipeline model, tuning and insn selection.
28452         * config.gcc (atom): Add atom config options and target.
28453
28454         * config/i386/atom.md: New.
28455
28456         * config/i386/i386.c (atom_cost): New cost.
28457         (m_ATOM): New macro flag.
28458         (initial_ix86_tune_features): Set m_ATOM.
28459         (x86_accumulate_outgoing_args): Likewise.
28460         (x86_arch_always_fancy_math_387): Likewise.
28461         (processor_target): Add Atom cost.
28462         (cpu_names): Add Atom cpu name.
28463         (override_options): Set Atom ISA.
28464         (ix86_issue_rate): New case PROCESSOR_ATOM.
28465         (ix86_adjust_cost): Likewise.
28466
28467         * config/i386/i386.h (TARGET_ATOM): New target macro.
28468         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
28469         (TARGET_OPT_AGU): New target option.
28470         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
28471         (processor_type): Add PROCESSOR_ATOM.
28472
28473         * config/i386/i386.md (cpu): Add new value "atom".
28474         (use_carry, movu): New attr.
28475         (atom.md): Include atom.md.
28476         (adddi3_carry_rex64): Set attr "use_carry".
28477         (addqi3_carry): Likewise.
28478         (addhi3_carry): Likewise.
28479         (addsi3_carry): Likewise.
28480         (*addsi3_carry_zext): Likewise.
28481         (subdi3_carry_rex64): Likewise.
28482         (subqi3_carry): Likewise.
28483         (subhi3_carry): Likewise.
28484         (subsi3_carry): Likewise.
28485         (x86_movdicc_0_m1_rex64): Likewise.
28486         (*x86_movdicc_0_m1_se): Likewise.
28487         (x86_movsicc_0_m1): Likewise.
28488         (*x86_movsicc_0_m1_se): Likewise.
28489         (*adddi_1_rex64): Emit add insn as much as possible.
28490         (*addsi_1): Likewise.
28491         (return_internal): Set atom_unit.
28492         (return_internal_long): Likewise.
28493         (return_pop_internal): Likewise.
28494         (*rcpsf2_sse): Set atom_sse_attr attr.
28495         (*qrt<mode>2_sse): Likewise.
28496         (*prefetch_sse): Likewise.
28497
28498         * config/i386/i386-c.c (ix86_target_macros_internal): New case
28499         PROCESSOR_ATOM.
28500         (ix86_target_macros_internal): Likewise.
28501
28502         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
28503         (*prefetch_sse_rex): Likewise.
28504         (sse_rcpv4sf2): Likewise.
28505         (sse_vmrcpv4sf2): Likewise.
28506         (sse_sqrtv4sf2): Likewise.
28507         (<sse>_vmsqrt<mode>2): Likewise.
28508         (sse_ldmxcsr): Likewise.
28509         (sse_stmxcsr): Likewise.
28510         (*sse_sfence): Likewise.
28511         (sse2_clflush): Likewise.
28512         (*sse2_mfence): Likewise.
28513         (*sse2_lfence): Likewise.
28514         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
28515         (<sse>_movup<ssemodesuffixf2c>): Likewise.
28516         (avx_movdqu<avxmodesuffix>): Likewise.
28517         (avx_lddqu<avxmodesuffix>): Likewise.
28518         (sse2_movntv2di): Change attr "type" to "ssemov".
28519         (sse2_movntsi): Likewise.
28520         (rsqrtv8sf2): Change attr "type" to "sseadd".
28521         (sse3_addsubv2df3): Set attr "atom_unit".
28522         (sse3_h<plusminus_insn>v4sf3): Likewise.
28523         (*sse2_pmaddwd): Likewise.
28524         (*vec_extractv2di_1_rex64): Likewise.
28525         (*vec_extractv2di_1_avx): Likewise.
28526         (sse2_psadbw): Likewise.
28527         (ssse3_phaddwv8hi3): Likewise.
28528         (ssse3_phaddwv4hi3): Likewise.
28529         (ssse3_phadddv4si3): Likewise.
28530         (ssse3_phadddv2si3): Likewise.
28531         (ssse3_phaddswv8hi3): Likewise.
28532         (ssse3_phaddswv4hi3): Likewise.
28533         (ssse3_phsubwv8hi3): Likewise.
28534         (ssse3_phsubwv4hi3): Likewise.
28535         (ssse3_phsubdv4si3): Likewise.
28536         (ssse3_phsubdv2si3): Likewise.
28537         (ssse3_phsubswv8hi3): Likewise.
28538         (ssse3_phsubswv4hi3): Likewise.
28539         (ssse3_pmaddubsw128): Likewise.
28540         (sse3_pmaddubsw: Likewise.
28541         (ssse3_palignrti): Likewise.
28542         (ssse3_palignrdi): Likewise.
28543
28544 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
28545
28546         * doc/install.texi (Specific): Fix two cross-references to MinGW.
28547
28548 2009-04-06  Richard Guenther  <rguenther@suse.de>
28549
28550         PR tree-optimization/28868
28551         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
28552         of which PHI results we inserted.
28553         (insert_into_preds_of_block): Record inserted PHIs.
28554         (eliminate): Eliminate redundant PHI nodes.
28555         (init_pre): Init inserted_phi_names.
28556
28557 2009-04-06  Richard Guenther  <rguenther@suse.de>
28558
28559         PR tree-optimization/39643
28560         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
28561         IMAGPART_EXPRs of complex constants.
28562         (execute_fold_all_builtins): If we folded a call queue
28563         TODO_update_address_taken.
28564
28565 2009-04-06  Jan Hubicka  <jh@suse.cz>
28566
28567         PR middle-end/39659
28568         * except.c (remove_unreachable_regions): Propagate may_contain_throw
28569         flag.
28570
28571 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
28572
28573         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
28574         delay slot.
28575         (ic_invalidate_array): Likewise.
28576
28577 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
28578
28579         * calls.c (emit_library_call_value_1): Fix a problem with parameter
28580         alignment for library calls.
28581
28582 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
28583
28584         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
28585         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
28586         * config/i386/mingw-stdint.h:  New file.
28587
28588 2009-04-05  Richard Guenther  <rguenther@suse.de>
28589
28590         PR tree-optimization/39648
28591         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
28592         our &A vs. &A[0] IL deficiencies.
28593
28594 2009-04-04  Jan Hubicka  <jh@suse.cz>
28595
28596         * except.c (sjlj_find_directly_reachable_regions): Be ready for
28597         removed toplevel regions.
28598         (sjlj_mark_call_sites): Likewise.
28599
28600 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
28601
28602         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
28603         (cygwin tm clause use_gcc_stdint):  Set to wrap.
28604         * config/i386/cygwin-stdint.h:  New file.
28605
28606 2009-04-04  Richard Guenther  <rguenther@suse.de>
28607
28608         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
28609         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
28610         single-argument PHIs if we are in loop-closed SSA form.
28611         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
28612         for the pre-condition.
28613         (slpeel_tree_peel_loop_to_edge): Likewise.
28614         (vect_build_loop_niters): Take an optional sequence to append stmts.
28615         (vect_generate_tmps_on_preheader): Likewise.
28616         (vect_do_peeling_for_loop_bound): Take extra guards for the
28617         pre-condition.
28618         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
28619         the cost model check.
28620         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
28621         guards if we are going to peel.  Do not apply versioning in that case.
28622         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
28623         (vect_do_peeling_for_loop_bound): Likewise.
28624         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
28625         loop bound only record extra pre-conditions, do not apply loop
28626         versioning.
28627
28628 2009-04-04  Richard Guenther  <rguenther@suse.de>
28629
28630         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
28631         renaming code.
28632
28633 2009-04-04  Jan Hubicka  <jh@suse.cz>
28634
28635         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
28636         last_basic_block for size of bb->index indexed array.
28637         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
28638         compute_out, link_btr_uses, build_btr_def_use_webs,
28639         build_btr_def_use_webs, migrate_btr_defs): Likewise.
28640
28641 2009-04-04  Jan Hubicka  <jh@suse.cz>
28642
28643         * except.c (remove_eh_handler_and_replace): Break out from ...
28644         (remove_eh_handler): ... here.
28645         (bring_to_root): New function.
28646         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
28647         handled ones, bring others to root of tree.
28648
28649 2009-04-04  Jan Hubicka  <jh@suse.cz>
28650
28651         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
28652         (all_phis_safe_to_merge): New function.
28653         (update_info): New structure.
28654         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
28655         (cleanup_empty_eh): Update SSA if possible.
28656
28657 2009-04-04  Richard Guenther  <rguenther@suse.de>
28658
28659         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
28660         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
28661         (append_vuse): Likewise.
28662
28663 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
28664
28665         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
28666         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
28667         instead of REG_UNSAVED for DW_CFA_undefined.
28668         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
28669         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
28670         outermost frame.
28671
28672 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
28673
28674         PR target/39501
28675         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
28676
28677 2009-04-04  Richard Guenther  <rguenther@suse.de>
28678
28679         PR tree-optimization/8781
28680         PR tree-optimization/37892
28681         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
28682         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
28683         (valueize_refs): Call it for *& valueizations.
28684         (shared_reference_ops_from_ref): Rename to ...
28685         (valueize_shared_reference_ops_from_ref): ... this and valueize.
28686         (shared_reference_ops_from_call): Rename to ...
28687         (valueize_shared_reference_ops_from_call): ... this and valueize.
28688         (vn_reference_lookup): Update.
28689         (visit_reference_op_call): Likewise.
28690         * tree-ssa-pre.c (phi_translate_1): Fold *&.
28691         (eliminate): Value-replace the call address in call statements.
28692
28693 2009-04-04  Richard Guenther  <rguenther@suse.de>
28694
28695         PR tree-optimization/39636
28696         * tree-ssa-forwprop.c
28697         (forward_propagate_addr_into_variable_array_index): Check for
28698         GIMPLE_ASSIGN before accessing the rhs code.
28699
28700 2009-04-03  Jason Merrill  <jason@redhat.com>
28701
28702         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
28703
28704 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
28705
28706         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
28707         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
28708         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
28709         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
28710         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
28711         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
28712         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
28713         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
28714         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
28715         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
28716         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
28717         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
28718         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
28719         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
28720         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
28721         Use fr_reg_or_fp01_operand instead of fr_register_operand
28722
28723         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
28724         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
28725         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
28726
28727 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
28728
28729         PR rtl-optimization/39607
28730         PR rtl-optimization/39631
28731
28732         Revert:
28733
28734         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28735         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28736         instead of DF_LR_OUT.
28737         * ira-lives.c (process_bb_node_lives): Ditto.
28738         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28739         instead of DF_LR_{OUT,IN}.
28740         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28741         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28742
28743 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
28744
28745         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
28746         (execute_lower_omp): Always run but take the short way out if -fopenmp
28747         is not given.
28748         (gate_lower_omp): Remove, forcing the pass manager to always run the
28749         pass and always set PROP_gimple_lomp.
28750         (pass_lower_omp): Remove gate function.
28751         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
28752         PROP_trees.  Instead, require it.
28753         * ipa-cp.c (pass_ipa_cp): Likewise.
28754         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
28755         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
28756         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
28757         and PROP_gimple_leh.
28758
28759 2009-04-03  Richard Guenther  <rguenther@suse.de>
28760
28761         PR middle-end/13146
28762         PR tree-optimization/23940
28763         PR tree-optimization/33237
28764         PR middle-end/33974
28765         PR middle-end/34093
28766         PR tree-optimization/36201
28767         PR tree-optimization/36230
28768         PR tree-optimization/38049
28769         PR tree-optimization/38207
28770         PR tree-optimization/38230
28771         PR tree-optimization/38301
28772         PR tree-optimization/38585
28773         PR middle-end/38895
28774         PR tree-optimization/38985
28775         PR tree-optimization/39299
28776         * tree-ssa-structalias.h: Remove.
28777         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
28778         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
28779         (struct vuse_element_d): Remove.
28780         (struct vuse_vec_d): Likewise.
28781         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
28782         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
28783         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
28784         VUSE_ELEMENT_VAR): Likewise.
28785         (struct voptype_d): Likewise.
28786         (NUM_VOP_FREE_BUCKETS): Likewise.
28787         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
28788         (struct stmt_operands_d): Remove.
28789         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
28790         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
28791         VDEF_NUM, VDEF_VECT): Likewise.
28792         (copy_virtual_operands): Remove.
28793         (operand_build_cmp): Likewise.
28794         (create_ssa_artificial_load_stmt): Likewise.
28795         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
28796         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
28797         vuse_index and mayuse_index members.  Pack and move done and iter_type
28798         members to the front.
28799         (SSA_OP_VMAYUSE): Remove.
28800         (SSA_OP_VIRTUAL_USES): Adjust.
28801         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
28802         (unlink_stmt_vdef): Declare.
28803         (add_to_addressable_set): Remove.
28804         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
28805         (vrp_visit_stmt): Likewise.
28806         * doc/tree-ssa.texi (Alias analysis): Update.
28807         * doc/invoke.texi (max-aliased-vops): Remove docs.
28808         (avg-aliased-vops): Likewise.
28809         * tree-into-ssa.c (syms_to_rename): Remove.
28810         (need_to_update_vops_p): Likewise.
28811         (need_to_initialize_update_ssa_p): Rename to ...
28812         (update_ssa_initialized_fn): ... this.  Track function we are
28813         initialized for.
28814         (symbol_marked_for_renaming): Simplify.
28815         (add_new_name_mapping): Do not set need_to_update_vops_p.
28816         (dump_currdefs): Use SYMS_TO_RENAME.
28817         (rewrite_update_stmt): Always walk all uses/defs.
28818         (dump_update_ssa): Adjust.
28819         (init_update_ssa): Take function argument.  Track what we are
28820         initialized for.
28821         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
28822         (create_new_def_for): Initialize for cfun, assert we are initialized
28823         for cfun.
28824         (mark_sym_for_renaming): Simplify.
28825         (mark_set_for_renaming): Do not initialize update-ssa.
28826         (need_ssa_update_p): Simplify.  Take function argument.
28827         (name_mappings_registered_p): Assert we ask for the correct function.
28828         (name_registered_for_update_p): Likewise.
28829         (ssa_names_to_replace): Likewise.
28830         (release_ssa_name_after_update_ssa): Likewise.
28831         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
28832         (dump_decl_set): Do not print a newline.
28833         (debug_decl_set): Do it here.
28834         (dump_update_ssa): And here.
28835         * tree-ssa-loop-im.c (move_computations): Adjust.
28836         (movement_possibility): Likewise.
28837         (determine_max_movement): Likewise.
28838         (gather_mem_refs_stmt): Likewise.
28839         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
28840         or NAME_MEMORY_TAG.
28841         * tree-complex.c (update_all_vops): Remove.
28842         (expand_complex_move): Adjust.
28843         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
28844         Simplify test for memory referencing statement.  Exclude
28845         non-invariant ADDR_EXPRs.
28846         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
28847         * tree-loop-distribution.c (generate_memset_zero): Adjust.
28848         (rdg_flag_uses): Likewise.
28849         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
28850         related code.
28851         (tree_optimize_tail_calls_1): Also split the
28852         edge from the entry block if we have degenerate PHI nodes in
28853         the first basic block.
28854         * tree.c (init_ttree): Remove memory-tag related code.
28855         (tree_code_size): Likewise.
28856         (tree_node_structure): Likewise.
28857         (build7_stat): Re-write to be build6_stat.
28858         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
28859         (SSA_VAR_P): Adjust.
28860         (struct tree_memory_tag): Remove.
28861         (struct tree_memory_partition_tag): Likewise.
28862         (union tree_node): Adjust.
28863         (build7): Re-write to be build6.
28864         * tree-pass.h (pass_reset_cc_flags): Remove.
28865         (TODO_update_address_taken): New flag.
28866         (pass_simple_dse): Remove.
28867         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
28868         * params.h (MAX_ALIASED_VOPS): Remove.
28869         (AVG_ALIASED_VOPS): Likewise.
28870         * omp-low.c (expand_omp_taskreg): Update SSA form.
28871         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
28872         aliases the lhs in a copy stmt.
28873         * tree-ssa-dse.c (struct address_walk_data): Remove.
28874         (memory_ssa_name_same): Likewise.
28875         (memory_address_same): Likewise.
28876         (get_kill_of_stmt_lhs): Likewise.
28877         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
28878         unused stores.  Look through PHI nodes into post-dominated regions.
28879         (dse_optimize_stmt): Simplify.  Properly remove stores.
28880         (tree_ssa_dse): Compute dominators.
28881         (execute_simple_dse): Remove.
28882         (pass_simple_dse): Likewise.
28883         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
28884         gimple_loaded_syms and gimple_stored_syms computation.
28885         * toplev.c (dump_memory_report): Dump alias and pta stats.
28886         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
28887         (vn_reference_eq): Likewise.
28888         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
28889         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
28890         valueize_vuses): Remove.
28891         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
28892         (get_def_ref_stmt_vuse): ... this.
28893         (vn_reference_lookup_2): New function.
28894         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
28895         walking equivalent vuses.  Simplify.
28896         (vn_reference_lookup): Likewise.
28897         (vn_reference_insert): Likewise.
28898         (vn_reference_insert_pieces): Likewise.
28899         (visit_reference_op_call): Simplify.
28900         (visit_reference_op_load): Likewise.
28901         (visit_reference_op_store): Likewise.
28902         (init_scc_vn): Remove shared_lookup_vuses initialization.
28903         (free_scc_vn): Remove shared_lookup_vuses freeing.
28904         (sort_vuses, sort_vuses_heap): Remove.
28905         (get_ref_from_reference_ops): Export.
28906         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
28907         vector with single vuse pointer.
28908         (vn_reference_lookup_pieces, vn_reference_lookup,
28909         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
28910         (shared_vuses_from_stmt): Remove.
28911         (get_ref_from_reference_ops): Declare.
28912         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
28913         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
28914         memory-tag related code.
28915         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
28916         (likely_value): Add comment, skip static-chain of call statements.
28917         (surely_varying_stmt_p): Adjust.
28918         (gimplify_and_update_call_from_tree): Likewise.
28919         (execute_fold_all_builtins): Do not rebuild alias info.
28920         (gimplify_and_update_call_from_tree): Properly update VOPs.
28921         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
28922         (copy_ref_info): Remove memory-tag related code.
28923         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
28924         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
28925         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
28926         computation.
28927         * tree-ssa-dom.c (gimple_p): Remove typedef.
28928         (eliminate_redundant_computations): Adjust.
28929         (record_equivalences_from_stmt): Likewise.
28930         (avail_expr_hash): Likewise.
28931         (avail_expr_eq): Likewise.
28932         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
28933         (stmt_makes_single_load): Likewise.
28934         (stmt_makes_single_store): Likewise.
28935         * tree-ssa-alias.c: Rewrite completely.
28936         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
28937         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
28938         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
28939         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
28940         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
28941         Remove public functions.
28942         (pass_reset_cc_flags): Remove.
28943         (pass_build_alias): Move ...
28944         * tree-ssa-structalias.c (pass_build_alias): ... here.
28945         * tree-ssa-alias.c (may_be_aliased): Move ...
28946         * tree-flow-inline.h (may_be_aliased): ... here.
28947         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
28948         count_uses_and_derefs): Move ...
28949         * gimple.c: ... here.
28950         * gimple.h (count_uses_and_derefs): Declare.
28951         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
28952         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
28953         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
28954         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
28955         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
28956         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
28957         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
28958         New functions.
28959         * tree-dfa.c (refs_may_alias_p): Move ...
28960         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
28961         * tree-ssa-alias.h: New file.
28962         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
28963         (statement_sink_location): Likewise.
28964         * opts.c (decode_options): Do not adjust max-aliased-vops or
28965         avg-aliased-vops values.
28966         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
28967         (TV_CALL_CLOBBER): Likewise.
28968         (TV_FLOW_SENSITIVE): Likewise.
28969         (TV_FLOW_INSENSITIVE): Likewise.
28970         (TV_MEMORY_PARTITIONING): Likewise.
28971         (TV_ALIAS_STMT_WALK): New timevar.
28972         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
28973         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
28974         (get_address_description): Remove memory-tag related code.
28975         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
28976         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
28977         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
28978         and immediate uses in statements.  Document.
28979         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
28980         (dump_symbols): Remove.
28981         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
28982         * alias.c (get_deref_alias_set): New function split out from ...
28983         (get_alias_set): ... here.
28984         * alias.h (get_deref_alias_set): Declare.
28985         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
28986         type parameter.  Remove restrict pointer handling.  Create a
28987         ref-all pointer in case type-based alias sets do not conflict.
28988         (vect_analyze_data_refs): Remove SMT related code.
28989         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
28990         (vectorizable_load): Likewise.
28991         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
28992         (DR_SYMBOL_TAG, DR_VOPS): Remove.
28993         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
28994         Ignore vops and SMTs.
28995         (dr_analyze_alias): Likewise..
28996         (free_data_ref): Likewise.
28997         (create_data_ref): Likewise.
28998         (analyze_all_data_dependences): Likewise.
28999         (get_references_in_stmt): Adjust.
29000         * tree-flow-inline.h (gimple_aliases_computed_p,
29001         gimple_addressable_vars, gimple_call_clobbered_vars,
29002         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
29003         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
29004         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
29005         gimple_mem_ref_stats): Remove.
29006         (gimple_vop): New function.
29007         (op_iter_next_use): Remove vuses and mayuses cases.
29008         (op_iter_next_def): Remove vdefs case.
29009         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
29010         (clear_and_done_ssa_iter): Do not set removed fields.
29011         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
29012         Assert we are not iterating over vuses or vdefs if not also
29013         iterating over uses or defs.
29014         (op_iter_init_use): Likewise.
29015         (op_iter_init_def): Likewise.
29016         (op_iter_next_vdef): Remove.
29017         (op_iter_next_mustdef): Likewise.
29018         (op_iter_init_vdef): Likewise.
29019         (compare_ssa_operands_equal): Likewise.
29020         (link_use_stmts_after): Handle vuse operand.
29021         (is_call_used): Use is_call_clobbered.
29022         (is_call_clobbered): Global variables are always call clobbered,
29023         query the call-clobbers bitmap.
29024         (mark_call_clobbered): Ignore global variables.
29025         (clear_call_clobbered): Likewise.
29026         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
29027         virtual operands sanity check.
29028         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
29029         Remove.
29030         (TARGET_MEM_REF): Remove TMR_TAG operand.
29031         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
29032         Remove call-clobber related code.
29033         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
29034         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
29035         partitions or escape reason.
29036         (get_single_def_stmt, get_single_def_stmt_from_phi,
29037         get_single_def_stmt_with_phi): Remove.
29038         (dump_referenced_vars): Tidy.
29039         (get_ref_base_and_extent): Allow bare decls.
29040         (collect_dfa_stats): Adjust.
29041         * graphite.c (rename_variables_in_stmt): Adjust.
29042         (graphite_copy_stmts_from_block): Likewise.
29043         (translate_clast): Likewise.
29044         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
29045         (EXPR_DIES): New.
29046         (translate_vuse_through_block): Use the oracle.
29047         (phi_translate_1): Adjust.
29048         (value_dies_in_block_x): Use the oracle.  Cache the outcome
29049         in EXPR_DIES.
29050         (valid_in_sets): Check if the VUSE for
29051         a REFERENCE is available.
29052         (eliminate): Do not remove stmts during elimination,
29053         instead queue and remove them afterwards.
29054         (do_pre): Do not rebuild alias info.
29055         (pass_pre): Run TODO_rebuild_alias before PRE.
29056         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
29057         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
29058         (mark_all_v_defs_stmt): Remove.
29059         (mark_all_v_defs_seq): Adjust.
29060         (sra_replace): Likewise.
29061         (scalarize_use): Likewise.
29062         (scalarize_copy): Likewise.
29063         (scalarize_init): Likewise.
29064         (scalarize_ldst): Likewise.
29065         (todoflags): Remove.
29066         (tree_sra): Do not rebuild alias info.
29067         (tree_sra_early): Adjust.
29068         (pass_sra): Run TODO_update_address_taken before SRA.
29069         * tree-predcom.c (set_alias_info): Remove.
29070         (prepare_initializers_chain): Do not call it.
29071         (mark_virtual_ops_for_renaming): Adjust.
29072         (mark_virtual_ops_for_renaming_list): Remove.
29073         (initialize_root_vars): Adjust.
29074         (initialize_root_vars_lm): Likewise.
29075         (prepare_initializers_chain): Likewise.
29076         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
29077         (may_propagate_copy_into_stmt): Likewise.
29078         (merge_alias_info): Do nothing for now.
29079         (propagate_tree_value_into_stmt): Adjust.
29080         (stmt_may_generate_copy): Likewise.
29081         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
29082         not mark symbols for renaming.
29083         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
29084         with the same statement, make sure to update the new pointed-to one.
29085         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
29086         call statements, do not mark symbols for renaming.
29087         (mark_operand_necessary): Dump something.
29088         (ref_may_be_aliased): New function.
29089         (mark_aliased_reaching_defs_necessary_1): New helper function.
29090         (mark_aliased_reaching_defs_necessary): Likewise.
29091         (mark_all_reaching_defs_necessary_1): Likewise.
29092         (mark_all_reaching_defs_necessary): Likewise.
29093         (propagate_necessity): Do not process virtual PHIs.  For
29094         non-aliased loads mark all reaching definitions as necessary.
29095         For aliased loads and stores mark the immediate dominating
29096         aliased clobbers as necessary.
29097         (visited): New global static.
29098         (perform_tree_ssa_dce): Free visited bitmap after propagating
29099         necessity.
29100         (remove_dead_phis): Perform simple dead virtual PHI removal.
29101         (remove_dead_stmt): Properly unlink virtual operands when
29102         removing stores.
29103         (eliminate_unnecessary_stmts): Schedule PHI removal after
29104         stmt removal.
29105         * tree-ssa-ter.c (is_replaceable_p): Adjust.
29106         (process_replaceable): Likewise.
29107         (find_replaceable_in_bb): Likewise.
29108         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
29109         based on the single gimple vop.
29110         (verify_flow_insensitive_alias_info): Remove.
29111         (verify_flow_sensitive_alias_info): Likewise.
29112         (verify_call_clobbering): Likewise.
29113         (verify_memory_partitions): Likewise.
29114         (verify_alias_info): Likewise.
29115         (verify_ssa): Adjust..
29116         (execute_update_addresses_taken): Export.  Update SSA
29117         manually.  Optimize only when optimizing.  Use a local bitmap.
29118         (pass_update_address_taken): Remove TODO_update_ssa, add
29119         TODO_dump_func.
29120         (pass_update_address_taken): Just use TODO_update_address_taken.
29121         (init_tree_ssa): Do not initialize addressable_vars.
29122         (verify_ssa): Verify new VUSE / VDEF properties.
29123         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
29124         Do not call verify_alias_info.
29125         (delete_tree_ssa): Clear the VUSE, VDEF operands.
29126         Do not free the loaded and stored syms bitmaps.  Reset the escaped
29127         and callused solutions.  Do not free addressable_vars.
29128         Remove memory-tag related code.
29129         (warn_uninitialized_var): Aliases are always available.
29130         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
29131         * lambda-code.c (can_put_in_inner_loop): Adjust.
29132         (can_put_after_inner_loop): Likewise.
29133         (perfect_nestify): Likewise.
29134         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
29135         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
29136         (vectorizable_conversion): Do not mark symbols for renaming.
29137         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
29138         (expand_call_inline): Unlink the calls virtual operands before
29139         replacing it.
29140         (tree_function_versioning): Do not call update_ssa if we are not
29141         updating clones.  Simplify.
29142         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
29143         (propagate_with_phi): Likewise..
29144         * tree-outof-ssa.c (create_temp): Remove memory tag and call
29145         clobber code.  Assert we are not aliased or global.
29146         * tree-flow.h: Include tree-ssa-alias.h
29147         (enum escape_type): Remove.
29148         (struct mem_sym_stats_d): Likewise.
29149         (struct mem_ref_stats_d): Likewise.
29150         (struct gimple_df): Add vop member.  Remove global_var,
29151         call_clobbered_vars, call_used_vars, addressable_vars,
29152         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
29153         escaped and callused members.
29154         (struct ptr_info_def): Remove all members, add points-to solution
29155         member pt.
29156         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
29157         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
29158         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
29159         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
29160         (tree-ssa-alias.o): Likewise.
29161         (toplev.o): Add tree-ssa-alias.h
29162         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
29163         * gimple.c (gimple_set_bb): Fix off-by-one error.
29164         (is_gimple_reg): Do not handle memory tags.
29165         (gimple_copy): Also copy virtual operands.
29166         Delay updating the statement.  Do not reset loaded and stored syms.
29167         (gimple_set_stored_syms): Remove.
29168         (gimple_set_loaded_syms): Likewise.
29169         (gimple_call_copy_skip_args): Copy the virtual operands
29170         and mark the new statement modified.
29171         * tree-ssa-structalias.c (may_alias_p): Remove.
29172         (set_uids_in_ptset): Take the alias set to prune with as
29173         parameter.  Fold in the alias test of may_alias_p.
29174         (compute_points_to_sets): Compute whether a ptr is dereferenced
29175         in a local sbitmap.
29176         (process_constraint): Deal with &ANYTHING on the lhs, reject all
29177         other ADDRESSOF constraints on the lhs.
29178         (get_constraint_for_component_ref): Assert that we don't get
29179         ADDRESSOF constraints from the base of the reference.
29180         Properly generate UNKNOWN_OFFSET for DEREF if needed.
29181         (struct variable_info): Remove collapsed_to member.
29182         (get_varinfo_fc): Remove.
29183         (new_var_info): Do not set collapsed_to.
29184         (dump_constraint): Do not follow cycles.
29185         (dump_constraint_graph): Likewise.
29186         (build_pred_graph): Likewise.
29187         (build_succ_graph): Likewise.
29188         (rewrite_constraints): Likewise.
29189         (do_simple_structure_copy): Remove.
29190         (do_rhs_deref_structure_copy): Remove.
29191         (do_lhs_deref_structure_copy): Remove.
29192         (collapse_rest_of_var): Remove.
29193         (do_structure_copy): Re-implement.
29194         (pta_stats): New global variable.
29195         (dump_pta_stats): New function.
29196         (struct constraint_expr): Make offset signed.
29197         (UNKNOWN_OFFSET): Define special value.
29198         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
29199         (solution_set_expand): New helper function split out from ...
29200         (do_sd_constraint): ... here.
29201         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
29202         (do_ds_constraint): Likewise.
29203         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
29204         and CALLUSED = *CALLUSED.
29205         (set_union_with_increment): Make inc argument signed.
29206         (type_safe): Remove.
29207         (get_constraint_for_ptr_offset): Handle unknown and negative
29208         constant offsets.
29209         (first_vi_for_offset): Handle offsets before start.  Bail
29210         out early for offsets beyond the variable extent.
29211         (first_or_preceding_vi_for_offset): New function.
29212         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
29213         Together with ESCAPED = *ESCAPED this properly computes reachability.
29214         (find_what_var_points_to): New function.
29215         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
29216         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
29217         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
29218         pt_solutions_intersect): New functions.
29219         (compute_call_used_vars): Remove.
29220         (compute_may_aliases): New main entry into PTA computation.
29221         * gimple.h (gimple_p): New typedef.
29222         (struct gimple_statement_base): Remove references_memory_p.
29223         (struct gimple_statement_with_memory_ops_base): Remove
29224         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
29225         members.
29226         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
29227         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
29228         gimple_set_references_memory): Remove.
29229         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
29230         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
29231         New functions.
29232         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
29233         (verify_expr): Allow RESULT_DECL.
29234         (gimple_duplicate_bb): Do not copy virtual operands.
29235         (gimple_duplicate_sese_region): Adjust.
29236         (gimple_duplicate_sese_tail): Likewise.
29237         (mark_virtual_ops_in_region): Remove.
29238         (move_sese_region_to_fn): Do not call it.
29239         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
29240         and pass_simple_dse.
29241         (execute_function_todo): Handle TODO_update_address_taken,
29242         call execute_update_addresses_taken for TODO_rebuild_alias.
29243         (execute_todo): Adjust.
29244         (execute_one_pass): Init dump files early.
29245         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
29246         call-clobbered.
29247         (create_general_new_stmt): Clear vops.
29248         * tree-ssa-reassoc.c (get_rank): Adjust.
29249         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
29250         symbols for renaming.
29251         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
29252         (PARAM_AVG_ALIASED_VOPS): Likewise.
29253         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
29254         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
29255         * tree-ssa-operands.c: Simplify for new virtual operand representation.
29256         (operand_build_cmp, copy_virtual_operands,
29257         create_ssa_artificial_load_stmt, add_to_addressable_set,
29258         gimple_add_to_addresses_taken): Remove public functions.
29259         (unlink_stmt_vdef): New function.
29260
29261 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
29262
29263         * config.gcc (powerpc-*-linux*): Merge variants.
29264
29265 2009-04-02  Chao-ying Fu  <fu@mips.com>
29266             James Grosbach  <james.grosbach@microchip.com>
29267
29268         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
29269         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
29270         cop0_sp_offset.
29271         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
29272         keep_interrupts_masked_p, use_debug_exception_return_p.
29273         (mips_attribute_table): Add interrupt, use_shadow_register_set,
29274         keep_interrupts_masked, use_debug_exception_return.
29275         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
29276         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
29277         New functions.
29278         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
29279         (mips_print_operand): Process COP0 registers to print $0 .. $31
29280         correctly for GAS to process.
29281         (mips_interrupt_extra_call_saved_reg_p): New function.
29282         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
29283         extra registers.
29284         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
29285         (mips_compute_frame_info): Add supports for interrupt context that
29286         includes doubleword accumulators and COP0 registers.
29287         (mips_for_each_saved_acc): New function.
29288         (mips_for_each_saved_gpr_and_fpr): Change the function name from
29289         mips_for_each_saved_reg.
29290         (mips_save_reg): Save accumulators.
29291         (mips_kernel_reg_p): A new for_each_rtx callback.
29292         (mips_expand_prologue): Support interrupt handlers.
29293         (mips_restore_reg): Restore accumulators.
29294         (mips_expand_epilogue): Support interrupt handlers.
29295         (mips_can_use_return_insn): Return false for interrupt handlers.
29296         (mips_epilogue_uses): New function.
29297         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
29298         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
29299         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
29300         cop0_move): New instructions.
29301         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
29302         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
29303         defines.
29304         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
29305         New defines.
29306         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
29307         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
29308         interrupt handlers, we use K0 as the temporary register.
29309         (EPILOGUE_USES): Change to a function call.
29310         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
29311         handlers, we use K0 as the temporary register.
29312
29313         * doc/extend.texi (Function Attributes): Document interrupt,
29314         use_shadow_register_set, keep_interrupts_masked,
29315         use_debug_exception_return for MIPS attributes.
29316
29317 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
29318
29319         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
29320         Remove a number of t-files from tmake_file.
29321         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
29322         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
29323         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
29324         target_prototype, not TARGET_PROTOTYPE.
29325         (LINK_OS_GNU_SPEC): Define.
29326         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
29327         and darwin-ldoubdle.c.
29328
29329 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
29330
29331         PR driver/39293
29332         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
29333         (cpp_options): Ditto.
29334         (default_compilers): Ditto.
29335         (display_help): Ditto.
29336         (process_command): Ditto.
29337         (do_spec_1): Ditto.
29338         (set_input): Use lbasename instead of duplicate code.
29339         (save_temps_prefix): New static for -save-temps=obj.
29340         (save_temps_length): Ditto.
29341
29342         * doc/invoke.texi (-save-temps=obj): Document new variant to
29343         -save-temps switch.
29344
29345 2009-04-02  Jeff Law  <law@redhat.com>
29346
29347         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
29348         variable.
29349
29350 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
29351
29352         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
29353         * configure: Regenerated.
29354
29355 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29356
29357         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
29358         share the argument list.
29359
29360 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29361
29362         Merge
29363
29364         2009-02-12  Diego Novillo  <dnovillo@google.com>
29365
29366         * varpool.c (debug_varpool): New.
29367         * cgraph.h (debug_varpool): Declare.
29368
29369 2009-04-02  Jan Hubicka  <jh@suse.cz>
29370
29371         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
29372         pass.
29373
29374 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
29375
29376         * config/i386/i386.c (ix86_abi): Move initialization to ...
29377         (override_options): Here.
29378
29379 2009-04-02  Christian Bruel  <christian.bruel@st.com>
29380
29381         * config/sh/sh.c (sh_dwarf_register_span): New function.
29382         (TARGET_DWARF_REGISTER_SPAN): Define.
29383         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
29384
29385 2009-04-02  Ira Rosen  <irar@il.ibm.com>
29386
29387         PR tree-optimization/39595
29388         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
29389         interleaved loads group is not  greater than the SLP group size.
29390
29391 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29392
29393         * builtins.c (is_builtin_name): New.
29394         (called_as_built_in): Use is_builtin_name.
29395         * tree.h (is_builtin_name): New.
29396         * varasm.c (incorporeal_function_p): Use is_builtin_name
29397
29398 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
29399
29400         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
29401
29402 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
29403
29404         PR c++/26693
29405         * c-decl.c (clone_underlying_type): Move this ...
29406         * c-common.c (set_underlying_type): ... here.
29407         Also, make sure the function properly sets TYPE_STUB_DECL() on
29408         the newly created typedef variant type.
29409         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
29410         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
29411         points.
29412
29413 2009-04-02  Richard Guenther  <rguenther@suse.de>
29414
29415         PR tree-optimization/37221
29416         * tree-flow.h (degenerate_phi_result): Declare.
29417         * tree-ssa-dom.c (degenerate_phi_result): Export.
29418         * tree-scalar-evolution.c (analyze_initial_condition): If
29419         the initial condition is defined by a degenerate PHI node
29420         use the degenerate value.
29421
29422 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
29423
29424         PR rtl-optimization/39588
29425         * combine.c (merge_outer_ops): Do not set the constant when this
29426         is not necessary.
29427         (simplify_shift_const_1): Do not modify it either in this case.
29428
29429 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
29430
29431         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
29432         tuning is deprecated if -mtune value is set to an Itanium1 variant.
29433
29434 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
29435
29436         PR c/29027
29437         * c-lex.c (interpret_float): Default (no suffix) is double.
29438
29439 2009-04-1  Xinliang David Li  <davidxl@google.com>
29440
29441         * config/i386/i386.c (legitimate_constant_p): Recognize
29442         all one vector constant.
29443
29444 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29445
29446         * config/vax/vax.c: Add #includes to silence warnings.
29447         Change #include order to silence two warnings.
29448
29449 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29450
29451         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
29452         (ASM_SPEC): Pass -k to the assembler for PIC code.
29453
29454 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29455
29456         * config.gcc: Add vax-*-linux* to the switch.
29457         * config/vax/linux.h: New file. (TARGET_VERSION,
29458         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
29459
29460 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29461
29462         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
29463         Use predicate macros instead of GET_CODE() == foo.
29464         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
29465         ashlsi3, rotrsi3, <unnamed>): Likewise.
29466
29467 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29468
29469         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
29470         jbbccihi, jbbccisi): Remova trailing whitespace.
29471         * config/vax/constraints.md: Likewise.
29472         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
29473         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
29474         * config/vax/predicates.md: Likewise.
29475         * config/vax/vax.c (print_operand_address, vax_output_int_move,
29476         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
29477         * config/vax/vax.h: Likewise.
29478         * config/vax/vax.md (nonlocal_goto): Likewise.
29479
29480 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29481
29482         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
29483         (indirectable_address_p, adjacent_operands_p): Add spaces around
29484         braces.
29485         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
29486
29487 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29488
29489         * config/vax/vax.c (legitimate_constant_address_p,
29490         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
29491         index_term_p, reg_plus_index_p, legitimate_address_p,
29492         vax_mode_dependent_address_p): Update comments to match functions
29493         modified by the recent int->bool conversion.
29494
29495 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29496
29497         * config/vax/builtins.md: Update copyright message.
29498         * config/vax/constraints.md: Likewise.
29499         * config/vax/netbsd-elf.h: Likewise.
29500         * config/vax/predicates.md: Likewise.
29501         * config/vax/vax-protos.h: Likewise.
29502         * config/vax/vax.c: Likewise.
29503         * config/vax/vax.h: Likewise.
29504         * config/vax/vax.md: Likewise.
29505         * config/vax/vax.opt: Likewise.
29506
29507 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29508
29509         * config/vax/builtins.md (ffssi2, ffssi2_internal,
29510         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
29511         * config/vax/constraints.md (B, R): Likewise.
29512         * config/vax/predicates.md (external_memory_operand,
29513         nonimmediate_addsub_di_operand): Likewise.
29514         * config/vax/vax.c (vax_output_int_add): Likewise.
29515         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
29516         untyped_call): Likewise.
29517
29518 2009-04-01  Matt Thomas  <matt@3am-software.com>
29519
29520         * config/vax/predicates.md: New file.
29521         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
29522         external_const_operand, nonsymbolic_operand, external_memory_operand,
29523         indirect_memory_operand, indexed_memory_operand,
29524         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
29525         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
29526         predicate.
29527         * config/vax/constraints.md: New file.
29528         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
29529         New constraint.
29530         * config/vax/builtins.md: New file.
29531         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
29532         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
29533         jbbccisi): Define.
29534         * config/vax/vax.opt (mqmath): Add option.
29535         * config/vax/vax.md (isfx): Extend with DI.
29536         (VAXintQH, VAXintQHSD): Define.
29537         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
29538         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
29539         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
29540         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
29541         (movdi): Update constraints and use vax_output_int_move().
29542         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
29543         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
29544         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
29545         nonlocal_goto): New.
29546         (mov<mode>): Extend accepted operand types.
29547         (subdi3_old): Rename from subdi3, change update constraints and use
29548         a new implementation.
29549         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
29550         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
29551         MOVE_RATIO, CLEAR_RATIO): Define.
29552         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
29553         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
29554         (PRINT_OPERAND): Redefine using a function instead of inlined code.
29555         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
29556         (split_quadword_operands): Make static and really allow variable
29557         splitting.
29558         (print_operand_address): Update for PIC generation.
29559         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
29560         indexable_address_p, fixup_mathdi_operand,
29561         vax_expand_addsub_di_operands, adjacent_operands_p): New.
29562         (vax_float_literal, legitimate_constant_p,
29563         indirectable_constant_address_p, index_term_p,
29564         reg_plus_index_p): Return bool instead of int.
29565         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
29566         where needed.
29567         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
29568         generation.
29569         (vax_output_conditional_branch): Indent.
29570         (legitimate_constant_address_p, indirectable_constant_address_p,
29571         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
29572         vax_mode_dependent_address_p): Return bool instead of int, update for
29573         PIC generation.
29574         * config/vax/vax-protos.h (legitimate_constant_address_p,
29575         legitimate_constant_p, legitimate_address_p,
29576         vax_mode_dependent_address_p): Change declaration to bool.
29577         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
29578         vax_expand_addsub_di_operands, vax_output_int_subtract,
29579         vax_output_movmemsi): Declare.
29580         (split_quadword_operands, vax_float_literal): Delete declaration.
29581         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
29582         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
29583         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
29584         ASM_OUTPUT_DWARF_PCREL): Define.
29585         (ASM_SPEC): Change definition to allow PIC generation.
29586
29587 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
29588
29589         * doc/sourcebuild.texi: Update front-end requirements.
29590
29591 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29592
29593         PR target/39226
29594         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
29595         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
29596         (booldi3_internal3): Use boolean_or_operator instead of
29597         boolean_operator.
29598
29599 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
29600
29601         PR c/39605
29602         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
29603         declarator whose size is not an integer constant expression but
29604         folds to an integer constant, then treat it as a constant
29605         subsequently.
29606
29607 2009-04-01  Richard Guenther  <rguenther@suse.de>
29608
29609         * fold-const.c (fold_plusminus_mult_expr): Do not fold
29610         i * 4 + 2 to (i * 2 + 1) * 2.
29611
29612 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29613
29614         PR c/37772
29615         * c-parser.c (c_parser_asm_statement): Skip until close paren and
29616         return if c_parser_asm_string_literal returned NULL.
29617
29618 2009-04-01  Nick Clifton  <nickc@redhat.com>
29619
29620         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
29621         already defined.
29622         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
29623         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
29624         other typedefs to avoid conflicts with libgcc2.c.  Define labels
29625         to gain 16-bit bit-manipulation functions from libgcc2.c and then
29626         include it.
29627         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
29628         to gain 16-bit trapping arithmetic functions from libgcc2.c and
29629         then include it.
29630
29631 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
29632
29633         * varasm.c (default_function_rodata_section): Declare DOT as
29634         const char*.
29635
29636 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
29637             Andrey Galkin  <agalkin@hypercom.com>
29638
29639         PR/39492
29640         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
29641         Make object_name unique for each process.
29642
29643 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29644
29645         PR other/39591
29646         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
29647         addressable variables in the parallel that could go out of scope while
29648         running queued tasks.
29649
29650 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
29651
29652         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
29653         (CASE_VALUES_THRESHOLD): Redefine.
29654         * config/avr/avr.c (avr_override_options): Remove initialization of
29655         avr_case_values_threshold variable.
29656         (avr_case_values_threshold): Remove variable. Add new function.
29657         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
29658         * config/avr/avr.opt (mno-tablejump): Remove option.
29659         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
29660
29661 2009-04-01  DJ Delorie  <dj@redhat.com>
29662
29663         * varasm.c (default_function_rodata_section): Don't assume
29664         anything about where the first '.' in the section name is.
29665
29666 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
29667
29668         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
29669         rs6000_emit_stack_tie.
29670
29671 2009-03-31  Ian Lance Taylor  <iant@google.com>
29672
29673         * tree-eh.c (tree_remove_unreachable_handlers): Compare
29674         gimple_code with GIMPLE_RESX, not RESX.
29675
29676 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29677
29678         * c-common.c (c_get_ident): New.
29679         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
29680
29681 2009-04-01  Ben Elliston  <bje@au.ibm.com>
29682
29683         * config/rs6000/sysv4.opt (msdata): Improve option description.
29684
29685 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
29686
29687         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
29688         (divdf3_internal_lat): Remove.
29689         (divxf3_internal_lat): Remove.
29690         (divxf3_internal_thr): Remove.
29691         (divxf): Use divxf3_internal.
29692         * config/ia64/div.md (divsf3_internal_lat): New.
29693         (divdf3_internal_lat): New.
29694         (divxf3_internal): New.
29695
29696 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29697
29698         PR c/448
29699         * Makefile.in (USE_GCC_STDINT): Define.
29700         (stmp-int-hdrs): Install stdint.h if applicable.
29701         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
29702         if known.
29703         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
29704         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
29705         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29706         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29707         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29708         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29709         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29710         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29711         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29712         (c_common_nodes_and_builtins): Initialize
29713         underlying_wchar_type_node.  Do not initialize
29714         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
29715         nodes for new types.
29716         (c_stddef_cpp_builtins): Define macros for new types.
29717         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
29718         Remove.
29719         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
29720         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
29721         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
29722         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
29723         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
29724         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
29725         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
29726         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
29727         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
29728         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
29729         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
29730         int16_type_node, int32_type_node, int64_type_node,
29731         uint8_type_node, uint16_type_node, c_uint32_type_node,
29732         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
29733         int_least32_type_node, int_least64_type_node,
29734         uint_least8_type_node, uint_least16_type_node,
29735         uint_least32_type_node, uint_least64_type_node,
29736         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
29737         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
29738         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
29739         uintptr_type_node): Define.
29740         * c-cppbuiltin.c (builtin_define_constants,
29741         builtin_define_type_minmax): New.
29742         (builtin_define_stdint_macros): Define more macros.
29743         (c_cpp_builtins): Define more limit macros.
29744         (type_suffix): New.
29745         (builtin_define_type_max): Define in terms of
29746         builtin_define_type_minmax.  Remove is_long parameter.  All
29747         callers changed.
29748         * config.gcc (use_gcc_stdint): Define.
29749         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
29750         Add newlib-stdint.h for generic targets.
29751         * config/glibc-stdint.h, config/newlib-stdint.h,
29752         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
29753         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
29754         * config/score/score.h (UINTPTR_TYPE): Define.
29755         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
29756         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
29757         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29758         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29759         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29760         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29761         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29762         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29763         * config/spu/spu.h (STDINT_LONG32): Define.
29764         * configure.ac (use_gcc_stdint): Substitute.
29765         * configure: Regenerate.
29766         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
29767         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
29768         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
29769         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
29770         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
29771         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
29772         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
29773         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
29774         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
29775         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
29776         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
29777         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
29778         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
29779         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
29780         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
29781         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
29782         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
29783         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
29784         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
29785         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
29786         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
29787         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
29788         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29789         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29790         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29791         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29792         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29793         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29794         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
29795
29796 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
29797
29798         * loop-iv.c (suitable_set_for_replacement): Renamed from
29799         simplify_using_assignment; changed to return bool and to accept new
29800         args DEST and SRC.  Return true iff we find a source/destination pair
29801         that can be used to make a replacement, and fill SRC and DEST if so.
29802         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
29803         changed.
29804         (simplify_using_initial_values): Deal with altered regs here and track
29805         more precisely the effect they have on the validity of our expression.
29806
29807         * loop-iv.c (simplify_using_condition): A condition of the form
29808         (EQ REG CONST) can be used to simply make a substitution.
29809         (simplify_using_initial_values): Keep track of conditions we have seen
29810         and keep using them to simplify new expressions, while applying the
29811         same substitutions to them as to the expression.
29812
29813         * simplify-rtx.c (simplify_relational_operation_1): Simplify
29814         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
29815         GEU/LTU reversed.
29816
29817         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
29818         changed.  Use this when trying to improve the upper bound.
29819         Generate the comparison by using simplify_gen_relational.
29820
29821         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
29822
29823         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
29824         functions.
29825         (simplify_using_assignment, simplify_using_initial_values): Call
29826         replace_in_expr to make replacements.  Call replace_single_def_regs
29827         once on the initial version of the expression.
29828
29829 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29830
29831         PR target/27237
29832         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
29833
29834 2009-03-31  Richard Guenther  <rguenther@suse.de>
29835
29836         PR middle-end/31029
29837         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
29838         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
29839
29840 2009-03-31  Richard Guenther  <rguenther@suse.de>
29841
29842         * tree.h (div_if_zero_remainder): Declare.
29843         * fold-const.c (div_if_zero_remainder): Export.
29844         * tree-ssa-forwprop.c
29845         (forward_propagate_addr_into_variable_array_index): Handle
29846         constant array index addition outside of the variable index.
29847
29848 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29849
29850         PR target/39592
29851         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
29852         define_splits, floatunssi<mode>2): Require x87 conversions from
29853         DImode to be permitted.
29854
29855 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29856
29857         PR preprocessor/15638
29858         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
29859
29860 2009-03-31  Richard Guenther  <rguenther@suse.de>
29861
29862         PR middle-end/23401
29863         PR middle-end/27810
29864         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
29865         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
29866         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
29867         a separate statement.
29868         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
29869         (lookup_tmp_var): Likewise.
29870         (is_gimple_formal_tmp_or_call_rhs): Remove.
29871         (is_gimple_reg_or_call_rhs): Rename to ...
29872         (is_gimple_reg_rhs_or_call): ... this.
29873         (is_gimple_mem_or_call_rhs): Rename to ...
29874         (is_gimple_mem_rhs_or_call): ... this.
29875         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
29876         DECL_GIMPLE_REG_P only if is_formal is true.
29877         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
29878         for non-proper post-modify expression gimplification.
29879         (gimplify_self_mod_expr): For post-modify expressions gimplify
29880         the lvalue to a minimal lvalue.
29881         (rhs_predicate_for): Remove formal temp case.
29882         (gimplify_modify_expr_rhs): Likewise.
29883         (gimplify_addr_expr): Use is_gimple_reg.
29884         (gimplify_expr): Remove formal temp cases.
29885         (gimple_regimplify_operands): Likewise.
29886         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
29887         and FILTER_EXPR like constants.
29888         * gimple.c (walk_gimple_op): Fix val_only initialization, use
29889         is_gimple_reg.
29890         (is_gimple_formal_tmp_rhs): Remove.
29891         (is_gimple_reg_rhs): Remove special casing.
29892         (is_gimple_mem_rhs): Fix.
29893         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
29894         (is_gimple_formal_tmp_var): Remove.
29895         (is_gimple_formal_tmp_reg): Likewise.
29896         (is_gimple_min_lval): Allow invariant component ref parts.
29897         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
29898         is_gimple_formal_tmp_reg): Remove declarations.
29899         * tree-cfg.c (verify_expr): Verify that variables with address
29900         taken do not have DECL_GIMPLE_REG_P set.
29901         * tree-mudflap.c (mf_build_check_statement_for): Use
29902         force_gimple_operand instead of gimplify_expr.
29903
29904 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
29905
29906         * modulo-sched.c (sms_schedule_by_order): Pass the actual
29907         schedulable rows to compute_split_row.
29908
29909 2009-03-31  Ben Elliston  <bje@au.ibm.com>
29910
29911         PR target/31635
29912         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
29913         OPT_mvrsave.
29914
29915 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29916
29917         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
29918         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
29919         * configure: Regenerate.
29920         * config.in: Regenerate.
29921         * config/rs6000/rs6000.opt (mtls-markers): Add.
29922         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
29923         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
29924         (tls_ld_aix, tls_ld_sysv): Likewise.
29925         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
29926         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
29927
29928 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29929
29930         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
29931
29932 2009-03-30  Jan Hubicka  <jh@suse.cz>
29933
29934         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
29935         out of RESX.
29936         (tree_remove_unreachable_handlers): Cleanup EH predecestor
29937         detection and label handling.
29938
29939 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29940
29941         * ira-int.h (ira_allocno): Rename left_conflicts_num to
29942         left_conflicts_size.
29943         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
29944         ALLOCNO_LEFT_CONFLICTS_SIZE.
29945
29946         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
29947         remove_allocno_from_bucket_and_push,
29948         allocno_spill_priority_compare, push_allocnos_to_stack,
29949         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29950         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
29951         (setup_allocno_left_conflicts_num): Ditto.  Rename to
29952         setup_allocno_left_conflicts_size.
29953         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29954         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
29955         setup_allocno_left_conflicts_size instead of
29956         setup_allocno_left_conflicts_num.
29957
29958         * ira-build.c (ira_create_allocno): Use
29959         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
29960         ALLOCNO_LEFT_CONFLICTS_NUM.
29961
29962 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29963
29964         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
29965         instead of DF_LR_OUT.
29966
29967         * ira-lives.c (process_bb_node_lives): Ditto.
29968
29969         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
29970         instead of DF_LR_{OUT,IN}.
29971
29972         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
29973
29974         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
29975
29976 2009-03-30  Jan Hubicka  <jh@suse.cz>
29977
29978         * except.c (label_to_region_map): Fix thinko.
29979
29980 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
29981
29982         PR middle-end/38237
29983         * tree.h (tree_find_value): New declaration.
29984         * tree.c (tree_find_value): New function.
29985         * varasm.c (assemble_external): Avoid duplicate entries on lists.
29986
29987 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
29988
29989         PR debug/39563
29990         * c-decl.c (struct c_binding): Add locus field.
29991         (bind): Add locus argument, set locus field from it.
29992         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
29993         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
29994         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
29995         implicitly_declare, undeclared_variable, lookup_label,
29996         declare_label, c_make_fname_decl, c_builtin_function,
29997         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
29998         bind callers.
29999
30000 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
30001
30002         PR target/38781
30003         * config/i386/i386.c (classify_argument): Check total size of
30004         structure.
30005
30006 2009-03-30  Martin Jambor  <mjambor@suse.cz>
30007
30008         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
30009         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
30010         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
30011         respectively.
30012
30013         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
30014         seen_variable_array_ref while also traversing a union.
30015
30016         * tree-inline.c (optimize_inline_calls): Do not call
30017         cgraph_node_remove_callees.
30018         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
30019         (pass_remove_cgraph_callee_edges): New variable.
30020         * passes.c (init_optimization_passes): Add
30021         pass_remove_cgraph_callee_edges after early inlining and before all
30022         late intraprocedural passes.
30023
30024         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
30025
30026 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30027
30028         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
30029         Fix typos in names.
30030
30031 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30032
30033         * combine.c (simplify_comparison): Use have_insn_for.
30034         * dojump.c (do_jump): Likewise.
30035
30036 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30037
30038         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
30039         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
30040         sparc_compare_op0 like sparc_compare_emitted used to be handled.
30041         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
30042         instead of sparc_compare_emitted.
30043         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
30044         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
30045         instead of sparc_compare_emitted.
30046
30047 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30048
30049         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
30050         enter/exit cfglayout mode.
30051         (pass_partition_block): Require it.
30052         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
30053         (combine_instructions): Track basic blocks instead of labels.
30054         (update_cfg_for_uncondjump): New.
30055         (try_combine): Use it.  Update jumps after rescanning.
30056         (pass_combine): Require PROP_cfglayout.
30057         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
30058
30059 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30060
30061         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
30062         Provide/destroy PROP_cfglayout respectively.
30063         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
30064         * tree-pass.h (PROP_cfglayout): New.
30065
30066 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30067
30068         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
30069         fold_convert_const_fixed_from_fixed,
30070         fold_convert_const_fixed_from_int,
30071         fold_convert_const_fixed_from_real, fold_negate_const): Do not
30072         set TREE_CONSTANT_OVERFLOW.
30073         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
30074         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
30075
30076 2009-03-30  Ira Rosen  <irar@il.ibm.com>
30077
30078         * tree-vect-loop-manip.c: New file.
30079         * tree-vectorizer.c: Update documentation and included files.
30080         (vect_loop_location): Make extern.
30081         (rename_use_op): Move to tree-vect-loop-manip.c
30082         (rename_variables_in_bb, rename_variables_in_loop,
30083         slpeel_update_phis_for_duplicate_loop,
30084         slpeel_update_phi_nodes_for_guard1,
30085         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
30086         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
30087         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
30088         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
30089         find_loop_location): Likewise.
30090         (new_stmt_vec_info): Move to tree-vect-stmts.c.
30091         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
30092         get_vectype_for_scalar_type, vect_is_simple_use,
30093         supportable_widening_operation, supportable_narrowing_operation):
30094         Likewise.
30095         (bb_in_loop_p): Move to tree-vect-loop.c.
30096         (new_loop_vec_info, destroy_loop_vec_info,
30097         reduction_code_for_scalar_code, report_vect_op,
30098         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
30099         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
30100         (vect_supportable_dr_alignment): Likewise.
30101         * tree-vectorizer.h (tree-data-ref.h): Include.
30102         (vect_loop_location): Declare.
30103         Reorganize function declarations according to the new file structure.
30104         * tree-vect-loop.c: New file.
30105         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
30106         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
30107         * tree-vect-data-refs.c: New file.
30108         * tree-vect-patterns.c (timevar.h): Don't include.
30109         * tree-vect-stmts.c: New file.
30110         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
30111         tree-vect-slp.c, tree-vect-loop.c.
30112         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
30113         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
30114         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
30115         (tree-vect-analyze.o): Remove.
30116         (tree-vect-transform.o): Likewise.
30117         (tree-vect-data-refs.o): Add rule.
30118         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
30119         tree-vect-slp.o): Likewise.
30120         (tree-vect-patterns.o): Remove redundant dependencies.
30121         (tree-vectorizer.o): Likewise.
30122         * tree-vect-slp.c: New file.
30123
30124 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30125
30126         * optc-gen.awk: Warn if an option flag has multiple different
30127         help strings.
30128
30129 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
30130
30131         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
30132         -floop-block): Document dependences on PPL, CLooG and Graphite.
30133
30134 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
30135
30136         PR rtl-optimization/323
30137         * c-common.c (c_fully_fold, convert_and_check,
30138         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
30139         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
30140         * c-common.def (EXCESS_PRECISION_EXPR): New.
30141         * c-cppbuiltin.c (builtin_define_float_constants): Define
30142         constants with enough digits for long double.
30143         * c-lex.c (interpret_float): Interpret constant with excess
30144         precision where appropriate.
30145         * c-opts.c (c_common_post_options): Set
30146         flag_excess_precision_cmdline.  Give an error for
30147         -fexcess-precision=standard for C++ for processors where the
30148         option is significant.
30149         * c-parser.c (c_parser_conditional_expression): Handle excess
30150         precision in condition.
30151         * c-typeck.c (convert_arguments): Handle arguments with excess
30152         precision.
30153         (build_unary_op): Move excess precision outside operation.
30154         (build_conditional_expr): Likewise.
30155         (build_compound_expr): Likewise.
30156         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
30157         (build_modify_expr): Handle excess precision in RHS.
30158         (convert_for_assignment): Handle excess precision in converted
30159         value.
30160         (digest_init, output_init_element, process_init_element): Handle
30161         excess precision in initializer.
30162         (c_finish_return): Handle excess precision in return value.
30163         (build_binary_op): Handle excess precision in operands and add
30164         excess precision as needed for operation.
30165         * common.opt (-fexcess-precision=): New option.
30166         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
30167         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
30168         For standard excess precision, output explicit conversion to and
30169         truncation from XFmode.
30170         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
30171         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
30172         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
30173         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
30174         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
30175         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
30176         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
30177         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
30178         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
30179         define_splits, sqrt<mode>2): Disable where appropriate for
30180         standard excess precision.
30181         * convert.c (convert_to_real): Do not shorten arithmetic to type
30182         for which excess precision would be used.
30183         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
30184         * doc/invoke.texi (-fexcess-precision=): Document option.
30185         (-mfpmath=): Correct index entry.
30186         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
30187         flag_excess_precision): New.
30188         * langhooks.c (lhd_post_options): Set
30189         flag_excess_precision_cmdline.
30190         * opts.c (common_handle_option): Handle -fexcess-precision=.
30191         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
30192         init_excess_precision): New.
30193         (lang_dependent_init_target): Call init_excess_precision.
30194         * tree.c (excess_precision_type): New.
30195         * tree.h (excess_precision_type): Declare.
30196
30197 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
30198
30199         PR c/35235
30200         * c-typeck.c (build_component_ref): Do not copy qualifiers from
30201         non-lvalue to component.
30202
30203 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
30204
30205         PR preprocessor/34695
30206         * Makefile.in (c-opts.o): Depend on c-tree.h.
30207         * c-common.c: Move down include of diagnostic.h.
30208         (done_lexing, c_cpp_error): New.
30209         * c-common.h (done_lexing): Declare.
30210         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
30211         (parse_in).
30212         * c-opts.c: Include c-tree.h.
30213         (c_common_init_options): Set preprocessor error callback.
30214         (c_common_handle_option): Do not set preprocessor
30215         inhibit_warnings, warnings_are_errors, warn_system_headers,
30216         pedantic_errors or inhibit_warnings flags.
30217         (c_common_post_options): Do not check cpp_errors (parse_in).
30218         (c_common_finish): Do not output dependencies if there were
30219         errors.  Do not check return value of cpp_finish.
30220         * c-ppoutput.c (pp_file_change): Set input_location.
30221         * c-tree.h (c_cpp_error): Declare.
30222         * diagnostic.c (diagnostic_set_info_translated): Also initialize
30223         override_column.
30224         (diagnostic_build_prefix): Check override_column.
30225         * diagnostic.h (diagnostic_info): Add override_column field.
30226         (diagnostic_override_column): Define.
30227
30228 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
30229
30230         * c-common.c (c_expand_expr, c_staticp): Remove.
30231         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
30232         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
30233         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
30234         * c-gimplify.c (gimplify_compound_literal_expr,
30235         optimize_compound_literals_in_ctor): Remove.
30236         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
30237         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
30238         * c-semantics.c (emit_local_var): Remove.
30239
30240         * langhooks-def.h (lhd_expand_expr): Remove.
30241         * langhooks.c (lhd_expand_expr): Remove.
30242         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
30243
30244         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
30245         handling from c-semantics.c; don't call into langhook.
30246         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
30247         * gimplify.c (gimplify_compound_literal_expr,
30248         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
30249         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
30250         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
30251         as was done in c-gimplify.c.
30252         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
30253         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
30254         Move from c-common.h.
30255         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
30256
30257         * tree.c (staticp): Do not call langhook.
30258         * langhooks.c (lhd_staticp): Delete.
30259         * langhooks-def.h (lhd_staticp): Delete prototype.
30260         (LANG_HOOKS_STATICP): Delete.
30261         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
30262
30263         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
30264         instead of DECL_STMTs.
30265
30266 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
30267
30268         PR c/456
30269         PR c/5675
30270         PR c/19976
30271         PR c/29116
30272         PR c/31871
30273         PR c/35198
30274         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
30275         void_type_node.
30276         (fold_call_expr): Return a NOP_EXPR from folding rather than the
30277         contained expression.
30278         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
30279         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
30280         conditional expressions for C.
30281         (decl_constant_value_for_optimization): Move from
30282         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
30283         whether optimizing and that the expression is a VAR_DECL not of
30284         array type instead of doing such checks in the caller.  Do not
30285         check pedantic.  Call gcc_unreachable for C++.
30286         * c-common.def (C_MAYBE_CONST_EXPR): New.
30287         * c-common.h (c_fully_fold, c_save_expr,
30288         decl_constant_value_for_optimization): New prototypes.
30289         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
30290         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
30291         EXPR_INT_CONST_OPERANDS): Define.
30292         * c-convert.c (convert): Strip nops from expression.
30293         * c-decl.c (groktypename): Take extra parameters expr and
30294         expr_const_operands.  Update call to grokdeclarator.
30295         (start_decl): Update call to grokdeclarator.  Add statement for
30296         expressions used in type of decl.
30297         (grokparm): Update call to grokdeclarator.
30298         (push_parm_decl): Update call to grokdeclarator.
30299         (build_compound_literal): Add parameter non_const and build a
30300         C_MAYBE_COSNT_EXPR if applicable.
30301         (grokdeclarator): Take extra parameters expr and
30302         expr_const_operands.  Track expressions used in declaration
30303         specifiers and declarators.  Fold array sizes and track whether
30304         they are constant expressions and whether they are integer
30305         constant expressions.
30306         (parser_xref_tag): Set expr and expr_const_operands fields in
30307         return value.
30308         (grokfield): Update call to grokdeclarator.
30309         (start_function): Update call to grokdeclarator.
30310         (build_null_declspecs): Set expr and expr_const_operands fields in
30311         return value.
30312         (declspecs_add_type): Handle expressions in typeof specifiers.
30313         * c-parser.c (c_parser_declspecs): Set expr and
30314         expr_const_operands fields for declaration specifiers.
30315         (c_parser_enum_specifier): Likewise.
30316         (c_parser_struct_or_union_specifier): Likewise.
30317         (c_parser_typeof_specifier): Likewise.  Update call to
30318         groktypename.  Fold expression as needed.  Return expressions with
30319         type instead of adding statements.
30320         (c_parser_attributes): Update calls to c_parser_expr_list.
30321         (c_parser_statement_after_labels): Fold expression before passing
30322         to objc_build_throw_stmt.
30323         (c_parser_condition): Fold expression.
30324         (c_parser_asm_operands): Fold expression.
30325         (c_parser_conditional_expression): Use c_save_expr.  Update call
30326         to build_conditional_expr.
30327         (c_parser_alignof_expression): Update call to groktypename.
30328         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
30329         original_code.  Fold expression argument of va_arg.  Create
30330         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
30331         argument to va_arg.  Update calls to groktypename.  Fold array
30332         index for offsetof.  Verify that first argument to
30333         __builtin_choose_expr has integer type.
30334         (c_parser_postfix_expression_after_paren_type): Update calls to
30335         groktypename and build_compound_literal.  Handle expressions with
30336         side effects in type name.
30337         (c_parser_postfix_expression_after_primary): Update call to
30338         c_parser_expr_list.  Set original_code for calls to
30339         __builtin_constant_p.
30340         (c_parser_expr_list): Take extra parameter fold_p.  Fold
30341         expressions if requested.
30342         (c_parser_objc_type_name): Update call to groktypename.
30343         (c_parser_objc_synchronized_statement): Fold expression.
30344         (c_parser_objc_receiver): Fold expression.
30345         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
30346         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
30347         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
30348         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
30349         (struct c_typespec): Add elements expr and expr_const_operands.
30350         (struct c_declspecs): Add elements expr and expr_const_operands.
30351         (groktypename, build_conditional_expr, build_compound_literal):
30352         Update prototypes.
30353         (in_late_binary_op): Declare.
30354         * c-typeck.c (note_integer_operands): New function.
30355         (in_late_binary_op): New variable.
30356         (decl_constant_value_for_broken_optimization): Move to c-common.c
30357         and rename to decl_constant_value_for_optimization.
30358         (default_function_array_conversion): Do not strip nops.
30359         (default_conversion): Do not call
30360         decl_constant_value_for_broken_optimization.
30361         (build_array_ref): Do not fold result.
30362         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
30363         result when operand is a VLA.
30364         (c_expr_sizeof_type): Update call to groktypename.  Handle
30365         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
30366         result when operand names a VLA type.
30367         (build_function_call): Update call to build_compound_literal.
30368         Only fold result for calls to __builtin_* functions.  Strip
30369         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
30370         the function designator.
30371         (convert_arguments): Fold arguments.  Update call to
30372         convert_for_assignment.
30373         (build_unary_op): Handle increment and decrement of
30374         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
30375         decrement earlier.  Fold operand of increment and decrement.
30376         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
30377         built for integer operand.  Wrap returns that are INTEGER_CSTs
30378         without being integer constant expressions or that have integer
30379         constant operands without being INTEGER_CSTs.
30380         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
30381         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
30382         result is an integer constant expression or can be used in
30383         unevaluated parts of one and avoid folding and wrap as
30384         appropriate.  Fold operands before possibly doing -Wsign-compare
30385         warnings.
30386         (build_compound_expr): Wrap result for C99 if operands can be used
30387         in integer constant expressions.
30388         (build_c_cast): Update call to digest_init.  Do not ignore
30389         overflow from casting floating-point constants to integers.  Wrap
30390         results that could be confused with integer constant expressions,
30391         null pointer constants or floating-point constants.
30392         (c_cast_expr): Update call to groktypename.  Handle expressions
30393         included in type name.
30394         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
30395         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
30396         Update calls to convert_for_assignment.
30397         (convert_for_assignment): Take new parameter
30398         null_pointer_constant.  Do not strip nops or call
30399         decl_constant_value_for_broken_optimization.  Set
30400         in_late_binary_op for conversions to boolean.
30401         (store_init_value): Update call to digest_init.
30402         (digest_init): Take new parameter null_pointer_constant.  Do not
30403         call decl_constant_value_for_broken_optimization.  pedwarn for
30404         initializers not constant expressions.  Update calls to
30405         convert_for_assignment.
30406         (constructor_nonconst): New.
30407         (struct constructor_stack): Add nonconst element.
30408         (really_start_incremental_init, push_init_level, pop_init_level):
30409         Handle constructor_nonconst and nonconst element.
30410         (set_init_index): Call constant_expression_warning for array
30411         designators.
30412         (output_init_element): Fold value.  Set constructor_nonconst as
30413         applicable.  pedwarn for initializers not constant expressions.
30414         Update call to digest_init.  Call constant_expression_warning
30415         where constant initializers are required.
30416         (process_init_element): Use c_save_expr.
30417         (c_finish_goto_ptr): Fold expression.
30418         (c_finish_return): Fold return value.  Update call to
30419         convert_for_assignment.
30420         (c_start_case): Fold switch expression.
30421         (c_process_expr_stmt): Fold expression.
30422         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
30423         ensure statement expression is not evaluated in constant expression.
30424         (build_binary_op): Track whether results are integer constant
30425         expressions or may occur in such, disable folding and wrap results
30426         as applicable.  Fold operands for -Wsign-compare warnings unless
30427         in_late_binary_op.
30428         (c_objc_common_truthvalue_conversion): Handle results folded to
30429         integer constants that are not integer constant expressions.
30430         * doc/extend.texi: Document when typeof operands are evaluated,
30431         that condition of __builtin_choose_expr is an integer constant
30432         expression, and more about use of __builtin_constant_p in
30433         initializers.
30434
30435 2009-03-29  Richard Guenther  <rguenther@suse.de>
30436
30437         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
30438         propagate addresses of array references.
30439
30440 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
30441
30442         * regmove.c (perhaps_ends_bb_p): Remove.
30443         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
30444         from INSN and check that the main loop stays within that basic block.
30445         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
30446         (regmove_forward_pass): Split out from regmove_optimize.  Use
30447         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
30448         (regmove_backward_pass): Split out from regmove_optimize.  Use
30449         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
30450         (regmove_optimize): Simplify.
30451
30452 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30453
30454         PR target/39545
30455         * config/i386/i386.c (classify_argument): Ignore flexible array
30456         member in struct and warn ABI change.
30457
30458 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30459
30460         * config/i386/i386-protos.h (ix86_agi_dependent): New.
30461
30462         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
30463         (ix86_adjust_cost): Updated.
30464
30465 2009-03-29  Jan Hubicka  <jh@suse.cz>
30466
30467         PR middle-end/28850
30468         * tree-pass.h (pass_cleanup_eh): New function.
30469         (remove_unreachable_regions): Break code handling RTL
30470         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
30471         that can not be reached by runtime.
30472         (can_be_reached_by_runtime): New function.
30473         (label_to_region_map): New function.
30474         (num_eh_regions): New function.
30475         (rtl_remove_unreachable_regions): New function.
30476         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
30477         (remove_eh_region): New function.
30478         * except.h: Include sbitmap and vecprim.
30479         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
30480         num_eh_regions): Declare.
30481         * passes.c (init_optimization_passes): Schedule cleanup_eh.
30482         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
30483         * tree-eh.c (tree_remove_unreachable_handlers): New function.
30484         (tree_empty_eh_handler_p): New function.
30485         (cleanup_empty_eh): New function.
30486         (cleanup_eh): New function.
30487         (pass_cleanup_eh): New function.
30488
30489 2009-03-29  Jan Hubicka  <jh@suse.cz>
30490
30491         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
30492         for removed regions.
30493
30494 2009-03-29  Jan Hubicka  <jh@suse.cz>
30495
30496         * except.c (dump_eh_tree): Dump all datastructures.
30497
30498 2009-03-29  Jan Hubicka  <jh@suse.cz>
30499
30500         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
30501         (duplicate_eh_regions_1): Likewise.
30502         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
30503         vector; call EH verification.
30504         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30505         Be ready for region being removed.
30506
30507 2009-03-29  Jan Hubicka  <jh@suse.cz>
30508
30509         * bitmap.c (bitmap_last_set_bit): New function.
30510         * bitmap.h (bitmap_last_set_bit): Declare.
30511
30512 2009-03-29  David Ayers  <ayers@fsfe.org>
30513
30514         PR objc/27377
30515         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
30516         by calling objc_compare_types and surpress warnings about
30517         incompatible C pointers that are compatible ObjC pointers.
30518
30519 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
30520
30521         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
30522         call initialize_inline_failed.
30523         (initialize_inline_failed): Move it from here ...
30524         * cgraph.c (initialize_inline_failed): ... to here.
30525         (cgraph_create_edge): Call initialize_inline_failed rather than
30526         setting inline_failed directly.
30527
30528 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30529
30530         PR target/32542
30531         * sysv4.opt (msdata): Improve comment.
30532         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
30533         * sysv4.h (SVR4_ASM_SPEC): Likewise.
30534
30535 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30536
30537         PR target/30451
30538         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
30539         load and store attributes.
30540
30541 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30542
30543         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
30544         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
30545         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
30546         * doc/extend.texi (X86 Built-in Functions): Add index entries for
30547         __builtin_infq and __builtin_huge_valq.
30548
30549 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
30550
30551         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
30552         atmega8m1 devices.
30553         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30554         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
30555
30556 2009-03-28  Xinliang David Li  <davidxl@google.com>
30557
30558         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
30559         (do_dbg_cnt): New function.
30560
30561 2009-03-28  Jan Hubicka  <jh@suse.cz>
30562
30563         Merge from pretty-ipa:
30564
30565         2009-03-27  Jan Hubicka  <jh@suse.cz>
30566
30567         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30568         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
30569         * passes.c (function_called_by_processed_nodes_p): New.
30570         * ipa-pure-const.c (check_call): Fix handling of operands.
30571         (analyze_function): Dump debug output for skipped bodies.
30572         (local_pure_const): Use function_called_by_processed_nodes_p.
30573         * dwarf2out.c (reference_to_unused): Use output.
30574         * passes.c (do_per_function_toporder): Likewise.
30575
30576         2008-11-12  Jan Hubicka  <jh@suse.cz>
30577
30578         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
30579         * ipa-pure-const.c (funct_state_d): Add can throw field; make
30580         state_set_in_source enum
30581         (check_decl): Ignore memory tags; do not set fake looping flags;
30582         dump diagnostics.
30583         (check_operand, check_tree, check_rhs_var, check_lhs_var,
30584         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
30585         (check_call, analyze_function): Rewrite.
30586         (check_stmt): New.
30587         (add_new_function): Update call of analyze_function.
30588         (generate_summary): Add call of analyze_function.
30589         (propagate): Propagate can_throw; handle state_set_in_source correctly.
30590         (local_pure_const): New function.
30591         (pass_local_pure_const): New pass.
30592         * ipa-inline.c (inline_transform): Set after_inlining.
30593         * tree-eh.c (stmt_can_throw_external): New.
30594         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
30595         work with aliasing built.
30596         * tree-flow.h (stmt_can_throw_external): New.
30597         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
30598         and local pure/const pass in early and late optimization queue.
30599
30600 2009-03-28  Martin Jambor  <mjambor@suse.cz>
30601
30602         * fold-const.c (get_pointer_modulus_and_residue): New parameter
30603         allow_func_align.
30604         (fold_binary): Allow function decl aligment consideration is the
30605         second argument is integer constant one.
30606         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
30607         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
30608         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
30609
30610 2009-03-28  Jan Hubicka  <jh@suse.cz>
30611
30612         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
30613         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
30614         * function.h (rtl_data): Add nothrow flag.
30615         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
30616         set DECL_NOTHROW for AVAILABLE functions.
30617
30618 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
30619
30620         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
30621         following vector keyword has expansion starting with pixel or bool
30622         keyword, expand vector to __vector and pixel or bool to __pixel or
30623         __bool.
30624
30625         PR c++/39554
30626         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
30627         warn_if_disallowed_function_p): Removed.
30628         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
30629         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
30630         warning_if_disallowed_function_p.
30631         * flags.h (warn_if_disallowed_function_p,
30632         warn_disallowed_functions): Removed.
30633         * common.opt (Wdisallowed-function-list=): Removed.
30634         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
30635
30636 2009-03-28  Richard Guenther  <rguenther@suse.de>
30637
30638         PR tree-optimization/38723
30639         * tree-ssa-pre.c (compute_avail): Add all default definitions to
30640         the entry block.
30641
30642 2009-03-28  Jan Hubicka  <jh@suse.cz>
30643
30644         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
30645         test introduced by my previous patch.
30646
30647 2009-03-28  Richard Guenther  <rguenther@suse.de>
30648
30649         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
30650         the PHIs value undefined.
30651
30652 2009-03-28  Jan Hubicka  <jh@suse.cz>
30653
30654         * tree-pass.h (pass_fixup_cfg): New pass.
30655         * ipa-inline.c (inline_transform): Set
30656         always_inline_functions_inlined/after_inlining.
30657         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
30658         (pass_fixup_cfg): New pass.
30659         * passes.c (init_optimization_passes): Add fixup_cfg.
30660
30661 2009-03-28  Richard Guenther  <rguenther@suse.de>
30662
30663         PR tree-optimization/38458
30664         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
30665         argument use the arguments copy-of value.
30666
30667 2009-03-28  Richard Guenther  <rguenther@suse.de>
30668
30669         PR tree-optimization/38180
30670         * tree-ssa-ccp.c (get_default_value): Simplify.
30671         (likely_value): Likewise.
30672         (surely_varying_stmt_p): Properly handle VOP case.
30673         (ccp_initialize): Likewise.
30674         (ccp_fold): Handle propagating through *&.
30675         (fold_const_aggregate_ref): Also handle decls.
30676
30677 2009-03-28  Jan Hubicka  <jh@suse.cz>
30678
30679         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30680         * cgraph.h (cgraph_node): Likewise.
30681         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
30682         (cgraph_reset_node): Use process flag.
30683         (cgraph_mark_functions_to_output): Likewise.
30684         (cgraph_expand_function): Likewise.
30685         (cgraph_expand_all_functions): Likewise.
30686         (cgraph_output_in_order): Likewise.
30687         * dwarf2out.c (reference_to_unused): Likewise.
30688         * passes.c do_per_function_toporder): Likewise.
30689
30690 2009-03-28  Jan Hubicka  <jh@suse.cz>
30691
30692         Bring from lto-branch:
30693
30694         2008-09-03  Doug Kwan  <dougkwan@google.com>
30695
30696         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
30697         enums instead of reason strings.
30698         * cgraph.c (cgraph_create_edge): Same.
30699         (cgraph_inline_failed_string): New function.
30700         * cgraph.h (cgraph_inline_failed_t): New enum type.
30701         (cgraph_inline_failed_string): New prototype.
30702         (struct cgraph_edge): Change type of INLINED_FAILED from constant
30703         char pointer to cgraph_inline_failed_t.
30704         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
30705         (cgraph_default_inline_p): Ditto.
30706         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
30707         to cgraph_inline_failed_t pointer.
30708         * cif-code.def: New file.
30709         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
30710         reason string.
30711         (cgraph_check_inline_limits): Change type of REASON to pointer to
30712         cgraph_inline_failed_t.  Replace reason strings with enums.
30713         (cgraph_default_inline_p): Ditto.
30714         (cgraph_recursive_inlining_p): Ditto.
30715         (update_caller_keys): Change type of FAILED_REASON to
30716         cgraph_inline_failed_t.
30717         (cgraph_set_inline_failed): Change type of REASON to pointer to
30718         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
30719         convert enums to strings for text output.
30720         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
30721         to be of type cgraph_inline_failed_t.  Replace reason strings with
30722         enums.  Call cgraph_inline_failed_string to covert enums
30723         to strings for text output.
30724         (cgraph_decide_inlining): Replace reason strings with enums.
30725         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
30726         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
30727         for text output.
30728         * tree-inline.c (expand_call_inline): Change type of REASON
30729         to cgraph_inline_failed_t.  Replace reason strings with enums.
30730         Call cgraph_inline_failed_string for text output.
30731         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
30732         (cgraph.o): Ditto.
30733
30734 2009-03-28  Jan Hubicka  <jh@suse.cz>
30735
30736         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
30737         cgraph_clone_node): Remove master clone handling.
30738         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30739         * cgraph.h (master_clone): Remove.
30740         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30741         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
30742         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
30743
30744 2009-03-28  Jan Hubicka  <jh@suse.cz>
30745
30746         * cgraph.c (cgraph_function_body_availability): Functions declared
30747         inline are always safe to assume that it is not going to be replaced.
30748
30749 2009-03-28  Richard Guenther  <rguenther@suse.de>
30750
30751         PR tree-optimization/38513
30752         * tree-ssa-pre.c (eliminate): Remove redundant stores.
30753         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
30754         EXC_PTR_EXPR and FILTER_EXPR.
30755         (get_ref_from_reference_ops): Likewise.
30756
30757 2009-03-28  Richard Guenther  <rguenther@suse.de>
30758
30759         PR tree-optimization/38968
30760         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
30761         Use FLOOR_MOD_EXPR to compute misalignment.
30762
30763 2009-03-28  Richard Guenther  <rguenther@suse.de>
30764
30765         PR tree-optimization/37795
30766         * tree.h (combine_comparisons): Declare.
30767         * fold-const.c (combine_comparisons): Export.
30768         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
30769         comparisons.
30770         (ifcombine_iforif): Use combine_comparisons.
30771
30772 2009-03-28  Jan Hubicka  <jh@suse.cz>
30773
30774         * tree-eh.c (inlinable_call_p): New function.
30775         (make_eh_edges): Use it.
30776         (verify_eh_edges): Use it.
30777         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
30778         * except.c (reachable_next_level): Add inlinable_function argument
30779         (sjlj_find_directly_reachable_regions): Update.
30780         (add_reachable_handler): Do not set saw_any_handlers.
30781         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
30782         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30783         Add new inlinable call parameter.
30784         (can_throw_internal, can_throw_external): Update.
30785         * except.h (can_throw_internal_1, can_throw_external_1,
30786         foreach_reachable_handler): Update declaration.
30787
30788 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
30789
30790         * config/arm/t-arm-coff, config/h8300/coff.h,
30791         config/i386/i386-aout.h, config/i386/i386-coff.h,
30792         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
30793         config/pdp11/2bsd.h, config/rs6000/aix41.h,
30794         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
30795         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
30796         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
30797         sys-types.h: Remove.
30798         * Makefile.in: Remove protoize and fixproto support and references
30799         in comments.
30800         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
30801         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
30802         Remove.
30803         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
30804         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
30805         unprotoize$(exeext).
30806         (rest.encap): Don't depend on $(STMP_FIXPROTO)
30807         (.PHONY): Don't depend on proto.
30808         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
30809         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
30810         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
30811         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
30812         build/gen-protos.o, build/scan.o, xsys-protos.h,
30813         build/fix-header$(build_exeext), build/fix-header.o,
30814         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
30815         stmp-install-fixproto): Remove.
30816         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
30817         SYSCALLS.c or fixproto files.
30818         (install-common): Don't install protoize.
30819         (install-headers-tar, install-headers-cpio, install-headers-cp):
30820         Don't depend on $(STMP_FIXPROTO).
30821         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
30822         install fixproto files or write out fixproto settings.
30823         (uninstall): Don't uninstall protoize.
30824         * config.gcc (use_fixproto): Remove.
30825         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
30826         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
30827         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
30828         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
30829         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
30830         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
30831         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
30832         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
30833         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
30834         * config/t-vxworks (STMP_FIXPROTO): Remove.
30835         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
30836         STMP_FIXPROTO): Remove.
30837         * config.in, configure: Regenerate.
30838         * crtstuff.c (gid_t, uid_t): Don't undefine.
30839         * doc/install.texi: Change m68k-coff to m68k-elf in example.
30840         (arm-*-coff, arm-*-aout: Remove target entries.
30841         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
30842         Remove mention of AIX 4.1.
30843         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
30844         * doc/invoke.texi (Running Protoize): Remove.
30845         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
30846         (Protoize Caveats): Remove.
30847         * tsystem.h: Update comments on headers assumed to exist.
30848
30849 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
30850
30851         * genautomata.c: Add a new year to the copyright.  Add a new
30852         reference.
30853         (struct insn_reserv_decl): Add comments for member bypass_list.
30854         (find_bypass): Remove.
30855         (insert_bypass): New.
30856         (process_decls): Use insert_bypass.
30857         (output_internal_insn_latency_func): Output all bypasses with the
30858         same input insn in one switch case.
30859
30860         * rtl.def (define_bypass): Describe bypass choice.
30861         * doc/md.texi (define_bypass): Ditto.
30862
30863 2009-03-27  Richard Guenther  <rguenther@suse.de>
30864
30865         * gimplify.c (mark_addressable): Export.
30866         * tree-flow.h (mark_addressable): Declare.
30867         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
30868         * tree-ssa.c (verify_phi_args): Verify that address taken
30869         variables have TREE_ADDRESSABLE set.
30870
30871 2009-03-27  Richard Guenther  <rguenther@suse.de>
30872
30873         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
30874         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
30875         Do not mark decls TREE_ADDRESSABLE.
30876         (build_fold_addr_expr): Adjust.
30877         (fold_addr_expr): Remove.
30878         (fold_unary): Use build_fold_addr_expr.
30879         (fold_comparison): Likewise.
30880         (split_address_to_core_and_offset): Likewise.
30881         * coverage.c (tree_coverage_counter_addr): Mark the array decl
30882         TREE_ADDRESSABLE.
30883         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
30884         (gimplify_modify_expr_to_memcpy): Mark source and destination
30885         addressable.
30886         * omp-low.c (create_omp_child_function): Mark the object decl
30887         TREE_ADDRESSABLE.
30888         (lower_rec_input_clauses): Mark the var we take the address of
30889         TREE_ADDRESSABLE.
30890         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
30891
30892 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30893
30894         PR middle-end/39315
30895         * cfgexpand.c (expand_one_stack_var_at): Change alignment
30896         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
30897
30898 2009-03-27  Richard Guenther  <rguenther@suse.de>
30899
30900         PR tree-optimization/39120
30901         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
30902         constraints.
30903         (handle_lhs_call): Process return constraints.  Add escape
30904         constraints if necessary.
30905         (handle_const_call): Fill out return constraints.  Make nested
30906         case more precise.  Avoid consttmp if possible.
30907         (handle_pure_call): Fill out return constraints.  Avoid
30908         callused if possible.
30909         (find_func_aliases): Simplify call handling.
30910
30911 2009-03-27  Richard Guenther  <rguenther@suse.de>
30912
30913         PR tree-optimization/39120
30914         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
30915         as a representative.
30916         (solve_graph): Do propagate CALLUSED.
30917         (handle_pure_call): Use a scalar constraint from CALLUSED for
30918         the return value.
30919         (find_what_p_points_to): CALLUSED shall not appear in poins-to
30920         solutions.
30921
30922 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30923
30924         PR c/39323
30925         * c-common.c (handle_aligned_attribute): Properly check alignment
30926         overflow.  Use (1U << i) instead of (1 << i).
30927
30928         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
30929
30930         * expr.h (get_mem_align_offset): Updated.
30931
30932         * tree.h (tree_decl_common): Change align to "unsigned int" and
30933         move it before pointer_alias_set.
30934
30935 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30936             Jakub Jelinek  <jakub@redhat.com>
30937
30938         PR target/38034
30939         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
30940         gr_register_operand with gr_reg_or_0_operand.
30941         (cmpxchg_rel_di): Likewise.
30942         (sync_lock_test_and_set<mode>): Likewise.
30943
30944 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30945
30946         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
30947         (true_regnum): Likewise.
30948
30949         * rtlanal.c (subreg_info): Moved to ...
30950         * rtl.h (subreg_info): Here.  New.
30951         (subreg_get_info): New.
30952
30953         * rtlanal.c (subreg_get_info): Make it extern.
30954
30955 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30956
30957         PR target/39472
30958         * config/i386/i386.c (ix86_abi): New.
30959         (override_options): Handle -mabi=.
30960         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
30961         (ix86_call_abi_override): Likewise.
30962         (init_cumulative_args): Likewise.
30963         (function_arg_advance): Likewise.
30964         (function_arg_64): Likewise.
30965         (function_arg): Likewise.
30966         (ix86_pass_by_reference): Likewise.
30967         (ix86_function_value_regno_p): Likewise.
30968         (ix86_build_builtin_va_list_abi): Likewise.
30969         (setup_incoming_varargs_64): Likewise.
30970         (is_va_list_char_pointer): Likewise.
30971         (ix86_init_machine_status): Likewise.
30972         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
30973         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
30974         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
30975         (ix86_function_abi): Make it static and return enum calling_abi.
30976         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
30977         with ix86_abi.
30978         (ix86_fn_abi_va_list): Updated.
30979
30980         * config/i386/i386.h (ix86_abi): New.
30981         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
30982         (CONDITIONAL_REGISTER_USAGE): Likewise.
30983         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
30984         (machine_function): Likewise.
30985
30986         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
30987         with ix86_abi.
30988         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
30989         (STACK_BOUNDARY): Likewise.
30990         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
30991
30992         * config/i386/i386.opt (mabi=): New.
30993
30994         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
30995         return enum calling_abi.
30996         (ix86_function_type_abi): Likewise.
30997         (ix86_function_abi): Removed.
30998
30999         * doc/invoke.texi: Document -mabi= option for x86.
31000
31001 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
31002
31003         * builtins.c (real_dconstp): Delete.
31004         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
31005
31006 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
31007             Jakub Jelinek  <jakub@redhat.com>
31008
31009         PR debug/37959
31010         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
31011         (gen_subprogram_die): When a function is explicit, generate the
31012         DW_AT_explicit attribute.
31013         * langhooks.h (struct lang_hooks_for_decls): Add
31014         function_decl_explicit_p langhook.
31015         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
31016         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
31017
31018 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
31019
31020         * builtins.c (fold_builtin_memory_op): Optimize memmove
31021         into memcpy if we can prove source and destination don't overlap.
31022
31023         * tree-inline.c: Include gt-tree-inline.h.
31024         (clone_fn_id_num): New variable.
31025         (clone_function_name): New function.
31026         (tree_function_versioning): Use it.
31027         * Makefile.in (GTFILES): Add tree-inline.c.
31028
31029 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
31030
31031         * BASE-VER: Change to 4.5.0.
31032
31033 2009-03-27  Xinliang David Li  <davidxl@google.com>
31034
31035         PR tree-optimization/39557
31036         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
31037
31038 2009-03-27  Xinliang David Li  <davidxl@google.com>
31039
31040         PR tree-optimization/39548
31041         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
31042         candidate check.
31043
31044 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31045
31046         * c-common.c (pointer_int_sum): Use %wd on return from
31047         tree_low_cst.
31048
31049 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31050
31051         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
31052         on return from tree_low_cst.
31053
31054 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31055
31056         PR c++/36799
31057         * ginclude/stdarg.h (va_copy): Define also for
31058         __GXX_EXPERIMENTAL_CXX0X__.
31059
31060 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31061
31062         PR c++/35652
31063         * builtins.h (c_strlen): Do not warn here.
31064         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
31065         * c-common.c (pointer_int_sum): Take an explicit location.
31066         Warn about offsets out of bounds.
31067         * c-common.h (pointer_int_sum): Adjust declaration.
31068
31069 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31070
31071         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
31072         markup glitch.
31073
31074 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
31075
31076         PR c++/39554
31077         * opts.c (warn_if_disallowed_function_p): Don't assume
31078         get_callee_fndecl must return non-NULL.
31079
31080 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
31081
31082         PR rtl-optimization/39522
31083         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
31084         when reg_reloaded_valid is set.
31085
31086 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31087
31088         * config/spu/divv2df3.c: New file.
31089         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
31090         (DPBIT_FUNCS): Filter out _div_df.
31091
31092 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
31093
31094         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
31095         a jump insn, count that jump in the distance to the loop start.
31096
31097 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
31098
31099         PR target/39523
31100         * config/sh/sh.c (calc_live_regs): Fix condition for global
31101         registers except PIC_OFFSET_TABLE_REGNUM.
31102
31103 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
31104
31105         PR/39518
31106         * doc/invoke.texi (-mconsole): New.
31107         (-mcygwin): New.
31108         (-mno-cygwin): New.
31109         (-mdll): New.
31110         (-mnop-fun-dllimport): New.
31111         (-mthread): New.
31112         (-mwin32): New.
31113         (-mwindows): New.
31114         (sub section "i386 and x86-64 Windows Options"): New.
31115
31116 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
31117
31118         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
31119         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
31120
31121 2009-03-25  Richard Guenther  <rguenther@suse.de>
31122
31123         PR middle-end/39497
31124         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
31125         of -Wno-error.
31126
31127 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
31128
31129         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
31130         neither of haifa/selective schedulers are working.
31131
31132 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31133
31134         * doc/invoke.texi (Debugging Options): Fix description of
31135         -fno-merge-debug-strings.
31136
31137 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
31138
31139         * config/cris/libgcc.ver: New version-script.
31140         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
31141
31142         * configure.ac <GAS features, nop mnemonic>: Add pattern
31143         crisv32-*-* for "nop".
31144         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
31145         * configure: Regenerate.
31146
31147 2009-03-24  Ira Rosen  <irar@il.ibm.com>
31148
31149         PR tree-optimization/39529
31150         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
31151         mark_sym_for_renaming for the tag copied to the new vector
31152         pointer.
31153
31154 2009-03-24  Arthur Loiret  <aloiret@debian.org>
31155
31156         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
31157         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
31158         EXTRA_SPEC_FUNCTIONS.
31159         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
31160         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
31161         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
31162         -march and -mtune options.
31163
31164 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
31165
31166         * config/m68k/t-rtems: Add m5329 multilib.
31167
31168 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
31169             Jakub Jelinek  <jakub@redhat.com>
31170
31171         PR debug/39524
31172         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
31173         nodes.
31174
31175 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
31176
31177         PR c/39495
31178         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
31179         instead of c_parser_expression_conv, if original_code isn't one of the
31180         4 allowed comparison codes, fail.
31181
31182 2009-03-23  Richard Guenther  <rguenther@suse.de>
31183
31184         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
31185         * tree.h (struct tree_type): Likewise.
31186         * reload.h (struct insn_chain): Likewise.
31187         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
31188         * function.h (struct function): Likewise.
31189         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
31190
31191 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
31192
31193         PR tree-optimization/39516
31194         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
31195
31196 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
31197
31198         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
31199         should be set true if BITS_PER_WORD of target is bigger than 32
31200
31201 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
31202
31203         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
31204         Translate -B-options to -rpath-link.  Correct existing
31205         rpath-link and conditionalize on !nostdlib.
31206
31207 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31208
31209         * doc/extend.texi (Function Attributes, Variable Attributes):
31210         Fix typos.
31211         * doc/invoke.texi (Debugging Options, Optimize Options)
31212         (i386 and x86-64 Options, MCore Options): Likewise.
31213
31214 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
31215
31216         PR debug/37890
31217         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
31218         it for block local namespace aliases.
31219         (gen_decl_die): Pass context_die to gen_namespace_die.
31220
31221 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
31222
31223         PR c/39495
31224         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
31225         minimum or maximum value.
31226
31227 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
31228
31229         * reginfo.c (globalize_reg): Recompute derived reg sets.
31230
31231 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
31232
31233         PR target/39063
31234         * libgcc2.c (mprotect): Do not use signed arguments for
31235         VirtualProtect, use DWORD arguments.  Also fix the 'may
31236         be used uninitialized' warning for the np variable.
31237
31238 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
31239
31240         PR target/39496
31241         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
31242         functions using regparm calling conventions when not optimizing.
31243         (ix86_function_sseregparm): Similarly for sseregparm calling
31244         conventions.
31245
31246 2009-03-19  Li Feng  <nemokingdom@gmail.com>
31247
31248         PR middle-end/39500
31249         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
31250         dependence if the first conflict is after niter iterations.
31251
31252 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
31253
31254         PR middle-end/38609
31255         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
31256         functions with dynamic stack-pointer adjustments.
31257
31258 2009-03-19  Ben Elliston  <bje@au.ibm.com>
31259
31260         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
31261         option; change to -msdata=data.
31262
31263 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31264
31265         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
31266         and -fopenmp.
31267
31268 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
31269
31270         PR target/35180
31271         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
31272
31273 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
31274
31275         * doc/invoke.texi (Code Gen Options): Expand discussion of
31276         -fno-common.
31277
31278 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
31279
31280         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
31281         * matrix-reorg.c (struct matrix_info): Likewise.
31282         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
31283         * rtl.h (struct mem_attrs): Likewise.
31284         * df.h (struct df): Likewise.
31285         * tree-data-ref.h (struct data_dependence_relation): Likewise.
31286         * ira-int.h (struct ira_allocno): Likewise.
31287         * df-scan.c (struct df_collection_rec): Likewise.
31288         * ira.c (struct equivalence): Likewise.
31289         * function.c (struct temp_slot): Likewise.
31290         * cfgloop.h (struct loop): Likewise.
31291
31292         PR debug/39485
31293         * function.c (use_register_for_decl): When not optimizing, disregard
31294         register keyword for variables with types containing methods.
31295
31296 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
31297
31298         PR middle-end/39447
31299         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
31300         (is_simple_operand): Call contains_component_ref_p before calling data
31301         reference analysis that would fail on COMPONENT_REFs.
31302
31303         * tree-vrp.c (search_for_addr_array): Fix formatting.
31304
31305 2009-03-18  Richard Guenther  <rguenther@suse.de>
31306
31307         * tree-vect-transform.c (vect_loop_versioning): Fold the
31308         generated comparisons.
31309         * tree-vectorizer.c (set_prologue_iterations): Likewise.
31310         (slpeel_tree_peel_loop_to_edge): Likewise.
31311
31312 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31313
31314         PR middle-end/37805
31315         * opts.c (print_specific_help): In addition to `undocumented',
31316         accept `separate' and `joined' flags if passed alone.  Describe
31317         output by the first matched one of those.
31318         (common_handle_option): Skip over empty strings.
31319         * gcc.c (display_help): Fix help string for `--help='.
31320         * doc/invoke.texi (Option Summary, Overall Options): With
31321         `--help=', classes and qualifiers can both be repeated, but
31322         only the latter can be negated.  One should not pass only
31323         negated qualifiers.  Fix markup and examples.
31324
31325         Revert
31326         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
31327         PR middle-end/37805
31328         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
31329         and -fhelp=separate.
31330
31331 2009-03-17  Jing Yu  <jingyu@google.com>
31332
31333         PR middle-end/39378
31334         * function.h (struct rtl_data): Move is_thunk from here...
31335         (struct function): ...to here.
31336         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
31337         * varasm.c (assemble_start_function): Change is_thunk from crtl to
31338         cfun.
31339         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
31340         cfun.
31341         (alpha_does_function_need_gp, alpha_start_function): Likewise.
31342         (alpha_output_function_end_prologue): Likewise.
31343         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
31344         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
31345         (rs6000_output_function_epilogue): Likewise.
31346         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
31347
31348 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
31349
31350         PR target/39482
31351         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
31352         from different units in a single alternative.
31353         (*truncdfsf_i387): Ditto.
31354         (*truncxfsf2_mixed): Ditto.
31355         (*truncxfdf2_mixed): Ditto.
31356
31357 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
31358
31359         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
31360         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
31361
31362         PR debug/39474
31363         * tree-ssa-live.c (remove_unused_locals): Don't remove local
31364         unused non-artificial variables when not optimizing.
31365
31366         PR debug/39471
31367         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
31368         DW_TAG_imported_module even if decl is IMPORTED_DECL with
31369         NAMESPACE_DECL in its DECL_INITIAL.
31370
31371         PR middle-end/39443
31372         * optabs.c (set_user_assembler_libfunc): New function.
31373         * expr.h (set_user_assembler_libfunc): New prototype.
31374         * c-common.c: Include libfuncs.h.
31375         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
31376         for memcmp, memset, memcpy, memmove and abort.
31377         * Makefile.in (c-common.o): Depend on libfuncs.h.
31378
31379         PR debug/39412
31380         * dwarf2out.c (gen_inlined_enumeration_type_die,
31381         gen_inlined_structure_type_die, gen_inlined_union_type_die,
31382         gen_tagged_type_instantiation_die): Removed.
31383         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
31384         do nothing.
31385
31386 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
31387
31388         PR testsuite/38526
31389         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
31390         its use.
31391         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
31392         (check-parallel-%): Ditto.
31393         (check-consistency): Ditto.
31394
31395 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
31396
31397         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
31398         local variable rhs by NULL_TREE.
31399
31400 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31401
31402         PR target/39477
31403         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
31404
31405 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31406
31407         PR target/39476
31408         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
31409
31410 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31411
31412         PR target/39473
31413         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
31414         for ms->sysv ABI calls only in 64bit mode.
31415
31416         * config/i386/i386.md (untyped_call): Support 32bit.
31417
31418 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
31419
31420         * doc/extend.texi: Replace x86_65 with x86_64.
31421
31422 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
31423
31424         PR tree-optimization/39455
31425         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
31426         mismatches for POINTER_TYPE_P (type).
31427         (number_of_iterations_le): Likewise.
31428
31429 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31430
31431         * config/picochip/picochip.c: Removed profiling support.
31432         * config/picochip/picochip.md: Removed profiling instruction.
31433         * config/picochip/picochip.h: Removed profiling builtin.
31434
31435 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
31436
31437         * doc/install.texi (--with-host-libstdcxx): Document.
31438
31439 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
31440
31441         PR target/34299
31442         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
31443         generate a warning if the function name does not begin with
31444         "__vector" and the function has either the 'signal' or 'interrupt'
31445         attribute, from here to ...
31446         (avr_declare_function_name): ...here. New function.
31447         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
31448         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
31449
31450 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
31451
31452         PR bootstrap/39454
31453         * cse.c (fold_rtx): Don't modify original const_arg1 when
31454         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
31455         separate variable instead.
31456         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
31457         from out of range shift counts.
31458         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
31459
31460 2009-03-13  Catherine Moore  <clm@codesourcery.com>
31461
31462         * config/i386/x-mingw32 (host-mingw32.o): Replace
31463         diagnostic.h with $(DIAGNOSTIC_H).
31464
31465 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
31466
31467         PR target/39431
31468         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
31469         predicate.
31470         * config/i386/sync.md (sync_compare_and_swap<mode>,
31471         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
31472         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
31473         into a register.
31474         (sync_double_compare_and_swapdi_pic,
31475         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
31476         cmpxchg8b_pic_memory_operand instead of just memory_operand.
31477
31478 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31479
31480         PR target/39445
31481         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
31482
31483 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31484
31485         PR target/39327
31486         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31487         (avx_addsubv4df3): Likewise.
31488         (*avx_addsubv4sf3): Likewise.
31489         (sse3_addsubv4sf3): Likewise.
31490
31491 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31492
31493         PR target/38824
31494         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
31495
31496 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
31497
31498         PR debug/39432
31499         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
31500         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
31501         registers for allocnos created from user-defined variables.
31502
31503 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31504
31505         PR target/39181
31506         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
31507         of non-integer mode as well.
31508
31509 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
31510
31511         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
31512         for functions for which the parameter types are unknown.
31513
31514 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
31515
31516         PR target/39137
31517         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
31518         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
31519         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
31520         * config/i386/i386.c (ix86_local_alignment): For
31521         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
31522         long long variables on the stack to avoid dynamic realignment.
31523         Allow the first argument to be a decl rather than type.
31524         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
31525
31526 2009-03-11  Nick Clifton  <nickc@redhat.com>
31527
31528         PR target/5362
31529         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
31530         options.
31531         Add description to mno-lsim option.
31532         * config/mcore/mcore.h: Remove comment about deprecated m4align
31533         option.
31534         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
31535         * doc/invoke.texi: Add description of mno-lsim and
31536         mstack-increment options.
31537
31538         * config/fr30/fr30.opt: Document the -mno-lsim option.
31539         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
31540         and -mno-lsim options.
31541
31542 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31543
31544         * fold-const.c (fold_comparison): Only call fold_inf_compare
31545         if the mode supports infinities.
31546
31547 2009-03-11  Jason Merrill  <jason@redhat.com>
31548
31549         PR debug/39086
31550         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
31551         end already did.  Notice GIMPLE_CALL modifications of the result.
31552         Don't copy debug information from an ignored decl or a decl from
31553         another function.
31554
31555 2009-03-10  Richard Guenther  <rguenther@suse.de>
31556             Nathan Froyd  <froydnj@codesourcery.com>
31557
31558         PR middle-end/37850
31559         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
31560         (__divMODE3): Likewise.
31561
31562 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
31563
31564         PR tree-optimization/39394
31565         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
31566         DECL_SIZE_UNIT of variable length FIELD_DECLs.
31567
31568 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31569
31570         * recog.c (verfiy_changes): Disallow renaming of hard regs in
31571         inline asms for register asm ("") declarations.
31572
31573 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
31574
31575         * fold-const.c (fold_unary): Fix comment.
31576
31577 2009-03-07  Jan Hubicka  <jh@suse.cz>
31578
31579         PR target/39361
31580         * tree-inline.c (setup_one_parameter): Do replacement of const
31581         argument by constant in SSA form.
31582
31583 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31584
31585         PR middle-end/38028
31586         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
31587         determine alignment passed to assign_stack_local.
31588         (assign_parms_unsplit_complex): Likewise.
31589         * except.c (sjlj_build_landing_pads): Likewise.
31590
31591 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31592
31593         PR middle-end/39360
31594         * tree-flow.h (add_referenced_var): Return bool instead of void.
31595         * tree-dfa.c (add_referenced_var): Return result of
31596         referenced_var_check_and_insert call.
31597         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
31598         of referenced_var_check_and_insert.
31599
31600         PR debug/39372
31601         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
31602         (gen_variable_die): Emit DW_AT_location on abstract static variable's
31603         DIE, don't emit it if abstract origin already has it.
31604         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
31605         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
31606
31607 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
31608
31609         * genpreds.c (needs_variable): Fix parentheses at variable name
31610         detection.
31611         (write_tm_constrs_h): Indent generated code.
31612
31613 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
31614
31615         * doc/extend.texi (Function Attributes): Add documentation
31616         for isr attributes.
31617
31618 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31619
31620         PR debug/39387
31621         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
31622         take locus from its DECL_SOURCE_LOCATION instead of input_location.
31623
31624 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
31625
31626         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
31627         the loop as bad.
31628
31629 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
31630
31631         PR debug/39379
31632         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
31633         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
31634
31635 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
31636
31637         * config/i386/i386.md (R8_REG, R9_REG): New constants.
31638         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
31639         constants instead of magic numbers.
31640         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
31641         (QI_REG_P): Ditto.
31642         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
31643         (x86_64_ms_abi_int_parameter_registers): Ditto.
31644         (x86_64_int_return_registers): Ditto.
31645         (ix86_maybe_switch_abi): Ditto.
31646         (ix86_expand_call): Ditto for clobbered_registers array.
31647         (ix86_hard_regno_mode_ok): Ditto.
31648         (x86_extended_QIreg_mentioned_p): Ditto.
31649
31650 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
31651
31652         PR tree-optimization/39349
31653         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
31654
31655         * combine.c (gen_lowpart_for_combine): Use omode when generating
31656         clobber.
31657
31658 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
31659
31660         PR rtl-optimization/39235
31661         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
31662
31663 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31664
31665         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
31666
31667 2009-03-04  Richard Guenther  <rguenther@suse.de>
31668
31669         PR tree-optimization/39362
31670         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
31671         that occur in abnormal PHIs should be varying.
31672
31673 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31674
31675         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
31676         Extend comments.
31677         (simple_iv):  Take loop as an argument instead of statement.
31678         * tree-scalar-evolution.h (simple_iv): Declaration changed.
31679         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
31680         to simple_iv.
31681         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
31682         Ditto.
31683         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
31684         * matrix-reorg.c (analyze_transpose): Ditto.
31685         * tree-data-ref.c (dr_analyze_innermost): Ditto.
31686         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
31687         * tree-predcom.c (ref_at_iteration): Ditto.
31688         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
31689
31690 2009-03-04  Richard Guenther  <rguenther@suse.de>
31691
31692         PR tree-optimization/39358
31693         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
31694         escaped_id and callused_id.
31695         (solve_graph): Likewise.
31696
31697 2009-03-04  Richard Guenther  <rguenther@suse.de>
31698
31699         PR tree-optimization/39339
31700         * tree-sra.c (try_instantiate_multiple_fields): Make it
31701         no longer ICE on the above.
31702
31703 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
31704
31705         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
31706         that fits within Pmode.
31707
31708 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31709
31710         PR middle-end/10109
31711         * tm.texi (LIBCALL_VALUE): Update description.
31712
31713 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31714
31715         PR middle-end/34443
31716         * doc/extend.texi (section): Update description.
31717
31718 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
31719
31720         PR middle-end/39345
31721         * tree-inline.c (remapped_type): New.
31722         (can_be_nonlocal): Call remapped_type instead of remap_type.
31723
31724 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31725
31726         PR fortran/39354
31727         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
31728         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
31729
31730 2009-03-03  Richard Guenther  <rguenther@suse.de>
31731
31732         PR middle-end/39272
31733         * tree.c (tree_nonartificial_location): New function.
31734         * tree.h (tree_nonartificial_location): Declare.
31735         * builtins.c (expand_builtin_memory_chk): Provide location
31736         of the call location for artificial function pieces.
31737         (maybe_emit_chk_warning): Likewise.
31738         (maybe_emit_sprintf_chk_warning): Likewise.
31739         (maybe_emit_free_warning): Likewise.
31740         * expr.c (expand_expr_real_1): Likewise.
31741
31742 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31743
31744         PR tree-optimization/39343
31745         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
31746         COMPONENT_REF t has ARRAY_TYPE.
31747
31748 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
31749
31750         PR middle-end/39335
31751         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
31752         when the type precision of the induction variable should be
31753         larger than the type precision of nit.
31754         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
31755         * graphite.c (graphite_loop_normal_form): Same.
31756         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
31757
31758 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31759
31760         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
31761         (*call_1_rex64_ms_sysv): Use named constants instead of magic
31762         numbers to describe clobbered registers.
31763         (*call_value_0_rex64_ms_sysv): Ditto.
31764         * config/i386/mmx.md (mmx_emms): Ditto.
31765         (mmx_femms): Ditto.
31766
31767 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
31768
31769         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
31770         of ABI_64.
31771
31772 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31773
31774         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
31775         (spu_section_type_flags): New function.
31776
31777 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31778
31779         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
31780         reg_class_contents of FLOAT_REGS into a temporary.
31781
31782 2009-03-02  Richard Guenther  <rguenther@suse.de>
31783             Ira Rosen  <irar@il.ibm.com>
31784
31785         PR tree-optimization/39318
31786         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
31787         information to the vectorized statement.
31788
31789 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
31790
31791         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
31792         variable.  Use defined names instead of magic constants for REX SSE
31793         registers.
31794
31795 2009-03-01  Richard Guenther  <rguenther@suse.de>
31796
31797         PR tree-optimization/39331
31798         * omp-low.c (lower_send_shared_vars): Do not receive new
31799         values for the reference of DECL_BY_REFERENCE parms or results.
31800
31801 2009-03-01  Jan Hubicka  <jh@suse.cz>
31802
31803         PR debug/39267
31804         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
31805         BLOCK_NONLOCALIZED_VAR): New macros.
31806         (tree_block): Add nonlocalized_vars.
31807         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
31808         gen_decl_die): Add origin argument.  Allow generation of die with
31809         origin at hand only.
31810         (gen_member_die, gen_type_die_with_usage, force_decl_die,
31811         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
31812         of gen_*.
31813         (gen_block_die): Fix checking for unused blocks.
31814         (process_scope_var): Break out from .... ; work with origins only.
31815         (decls_for_scope) ... here; process nonlocalized list.
31816         (dwarf2out_ignore_block): Look for nonlocalized vars.
31817         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
31818         vars.
31819         (dump_scope_block): Dump them.
31820         * tree-inline.c (remap_decls): Handle nonlocalized vars.
31821         (remap_block): Likewise.
31822         (can_be_nonlocal): New predicate.
31823         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
31824
31825 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31826
31827         * configure: Regenerate.
31828
31829 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31830
31831         * optc-gen.awk: No need to duplicate option flags twice.
31832         Reuse help texts for duplicate options which do not have any.
31833
31834         * gcc.c (display_help): Document --version.
31835
31836         * gcc.c (main): If print_help_list and verbose_flag, ensure
31837         driver output comes before subprocess output.
31838
31839         * optc-gen.awk: Assign all remaining fields to help string,
31840         space-separated, for multi-line help in *.opt.
31841
31842         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
31843         -Wno-pedantic-ms-format is for MinGW targets only.
31844
31845         * doc/options.texi (Option file format): Fix bad indentation,
31846         restoring dropped sentence.
31847
31848 2009-02-28  Jan Hubicka  <jh@suse.cz>
31849
31850         * tree-inline.c (tree_function_versioning): Output debug info.
31851
31852 2009-02-28  Jan Hubicka  <jh@suse.cz>
31853
31854         PR debug/39267
31855         * tree-inline.c (setup_one_parameter): Do not copy propagate
31856         arguments when not optimizing.
31857
31858 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
31859
31860         PR target/39327
31861         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31862         (avx_addsubv4df3): Likewise.
31863         (*avx_addsubv4sf3): Likewise.
31864         (sse3_addsubv4sf3): Likewise.
31865         (*avx_addsubv2df3): Likewise.
31866         (sse3_addsubv2df3): Likewise.
31867         (avx_unpckhps256): Correct item selectors.
31868         (avx_unpcklps256): Likewise.
31869         (avx_unpckhpd256): Likewise.
31870         (avx_unpcklpd256): Likewise.
31871
31872 2009-02-28  Jan Hubicka  <jh@suse.cz>
31873
31874         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
31875         static vars.
31876         (copy_arguments_for_versioning): If var is declared don't declare it.
31877         (tree_function_versioning): First setup substitutions and then copy
31878         args.
31879
31880 2009-02-27  Jan Hubicka  <jh@suse.cz>
31881
31882         PR debug/39267
31883         * cgraph.h (varpool_output_debug_info): Remove.
31884         * cgraphunit.c (varpool_output_debug_info): Remove.
31885         * dwarf2out.c (deferred_locations_struct): New struct
31886         (deferred_locations): New type.
31887         (deferred_locations_list): New static var.
31888         (deffer_location): New function.
31889         (gen_variable_die): Use it.
31890         (decls_for_scope): Output info on local static vars.
31891         (dwarf2out_finish): Process deferred locations.
31892         * varpool.c (varpool_output_debug_info): Remove.
31893
31894 2009-02-27  Jan Hubicka  <jh@suse.cz>
31895
31896         PR debug/39267
31897         * tree.h (TREE_PROTECTED): Fix comment.
31898         (BLOCK_HANDLER_BLOCK): Remove.
31899         (struct tree_block): Remove handler_block add body_block.
31900         (inlined_function_outer_scope_p): New.
31901         (is_body_block): Remove.
31902         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
31903         * dwarf2out.c (is_inlined_entry_point): Remove.
31904         (add_high_low_attributes): Use inlined_function_outer_scope_p.
31905         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
31906         code.
31907         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
31908         * gimplify.c (gimplify_expr): Gimplify body blocks.
31909         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
31910         block with multiple subblocks.
31911         (dump_scope_block): Prettier output; dump more flags and info.
31912         (dump_scope_blocks): New.
31913         (remove_unused_locals): Use dump_scope_blocks.
31914         * tree-flow.h (dump_scope_blocks): Declare.
31915         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
31916         * stmt.c (is_body_block): Remove.
31917         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
31918         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
31919
31920 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
31921
31922         PR middle-end/39308
31923         * graphite.c (graphite_loop_normal_form): Do not call
31924         number_of_iterations_exit from a gcc_assert.
31925
31926 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31927
31928         * config/s390/s390.c (s390_swap_cmp): Look for conditional
31929         jumps if COND is NULL.
31930         (find_cond_jump): New function.
31931         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
31932         * config/s390/s390.md: Remove z10_cobra attribute value.
31933
31934 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
31935
31936         * config/alpha/alpha.h (alpha_expand_mov): Return false if
31937         force_const_mem returns NULL_RTX.
31938
31939 2009-02-26  Jan Hubicka  <jh@suse.cz>
31940
31941         PR debug/39267
31942         * cgraph.h (varpool_output_debug_info): Remove.
31943         * cgraphunit.c (varpool_output_debug_info): Remove.
31944         * dwarf2out.c (deferred_locations_struct): New struct
31945         (deferred_locations): New type.
31946         (deferred_locations_list): New static var.
31947         (deffer_location): New function.
31948         (gen_variable_die): Use it.
31949         (decls_for_scope): Output info on local static vars.
31950         (dwarf2out_finish): Process deferred locations.
31951         * varpool.c (varpool_output_debug_info): Remove.
31952
31953 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
31954
31955         PR rtl-optimization/39241
31956         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
31957         to subreg_offset_representable_p.
31958
31959 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31960
31961         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
31962         execute function prototype.  Get f and nregs from max_reg_num
31963         and get_insns.  Remove the first backward pass as it's dead,
31964         guard the forward pass by flag_expensive_optimizations.
31965         (rest_of_handle_regmove): Delete.
31966         (pass_regmove): Replace it with regmove_optimize.
31967
31968 2009-02-25  Martin Jambor  <mjambor@suse.cz>
31969
31970         PR tree-optimization/39259
31971         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
31972         calls_alloca function flags.
31973         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
31974         calls are detected.
31975
31976 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31977
31978         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
31979         flags_set_1_rtx, flags_set_1_set): Delete.
31980         (regmove_optimize): Do not call mark_flags_life_zones.
31981
31982 2009-02-24  Julian Brown  <julian@codesourcery.com>
31983
31984         PR target/35965
31985         * config/arm/arm.c (require_pic_register): Only set
31986         cfun->machine->pic_reg once per function.
31987
31988 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
31989
31990         * doc/invoke.texi (Link Options): Document an easier way to pass
31991         options that take arguments to the GNU linker using -Xlinker and -Wl.
31992
31993 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
31994
31995         PR target/33785
31996         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
31997
31998 2009-02-24  Richard Guenther  <rguenther@suse.de>
31999
32000         PR debug/39285
32001         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
32002
32003 2009-02-24  Richard Guenther  <rguenther@suse.de>
32004             Zdenek Dvorak  <ook@ucw.cz>
32005
32006         PR tree-optimization/39233
32007         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
32008         from converting them to a generic type.
32009
32010 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
32011
32012         PR tree-optimization/39260
32013         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
32014         contains a condition with a real type.
32015         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
32016
32017 2009-02-23  Jason Merrill  <jason@redhat.com>
32018
32019         PR c++/38880
32020         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
32021         narrowing_initializer_constant_valid_p.
32022         (narrowing_initializer_constant_valid_p): Don't return
32023         null_pointer_node for adding a pointer to itself.
32024
32025 2009-02-23  Jan Hubicka  <jh@suse.cz>
32026
32027         PR c/12245
32028         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
32029         resizing.
32030
32031 2009-02-23  Jan Hubicka  <jh@suse.cz>
32032
32033         PR tree-optimization/37709
32034         * tree.c (block_ultimate_origin): Move here from dwarf2out.
32035         * tree.h (block_ultimate_origin): Declare.
32036         * dwarf2out.c (block_ultimate_origin): Move to tree.c
32037         * tree-ssa-live.c (remove_unused_scope_block_p):
32038         Eliminate blocks containig no instructions nor live variables nor
32039         nested blocks.
32040         (dump_scope_block): New function.
32041         (remove_unused_locals): Enable removal of dead blocks by default;
32042         enable dumping at TDF_DETAILS.
32043
32044 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
32045
32046         * config/i386/i386.c (classify_argument): Don't allow COImode
32047         and OImode.
32048         (function_arg_advance_32): Don't allow OImode.
32049         (function_arg_32): Likewise.
32050         (function_value_32): Likewise.
32051         (return_in_memory_32): Likewise.
32052         (function_arg_64): Remove OImode comment.
32053
32054 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
32055
32056         PR target/39261
32057         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
32058         ix86_expand_vector_set for V4DImode in 64bit mode only.
32059         (ix86_expand_vector_init_one_var): Likewise.
32060
32061 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
32062
32063         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
32064
32065 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
32066
32067         PR bootstrap/39257
32068         * loop-iv.c: Revert last change.
32069         * emit-rtl.c: Likewise.
32070
32071 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
32072
32073         PR target/39256
32074         * config/i386/i386.c (type_natural_mode): Remove an extra
32075         space in the warning message.
32076         (function_value_32): Handle 32-byte vector modes.
32077         (return_in_memory_32): Likewise.
32078
32079 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
32080
32081         * loop-iv.c (truncate_value): New function.
32082         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
32083         of lowpart_subreg.
32084         (lowpart_subreg): Move to...
32085         * emit-rtl.c: ...here.
32086
32087 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
32088
32089         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
32090         accidental and undocumented change at revision 140860.
32091
32092 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
32093
32094         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
32095         take gimple_seq * arguments.
32096         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
32097         types_compatible_p langhook.
32098
32099 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
32100             Joseph Myers  <joseph@codesourcery.com>
32101
32102         * config/arm/arm.c (arm_builtin_va_list): New function.
32103         (arm_expand_builtin_va_start): Likewise.
32104         (arm_gimplify_va_arg_expr): Likewise.
32105         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
32106         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
32107         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
32108         (va_list_type): New variable.
32109         (arm_mangle_type): Mangle va_list_type appropriately.
32110
32111 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
32112
32113         PR middle-end/39157
32114         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
32115         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
32116         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
32117         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
32118         parameter to 1000 for -O1 by default.
32119         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
32120         parameter.
32121         * loop-invariant.c: Include params.h.
32122         (move_loop_invariants): Don't call move_single_loop_invariants on
32123         very large loops.
32124
32125 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
32126
32127         * calls.c (emit_library_call_value_1): Use slot_offset instead of
32128         offset when calculating bounds for indexing stack_usage_map.  Fixes
32129         a buffer overflow with certain target setups.
32130
32131 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
32132
32133         PR target/39240
32134         * calls.c (expand_call): Clear try_tail_call if caller and callee
32135         disagree in promotion of function return value.
32136
32137 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
32138
32139         PR target/39175
32140         * c-common.c (c_determine_visibility): If visibility changed and
32141         DECL_RTL has been already set, call make_decl_rtl to update symbol
32142         flags.
32143
32144 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
32145
32146         PR c++/39188
32147         * varasm.c (assemble_variable): Don't check DECL_NAME when
32148         globalizing a variable.
32149
32150 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
32151
32152         PR c/38483
32153         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
32154         expression before any __builtin_trap call.
32155         * c-typeck.c (build_function_call): Convert and check function
32156         arguments before generating a call to a trap.  Evaluate the
32157         function arguments before the trap.
32158
32159 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
32160
32161         PR target/39228
32162         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
32163         (UNSPEC_FXAM_MEM): New unspec.
32164         (fxam<mode>2_i387_with_temp): New insn and split pattern.
32165         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
32166         memory using fxam<mode>2_i387_with_temp to remove excess precision.
32167
32168 2009-02-19  Richard Guenther  <rguenther@suse.de>
32169
32170         PR tree-optimization/39207
32171         PR tree-optimization/39074
32172         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
32173         storedanything_tree): New.
32174         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
32175         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
32176         (build_succ_graph): Add edges from STOREDANYTHING to all
32177         non-direct nodes.
32178         (init_base_vars): Initialize STOREDANYTHING.
32179         (compute_points_to_sets): Free substitution info after
32180         building the succ graph.
32181         (ipa_pta_execute): Likewise.
32182
32183         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
32184         field.
32185         (do_ds_constraint): Do not add to special var or non-pointer
32186         field solutions.
32187         (type_could_have_pointers): Split out from ...
32188         (could_have_pointers): ... here.  For arrays use the element type.
32189         (create_variable_info_for): Initialize may_have_pointers.
32190         (new_var_info): Likewise.
32191         (handle_lhs_call): Make the HEAP variable unknown-sized.
32192         (intra_create_variable_infos): Use a type with pointers for
32193         PARM_NOALIAS, make it unknown-sized.
32194
32195 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
32196
32197         PR target/39224
32198         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
32199
32200 2009-02-18  Jason Merrill  <jason@redhat.com>
32201
32202         PR target/39179
32203         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
32204         value if DECL_EXTERNAL.
32205         * tree-sra.c (sra_walk_gimple_assign): Likewise.
32206         * target.h (gcc_target::binds_local_p): Clarify "module".
32207         * tree.h (TREE_PUBLIC): Clarify "module".
32208
32209 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
32210
32211         PR target/38891
32212         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
32213         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
32214
32215 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
32216
32217         PR target/39082
32218         * c.opt (Wabi): Support C and ObjC.
32219         (Wpsabi): New.
32220
32221         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
32222
32223         * config/i386/i386.c (classify_argument): Warn once about the ABI
32224         change when passing union with long double.
32225
32226         * doc/invoke.texi: Update -Wabi for warning psABI changes.
32227
32228 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
32229
32230         PR c/35447
32231         * c-parser.c (c_parser_compound_statement): Always enter and leave
32232         a scope.
32233
32234 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32235
32236         PR target/34587
32237         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
32238
32239 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
32240
32241         PR tree-optimization/36922
32242         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
32243         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
32244         Likewise.
32245
32246 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
32247
32248         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
32249         to 0 for EABI64.
32250
32251 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
32252
32253         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
32254
32255 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
32256
32257         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
32258         tree sharing.
32259
32260 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
32261             Richard Sandiford  <rdsandiford@googlemail.com>
32262
32263         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
32264         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
32265         (loongson_biadd): ...this.
32266
32267 2009-02-17  Richard Guenther  <rguenther@suse.de>
32268
32269         PR tree-optimization/39202
32270         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
32271         a var make sure to follow existing collapses.
32272
32273 2009-02-17  Richard Guenther  <rguenther@suse.de>
32274
32275         PR middle-end/39214
32276         * langhooks.c (lhd_print_error_function): Check for NULL block.
32277
32278 2009-02-17  Richard Guenther  <rguenther@suse.de>
32279
32280         PR tree-optimization/39204
32281         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
32282         of the PHI arg.
32283
32284 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
32285
32286         * config/soft-fp/double.h: Update from glibc CVS.
32287
32288 2009-02-17  Richard Guenther  <rguenther@suse.de>
32289
32290         PR tree-optimization/39207
32291         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
32292         strict-aliasing warnings for pointers pointing to NULL.
32293
32294 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
32295
32296         PR c/35446
32297         * c-parser.c (c_parser_braced_init): Call pop_init_level when
32298         skipping until next close brace.
32299
32300 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
32301
32302         PR target/37049
32303         * config/i386/i386.c (ix86_expand_push): Set memory alignment
32304         to function argument boundary.
32305
32306 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32307
32308         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
32309         in the lea_add. Reload eventually constraints it properly.
32310         * config/picochip/constraints.md: Remove the target constraint
32311         "b", since it is not needed anymore.
32312
32313 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
32314
32315         * gthr-dce.h: Uglify function parameter and local variable names.
32316         * gthr-gnat.h: Likewise.
32317         * gthr-mipssde.h: Likewise.
32318         * gthr-nks.h: Likewise.
32319         * gthr-posix95.h: Likewise.
32320         * gthr-posix.h: Likewise.
32321         * gthr-rtems.h: Likewise.
32322         * gthr-single.h: Likewise.
32323         * gthr-solaris.h: Likewise.
32324         * gthr-tpf.h: Likewise.
32325         * gthr-vxworks.h: Likewise.
32326         * gthr-win32.h: Likewise.
32327
32328 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
32329
32330         PR target/39196
32331         * config/i386/i386.md: Restrict the new peephole2 to move
32332         between MMX/SSE registers.
32333
32334 2009-02-15  Richard Guenther  <rguenther@suse.de>
32335
32336         Revert
32337         2009-02-13  Richard Guenther  <rguenther@suse.de>
32338
32339         * configure.ac: Enable LFS.
32340         * configure: Re-generate.
32341         * config.in: Likewise.
32342
32343 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32344
32345         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
32346         spu_srqwbyte, spu_srqwbytebc): Define.
32347         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
32348         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
32349         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
32350         "shrqby_<mode>"): New insn-and-split patterns.
32351         * config/spu/spu.c (expand_builtin_args): Determine and return
32352         number of operands using spu_builtin_description data.
32353         (spu_expand_builtin_1): Use it.
32354
32355 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
32356
32357         PR target/38056
32358         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
32359         TARGET_CONST_GP.
32360
32361 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32362
32363         PR target/39149
32364         * config/i386/i386.c (override_options): Correct warning
32365         messages for -malign-loops, -malign-jumps and -malign-functions.
32366
32367 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32368
32369         PR target/39152
32370         * config/i386/i386.md: Restrict the new peephole2 to move
32371         between the general purpose registers.
32372
32373 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32374
32375         PR target/39162
32376         * config/i386/i386.c (type_natural_mode): Add a new argument.
32377         Return the original mode and warn ABI change if vector size is 32byte.
32378         (function_arg_advance): Updated.
32379         (function_arg): Likewise.
32380         (ix86_function_value): Likewise.
32381         (ix86_return_in_memory): Likewise.
32382         (ix86_sol10_return_in_memory): Likewise.
32383         (ix86_gimplify_va_arg): Likewise.
32384         (function_arg_32): Don't warn ABX ABI change here.
32385         (function_arg_64): Likewise.
32386
32387 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
32388
32389         * loop-iv.c (implies_p): In the final case, test that operands 0
32390         of the two comparisons match.
32391
32392         * config/bfin/bfin.c (find_prev_insn_start): New function.
32393         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
32394         (find_next_insn_start): Move.
32395
32396 2009-02-13  Richard Guenther  <rguenther@suse.de>
32397
32398         * configure.ac: Enable LFS.
32399         * configure: Re-generate.
32400         * config.in: Likewise.
32401
32402 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
32403
32404         PR c/35444
32405         * c-parser.c (c_parser_parms_list_declarator): Discard pending
32406         sizes on syntax error after some arguments have been parsed.
32407
32408 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32409
32410         * doc/invoke.texi (-fira): Remove.
32411
32412 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32413
32414         * caller-save.c: Replace regclass.c with reginfo.c in comments.
32415         * recog.c: Likewise.
32416         * rtl.h: Likewise.
32417
32418 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
32419
32420         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
32421         (umul_ppmm): Likewise.
32422         (count_leading_zeros): Likewise.
32423         (count_trailing_zeros): Likewise.
32424         (UMUL_TIME): Likewise.
32425
32426 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32427
32428         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
32429         soft-fp/t-softfp to tmake_file.
32430
32431         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
32432         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
32433         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
32434         IA64_BUILTIN_INFQ]: New.
32435         (ia64_init_builtins): Initialize __builtin_infq,
32436         __builtin_fabsq and __builtin_copysignq if not HPUX.
32437         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
32438         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
32439
32440         * config/ia64/lib1funcs.asm (__divtf3): Define only if
32441         SHARED is defined.
32442         (__fixtfti): Likewise.
32443         (__fixunstfti): Likewise.
32444         (__floattitf): Likewise.
32445
32446         * config/ia64/libgcc-glibc.ver: New.
32447         * config/ia64/t-fprules-softfp: Likewise.
32448         * config/ia64/sfp-machine.h: Likewise.
32449
32450         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
32451         (LIBGCC2_TF_CEXT): Likewise.
32452         (TF_SIZE): Likewise.
32453         (TARGET_INIT_LIBFUNCS): Likewise.
32454
32455         * config/ia64/t-glibc (SHLINB_MAPFILES):
32456         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
32457
32458 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32459
32460         * config/i386/i386.c (construct_container): Rewrite processing
32461         BLKmode with X86_64_SSE_CLASS.
32462
32463 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
32464
32465         PR target/39152
32466         * config/i386/i386.md: Replace simplify_replace_rtx with
32467         replace_rtx in the new peephole2.
32468
32469 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
32470
32471         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
32472         loop unrolling do not happen at -O2.
32473
32474 2009-02-12  Michael Matz  <matz@suse.de>
32475
32476         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
32477
32478 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32479
32480         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
32481         for -g3.
32482
32483 2009-02-12  Ben Elliston  <bje@au.ibm.com>
32484
32485         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
32486         patterns when updating the back chain.  Missed in the 2009-02-10
32487         change.
32488
32489 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
32490
32491         * doc/extend.texi (Decimal Floating Types): Update identifier of
32492         draft TR and list of missing support.
32493
32494 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
32495
32496         PR middle-end/39154
32497         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
32498         bit to variable length decl's flags, add it also to its
32499         pointer replacement variable.
32500
32501 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
32502             Jakub Jelinek  <jakub@redhat.com>
32503
32504         PR target/39118
32505         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
32506         (memory_blockage): New expander.
32507         (*memory_blockage): New insn pattern.
32508         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
32509         instead of general blockage at the end of function prologue when
32510         frame pointer is used to access red zone area.  Do not emit blockage
32511         when profiling, it is emitted in generic code.
32512         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
32513         function epilogue when frame pointer is used to access red zone area.
32514
32515 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
32516
32517         PR target/38824
32518         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
32519         by arithmetic with memory operands.
32520         * config/i386/predicates.md (commutative_operator): New.
32521
32522 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
32523
32524         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
32525         bulleted lists.
32526
32527 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
32528
32529         * alias.h (record_alias_subset): Declare.
32530         * alias.c (record_alias_subset): Make global.
32531
32532 2009-02-10  Nick Clifton  <nickc@redhat.com>
32533
32534         * tree-parloops.c: Change license to GPLv3.
32535         * ipa-struct-reorg.c: Change license to GPLv3.
32536         * ipa-struct-reorg.h: Change license to GPLv3.
32537
32538 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
32539
32540         PR c/39084
32541         * c-decl.c (start_struct): Return NULL on error.
32542
32543 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
32544
32545         PR middle-end/39124
32546         * cfgloopmanip.c (remove_path): Call remove_bbs after
32547         cancel_loop_tree, not before it.
32548
32549         PR target/39139
32550         * function.h (struct function): Add has_local_explicit_reg_vars bit.
32551         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
32552         VAR_DECLs were seen.
32553         * tree-ssa-live.c (remove_unused_locals): Recompute
32554         cfun->has_local_explicit_reg_vars.
32555         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
32556         copies or clearings if cfun->has_local_explicit_reg_vars.
32557
32558 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
32559
32560         PR target/39118
32561         * config/i386/i386.c (expand_prologue): Emit blockage at the end
32562         of function prologue when frame pointer is used to access
32563         red zone area.
32564
32565 2009-02-10  Richard Guenther  <rguenther@suse.de>
32566
32567         PR middle-end/39127
32568         * gimplify.c (gimple_regimplify_operands): Always look if
32569         we need to create a temporary.
32570
32571 2009-02-10  Richard Guenther  <rguenther@suse.de>
32572
32573         PR tree-optimization/39132
32574         * tree-loop-distribution.c (todo): New global var.
32575         (generate_memset_zero): Trigger TODO_rebuild_alias.
32576         (tree_loop_distribution): Return todo.
32577
32578 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
32579
32580         PR target/39119
32581         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
32582         (x86_64_reg_class_name): Removed.
32583         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
32584         first one isn't X86_64_SSE_CLASS or any other ones aren't
32585         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
32586         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
32587         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
32588         and 3 X86_64_SSEUP_CLASS.
32589         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
32590         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
32591
32592 2009-02-10  Ben Elliston  <bje@au.ibm.com>
32593
32594         * config/rs6000/rs6000.md (allocate_stack): Always use an update
32595         form instruction to update the stack back chain word, even if the
32596         user has disabled the generation of update instructions.
32597         (movdi_<mode>_update_stack): New.
32598         (movsi_update_stack): Likewise.
32599         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
32600         always use an update form instruction to update the stack back
32601         chain word.
32602
32603 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
32604
32605         PR middle-end/38953
32606         * graphite.c (if_region_set_false_region): After moving a region in
32607         the false branch of a condition, remove the empty dummy basic block.
32608         (gloog): Remove wrong fix for PR38953.
32609
32610 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32611
32612         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
32613         generation due to implicit sign extension.
32614
32615 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
32616
32617         PR middle-end/38981
32618         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
32619         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
32620
32621 2009-02-09  Richard Guenther  <rguenther@suse.de>
32622
32623         PR middle-end/35202
32624         * convert.c (convert_to_real): Disable (float)fn((double)x)
32625         to fnf(x) conversion if errno differences may occur and
32626         -fmath-errno is set.
32627
32628 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
32629
32630         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
32631         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
32632         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
32633
32634 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32635
32636         PR c/35434
32637         * c-common.c (handle_alias_attribute): Disallow attribute for
32638         anything not a FUNCTION_DECL or VAR_DECL.
32639
32640 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
32641
32642         PR c/39035
32643         * real.c (do_compare): Special-case compare of zero against
32644         decimal float value.
32645
32646 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32647
32648         PR c/36432
32649         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
32650         as indicating flexible array members unless the field itself is
32651         being declarared as the incomplete array.
32652
32653 2009-02-06  Jan Hubicka  <jh@suse.cz>
32654
32655         PR tree-optimization/38844
32656         * ipa-inline.c (try_inline): Stop inlining recursion when edge
32657         is already inlined.
32658
32659 2009-02-06  Richard Guenther  <rguenther@suse.de>
32660
32661         PR middle-end/38977
32662         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
32663         fork because we may expand it as __gcov_fork.
32664
32665 2009-02-06  Nick Clifton  <nickc@redhat.com>
32666
32667         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
32668
32669 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
32670
32671         PR tree-optimization/35659
32672         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
32673         vn_phi_eq): Shortcut if hashcode does not match.
32674         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
32675         NULL operands.
32676         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
32677         and avoid iterative_hash_expr.
32678         (FOR_EACH_VALUE_ID_IN_SET): New.
32679         (value_id_compare): Remove.
32680         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
32681         sort expressions by value id.
32682
32683 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
32684
32685         PR target/38991
32686         * config/sh/predicates.md (general_movsrc_operand): Don't check
32687         the subreg of system registers here.
32688
32689 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
32690
32691         PR c++/39106
32692         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
32693         on the copied decl.
32694
32695 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
32696
32697         PR rtl-optimization/39110
32698         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
32699         addresses, not aligned ones.
32700
32701 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
32702             Richard Guenther  <rguenther@suse.de>
32703
32704         PR tree-optimization/39100
32705         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
32706         comment says and add edges.
32707
32708 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
32709
32710         PR c/35435
32711         * c-common.c (handle_tls_model_attribute): Ignore attribute for
32712         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
32713
32714 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
32715
32716         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
32717         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
32718         register_bb_in_sese, new_sese, free_sese): Moved.
32719         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
32720         outermost_loop_in_scop, build_scop_iteration_domain,
32721         expand_scalar_variables_ssa_name, get_vdef_before_scop,
32722         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
32723         Use loop_in_sese_p instead of loop_in_scop_p.
32724         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
32725         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
32726         (scopdet_basic_block_info): Fix bug in scop detection.
32727         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
32728         eq_loop_to_cloog_loop): Remove.
32729         (nb_loops_around_loop_in_scop, nb_loop
32730         ref_nb_loops): Moved here...
32731         * graphite.h (ref_nb_loops): ... from here.
32732         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
32733         (loop_domain_dim, loop_iteration_vector_dim): Remove.
32734         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
32735
32736 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
32737             Hans-Peter Nilsson  <hp@axis.com>
32738
32739         PR rtl-optimization/37889
32740         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
32741         Move offset handling from PLUS to before the switch.  Use new
32742         arguments when considering SYMBOL_REFs too.
32743         (rtx_addr_can_trap_p): Pass dummy offset and size.
32744         (enum may_trap_p_flags): Remove.
32745         (may_trap_p_1): Pass size from MEM_SIZE.
32746
32747         PR rtl-optimization/38921
32748         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
32749         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
32750         * rtlanal.c (may_trap_after_code_motion_p): Delete.
32751         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
32752
32753 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
32754
32755         AVX Programming Reference (January, 2009)
32756         * config/i386/sse.md (*vpclmulqdq): New.
32757
32758 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
32759
32760         PR tree-optimization/38977
32761         PR gcov-profile/38292
32762         * calls.c (special_function_p): Disregard __builtin_ prefix.
32763
32764 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
32765
32766         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
32767         non-indexable addresses even before reload.
32768
32769 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32770
32771         PR c/29129
32772         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
32773         as having variable size.  Do not give an error for unnamed
32774         parameters with [*] declarators.  Give a warning for type names
32775         with [*] declarators and mark them as variable size.
32776         * c-parser.c (c_parser_sizeof_expression): Do not give an error
32777         for sizeof applied to [*] type names.
32778
32779 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32780
32781         PR C++/36607
32782         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
32783
32784 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32785
32786         * gcc.c (process_command): Update copyright notice dates.
32787         * gcov.c (print_version): Likewise.
32788         * gcov-dump.c (print_version): Likewise.
32789         * mips-tfile.c (main): Likewise.
32790         * mips-tdump.c (main): Likewise.
32791
32792 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32793
32794         PR c/35433
32795         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
32796         for composite type involving a zero-length array type.
32797
32798 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32799
32800         PR target/35318
32801         * function.c (match_asm_constraints_1): Skip over
32802         initial optional % in the constraint.
32803
32804         PR inline-asm/39059
32805         * c-parser.c (c_parser_postfix_expression): If fixed point is not
32806         supported, don't accept FIXED_CSTs.
32807         * c-decl.c (finish_declspecs): Error if fixed point is not supported
32808         and _Sat is used without _Fract/_Accum.  Set specs->type to
32809         integer_type_node for cts_fract/cts_accum if fixed point is not
32810         supported.
32811
32812 2009-02-02  Catherine Moore  <clm@codesourcery.com>
32813
32814         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
32815
32816 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
32817
32818         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
32819         (ABI_HAS_64BIT_SYMBOLS): Use it.
32820         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
32821
32822 2009-02-02  Paul Brook  <paul@codesourcery.com>
32823
32824         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
32825
32826 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
32827
32828         PR inline-asm/39058
32829         * recog.h (asm_operand_ok): Add constraints argument.
32830         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
32831         recurse on matching constraint.
32832         (check_asm_operands): Pass constraints as 3rd argument to
32833         asm_operand_ok.  Don't look up matching constraint here.
32834         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
32835         to asm_operand_ok.
32836
32837 2009-02-02  Ben Elliston  <bje@au.ibm.com>
32838
32839         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
32840         TARGET_NARROW_VOLATILE_BITFIELD macro names.
32841
32842 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32843
32844         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
32845         information.  Remove some obsolete information.  Reorganize.
32846
32847         * config/pa/fptr.c: Revert license to GPL 2.
32848         * config/pa/milli64.S: Likewise.
32849
32850 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32851
32852         PR target/38904
32853         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
32854         LIBRARY name in, instead of hard-coding it.
32855         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
32856         extra target make frag to tmake_files according to EH model.
32857         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
32858         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
32859         frags that define makefile variable EH_MODEL appropriately.
32860         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
32861         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
32862         to "-sjlj" according to type of EH configured.
32863         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32864         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
32865         to "_sjlj" according to type of EH configured.
32866         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32867         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
32868         (SHLIB_LINK):  Add missing semicolon to if-else construct.
32869         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32870         string value of "pe_dll" command-line option.
32871         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
32872         (SHLIB_SONAME):  Use it when overriding t-cygming default.
32873         (SHLIB_IMPLIB):  Override t-cygming default.
32874         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32875         string value of "pe_dll" command-line option.
32876
32877 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32878
32879         PR target/38952
32880         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
32881         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
32882
32883 2009-01-31  Richard Guenther  <rguenther@suse.de>
32884
32885         PR tree-optimization/38937
32886         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
32887         computing the transitive closure.
32888
32889 2009-01-30  Richard Guenther  <rguenther@suse.de>
32890
32891         PR tree-optimization/39041
32892         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
32893         Propagate variable indices only if the types match for this stmt.
32894
32895 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
32896
32897         PR target/39013
32898         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
32899         inline but never defined.
32900
32901 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
32902
32903         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
32904         (*insv_h_di_reg_extimm): New insn.
32905         (*insv_l<mode>_reg_extimm): New insn.
32906
32907 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32908
32909         * config/picochip/picochip.c (flag_conserve_stack): set
32910         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
32911         fconserve-stack. Reduce call-overhead used by inliner.
32912
32913 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32914
32915         PR/38157
32916         * common.opt (flag_conserve_stack): Initialised to zero.
32917
32918 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
32919
32920         PR/39002
32921         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
32922         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
32923         method.
32924
32925 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
32926
32927         * ira-color.c (allocno_reload_assign): Update comments.
32928         * regmove.c (regmove_optimize): Likewise.
32929
32930         * ra.h: Removed.
32931
32932 2009-01-29  Robert Millan  <rmh@aybabtu.com>
32933
32934         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
32935         * config/i386/kopensolaris-gnu.h: New file.  Undefine
32936         `MD_UNWIND_SUPPORT'.
32937         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
32938
32939 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
32940
32941         PR tree-optimization/39007
32942         * tree-loop-distribution.c (generate_builtin): Use
32943         recompute_dominator to compute the immediate dominator of the
32944         basic block just after the loop.
32945
32946 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
32947
32948         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
32949         (ASM_OUTPUT_DWARF_PCREL): Define.
32950
32951 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
32952
32953         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
32954         * doc/passes.texi: Remove entries about regclass, local-alloc, and
32955         global.  Modify entries about regmove and IRA.
32956
32957         * ra-conflict.c: Remove the file.
32958
32959         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
32960
32961         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
32962         (pass_regclass_init): Rename to pass_reginfo_init.
32963
32964         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
32965
32966         * toplev.h (flag_ira): Remove.
32967
32968         * caller-save.c (setup_save_areas): Remove flag_ira.
32969
32970         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
32971
32972         * global.c: Remove the file.
32973
32974         * opts.c (decode_options): Remove flag_ira.
32975
32976         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
32977
32978         * regmove.c: Modify file description.
32979         (find_use_as_address, try_auto_increment): Define them only if
32980         AUTO_INC_DEC is defined.
32981         (replacement_quality, replace_in_call_usage, fixup_match_1,
32982         stable_and_no_regs_but_for_p): Remove.
32983         (reg_set_in_bb): Make it static.
32984         (regmove_optimize): Remove flag_ira and code which worked for
32985         !flag_ira.
32986
32987         * local-alloc.c: Remove the file.
32988
32989         * common.opt (fira): Remove.
32990
32991         * ira.c: Include except.h.
32992         (eliminable_regset): Move from global.c.
32993         (mark_elimination): Ditto.  Remove flag_ira.
32994         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
32995         equiv_mem_modified, validate_equiv_mem_from_store,
32996         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
32997         contains_replace_regs, memref_referenced_p, memref_used_between_p,
32998         no_equiv, recorded_label_ref): Move from local-alloc.c.
32999         (update_equiv_regs): Ditto.  Make it static.
33000         (print_insn_chain, print_insn_chains): Move it from global.c.
33001         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
33002         (build_insn_chain): Ditto.  Make it static.
33003         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
33004         Rename to init_live_subregs.
33005         (gate_ira): Remove flag_ira.
33006
33007         * regclass.c: Rename reginfo.c.  Change file description.
33008         (FORBIDDEN_INC_DEC_CLASSES): Remove.
33009         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
33010         (init_reg_sets_1): Remove code for evaluation of
33011         reg_class_superclasses and losing_caller_save_reg_set.
33012         (init_regs): Remove init_reg_autoinc.
33013         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
33014         ok_for_base_p_nonstrict): Remove.
33015         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
33016         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
33017         corresponding entries.
33018         (dump_regclass, record_operand_costs, scan_one_insn,
33019         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
33020         record_address_regs, auto_inc_dec_reg_p): Remove.
33021         (gt-regclass.h): Rename to gt-reginfo.h.
33022
33023         * rtl.h (dump_global_regs, retry_global_alloc,
33024         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
33025
33026         * Makefile.in (RA_H): Remove.
33027         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
33028         Rename regclass.o to reginfo.o.
33029         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
33030         gt-reginfo.h.
33031         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
33032         (GTFILES): Rename regclass.c to reginfo.c.
33033
33034         * passes.c (init_optimization_passes): Remove pass_local_alloc and
33035         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
33036
33037         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
33038         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
33039         Remove flag_ira.
33040         (finish_spills): Ditto.  Remove code for !flag_ira.
33041
33042 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
33043
33044         PR middle-end/35854
33045         * doc/invoke.texi (rtl debug options): Complete rewrite.
33046         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
33047         to auto_inc_dec".
33048         * mode-switching.c (pass_mode_switching): Rename pass from
33049         "mode-sw" to "mode_sw".
33050         * except.c (pass_convert_to_eh_ranges): Rename pass from
33051         "eh-ranges" to "eh_ranges".
33052         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
33053         to "subreg1".
33054
33055
33056 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
33057             Alexander Monakov  <amonakov@ispras.ru>
33058
33059         PR middle-end/38857
33060         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
33061         register.
33062         (move_exprs_to_boundary): Change return type and pass through
33063         should_move from move_op.  Relax assert.  Update usage ...
33064         (schedule_expr_on_boundary): ... here.  Use should_move instead of
33065         cant_move.
33066         (move_op_orig_expr_found): Indicate that insn was disconnected from
33067         stream.
33068         (code_motion_process_successors): Do not call after_merge_succs
33069         callback if original expression was not found when traversing any of
33070         the branches.
33071         (code_motion_path_driver): Change return type.  Update prototype.
33072         (move_op): Update comment.  Add a new parameter (should_move).  Update
33073         prototype.  Set *should_move based on indication provided by
33074         move_op_orig_expr_found.
33075
33076 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
33077
33078         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
33079         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
33080         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
33081         * config/rs6000/rs6000.c (rs6000_override_options): Default
33082         avoid-indexed-addresses on for Power6, off for everything else.
33083         (avoiding_indexed_address_p): New function.
33084         (rs6000_legitimize_address): Use it.
33085         (rs6000_legitimate_address): Likewise.
33086         * config/rs6000/rs6000.md (movXX_updateX): Likewise
33087
33088 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
33089
33090         PR tree-optimization/38997
33091         * tree-loop-distribution.c (generate_memset_zero): Use
33092         POINTER_PLUS_EXPR for a pointer addition.
33093
33094 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
33095
33096         * config/s390/s390.md (bswap<mode>2): New pattern added.
33097
33098 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
33099
33100         * config/s390/s390.md (*tls_load_31): Added type attribute.
33101
33102 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
33103
33104         * config/s390/s390.md: Fix a few comments.
33105
33106 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
33107
33108         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
33109         (*tm<mode>_full): Fixed z10prop attribute.
33110         (*tst<mode>_extimm): Fixed z10prop attribute.
33111         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
33112         (*tstqiCCT_cconly): Fixed z10prop attribute.
33113         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
33114         (*movsi_larl): Fixed z10prop attribute.
33115         (*movsi_zarch): Fixed z10prop attribute.
33116         (*movsi_eas): Fixed z10prop attribute.
33117         (*movhi): Fixed z10prop attribute.
33118         (*movqi): Fixed z10prop attribute.
33119         (*movstrictqi): Fixed z10prop attribute.
33120         (*mov<mode>): Fixed z10prop attribute.
33121         (*movcc): Fixed z10prop attribute.
33122         (*sethighpartdi_64): Fixed z10prop attribute.
33123         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
33124         (*negdi2_sign_cc): Fixed z10prop attribute.
33125         (*negdi2_sign): Fixed z10prop attribute.
33126         (*absdi2_sign_cc): Fixed z10prop attribute.
33127         (*absdi2_sign): Fixed z10prop attribute.
33128         (*negabsdi2_sign_cc): Fixed z10prop attribute.
33129         (*negabsdi2_sign): Fixed z10prop attribute.
33130         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
33131         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
33132         (doloop_si64): Fixed z10prop attribute.
33133         (doloop_si31): Fixed z10prop attribute.
33134         (doloop_long): Fixed z10prop attribute.
33135         (indirect_jump): Fixed z10prop attribute.
33136         (nop): Fixed z10prop attribute.
33137         (main_base_64): Fixed z10prop attribute.
33138         (reload_base_64): Fixed z10prop attribute.
33139
33140 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
33141
33142         PR rtl-optimization/38740
33143         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
33144         if !optimize.
33145         * config/mips/mips.c (mips_reorg): Likewise.
33146
33147 2009-01-28  Richard Guenther  <rguenther@suse.de>
33148
33149         PR tree-optimization/38926
33150         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
33151         with the correct value id to a value.
33152         (do_regular_insertion): Use the value number of edoubleprime
33153         for the value number of the expr.
33154
33155         Revert
33156         2008-08-21  Richard Guenther  <rguenther@suse.de>
33157
33158         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
33159         a PHI ask VN if it is already available.
33160         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
33161         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
33162
33163 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
33164
33165         PR middle-end/38934
33166         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
33167         set to varying whenever max has TREE_OVERFLOW set, similarly
33168         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
33169
33170 2009-01-28  Richard Guenther  <rguenther@suse.de>
33171
33172         PR middle-end/38908
33173         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
33174         uninitialized aggregate uses in call arguments.
33175
33176 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
33177
33178         PR tree-optimization/38984
33179         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
33180         the nothing_id variable if -fno-delete-null-pointer-checks.
33181
33182 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
33183
33184         PR target/38988
33185         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
33186         (set_got_offset_rex64): Ditto.
33187
33188 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
33189
33190         PR target/38941
33191         * doc/extend.texi: Improve local variable with asm reg.
33192
33193 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
33194
33195         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
33196         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
33197         was not supplied then set warn_packed_bitfield_compat to the
33198         default value of 1.
33199         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
33200         against 1.
33201
33202 2009-01-27  Richard Guenther  <rguenther@suse.de>
33203
33204         PR tree-optimization/38503
33205         * cfgexpand.c (expand_gimple_basic_block): Ignore
33206         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
33207         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
33208         variables that cannot have TBAA applied.
33209         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
33210         statements.
33211
33212 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
33213
33214         PR middle-end/38969
33215         * calls.c (initialize_argument_information): Do not wrap complex
33216         arguments in SAVE_EXPR.
33217
33218 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
33219
33220         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
33221         (INSTALL_LIBGCC): Revert typo commit.
33222
33223 2009-01-26  Richard Guenther  <rguenther@suse.de>
33224
33225         PR tree-optimization/38745
33226         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
33227         from special handling.
33228
33229 2009-01-26  Richard Guenther  <rguenther@suse.de>
33230
33231         PR tree-optimization/38745
33232         * tree-ssa.c (execute_update_addresses_taken): Do not include
33233         variables that cannot possibly be a register in not_reg_needs.
33234         Do not clear TREE_ADDRESSABLE on vars that may not become
33235         registers.
33236         * tree-ssa.c (update_alias_info_1): Include those in the set
33237         of addressable vars.
33238
33239 2009-01-26  Richard Guenther  <rguenther@suse.de>
33240
33241         PR middle-end/38851
33242         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
33243         * tree-ssa-dse.c: Include langhooks.h
33244         (execute_simple_dse): Remove stores with zero size.
33245
33246 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
33247
33248         PR c/38957
33249         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
33250         as PLUS_EXPR.
33251
33252 2009-01-24  Julian Brown  <julian@codesourcery.com>
33253
33254         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
33255         config/arm/linux-atomic.c.
33256         * config/arm/linux-atomic.c: New.
33257
33258 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
33259
33260         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
33261         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
33262         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
33263
33264 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
33265
33266         PR c/38938
33267         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
33268         properly.
33269
33270 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
33271
33272         PR tree-optimization/38953
33273         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
33274         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
33275         (gloog): Split the exit of the scop when the scop exit is a loop exit.
33276         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
33277         changed the CFG.
33278
33279 2009-01-24  Paul Brook  <paul@codesourcery.com>
33280
33281         * config/arm/neon.md (neon_type): Move to arm.md.
33282         (neon_mov<VSTRUCT>): Add neon_type attribute.
33283         * config/arm/arm.md (neon_type): Move to here.
33284         (conds): Add "unconditioal" and use as default for NEON insns.
33285
33286 2009-01-24  Ben Elliston  <bje@au.ibm.com>
33287
33288         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
33289         void *' warning from -Wc++-compat.
33290         * Makefile.in (dominance.o-warn): Remove.
33291
33292 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
33293
33294         PR tree-optimization/38932
33295         * fold-const.c (fold_unary_ignore_overflow): New.
33296         * tree.h (fold_unary_ignore_overflow): Declare.
33297         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
33298         * tree-ssa-sccvn.c (visit_reference_op_load,
33299         simplify_unary_expression): Likewise.
33300
33301 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
33302
33303         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
33304         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
33305         regardless of their type.
33306         * c-common.c (handle_packed_attribute): Don't ignore packed on
33307         bitfields.
33308         * c.opt (Wpacked-bitfield-compat): New warning option.
33309         * stor-layout.c (place_field): Warn if offset of a field changed.
33310         * doc/extend.texi (packed): Mention the ABI change.
33311         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
33312         (Warning Options): Add it to the list.
33313
33314 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
33315
33316         * c-opts.c (c_common_post_options): Fix a typo in comments.
33317
33318 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
33319
33320         PR middle-end/38615
33321         * gimplify.c (gimplify_init_constructor): Fix promotion of const
33322         variables to static.
33323         * doc/invoke.texi (-fmerge-all-constants): Update description.
33324
33325 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
33326
33327         PR target/38931
33328         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
33329         (*movdi_1_rex64): Use type "mmx" for alternative 5.
33330
33331 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
33332
33333         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
33334         a word boundary.
33335         (LOCAL_ALIGNMENT): Similarly.
33336
33337 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
33338             Joseph Myers  <joseph@codesourcery.com>
33339
33340         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
33341         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
33342         * config/arm/arm-tune.md: Regenerate.
33343         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
33344         -march=iwmmxt2.
33345
33346 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
33347
33348         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
33349         version number to five.
33350
33351 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
33352
33353         PR c++/38930
33354         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
33355         * c-common.c (set_underlying_type): Likewise.
33356         (is_typedef_decl ): Likewise
33357         * tree.h: Likewise
33358         (set_underlying_type): Likewise.
33359         (is_typedef_type): Likewise.
33360
33361 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
33362
33363         PR middle-end/38587
33364         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
33365         crossing setjmps.
33366
33367 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
33368
33369         PR bootstrap/37660
33370         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
33371         (LIBGCC_SPEC):  Don't define.
33372         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
33373
33374 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
33375
33376         PR rtl-optimization/38879
33377         * alias.c (base_alias_check): Unaligned access via AND address can
33378         alias all surrounding object types except those with sizes equal
33379         or wider than the size of unaligned access.
33380
33381 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
33382
33383         PR c++/26693
33384         * c-decl.c (clone_underlying_type): Move this ...
33385         * c-common.c (set_underlying_type): ... here.
33386         Also, make sure the function properly sets TYPE_STUB_DECL() on
33387         the newly created typedef variant type.
33388         (is_typedef_decl ): New entry point.
33389         * tree.h: Added a new member member_types_needing_access_check to
33390         struct tree_decl_non_common.
33391         (set_underlying_type): New entry point.
33392         (is_typedef_type): Likewise.
33393
33394 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
33395
33396         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
33397         Check whether two instructions have memory references that
33398         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
33399         are helper functions for traversing.
33400         * alias.h (insn_alias_sets_confilict_p): New prototypes.
33401         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
33402         not to draw dependency edge for instructions with non-conflicting
33403         alias sets.
33404
33405 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
33406
33407         PR other/38758
33408         * longlong.h: Update copyright years.  Use soft-fp license notice.
33409         Sync __clz_tab declaration with glibc.
33410
33411 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
33412
33413         PR target/30687
33414         * doc/extend.texi (syscall_linkage): New.
33415         (version_id): Modify.
33416
33417 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33418             Richard Guenther  <rguenther@suse.de>
33419
33420         PR tree-optimization/38747
33421         PR tree-optimization/38748
33422         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
33423         conversion if the base address is an indirect reference and the
33424         aliasing sets could cause issues.
33425
33426 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33427
33428         * common.opt (fgraphite, fgraphite-identity): Add comment for
33429         explaining why these options are not documented.
33430
33431 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33432
33433         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
33434         gimple_call_lhs is NULL.
33435
33436 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
33437
33438         PR target/38868
33439         * emit-rtl.c (adjust_address_1): Make sure memref is never
33440         overwritten.
33441
33442 2009-01-20  Ben Elliston  <bje@au.ibm.com>
33443
33444         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33445         const qualifier from arg parameter. Remove unnecessary cast to char *.
33446         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33447         const qualifier from arg 2.
33448
33449 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
33450
33451         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
33452
33453 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
33454
33455         PR c/38869
33456         * rtl.h (reinit_regs): New prototype.
33457         * regclass.c: Include ira.h.
33458         (reinit_regs): New.
33459         * Makefile.in (regclass.o): Add ira.h.
33460         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
33461
33462 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
33463
33464         PR target/38736
33465         * c-common.c (handle_aligned_attribute): Use
33466         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
33467         default alignment value.
33468
33469         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
33470
33471         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
33472         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
33473
33474         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
33475         __BIGGEST_ALIGNMENT__.
33476
33477         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
33478
33479 2009-01-18  Richard Guenther  <rguenther@suse.de>
33480
33481         PR tree-optimization/38819
33482         * tree-flow.h (operation_could_trap_helper_p): Declare.
33483         * tree-eh.c (operation_could_trap_helper_p): Export.
33484         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
33485         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
33486         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
33487         are about to insert a possibly trapping instruction and fail
33488         in this case.
33489
33490 2009-01-18  Andreas Schwab  <schwab@suse.de>
33491
33492         * doc/install.texi (Configuration): Remove obsolete paragraph
33493         about use of --with-gnu-ld with --with-gnu-as.
33494
33495 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
33496
33497         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
33498         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
33499         Follow spelling conventions.
33500
33501 2009-01-18  Ben Elliston  <bje@au.ibm.com>
33502
33503         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
33504         C++ warning about implicit conversion from void * to struct
33505         bitmap_head_def *.
33506         (bitmap_obstack_free): Likewise for bitmap_element *.
33507         * Makefile.in (bitmap.o-warn): Remove.
33508
33509 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
33510
33511         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
33512
33513 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
33514             Tobias Grosser  <tobi.grosser@amd.com>
33515
33516         * graphite.c (graphite_trans_scop_block): Do not block single
33517         nested loops.
33518
33519 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
33520
33521         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
33522         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
33523         test with assertion.
33524
33525 2009-01-16  Richard Guenther  <rguenther@suse.de>
33526
33527         PR tree-optimization/38835
33528         PR middle-end/36227
33529         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
33530         and INT + PTR -> (INT)(PTR p+ INT) folding.
33531         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
33532
33533 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
33534
33535         PR target/38554
33536         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
33537         the subreg from a lowpart subreg if it is also casting the value.
33538
33539 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33540             Tobias Grosser  <tobi.grosser@amd.com>
33541
33542         * graphite.c (compare_prefix_loops): New.
33543         (build_scop_canonical_schedules): Rewritten.
33544         (graphite_transform_loops): Move build_scop_canonical_schedules
33545         after build_scop_iteration_domain.
33546
33547 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33548             Tobias Grosser  <tobi.grosser@amd.com>
33549
33550         * graphite.c (add_conditions_to_domain): Add the loops to
33551         the dimension of the iteration domain.  Do copy the domain
33552         only when it exists.
33553         (build_scop_conditions_1): Do not call add_conditions_to_domain.
33554         (add_conditions_to_constraints): New.
33555         (can_generate_code_stmt, can_generate_code): Removed.
33556         (gloog): Do not call can_generate_code.
33557         (graphite_transform_loops): Call add_conditions_to_constraints
33558         after building the iteration domain.
33559
33560 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
33561
33562         PR tree-optimization/38789
33563         * tree-ssa-threadedge.c
33564         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
33565         __builtin_constant_p.
33566
33567 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
33568
33569         * dce.c (delete_unmarked_insns): Reversed the order that insns are
33570         examined before deleting them.
33571
33572 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
33573
33574         * function.c (aggregate_value_p): Correctly extract the function
33575         type from CALL_EXPR_FN lookup.
33576
33577 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
33578
33579         * config/picochip/picochip.c (picochip_override_options): Revert
33580         CFI asm flag disable commited previously.
33581
33582 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
33583             Tobias Grosser  <tobi.grosser@amd.com>
33584             Jan Sjodin  <jan.sjodin@amd.com>
33585
33586         * graphite.c (scan_tree_for_params): On substractions negate
33587         all the coefficients of the term.
33588         (clast_to_gcc_expression_red): New.  Handle reduction expressions
33589         of more than two operands.
33590         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
33591         (get_vdef_before_scop): Handle also the case of default definitions.
33592
33593 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
33594
33595         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
33596         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
33597         Also use them when walking CALL_INSN_FUNCTION_USAGE.
33598
33599 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
33600             Joey Ye  <joey.ye@intel.com>
33601
33602         PR middle-end/37843
33603         * cfgexpand.c (expand_stack_alignment): Don't update stack
33604         boundary nor check incoming stack boundary here.
33605         (gimple_expand_cfg): Update stack boundary and check incoming
33606         stack boundary here.
33607
33608 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
33609
33610         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
33611
33612 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
33613
33614         PR rtl-optimization/38245
33615         * calls.c (expand_call): Add stack arguments to
33616         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33617         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
33618         in regs and partially in memory or BLKmode arguments.
33619         (emit_library_call_value_1): Add stack arguments to
33620         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33621         ACCUMULATE_OUTGOING_ARGS).
33622         * dce.c: Include tm_p.h.
33623         (find_call_stack_args): New function.
33624         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
33625         argument.
33626         (mark_insn): Call find_call_stack_args for CALL_Ps.
33627         (prescan_insns_for_dce): Walk insns backwards in bb rather than
33628         forwards.  Allocate and free arg_stores bitmap if needed, pass it
33629         down to deletable_insn_p, don't mark stores set in arg_stores
33630         bitmap, clear the bitmap at the beginning of each bb.
33631         * Makefile.in (dce.o): Depend on $(TM_P_H).
33632
33633 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
33634
33635         PR target/22599
33636         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
33637         to make sure the insn is a conditional test (bug 22599).  Reformat a
33638         few long lines.
33639
33640 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
33641
33642         PR middle-end/38431
33643         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
33644         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
33645         (gloog): Do not call cleanup_tree_cfg.
33646         (graphite_transform_loops): Call cleanup_tree_cfg after all
33647         scops have been code generated.
33648
33649 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
33650         * doc/gty.texi (Invoking the garbage collector): Added new node
33651         and section documenting ggc_collect.
33652
33653 2009-01-14  Richard Guenther  <rguenther@suse.de>
33654
33655         PR tree-optimization/38826
33656         PR middle-end/38477
33657         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
33658         initialization notes only if we actually emitted a warning.
33659         (intra_create_variable_infos): Add constraints for a result decl
33660         that is passed by hidden reference.
33661         (build_pred_graph): Mark all related variables non-direct on
33662         address-taking.
33663
33664 2009-01-14  Nick Clifton  <nickc@redhat.com>
33665
33666         * ira-conflicts.c: Include addresses.h for the definition of
33667         base_reg_class.
33668         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
33669         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
33670
33671 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
33672
33673         PR target/38811
33674         * Makefile.in (ira-lives.o): Add except.h.
33675
33676         * ira-lives.c: Include except.h.
33677         (process_bb_node_lives): Process can_throw_internal.
33678
33679 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
33680
33681         PR rtl-optimization/38774
33682         * combine.c (simplify_set): When undoing cc_use change, don't do
33683         PUT_CODE on the newly created comparison, but instead put back the
33684         old comparison.
33685
33686 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
33687
33688         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
33689         values.  Remove duplicate arm8 entry.
33690
33691 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33692
33693         PR tree-optimization/38786
33694         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
33695         the SSA_NAME case of expand_scalar_variables_expr.
33696         Set the type of an expression to the type of its assign statement.
33697         (expand_scalar_variables_expr): Also gather the scalar computation
33698         used to index the memory access.  Do not pass loop_p.
33699         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
33700         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
33701         the gimple_stmt_iterator where it inserts new code.
33702         Do not pass loop_p.
33703         (copy_bb_and_scalar_dependences): Do not pass loop_p.
33704         (translate_clast): Update call to copy_bb_and_scalar_dependences.
33705
33706 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33707
33708         * graphite.h (debug_value): Removed.
33709         * graphite.c (debug_value): Removed.
33710
33711 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33712
33713         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
33714         ldrd/strd with two 32-bit instructions.
33715
33716 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33717
33718         * config/arm/arm.c (struct processors): Pass for speed down into
33719         cost helper functions.
33720         (const_ok_for_op): Handle COMPARE and inequality nodes.
33721         (arm_rtx_costs_1): Rewrite.
33722         (arm_size_rtx_costs): Update prototype.
33723         (arm_rtx_costs): Pass speed down to helper functions.
33724         (arm_slowmul_rtx_costs): Rework cost calculations.
33725         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
33726         (arm_9e_rtx_costs): Likewise.
33727
33728 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
33729
33730         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
33731         relocations of local symbols wider than UNITS_PER_WORD are not valid.
33732         (alpha_legitimize_address): Do not split local symbols wider than
33733         UNITS_PER_WORD into HIGH/LO_SUM parts.
33734
33735 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
33736
33737         PR bootstrap/38580
33738         * gcc.c (process_command): Replace call to execvp with calls
33739         to pex_one and exit.
33740
33741 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
33742
33743         PR target/29141
33744         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
33745         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
33746         variant for devices with 3-byte PC.
33747         (__tablejump_elpm__): New.
33748
33749 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33750
33751         PR c/32041
33752         * c-parser.c (c_parser_postfix_expression): Allow `->' in
33753         offsetof member-designator, handle it as `[0].'.
33754
33755 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33756
33757         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
33758         function when not using named sections on targets with named sections
33759         if branch distance is less than 262132.
33760
33761 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
33762
33763         * combine.c (combine_instructions):  Recompute
33764         optimize_this_for_speed_p  for each BB in the main combine loop.
33765
33766 2009-01-12  Tomas Bily  <tbily@suse.cz>
33767
33768         PR middlend/38385
33769         * tree-loop-distribution.c (prop_phis): New function.
33770         (generate_builtin): Call prop_phis.
33771
33772 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33773
33774         PR tree-optimization/38807
33775         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
33776         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
33777
33778 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
33779
33780         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
33781         subreg of op0 to the original op0.
33782
33783 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
33784
33785         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
33786
33787 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
33788
33789         PR debug/7055
33790         * mips-tfile.c (parse_def): Fix parsing of def strings
33791         starting with digits.
33792
33793 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
33794
33795         PR target/38695
33796         * config/arm/arm.c (arm_is_long_call_p): Don't call
33797         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
33798
33799 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
33800
33801         * regrename.c (regrename_optimize): Fix dumping.
33802         (find_oldest_value_reg): Preserve REG_POINTER.
33803         (copy_hardreg_forward_1): Likewise.
33804
33805 2009-01-09  Diego Novillo  <dnovillo@google.com>
33806
33807         * gimple.h (struct gimple_statement_base) <uid>: Document
33808         the restrictions on its use.
33809         (gimple_uid): Tidy.
33810         (gimple_set_uid): Tidy.
33811
33812 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33813
33814         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
33815         zero guard even if align_bytes != 0 and count is smaller than
33816         size_needed.
33817
33818 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
33819
33820         PR rtl-optimization/38495
33821         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
33822         (add_range_and_copies_from_move_list): Print all added ranges.
33823         Add ranges to memory optimized destination.
33824
33825 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33826
33827         PR target/38686
33828         PR target/38708
33829         * config/i386/i386.c (override_options): Reject
33830         -mstringop-strategy=rep_8byte with -m32.
33831         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
33832         to 1.  Do count comparison against epilogue_size_needed at compile
33833         time even when count_exp was constant forced into register.  For
33834         size_needed don't jump to epilogue, instead just avoid aligning
33835         and invoke the body algorithm.  If need_zero_guard, add zero guard
33836         even if count is non-zero, but smaller than size_needed + number of
33837         bytes that could be stored for alignment.
33838         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
33839         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
33840         but smaller than size_needed + number of bytes that could be stored
33841         for alignment.  Compare size_needed with epilogue_size_needed instead
33842         of desired_align - align, don't adjust size_needed, pass
33843         epilogue_size_needed to the epilogue expanders.
33844
33845         PR c/35742
33846         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
33847
33848 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33849
33850         * pa.c (last_address): Change to unsigned.
33851         (update_total_code_bytes): Change argument to unsigned.  Don't
33852         check if insn addresses are set.
33853         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
33854         addresses are not set.
33855         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
33856
33857 2009-01-09  Nick Clifton  <nickc@redhat.com>
33858
33859         * config/sh/symbian.c: Replace uses of DECL_INLINE with
33860         DECL_DECLARED_INLINE_P.
33861
33862 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33863
33864         PR middle-end/38347
33865         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
33866         GET_MODE (op0) in operand_subword_force calls.
33867
33868         PR middle-end/38771
33869         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
33870         fold_convert arg0 operands to TREE_TYPE (op0) first.
33871
33872 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
33873
33874         * params.def (ira-max-conflict-table-size): Decrease default value
33875         to 1000.
33876
33877 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
33878
33879         PR tree-optimization/37031
33880         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
33881         on parameter_set.
33882         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
33883         allocate it using gc instead of heap, use VEC_quick_push instead of
33884         VEC_safe_push.
33885         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
33886         instead of heap, use VEC_quick_push instead of VEC_safe_push.
33887         * tree-data-ref.h (struct access_matrix): Change matrix to gc
33888         allocated vector from heap allocated.
33889         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
33890         * tree-loop-linear.c (linear_transform_loops): Allocate nest
33891         vector only after perfect_loop_nest_depth call.
33892
33893 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
33894             Jan Sjodin  <jan.sjodin@amd.com>
33895
33896         PR tree-optimization/38559
33897         * graphite.c (debug_value, copy_constraint,
33898         swap_constraint_variables, scale_constraint_variable, ): New.
33899         (get_lower_bound, get_upper_bound): Removed.
33900         (graphite_trans_bb_strip_mine): Clean up this code that works
33901         only for constant number of iterations.  Fully copy upper and
33902         lower bound constraints, not only the constant part of them.
33903         * graphite.h (debug_value): Declared.
33904
33905 2009-01-08  Ira Rosen  <irar@il.ibm.com>
33906
33907         PR tree-optimization/37194
33908         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
33909         Don't add the cost of cost model guard in prologue to scalar
33910         outside cost in case of known number of iterations.
33911
33912 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
33913             Alan Modra  <amodra@bigpond.net.au>
33914
33915         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
33916         non-word-aligned REG+CONST addressing.
33917
33918 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33919
33920         PR target/38706
33921         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
33922         free_after_compilation when outputting a thunk.
33923         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
33924         Do not call free_after_compilation here.
33925
33926 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33927
33928         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
33929         (ix86_valid_target_attribute_inner_p): Ditto.
33930
33931 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
33932
33933         PR tree-optimization/38492
33934         PR tree-optimization/38498
33935         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
33936         * tree-chrec.h (scev_is_linear_expression): Declared.
33937         * graphite.c (graphite_cannot_represent_loop_niter): New.
33938         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
33939         (graphite_loop_normal_form): Use gcc_assert.
33940         (scan_tree_for_params): Use CASE_CONVERT.
33941         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
33942         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
33943         Use gcc_assert.  Discard scops that contain unhandled cases.
33944         (build_scop_conditions): Return a boolean status for unhandled cases.
33945         (strip_mine_profitable_p): Print the loop number, not its depth.
33946         (is_interchange_valid): Pass the depth of the loop nest, don't
33947         recompute it wrongly.
33948         (graphite_trans_bb_block): Same.
33949         (graphite_trans_bb_block): Print tentative of loop blocking.
33950         (graphite_trans_scop_block): Do not print that the loop has been
33951         blocked.
33952         (graphite_transform_loops): Do not handle scops that contain condition
33953         scalar phi nodes.
33954
33955 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
33956
33957         AVX Programming Reference (December, 2008)
33958         * config/i386/avxintrin.h (_mm256_stream_si256): New.
33959         (_mm256_stream_pd): Likewise.
33960         (_mm256_stream_ps): Likewise.
33961
33962         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
33963         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
33964         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
33965         (bdesc_special_args): Add __builtin_ia32_movntdq256,
33966         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
33967         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
33968         (ix86_expand_special_args_builtin): Likewise.
33969
33970         * config/i386/sse.md (AVXMODEDI): New.
33971         (avx_movnt<mode>): Likewise.
33972         (avx_movnt<mode>): Likewise.
33973         (<sse>_movnt<mode>): Remove AVX support.
33974         (sse2_movntv2di): Likewise.
33975
33976 2009-01-07  Richard Guenther  <rguenther@suse.de>
33977
33978         PR middle-end/38751
33979         * fold-const.c (extract_muldiv): Remove obsolete comment.
33980         (fold_plusminus_mult_expr): Undo MINUS_EXPR
33981         to PLUS_EXPR canonicalization for the canonicalization.
33982
33983 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
33984
33985         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
33986         hosted cross-compilers generating less efficient code.
33987
33988 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33989
33990         * function.h (rtl_data): Add a dbr_scheduled_p field.
33991         * reorg.c (dbr_schedule): Set it.
33992         (gate_handle_delay_slots): Check it.
33993         * config/mips/mips.c (mips_base_delayed_branch): Delete.
33994         (mips_reorg): Check flag_delayed_branch instead of
33995         mips_base_delayed_branch.
33996         (mips_override_options): Don't set mips_base_delayed_branch
33997         or flag_delayed_branch.
33998
33999 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
34000
34001         PR rtl-optimization/38426.
34002         * ira.c (ira): Set current_function_is_leaf earlier.
34003
34004 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
34005
34006         PR rtl-optimization/38722
34007         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
34008         too early, only set a flag and modify after last possible
34009         undo_all point.
34010
34011 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
34012
34013         PR c/34252
34014         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
34015         * real.c (decimal_single_format): Correct values of emin and emax.
34016         (decimal_double_format): Ditto.
34017         (decimal_quad_format): Ditto.
34018         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
34019         computation of DECnn_MIN and DECnn_MAX for corrected values of
34020         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
34021         __DECnn_MIN__, and adjust its computation for the corrected value
34022         of emin.
34023
34024 2009-01-06  Jan Hubicka  <jh@suse.cz>
34025
34026         PR target/38744
34027         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
34028
34029 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
34030
34031         * doc/contrib.texi (Contributors): Slightly adjust the end note.
34032         Add Robert Clark to the list of testers.
34033
34034 2009-01-06  Jan Hubicka  <jh@suse.cz>
34035             Kai Tietz  <kai.tietz@onevision.com>
34036
34037         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
34038         * config/i386/i386.c (ix86_expand_call): Add clobbers.
34039
34040 2009-01-06  Jan Hubicka  <jh@suse.cz>
34041             Kai Tietz  <kai.tietz@onevision.com>
34042
34043         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
34044         for w64 ABI.
34045         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
34046         (ix86_nsaved_regs): Count only general purpose regs.
34047         (ix86_nsaved_sseregs): New.
34048         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
34049         to 16 for w64; compute padding and size of sse reg save area.
34050         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
34051         general purpose regs.
34052         (ix86_emit_save_sse_regs_using_mov): New.
34053         (ix86_expand_prologue): Save SSE regs if needed.
34054         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
34055         (ix86_emit_restore_sse_regs_using_mov): New.
34056         (ix86_expand_epilogue): Save SSE regs if needed.
34057
34058 2009-01-06  Jan Hubicka  <jh@suse.cz>
34059             Kai Tietz  <kai.tietz@onevision.com>
34060
34061         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
34062         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
34063         functions when accumulate outgoing args is off.
34064
34065 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
34066
34067         PR bootstrap/38742
34068         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
34069         before using pseudos_have_intersected_live_ranges_p.
34070
34071         * ira-int.h (ira_assert): Always define.
34072
34073 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
34074
34075         AVX Programming Reference (December, 2008)
34076         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
34077         (_mm256_permute2_pd): Likewise.
34078         (_mm_permute2_ps): Likewise.
34079         (_mm256_permute2_ps): Likewise.
34080         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
34081         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
34082
34083         * config/i386/i386.c (ix86_builtins): Remove
34084         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
34085         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
34086         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
34087         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
34088         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
34089         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
34090         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
34091         __builtin_ia32_vpermil2ps256.
34092         (ix86_init_mmx_sse_builtins): Updated.
34093         (ix86_expand_args_builtin): Likewise.
34094
34095 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
34096
34097         * pa.c (output_call): Relocate non-jump insns in the delay slot of
34098         long absolute calls when generating PA 2.0 code.
34099
34100 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
34101
34102         PR rtl-optimization/38583
34103         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
34104
34105         * params.def (ira-max-conflict-table-size): New.
34106
34107         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
34108
34109         * ira.h (ira_conflicts_p): New external definition.
34110
34111         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
34112         table.  Report this.  Return result of building.
34113         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
34114         building conflict table.
34115
34116         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
34117         (ira_color): Use ira_conflicts_p.
34118
34119         * global.c: Include ira.h.
34120         (pseudo_for_reload_consideration_p, build_insn_chain): Use
34121         ira_conflicts_p.
34122
34123         * Makefile.in (global.o): Add ira.h.
34124
34125         * ira-build.c (mark_all_loops_for_removal,
34126         propagate_some_info_from_allocno): New.
34127         (remove_unnecessary_allocnos): Call
34128         propagate_some_info_from_allocno.
34129         (remove_low_level_allocnos): New.
34130         (remove_unnecessary_regions): Add parameter.  Call
34131         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
34132         parameter to remove_unnecessary_regions.
34133         (ira_build): Remove all regions but root if the conflict table was
34134         not built.  Update conflict hard regs for allocnos crossing calls.
34135
34136         * ira.c (ira_conflicts_p): New global.
34137         (ira): Define and use ira_conflicts_p.
34138
34139         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
34140         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
34141         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
34142
34143 2009-01-06  Ben Elliston  <bje@au.ibm.com>
34144
34145         * gengtype-lex.l (YY_NO_INPUT): Define.
34146
34147 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
34148
34149         PR c/34911
34150         * c-common.c (handle_vector_size_attribute): Also reject
34151         BOOLEAN_TYPE types.
34152
34153 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
34154
34155         PR tree-optimization/38492
34156         * graphite.c (rename_map_elt, debug_rename_elt,
34157         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
34158         rename_map_elt_info, eq_rename_map_elts,
34159         get_new_name_from_old_name, bb_in_sese_p): Moved around.
34160         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
34161         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
34162         (sese_build_livein_liveouts): New.
34163         (new_sese, free_sese): New.
34164         (new_scop): Call new_sese.
34165         (free_scop): Call free_sese.
34166         (rename_variables_from_edge, rename_phis_end_scop): Removed.
34167         (register_old_new_names): Renamed register_old_and_new_names.
34168         (register_scop_liveout_renames, add_loop_exit_phis,
34169         insert_loop_close_phis, struct igp,
34170         default_liveout_before_guard, add_guard_exit_phis,
34171         insert_guard_phis, copy_renames): New.
34172         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
34173         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
34174         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
34175         (scop_adjust_phis_for_liveouts): New.
34176         (gloog): Call scop_adjust_phis_for_liveouts.
34177
34178         * graphite.h (struct sese): Documented.  Added fields liveout,
34179         num_ver and livein.
34180         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
34181         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
34182         (struct scop): Added field liveout_renames.
34183         (SCOP_LIVEOUT_RENAMES): New.
34184
34185 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
34186
34187         PR tree-optimization/38510
34188         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
34189         (translate_clast): Call recompute_all_dominators before
34190         graphite_verify.
34191         (gloog): Call recompute_all_dominators before graphite_verify.
34192
34193 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
34194             Jan Sjodin  <jan.sjodin@amd.com>
34195
34196         PR tree-optimization/38500
34197         * graphite.c (create_sese_edges): Call fix_loop_structure after
34198         splitting blocks.
34199
34200 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
34201
34202         * config.gcc: Add m32r*-*-rtems*.
34203         * config/m32r/rtems.h: New file.
34204
34205 2009-01-05  Ben Elliston  <bje@au.ibm.com>
34206
34207         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
34208         (.po.pox): Likewise.
34209         (po/gcc.pot): Likewise.
34210
34211 2009-01-04  David S. Miller  <davem@davemloft.net>
34212
34213         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
34214         (STARTING_FRAME_OFFSET): Always set to zero.
34215
34216 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
34217
34218         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
34219         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
34220         fixed-point types, and vectors of the same.
34221
34222 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
34223
34224         * config/mips/sync.md (*mb_barrier): Rename to...
34225         (*memory_barrier): ...this.
34226
34227 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
34228
34229         * doc/extend.texi (Function Attributes): Move @cindex after @item
34230         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
34231         and put in alphabetical order. Fix 'target' name and put in order.
34232         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
34233         typos.
34234
34235 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
34236
34237         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
34238         (memory_barrier): Expand as unspec instead of unspec_volatile.
34239         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34240         (*memory_barrier): Define as unspec instead of unspec_volatile.
34241         Use (match_dup 0) as input operand.
34242
34243         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
34244         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
34245         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
34246         scratch register.  Remove operand 1.
34247         (*stbar): Define as unspec instead of unspec_volatile.
34248         Use (match_dup 0) as input operand, remove (const_int 8).
34249         (*membar): Define as unspec instead of unspec_volatile.
34250         Use (match_dup 0) as input operand, remove input operand 2.
34251
34252         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
34253         (memory_barrier): Expand as unspec instead of unspec_volatile.
34254         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34255         (*memory_barrier): Define as unspec instead of unspec_volatile.
34256         Use (match_dup 0) as input operand.
34257
34258         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
34259         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34260         Set volatile flag on operand 0.
34261         (*memory_barrier): New insn pattern.
34262
34263         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
34264         insn operands.
34265         (*memory_barrier): Use (match_dup 0) as input operand.
34266
34267         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
34268         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34269         Set volatile flag on operand 0.
34270         (*mb_internal): New insn pattern.
34271
34272         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
34273
34274 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
34275
34276         PR middle-end/38586
34277         * function.c (struct temp_slot): Move to the section of the file
34278         that deals with temp slots.  Remove field 'address'.
34279         (temp_slot_address_table): New hash table of address -> temp slot.
34280         (struct temp_slot_address_entry): New struct, items for the table.
34281         (temp_slot_address_compute_hash, temp_slot_address_hash,
34282         temp_slot_address_eq, insert_temp_slot_address): Support functions
34283         for the new table.
34284         (find_temp_slot_from_address): Rewrite to use the new hash table.
34285         (remove_unused_temp_slot_addresses): Remove addresses of temp
34286         slots that have been made available.
34287         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
34288         worker function for remove_unused_temp_slot_addresses.
34289         (assign_stack_temp_for_type): Don't clear the temp slot address list.
34290         Add the temp slot address to the address -> temp slot map.
34291         (update_temp_slot_address): Update via insert_temp_slot_address.
34292         (free_temp_slots): Call remove_unused_temp_slot_addresses.
34293         (pop_temp_slots): Likewise.
34294         (init_temp_slots): Allocate the address -> temp slot map, or empty
34295         the map if it is already allocated.
34296         (prepare_function_start): Initialize temp slot processing.
34297
34298 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
34299
34300         PR middle-end/38584
34301         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
34302         Calculate the size of all stack vars assuming no packing of stack
34303         vars will happen, replacing a quadratic algorithm with a linear one.
34304
34305 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
34306
34307         PR target/38707
34308         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
34309         can't be used.
34310
34311 2009-01-03  Diego Novillo  <dnovillo@google.com>
34312
34313         * doc/contrib.texi: Update contributions.
34314
34315 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
34316
34317         PR c++/38705
34318         * builtins.c (fold_builtin_memory_op): Give up if either operand
34319         is volatile.  Set srctype or desttype to non-qualified version
34320         of the other type.
34321
34322         PR c/38700
34323         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
34324         and FUNCTION_DECLs.
34325
34326 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
34327
34328         PR rtl-optimization/35805
34329         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
34330         problem if fast dce is able to remove any instructions.
34331         * dce.c (dce_process_block): Fix dump message.
34332
34333 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
34334
34335         PR 33649
34336         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
34337
34338 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
34339
34340         PR middle-end/38690
34341         * tree-flow.h (op_code_prio, op_prio): New prototypes.
34342         * tree-pretty-print.c (op_code_prio): New function.
34343         (op_prio): No longer static.  Use op_code_prio.
34344         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
34345         Use op_prio and op_code_prio to determine if () should be
34346         printed around operand(s) or not.
34347
34348         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
34349         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
34350         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
34351         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
34352         pp_character instead of pp_string for single letter printing.
34353
34354 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
34355
34356         * doc/extend.texi: Fix '#pragma GCC option' typo.
34357
34358 2009-01-02  Richard Guenther  <rguenther@suse.de>
34359
34360         * doc/install.texi (--enable-checking): Mention different
34361         default for stage1.
34362         (--enable-stage1-checking): Document.
34363
34364 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
34365
34366         PR middle-end/30142
34367         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
34368         case to be an error.
34369
34370 2009-01-02  Ben Elliston  <bje@au.ibm.com>
34371
34372         * config/fp-bit.h (pack_d): Constify argument.
34373         * config/fp-bit.c (makenan): Constify return type. Remove casts.
34374         (isnan): Constify argument.
34375         (isinf): Likewise.
34376         (iszero): Likewise.
34377         (pack_d): Likewise.
34378         (_fpadd_parts): Constify return type.
34379         (_fpmul_parts): Likewise.
34380         (_fpdiv_parts): Likewise.
34381
34382 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
34383
34384         PR c/36489
34385         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
34386         warn about overwriting initializer with side-effects or
34387         -Woverride-init if !IMPLICIT.
34388         (output_init_element): Likewise.  Pass IMPLICIT down to
34389         add_pending_init.
34390         (process_init_element): Add IMPLICIT argument.  Pass it down
34391         to output_init_element.
34392         (push_init_element, pop_init_level, set_designator): Adjust
34393         process_init_element callers.
34394         (set_nonincremental_init, set_nonincremental_init_from_string):
34395         Adjust add_pending_init callers.
34396         (output_pending_init_elements): Adjust output_init_element callers.
34397         * c-tree.h (process_init_element): Adjust prototype.
34398         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
34399         process_init_element callers.
34400
34401 \f
34402 Copyright (C) 2009 Free Software Foundation, Inc.
34403
34404 Copying and distribution of this file, with or without modification,
34405 are permitted in any medium without royalty provided the copyright
34406 notice and this notice are preserved.