OSDN Git Service

PR target/42372
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-17  Richard Earnshaw  <rearnsha@arm.com>
2
3         PR target/42372
4         * arm.md (pic_add_dot_plus_eight): Change output constraint from
5         update to write.
6
7 2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
8
9         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10         Update build_indirect_ref calls.        
11
12 2009-12-17  Uros Bizjak  <ubizjak@gmail.com>
13
14         * config/i386/sync.md (IMODE): Remove mode iterator.
15         (modesuffix): Remove mode attribute.
16         (modeconstraint): Ditto.
17         (immconstraint): Ditto.
18         (*sync_compare_and_swap<mode>): Use SWI mode iterator instead of
19         IMODE mode iterator, imodesuffix mode attribute instead of modesuffix,
20         <r> mode attribute instead of modeconstraint and <i> mode attribute
21         instead of immconstraint.
22         (sync_double_compare_and_swap<mode>): Ditto.
23         (sync_old_add<mode>): Ditto.
24         (sync_lock_test_and_set<mode>): Ditto.
25         (sync_add<mode>): Ditto.
26         (sync_sub<mode>): Ditto.
27         (sync_and<mode>): Ditto.
28         (sync_ior<mode>): Ditto.
29         (sync_xor<mode>): Ditto.
30         (sync_<code><mode>): Macroize insn pattern from
31         sync_{and,ior,xor}<mode> using any_logic code iterator.
32
33 2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
34
35         PR c/40885
36         * c-common.h (ref_operator): New type.
37         (build_indirect_ref): Adjust prototype with new argument.
38         * c-typeck.c (build_indirect_ref): Accept ref_operator as argument and
39         emit the diagnostics for easy translation.
40         (build_array_ref): Update calls to build_indirect_ref.
41         * c-omp.c (c_finish_omp_atomic): Likewise.
42         * c-parser.c (c_parser_unary_expression,
43         c_parser_postfix_expression_after_primary): Likewise.
44
45 2009-12-16  Richard Guenther  <rguenther@suse.de>
46
47         PR lto/42392
48         * langhooks.c (lhd_begin_section): Make sure to switch back
49         to the text section, not some random one.
50
51 2009-12-16  Jakub Jelinek  <jakub@redhat.com>
52
53         * tree-chrec.c (chrec_convert_1): Only fold (T2)(t +- x) to
54         (T2)t +- (T2)x if only integer types are involved.
55
56 2009-12-16  Ben Elliston  <bje@au.ibm.com>
57
58         * tree-data-ref.h (dot_rdg): Remove prototype.
59         * tree-data-ref.c (dog_rdg_1, dot_rdg): Remove.
60
61 2009-12-16  Kazu Hirata  <kazu@codesourcery.com>
62
63         * doc/invoke.texi, doc/options.texi, doc/plugins.texi,
64         doc/tm.texi: Fix typos.
65
66 2009-12-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
67
68         * doc/extend.texi (Function Attributes, Extended Asm):
69         Replace TABs with spaces.
70         * doc/md.texi (Standard Names): Likewise.
71         * doc/plugins.texi (Plugins): Likewise.
72
73         * doc/c-tree.texi (Expression trees): Use @itemx for all but
74         the first item for merged items.
75         * doc/extend.texi (Variable Attributes): Likewise.
76         * doc/install.texi (Configuration): Likewise.
77         * doc/invoke.texi (RS/6000 and PowerPC Options, RX Options):
78         Likewise.
79
80 2009-12-15  Richard Guenther  <rguenther@suse.de>
81
82         * tree.c (free_lang_data_in_binfo): Do not free BINFO_OFFSET
83         and BINFO_VPTR_FIELD.
84         (free_lang_data_in_type): Do not free TYPE_STUB_DECL if we
85         generate debug information.
86         (free_lang_data_in_decl): Do not free DECL_SIZE_UNIT,
87         DECL_SIZE, DECL_FIELD_OFFSET and DECL_FCONTEXT.
88         (free_lang_data): Do not disable debuginfo.
89         * lto-streamer-out.c (write_symbol_vec): Deal with
90         non-constant DECL_SIZE.
91         (pack_ts_base_value_fields): Write types with false
92         TREE_ASM_WRITTEN.
93         (lto_output_ts_type_tree_pointers): Stream TYPE_STUB_DECL.
94         * lto-streamer-in.c (lto_input_ts_type_tree_pointers): Stream
95         TYPE_STUB_DECL.
96         * dwarf2out.c (add_pure_or_virtual_attribute): Check for
97         DECL_CONTEXT.
98         (gen_type_die_for_member): Test for TYPE_STUB_DECL.
99         * opts.c (decode_options): Do not disable var-tracking for lto.
100         * doc/invoke.texi (-flto): Document -flto vs. -g experimental
101         status.
102         (-fwhopr): Document experimental status.
103
104 2009-12-15  Aldy Hernandez  <aldyh@redhat.com>
105
106         PR graphite/42185
107         * graphite-sese-to-poly.c (is_reduction_operation_p): Assert that
108         we are a GIMPLE_ASSIGN.  Do not calculate rhs code twice.
109         (follow_ssa_with_commutative_ops): Return NULL on non assignment.
110
111 2009-12-15  Eric Botcazou  <ebotcazou@adacore.com>
112
113         * config/rs6000/rs6000.md (probe_stack): Use an enclosing SET.
114
115 2009-12-15  Richard Guenther  <rguenther@suse.de>
116
117         * gimple.h (compare_field_offset): Declare.
118         * gimple.c (compare_field_offset): Export.
119         * lto-streamer-in.c (input_gimple_stmt): Use compare_field_offset.
120
121 2009-12-15  Richard Guenther  <rguenther@suse.de>
122
123         * lto-cgraph.c (lto_output_node): Also stream the alias
124         for regular aliases.
125         (input_node): Likewise.
126
127 2009-12-15  Paolo Bonzini  <bonzini@gnu.org>
128             Shujing Zhao  <pearly.zhao@oracle.com>
129
130         * intl.c (get_spaces): New.
131         * intl.h (get_spaces): New.
132
133 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
134
135         PR bootstrap/42369
136         * config/i386/i386.c (ix86_expand_special_args_builtin): Avoid
137         using switch with CODE_FOR_lwp_lwp* cases.
138
139         * config/i386/i386-builtin-types.def (PVOID_FTYPE_VOID): Use
140         DEF_FUNCTION_TYPE (PVOID) instead of DEF_FUNCTION_TYPE (PVOID, VOID).
141
142 2009-12-14  Eric Botcazou  <ebotcazou@adacore.com>
143
144         * cfgexpand.c (expand_debug_expr) <INDIRECT_REF>: Remove overzealous
145         assertion and useless code.
146         <TARGET_MEM_REF>: Likewise.
147
148 2009-12-14  Alexandre Oliva  <aoliva@redhat.com>
149
150         PR debug/41473
151         * dwarf2out.c (AT_loc_list_ptr): New.
152         (resolve_addr): Remove unresolved attributes and loc_list entries.
153
154         PR debug/41473
155         * dwarf2out.c (add_var_loc_to_decl): Don't drop initial empty
156         locations.
157         (new_loc_list): Drop gensym arg.  Move generation of ll_symbol...
158         (gen_llsym): ... here.  New function.
159         (add_loc_descr_to_loc_list): Removed.
160         (loc_descriptor): Infer mode from CONST_DOUBLEs and CONST_VECTORs.
161         (single_element_loc_list): Removed.
162         (dw_loc_list): Don't create entries without a location.  Don't
163         special-case the first node of the list, only single nodes.
164         (single_element_loc_list_p): Simplify.
165         (loc_list_from_tree): Don't use DECL_RTL if loc_list is nonempty.
166         (add_location_or_const_value_attribute): Test var loc for NULL.
167         (convert_cfa_to_fb_loc_list): Adjust calls to new new_loc_list,
168         call gen_llsym if needed.
169
170 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
171
172         * cgraph.h (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
173         cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
174         prototypes.
175         * cgraph.c (cgraph_set_nothrow_flag, cgraph_set_readonly_flag,
176         cgraph_set_pure_flag, cgraph_set_looping_const_or_pure_flag): New
177         functions.
178         * except.h (set_nothrow_function_flags): Remove prototype.
179         * except.c (set_nothrow_function_flags): Use cgraph_set_nothrow_flag.
180         Make static.
181         * ipa-pure-const.c (propagate): Use cgraph_set_nothrow_flag,
182         cgraph_set_readonly_flag, cgraph_set_pure_flag
183         and cgraph_set_looping_const_or_pure_flag.
184         (local_pure_const): Likewise.
185
186 2009-12-14  Jakub Jelinek  <jakub@redhat.com>
187             Sebastian Pop  <sebastian.pop@amd.com>
188
189         * config/i386/i386-builtin-types.def (PVOID): Declared.
190         (VOID_FTYPE_PVOID): Declared.
191         (PVOID_FTYPE_VOID): Declared.
192         (UCHAR_FTYPE_USHORT_UINT_USHORT): Removed.
193         (VOID_FTYPE_USHORT_UINT_USHORT): Removed.
194         * config/i386/i386.c (IX86_BUILTIN_LLWPCB16, IX86_BUILTIN_LLWPCB32,
195         IX86_BUILTIN_LLWPCB64, IX86_BUILTIN_SLWPCB16, IX86_BUILTIN_SLWPCB32,
196         IX86_BUILTIN_SLWPCB64, IX86_BUILTIN_LWPVAL16, IX86_BUILTIN_LWPINS16):
197         Removed.
198         (IX86_BUILTIN_LLWPCB, IX86_BUILTIN_SLWPCB): New.
199         (bdesc_special_args): Adjust declaration of __builtin_ia32_llwpcb,
200         __builtin_ia32_slwpcb, __builtin_ia32_lwpval32,
201         __builtin_ia32_lwpval64, __builtin_ia32_lwpins32, and
202         __builtin_ia32_lwpins64.
203         (ix86_expand_special_args_builtin): Handle VOID_FTYPE_PVOID.
204         Do not handle VOID_FTYPE_USHORT_UINT_USHORT and
205         UCHAR_FTYPE_USHORT_UINT_USHORT.  Warn when the third operand is
206         not an immediate.  Also handle builtin functions with 3 arguments.
207         (ix86_expand_builtin): Handle IX86_BUILTIN_LLWPCB and
208         IX86_BUILTIN_SLWPCB.
209         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC, UNSPEC_SLWP_INTRINSIC):
210         Renamed UNSPECV_LLWP_INTRINSIC and UNSPECV_SLWP_INTRINSIC.
211         (memory attribute): Handle lwp.
212         (lwp*): Rewrite all the insn patterns for LWP.
213         * config/i386/lwpintrin.h (__llwpcb16, __llwpcb32, __llwpcb64,
214         __slwpcb16, __slwpcb32, __slwpcb64, __lwpval16, __lwpins16): Removed.
215         (__llwpcb, __slwpcb): New.
216
217 2009-12-14  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
218
219         * dominance.c (set_immediate_dominator): Don't mark as inline.
220
221 2009-12-14  Eric Botcazou  <ebotcazou@adacore.com>
222
223         * doc/tm.texi (STACK_CHECK_PROTECT): Document alternate default.
224         * doc/md.texi (check_stack): Clarify.
225         (probe_stack): Likewise.
226         * config/rs6000/rs6000.md (UNSPEC_PROBE_STACK): New constant.
227         (probe_stack): New insn.
228
229 2009-12-14  Ben Elliston  <bje@au.ibm.com>
230
231         * lto-streamer-in.c (lto_get_builtin_tree): fclass can only be a
232         BUILT_IN_NORMAL or BUILT_IN_MD.
233
234 2009-12-13  Eric Botcazou  <ebotcazou@adacore.com>
235
236         * doc/tm.texi (STACK_CHECK_PROBE_LOAD): Delete.
237         * expr.h (STACK_CHECK_PROBE_LOAD): Likewise.
238         * explow.c (emit_stack_probe): Do not test STACK_CHECK_PROBE_LOAD.
239         * system.h (STACK_CHECK_PROBE_LOAD): Poison.
240
241 2009-12-13  Michael Matz  <matz@suse.de>
242
243         PR tree-optimization/42027
244         * dojump.c (do_jump <TRUTH_AND_EXPR, TRUTH_OR_EXPR>): Go to
245         TRUTH_ANDIF_EXPR resp. TRUTH_ORIF_EXPR expander, instead of
246         falling through.
247
248 2009-12-13  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
249
250         PR target/23726
251         * config/avr/predicates.md (pseudo_register_operand): New predicate
252         for pseudos.
253         * config/avr/avr.md (divmodqi4): Replace with define_insn_and_split
254         to allow div/mod optimization.
255         (udivmodqi4): Ditto.
256         (divmodhi4): Ditto.
257         (udivmodhi4): Ditto.
258         (divmodsi4): Ditto.
259         (udivmodsi4): Ditto.
260
261 2009-12-13  Richard Guenther  <rguenther@suse.de>
262
263         PR tree-optimization/42357
264         * tree-sra.c (sra_modify_assign): Do not tear apart struct copies.
265
266 2009-12-12  Richard Guenther  <rguenther@suse.de>
267
268         * tree.c (need_assembler_name_p): Abstract decls do not need
269         an assembler name.
270         * dwarf2out.c (dwarf2out_abstract_function): Preserve
271         DECL_ABSTRACT properly.
272
273 2009-12-11  Richard Guenther  <rguenther@suse.de>
274
275         * lto-streamer-in.c (lto_input_tree_ref): Do not register
276         DEBUG_EXPR_DECLs with the varpool.
277
278 2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
279
280         * config/sparc/linux-unwind.h (MD_FROB_UPDATE_CONTEXT, 64-bit): Define.
281         (sparc64_frob_update_context): New function.
282
283 2009-12-11  Richard Guenther  <rguenther@suse.de>
284
285         PR lto/41658
286         PR lto/41657
287         * lto-streamer-out.c (write_global_stream): Do not make decls
288         weak but resort to TREE_ASM_WRITTEN to avoid multiple definitions.
289         Make sure to mark all decls that we have written.
290
291 2009-12-11  Sebastian Andrzej Siewior  <bigeasy@linutronix.de>
292
293         PR target/36047
294
295         * config/m68k/linux.h: Remove LABELNO from the mcount statement. It is
296         not used by glibc/uclibc and does not work with large binaries.
297
298 2009-12-11  Richard Guenther  <rguenther@suse.de>
299
300         PR lto/41662
301         * lto-streamer-in.c (lto_init_eh): Move eh_initialized_p
302         handling here.
303         (input_eh_regions): Adjust.
304         (lto_input_ts_function_decl_tree_pointers): Initialize EH
305         if a non-NULL DECL_FUNCTION_PERSONALITY was read in.
306
307 2009-12-11  Duncan Sands  <baldrick@free.fr>
308
309         * passes.c (make_pass_instance): Allocate and copy the right amount of
310         memory for ipa passes, which are not the same size as other passes.
311
312 2009-12-11  Joern Rennecke  <amylaar@spamcop.net>
313
314         * plugin.c (get_named_event_id): Fix hash table rebuild to include
315         dynamically allocated events.
316
317 2009-12-11  Richard Guenther  <rguenther@suse.de>
318
319         PR lto/42320
320         * lto-symtab.c (lto_symtab_resolve_can_prevail_p): Properly
321         detect non-prevailing decls.
322
323 2009-12-10  Jakub Jelinek  <jakub@redhat.com>
324
325         PR c++/42317
326         * cgraph.h (struct cgraph_node): Add same_comdat_group field.
327         * cgraph.c (cgraph_remove_node): Unchain node from same_comdat_group
328         circular list.
329         (cgraph_node_can_be_local_p): Return false for DECL_COMDAT with
330         node->same_comdat_group.
331         * ipa.c (cgraph_remove_unreachable_nodes): For any reachable node
332         mark all its same_comdat_group nodes as also reachable.
333         (cgraph_externally_visible_p): Return true even if any of
334         same_comdat_group nodes has address taken.
335         * lto-cgraph.c (lto_output_node): Stream out same_comdat_group.
336         (output_cgraph): Ensure other same_comdat_group nodes are also
337         included.
338         (input_node): Stream in same_comdat_group.
339         (input_cgraph_1): Fix up same_comdat_group fields from references
340         to pointers.
341         * cgraphunit.c (cgraph_analyze_functions): Mark all other
342         same_comdat_group nodes as reachable.
343         (cgraph_mark_functions_to_output): For each node->process process
344         also other same_comdat_group nodes.
345         * ipa-inline.c (cgraph_clone_inlined_nodes): Don't reuse nodes
346         with same_comdat_group non-NULL.
347         (cgraph_mark_inline_edge): Likewise.
348
349 2009-12-10  Jan Hubicka  <jh@suse.cz>
350
351         PR middle-end/42228
352         PR middle-end/42110
353         * cgraph.c (cgraph_create_edge_including_clones): Add old_stmt
354         parameter; update edge if it already exists.
355         (cgraph_remove_node): Handle correctly cases where we are removing
356         node having clones.
357         * cgraph.h (cgraph_create_edge_including_clones): Declare.
358         (verify_cgraph_node): Add missing error_found = true code.
359         (cgraph_materialize_all_clones): Remove call edges of dead nodes.
360         * ipa.c (cgraph_remove_unreachable_nodes): Correctly look for master
361         clone; fix double linked list removal.
362         * tree-inline.c (copy_bb): Update cgraph_create_edge_including_clones
363         call; fix frequency of newly created edge.
364
365 2009-12-10  Bernd Schmidt  <bernd.schmidt@analog.com>
366
367         PR rtl-opt/42216
368         * regrename.c: Error out if MAX_RECOG_OPERANDS is larger than
369         HOST_BITS_PER_WIDE_INT.
370         (verify_reg_in_set): New function, broken out of verify_reg_tracked.
371         (verify_reg_tracked): Use it.
372         (scan_rtx_reg): When seeing a use involving a superset of the
373         registers in an existing chain, enlarge that chain.  Otherwise,
374         allow subsets and set fail_current_block for all other kinds of
375         overlap.
376         (hide_operands): New argument UNTRACKED_OPERANDS; callers changed.
377         Do not modify operands when the bit with the corresponding number
378         is set in that bitmap.
379         (build_def_use): When we see matching operands with different
380         modes, don't set fail_current_block, but keep track of such
381         operands in a bitmap if their registers aren't already tracked
382         in an open chain.  Pass this bitmap to all hide_operands calls.
383
384 2009-12-10  Richard Guenther  <rguenther@suse.de>
385
386         PR tree-optimization/42337
387         * tree-ssa-pre.c (seen_during_translate): Remove.
388         (phi_translate_1): Collapse into ...
389         (phi_translate): ... this.  Remove seen parameter and
390         adjust recursive calls.
391
392 2009-12-10  Richard Guenther  <rguenther@suse.de>
393         Allan Sandfeld Jensen  <linux@carewolf.com>
394
395         * tree-vectorizer.c (vectorize_loops): Properly guard
396         vectorizer verboseness.
397
398 2009-12-10  Ben Elliston  <bje@au.ibm.com>
399
400         * fwprop.c (free_load_extend): Initialise `use'.
401
402 2009-12-09  David Edelsohn  <edelsohn@gnu.org>
403
404         * builtins.c (do_mpc_ckconv): Pass the component type to
405         real_from_mpfr().
406
407 2009-12-09  Xinliang David Li  <davidxl@google.com>
408
409         PR tree-optimization/42337
410         * tree-ssa-pre.c (phi_translate_1): Push and Pop SEEN set.
411
412 2009-12-09  Nathan Froyd  <froydnj@codesourcery.com>
413
414         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
415         mulv2sf3, divv2sf3): New expanders.
416         * config/rs6000/spe.md (spe_evabs, spe_evand, spe_evaddw, spe_evsubfw,
417         spe_evdivws): Rename to use standard GCC names.
418         * config/rs6000/paired.md (negv2sf, absv2sf2, addv2sf3, subv2sf3,
419         mulv2sf3, divv2sf3): Rename to avoid conflict with the new expanders.
420         * config/rs6000/rs6000.c (bdesc_2arg, bdesc_1arg): Use new CODE_FOR_
421         names for renamed patterns.
422
423 2009-12-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
424
425         * config/s390/s390.md ("copysign<mode>3"): Pattern removed.
426
427 2009-12-09  Jakub Jelinek  <jakub@redhat.com>
428
429         * configure.ac: Compute ld_ver, ld_vers, ld_date, ld_vers_major,
430         ld_vers_minor and ld_vers_path always, not just when gcc_cv_ld_hidden
431         isn't cached.
432         * configure: Regenerated.
433
434 2009-12-08  Richard Henderson  <rth@redhat.com>
435
436         * combine.c (setup_incoming_promotions): Fix sign-extend of
437         zero-extend case; tidy conditions.
438
439 2009-12-08  Michael Matz  <matz@suse.de>
440
441         PR middle-end/38474
442         * function.c (free_temp_slots): Only walk the temp slot
443         addresses and combine slots if we actually changes something.
444         (pop_temp_slots): Ditto.
445
446 2009-12-08  Olga Golovanevsky  <olga@il.ibm.com>
447
448         PR middle-end/41843
449         * ipa-struct-reorg.c (compare_fields): New function.
450         (find_field_in_struct_1): Use compare_fields function.
451         (is_equal_types): Likewise.
452
453 2009-12-07  DJ Delorie  <dj@redhat.com>
454
455         PR c/42312
456         * config/mep/mep.c (mep_expand_prologue): Set
457         really_need_stack_frame after frame_size is set.
458
459 2009-12-07  Richard Henderson  <rth@redhat.com>
460
461         PR rtl-opt/42269
462         * combine.c (setup_incoming_promotions): Improve the conditions
463         under which we respect the promotions applied.
464
465 2009-12-07  Eric Botcazou  <ebotcazou@adacore.com>
466
467         * config/sparc/linux.h (ASM_SPEC): Pass -K PIC if -findirect-dispatch.
468         * config/sparc/linux64.h (ASM_SPEC): Likewise.
469
470 2009-12-07  Richard Henderson  <rth@redhat.com>
471
472         PR debug/42299
473         PR debug/42166
474         * tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
475         for ssa names already registered for update.
476
477 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
478
479         PR debug/42244
480         * ddg.c (add_inter_loop_mem_dep): Use ANTI_DEP if from or to
481         is a DEBUG_INSN.
482
483 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
484
485         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mlwp to the
486         options when bit_LWP is set.
487
488 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
489
490         * config/i386/cpuid.h (bit_ABM): New.
491         * config/i386/driver-i386.c (host_detect_local_cpu): Add -mabm to the
492         options when bit_ABM is set.
493
494 2009-12-07  Jakub Jelinek  <jakub@redhat.com>
495
496         * config/i386/i386.c (bdesc_special_args): Move __builtin_clzs from
497         this array ...
498         (bdesc_args): ... here.
499         * config.gcc (i[34567]86-*-*): Include abmintrin.h.
500         (x86_64-*-*): Likewise.
501
502 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
503
504         * config.gcc (i[34567]86-*-*, x86_64-*-*): Add popcntintrin.h.
505         * config/i386/abmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
506         * config/i386/i386-c.c (__POPCNT__): Defined.
507         * config/i386/popcntintrin.h: ...here.  New file.
508         * config/i386/smmintrin.h (_mm_popcnt_u32, _mm_popcnt_u64): Moved...
509         Include popcntintrin.h.
510         * config/i386/x86intrin.h: Include popcntintrin.h when __POPCNT__
511         is defined.
512
513 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
514
515         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory):
516         Removed.
517         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Removed.
518         * config/i386/sse.md: Remove all XOP splitters.
519         Allow the second and fourth operands of XOP multiply-add insns
520         to be nonimmediate.
521
522 2009-12-07  Sebastian Pop  <sebastian.pop@amd.com>
523
524         * config/i386/sse.md: Remove all FMA4 splitters.
525         Allow the second operand of FMA4 insns to be a nonimmediate.
526         Fix comments punctuation.
527
528 2009-12-07  Julian Brown  <julian@codesourcery.com>
529
530         * config/arm/constraints.md (Ps, Pt): New constraint letters.
531         * config/arm/thumb2.md (*thumb2_addsi_short): Tighten constraints.
532
533 2009-12-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
534
535         PR other/40302
536         * configure.ac (HAVE_mpc): Don't define.
537         * config.in, configure: Regenerate.
538
539         PR other/40302
540         * builtins.c: Remove HAVE_mpc* checks throughout.
541         * fold-const.c: Likewise.
542         * real.h: Likewise.
543         * toplev.c: Likewise.
544
545 2009-12-07  Edmar Wienskoski  <edmar@freescale.com>
546
547         * config.gcc (cpu_is_64bit): Add new core e500mc64.
548         (powerpc*-*-*): Add new core e500mc64.
549         * config/rs6000/e500mc64.md: New file.
550         * config/rs6000/rs6000.c (processor_costs): Add new costs for
551         e500mc64.
552         (rs6000_override_options): Add e500mc64 case to
553         processor_target_table. Altivec and Spe options not allowed with
554         e500mc64. Disable string instructions for e500mc64. Enable branch
555         targets alignment for both e500mc and e500mc64. Initialize
556         rs6000_cost for e500mc64.
557         (rs6000_emit_sISEL): New function.
558         (rs6000_emit_sCOND): Call rs6000_emit_sISEL for isel targets.
559         (rs6000_emit_int_cmove): Fix mode of 64 bit isel pattern
560         generation.
561         (rs6000_issue_rate): Set issue rate for e500mc64.
562         (rs6000_rtx_costs): Set more accurate cost for mfcr instruction
563         on architectures with isel.
564         * config/rs6000/rs6000-protos.h (rs6000_emit_sISEL): Declare.
565         * config/rs6000/rs6000.h (processor_type): Add
566         PROCESSOR_PPCE500MC64.
567         (ASM_CPU_SPEC): Add e500mc64.
568         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc64.
569         Include e500mc64.md.
570         (abssi2_isel): Expand pattern to handle DImode.
571         (nabs<mode>2_isel): New pattern.
572         (absdi2): Change pattern to handle 64 bit isel targets.
573         (absdi2_internal): Exclude ISEL targets.
574         (nabsdi2): Exclude ISEL targets.
575         * doc/invoke.texi: Add e500mc64 to list of cpus.
576
577 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
578
579         * config/i386/i386.md (any_or): New code iterator.
580         (any_logic): Rename from plogic code iterator.
581         (logicprefix): Rename from plogicprefix code attribute.
582         (<code><mode>3): Macroize expander from {ior,xor}<mode>3 using
583         any_or code iterator.
584         (*<code><mode>_1): Macroize insn from *{ior,xor}<mode>_1 using
585         any_or code iterator.
586         (*<code><mode>_2): Ditto from *{ior,xor}<mode>_2.
587         (*<code><mode>_3): Ditto from *{ior,xor}<mode>_3.
588         (ior and xor splitters): Ditto.
589         * config/i386/mmx.md: Updated for rename.
590         * config/i386/sse.md: Ditto.
591
592 2009-12-07  Uros Bizjak  <ubizjak@gmail.com>
593
594         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
595         Remove quotes around condition logic code.
596
597 2009-12-06  Richard Henderson  <rth@redhat.com>
598
599         PR debug/42234
600         * tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
601         argument earlier.
602
603 2009-12-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
604
605         * doc/install.texi: Document MPC is required.
606
607 2009-12-06  Uros Bizjak  <ubizjak@gmail.com>
608
609         * config/i386/i386.md (g): Add HImode and QImode.
610         (general_szext_operand): New mode attribute.
611         (*test<mode>_1): Macroize insn from *test{qi,hi,si}_1 using
612         SWI124 mode iterator.
613         (and<mode>3): Macroize expander from and{qi,hi,si,di}3 using
614         SWIM mode iterator.
615         (*and<mode>_2): Macroize insn from *and{qi,hi,si}_2 using
616         SWI124 mode iterator.
617         (ior<mode>3): Macroize expander from ior{qi,hi,si,di}3 using
618         SWIM mode iterator.
619         (*ior<mode>_1): Macroize insn from *ior{hi,si,di}_1 using
620         SWI248 mode iterator.
621         (*ior<mode>_2): Macroize insn from *ior{qi,hi,si,di}_2 using
622         SWI mode iterator.
623         (*ior<mode>_3): Macroize insn from *ior{qi,hi,si,di}_3 using
624         SWI mode iterator.
625         (xor<mode>3): Macroize expander from xor{qi,hi,si,di}3 using
626         SWIM mode iterator.
627         (*xor<mode>_1): Macroize insn from *xor{hi,si,di}_1 using
628         SWI248 mode iterator.
629         (*xor<mode>_2): Macroize insn from *xor{qi,hi,si,di}_2 using
630         SWI mode iterator.
631         (*xor<mode>_3): Macroize insn from *xor{qi,hi,si,di}_3 using
632         SWI mode iterator.
633
634 2009-12-05  Sebastian Pop  <sebastian.pop@amd.com>
635
636         * config/i386/i386.c (TARGET_DEFAULT_TARGET_FLAGS): Add
637         MASK_FUSED_MADD.
638         * config/i386/i386.h (CC1_CPU_SPEC_1): Remove
639         "'-mfused-madd' was removed".
640         * config/i386/i386.opt (mfused-madd): New.
641         * config/i386/sse.md: Add TARGET_FUSED_MADD to FMA4 insns.
642         * doc/invoke.texi (-mfused-madd, -mno-fused-madd): Document.
643
644 2009-12-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
645
646         * pa64-hpux.h (LIB_SPEC): Handle -rdynamic.
647         * pa-hpux10.h (LIB_SPEC): Likewise.
648         * pa-hpux11.h (LIB_SPEC): Likewise.
649
650         PR ada/41912
651         * pa/linux-unwind.h (pa32_fallback_frame_state): Set fs->signal_frame
652         for signal frames.
653         * pa/hpux-unwind.h (pa32_fallback_frame_state): Likewise.
654
655 2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
656
657         * configure: Regenerate.
658
659 2009-12-05  Richard Earnshaw  <rearnsha@arm.com>
660
661         * arm/thumb2.md (thumb2_mulsi_short_compare0): Use a low-register
662         for the scratch.
663
664 2009-12-04  David Daney  <ddaney@caviumnetworks.com>
665
666         PR rtl-optimization/42164
667         * combine.c (combine_simplify_rtx): Handle truncation of integer
668         constants.
669
670 2009-12-04  Richard Guenther  <rguenther@suse.de>
671
672         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
673         Revert previous change.
674         (lto_output_ts_decl_common_tree_pointers): Stream DECL_VALUE_EXPR.
675         * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
676         Likewise.
677
678 2009-12-04  Richard Guenther  <rguenther@suse.de>
679
680         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle
681         BUILT_IN_MALLOC.
682         (call_may_clobber_ref_p_1): Likewise.
683
684 2009-12-04  Matthias Klose  <doko@ubuntu.com>
685             John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
686
687         PR target/40134
688         * config.gcc (hppa*-*-linux*): Use config/t-slibgcc-libgcc.
689         * config/pa/pa-linux.h (LIB_SPEC): Remove.
690
691 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
692             Richard Henderson  <rth@redhat.com>
693
694         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Remove.
695         * config/i386/i386.c (ix86_fma4_valid_op_p): Remove.
696         * config/i386/i386.md: Do not use ix86_fma4_valid_op_p.
697         * config/i386/sse.md (fma4_*): Remove alternative with operand 1
698         matching a memory access.  Do not use ix86_fma4_valid_op_p.
699         (xop_*): Same.
700         Do not use ix86_fma4_valid_op_p in FMA4 and XOP splitters.
701
702 2009-12-03  Richard Henderson  <rth@redhat.com>
703
704         * config/i386/i386.c (ix86_fixup_binary_operands): For FMA4, force
705         all operands into registers.
706
707 2009-12-03  Sebastian Pop  <sebastian.pop@amd.com>
708
709         * config/i386/i386.c (ix86_expand_fma4_multiple_memory): Remove unused
710         parameter.
711         * config/i386/i386-protos.h (ix86_expand_fma4_multiple_memory): Same.
712         * config/i386/sse.md: Same.
713
714 2009-12-03  Richard Guenther  <rguenther@suse.de>
715
716         * cgraphunit.c (assemble_thunk): Use DECL_ASSEMBLER_NAME
717         instead of DECL_NAME for the entry point.
718
719 2009-12-03  Richard Earnshaw  <rearnsha@arm.com>
720
721         * arm/linux-atomic.c (SYNC_LOCK_RELEASE): Place memory barrier
722         before the lock release.
723
724 2009-12-03  Michael Matz  <matz@suse.de>
725
726         PR middle-end/38474
727         * cfgexpand.c (struct stack_var): Add conflicts member.
728         (stack_vars_conflict, stack_vars_conflict_alloc,
729         n_stack_vars_conflict): Remove.
730         (add_stack_var): Initialize conflicts member.
731         (triangular_index, resize_stack_vars_conflict): Remove.
732         (add_stack_var_conflict, stack_var_conflict_p): Rewrite in
733         terms of new member.
734         (union_stack_vars): Only run over the conflicts.
735         (partition_stack_vars): Remove special case.
736         (expand_used_vars_for_block): Don't call resize_stack_vars_conflict,
737         don't create self-conflicts.
738         (account_used_vars_for_block): Don't create any conflicts.
739         (fini_vars_expansion): Free bitmaps, don't free or clear removed
740         globals.
741
742 2009-12-03  Bernd Schmidt  <bernd.schmidt@analog.com>
743
744         PR middle-end/42202
745         * regrename.c (live_in_chains): New variable.
746         (verify_reg_tracked): New static function.
747         (scan_rtx_reg): Update live_in_chains.
748         (scan_rtx): Only promote sets in COND_EXEC to OP_INOUT if
749         we're already tracking the reg.
750         (build_def_use): Likewise.  Initialize live_in_chains.
751
752 2009-12-03  Ken Werner  <ken.werner@de.ibm.com>
753
754         * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof
755         startup files.
756         * config/spu/spu-protos.h (spu_function_profiler): Add prototype.
757         * config/spu/spu.c (spu_function_profiler): New function.
758         * config/spu/spu.h (FUNCTION_PROFILER): Invoke
759         spu_function_profiler.
760         (NO_PROFILE_COUNTERS): Define.
761         (PROFILE_BEFORE_PROLOGUE): Likewise.
762
763 2009-12-03  Dave Korn  <dave.korn.cygwin@gmail.com>
764
765         * ggc-page.c (struct free_object): Pull definition out ...
766         (struct globals): .. from here.
767
768 2009-12-02  Richard Guenther  <rguenther@suse.de>
769
770         * fold-const.c (div_if_zero_remainder): Honor that sizetypes
771         are sign-extending.  Simplify.
772
773 2009-12-02  Richard Henderson  <rth@redhat.com>
774
775         PR tree-opt/42215
776         * tree-loop-distribution.c (build_size_arg_loc): Tidy.
777         (generate_memset_zero): Convert to sizetype properly.  Tidy.
778
779 2009-12-02  Richard Guenther  <rguenther@suse.de>
780
781         * lto-streamer-out.c (pack_ts_decl_common_value_fields):
782         Do not pretend we have value exprs.
783
784 2009-12-02  Richard Guenther  <rguenther@suse.de>
785
786         PR middle-end/41491
787         * fold-const.c (try_move_mult_to_index): Do not leak
788         domain types into the IL.
789
790 2009-12-02  Richard Guenther  <rguenther@suse.de>
791
792         PR middle-end/42088
793         * tree.c (free_lang_data): Disable if not using LTO.
794
795 2009-12-02  Richard Guenther  <rguenther@suse.de>
796
797         PR middle-end/42229
798         * cfgloopmanip.c (remove_path): Avoid cancelling loops twice.
799
800 2009-12-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
801
802         PR middle-end/42224
803         * tree.h (int_or_pointer_precision): Remove.
804         * tree.c (int_or_pointer_precision): Remove.
805         (integer_pow2p): Use TYPE_PRECISION instead.
806         (tree_log2): Likewise.
807         (tree_floor_log2): Likewise.
808         (signed_or_unsigned_type_for): Likewise.
809         * fold-const.c (fit_double_type): Likewise.
810         * varasm.c (initializer_constant_valid_p): Likewise.
811
812 2009-12-02  Ira Rosen  <irar@il.ibm.com>
813
814         * doc/invoke.texi (-fdump-tree-slp): Document.
815         (-ftree-vectorizer-verbose): Update.
816         (-ftree-slp-vectorize): Document.
817
818 2009-12-02  Nick Clifton  <nickc@redhat.com>
819
820         * config/rx/rx.c (rx_conditional_register_usage): Do not warn if
821         no fixed registers are available for interrupt handlers.  Do not
822         fix normal registers.
823         (MUST_SAVE_ACC_REGISTER): New macro.
824         (rx_get_stack_layout): Create a stack frame for fast interrupt
825         handlers, if necessary.  Push extra registers if needed in order
826         to save the accumulator.
827         (rx_expand_prologue): Create a stack frame for fast interrupt
828         handlers, if necessary.
829         (rx_expand_builtin_mvfc): Handle the case where there is no target.
830
831 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
832
833         * config/i386/abmintrin.h (__lzcnt16): New.
834         (__lzcnt): New.
835         (__lzcnt64): New.
836         * config/i386/i386-builtin-types.def (UINT16_FTYPE_UINT16): New.
837         * config/i386/i386.c (IX86_BUILTIN_CLZS): New.
838         (bdesc_special_args): Add __builtin_clzs.
839         (ix86_expand_args_builtin): Handle UINT16_FTYPE_UINT16.
840
841 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
842
843         * config/i386/abmintrin.h (_mm_popcnt_u32): New.
844         (_mm_popcnt_u64): New.
845
846 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
847
848         * config/i386/abmintrin.h: New.
849         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
850         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
851
852 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
853
854         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
855         (crc32modesuffix): Remove.
856         (crc32modeconstraint): Ditto.
857         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
858         imodesuffix instead of crc32modesuffix and <r>m instead of
859         crc32modeconstraint.
860
861 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
862
863         PR c++/42234
864         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
865         contains no statements.
866
867 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
868             Joern Rennecke  <amylaar@spamcop.net>
869
870         * cgraphunit.c (plugin.h): Include.
871         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
872         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
873         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
874         (enum plugin_event): Define by including plugin.def.
875         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
876         (plugin_event_name): Change type to const char **.
877         (get_event_last, get_named_event_id, unregister_callback): Declare.
878         (register_callback): Change type of event argument to int.
879         (highlev-plugin-common.h): New file.
880         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
881         $(HASHTAB_H)
882         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
883         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
884         (s-header-vars): New rule.
885         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
886         * params.c (get_num_compiler_params): New function.
887         * params.h (get_num_compiler_params): Declare.
888         * passes.c (plugin.h): Include.
889         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
890         (do_per_function_toporder, pass_init_dump_file): No longer static.
891         (pass_fini_dump_file): Likewise.
892         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
893         PLUGIN_PASS_EXECUTION.
894         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
895         PLUGIN_EARLY_GIMPLE_PASSES_END.
896         * plugin.c (plugin_event_name_init): New array, defined by
897         including plugin.def.
898         (FMT_FOR_PLUGIN_EVENT): Update.
899         (plugin_event_name): Change type to const char ** and initialize
900         to plugin_event_name_init.
901         (event_tab, event_last, event_horizon): New variable.
902         (get_event_last): New function.
903         (plugin_callbacks_init): New array.
904         (plugin_callbacks: Change type to struct callback_info **.
905         Initialize to plugin_callbacks_init.
906         (htab_event_eq, get_named_event_id, unregister_callback): New function.
907         (invoke_plugin_va_callbacks): Likewise.
908         (register_callback): Change type of event argument to int.
909         Handle new events.  Allow dynamic events.
910         (invoke_plugin_callbacks): Likewise.  Return success status.
911         (plugins_active_p): Allow dynamic callbacks.
912         * plugin.def: New file.
913         * plugin.h (invoke_plugin_callbacks): Update prototype.
914         (invoke_plugin_va_callbacks): Declare.
915         * tree-optimize.c (plugin.h): Include.
916         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
917         PLUGIN_ALL_PASSES_END.
918         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
919         (pass_fini_dump_file, do_per_function_toporder): Likewise.
920         * doc/plugin.texi: Document new event types.
921
922 2009-12-01  Martin Jambor  <mjambor@suse.cz>
923
924         PR tree-optimization/42237
925         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
926         in between references into two.
927
928 2009-12-01  Richard Guenther  <rguenther@suse.de>
929
930         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
931         to the block of the call when remapping a type.
932
933 2009-12-01  Martin Jambor  <mjambor@suse.cz>
934
935         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
936         unsigned short int.
937         * ipa-prop.h (struct ipa_param_call_note): Likewise.
938         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
939
940 2009-12-01  Richard Guenther  <rguenther@suse.de>
941
942         * final.c (rest_of_clean_state): If -fcompare-debug is
943         given dump final insns without UIDs.
944         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
945         after_inlining checks.
946
947 2009-11-30  Chao-ying Fu  <fu@mips.com>
948
949         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
950
951 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
952
953         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
954         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
955         * configure: Regenerate.
956         * config.in: Regenerate.
957
958         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
959         options for Cygwin DLL libstdc++ support wrappers.
960         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
961         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
962         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
963         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
964         (LINK_SPEC): Include CXX_WRAP_SPEC.
965         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
966         (i386_find_on_wrapper_list): Check if a function is found on the list
967         of libstdc++ wrapper options.
968         (i386_pe_file_end): If we are importing a wrapped function, also emit
969         an external declaration for the real version.
970         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
971         Cygwin targets. Update copyright year.
972
973 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
974             Jakub Jelinek <jakub@redhat.com>
975
976         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
977         before forcing mode.
978
979 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
980
981         * config/sh/sh.c (sh_promote_prototypes): Make static.
982         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
983         functions.
984         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
985         * config/sh/sh.h (FUNCTION_VALUE_REGNO_P): Redefine, use
986         sh_function_value_regno_p.
987         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
988         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
989         (sh_promote_prototypes) : Remove.
990
991 2009-11-30  Julian Brown  <julian@codesourcery.com>
992
993         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
994         reloads to LO_REGS.
995
996 2009-11-30  Richard Henderson  <rth@redhat.com>
997
998         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
999         (bdesc_special_args): Update insn codes.
1000         (avx_vpermilp_parallel): Correct range check.
1001         (ix86_rtx_costs): Handle vector permutation rtx codes.
1002         (struct expand_vec_perm_d): Move earlier.
1003         (get_mode_wider_vector): New.
1004         (expand_vec_perm_broadcast_1): New.
1005         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
1006         (expand_vec_perm_broadcast): New.
1007         (ix86_expand_vec_perm_builtin_1): Use it.
1008         * config/i386/i386-protos.h: Update.
1009         * config/i386/predicates.md (avx_vbroadcast_operand): New.
1010         * config/i386/sse.md (AVX256MODE24P): New.
1011         (ssescalarmodesuffix2s): New.
1012         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
1013         (avxmodesuffixf2c): Add V8SI, V4DI.
1014         (vec_dupv4sf): New expander.
1015         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
1016         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
1017         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
1018         pinsrd alternatives.
1019         (*vec_set<mode>_0_sse2): Split out from ...
1020         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
1021         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
1022         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
1023         ix86_fixup_binary_operands.
1024         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
1025         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
1026         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
1027         vec_select form to vec_duplicate form.
1028         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
1029         ix86_vec_interleave_v2df_operator_ok.
1030         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
1031         (*avx_unpcklpd256): ... here.
1032         (*vec_dupv4si_avx): New.
1033         (*vec_dupv2di_avx): Add movddup alternative.
1034         (*vec_dupv2di_sse3): New.
1035         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
1036         avx_vbroadcastss256; represent with vec_duplicate instead of
1037         nested vec_concat operations.
1038         (avx_vbroadcastf128_<mode>): Rename from
1039         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
1040         (*avx_vperm_broadcast_v4sf): New.
1041         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
1042
1043 2009-11-30  Martin Jambor  <mjambor@suse.cz>
1044
1045         PR middle-end/42196
1046         * tree-sra.c (struct access): New field grp_different_types.
1047         (dump_access): Dump grp_different_types.
1048         (compare_access_positions): Prefer scalars and vectors over other
1049         scalar types.
1050         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
1051         (sra_modify_expr): Use the original also when dealing with a complex
1052          or vector group accessed as multiple types.
1053
1054 2009-11-30  Richard Henderson  <rth@redhat.com>
1055
1056         * config/i386/i386.c (avx_vperm2f128_parallel): New.
1057         * config/i386/i386-protos.h: Declare it.
1058         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
1059         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
1060         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
1061         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
1062         (*avx_vperm2f128<mode>_nozero): New.
1063
1064 2009-11-30  Richard Henderson  <rth@redhat.com>
1065
1066         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
1067         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
1068         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
1069         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
1070         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
1071         (bdesc_args): Add them.
1072         (ix86_expand_builtin): Expand them.
1073         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
1074
1075 2009-11-30  Martin Jambor  <mjambor@suse.cz>
1076
1077         PR middle-end/42206
1078         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
1079
1080 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
1081
1082         * ipa-reference.c (propagate): Only dump bitmaps if computed.
1083
1084 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
1085
1086         PR middle-end/39806
1087         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
1088         (new_var_hash): Likewise.
1089         (is_in_new_vars_htab): Likewise.
1090         (add_to_new_vars_htab): Likewise.
1091
1092 2009-11-30  Ira Rosen  <irar@il.ibm.com>
1093
1094         * tree-vect-stmts.c (vectorizable_assignment): Support
1095         multiple types.
1096
1097 2009-11-30  Richard Guenther  <rguenther@suse.de>
1098
1099         * doc/contrib.texi (Contributors): Add myself.
1100
1101 2009-11-30  Richard Guenther  <rguenther@suse.de>
1102
1103         * tree.c (free_lang_data): Do not set debug_info_level to
1104         none if terse.
1105
1106 2009-11-30  Richard Guenther  <rguenther@suse.de>
1107
1108         PR middle-end/42119
1109         PR fortran/38530
1110         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
1111         of CONST_DECLs.
1112
1113 2009-11-30  Richard Guenther  <rguenther@suse.de>
1114
1115         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
1116         variable UID order.
1117
1118 2009-11-30  Richard Guenther  <rguenther@suse.de>
1119
1120         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
1121         * tree-pass.h (TDF_NOUID): Likewise.
1122         * print-rtl.c: Include tree-pass.h.
1123         (print_mem_expr): Pass dump_flags.
1124         (print_rtx): Likewise.
1125         * print-tree.c: Include tree-pass.h.
1126         (print_node_brief): Handle TDF_NOUID.
1127         (print_node): Likewise.
1128         * tree-pretty-print.c (dump_decl_name): Likewise.
1129         (dump_generic_node): Likewise.
1130         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
1131         dependency.
1132
1133 2009-11-30  Nick Clifton  <nickc@redhat.com>
1134
1135         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
1136         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
1137         stormy16-lib2-count-leading-zeros.c.
1138         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
1139         __stormy16_count_leading_zeros() into this function.
1140         (__ctzhi2): Use __builtin_clz.
1141         (__ffshi2): Likewise.
1142
1143 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
1144
1145         * config/sparc/sparc.c (DF_MODES): Simplify.
1146         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
1147         (TF_MODES, OF_MODES): Adjust for above change.
1148         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
1149         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
1150
1151 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
1152
1153         PR rtl-optimization/41812
1154         * fwprop.c (local_md, local_lr): New globals.
1155         (process_defs, process_uses): Remove local_md argument.  Never
1156         consider dead pseudos to have singleton def-use chains.
1157         (single_def_use_enter_block): Perform LR simulation.
1158         (build_single_def_use_links): Remove local_md local variable.
1159         Add DF_NOTE.  Allocate local_lr.
1160         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
1161         * df-problems.c (df_md_scratch): New.
1162         (df_md_alloc, df_md_free): Allocate/free it.
1163         (df_md_local_compute): Only include live registers in init.
1164         (df_md_transfer_function): Prune the in-set computed by
1165         the confluence function, and the gen-set too.
1166
1167 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
1168
1169         PR rtl-optimization/40086
1170         * reorg.c (relax_delay_slots): When looking for redundant insn at
1171         the branch target, use next_real_insn, not next_active_insn.
1172
1173 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1174
1175         * doc/install.texi: Update minimum MPC version to 0.8.
1176
1177 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
1178
1179         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
1180         HONOR_SIGNED_ZEROS final condition.
1181         (fnmsubsf4_powerpc_1): Same.
1182         (fnmadddf4_fpr_1): Same.
1183         (fnmsubdf4_fpr_1): Same.
1184
1185 2009-11-29  Ira Rosen  <irar@il.ibm.com>
1186
1187         PR tree-optimization/42193
1188         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
1189         to 1 in case of basic block SLP.
1190         (vectorizable_load): Likewise.
1191
1192 2009-11-28  Jan Hubicka  <jh@suse.cz>
1193
1194         * cgraph.c (same_body_alias_1): Break out of
1195         (same_body_alias): ... here; remove comdat check; it is handled
1196         in cp already.
1197         (cgraph_add_thunk): New.
1198         (dump_cgraph_node): Dump aliases and thunks.
1199         * cgraph.h (cgraph_thunk_info): New structure.
1200         (struct cgraph_node): Add thunk info.
1201         (cgraph_add_thunk): New.
1202         * cgraphunit.c (cgraph_emit_thunks): Remove.
1203         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
1204         (assemble_thunk): New function.
1205         (cgraph_expand_function): Handle thunks.
1206         (thunk_adjust): New.
1207         (init_lowered_empty_function): New.
1208         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
1209         Remove.
1210         * lto-cgraph.c (lto_output_node): Stream thunk info.
1211         (input_node): Likewise.
1212         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
1213         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
1214         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
1215         * i386.c (x86_output_mi_thunk): Make output prettier.
1216
1217 2009-11-28  Richard Guenther  <rguenther@suse.de>
1218
1219         PR tree-optimization/42183
1220         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
1221         address taken.  Merge the addressable state of the NRV
1222         variable and the result instead of copying it.
1223
1224 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
1225
1226         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
1227         malloc_fname variable.
1228         (check_allocation_function): Remove unused gsi and bb_level_0
1229         variables.
1230         (transform_access_sites): Remove unused d_type_size and d_type_size_k
1231         variables.
1232         * omega.c (resurrect_subs): Remove unused n variable.
1233         (omega_solve_geq): Remove unused neweqns variable.
1234         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
1235         * tree-inline.c (declare_return_variable): Remove USE_P argument,
1236         return use instead of var.
1237         (remap_decl, remap_block): Remove unused fn variable.
1238         (expand_call_inline): Remove unused retvar variable, adjust
1239         declare_return_variable caller.
1240         (optimize_inline_calls): Remove unused prev_fn variable.
1241         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
1242         variable.
1243         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
1244         variables.
1245         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
1246         properly.
1247         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
1248         variable.
1249         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
1250         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
1251         parameter.  Remove unused par_stmt variable.
1252         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
1253         (expand_omp_sections): Remove unused l1 variable.
1254         (lower_omp_for): Remove unused ilist variable.
1255         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
1256         Remove unused has_upstream_mem_write_p variable.
1257         * recog.c (decode_asm_operands): Remove unused noperands variable.
1258         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
1259         size2 variable.
1260         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
1261         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
1262         base_nm variable.
1263         (gen_conditions_for_pow): Remove unused ec variable.
1264         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
1265         variable.
1266         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
1267         fndecl variable.
1268         * tree-ssa-sink.c (statement_sink_location): Remove unused code
1269         variable.
1270         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
1271         variables.
1272         * tree-complex.c (create_one_component_var): Remove unused inner_type
1273         variable.
1274         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
1275         unnecessarily when GEN_*CALL omits that argument.
1276         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
1277         (build_def_use): Remove unused icode variable.
1278         * ipa-pure-const.c (check_call): Remove unused callee and avail
1279         variables.
1280         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
1281         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
1282         variable.
1283         (vect_pattern_recog): Remove unused stmt variable.
1284         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
1285         new_regions variable.
1286         * postreload.c (reload_cse_simplify_operands): Remove unused mode
1287         variable.
1288         * tree-parloops.c (create_call_for_reduction_1): Remove unused
1289         addr_type variable.
1290         (create_parallel_loop): Remove unused res variable.
1291         (gen_parallel_loop): Remove unused nloop variable.
1292         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
1293         * value-prof.c (gimple_mod_subtract_transform,
1294         gimple_stringops_transform): Remove unused value variable.
1295         (gimple_stringops_values_to_profile): Remove unused fcode variable.
1296         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
1297         (vrp_visit_switch_stmt): Remove unused n variable.
1298         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
1299         variable.
1300         (vectorizable_operation): Remove unused shift_p variable.
1301         (vectorizable_store): Remove unused first_stmt_vinfo variable.
1302         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
1303         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
1304         variable.
1305         (vect_permute_store_chain): Remove unused scalar_dest variable.
1306         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
1307         variable.
1308         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
1309         local_info variable.
1310         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
1311         variable.
1312         * optabs.c (expand_binop): Remove unused equiv_value variable.
1313         (emit_libcall_block): Remove unused prev variable.
1314         (init_optabs): Remove unused int_mode variable.
1315         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
1316         variable.
1317         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
1318         (find_func_aliases): Remove unused rhstype variable.
1319         (ipa_pta_execute): Remove unused varid variable.
1320
1321 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1322
1323         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
1324
1325 2009-11-28  David Binderman  <dcb314@hotmail.com>
1326
1327         * ira-color.c (put_allocno_into_bucket): Remove set but not used
1328         local variable hard_regs_num.
1329         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
1330         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
1331         * lower-subreg.c (decompose_multiword_subregs): Remove next.
1332
1333 2009-11-27  Martin Jambor  <mjambor@suse.cz>
1334
1335         PR middle-end/42006
1336         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
1337         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
1338         for vector and complex types.
1339         (get_adjustment_for_base): Describe return value in the comment.
1340
1341 2009-11-27  Nick Clifton  <nickc@redhat.com>
1342
1343         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
1344         (COUNT_LEADING_ZEROS_0): Likewise.
1345         * config/stormy16/stormy16-lib2.c: Arrange for separate
1346         compilation of each function.
1347         (__ffshi2): New function.
1348         (__stormy16_count_leading_zeros): New function.
1349         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
1350         compile each function into its own object file.
1351         (stormy16-lib2-ashlsi3.c): New stub file.
1352         (stormy16-lib2-ashrsi3.c): New stub file.
1353         (stormy16-lib2-clzhi2.c): New stub file.
1354         (stormy16-lib2-count-leading-zeros.c): New stub file.
1355         (stormy16-lib2-ctzhi2.c): New stub file.
1356         (stormy16-lib2-divsi3.c): New stub file.
1357         (stormy16-lib2-ffshi2.c): New stub file.
1358         (stormy16-lib2-lshrsi3.c): New stub file.
1359         (stormy16-lib2-modsi3.c): New stub file.
1360         (stormy16-lib2-parityhi2.c): New stub file.
1361         (stormy16-lib2-popcounthi2.c): New stub file.
1362         (stormy16-lib2-udivmodsi4.c): New stub file.
1363         (stormy16-lib2-udivsi3.c): New stub file.
1364         (stormy16-lib2-umodsi3.c): New stub file.
1365
1366 2009-11-27  Richard Henderson  <rth@redhat.com>
1367
1368         * config/i386/sse.md (vec_interleave_highv16qi,
1369         vec_interleave_lowv16qi, vec_interleave_highv8hi,
1370         vec_interleave_lowv8hi, vec_interleave_highv4si,
1371         vec_interleave_lowv4si, vec_interleave_highv2di,
1372         vec_interleave_lowv2di, vec_interleave_highv4sf,
1373         vec_interleave_lowv4sf, vec_interleave_highv2df,
1374         vec_interleave_lowv2df): Remove expanders.
1375         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
1376         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
1377         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
1378         Rename to their proper vec_interleave equivalent.  Update all users
1379         to the new name.
1380         * config/i386/i386.c, config/i386/i386.md: Update all users.
1381
1382 2009-11-27  Michael Matz  <matz@suse.de>
1383
1384         PR rtl-optimization/42084
1385         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
1386         use it to stop walking.
1387         (expand_gimple_cond): Adjust call to above.
1388
1389 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1390
1391         PR target/41810
1392         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
1393         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
1394         __extension__ to allow cast from function pointer to object
1395         pointer in C++.
1396         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
1397
1398 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
1399
1400         * config/ia64/itanium1.md: Remove.
1401         * config/ia64/ia64.md: Do not include it.
1402         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
1403         "itanium1", and "merced" from the processor alias table.
1404         (clocks, add_cycles): Remove global variables.
1405         (ia64_sched_reorder2): Don't set/use them.
1406         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
1407         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
1408
1409 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1410
1411         * config/s390/s390.c (last_scheduled_insn): New variable.
1412         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
1413         functions.
1414         (s390_sched_reorder, s390_sched_variable_issue): New functions.
1415         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
1416         defined.
1417
1418 2009-11-27  Michael Matz  <matz@suse.de>
1419
1420         PR c++/41906
1421         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
1422
1423 2009-11-27  Richard Guenther  <rguenther@suse.de>
1424
1425         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
1426         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
1427         * loop-init.c (pass_rtl_move_loop_invariants): Use
1428         TV_LOOP_MOVE_INVARIANTS.
1429         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
1430         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
1431         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
1432
1433 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
1434
1435         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
1436
1437 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
1438
1439         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
1440         unused insn variable.
1441         * genemit.c (output_peephole2_scratches): Only declare and initialize
1442         _regs_allocated if it will be ever used.
1443         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
1444         succ_bb variable.
1445         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
1446         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
1447         variable.
1448
1449         * opts.c (decode_options): If optimize is bigger than 255,
1450         set it to 255.
1451
1452 2009-11-26  Richard Henderson  <rth@redhat.com>
1453
1454         * config/i386/sse.md (mulv16qi3): Change back from an expander
1455         to an insn-and-split.
1456         (mulv4si): Mention AVX not XOP for AVX exception.
1457         (*sse2_mulv4si3): Likewise.
1458         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
1459
1460 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
1461
1462         * cfgexpand (n_stack_vars_conflict): New static variable.
1463         (triangular_index): Reduce likelyhood of overflow by performing
1464         the division before the multiplication.
1465         (resize_stack_vars_conflict): Call fatal_error if overflow
1466         occurred in triangular_index.  Update n_stack_vars_conflict.
1467
1468         PR rtl-opt/38582
1469         * regrename.c (struct du_chain): Remove member earlyclobber.
1470         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
1471         all callers changed.
1472         (scan_rtx): Remove argument earlyclobber, all callers changed.
1473         (hide_operands, restore_operands, record_out_operands): New functions,
1474         broken out of build_def_use.
1475         (build_def_use): Call them as necessary.
1476
1477         * regrename.c (struct du_head): New members id, conflicts,
1478         hard_conflicts and cannot_rename.
1479         (enum scan_actions): Remove terminate_all_read and
1480         terminate_overlapping_read; add mark_all_read.
1481         (scan_actions_name): Likewise.
1482         (du_head_p): New typedef.  Define a vector type for it.
1483         (id_to_chain): New static variable.
1484         (note_sets, clear_dead_regs): Delete functions.
1485         (free_chain_data): New function.
1486         (merge_overlapping_regs): Simply walk the conflicts bitmap.
1487         Remove argument B, all callers changed.
1488         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
1489         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
1490         Call free_chain_data when done.
1491         (do_replace): Remove death notes when the renamed reg is set in the
1492         last insn; add them if not.
1493         (mark_conflict, note_sets_clobbers): New static function.
1494         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
1495         static variables.
1496         (scan_rtx_reg): Keep track of conflicts between chains, and between
1497         chains and hard regs.  Don't terminate chains when we find a read we
1498         can't handle, mark it unrenameable instead.  For terminate_write,
1499         terminate chains that are written with an exact match or a superset
1500         of registers.  Set fail_current_block if multi-word lifetimes are too
1501         complex to handle.
1502         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
1503         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
1504         free memory for them when done.
1505         Rearrange the steps so that earlyclobbers are noted before reads
1506         are processed.  Add new steps to keep track of hard register lifetimes
1507         outside insn operands.
1508
1509 2009-11-26  Richard Guenther  <rguenther@suse.de>
1510
1511         * tree-ssa-dce.c (nr_walks): New variable.
1512         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
1513         (perform_tree_ssa_dce): Init nr_walks.
1514
1515 2009-11-26  Michael Matz  <matz@suse.de>
1516
1517         PR tree-optimization/41905
1518         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
1519         below statements that can't fall thru.
1520
1521 2009-11-26  Michael Matz  <matz@suse.de>
1522
1523         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
1524         expand_builtin_sprintf): Remove.
1525         (expand_builtin): Don't call them.
1526
1527 2009-11-26  Richard Guenther  <rguenther@suse.de>
1528
1529         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
1530
1531 2009-11-26  Nick Clifton  <nickc@redhat.com>
1532
1533         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
1534         being used incorrectly.
1535         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
1536         sibcalls, or sibcalls from interrupt functions.
1537         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1538         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
1539         for a MEM inside a MEM.
1540         (sibcall_value): Likewise.
1541         (sibcall_internal): New pattern containing old sibcall pattern.
1542         (sibcall_value_internal): Likewise.
1543
1544 2009-11-25  Richard Henderson  <rth@redhat.com>
1545
1546         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
1547         optional 3rd argument to define the mode.
1548         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
1549         (V2UDI, V4USI, V8UHI, V16UQI): New.
1550         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
1551         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
1552         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
1553         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
1554         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
1555         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
1556         (bdesc_args): Add the builtin definitions to match.
1557         (ix86_expand_builtin): Expand them.
1558         (ix86_builtin_vectorization_cost): Rename from
1559         x86_builtin_vectorization_cost.
1560         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
1561         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
1562         expand_vec_perm_blend, expand_vec_perm_vpermil,
1563         expand_vec_perm_pshufb, expand_vec_perm_1,
1564         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
1565         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
1566         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
1567         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
1568         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
1569         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
1570         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1571         * sse.md (SSEMODE_EO): New.
1572         (vec_extract_even<mode>): Use SSEMODE_EO and
1573         ix86_expand_vec_extract_even_odd.
1574         (vec_extract_odd<mode>): Likewise.
1575         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
1576         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
1577
1578 2009-11-25  Richard Henderson  <rth@redhat.com>
1579
1580         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
1581         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
1582         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
1583         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
1584         the vector constant here...
1585         (vect_transform_slp_perm_load): ... do it here instead.  Validate
1586         that the permutation vector is implementable by the target.
1587
1588 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
1589
1590         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
1591         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
1592
1593         * print-rtl.c (print_rtx): When printing newline, append
1594         print_rtx_head and indentation after the newline.
1595
1596         PR target/42165
1597         * config/i386/i386.c (print_operand): For 32-byte memory use
1598         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
1599         * config/i386/i386.md (crc32modesuffix): Expand to nothing
1600         in -masm=intel mode.
1601         (sse4_2_crc32di): Print just crc32 instead of crc32q in
1602         -masm=intel mode.
1603         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
1604         memory operand in -masm=intel mode.
1605         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
1606         *sse2_pinsrw): Likewise.
1607         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
1608         q suffix in -masm=intel mode.
1609
1610 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1611
1612         PR target/10127
1613         PR ada/20548
1614         PR middle-end/42004
1615         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
1616         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
1617         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
1618         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
1619         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
1620         above renaming.
1621         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
1622
1623 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1624
1625         * config/i386/predicates.md (emms_operation): New predicate.
1626         (vzeroupper_operation): Ditto.
1627         (vzeroall_operation): Improve pattern recognition.
1628         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
1629         (avx_vzeroupper): Change insn pattern to expander.
1630         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
1631         predicate.
1632         (*avx_vzeroall): Remove operands 1 and 2.
1633         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
1634         (mmx_femms): Ditto.
1635         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
1636         (*mmx_femms): Ditto.
1637         * config/i386/i386.c (enum ix86_builtins)
1638         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
1639         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
1640         Remove initailization.
1641         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
1642
1643 2009-11-25  Paul Brook  <paul@codesourcery.com>
1644
1645         * config/arm/arm.md (consttable_4): Handle (high ...).
1646
1647 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
1648             Richard Earnshaw  <rearnsha@arm.com>
1649
1650         * arm.h (enum vfp_reg_type): Add VFP_NONE.
1651         * arm.c (all_fpus): Use it for floating point units that aren't based
1652         on the VFP architecture.
1653         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
1654         enum machine_mode.
1655
1656 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1657
1658         * alias.c: Remove trailing white spaces.
1659         * alloc-pool.c: Likewise.
1660         * alloc-pool.h: Likewise.
1661         * attribs.c: Likewise.
1662         * auto-inc-dec.c: Likewise.
1663         * basic-block.h: Likewise.
1664         * bb-reorder.c: Likewise.
1665         * bt-load.c: Likewise.
1666         * builtins.c: Likewise.
1667         * builtins.def: Likewise.
1668         * c-common.c: Likewise.
1669         * c-common.h: Likewise.
1670         * c-cppbuiltin.c: Likewise.
1671         * c-decl.c: Likewise.
1672         * c-format.c: Likewise.
1673         * c-lex.c: Likewise.
1674         * c-omp.c: Likewise.
1675         * c-opts.c: Likewise.
1676         * c-parser.c: Likewise.
1677         * c-pretty-print.c: Likewise.
1678         * c-tree.h: Likewise.
1679         * c-typeck.c: Likewise.
1680         * caller-save.c: Likewise.
1681         * calls.c: Likewise.
1682         * cfg.c: Likewise.
1683         * cfganal.c: Likewise.
1684         * cfgexpand.c: Likewise.
1685         * cfghooks.c: Likewise.
1686         * cfghooks.h: Likewise.
1687         * cfglayout.c: Likewise.
1688         * cfgloop.c: Likewise.
1689         * cfgloop.h: Likewise.
1690         * cfgloopmanip.c: Likewise.
1691         * cfgrtl.c: Likewise.
1692         * cgraph.c: Likewise.
1693         * cgraph.h: Likewise.
1694         * cgraphbuild.c: Likewise.
1695         * cgraphunit.c: Likewise.
1696         * cif-code.def: Likewise.
1697         * collect2.c: Likewise.
1698         * combine.c: Likewise.
1699         * convert.c: Likewise.
1700         * coverage.c: Likewise.
1701         * crtstuff.c: Likewise.
1702         * cse.c: Likewise.
1703         * cselib.c: Likewise.
1704         * dbgcnt.c: Likewise.
1705         * dbgcnt.def: Likewise.
1706         * dbgcnt.h: Likewise.
1707         * dbxout.c: Likewise.
1708         * dce.c: Likewise.
1709         * ddg.c: Likewise.
1710         * ddg.h: Likewise.
1711         * defaults.h: Likewise.
1712         * df-byte-scan.c: Likewise.
1713         * df-core.c: Likewise.
1714         * df-problems.c: Likewise.
1715         * df-scan.c: Likewise.
1716         * df.h: Likewise.
1717         * dfp.c: Likewise.
1718         * diagnostic.c: Likewise.
1719         * diagnostic.h: Likewise.
1720         * dominance.c: Likewise.
1721         * domwalk.c: Likewise.
1722         * double-int.c: Likewise.
1723         * double-int.h: Likewise.
1724         * dse.c: Likewise.
1725         * dwarf2asm.c: Likewise.
1726         * dwarf2asm.h: Likewise.
1727         * dwarf2out.c: Likewise.
1728         * ebitmap.c: Likewise.
1729         * ebitmap.h: Likewise.
1730         * emit-rtl.c: Likewise.
1731         * et-forest.c: Likewise.
1732         * except.c: Likewise.
1733         * except.h: Likewise.
1734         * expmed.c: Likewise.
1735         * expr.c: Likewise.
1736         * expr.h: Likewise.
1737         * final.c: Likewise.
1738         * flags.h: Likewise.
1739         * fold-const.c: Likewise.
1740         * function.c: Likewise.
1741         * function.h: Likewise.
1742         * fwprop.c: Likewise.
1743         * gcc.c: Likewise.
1744         * gcov-dump.c: Likewise.
1745         * gcov-io.c: Likewise.
1746         * gcov-io.h: Likewise.
1747         * gcov.c: Likewise.
1748         * gcse.c: Likewise.
1749         * genattr.c: Likewise.
1750         * genattrtab.c: Likewise.
1751         * genautomata.c: Likewise.
1752         * genchecksum.c: Likewise.
1753         * genconfig.c: Likewise.
1754         * genflags.c: Likewise.
1755         * gengtype-parse.c: Likewise.
1756         * gengtype.c: Likewise.
1757         * gengtype.h: Likewise.
1758         * genmddeps.c: Likewise.
1759         * genmodes.c: Likewise.
1760         * genopinit.c: Likewise.
1761         * genpreds.c: Likewise.
1762         * gensupport.c: Likewise.
1763         * ggc-common.c: Likewise.
1764         * ggc-page.c: Likewise.
1765         * ggc-zone.c: Likewise.
1766         * ggc.h: Likewise.
1767         * gimple-iterator.c: Likewise.
1768         * gimple-low.c: Likewise.
1769         * gimple-pretty-print.c: Likewise.
1770         * gimple.c: Likewise.
1771         * gimple.def: Likewise.
1772         * gimple.h: Likewise.
1773         * gimplify.c: Likewise.
1774         * graphds.c: Likewise.
1775         * graphite-clast-to-gimple.c: Likewise.
1776         * gthr-nks.h: Likewise.
1777         * gthr-posix.c: Likewise.
1778         * gthr-posix.h: Likewise.
1779         * gthr-posix95.h: Likewise.
1780         * gthr-single.h: Likewise.
1781         * gthr-tpf.h: Likewise.
1782         * gthr-vxworks.h: Likewise.
1783         * gthr.h: Likewise.
1784         * haifa-sched.c: Likewise.
1785         * hard-reg-set.h: Likewise.
1786         * hooks.c: Likewise.
1787         * hooks.h: Likewise.
1788         * hosthooks.h: Likewise.
1789         * hwint.h: Likewise.
1790         * ifcvt.c: Likewise.
1791         * incpath.c: Likewise.
1792         * init-regs.c: Likewise.
1793         * integrate.c: Likewise.
1794         * ipa-cp.c: Likewise.
1795         * ipa-inline.c: Likewise.
1796         * ipa-prop.c: Likewise.
1797         * ipa-pure-const.c: Likewise.
1798         * ipa-reference.c: Likewise.
1799         * ipa-struct-reorg.c: Likewise.
1800         * ipa-struct-reorg.h: Likewise.
1801         * ipa-type-escape.c: Likewise.
1802         * ipa-type-escape.h: Likewise.
1803         * ipa-utils.c: Likewise.
1804         * ipa-utils.h: Likewise.
1805         * ipa.c: Likewise.
1806         * ira-build.c: Likewise.
1807         * ira-color.c: Likewise.
1808         * ira-conflicts.c: Likewise.
1809         * ira-costs.c: Likewise.
1810         * ira-emit.c: Likewise.
1811         * ira-int.h: Likewise.
1812         * ira-lives.c: Likewise.
1813         * ira.c: Likewise.
1814         * jump.c: Likewise.
1815         * lambda-code.c: Likewise.
1816         * lambda-mat.c: Likewise.
1817         * lambda-trans.c: Likewise.
1818         * lambda.h: Likewise.
1819         * langhooks.c: Likewise.
1820         * lcm.c: Likewise.
1821         * libgcov.c: Likewise.
1822         * lists.c: Likewise.
1823         * loop-doloop.c: Likewise.
1824         * loop-init.c: Likewise.
1825         * loop-invariant.c: Likewise.
1826         * loop-iv.c: Likewise.
1827         * loop-unroll.c: Likewise.
1828         * lower-subreg.c: Likewise.
1829         * lto-cgraph.c: Likewise.
1830         * lto-compress.c: Likewise.
1831         * lto-opts.c: Likewise.
1832         * lto-section-in.c: Likewise.
1833         * lto-section-out.c: Likewise.
1834         * lto-streamer-in.c: Likewise.
1835         * lto-streamer-out.c: Likewise.
1836         * lto-streamer.c: Likewise.
1837         * lto-streamer.h: Likewise.
1838         * lto-symtab.c: Likewise.
1839         * lto-wpa-fixup.c: Likewise.
1840         * matrix-reorg.c: Likewise.
1841         * mcf.c: Likewise.
1842         * mode-switching.c: Likewise.
1843         * modulo-sched.c: Likewise.
1844         * omega.c: Likewise.
1845         * omega.h: Likewise.
1846         * omp-low.c: Likewise.
1847         * optabs.c: Likewise.
1848         * optabs.h: Likewise.
1849         * opts-common.c: Likewise.
1850         * opts.c: Likewise.
1851         * params.def: Likewise.
1852         * params.h: Likewise.
1853         * passes.c: Likewise.
1854         * plugin.c: Likewise.
1855         * postreload-gcse.c: Likewise.
1856         * postreload.c: Likewise.
1857         * predict.c: Likewise.
1858         * predict.def: Likewise.
1859         * pretty-print.c: Likewise.
1860         * pretty-print.h: Likewise.
1861         * print-rtl.c: Likewise.
1862         * print-tree.c: Likewise.
1863         * profile.c: Likewise.
1864         * read-rtl.c: Likewise.
1865         * real.c: Likewise.
1866         * recog.c: Likewise.
1867         * reg-stack.c: Likewise.
1868         * regcprop.c: Likewise.
1869         * reginfo.c: Likewise.
1870         * regmove.c: Likewise.
1871         * regrename.c: Likewise.
1872         * regs.h: Likewise.
1873         * regstat.c: Likewise.
1874         * reload.c: Likewise.
1875         * reload1.c: Likewise.
1876         * resource.c: Likewise.
1877         * rtl.c: Likewise.
1878         * rtl.def: Likewise.
1879         * rtl.h: Likewise.
1880         * rtlanal.c: Likewise.
1881         * sbitmap.c: Likewise.
1882         * sched-deps.c: Likewise.
1883         * sched-ebb.c: Likewise.
1884         * sched-int.h: Likewise.
1885         * sched-rgn.c: Likewise.
1886         * sched-vis.c: Likewise.
1887         * sdbout.c: Likewise.
1888         * sel-sched-dump.c: Likewise.
1889         * sel-sched-dump.h: Likewise.
1890         * sel-sched-ir.c: Likewise.
1891         * sel-sched-ir.h: Likewise.
1892         * sel-sched.c: Likewise.
1893         * sel-sched.h: Likewise.
1894         * sese.c: Likewise.
1895         * sese.h: Likewise.
1896         * simplify-rtx.c: Likewise.
1897         * stack-ptr-mod.c: Likewise.
1898         * stmt.c: Likewise.
1899         * stor-layout.c: Likewise.
1900         * store-motion.c: Likewise.
1901         * stringpool.c: Likewise.
1902         * stub-objc.c: Likewise.
1903         * sync-builtins.def: Likewise.
1904         * target-def.h: Likewise.
1905         * target.h: Likewise.
1906         * targhooks.c: Likewise.
1907         * targhooks.h: Likewise.
1908         * timevar.c: Likewise.
1909         * tlink.c: Likewise.
1910         * toplev.c: Likewise.
1911         * toplev.h: Likewise.
1912         * tracer.c: Likewise.
1913         * tree-affine.c: Likewise.
1914         * tree-affine.h: Likewise.
1915         * tree-browser.def: Likewise.
1916         * tree-call-cdce.c: Likewise.
1917         * tree-cfg.c: Likewise.
1918         * tree-cfgcleanup.c: Likewise.
1919         * tree-chrec.c: Likewise.
1920         * tree-chrec.h: Likewise.
1921         * tree-complex.c: Likewise.
1922         * tree-data-ref.c: Likewise.
1923         * tree-data-ref.h: Likewise.
1924         * tree-dfa.c: Likewise.
1925         * tree-dump.c: Likewise.
1926         * tree-dump.h: Likewise.
1927         * tree-eh.c: Likewise.
1928         * tree-flow-inline.h: Likewise.
1929         * tree-flow.h: Likewise.
1930         * tree-if-conv.c: Likewise.
1931         * tree-inline.c: Likewise.
1932         * tree-into-ssa.c: Likewise.
1933         * tree-loop-distribution.c: Likewise.
1934         * tree-loop-linear.c: Likewise.
1935         * tree-mudflap.c: Likewise.
1936         * tree-nested.c: Likewise.
1937         * tree-nomudflap.c: Likewise.
1938         * tree-nrv.c: Likewise.
1939         * tree-object-size.c: Likewise.
1940         * tree-optimize.c: Likewise.
1941         * tree-outof-ssa.c: Likewise.
1942         * tree-parloops.c: Likewise.
1943         * tree-pass.h: Likewise.
1944         * tree-phinodes.c: Likewise.
1945         * tree-predcom.c: Likewise.
1946         * tree-pretty-print.c: Likewise.
1947         * tree-profile.c: Likewise.
1948         * tree-scalar-evolution.c: Likewise.
1949         * tree-ssa-address.c: Likewise.
1950         * tree-ssa-alias.c: Likewise.
1951         * tree-ssa-ccp.c: Likewise.
1952         * tree-ssa-coalesce.c: Likewise.
1953         * tree-ssa-copy.c: Likewise.
1954         * tree-ssa-copyrename.c: Likewise.
1955         * tree-ssa-dce.c: Likewise.
1956         * tree-ssa-dom.c: Likewise.
1957         * tree-ssa-dse.c: Likewise.
1958         * tree-ssa-forwprop.c: Likewise.
1959         * tree-ssa-ifcombine.c: Likewise.
1960         * tree-ssa-live.c: Likewise.
1961         * tree-ssa-live.h: Likewise.
1962         * tree-ssa-loop-ch.c: Likewise.
1963         * tree-ssa-loop-im.c: Likewise.
1964         * tree-ssa-loop-ivcanon.c: Likewise.
1965         * tree-ssa-loop-ivopts.c: Likewise.
1966         * tree-ssa-loop-manip.c: Likewise.
1967         * tree-ssa-loop-niter.c: Likewise.
1968         * tree-ssa-loop-prefetch.c: Likewise.
1969         * tree-ssa-loop-unswitch.c: Likewise.
1970         * tree-ssa-loop.c: Likewise.
1971         * tree-ssa-math-opts.c: Likewise.
1972         * tree-ssa-operands.c: Likewise.
1973         * tree-ssa-operands.h: Likewise.
1974         * tree-ssa-phiopt.c: Likewise.
1975         * tree-ssa-phiprop.c: Likewise.
1976         * tree-ssa-pre.c: Likewise.
1977         * tree-ssa-propagate.c: Likewise.
1978         * tree-ssa-reassoc.c: Likewise.
1979         * tree-ssa-sccvn.c: Likewise.
1980         * tree-ssa-sink.c: Likewise.
1981         * tree-ssa-structalias.c: Likewise.
1982         * tree-ssa-ter.c: Likewise.
1983         * tree-ssa-threadedge.c: Likewise.
1984         * tree-ssa-threadupdate.c: Likewise.
1985         * tree-ssa-uncprop.c: Likewise.
1986         * tree-ssa.c: Likewise.
1987         * tree-ssanames.c: Likewise.
1988         * tree-switch-conversion.c: Likewise.
1989         * tree-tailcall.c: Likewise.
1990         * tree-vect-data-refs.c: Likewise.
1991         * tree-vect-generic.c: Likewise.
1992         * tree-vect-loop-manip.c: Likewise.
1993         * tree-vect-loop.c: Likewise.
1994         * tree-vect-patterns.c: Likewise.
1995         * tree-vect-slp.c: Likewise.
1996         * tree-vect-stmts.c: Likewise.
1997         * tree-vectorizer.c: Likewise.
1998         * tree-vectorizer.h: Likewise.
1999         * tree-vrp.c: Likewise.
2000         * tree.c: Likewise.
2001         * tree.def: Likewise.
2002         * tree.h: Likewise.
2003         * treestruct.def: Likewise.
2004         * unwind-compat.c: Likewise.
2005         * unwind-dw2-fde-glibc.c: Likewise.
2006         * unwind-dw2.c: Likewise.
2007         * value-prof.c: Likewise.
2008         * value-prof.h: Likewise.
2009         * var-tracking.c: Likewise.
2010         * varasm.c: Likewise.
2011         * varpool.c: Likewise.
2012         * vec.c: Likewise.
2013         * vec.h: Likewise.
2014         * vmsdbgout.c: Likewise.
2015         * web.c: Likewise.
2016         * xcoffout.c: Likewise.
2017
2018 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2019
2020         * pa.c (output_call): Only use sr4 for long interspace calls if
2021         call binds local and generating non PIC code.
2022         (attr_length_call): Adjust length calculation for above.
2023
2024 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
2025
2026         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
2027         (add<mode>3_carry): Change operand order of plus RTX.
2028         (*add<mode>3_carry): Ditto.
2029         (*addsi3_carry_zext): Ditto.
2030         (*add<dwi>3_doubleword): Update for changed operand order.
2031         (*negti2_1 splitter): Ditto.
2032         (*negdi2_1 splitter): Ditto.
2033         (<plusminus_insn><mode>3_carry): Macroize expander from
2034         {add,sub}<mode>3_carry patterns using plusminus code iterator.
2035         (*<plusminus_insn><mode>3_carry): Macroize insn from
2036         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
2037         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
2038         patterns using SDWIM mode iterator.
2039         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
2040         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
2041         using DWIH mode iterator.
2042         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
2043         using SWI mode iterator.
2044         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
2045         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
2046         patterns using SWIM mode iterator.
2047         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
2048         patterns using SWI248 mode iterator.
2049         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
2050         patterns using SWI mode iterator.
2051         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
2052         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
2053
2054 2009-11-24  Michael Matz  <matz@suse.de>
2055
2056         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
2057
2058 2009-11-24  David Binderman  <dcb314@hotmail.com>
2059
2060         * expr.c (store_field): Remove set but not used local variable
2061         width_mask.
2062         (expand_expr_real_2): Remove treeop2.
2063         * gcse.c (update_ld_motion_stores): Remove new_rtx.
2064         * haifa-sched.c (max_issue): Remove points.
2065         (sched_create_recovery_edges): Remove e.
2066         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
2067
2068 2009-11-24  Nick Clifton  <nickc@redhat.com>
2069
2070         * config/v850/v850.c (function_arg): Fix handling of zero-length
2071         function arguments.
2072
2073 2009-11-24  Michael Matz  <matz@suse.de>
2074
2075         * tree.h (union tree_ann_d): Don't declare.
2076         (tree_base): Remove ann field.
2077         (struct var_ann_d): Declare forward.
2078         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
2079         (DECL_VAR_ANN_PTR): New macro.
2080         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
2081         accept only VAR, PARM or RESULT decls.
2082         (create_tree_common_ann): Remove.
2083         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
2084         * tree-eh.c (lookup_expr_eh_lp): Remove.
2085         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
2086         DECL_VAR_ANN_PTR.
2087         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
2088         * tree-flow.h (enum tree_ann_type): Remove.
2089         (struct tree_ann_common_d): Remove.
2090         (struct var_ann_d): Remove common field.
2091         (union tree_ann_d): Remove.
2092         (tree_ann_t, tree_ann_common_t): Remove typedefs.
2093         (tree_common_ann, get_tree_common_ann, ann_type,
2094         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
2095         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
2096         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
2097         * builtins.c (expand_builtin_memcpy): Use
2098         currently_expanding_gimple_stmt instead of tree annotation.
2099         (expand_builtin_memset_args): Ditto.
2100         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
2101         (expand_call_stmt): Don't set tree annotation.
2102         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
2103         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
2104         * gimple.h (currently_expanding_gimple_stmt): Declare.
2105
2106 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
2107
2108         * dwarf2out.c (add_location_or_const_value_attribute): Remove
2109         useless NOTE_VAR_LOCATION_STATUS call.
2110         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
2111
2112 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
2113
2114         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
2115         being called recursively.
2116
2117 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
2118
2119         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
2120         $(MD5_H) params.def params.h prefix.h tree-inline.h.
2121
2122 2009-11-24  Paul Brook  <paul@codesourcery.com>
2123
2124         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
2125         typo.
2126
2127 2009-11-24  Julian Brown  <julian@codesourcery.com>
2128             Paul Brook  <paul@codesourcery.com>
2129
2130         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
2131         (arm_dwarf_register_span): New function.
2132         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
2133
2134 2009-11-24  David Binderman  <dcb314@hotmail.com>
2135
2136         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
2137         local variable bb_note.
2138         * dominance.c (get_dominated_by): Likewise local var n.
2139         (output_file_names): Likewise local var idx.
2140         (add_location_or_const_value_attribute): Likewise local var status.
2141         * dwarf2out.c (gen_variable_die): Likewise local var field.
2142         * emit-rtl.c (no_line_numbers): Remove.
2143         (init_emit_once): Remove line_numbers parameter.
2144         * rtl.h (init_emit_once): Adjust prototype.
2145         * toplev.c (backend_init): Adjust init_emit_once call.
2146
2147 2009-11-24  Richard Guenther  <rguenther@suse.de>
2148
2149         PR tree-optimization/42142
2150         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
2151         Handle iv-dependent (non-)kills properly.
2152         (mark_aliased_reaching_defs_necessary): Pass the basic-block
2153         of the reference statement to mark_aliased_reaching_defs_necessary_1.
2154
2155 2009-11-24  Martin Jambor  <mjambor@suse.cz>
2156
2157         PR tree-optimization/42154
2158         * tree-sra.c (struct access): Added comments.
2159         (sra_modify_expr): Build references to the old aggregate with
2160         build_ref_for_offset instead of reusing access->expr.
2161         (load_assign_lhs_subreplacements): Likewise.
2162
2163 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
2164
2165         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
2166         to expander.
2167         (sub<mode>3_carry): Ditto.
2168         (x86_mov<mode>cc_0_m1): Ditto.
2169         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
2170         for ix86_carry_flag_operator operator predicate.
2171         (*sub<mode>3_carry): Ditto.
2172         (*x86_mov<mode>cc_0_m1): Ditto.
2173         (*addsi3_carry_zext): Use VOIDmode match_operator for
2174         ix86_carry_flag_operator operator predicate.
2175         (*subsi3_carry_zext): Ditto.
2176         (*x86_mov<mode>cc_0_m1_s): Ditto.
2177         (*x86_mov<mode>cc_0_m1_neg): Ditto.
2178         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
2179         check operator sub-expressions for FLAGS_REG and const0_rtx.
2180         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
2181         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
2182         (ix86_expand_int_addcc): Update calls to
2183         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
2184         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
2185         Do not set mode of compare operation.
2186
2187 2009-11-23  Jan Hubicka  <jh@suse.cz>
2188
2189         PR middle-end/42151
2190         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
2191         twice.
2192
2193 2009-11-23  Jan Hubicka  <jh@suse.cz>
2194
2195         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
2196         wrong profile updates.
2197         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
2198         having largest frequency.
2199         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
2200         used uninitalized warning.
2201         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
2202         frequencies.
2203
2204 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
2205
2206         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
2207         of gen_rtx_REG to generate operand 5.
2208         (*cmp_ssub_sidi): Ditto.
2209
2210 2009-11-23  Richard Henderson  <rth@redhat.com>
2211
2212         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
2213         mismatch.
2214
2215 2009-11-23  Paul Brook  <paul@codesourcery.com>
2216
2217         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
2218         case for noreturn functions.
2219         (arm_compute_save_reg_mask): Remove special noreturn handling.
2220
2221 2009-11-23  Richard Guenther  <rguenther@suse.de>
2222
2223         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
2224         size for DECL bases.
2225
2226 2009-11-22  Richard Henderson  <rth@redhat.com>
2227
2228         * i386.c (avx_vpermilp_parallel): New function.
2229         * i386-protos.h: Declare it.
2230         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
2231         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
2232         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
2233         (ssescalarnum, ssedoublesizemode): Add AVX modes.
2234         (vpermilbits): Remove.
2235         (avx_vpermil<mode>): Change insns to expanders.
2236         (*avx_vpermil<mode>): New.  Use vec_select.
2237
2238 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
2239
2240         * opts.c (decode_options): Don't enable flag_schedule_insns
2241         when optimizing for size.
2242         * doc/invoke.texi: Document change.
2243
2244 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
2245
2246         PR target/42113
2247         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
2248         of scratch register to SImode.
2249         (*cmp_sadd_sidi): Ditto.
2250         (*cmp_ssub_si): Ditto.
2251         (*cmp_ssub_sidi): Ditto.
2252
2253 2009-11-21  Ian Lance Taylor  <iant@google.com>
2254
2255         * Makefile.in (HOST_LIBS): Move higher in file.
2256         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
2257         is not empty, set to $(CC) and $(CFLAGS).
2258
2259 2009-11-22  Martin Jambor  <mjambor@suse.cz>
2260
2261         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
2262         V_C_E of an SSA_NAME or an invariant if lvalue is required.
2263         (verify_gimple_call): Verify LHS also with with
2264         verify_types_in_gimple_reference.
2265
2266 2009-11-21  Martin Jambor  <mjambor@suse.cz>
2267
2268         PR middle-end/42025
2269         * tree-sra.c (access_precludes_ipa_sra_p): New function.
2270         (splice_param_accesses): Check all accesses by calling
2271         access_precludes_ipa_sra_p.
2272         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
2273         not convert types if it is true.
2274         (sra_ipa_modify_assign): Convert types in case of mismatch.
2275
2276 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
2277
2278         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
2279         for operand 1.
2280
2281 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
2282
2283         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
2284         (mips_mulsidi3_gen_fn): Declare new function.
2285         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
2286         * config/mips/mips.md (<u>mulsidi3): Change condition to use
2287         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
2288         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
2289         (mulsidi3_64bit_dmul): New define_insn.
2290
2291 2009-11-21  Ben Elliston  <bje@au.ibm.com>
2292
2293         * gengtype-lex.l: Enable noinput flex option.
2294         (YY_NO_INPUT): Remove define.
2295
2296 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
2297
2298         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
2299         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
2300         (insert_debug_temps_for_defs): Handle PHI nodes.
2301         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
2302         SSA names.
2303
2304 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
2305
2306         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
2307         after remove_phi_node.
2308
2309 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
2310
2311         PR tree-optimization/42078
2312         * gimple.h (gimple_replace_lhs): New declaration.
2313         * gimple.c (gimple_replace_lhs): New function.
2314         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
2315         modifying the call.
2316
2317 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
2318
2319         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
2320         (xop_mulv2div2di3_low): Same.
2321         (*xop_pmacsdqh_mem): Same.
2322
2323 2009-11-20  Richard Henderson  <rth@redhat.com>
2324
2325         * config/i386/i386-builtin-types.awk: New file.
2326         * config/i386/i386-builtin-types.def: New file.
2327         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
2328         * config/i386/i386.c: Include it.
2329         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
2330         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
2331         (struct builtin_isa): Remove GTY marker.  Replace tree type with
2332         ix86_builtin_func_type; add set_and_not_built_p.
2333         (def_builtin): Change type parameter to tcode; use
2334         ix86_get_builtin_func_type; update all callers.  Accept zero mask
2335         to mean the builtin is unconditionally available.
2336         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
2337         being set to NULL.
2338         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
2339         Update some users to rationalized enumeration codes from new include.
2340         (enum multi_arg_type): Remove.  Replace all enumeration values
2341         with defines to new ix86_builtin_func_type.
2342         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
2343         all type resolution to def_builtin.
2344         (ix86_init_builtin_types): Split out from ...
2345         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
2346
2347 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
2348
2349         PR target/41787
2350         * config/rs6000/rs6000.c (struct machine_function): Revert
2351         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
2352         (rs6000_expand_to_rtl_hook): Ditto.
2353         (rs6000_check_vector_mode): Ditto.
2354         (compute_vrsave_mask): Ditto.
2355
2356 2009-11-20  Paul Brook  <paul@codesourcery.com>
2357
2358         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
2359         * config/arm/arm-cores.def: Add cortex-a5.
2360         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
2361         * config/arm/arm-tune.md: Regenerate.
2362
2363 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
2364
2365         PR middle-end/39960
2366         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
2367         (ref_pos): New field in structure.
2368         (insert_new_var_in_stmt): New function.
2369
2370
2371 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2372
2373         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
2374         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
2375         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
2376         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
2377         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2378         INT_LEAST64_TYPE): Define.
2379         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
2380         UINT_LEAST64_TYPE): Define.
2381         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
2382         INT_FAST64_TYPE): Define.
2383         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2384         UINT_FAST64_TYPE): Define.
2385         (INTPTR_TYPE, UINTPTR_TYPE): Define.
2386
2387 2009-11-20  Julian Brown  <julian@codesourcery.com>
2388
2389         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
2390         specially for Thumb-1.
2391         (ASM_OUTPUT_REG_POP): Likewise.
2392
2393 2009-11-19  Jason Merrill  <jason@redhat.com>
2394
2395         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
2396
2397 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
2398             Rafael Avila de Espindola  <espindola@google.com>
2399
2400         * doc/plugins.texi (Plugin initialization): Added advices for
2401         retrieving the version of GCC at plugin compilation and loading times.
2402
2403 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
2404
2405         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
2406         (dump_active_plugins): output to file everything. Use
2407         internationalized dump & FMT_FOR_PLUGIN_EVENT.
2408
2409 2009-11-19  Richard Guenther  <rguenther@suse.de>
2410
2411         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
2412         around truth-valued expressions.
2413         * tree.c (free_lang_data): Untangle check for LTO frontend.
2414
2415 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
2416
2417         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
2418         of cgraph_node_for_decl.
2419         * cgraph.h (cgraph_node_for_decl): Remove prototype.
2420         * cgraph.c (cgraph_node_for_decl): Remove.
2421         (cgraph_get_node): Just return NULL if !cgraph_hash.
2422
2423 2009-11-19  Paul Brook  <paul@codesourcery.com>
2424
2425         * config.gcc: Add new ARM --with-fpu options.
2426         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
2427         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
2428
2429 2009-11-18  Richard Guenther  <rguenther@suse.de>
2430
2431         * gimple.h (union gimple_statement_d): Add gsmembase member.
2432         (gimple_vuse_op): Use gsmembase for access.
2433         (gimple_vdef_op): Likewise.
2434         (gimple_vuse): Likewise.
2435         (gimple_vdef): Likewise.
2436         (gimple_vuse_ptr): Likewise.
2437         (gimple_vdef_ptr): Likewise.
2438         (gimple_set_vuse): Likewise.
2439         (gimple_set_vdef): Likewise.
2440         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
2441
2442 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
2443
2444         * doc/arm-neon-intrinsics.texi: Regenerated.
2445
2446 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
2447
2448         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
2449
2450 2009-11-18  Paul Brook  <paul@codesourcery.com>
2451             Daniel Jacobowitz  <dan@codesourcery.com>
2452
2453         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
2454         (arm_arch7em): New variable.
2455         (all_architectures): Add armv7e-m.
2456         (arm_override_options): Set arm_arch7em.
2457         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
2458         Include arm_arch7em.
2459         (arm_arch7em): Declare.
2460
2461 2009-11-18  Richard Guenther  <rguenther@suse.de>
2462
2463         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
2464         a valid field decl if checking is enabled.
2465
2466 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2467
2468         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
2469         (lto_ipa_fixup_call_notes): Declare.
2470         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
2471         (update_call_notes_after_inlining): Copy call stmt uid to the new
2472         edge.
2473         (ipa_write_param_call_note): New function.
2474         (ipa_read_param_call_note): New function
2475         (ipa_write_node_info): Write also param call notes.  Removed a bogus
2476         comment, reformatted to fit 80 columns.
2477         (ipa_read_node_info): Read also param call notes. Removed a bogus
2478         comment.  Remove ipa_edge_args_vector growth.
2479         (lto_ipa_fixup_call_notes): New function.
2480         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
2481         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
2482         inlining regardless of flag_wpa.
2483         (cgraph_decide_inlining_of_small_functions): Likewise.
2484         (cgraph_decide_inlining): Likewise.
2485         (inline_read_summary): Likewise.
2486
2487 2009-11-18  Jan Hubicka  <jh@suse.cz>
2488
2489         * predict.c (compute_function_frequency): Export.
2490         * predict.h (compute_function_frequency): Declare.
2491         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
2492
2493 2009-11-18  Martin Jambor  <mjambor@suse.cz>
2494
2495         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
2496         on all nodes we write summaries for.
2497
2498 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
2499
2500         PR middle-end/22201
2501         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
2502         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
2503         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
2504         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
2505         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
2506         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
2507         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
2508         description string.
2509
2510 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
2511
2512         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
2513         unnecessarily.
2514         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
2515
2516         PR c++/3187
2517         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
2518         fields.
2519         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2520         prototypes.
2521         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
2522         cgraph_materialize_all_clones): Handle same_body aliases.
2523         * cgraph.c (cgraph_allocate_node): New function.
2524         (cgraph_create_node): Use it.
2525         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
2526         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
2527         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
2528         functions.
2529         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
2530         (input_node): Stream in same_body aliases.
2531         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
2532         for same_body aliases.
2533         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
2534
2535 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
2536
2537         PR other/39888
2538         * config/darwin.h: Use the extension stub libraries to access
2539         current libgcc_s features.
2540
2541 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2542
2543         PR debug/41926
2544         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
2545         (vect_transform_loop): Call it.
2546
2547 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2548
2549         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
2550         released SSA names.
2551
2552 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2553
2554         PR debug/41888
2555         PR debug/41886
2556         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
2557         are ok.
2558         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
2559         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
2560         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
2561         (sese_bad_liveouts_use): New.
2562         (sese_reset_debug_liveouts_bb): New.
2563         (sese_build_liveouts): Use it.
2564         (rename_variables_in_stmt): Reset debug stmts rather than creating
2565         new vars for them.
2566         (expand_scalar_variable_stmt): Likewise.
2567
2568 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
2569
2570         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
2571         (df_ref_remove): Likewise.
2572
2573 2009-11-17  Jan Hubicka  <jh@suse.cz>
2574
2575         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
2576         info.
2577
2578 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
2579
2580         * toplev.c (process_options): Remove dead code.
2581         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
2582
2583 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
2584
2585         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
2586         nodes.
2587
2588 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2589
2590         PR tree-optimization/41857
2591         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
2592         TYPE's address space instead of pointer to TYPE.
2593
2594 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2595
2596         * reload.c (find_reloads_address): Fix typo.
2597
2598 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2599
2600         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
2601         registers in leaf functions if possible.
2602
2603 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
2604
2605         * config/m68k/m68k-devices.def: Add MCF5441x family.
2606
2607 2009-11-17  Jan Hubicka  <jh@suse.cz>
2608
2609         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
2610         removed node.
2611         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
2612
2613 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
2614
2615         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
2616         nest ior expressions.
2617         (x86_64_szext_nonmemory_operand): Ditto.
2618         (call_insn_operand): Ditto.
2619
2620 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2621
2622         * stmt.c (expand_asm_stmt): Get locus from stmt.
2623
2624 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
2625
2626         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
2627         Create the decl label for the new dest block on demand.  Require
2628         a fallthrough edge if no asm labels were redirected.
2629
2630 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
2631
2632         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
2633         operand 1 predicate.
2634         (cstoresi4): Ditto for operand 2.
2635         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
2636         patterns using SDWIM mode iterator.
2637         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
2638         using SWIM mode iterator.
2639         (cmpdi_1): Rename from cmpdi_1_rex64.
2640         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
2641         SWI48 mode iterator.
2642         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
2643         using SWI mode iterator.
2644         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
2645         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
2646         (*cmpqi_ext_3_insn): Make private.
2647         (*cmpqi_ext_3_insn_rex64): Make private.
2648         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
2649         * config/i386/predicates.md (cmpsi_operand): Remove.
2650
2651 2009-11-16  Paul Brook  <paul@codesourcery.com>
2652
2653         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
2654         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
2655
2656 2009-11-14  Jan Hubicka  <jh@suse.cz>
2657
2658         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
2659         ENTRY_BLOCK_PTR.
2660         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
2661         zero out all callees.
2662         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
2663         frequency and count match.
2664         * ipa-inline.c (update_noncloned_frequencies): New function.
2665         (cgraph_clone_inlined_nodes): Use it.
2666         * tree-inline.c (copy_bb): Fix frequency scaling; output
2667         diagnostic on frequency mismatches to dump file.
2668         (initialize_cfun): Do not scale frequency; fix count scaling;
2669         initialize entry and exit block frequencies; copy profile info.
2670         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
2671         (copy_body): Use frequency_scale as argument.
2672         (expand_call_inline): Compute frequency scale and output diagnostic
2673         to dump file.
2674         (delete_unreachable_blocks_update_callgrah): Remove checking that
2675         has to be done after edge redirection.
2676         (tree_function_versioning): Update initialize_cfun and copy_body call.
2677
2678 2009-11-14  Jan Hubicka  <jh@suse.cz>
2679
2680         * cgraph.c (cgraph_release_function_body): Update use of
2681         ipa_transforms_to_apply.
2682         (cgraph_remove_node): Remove ipa_transforms_to_apply.
2683         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
2684         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
2685         copied body.
2686         (cgraph_materialize_clone): Remove original if dead.
2687         * lto-streamer-in.c (lto_read_body): Remove FIXME and
2688         ipa_transforms_to_apply hack.
2689         * function.h (struct function): Add ipa_transforms_to_apply.
2690         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
2691         * tree-inline.c (copy_bb): Update sanity check.
2692         (initialize_cfun): Do not copy ipa_transforms_to_apply.
2693         (expand_call_inline): remove dead clone originals.
2694         (tree_function_versioning): Merge transformation queues.
2695         * passes.c (add_ipa_transform_pass): Remove.
2696         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
2697         tracking.
2698         (execute_all_ipa_transforms): Update.
2699         (execute_one_pass): Update.
2700
2701 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2702
2703         PR target/21078, 21080
2704         * config/avr/avr.c (avr_return_addr_rtx): New function for
2705         builtin_return_address.
2706         (expand_prologue): Calculate stack usage.
2707         (avr_asm_function_end_prologue): Output stack size and offset label.
2708         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
2709         (machine_function): Add stack_usage.
2710         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
2711
2712 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
2713
2714         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
2715         new 'outgoing' argument.
2716         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
2717         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2718         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
2719         iq2000_function_value_regno_p.
2720         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2721         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
2722         Declare.
2723
2724 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
2725
2726         PR target/42031
2727         * arm.md (adddi_sesidi_di): Place tied contraint first.
2728         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
2729         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
2730         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
2731         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
2732         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
2733         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
2734         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
2735         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
2736         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
2737
2738 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
2739
2740         * config/i386/predicates.md (call_register_no_elim_operand):
2741         New predicate.  Reject stack register as valid call operand
2742         for 32bit targets.
2743         (call_insn_operand): Use call_register_no_elim_operand.
2744
2745 2009-11-13  Richard Henderson  <rth@redhat.com>
2746
2747         * function.c (stack_protect_prologue): Don't bypass expand_expr
2748         for stack_protect_guard and guard_decl.
2749         (stack_protect_epilogue): Likewise.
2750
2751 2009-11-13  Jan Hubicka  <jh@suse.cz>
2752
2753         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
2754         when to PUBLIC is set.
2755
2756 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
2757
2758         PR middle-end/42029
2759         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
2760         tmp_load if needed.
2761
2762 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2763
2764         PR target/41900
2765         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
2766         *call_value_1): Use "lsm" as operand 1 constraint.
2767         * config/i386/predicates.md (call_insn_operand): Depend on
2768         index_register_operand to avoid %esp register.
2769
2770 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2771
2772         Revert:
2773         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2774
2775         PR target/41900
2776         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2777         (TARGET_CALL_ESP): New define.
2778         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2779         X86_ARCH_CALL_ESP.
2780         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2781         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2782         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2783         TARGET_CALL_ESP.
2784         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2785         New patterns, use "lsm" as operand 1 constraint.
2786         * config/i386/predicates.md (call_insn_operand): Depend on
2787         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2788
2789 2009-11-13  Jason Merrill  <jason@redhat.com>
2790
2791         PR debug/26965
2792         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
2793         Don't emit a second declaration at any scope.
2794
2795 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2796
2797         PR rtl-optimization/41697
2798         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
2799         a conditional jump has a single successor.
2800
2801 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
2802
2803         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
2804         allocate reg_last when in case lazy_reg_last is true.
2805         (init_deps_reg_last): New.
2806         (free_deps): When max_reg is 0, this context is already freed.
2807         * sched-int.h (init_deps_reg_last): Export.
2808         (init_deps): Update prototype.
2809         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
2810         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
2811         * ddg.c (build_intra_loop_deps): Likewise.
2812         * sel-sched-ir.c (copy_deps_context, create_deps_context,
2813         reset_deps_context, deps_init_id): Likewise.
2814         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
2815         (free_data_for_scheduled_insn): New, break down from ...
2816         (free_first_time_insn_data): ... here.
2817         (has_dependence_p): Allocate reg_last now, when it is needed.
2818         (extend_insn_data): When maximal LUID is big enough, allocate
2819         per-insn data in smaller chunks.
2820         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
2821         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
2822         in scheduled insn.
2823
2824 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
2825
2826         * config/i386/i386.md (call_value): Fix comment.
2827         (sibcall_value): Ditto.
2828
2829 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
2830
2831         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
2832         (MD_FROB_UPDATE_CONTEXT): Define.
2833
2834 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
2835             Laurent GUERBY  <laurent@guerby.net>
2836
2837         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
2838         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
2839         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
2840
2841 2009-11-12  Jan Hubicka  <jh@suse.cz>
2842
2843         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
2844         and clear DECL_COMMON on localized declarations.
2845
2846 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2847
2848         PR rtl-opt/38582
2849         * regrename.c (struct du_head): New structure; some elements moved
2850         from...
2851         (struct du_chain): ... this one.
2852         (open_chains, closed_chains): Now of type struct du_head *.
2853         (do_replace): Accept du_head argument, not du_chain.  All callers
2854         changed.  Modified code to match new data structures.
2855         (build_def_use): Return a list of du_head structures.  Modified code
2856         to match new data structures.
2857         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2858         callers changed.  Modified code to match new data structures.
2859         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2860         callers changed.  Modified code to match new data structures.
2861         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2862         Allocate a du_head structure as well as a du_chain when creating a
2863         new chain.  Modified other code to match new data structures.
2864
2865 2009-11-12  Jan Hubicka  <jh@suse.cz>
2866
2867         * cgraph.h (varpool_node_name): Declare.
2868         * cgraphunit.c (process_function_and_variable_attributes): Set
2869         force_output flag on used variables.
2870         * ipa.c (function_and_variable_visibility): Dump externally visible
2871         and needed variables.
2872         * varpool.c (varpool_node_name): Export.
2873         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2874         ignore needed flag.
2875
2876 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2877
2878         PR middle-end/41930
2879         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2880         processing if XEXP (x, i) is NULL.
2881
2882 2009-11-12  Jan Hubicka  <jh@suse.cz>
2883
2884         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2885         imply PUBLIC || EXTERNAL.
2886
2887 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2888
2889         PR middle-end/41440
2890         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2891         single successor block, ending with jump created by RTL expander.
2892
2893 2009-11-11  Jan Hubicka  <jh@suse.cz>
2894
2895         PR middle-end/41729
2896         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2897         and WEAK variables at -fwhole-program.
2898
2899         PR middle-end/41735
2900         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2901         functions/variables are not needed even if they are externally visible.
2902
2903 2009-11-11  Jan Hubicka  <jh@suse.cz>
2904
2905         (patch by Richard Guenther)
2906         * lto-streamer-out.c (output_function): Output head of argument list
2907         earlier.
2908         * lto-streamer-in.c (input_function): Re-map arguments into merged
2909         declaration.
2910
2911 2009-11-11  Jan Hubicka  <jh@suse.cz>
2912
2913         * lto-cgraph.c: Include gcov-io.h
2914         (output_profile_summary): New function.
2915         (output_cgraph): Use it.
2916         (input_profile_summary): New function.
2917         (input_cgraph): Use it.
2918         * coverage.c (build_ctr_info_value): Use varpool; initalize
2919         DECL_ASSEMBLER_NAME.
2920         (create_coverage): Likewise.
2921         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2922         (tree_init_edge_profiler): Likewise.
2923         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2924
2925 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2926
2927         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2928         * c-pragma.c (def_pragma_macro_value): Likewise.
2929         (def_pragma_macro): Likewise.
2930         (pushed_macro_table): Likewise.
2931         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2932         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2933
2934 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2935
2936         * doc/plugins.texi (Registering custom attributes): section
2937         renamed as (Registering custom attributes or pragmas).
2938         Mentions custom attributes & pragmas, and c_register_pragma, with
2939         a small example.
2940         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2941         pragmas.
2942         * doc/extend.texi (Function Attributes): Mentions that plugin can
2943         provide their attributes.
2944
2945 2009-11-11  Jon Beniston  <jon@beniston.com>
2946
2947         * config.gcc: Add lm32 elf and uclinux targets.
2948         * config/lm32: New directory.
2949         * config/lm32/lm32.c: New file.
2950         * config/lm32/lm32.h: New file.
2951         * config/lm32/lm32.md: New file.
2952         * config/lm32/lm32.opt: New file.
2953         * config/lm32/lm32-protos.h: New file.
2954         * config/lm32/constraints.md: New file.
2955         * config/lm32/predicates.md: New file.
2956         * config/lm32/sfp-machine.h: New file.
2957         * config/lm32/t-fprules-softfp: New file.
2958         * config/lm32/uclinux-elf.h: New file.
2959         * doc/invoke.texi: Document lm32 options.
2960         * doc/contrib.texi: Document lm32 porter.
2961         * doc/install.texi: Document lm32 targets.
2962
2963 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2964
2965         PR lto/41932
2966         * ipa-prop.c (ipa_update_after_lto_read): Call
2967         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2968         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2969
2970 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2971
2972         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2973         (neon_expand_vector_init): Use them.  Also handle non-constant
2974         vectors with identical elements and vectors with only one
2975         non-constant element.
2976         (arm_print_operand): Handle 'y' modifier.
2977         * config/arm/arm-protos.h (neon_make_constant): Declare.
2978         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2979         patterns.  Use VX instead of VDQW for the first one.  Allow
2980         a VFP alternative and V32 modes for the second one.
2981         * config/arm/neon.ml (shape_elt): Add Alternatives.
2982         (ops): Use Alternatives for vdup lane instructions.
2983         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2984         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2985
2986 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2987
2988         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2989         operands.
2990         (movti, mov<mode>): Call force_reg on one operand if required.
2991         * config/arm/vec-common.md (mov<mode>): Likewise.
2992
2993 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2994
2995         * config/arm/arm.c (arm_override_options): Enable scheduling for
2996         Thumb-2.
2997
2998 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2999
3000         PR target/10127
3001         PR ada/20548
3002         * expr.h (anti_adjust_stack_and_probe): Declare.
3003         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
3004         parameter and rewrite head comment.
3005         (allocate_dynamic_stack_space): Adjust call to above function.
3006         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
3007
3008         * tree.h (dwarf2out_args_size): Delete.
3009         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
3010         (dwarf2out_args_size_adjust): Delete prototype and move around.
3011         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
3012         ACCUMULATE_OUTGOING_ARGS targets.
3013
3014 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
3015
3016         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
3017         DECL_SIZE of DECL_RESULT before evaluating it.
3018
3019 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3020
3021         PR tree-optimization/41987
3022         * fold-const.c (const_binop): Avoid using fold_buildN().
3023
3024 2009-11-10  Martin Jambor  <mjambor@suse.cz>
3025
3026         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
3027         (execute_all_ipa_stmt_fixups): Declare.
3028         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
3029         * ipa-inline.c (pass_ipa_inline): Likewise.
3030         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
3031         * ipa-reference.c (pass_ipa_reference): Likewise.
3032         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
3033         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
3034         (pass_ipa_lto_finish_out): Likewise.
3035         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
3036         * passes.c (execute_ipa_stmt_fixups): New function.
3037         (execute_all_ipa_stmt_fixups): New function.
3038         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
3039
3040 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
3041
3042         PR ada/20548
3043         * explow.c (probe_stack_range): Fix typo.
3044         * config/sparc/sparc.md (probe_stack): New expander.
3045
3046 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
3047
3048         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
3049
3050 2009-11-09  Jason Merrill  <jason@redhat.com>
3051
3052         * gdbinit.in (pgq): New function for printing gimple sequence.
3053
3054 2009-11-09  Paul Brook  <paul@codesourcery.com>
3055             Daniel Jacobowitz  <dan@codesourcery.com>
3056             Sandra Loosemore  <sandra@codesourcery.com>
3057
3058         * doc/extend.texi (Half-Precision): Update wording to reflect
3059         that there are now multiple -mfpu options that enable fp16
3060         hardware support.
3061         * doc/invoke.texi: Update list of ARM -mfpu= options.
3062         * config.gcc: Update ARM --with-fpu option list.
3063         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
3064         vfpv3xd and vfpv3xd-fp16.
3065         (use_vfp_abi): New function.
3066         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
3067         when undesirable.
3068         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
3069         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
3070         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
3071         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
3072         provides them.
3073         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
3074         NEON.
3075         (arm_print_operand): Handle 'p' modifier.
3076         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
3077         TARGET_FP16.
3078         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
3079         (TARGET_FP16): Define.
3080         * config/arm/vfp.md: Disable double-precision patterns if the FPU
3081         does not provide them.
3082         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
3083         double-precision values on a single-precision FPU.
3084         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
3085         double-precision constants.
3086         (movhf_vfp_neon): New pattern (was movhf_vfp).
3087         (movhf_vfp): Remove NEON instructions.
3088         * config/arm/constraints.md: Add new "Dy" constraint for
3089         double-precision constants.  Update description of "Dv".
3090         * config/arm/arm.md: Disable double-precision patterns if the FPU
3091         does not provide them
3092
3093 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
3094
3095         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
3096         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
3097         diagnostics.
3098
3099 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
3100
3101         * collect2.c (main): Search PLUGIN_LD for plugin linker.
3102
3103         * configure.ac (--with-plugin-ld): New.  Default to ld.
3104         * configure: Regenerated.
3105         * config.in: Likewise.
3106
3107         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
3108         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
3109
3110 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
3111
3112         * config/openbsd-stdint.h: Change to reflect what
3113         c_common_nodes_and_builtins expects.
3114
3115 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
3116
3117         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
3118
3119 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
3120
3121         PR target/41985
3122         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
3123         function contains at least one local dynamic name.
3124         (print_operand) <case '&'>: Instead output operand lossage diagnostics
3125         here if that happens.
3126
3127 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
3128             Joern Rennecke  <amylaar@spamcop.net>
3129
3130         * cfgrtl.c (pass_free_cfg): Add pass name.
3131         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
3132         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
3133         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
3134         * df-core.c (pass_df_initialize_no_opt): Likewise.
3135         * except.c (pass_rtl_eh): Likewise.
3136         * function.c (pass_init_function, pass_leaf_regs): Likewise.
3137         * gcse.c (pass_rtl_pre): Change pass name.
3138         * passes.c (pass_postreload): Add pass name.
3139         (make_pass_instance): Don't use duplicate-tracking logic for
3140         names starting with '*'.
3141         (next_pass_1): Assert that pass has a name.
3142         (register_one_dump_file): If there is an space in the name,
3143         skip past it.
3144         * predict.c (pass_strip_predict_hints): Add pass name.
3145         * reg-stack.c (pass_stack_regs): Likewise.
3146         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
3147         * tree-cfg.c (pass_warn_function_return,
3148         pass_warn_function_noreturn): Add pass name.
3149         * tree-dfa.c (pass_referenced_vars): Likewise.
3150         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
3151         Fix whitespace before comment.
3152         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
3153         (pass_init_datastructures): Add pass name.
3154         * tree-ssa-loop.c (pass_record_bounds): Likewise.
3155         * tree-ssa.c (pass_early_warn_uninitialized,
3156         pass_late_warn_uninitialized): Likewise.
3157         * tree.c (pass_ipa_free_lang_data): Likewise.
3158         * doc/passes.texi (pass manager): Document how to disambiguate
3159         pass names.
3160
3161 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
3162
3163         * df-problems.c: Fix documentation for forward simulation of LR.
3164         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
3165         (df_simulate_finalize_forwards): Remove.
3166         * df.h (df_simulate_finalize_forwards): Remove.
3167
3168 2009-11-08  Richard Guenther  <rguenther@suse.de>
3169
3170         * tree-ssa-structalias.c (build_succ_graph): Properly make
3171         variables escape if they are stored to anything.
3172
3173 2009-11-08  Richard Guenther  <rguenther@suse.de>
3174
3175         PR rtl-optimization/41928
3176         * loop-invariant.c (free_loop_data): If we didn't allocate
3177         loop data do not try to free it.
3178
3179 2009-11-07  Jason Merrill  <jason@redhat.com>
3180
3181         * tree.c (reconstruct_complex_type): Preserve attributes.
3182
3183 2009-11-07  Richard Guenther  <rguenther@suse.de>
3184
3185         * tree-ssa-structalias.c (build_succ_graph): Feed stores
3186         to anything only to variables that can take pointers.
3187         (get_constraint_for_ssa_var): Properly exclude full
3188         variables from expanding.
3189         (first_vi_for_offset): Avoid overflow in arithmetic.
3190         (first_or_preceding_vi_for_offset): Likewise.
3191         (count_num_arguments): Fix implementation.
3192         (gate_ipa_pta): Do not run when not optimizing.
3193
3194 2009-11-07  David Binderman <dcb314@hotmail.com>
3195
3196         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
3197         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
3198         set but not used variables.
3199         (apply_args_reg_offset): Comment out as unused.
3200         * calls.c (flags_from_decl_or_type): Likewise.
3201         * genautomata.c (check_regexp_units_distribution): Likewise.
3202
3203 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
3204
3205         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
3206         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
3207         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
3208         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
3209         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
3210         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
3211         operand alternatives.
3212
3213 2009-11-06  Michael Matz  <matz@suse.de>
3214
3215         PR middle-end/41963
3216         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
3217         of a potential reciprocal to really be reciprocals.
3218
3219 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
3220
3221         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
3222         lwpintrin.h after immintrin.h.
3223         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
3224         typedefs.
3225
3226         PR middle-end/41935
3227         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
3228         or non-constant index, allow index one past the last element and
3229         allow exceeding array bound in arrays that might be used as flexible
3230         array members.
3231
3232 2009-11-05  Richard Henderson  <rth@redhat.com>
3233
3234         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
3235
3236 2009-11-05  Paul Brook  <paul@codesourcery.com>
3237
3238         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
3239         (arm_fpu_desc): New.
3240         (all_fpus): Add FPU details.
3241         (fp_model_for_fpu): Remove.
3242         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
3243         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
3244         (arm_file_start): Use arm_fpu_desc.
3245         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
3246         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
3247         arm_fpu_desc.
3248         (TARGET_FPA_EMU2): Define.
3249         (arm_fp_model, fputype, arm_fpu_tune): Remove.
3250         (vfp_reg_type, arm_fpu_desc): New.
3251         * config/arm/arm.md (attr fpu): Simplify.
3252         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
3253         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
3254         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
3255         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
3256         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
3257
3258 2009-11-05  Michael Matz  <matz@suse.de>
3259
3260         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
3261         on TARGET_RECIP.
3262         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
3263         for 1/sqrtf.
3264
3265 2009-11-04  Jason Merrill  <jason@redhat.com>
3266
3267         PR c++/36912
3268         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
3269         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
3270         (output_constant): Avoid crash after error.
3271
3272 2009-11-05  Martin Jambor  <mjambor@suse.cz>
3273
3274         * tree-sra.c (struct access): Changed comment of next_sibling field.
3275         (analyze_modified_params): Loop over accesses of a group rather than
3276         over all with the ame base, pass a common bitmap to
3277         walk_aliased_vdefs.
3278         (unmodified_by_ref_scalar_representative): Build link lists of
3279         accesses of a group.
3280         (splice_param_accesses): Likewise.
3281
3282 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
3283
3284         * df-scan.c (df-uses-record): Add case zero_extract of mem.
3285
3286 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
3287
3288         PR target/10127
3289         PR ada/20548
3290         * config/i386/i386.md (probe_stack): New expander.
3291         (logical operation peepholes): Do not split stack checking probes.
3292
3293 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
3294             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3295
3296         * doc/invoke.texi (-mlwp): Add documentation.
3297         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
3298         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
3299         (x86_64-*-*): Ditto.
3300         * config/i386/lwpintrin.h: New file, provide x86 compiler
3301         intrinisics for LWP.
3302         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
3303         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
3304         * config/i386/i386-c.c (ix86_target_macros_internal): Check
3305         ISA_FLAG for LWP.
3306         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
3307         * config/i386/i386.opt (-mlwp): New switch for LWP support.
3308         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
3309         (OPTION_MASK_ISA_LWP_UNSET): New.
3310         (ix86_handle_option): Handle -mlwp.
3311         (isa_opts): Handle -mlwp.
3312         (enum pta_flags): Add PTA_LWP.
3313         (override_options): Add LWP support.
3314         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
3315         (IX86_BUILTIN_LLWPCB32): Ditto.
3316         (IX86_BUILTIN_LLWPCB64): Ditto.
3317         (IX86_BUILTIN_SLWPCB16): Ditto.
3318         (IX86_BUILTIN_SLWPCB32): Ditto.
3319         (IX86_BUILTIN_SLWPCB64): Ditto.
3320         (IX86_BUILTIN_LWPVAL16): Ditto.
3321         (IX86_BUILTIN_LWPVAL32): Ditto.
3322         (IX86_BUILTIN_LWPVAL64): Ditto.
3323         (IX86_BUILTIN_LWPINS16): Ditto.
3324         (IX86_BUILTIN_LWPINS32): Ditto.
3325         (IX86_BUILTIN_LWPINS64): Ditto.
3326         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
3327         (builtin_description): Ditto.
3328         (ix86_init_mmx_sse_builtins): Ditto.
3329         (ix86_expand_special_args_builtin): Ditto.
3330         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
3331         LWP support.
3332         (UNSPEC_SLWP_INTRINSIC): Ditto.
3333         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
3334         (UNSPECV_LWPINS_INTRINSIC): Ditto.
3335         (lwp_llwpcbhi1): New lwp pattern.
3336         (lwp_llwpcbsi1): Ditto.
3337         (lwp_llwpcbdi1): Ditto.
3338         (lwp_slwpcbhi1): Ditto.
3339         (lwp_slwpcbsi1): Ditto.
3340         (lwp_slwpcbdi1): Ditto.
3341         (lwp_lwpvalhi3): Ditto.
3342         (lwp_lwpvalsi3): Ditto.
3343         (lwp_lwpvaldi3): Ditto.
3344         (lwp_lwpinshi3): Ditto.
3345         (lwp_lwpinssi3): Ditto.
3346         (lwp_lwpinsdi3): Ditto.
3347
3348 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3349             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
3350
3351         PR rtl-opt/41833
3352         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
3353         a vec_duplicate.
3354
3355 2009-11-04  Richard Guenther  <rguenther@suse.de>
3356             Rafael Avila de Espindola  <espindola@google.com>
3357
3358         * gcc.c (process_command): Handle arguments name@offset.
3359
3360 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
3361             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3362
3363         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
3364         (x86_64-*-*): Ditto.
3365         * config/i386/xopintrin.h: New file, provide common x86 compiler
3366         intrinisics for XOP.
3367         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
3368         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
3369         * config/i386/i386-c.c(ix86_target_macros_internal): Check
3370         ISA_FLAG for XOP.
3371         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
3372         * config/i386/i386.opt (-mxop): New switch for XOP support.
3373         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
3374         (UNSPEC_XOP_TRUEFALSE)
3375         (UNSPEC_XOP_PERMUTE)
3376         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
3377         (PPERM_*): New constants for vpperm instruction.
3378         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
3379         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
3380         (OPTION_MASK_ISA_XOP_UNSET): New.
3381         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
3382         (ix86_handle_option): Handle -mxop.
3383         (isa_opts): Handle -mxop.
3384         (enum pta_flags): Add PTA_XOP.
3385         (override_options): Add XOP support.
3386         (print_operand): Add code for XOP compare instructions.
3387         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
3388         (ix86_expand_int_vcond): Extend for XOP compare instruction.
3389
3390         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
3391         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
3392         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
3393         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
3394         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
3395         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
3396         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
3397
3398         (IX86_BUILTIN_VPCMOV256): Ditto.
3399         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
3400         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
3401         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
3402         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
3403         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
3404         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
3405
3406         (IX86_BUILTIN_VPPERM): Ditto.
3407
3408         (IX86_BUILTIN_VPMACSSWW): Ditto.
3409         (IX86_BUILTIN_VPMACSWW): Ditto.
3410         (IX86_BUILTIN_VPMACSSWD): Ditto.
3411         (IX86_BUILTIN_VPMACSWD): Ditto.
3412         (IX86_BUILTIN_VPMACSSDD): Ditto.
3413         (IX86_BUILTIN_VPMACSDD): Ditto.
3414         (IX86_BUILTIN_VPMACSSDQL): Ditto.
3415         (IX86_BUILTIN_VPMACSSDQH): Ditto.
3416         (IX86_BUILTIN_VPMACSDQL): Ditto.
3417         (IX86_BUILTIN_VPMACSDQH): Ditto.
3418         (IX86_BUILTIN_VPMADCSSWD): Ditto.
3419         (IX86_BUILTIN_VPMADCSWD): Ditto.
3420
3421         (IX86_BUILTIN_VPHADDBW): Ditto.
3422         (IX86_BUILTIN_VPHADDBD): Ditto.
3423         (IX86_BUILTIN_VPHADDBQ): Ditto.
3424         (IX86_BUILTIN_VPHADDWD): Ditto.
3425         (IX86_BUILTIN_VPHADDWQ): Ditto.
3426         (IX86_BUILTIN_VPHADDDQ): Ditto.
3427         (IX86_BUILTIN_VPHADDUBW): Ditto.
3428         (IX86_BUILTIN_VPHADDUBD): Ditto.
3429         (IX86_BUILTIN_VPHADDUBQ): Ditto.
3430         (IX86_BUILTIN_VPHADDUWD): Ditto.
3431         (IX86_BUILTIN_VPHADDUWQ): Ditto.
3432         (IX86_BUILTIN_VPHADDUDQ): Ditto.
3433         (IX86_BUILTIN_VPHSUBBW): Ditto.
3434         (IX86_BUILTIN_VPHSUBWD): Ditto.
3435         (IX86_BUILTIN_VPHSUBDQ): Ditto.
3436
3437         (IX86_BUILTIN_VPROTB): Ditto.
3438         (IX86_BUILTIN_VPROTW): Ditto.
3439         (IX86_BUILTIN_VPROTD): Ditto.
3440         (IX86_BUILTIN_VPROTQ): Ditto.
3441         (IX86_BUILTIN_VPROTB_IMM): Ditto.
3442         (IX86_BUILTIN_VPROTW_IMM): Ditto.
3443         (IX86_BUILTIN_VPROTD_IMM): Ditto.
3444         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
3445
3446         (IX86_BUILTIN_VPSHLB): Ditto.
3447         (IX86_BUILTIN_VPSHLW): Ditto.
3448         (IX86_BUILTIN_VPSHLD): Ditto.
3449         (IX86_BUILTIN_VPSHLQ): Ditto.
3450         (IX86_BUILTIN_VPSHAB): Ditto.
3451         (IX86_BUILTIN_VPSHAW): Ditto.
3452         (IX86_BUILTIN_VPSHAD): Ditto.
3453         (IX86_BUILTIN_VPSHAQ): Ditto.
3454
3455         (IX86_BUILTIN_VFRCZSS): Ditto.
3456         (IX86_BUILTIN_VFRCZSD): Ditto.
3457         (IX86_BUILTIN_VFRCZPS): Ditto.
3458         (IX86_BUILTIN_VFRCZPD): Ditto.
3459         (IX86_BUILTIN_VFRCZPS256): Ditto.
3460         (IX86_BUILTIN_VFRCZPD256): Ditto.
3461
3462         (IX86_BUILTIN_VPCOMEQUB): Ditto.
3463         (IX86_BUILTIN_VPCOMNEUB): Ditto.
3464         (IX86_BUILTIN_VPCOMLTUB): Ditto.
3465         (IX86_BUILTIN_VPCOMLEUB): Ditto.
3466         (IX86_BUILTIN_VPCOMGTUB): Ditto.
3467         (IX86_BUILTIN_VPCOMGEUB): Ditto.
3468         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
3469         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
3470
3471         (IX86_BUILTIN_VPCOMEQUW): Ditto.
3472         (IX86_BUILTIN_VPCOMNEUW): Ditto.
3473         (IX86_BUILTIN_VPCOMLTUW): Ditto.
3474         (IX86_BUILTIN_VPCOMLEUW): Ditto.
3475         (IX86_BUILTIN_VPCOMGTUW): Ditto.
3476         (IX86_BUILTIN_VPCOMGEUW): Ditto.
3477         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
3478         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
3479
3480         (IX86_BUILTIN_VPCOMEQUD): Ditto.
3481         (IX86_BUILTIN_VPCOMNEUD): Ditto.
3482         (IX86_BUILTIN_VPCOMLTUD): Ditto.
3483         (IX86_BUILTIN_VPCOMLEUD): Ditto.
3484         (IX86_BUILTIN_VPCOMGTUD): Ditto.
3485         (IX86_BUILTIN_VPCOMGEUD): Ditto.
3486         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
3487         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
3488
3489         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
3490         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
3491         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
3492         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
3493         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
3494         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
3495         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
3496         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
3497
3498         (IX86_BUILTIN_VPCOMEQB): Ditto.
3499         (IX86_BUILTIN_VPCOMNEB): Ditto.
3500         (IX86_BUILTIN_VPCOMLTB): Ditto.
3501         (IX86_BUILTIN_VPCOMLEB): Ditto.
3502         (IX86_BUILTIN_VPCOMGTB): Ditto.
3503         (IX86_BUILTIN_VPCOMGEB): Ditto.
3504         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
3505         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
3506
3507         (IX86_BUILTIN_VPCOMEQW): Ditto.
3508         (IX86_BUILTIN_VPCOMNEW): Ditto.
3509         (IX86_BUILTIN_VPCOMLTW): Ditto.
3510         (IX86_BUILTIN_VPCOMLEW): Ditto.
3511         (IX86_BUILTIN_VPCOMGTW): Ditto.
3512         (IX86_BUILTIN_VPCOMGEW): Ditto.
3513         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
3514         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
3515
3516         (IX86_BUILTIN_VPCOMEQD): Ditto.
3517         (IX86_BUILTIN_VPCOMNED): Ditto.
3518         (IX86_BUILTIN_VPCOMLTD): Ditto.
3519         (IX86_BUILTIN_VPCOMLED): Ditto.
3520         (IX86_BUILTIN_VPCOMGTD): Ditto.
3521         (IX86_BUILTIN_VPCOMGED): Ditto.
3522         (IX86_BUILTIN_VPCOMFALSED): Ditto.
3523         (IX86_BUILTIN_VPCOMTRUED): Ditto.
3524
3525         (IX86_BUILTIN_VPCOMEQQ): Ditto.
3526         (IX86_BUILTIN_VPCOMNEQ): Ditto.
3527         (IX86_BUILTIN_VPCOMLTQ): Ditto.
3528         (IX86_BUILTIN_VPCOMLEQ): Ditto.
3529         (IX86_BUILTIN_VPCOMGTQ): Ditto.
3530         (IX86_BUILTIN_VPCOMGEQ): Ditto.
3531         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
3532         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
3533
3534         (enum multi_arg_type): New enum for describing the various XOP
3535         intrinsic argument types.
3536         (bdesc_multi_arg): New table for XOP intrinsics.
3537         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
3538         (ix86_expand_multi_arg_builtin): New function for creating XOP
3539         intrinsics.
3540
3541         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
3542         (xop_pmacsww): Ditto.
3543         (xop_pmacssww): Ditto.
3544         (xop_pmacsdd): Ditto.
3545         (xop_pmacssdd): Ditto.
3546         (xop_pmacssdql): Ditto.
3547         (xop_pmacssdqh): Ditto.
3548         (xop_pmacsdql): Ditto.
3549         (xop_pmacsdql_mem): Ditto.
3550         (xop_mulv2div2di3_low): Ditto.
3551         (xop_pmacsdqh): Ditto.
3552         (xop_pmacsdqh_mem): Ditto.
3553         (xop_mulv2div2di3_high): Ditto.
3554         (xop_pmacsswd): Ditto.
3555         (xop_pmacswd): Ditto.
3556         (xop_pmadcsswd): Ditto.
3557         (xop_pmadcswd): Ditto.
3558         (xop_pcmov_<mode>): Ditto.
3559         (xop_pcmov_<mode>256): Ditto.
3560         (xop_phaddbw): Ditto.
3561         (xop_phaddbd): Ditto.
3562         (xop_phaddbq): Ditto.
3563         (xop_phaddwd): Ditto.
3564         (xop_phaddwq): Ditto.
3565         (xop_phadddq): Ditto.
3566         (xop_phaddubw): Ditto.
3567         (xop_phaddubd): Ditto.
3568         (xop_phaddubq): Ditto.
3569         (xop_phadduwd): Ditto.
3570         (xop_phadduwq): Ditto.
3571         (xop_phaddudq): Ditto.
3572         (xop_phsubbw): Ditto.
3573         (xop_phsubwd): Ditto.
3574         (xop_phsubdq): Ditto.
3575         (xop_pperm): Ditto.
3576         (rotl<mode>3): Ditto.
3577         (rotr<mode>3): Ditto.
3578         (xop_rotl<mode>3): Ditto.
3579         (xop_rotr<mode>3): Ditto.
3580         (vrotr<mode>3): Ditto.
3581         (vrotl<mode>3): Ditto.
3582         (xop_vrotl<mode>3): Ditto.
3583         (vlshr<mode>3): Ditto.
3584         (vashr<mode>3): Ditto.
3585         (vashl<mode>3
3586         (xop_ashl<mode>3): Ditto.
3587         (xop_lshl<mode>3): Ditto.
3588         (ashlv16qi3): Ditto.
3589         (lshlv16qi3): Ditto.
3590         (ashrv16qi3): Ditto.
3591         (ashrv2di3): Ditto.
3592         (xop_frcz<mode>2): Ditto.
3593         (xop_vmfrcz<mode>2): Ditto.
3594         (xop_frcz<mode>2256): Ditto.
3595         (xop_maskcmp<mode>3): Ditto.
3596         (xop_maskcmp_uns<mode>3): Ditto.
3597         (xop_maskcmp_uns2<mode>3): Ditto.
3598         (xop_pcom_tf<mode>3): Ditto.
3599
3600         * doc/invoke.texi (-mxop): Add documentation.
3601         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
3602
3603 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
3604
3605         PR driver/11810
3606         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
3607         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
3608         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
3609
3610 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
3611
3612         PR target/40835
3613         * arm.md (peephole2 patterns for move and compare): New.
3614
3615 2009-11-04  Nick Clifton  <nickc@redhat.com>
3616
3617         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
3618         Make sure that it does not allow CONST_DOUBLEs.
3619         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
3620         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
3621         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
3622         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
3623         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
3624         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
3625         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
3626         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
3627         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
3628         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
3629         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
3630         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
3631         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
3632         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
3633         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
3634
3635 2009-11-04  Richard Guenther  <rguenther@suse.de>
3636
3637         PR tree-optimization/41919
3638         * tree-vrp.c (test_for_singularity): Properly compare values.
3639
3640 2009-11-04  Revital Eres  <eres@il.ibm.com>
3641
3642         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3643         Consider peeling for alignment only for stores and remove
3644         redundant assignment.
3645
3646 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
3647
3648         PR target/41302
3649         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
3650         (m68k_ok_for_sibcall_p): Handle different result return locations.
3651
3652 2009-11-04  Richard Guenther  <rguenther@suse.de>
3653
3654         * c-opts.c (c_common_post_options): Move LTO option processing
3655         code ...
3656         * opts.c (decode_options): ... here.
3657
3658 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
3659
3660         * c-common.c (fold_offsetof_1): Use %wd instead of
3661         HOST_WIDE_INT_PRINT_DEC.
3662
3663 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3664
3665         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
3666         __pic__ or __PIC__.
3667
3668 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
3669
3670         * config.gcc (vax-*-linux*): Keep the original contents of
3671         tmake_file while adding vax/t-linux.
3672
3673 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
3674
3675         PR target/10127
3676         PR ada/20548
3677         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
3678         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
3679         (STACK_CHECK_MOVING_SP): Likewise.
3680         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
3681         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
3682         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
3683         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
3684         Document PROBE_STACK.
3685         * explow.c (anti_adjust_stack_and_probe): New function.
3686         (allocate_dynamic_stack_space): Do not directly allocate space if
3687         STACK_CHECK_MOVING_SP, instead invoke above function.
3688         (emit_stack_probe): Handle probe_stack insn.
3689         (PROBE_INTERVAL): New macro.
3690         (STACK_GROW_OPTAB): Likewise.
3691         (STACK_GROW_OFF): Likewise.
3692         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
3693         loop condition in the small constant case.  Rewrite in the general
3694         case to be immune to wraparounds.  Make sure the address of probes
3695         is valid.  Try to use [base + disp] addressing mode if possible.
3696         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
3697         checking is enabled and STACK_CHECK_MOVING_SP.
3698         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
3699         return 1 for volatile references to the stack pointer.
3700         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
3701         __builtin_alloca if stack checking is enabled.
3702         * unwind-dw2.c (uw_identify_context): Take into account whether the
3703         context is that of a signal frame or not.
3704         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
3705         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
3706
3707 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
3708
3709         PR rtl-optimization/41917
3710         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
3711         operand isn't known to be 0, return 1.
3712
3713 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3714
3715         * config/mips/mips.md: Fix typos.
3716
3717 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
3718
3719         * doc/invoke.texi: Fix typo.
3720
3721 2009-11-03  Paul Brook  <paul@codesourcery.com>
3722
3723         * config/arm/neon.ml (vectype): Add T_floatSF.
3724         (string_of_vectype): Ditto.
3725         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
3726         (deftypes): Use float for float32_t.
3727         * config/arm/arm_neon.h: Regenerate.
3728
3729 2009-11-03  Nick Clifton  <nickc@redhat.com>
3730             Kevin Buettner  <kevinb@redhat.com>
3731
3732         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
3733         order of expected registers.
3734         (rx_load_multiple_vector): Likewise.
3735         (rx_rtsd_vector): Likewise.
3736         * config/rx/rx.c (rx_cpu_type): New variable.
3737         (rx_print_operand): Fix bug printing 64-bit constant values.
3738         (rx_emit_stack_pushm): Reverse order of pushed registers.
3739         (gen_rx_store_vector): Likewise.
3740         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
3741         attribute name.
3742         (is_exception_func): Rename to is_interrupt_func and only accept
3743         "interrupt" as the attribute name.
3744         (rx_get_stack_layout): Use new function name.
3745         (rx_func_attr_inlinable): Likewise.
3746         (rx_attribute_table): Remove "exception".
3747         (rx_expand_prologue): If necessary push the accumulator register
3748         in the prologue of interrupt functions.
3749         (rx_expand_epilogue): If necessary pop the accumulator.
3750         (rx_builtins): Add RX_BUILTIN_MVTIPL.
3751         (rx_expand_builtin_stz): Remove.
3752         (rx_expand_builtin_mvtipl): New function.
3753         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
3754         (rx_expand_builtin): Likewise.
3755         (rx_enable_fpu): New variable.
3756         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
3757         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
3758         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
3759         (enum rx_cpu_types): Define.
3760         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
3761         (INCOMING_FRAME_SP_OFFSET): Define.
3762         (ARG_POINTER_CFA_OFFSET): Define.
3763         (FRAME_POINTER_CFA_OFFSET): Define.
3764         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
3765         (ALLOW_RX_FPU_INSNS): Define.
3766         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
3767         fast_math_flags_set_p.
3768         (UNSPEC_BUILTIN_MVTIPL): Define.
3769         (revl): Rename to bswapsi2.
3770         (bswaphi2): New pattern.
3771         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
3772         (mvtaclo): Likewise.
3773         (racw): Likewise.
3774         (mvtc): Remove clobber of cc0.
3775         (mvtcp): Delete.
3776         (opecp): Delete.
3777         * config/rx/rx.opt (mieee): Remove.
3778         (fpu): Add.
3779         (nofpu): Add.
3780         (mcpu=): Add.
3781         (patch=): Add.
3782         (msave-acc-in-interrupts): Add.
3783         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
3784         (MULTILIB_DIRS): Likewise.
3785         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
3786         * doc/extend.texi: Remove description of "exception" function
3787         attribute.
3788         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
3789         -msave-acc-in-interrupts options.
3790
3791 2009-11-03  Richard Guenther  <rguenther@suse.de>
3792
3793         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
3794
3795 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
3796
3797         PR c++/38699
3798         * c-common.c (fold_offsetof_1): Issue errors when the member
3799         designator of the offsetof expression is not legitimate.
3800
3801 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3802
3803         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
3804         names instead of numerical constants.
3805         (sse_prologue_save): Ditto.
3806         (*sse_prologue_save_insn): Ditto.
3807
3808 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
3809
3810         PR target/41900
3811         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
3812         (TARGET_CALL_ESP): New define.
3813         * config/i386/i386.c (initial_ix86_tune_features): Initialize
3814         X86_ARCH_CALL_ESP.
3815         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
3816         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
3817         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
3818         TARGET_CALL_ESP.
3819         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
3820         New patterns, use "lsm" as operand 1 constraint.
3821         * config/i386/predicates.md (call_insn_operand): Depend on
3822         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
3823
3824 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3825
3826         PR tree-optimization/41857
3827         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
3828         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
3829         to create_mem_ref.
3830         * tree-ssa-address.c (move_hint_to_base): New function.
3831         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
3832         address space associated with TYPE.
3833         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
3834         most_expensive_mult_to_index.  Call move_hint_to_base.
3835         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
3836         TYPE to addr_to_parts.
3837
3838 2009-11-02  Martin Jambor  <mjambor@suse.cz>
3839
3840         PR tree-optimization/41750
3841         * tree-sra.c (analyze_modified_params): Loop over all
3842         representatives of components of a parameter.
3843
3844 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3845
3846         PR tree-optimization/41841
3847         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3848         local variables of not yet materialized clones.
3849
3850         PR debug/41893
3851         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3852         for a VOIDmode variable.
3853
3854         PR c++/41774
3855         * c-pragma.c (visstack): Change into vector of ints rather than
3856         enum symbol_visibility.
3857         (push_visibility): Add kind argument, push default_visibility together
3858         with kind.
3859         (pop_visibility): Add kind argument, return true if successful, fail
3860         if visibility stack is empty or if stack top is of different kind.
3861         (handle_pragma_visibility): Don't check length of visstack, instead
3862         call pop_visibility and issue diagnostics if it failed.  Pass 0
3863         as last argument to push_visibility and pop_visibility.
3864         * c-pragma.h (push_visibility): Add kind argument.
3865         (pop_visibility): Likewise.  Return bool instead of void.
3866
3867 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3868
3869         * tree.def (TARGET_MEM_REF): Update comment.
3870         * alias.c (get_alias_set): Retrieve the original memory reference for
3871         a TARGET_MEM_REF before proceeding.
3872
3873 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3874
3875         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3876         frv_function_value_regno_p): New functions.
3877         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3878         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3879         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3880         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3881
3882 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3883
3884         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3885         new 'outgoing' argument.
3886         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3887         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3888         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3889         LIBCALL_VALUE): Remove.
3890         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3891         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3892         (mh10300_function_value_regno_p): Declare.
3893
3894 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3895
3896         * config/arm/cortex-a9.md: New - integer pipeline description.
3897
3898 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3899
3900         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3901         aborting if the sizes of the two references don't match.
3902
3903 2009-10-31  Toon Moene  <toon@moene.org>
3904
3905         * ipa-inline.c (cgraph_decide_inlining):
3906         Include reason for not inlining called-once functions in dump file.
3907
3908 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3909
3910         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3911         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3912         (LINK_SPEC): BE_LINK_SPEC added.
3913
3914 2009-10-30  Richard Guenther  <rguenther@suse.de>
3915
3916         PR lto/41858
3917         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3918
3919 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3920
3921         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3922         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3923         label.
3924
3925 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3926
3927         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3928
3929 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3930
3931         PR target/40838
3932         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3933         first.  Move assert on stack_alignment_estimated just before
3934         setting stack_realign_needed.
3935         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3936         Don't call update_stack_boundary.
3937
3938         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3939         (verride_options): Don't check ix86_force_align_arg_pointer here.
3940         (ix86_function_ok_for_sibcall): Use it.
3941         (ix86_update_stack_boundary): Likewise.
3942
3943         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3944
3945 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3946
3947         * arm.md (QHSI): New mode iterator.
3948         (movqi): If generating for thumb, then truncate any immediate to
3949         8 bits.
3950         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3951         with...
3952         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3953         version.
3954
3955 2009-10-29  Cary Coutant  <ccoutant@google.com>
3956
3957         PR debug/41700
3958         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3959         locations in the source).
3960         (store_vcall_insn): New function.
3961         (lookup_vcall_insn): New function.
3962         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3963         (dwarf2out_copy_call_info): New function.
3964         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3965         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3966         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3967         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3968         (debug_nothing_rtx_rtx): New dummy hook.
3969         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3970         (xcoff_debug_hooks): Likewise.
3971         * sdbout.c (sdb_debug_hooks): Likewise.
3972         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3973
3974 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3975
3976         * doc/invoke.texi (mmcount-ra-address): Document new command line
3977         option.
3978         * config/mips/mips.opt (mmcount-ra-address): New option.
3979         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3980         function.
3981         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3982         member.
3983         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3984         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3985         rewritten.
3986         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3987         mips_function_profiler.
3988
3989 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3990
3991         PR middle-end/37565
3992         PR target/38018
3993         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3994         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3995         * optc-gen.awk (cl_target_option_restore): Include call to
3996         targetm.override_options_after_change.
3997         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3998         * target.h (override_options_after_change): New.
3999         * c-common.c (parse_optimize_options): Call
4000         targetm.override_options_after_change.
4001         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
4002         (ia64_override_options_after_change): New.
4003         (ia64_override_options) Add call to above.
4004
4005 2009-10-29  Michael Matz  <matz@suse.de>
4006
4007         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
4008         (gate_convert_to_rsqrt): Ditto.
4009         (pass_convert_to_rsqrt): Ditto.
4010         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
4011         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
4012         to pass list.
4013
4014         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
4015
4016 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4017
4018         * config/arm/arm.c (find_best_start): Fix type of remainder to be
4019         unsigned.
4020
4021 2009-10-29  Martin Jambor  <mjambor@suse.cz>
4022
4023         PR tree-optimization/41775
4024         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
4025         (generate_subtree_copies): Do not unshare agg.
4026         (load_assign_lhs_subreplacements): Do not unshare rhs.
4027         (sra_modify_assign): Do not unshare exprs.
4028         (propagate_subacesses_accross_link): Renamed to
4029         propagate_subaccesses_across_link.
4030
4031 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
4032
4033         * arm.c (count_insns_for_constant): Rework to support counting for
4034         thumb2 immediates as well.
4035         (find_best_start): Split out from arm_gen_constant.
4036         (arm_gen_constant): Rework to support XOR with immediate.
4037
4038 2009-10-29  Chao-ying Fu  <fu@mips.com>
4039
4040         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
4041         functions.
4042         (mips_expand_synci_loop):  Use the length rtx to control the
4043         synci loop from the begin rtx that points to the first byte of
4044         the cache line.
4045
4046 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
4047
4048         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
4049
4050 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
4051
4052         * dbxout.c (dbxout_common_check): Accept non public trees.
4053         * dwarf2out.c (fortran_common): Accept non public trees.
4054
4055 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
4056
4057         * common.opt (fuse-linker-plugin): New option.
4058         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
4059         fuse-linker-plugin.
4060         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
4061
4062 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4063
4064         PR rtl-optimization/39715
4065         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
4066         (gen_cstoresi_ltu_thumb1): New splitter.
4067
4068 2009-10-28  Richard Guenther  <rguenther@suse.de>
4069
4070         PR lto/41808
4071         PR lto/41839
4072         * tree-ssa.c (useless_type_conversion_p): Do not treat
4073         conversions to pointers to incomplete types as useless.
4074         * gimple.c (gimple_types_compatible_p): Compare struct tags,
4075         not typedef names.
4076
4077 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
4078
4079         * var-tracking.c (emit_note_insn_var_location): Don't call the second
4080         vt_expand_loc unnecessarily when location is not a register nor
4081         memory.
4082
4083         PR middle-end/41837
4084         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
4085         fields don't have DECL_NAME.
4086
4087         PR debug/41801
4088         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
4089         call convert_memory_address on addr.
4090
4091         PR target/41762
4092         * config/i386/i386.c (ix86_pic_register_p): Don't call
4093         rtx_equal_for_cselib_p for VALUEs discarded as useless.
4094
4095 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
4096
4097         * var-tracking.c (emit_note_insn_var_location): Get the mode of
4098         a variable part from its REG, MEM or VALUE.
4099
4100 2009-10-28  Richard Guenther  <rguenther@suse.de>
4101
4102         * gimple.c (gimple_get_alias_set): Fix comment typo.
4103
4104 2009-10-28  Richard Guenther  <rguenther@suse.de>
4105
4106         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
4107         (free_lang_data): Unconditionally compute alias sets for all
4108         standard integer types.  Bail out if gate bailed out previously.
4109         Do not reset the types_compatible_p langhook.
4110         (gate_free_lang_data): Remove.
4111         (struct pass_ipa_free_lang_data): Enable unconditionally.
4112         * gimple.c (gimple_get_alias_set): Use the same alias-set for
4113         all pointer types.
4114
4115 2009-10-28  Richard Guenther  <rguenther@suse.de>
4116
4117         PR middle-end/41855
4118         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
4119         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
4120         (call_may_clobber_ref_p_1): Likewise.
4121         * tree-ssa-structalias.c (find_func_aliases): Likewise.
4122         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
4123
4124 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4125
4126         PR rtl-optimization/41812
4127
4128         Revert:
4129         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
4130
4131         * df-problems.c (df_md_scratch): New.
4132         (df_md_alloc, df_md_free): Allocate/free it.
4133         (df_md_local_compute): Only include live registers in init.
4134         (df_md_transfer_function): Prune the in-set computed by
4135         the confluence function, and the gen-set too.
4136
4137 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4138
4139         PR rtl-optimization/39715
4140         * combine.c (simplify_comparison): Use extensions to
4141         widen comparisons.  Try an ANDing first.
4142
4143 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4144
4145         PR rtl-optimization/40741
4146         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
4147         a small constant is cheap.
4148         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
4149         force_reg on the LHS.
4150         (xorsi3): Likewise, and split the XOR if the constant is complex
4151         and not in Thumb mode.
4152
4153 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4154
4155         * expmed.c (emit_store_flag): Check costs before
4156         transforming to the opposite representation.
4157
4158 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
4159
4160         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
4161         cstore result to DImode.
4162
4163 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4164
4165         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
4166         inside the unspec vector.
4167
4168 2009-10-27  Richard Henderson  <rth@redhat.com>
4169
4170         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
4171
4172 2009-10-27  Richard Henderson  <rth@redhat.com>
4173
4174         PR c++/41819
4175         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
4176         eh_region_may_contain_throw; update users.
4177         (eh_region_may_contain_throw): New function.
4178         (lower_catch): Check flag_exceptions before creating exception region.
4179         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
4180         (lower_cleanup): Tidy existing flag_exceptions check to match.
4181
4182 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
4183
4184         PR/41799
4185         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
4186         * config/i386/mingw.opt: Add fset-stack-executable.
4187         * config/i386/i386.c (ix86_trampoline_init): Make call to
4188         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
4189         defined and its value is not zero.
4190         * doc/invoke.texi
4191
4192 2009-10-27  Richard Guenther  <rguenther@suse.de>
4193
4194         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
4195         handle calls to externally visible functions like in regular mode.
4196         (create_variable_info_for): Do not create function infos here.
4197         (have_alias_info): Remove write-only variable.
4198         (solve_constraints): New function split out from common code
4199         in compute_points_to_sets and ipa_pta_execute.
4200         (compute_points_to_sets): Adjust.
4201         (ipa_pta_execute): Likewise.  Handle clones and externally visible
4202         functions like in non-IPA mode.
4203
4204 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
4205
4206         PR c/41842
4207         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
4208         error_mark_node.
4209
4210 2009-10-27  Richard Guenther  <rguenther@suse.de>
4211
4212         * tree-complex.c (expand_complex_div_wide): Check for
4213         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
4214
4215 2009-10-27  Revital Eres  <eres@il.ibm.com>
4216
4217         PR tree-optimization/40648
4218         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
4219         Change decision of when to peel for alignment.
4220
4221 2009-10-27  Richard Guenther  <rguenther@suse.de>
4222
4223         PR lto/41821
4224         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
4225
4226 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
4227
4228         PR bootstrap/41451
4229         * fold-const.c (fold_binary_loc): Do not call
4230         protected_set_expr_location.
4231
4232 2009-10-27  Wei Guozhi  <carrot@google.com>
4233
4234         PR target/41705
4235         * target.h (have_conditional_execution): Add a new target hook
4236         function.
4237         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
4238         * targhooks.h (default_have_conditional_execution): Likewise.
4239         * targhooks.c (default_have_conditional_execution): Likewise.
4240         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
4241         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
4242         (arm_have_conditional_execution): New function.
4243         * ifcvt.c (noce_process_if_block, find_if_header,
4244         cond_exec_find_if_block, dead_or_predicable): Change the usage of
4245         macro HAVE_conditional_execution to a target hook call.
4246         * recog.c (peephole2_optimize): Likewise.
4247         * sched-rgn.c (add_branch_dependences): Likewise.
4248         * final.c (asm_insn_count, final_scan_insn): Likewise.
4249         * bb-reorder.c (HAVE_conditional_execution): Remove it.
4250
4251 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4252             Michael Meissner  <meissner@linux.vnet.ibm.com>
4253             Ulrich Weigand  <uweigand@de.ibm.com>
4254
4255         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
4256         * config/spu/spu_cache.h: New file.
4257
4258         * config/spu/cachemgr.c: New file.
4259         * config/spu/cache.S: New file.
4260
4261         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
4262         (ADDR_SPACE_EA): Define.
4263         (TARGET_ADDR_SPACE_KEYWORDS): Define.
4264         * config/spu/spu.c (EAmode): New macro.
4265         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
4266         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
4267         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
4268         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
4269         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
4270         (TARGET_ADDR_SPACE_CONVERT): Likewise.
4271         (TARGET_ASM_SELECT_SECTION): Likewise.
4272         (TARGET_ASM_UNIQUE_SECTION): Likewise.
4273         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
4274         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
4275         (ea_symbol_ref): New function.
4276         (spu_legitimate_constant_p): Handle __ea qualified addresses.
4277         (spu_addr_space_legitimate_address_p): New function.
4278         (spu_addr_space_legitimize_address): Likewise.
4279         (cache_fetch): New global.
4280         (cache_fetch_dirty): Likewise.
4281         (ea_alias_set): Likewise.
4282         (ea_load_store): New function.
4283         (ea_load_store_inline): Likewise.
4284         (expand_ea_mem): Likewise.
4285         (spu_expand_mov): Handle __ea qualified memory references.
4286         (spu_addr_space_pointer_mode): New function.
4287         (spu_addr_space_address_mode): Likewise.
4288         (spu_addr_space_subset_p): Likewise.
4289         (spu_addr_space_convert): Likewise.
4290         (spu_section_type_flags): Handle "._ea" section.
4291         (spu_select_section): New function.
4292         (spu_unique_section): Likewise.
4293         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
4294         and __EA64__ predefined macros.
4295         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
4296         -matomic-updates switches.
4297
4298         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
4299         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
4300         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
4301         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
4302         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
4303         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
4304         $(T)cache128k.o): Likewise.
4305         ($(T)libgcc_%.a): Likewise.
4306
4307         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
4308         * config/spu/spu.opt (-mea32/-mea64): Add switches.
4309         (-maddress-space-conversion): Likewise.
4310         (-mcache-size=): Likewise.
4311         (-matomic-updates): Likewise.
4312         * doc/invoke.texi (-mea32/-mea64): Document.
4313         (-maddress-space-conversion): Likewise.
4314         (-mcache-size=): Likewise.
4315         (-matomic-updates): Likewise.
4316
4317 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4318             Michael Meissner  <meissner@linux.vnet.ibm.com>
4319             Ulrich Weigand  <uweigand@de.ibm.com>
4320
4321         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
4322
4323         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
4324         defined, add the named address space keywords.
4325         (c_addr_space_name): New function.
4326         (complete_array_type): Preserve named address space.
4327         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
4328         instead of targetm.valid_pointer_mode.
4329
4330         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
4331         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
4332         (ADDR_SPACE_KEYWORD): New macro.
4333         (c_addr_space_name): Add prototype.
4334
4335         * c-tree.h (struct c_declspecs): Add address_space member.
4336         (declspecs_add_addrspace): Add prototype.
4337
4338         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
4339
4340         * c-parser.c (c_parse_init): Add assertion.
4341         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
4342         (c_lex_one_token): Handle address space keywords.
4343         (c_token_starts_typename): Likewise.
4344         (c_token_starts_declspecs): Likewise.
4345         (c_parser_declspecs): Likewise.
4346         (c_parser_postfix_expression_after_paren_type): Diagnose compound
4347         literal within function qualified with named address space.
4348
4349         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
4350         address space qualifiers.
4351         (shadow_tag_warned): Warn about useless address space qualifiers.
4352         (quals_from_declspecs): Handle address space qualifiers.
4353         (grokdeclarator): Likewise.
4354         (build_null_declspecs): Likewise.
4355         (declspecs_add_addrspace): New function.
4356
4357         * c-typeck.c (addr_space_superset): New function.
4358         (qualify_type): Handle named address spaces.
4359         (composite_type): Likewise.
4360         (common_pointer_type): Likewise.
4361         (comp_target_types): Likewise.
4362         (build_conditional_expr): Likewise.
4363         (handle_warn_cast_qual): Likewise.
4364         (build_c_cast): Likewise.
4365         (convert_for_assignment): Likewise.
4366         (build_binary_op): Likewise.
4367         (pointer_diff): Handle named address spaces.  Use intermediate
4368         integer type of sufficient size if required.
4369
4370 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4371             Michael Meissner  <meissner@linux.vnet.ibm.com>
4372             Ulrich Weigand  <uweigand@de.ibm.com>
4373
4374         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
4375         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
4376         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
4377
4378         * target.h (struct target_def): Add pointer_mode, address_mode,
4379         and valid_pointer_mode to addr_space substructure.
4380         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
4381         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
4382         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
4383         (TARGET_ADDR_SPACE_HOOKS): Add them.
4384         * targhooks.c (target_default_pointer_address_modes_p): New function.
4385         * target.h (target_default_pointer_address_modes_p): Add prototype.
4386         * targhooks.c (default_addr_space_pointer_mode): New function.
4387         (default_addr_space_address_mode): Likewise.
4388         (default_addr_space_valid_pointer_mode): Likewise.
4389         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
4390         (default_addr_space_address_mode): Likewise.
4391         (default_addr_space_valid_pointer_mode): Likewise.
4392         * output.h (default_valid_pointer_mode): Move to ...
4393         * targhooks.h (default_valid_pointer_mode): ... here.
4394         * varasm.c (default_valid_pointer_mode): Move to ...
4395         * targhooks.c (default_valid_pointer_mode): ... here.
4396
4397         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
4398         instead of targetm.valid_pointer_mode.
4399
4400         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
4401         * tree.c (integer_pow2p): Likewise.
4402         (tree_log2): Likewise.
4403         (tree_floor_log2): Likewise.
4404         (signed_or_unsigned_type_for): Support pointer type of different size.
4405         (int_or_pointer_precision): New function.
4406         * tree.h (int_or_pointer_precision): Add prototype.
4407         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
4408         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
4409         incoming pointer type instead of POINTER_SIZE.
4410
4411         * tree.c (build_pointer_type): Use appropriate pointer mode
4412         instead of ptr_mode.
4413         (build_reference_type): Likewise.
4414         * expr.c (store_expr): Likewise.
4415         (expand_expr_addr_expr): Likewise.
4416         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
4417         * cfgexpand.c (expand_debug_expr): Likewise.
4418
4419         * auto-inc-dec.c: Include "target.h".
4420         (try_merge): Use appropriate address mode instead of Pmode.
4421         (find_inc): Likewise.
4422         * combine.c (find_split_point): Likewise.
4423         * cselib.c (cselib_record_sets): Likewise.
4424         * dse.c (replace_inc_dec): Likewise.
4425         (canon_address): Likewise.
4426         * var-tracking.c (replace_expr_with_values): Likewise.
4427         (count_uses): Likewise.
4428         (add_uses): Likewise.
4429         (add_stores): Likewise.
4430         * emit-rtl.c: Include "target.h".
4431         (adjust_address_1): Use appropriate address mode instead of Pmode.
4432         (offset_address): Likewise.
4433         * explow.c (break_out_memory_refs): Likewise.
4434         (memory_address_addr_space): Likewise.
4435         (promote_mode): Likewise.
4436         * expr.c (move_by_pieces): Likewise.
4437         (emit_block_move_via_loop): Likewise.
4438         (store_by_pieces): Likewise.
4439         (store_by_pieces_1): Likewise.
4440         (expand_assignment): Likewise.
4441         (store_constructor): Likewise.
4442         (expand_expr_addr_expr): Likewise.
4443         (expand_expr_real_1): Likewise.
4444         * cfgexpand.c (expand_debug_expr): Likewise.
4445         * ifcvt.c (noce_try_cmove_arith): Likewise.
4446         * regcprop.c (kill_autoinc_value): Likewise.
4447         * regmove.c (try_auto_increment): Likewise.
4448         * reload.c (find_reloads): Likewise.
4449         (find_reloads_address): Likewise.
4450         (find_reloads_address_1): Likewise.
4451         * sched-deps.c: Include "target.h".
4452         (sched_analyze_1): Use appropriate address mode instead of Pmode.
4453         (sched_analyze_2): Likewise.
4454         * sel-sched-dump.c: Include "target.h".
4455         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
4456         * stor-layout.c (layout_type): Likewise.
4457         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4458         (multiplier_allowed_in_address_p): Likewise.
4459         (get_address_cost): Likewise.
4460         * varasm.c (make_decl_rtl): Likewise.
4461
4462         * expr.c (expand_assignment): Always convert offsets to appropriate
4463         address mode.
4464         (store_expr): Likewise.
4465         (store_constructor): Likewise.
4466         (expand_expr_real_1): Likewise.
4467
4468         * reload.h (form_sum): Add MODE argument.
4469         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
4470         Update recursive calls.
4471         (subst_indexed_address): Update calls to form_sum.
4472
4473         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
4474         * tree-ssa-address.c: Include "target.h".
4475         (templates): Replace by ...
4476         (mem_addr_template_list): ... this new vector.
4477         (TEMPL_IDX): Handle address space numbers.
4478         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
4479         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
4480         instead of global cache.  Update call to gen_addr_rtx.
4481         (valid_mem_ref_p): Update call to addr_for_mem_ref.
4482         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
4483
4484         * rtl.h (convert_memory_address_addr_space): Add prototype.
4485         (convert_memory_address): Define as macro.
4486         * explow.c (convert_memory_address): Rename to ...
4487         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4488         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
4489         Update recursive calls.
4490         (memory_address_addr_space): Call convert_memory_address_addr_space.
4491         * expmed.c (make_tree): Likewise.
4492         * expr.c (expand_assignment): Likewise.
4493         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
4494         (expand_expr_addr_expr): Likewise.  Also, update call.
4495
4496         * alias.c (find_base_value): Guard pointer size optimizations.
4497         (find_base_term): Likewise.
4498         * rtlanal.c (nonzero_bits1): Likewise.
4499         (num_sign_bit_copies1): Likewise.
4500         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
4501
4502         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
4503         (emit-rtl.o): Likewise.
4504         (auto-inc-dec.o): Likewise.
4505         (sched-deps.o): Likewise.
4506
4507 2009-10-26  Ben Elliston  <bje@au.ibm.com>
4508             Michael Meissner  <meissner@linux.vnet.ibm.com>
4509             Ulrich Weigand  <uweigand@de.ibm.com>
4510
4511         * doc/extend.texi (Named Address Spaces): New section.
4512         * coretypes.h (addr_space_t): New type.
4513         (ADDR_SPACE_GENERIC): New define.
4514         (ADDR_SPACE_GENERIC_P): New macro.
4515
4516         * doc/tm.texi (Named Address Spaces): New section.
4517         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
4518         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
4519         (TARGET_ADDR_SPACE_SUBSET_P): Document.
4520         (TARGET_ADDR_SPACE_CONVERT): Document.
4521         * target.h (struct gcc_target): Add addr_space substructure.
4522         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
4523         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
4524         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
4525         (TARGET_ADDR_SPACE_CONVERT): Likewise.
4526         (TARGET_ADDR_SPACE_HOOKS): Likewise.
4527         (TARGET_INITIALIZER): Initialize addr_space hooks.
4528         * targhooks.c (default_addr_space_legitimate_address_p): New function.
4529         (default_addr_space_legitimize_address): Likewise.
4530         (default_addr_space_subset_p): Likewise.
4531         (default_addr_space_convert): Likewise.
4532         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
4533         (default_addr_space_legitimize_address): Likewise.
4534         (default_addr_space_subset_p): Likewise.
4535         (default_addr_space_convert): Likewise.
4536
4537         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
4538         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
4539         (MEM_ADDR_SPACE): New macro.
4540         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
4541         address space memory attribute.
4542         (mem_attrs_htab_hash): Handle address space memory attribute.
4543         (mem_attrs_htab_eq): Likewise.
4544         (set_mem_attributes_minus_bitpos): Likewise.
4545         (set_mem_alias_set): Likewise.
4546         (set_mem_align): Likewise.
4547         (set_mem_expr): Likewise.
4548         (set_mem_offset): Likewise.
4549         (set_mem_size): Likewise.
4550         (adjust_address_1): Likewise.
4551         (offset_address): Likewise.
4552         (widen_memoy_address): Likewise.
4553         (get_spill_slot_decl): Likewise.
4554         (set_mem_attrs_for_spill): Likewise.
4555         (set_mem_addr_space): New function.
4556         * emit-rtl.h (set_mem_addr_space): Add prototype.
4557         * print-rtl.c (print_rtx): Print address space memory attribute.
4558         * expr.c (expand_assignment): Set address space memory attribute
4559         of generated MEM RTXes as appropriate.
4560         (expand_expr_real_1): Likewise.
4561         * cfgexpand.c (expand_debug_expr): Likewise.
4562         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
4563
4564         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
4565         size of "spare" bitfield.
4566         (TYPE_ADDR_SPACE): New macro.
4567         (ENCODE_QUAL_ADDR_SPACE): Likewise.
4568         (DECODE_QUAL_ADDR_SPACE): Likewise.
4569         (CLEAR_QUAL_ADDR_SPACE): Likewise.
4570         (KEEP_QUAL_ADDR_SPACE): Likewise.
4571         (TYPE_QUALS): Encode type address space.
4572         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
4573         * tree.c (set_type_quals): Set type address space.
4574         (build_array_type): Inherit array address space from element type.
4575         * print-tree.c (print_node_brief): Print type address space.
4576         (print_node): Likewise.
4577         * tree-pretty-print.c (dump_generic_node): Likewise.
4578
4579         * explow.c (memory_address): Rename to ...
4580         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
4581         Use address-space aware variants of memory address routines.
4582         * recog.c (memory_address_p): Rename to ...
4583         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4584         Use address-space aware variants of memory address routines.
4585         (offsettable_address_p): Rename to ...
4586         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
4587         Use address-space aware variants of memory address routines.
4588         * reload.c (strict_memory_address_p): Rename to ...
4589         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4590         Use address-space aware variants of memory address routines.
4591         (maybe_memory_address_p): Rename to ...
4592         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
4593         Use address-space aware variants of memory address routines.
4594         * expr.h (memory_address_addr_space): Add prototype.
4595         (memory_address): Define as macro.
4596         * recog.h (memory_address_addr_space_p): Add prototype.
4597         (memory_address_p): Define as macro.
4598         (offsettable_address_addr_space_p): Add prototype.
4599         (offsettable_address_p): Define as macro.
4600         (strict_memory_address_addr_space_p): Add prototype.
4601         (strict_memory_address_p): Define as macro.
4602
4603         * combine.c (find_split_point): Use address-space aware variants
4604         of memory address routines.
4605         * emit-rtl.c (operand_subword): Likewise.
4606         (change_address_1): Likewise.
4607         (adjust_address_1): Likewise.
4608         (offset_address): Likewise.
4609         * expr.c (emit_move_insn): Likewise.
4610         (expand_assignment): Likewise.
4611         (expand_expr_real_1): Likewise.
4612         * recog.c (verify_changes): Likewise.
4613         (general_operand): Likewise.
4614         (offsettable_memref_p): Likewise.
4615         (offsettable_nonstrict_memref_p): Likewise.
4616         (constrain_operands): Likewise.
4617         * reload.c (get_secondary_mem): Likewise.
4618         (find_reloads_toplev): Likewise.
4619         (find_reloads_address): Likewise.
4620         (find_reloads_subreg_address): Likewise.
4621         * reload1.c (reload): Likewise.
4622         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
4623         * rtl.h (address_cost): Add ADDRSPACE argument.
4624         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
4625         aware variant of memory address routines.
4626         * loop-invariant.c (create_new_invariant): Update address_cost call.
4627         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
4628         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
4629         Use address-space aware variant of memory address routines.
4630         (propagate_rtx_1): Update call to should_replace_address.
4631         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
4632         argument.
4633         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
4634         ADDRSPACE argument.  Use per-address-space instead of global cache.
4635         Use address-space aware variant of memory address routines.
4636         (get_address_cost): Likewise.
4637         (get_computation_cost_at): Update calls.
4638         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
4639         Use address-space aware variant of memory address routines.
4640         (create_mem_ref_raw): Update call to valid_mem_ref_p.
4641         (most_expensive_mult_to_index): Update call to
4642         multiplier_allowed_in_address_p.
4643
4644         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
4645         attribute to indicate named address spaces.
4646
4647         * varasm.c (get_variable_section): DECLs in named address spaces
4648         cannot be "common".
4649
4650         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
4651         for addresses in a non-generic address space.
4652
4653         * expr.c (emit_block_move_hints): Do not use libcalls for
4654         memory in non-generic address spaces.
4655         (clear_storage_hints): Likewise.
4656         (expand_assignment): Likewise.
4657
4658         * fold-const.c (operand_equal_p): Expressions refering to different
4659         address spaces are not equivalent.
4660
4661         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
4662         spaces are not equivalent.
4663         (rtx_equal_p): Likewise.
4664         * cse.c (exp_equiv_p): Likewise.
4665         * jump.c (rtx_renumbered_equal_p): Likewise.
4666         * reload.c (operands_match_p): Likewise.
4667
4668         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
4669         address spaces may alias.
4670         (true_dependence): Likewise.
4671         (canon_true_dependence): Likewise.
4672         (write_dependence_p): Likewise.
4673
4674         * dse.c (canon_address): Handle named address spaces.
4675         * ifcvt.c (noce_try_cmove_arith): Likewise.
4676
4677         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
4678         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
4679         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
4680         to handle conversions between different address spaces.
4681         * fold-const.c (fold_convert_loc): Likewise.
4682         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
4683         * tree-pretty-print.c (dump_generic_node): Likewise.
4684         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
4685         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4686         * tree-inline.c (estimate_operator_cost): Likewise.
4687         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
4688         to different address spaces are not useless.
4689
4690 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
4691
4692         PR bootstrap/41345
4693         * cfgcleanup.c (trivially_empty_bb_p): New function.
4694         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
4695
4696         PR debug/41828
4697         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
4698         add_name_and_src_coords_attributes, gen_namespace_die,
4699         dwarf2out_set_name): Handle dwarf2_name returning NULL.
4700
4701 2009-10-26  Nick Clifton  <nickc@redhat.com>
4702
4703         * config.gcc: Add support for RX target.
4704         * config/rx: New directory.
4705         * config/rx/constraints.md: New file.
4706         * config/rx/predicates.md: New file.
4707         * config/rx/rx.c: New file.
4708         * config/rx/rx.h: New file.
4709         * config/rx/rx.md: New file.
4710         * config/rx/rx.opt: New file.
4711         * config/rx/rx-protos.h: New file.
4712         * config/rx/t-rx: New file.
4713         * doc/extend.texi: Document RX function attributes.
4714         * doc/invoke.texi: Document RX specific command line options.
4715         * doc/contrib.texi: Document RX contribution.
4716         * doc/md.texi: Document RX constraints.
4717         * doc/install.texi: Document RX support.
4718
4719 2009-10-26  Michael Matz  <matz@suse.de>
4720
4721         PR tree-optimization/41783
4722         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
4723         case for simple diamonds.
4724         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
4725         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
4726         argument, use alias oracle to skip some vdefs.
4727         (phi_translate_1): Change call to above, don't allocate new
4728         value ids if they can stay the same.
4729         (compute_avail): Allow vuse walking when looking up references.
4730
4731 2009-10-26  Richard Guenther  <rguenther@suse.de>
4732
4733         PR tree-optimization/41826
4734         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
4735         access to re-allocated vector fields.
4736
4737 2009-10-26  Richard Guenther  <rguenther@suse.de>
4738
4739         * graphite-sese-to-poly.c (check_poly_representation): Fix
4740         compile without checking.
4741
4742 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
4743
4744         PR fortran/41714
4745         * gimple.h (tree_annotate_all_with_location): Remove prototype.
4746         * gimplify.c (tree_should_carry_location_p,
4747         tree_annotate_one_with_location,tree_annotate_all_with_location):
4748         Remove obsolete functions.
4749
4750 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
4751
4752         PR target/41813
4753         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
4754
4755 2009-10-25  Richard Guenther  <rguenther@suse.de>
4756
4757         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
4758         Stream DECL_RESTRICTED_P.
4759         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
4760
4761 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
4762
4763         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
4764         a note when expanding to nothing.
4765
4766 2009-10-25  Richard Guenther  <rguenther@suse.de>
4767
4768         PR middle-end/41814
4769         * tree.c (find_decls_types_r): Deal with Java overloading
4770         BINFO_VIRTUALS for its own purpose.
4771
4772 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
4773
4774         * config/mips/predicates.md (hilo_operand): New predicate.
4775         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
4776         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
4777         splitter part from here ...:
4778         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
4779         op0 and op4 to match the DINS case.
4780         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
4781
4782 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4783
4784         PR middle-end/19154
4785         * avr.md (QIDI): Add new mode iterator.
4786         (sbrx_branch<mode>): Create new zero extract bit, test and jump
4787         patterns for all QI thru DI modes combinations.
4788         (sbrx_and_branch<mode>): Create new and based bit test and jump
4789         patterns for QI thru SI modes.
4790         avr.c (avr_out_sbxx_branch): Use only bit number.
4791
4792 2009-10-24  Jan Hubicka  <jh@suse.cz>
4793
4794         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
4795         to memory.
4796         (analyze_function): When analyzing noreturn nothrow call, do not
4797         compute written stats; free bitmaps of vars early if possible.
4798         (generate_summary): Only update bitmaps if computed.
4799         (propagate): Only dump bitmaps if computed.
4800         (ipa_reference_read_summary): Fix pasto.
4801
4802 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
4803
4804         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
4805         (aliasing_component_refs_p): ...this.  Return true if there is no
4806         common base and the base access types have the same alias set.
4807         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
4808         (indirect_refs_may_alias_p): Likewise.
4809
4810 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4811
4812         PR c/40033
4813         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
4814         a C_MAYBE_CONST_EXPR.
4815
4816 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
4817
4818         PR target/41787
4819         * config/rs6000/rs6000.c (struct machine_function): Add
4820         vsx_or_altivec_used_p to record if vector types are used.
4821         (rs6000_expand_to_rtl_hook): Rename from
4822         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
4823         any vector operations, so if there are, we can set VRSAVE to
4824         non-zero when only floating point vector registers are used.
4825         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
4826         (rs6000_check_vector_mode): Inner function to check if vector
4827         types are used in the code.
4828         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
4829         vector instructions are used.
4830
4831         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
4832         Indicate that VSX registers which overlap floating point
4833         registers, can't be used across a call, since the ABI only states
4834         the scalar part of the register will be saved and restored.
4835
4836 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
4837
4838         PR c/41673
4839         * alias.c (get_alias_set): Call langhook before returning 0 for
4840         types with structural equality.
4841         * c-common.c (c_common_get_alias_set): Use alias set of element
4842         type for arrays with structural comparison.
4843
4844 2009-10-23  Richard Guenther  <rguenther@suse.de>
4845
4846         PR middle-end/41805
4847         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
4848         gimple_call_nothrow_p.
4849
4850 2009-10-23  Richard Guenther  <rguenther@suse.de>
4851
4852         PR tree-optimization/41778
4853         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
4854         redundancy along a path in the CFG we want to optimize for speed
4855         is going to be removed.
4856         (execute_pre): Do partial-PRE only if the function is to be
4857         optimized for speed.
4858         (gate_pre): Do not turn off all of PRE when not optimizing a
4859         function for speed.
4860
4861 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4862
4863         * builtins.c (fold_builtin_cabs): Use validate_arg().
4864         (fold_builtin_cexp): Fix if-logic.
4865         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
4866
4867 2009-10-22  Jeff Law  <law@redhat.com>
4868
4869         * ira-lives.c (process_single_reg_class_operands): Update the
4870         hard reg costs for all the hard registers desired by the
4871         single reg class operand.
4872
4873 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4874
4875         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
4876         for rtxes that aren't handled specially.
4877
4878 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4879
4880         * rtl.h (shallow_copy_rtvec): Declare.
4881         * rtl.c (shallow_copy_rtvec): New function.
4882         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
4883         rtx field if the subrtx has changed.
4884
4885 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
4886
4887         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
4888         (m32c_function_value): Make static, add new 'outgoing' argument.
4889         (m32c_libcall_value): Make static, add new 'fun' argument.
4890         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4891         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4892         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
4893         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
4894         (m32c_function_value, m32c_libcall_value): Delete declaration.
4895
4896 2009-10-22  Diego Novillo  <dnovillo@google.com>
4897
4898         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
4899
4900 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4901
4902         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
4903         space.
4904
4905 2009-10-22  Richard Guenther  <rguenther@suse.de>
4906
4907         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
4908         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
4909         (lto_symtab_merge): Do not merge cgraph nodes here.
4910         (lto_symtab_resolve_can_prevail_p): Simplify.
4911         (lto_symtab_resolve_symbols): Store cgraph node.
4912         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
4913         functions from the symtab.
4914         (lto_symtab_merge_cgraph_nodes_1): New function.
4915         (lto_symtab_merge_cgraph_nodes): Likewise.
4916
4917 2009-10-22  Richard Guenther  <rguenther@suse.de>
4918
4919         PR lto/41791
4920         * lto-streamer-out.c (lto_output_location): Stream the
4921         system header flag.
4922         * lto-streamer-in.c (lto_input_location): Likewise.
4923
4924 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4925
4926         * cfgloopmanip.c (duplicate_subloops): Export.
4927         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
4928         (transform_to_exit_first_loop): Duplicate bbs starting from
4929         header up to loop->latch instead of exit->src.
4930         Initialize control variable to the correct number of iterations.
4931         (gather_scalar_reductions): Do not register double reductions.
4932         (parallelize_loops): Dump which loop is tested.
4933         Indicate whether the parallelized loop is inner or not.
4934         Remove the innermost-loop requirement.
4935         * cfgloop.h (duplicate_subloops): Export.
4936         * tree-cfg.c (add_phi_args_after_redirect): New function.
4937         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
4938         Call duplicate_subloops.
4939         Update number of iterations at the exit condition.
4940         Don't redirect nexits always to the loop exit.
4941         Redirect copied edges from latch to the loop exit.
4942
4943 2009-10-22  Jan Hubicka  <jh@suse.cz>
4944
4945         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
4946         flag_ltrans check.
4947         * ipa-inline.c (cgraph_mark_inline_edge,
4948         cgraph_decide_inlining_of_small_function,
4949         cgraph_decide_inlining, inline_read_summary): Disable indirect
4950         inlining for WPA for time being.
4951
4952         PR tree-optimize/40556
4953         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
4954
4955 2009-10-22  Richard Guenther  <rguenther@suse.de>
4956
4957         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
4958         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
4959
4960 2009-10-22  Jan Hubicka  <jh@suse.cz>
4961
4962         PR lto/41730
4963         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
4964         global vars.
4965         (check_call): Handle only indirect calls.
4966         (propagate_bits): Update comment.
4967         (write_node_summary_p): Turn bogus check to assert.
4968         (ipa_reference_write_summary): Stream calls_read_all properly.
4969         (ipa_reference_read_summary): Stream in calls_read_all properly.
4970         (read_write_all_from_decl): New function.
4971         (propagate): Handle OVERWRITABLE nodes and external calls here.
4972         * ipa-pre-const.c (check_call): In IPA mode handle indirect
4973         calls only.
4974         (analyze_function): Do not check visibility here.
4975         (add_new_function): We summary OVERWRITABLE too.
4976         (generate_summary): Stream OVERWRITABLE nodes too.
4977         (propagate): Handle external calls and OVERWRITABLE nodes here.
4978         (local_pure_const): Check visibility here.
4979
4980 2009-10-22  Jan Hubicka  <jh@suse.cz>
4981
4982         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
4983         (pass_ipa_cp): Register them.
4984         (ipcp_init_stage): Analyze all functions for whopr/lto.
4985         (ipcp_propagate_stage): Skip external calls.
4986         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
4987         * ipa-reference.c (write_node_summary_p): Fix thinko about
4988         availability.
4989         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
4990         when in ltrans, skip executing of ipa passes since everything
4991         should've been done.
4992         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
4993         (inline_generate_summary): Likewise.
4994         (inline_read_summary): New function.
4995         (inline_write_summary): New function.
4996         (pass_ipa_inline): Register new hooks.
4997         * ipa-prop.c: Inlcude lto-streamer.h
4998         (ipa_edge_args_vector): Update declaration.
4999         (ipa_count_arguments, ipa_compute_jump_functions,
5000         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
5001         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
5002         ipa_read_node_info): New static functions.
5003         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
5004         (duplicate_array): Use xmalloc.
5005         (duplicate_ggc_array): New.
5006         (ipa_edge_duplication_hook): Use it.
5007         (ipa_update_after_lto_read): New function.
5008         * ipa-prop.h (ipa_prop_write_jump_functions,
5009         ipa_prop_read_jump_functions): Declare.
5010         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
5011         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
5012         (ipa_edge_args_vector): Move into GGC.
5013         (ipa_check_create_edge_args): Update.
5014         (ipa_update_after_lto_read): New.
5015         * passes.c (ipa_write_summaries_1): When in wpa, do not write
5016         summaries.
5017         (ipa_read_summaries): When in ltrans, so not read summaries.
5018         * lto-streamer.c (lto_get_section_name): Add
5019         LTO_section_jump_functions.
5020         * lto-streamer.h (LTO_section_jump_functions): New section.
5021         (produce_asm): Declare.
5022         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
5023         * lto-streamer-out.c (produce_asm): Export.
5024         * lto-streamer-in.c: Include tree-pass.h
5025         (input_function): Free dominance info when done.
5026         (lto_read_body): Push ipa_inline in ltrans stage.
5027         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
5028         * Makefile.in (GTFILES): Add ipa-prop.h
5029
5030 2009-10-22  Matthias Klose  <doko@ubuntu.com>
5031
5032         * doc/install.texi: Document --enable-browser-plugin.
5033
5034 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
5035
5036         * doc/invoke.texi (fira-loop-pressure): Update default value.
5037         * opts.c (decode_options): Remove default value setting for
5038         flag_ira_loop_pressure.
5039         * config/ia64/ia64.c (ia64_override_options): Set
5040         flag_ira_loop_pressure up for -O3.
5041         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
5042
5043 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
5044
5045         PR tree-optimization/41497
5046         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
5047         chrec_dont_know if the evolution function returned by follow_ssa_edge
5048         is constant in the analyzed loop and is not compatible with the
5049         initial value before the loop.
5050         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
5051
5052 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
5053
5054         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
5055
5056 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
5057
5058         PR other/25507
5059         * doc/invoke.texi: Document -print-multi-os-directory.
5060
5061 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
5062
5063         PR c++/41313
5064         * gcc/config/darwin10.h: Use default_emit_unwind_label.
5065         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
5066         when darwin_emit_unwind_label is used.
5067
5068 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
5069
5070         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
5071         order of checks.
5072
5073 2009-10-20  Richard Henderson  <rth@redhat.com>
5074
5075         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
5076         before emit_post_landing_pad.
5077
5078 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
5079
5080         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
5081         Use when calling rtx_costs.
5082         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
5083         global optimize_size.  Pass speed to mips_binary_cost.
5084
5085 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
5086
5087         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
5088         of TREE_CONSTANT.
5089
5090 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
5091
5092         * rtl.h (simplify_replace_fn_rtx): Declare.
5093         (wrap_constant, unwrap_constant): Delete.
5094         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
5095         (expand_debug_expr): Don't call wrap_constant.
5096         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
5097         (auto_adjust_pair): Fold into...
5098         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
5099         Just return a new value.
5100         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
5101         otherwise use simplify_replace_rtx.
5102         * cselib.c (wrap_constant): Reinstate old definition.
5103         (cselib_expand_value_rtx_1): Don't wrap constants.
5104         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
5105         simplify_replace_rtx.
5106         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
5107         * reload1.c (reload): Skip all uses for an insn before adjusting it.
5108         Use simplify_replace_rtx.
5109         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
5110         adapted from...
5111         (simplify_replace_rtx): ...here.  Turn into a wrapper for
5112         simplify_replace_fn_rtx.
5113         (simplify_unary_operation): Don't unwrap CONSTs.
5114         * var-tracking.c (check_wrap_constant): Delete.
5115         (vt_expand_loc_callback): Don't call it.
5116         (vt_expand_loc): Likewise.
5117
5118 2009-10-20  Pascal Obry  <obry@adacore.com>
5119             Eric Botcazou  <ebotcazou@adacore.com>
5120
5121         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
5122
5123 2009-10-20  Michael Matz  <matz@suse.de>
5124
5125         * loop-invariant.c (create_new_invariant): Use different magic number.
5126
5127 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
5128
5129         PR target/39247
5130         * arm.c (arm_override_options): Forcibly disable hot/cold block
5131         partitioning.
5132
5133 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
5134
5135         PR debug/41739
5136         * haifa-sched.c (try_ready): Skip debug deps updating speculation
5137         status.
5138
5139 2009-10-20  Richard Guenther  <rguenther@suse.de>
5140
5141         * ggc-page.c: Include cfgloop.h.
5142         (struct max_alignment): Drop long double, add void *.
5143         (extra_order_size_table): Add low non-power-of-two multiples
5144         of MAX_ALIGNMENT.  Drop small type-based entries, add
5145         tree_type, cgraph_node and loop.
5146         * alloc-pool.c (struct allocation_object_def): Drop long double
5147         aligning element.
5148
5149 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
5150
5151         PR debug/41340
5152         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
5153         referenced just in DEBUG_INSNs.
5154
5155 2009-10-20  Richard Guenther  <rguenther@suse.de>
5156
5157         PR lto/41761
5158         * gimple.c (gimple_register_type): Make sure we register
5159         the types main variant first.
5160
5161 2009-10-20  Richard Guenther  <rguenther@suse.de>
5162
5163         * gimple.c (gimple_types_compatible_p): Simplify.  Move
5164         cheap checks before hashtable queries.  Add checks for
5165         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
5166
5167 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
5168
5169         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
5170         without size or with size that can't be represented as a host integer.
5171
5172 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
5173
5174         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
5175         the removal of a debug stmt as a significant change.
5176
5177 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
5178
5179         * config/s390/s390.md: Added agen condition to operand
5180         forwarding bypasses.  Added bypass for early address generation
5181         use of int results.  Updated comments.
5182
5183 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
5184
5185         * config/i386/i386.c: Remove signal.h #include.
5186
5187 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
5188
5189         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
5190         * doc/rtl.texi: Document ss_abs.
5191
5192 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
5193
5194         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
5195         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
5196         instead of C_LEX_RAW_STRINGS.
5197         (lex_string): Handle CPP_UTF8STRING.
5198         * c-parser.c (c_parser_postfix_expression): Likewise.
5199         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
5200         (C_LEX_STRING_NO_JOIN): ... this.
5201
5202 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
5203
5204         * config/cris/cris.c (cris_function_value, cris_libcall_value,
5205         cris_function_value_regno_p): New functions.
5206         (cris_promote_function_mode): Update comment.
5207         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
5208         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
5209         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
5210         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
5211
5212 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
5213
5214         * unwind-dw2.c (execute_stack_op): Fix operand order for
5215         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
5216
5217 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
5218
5219         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
5220         (lower_stmt) <GIMPLE_BIND>: Add comment.
5221         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
5222         and return.
5223         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
5224         Otherwise lower it and set cannot_fallthru to true.
5225         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
5226         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
5227         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
5228         to true for a noreturn call.  Do not remove statements.
5229         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
5230         Set cannot_fallthru to false on function exit.
5231         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
5232         <GIMPLE_ASSIGN>: Remove.
5233
5234 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5235
5236         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
5237
5238 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5239
5240         * config/s390/s390.c (s390_z10_optimize_cmp): Use
5241         next/prev_active_insn to skip DEBUG_INSNs as well.
5242
5243 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
5244
5245         * config/arm/arm.c (output_move_neon): Use DImode in call to
5246         adjust_address.
5247
5248 2009-10-19  Matthias Klose  <doko@ubuntu.com>
5249
5250         PR target/40134
5251         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
5252
5253 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
5254
5255         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
5256
5257 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
5258
5259         PR middle-end/41738
5260         * optabs.c (expand_binop): Make mode of shift count expression mode
5261         of shift count not target.
5262         Remove indent nit.
5263
5264 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
5265
5266         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
5267         case.  Force using values to replace references within the statement.
5268         (convert_local_reference_stmt): Likewise.
5269
5270 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
5271
5272         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
5273         remove a subsequent GOTO or RETURN statement.
5274
5275 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
5276
5277         * config/avr.md (*movqi): Add zero as equally preferable constraint
5278         as general register.
5279         (*movhi): Ditto.
5280
5281 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
5282
5283         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
5284
5285 2009-10-17  Richard Guenther  <rguenther@suse.de>
5286
5287         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
5288
5289 2009-10-17  Richard Guenther  <rguenther@suse.de>
5290
5291         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
5292         operands in COMPONENT_REFs.
5293
5294 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
5295
5296         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
5297         if not defined. Change type of second argument to const_rtx.
5298         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
5299         macro not defined.
5300         * targhooks.h (default_libcall_value): Update prototype.
5301         * target.h (struct gcc_target): Change type of second argument of
5302         libcall_value to const_rtx.
5303         * config/arm/arm.c (arm_libcall_value): Change type of second argument
5304         to const_rtx.
5305         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
5306         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
5307
5308 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
5309
5310         PR debug/40521
5311         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
5312         * cgraphunit.c (cgraph_optimize): Call it.
5313         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
5314         (dwarf2out_assembly_start): ... here.  New hook.
5315         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
5316         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
5317         hook.
5318         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
5319         * sdbout.c (sdb_debug_hooks): Likewise.
5320         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
5321         (vmsdbgout_assembly_start): New hook.
5322
5323 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
5324
5325         * rtl.h (RTL_LOCATION): Fix typo.
5326
5327 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
5328
5329         * print-rtl.c (print_rtx): Print locators in asm_operands
5330         and asm_input.
5331
5332 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
5333
5334         PR debug/41535
5335         * sched-deps.c (depl_on_debug_p): New.
5336         (attach_dep_link): Reject debug deps before nondebug deps.
5337         (add_to_deps_list): Insert debug deps after nondebug deps.
5338         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
5339         deps.
5340         (sd_add_dep): Do not reject debug deps.
5341         (add_insn_mem_dependence): Don't count debug deps.
5342         (remove_from_deps): Likewise.
5343         (sched_analyze_2): Set up mem deps on debug insns.
5344         (sched_analyze_insn): Record reg uses for deps on debug insns.
5345         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
5346         try_ready nondebug insn after debug insn.
5347         * ddg.c (create_ddg_dep_from_intra_loop_link,
5348         create_ddg_dep_no_link): Don't reject debug deps.
5349
5350 2009-10-16  Richard Guenther  <rguenther@suse.de>
5351
5352         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
5353         (maybe_merge_incomplete_and_complete_type): Likewise.
5354         (lto_symtab_merge): Do not call them.  Do not warn for
5355         complete vs. incomplete compatible types.
5356         (lto_symtab_merge_decls_2): Simplify.
5357         * gimple.c (gimple_force_type_merge): Remove.
5358         (gimple_types_compatible_p): Make it static.
5359         * gimple.h (gimple_force_type_merge): Remove.
5360         (gimple_types_compatible_p): Likewise.
5361
5362 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
5363
5364         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
5365         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
5366
5367 2009-10-16  Richard Guenther  <rguenther@suse.de>
5368
5369         PR tree-optimization/41728
5370         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
5371         if fold_stmt did anything.
5372
5373 2009-10-16  Richard Guenther  <rguenther@suse.de>
5374
5375         PR lto/41715
5376         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
5377         (maybe_fixup_handled_component): New function.
5378         (input_gimple_stmt): Fixup mismatched decl replacements.
5379
5380 2009-10-16  Richard Guenther  <rguenther@suse.de>
5381
5382         PR lto/41713
5383         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
5384         the same as VAR_DECL.
5385
5386 2009-10-16  Richard Guenther  <rguenther@suse.de>
5387
5388         * gimple.c (iterative_hash_gimple_type): For integer types
5389         also hash their minimum and maximum values and the string flag.
5390         For array types hash their domain and the string flag.
5391
5392 2009-10-16  Richard Guenther  <rguenther@suse.de>
5393
5394         * gimple.c (gimple_types_compatible_p): Restrict completing
5395         types to record or unions.  Simplify completion.
5396         Do not merge records or unions with different
5397         TYPE_STRUCTURAL_EQUALITY_P tag.
5398         (iterative_hash_gimple_type): Restrict non-recursing into
5399         pointer targets for records and unions.
5400
5401 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5402
5403         PR debug/41717
5404         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
5405         * dwarf2out.c (mem_loc_descriptor): Don't handle
5406         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
5407         punt if it is not lowpart subreg or if inner mode isn't
5408         MODE_INT.
5409
5410 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5411
5412         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
5413         investigating previous or next insns.
5414
5415 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
5416
5417         * tree-sra.c (build_ref_for_offset_1): Update comment.
5418
5419 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
5420
5421         * config/s390/s390.md (atype): Added missing values.
5422
5423 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5424
5425         PR target/41702
5426         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
5427         (casesi64p): Update pattern to reflect above.
5428
5429 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
5430
5431         PR rtl-optimization/41697
5432         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
5433
5434 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
5435
5436         PR target/23983
5437         * config/rs6000/predicates.md: Update copyright year.
5438         * config/rs6000/altivec.md: Ditto.
5439
5440         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
5441         (MD_INCLUDES): Add a2.md.
5442
5443         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
5444         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
5445         (builtin_classify): New static vector to classify various builtins
5446         to get the tree attributes correct.
5447         (def_builtin): Set the attributes of builtins based on what the
5448         builtin does (i.e. memory operation, floating point, saturation
5449         need special attributes, others are pure functions).
5450
5451         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
5452         the builtins.
5453         (enum rs6000_builtins): Include rs6000-builtin.def to define the
5454         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
5455         RS6000_BUILTIN_COUNT.
5456         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
5457         MAX_RS6000_BUILTINS.
5458
5459         * config/rs6000/rs6000-builtin.def: New file that combines the
5460         builtin enumeration name and attributes.
5461
5462 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
5463
5464         * config/i386/linux.h (ASM_SPEC): Add --32.
5465
5466 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5467
5468         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
5469         and DW_TAG_template_alias.
5470         (dwarf_attr_name): Handle DW_AT_main_subprogram,
5471         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
5472         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
5473         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
5474         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
5475         and DW_AT_GNU_odr_signature.
5476         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
5477         DW_FORM_flag_present and DW_FORM_ref_sig8.
5478         (output_signature): Only print name on the first byte.
5479         (output_die): Likewise for dw_val_class_data8.
5480
5481 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
5482
5483         * doc/invoke.texi: Clarify that most optimizations are not enabled
5484         without -O.
5485
5486 2009-10-15  Richard Guenther  <rguenther@suse.de>
5487
5488         PR lto/41668
5489         * gimple.c (compare_type_names_p): Handle anonymous names
5490         differently based on new mode argument.
5491         (gimple_types_compatible_p): For structs also compare the tags.
5492         (iterative_hash_type_name): Rename to ...
5493         (iterative_hash_name): ... this.  Hash all names.
5494         (iterative_hash_gimple_type): Fix hashing the struct tag of
5495         pointer targets.  Hash field decl names.
5496
5497 2009-10-15  Richard Guenther  <rguenther@suse.de>
5498
5499         PR lto/41669
5500         * gimple.c (gimple_get_alias_set): Avoid recursing on
5501         invalid type topology.
5502
5503 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5504
5505         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
5506
5507 2009-10-15  Richard Guenther  <rguenther@suse.de>
5508
5509         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
5510
5511 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
5512
5513         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
5514         add --with-tune{,-32,-64} configured default for -mtune if explicit
5515         -mcpu is used.
5516
5517 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
5518
5519         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
5520
5521 2009-10-14  DJ Delorie  <dj@redhat.com>
5522
5523         * config/h8300/h8300.c (F): New.
5524         (Fpa): New.
5525         (h8300_emit_stack_adjustment): Call them.
5526         (push): Likewise.
5527         (h8300_push_pop): Likewise.
5528         (h8300_expand_prologue): Likewise.
5529         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
5530         (MUST_USE_SJLJ_EXCEPTIONS): Define.
5531         (INCOMING_RETURN_ADDR_RTX): Define.
5532         (INCOMING_FRAME_SP_OFFSET): Define.
5533         (DWARF_CIE_DATA_ALIGNMENT): Define.
5534
5535 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5536
5537         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
5538         fields in builtin structs.
5539         (finalize_record_size): Likewise.
5540
5541 2009-10-14  Richard Guenther  <rguenther@suse.de>
5542
5543         * gimple.c (gtc_ob): New global.
5544         (struct type_pair_d): Replace pointers with type UIDs.
5545         (type_pair_hash): Adjust.
5546         (type_pair_eq): Likewise.
5547         (lookup_type_pair): Likewise.  Allocate from an obstack.
5548         (gimple_force_type_merge): Adjust.
5549         (gimple_types_compatible_p): Likewise.
5550         (free_gimple_type_tables): Free the obstack.
5551
5552 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5553
5554         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
5555         stmts setting DEBUG_EXPR_DECLs.
5556
5557         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
5558         Don't crash if mode1 is VOIDmode.
5559
5560 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
5561
5562         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
5563         * params.h (IRA_LOOP_RESERVED_REGS): New.
5564         * tree-pass.h (pass_subregs_of_mode_init,
5565         pass_subregs_of_mode_finish): Remove.
5566         * passes.c (pass_subregs_of_mode_init,
5567         pass_subregs_of_mode_finish): Remove.
5568         (pass_reginfo_init): Move before loop optimizations.
5569         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
5570         * common.opt (fira-loop-pressure): New.
5571         * toplev.h (flag_ira_loop_pressure): New.
5572         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
5573         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
5574         Make external and void type functions.
5575         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
5576         pass_subregs_of_mode_finish): Remove.
5577         * ira-costs.c (init_costs): Call init_subregs_of_mode.
5578         * regmove.c: Include ira.h.
5579         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
5580         register pressure calculation in loops.
5581         * loop-invariant.c: Include REGS_H and ira.h.
5582         (struct loop_data): New members max_reg_pressure, regs_ref, and
5583         regs_live.
5584         (struct invariant): New member orig_regno.
5585         (curr_loop): New variable.
5586         (find_exits): Initialize regs_ref and regs_live.
5587         (create_new_invariant): Initialize orig_regno.
5588         (get_cover_class_and_nregs): New.
5589         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
5590         array.  Add code for flag_ira_loop_pressure.
5591         (gain_for_invariant): Make new_regs an array.  Add code for
5592         flag_ira_loop_pressure.
5593         (best_gain_for_invariant): Ditto.
5594         (set_move_mark): New parameter gain.  Use it for debugging output.
5595         (find_invariants_to_move): Make regs_needed and new_regs an array.
5596         Add code for flag_ira_loop_pressure.
5597         (move_invariant_reg): Set up orig_regno.
5598         (move_invariants): Set up reg classes for pseudos for
5599         flag_ira_loop_pressure.
5600         (free_loop_data): Clear regs_ref and regs_live.
5601         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
5602         get_regno_cover_class, change_pressure, mark_regno_live,
5603         mark_regno_death, mark_reg_store, mark_reg_clobber,
5604         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
5605         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
5606         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
5607         register pressure calculation in loops if new regs were added.
5608         Call finish_subregs_of_mode.
5609         * opts.c (decode_options): Set up flag_ira_loop_pressure.
5610         * Makefile.in (loop-invariant.o): Add ira.h.
5611         (regmove.o): Ditto.
5612         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
5613         Describe.
5614         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
5615
5616 2009-10-14  Richard Guenther  <rguenther@suse.de>
5617
5618         * lto-symtab.c (lto_symtab_compatible): Fold in ...
5619         (lto_symtab_merge): ... here.  Rewrite both to take the
5620         prevailing and a to-be-merged entry and to queue diagnostics properly.
5621         (lto_symtab_resolve_replaceable_p): New predicate for
5622         symbol resolution.
5623         (lto_symtab_resolve_can_prevail_p): Likewise.
5624         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
5625         handles merging commons by choosing the largest decl.  Fold
5626         in code that gives ODR errors.
5627         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
5628         diagnostics here.
5629         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
5630         case of no prevailing decl here.  Diagnose mismatches
5631         in object types here.  Drop all but the prevailing decls.
5632         (lto_symtab_prevailing_decl): Return the single prevailing decl.
5633         * lto-streamer-in.c (lto_input_tree_ref): Deal with
5634         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
5635
5636 2009-10-14  Richard Guenther  <rguenther@suse.de>
5637
5638         PR lto/41521
5639         * lto-streamer-in.c (input_bb): Replace debug stmts with
5640         nops instead of dropping them.
5641
5642 2009-10-14  Nick Clifton  <nickc@redhat.com>
5643
5644         * gcc/doc/extended.texi: Replace the dash character with @minus{}
5645         in situations where it is being used as a minus symbol.
5646         * gcc/doc/tm.texi: Likewise.
5647         * gcc/doc/md.texi: Likewise.
5648
5649 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
5650
5651         PR preprocessor/41543
5652         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
5653         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
5654         * tree.c: Include intl.h.
5655         (expand_location): Handle BUILTINS_LOCATION.
5656         * Makefile.in (tree.o): Depend on intl.h.
5657
5658         PR debug/41695
5659         * dwarf2out.c (dwarf2out_var_location): Always clear
5660         last_postcall_label when changing last_label.
5661
5662 2009-10-14  Pascal Obry  <obry@adacore.com>
5663
5664         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
5665         (process_command): Handle -E as done with -c and -S.  Do not add
5666         the target executable suffix to the output file when -E is used.
5667         (main): Adjust error message accordingly.
5668
5669 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
5670
5671         PR debug/41343
5672         PR debug/41447
5673         PR debug/41264
5674         PR debug/41338
5675         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
5676         decl with rtl.
5677         (tree_code_size): Likewise.
5678
5679 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5680
5681         * builtins.c (fold_builtin_1): Support complex "arc" functions.
5682         * real.h (HAVE_mpc_arc): Define.
5683
5684 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
5685
5686         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
5687         (struct builtin_description): Add fndecl field.
5688         (bdesc): Remove const qualifier.  Update initializer.
5689         (sh_media_init_builtins): Remove const qualifier for d.  Record
5690         the result of add_builtin_function to the fndecl field.
5691         (sh_builtin_decl): New.
5692         (sh_media_builtin_decl): New.
5693
5694 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
5695
5696         PR target/38948
5697         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
5698         requests between special registers.
5699
5700 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
5701
5702         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
5703
5704 2009-10-13  Richard Henderson  <rth@redhat.com>
5705
5706         PR tree-optimization/41377
5707         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
5708         (cleanup_empty_eh_merge_phis): New change_region parameter;
5709         pass it on to redirect_eh_edge_1.  Update callers.
5710         (cleanup_empty_eh_unsplit): Don't require an existing EH label
5711         at the destination block.
5712
5713 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
5714
5715         * passes.c (register_pass): Replaced gcc_unreachable by
5716         fatal_error on failure. Mentions plugins in comments & messages.
5717
5718 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
5719
5720         PR target/41693
5721         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
5722         * sched-vis.c (print_value): Use it.
5723         * cselib.c (cselib_hash_rtx): Likewise.
5724         * print-rtl.c (print_rtx): Likewise.
5725         * cfgexpand.c (expand_debug_rtx): Likewise.
5726         * var-tracking.c (vt_expand_loc_callback): Likewise.
5727
5728 2009-10-13  Richard Guenther  <rguenther@suse.de>
5729
5730         PR lto/41565
5731         * opts.c (handle_option): Split out code to handle setting
5732         the options flag var ...
5733         (set_option): ... here.
5734         * opts.h (set_option): Declare.
5735         * lto-opts.c (register_user_option_p): Include -fexceptions
5736         and all position independent code variants.
5737         (handle_common_option): Remove.
5738         (lto_reissue_options): Use set_option.
5739
5740 2009-10-13  Martin Jambor  <mjambor@suse.cz>
5741
5742         PR tree-optimization/41661
5743         * ipa-prop.c (compute_complex_pass_through): Allow only operations
5744         that are tcc_comparisons or do not change the type in any
5745         un-usleless way.
5746         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
5747         folding tcc_comparison operations.
5748
5749 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5750
5751         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
5752         properly.
5753
5754 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5755
5756         PR debug/41343
5757         PR debug/41447
5758         PR debug/41264
5759         PR debug/41338
5760         * tree.def (DEBUG_EXPR_DECL): New.
5761         * rtl.def (DEBUG_EXPR): New.
5762         * gengtype.c (adjust_field_rtx_def): Handle it.
5763         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
5764         (insert_debug_temp_for_var_def): ... this.  Drop support for
5765         moving.  Take iterator for def stmt; insert debug stmt before it.
5766         Scan early for use count and kind in debug stmts.
5767         (propagate_defs_into_debug_stmts): Rename to...
5768         (insert_debug_temps_for_defs): ... this.  Likewise.
5769         * tree.h (DEBUG_TEMP_UID): New.
5770         * tree.c (next_debug_decl_uid): New.
5771         (make_node_stat): Count debug decls separately.
5772         (copy_node_stat): Likewise.
5773         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
5774         * var-tracking.c (dv_is_decl_p): Recognize it.
5775         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
5776         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
5777         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
5778         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
5779         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
5780         (cselib_hash_rtx): Likewise.
5781         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
5782         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
5783         debug bind stmts.
5784         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
5785         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
5786         * rtl.c (copy_rtx): Likewise.
5787         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
5788         * print-rtl.c (print_rtx): Likewise.
5789         * sched-vis.c (print_value): Likewise.
5790         (print_insn): Handle DEBUG_EXPR_DECL.
5791         * tree-dump.c (dequeue_and_dump): Likewise.
5792         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
5793         * gimple-iterator (gsi_replace): Check for same lhs.
5794         (gsi_remove): Insert debug temps.
5795         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
5796         (move_computations_stmt): Drop explicit propagation into debug stmts.
5797         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
5798         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
5799         * tree-ssa-sink.c (statement_sink_location): Likewise.
5800         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
5801         * tree-ssanames.c (release_ssa_name): Adjust for rename.
5802         * tree-flow.h: Likewise.
5803         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
5804         debug temps without values.
5805         (eliminate_unnecessary_stmts): Don't discard just-inserted
5806         debug stmts.
5807
5808 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
5809
5810         PR target/26515
5811         * config/cris/cris.md (andu): Check that operand 1 is one of the
5812         general registers.  Fix typo in head comment.
5813
5814 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
5815
5816         * config/i386/i386.md (vswapmov): New.
5817         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
5818         (ix86_function_ms_hook_prologue): New.
5819         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
5820         * configure.ac: Test for swap suffix support in as.
5821         * configure: Rebuild.
5822
5823 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
5824
5825         PR target/41680
5826         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
5827         paradoxical subregs to prevent partial register stalls if the inner
5828         mode is integer mode.
5829
5830 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5831
5832         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
5833
5834 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
5835
5836         PR c++/41570
5837         * gcc/dwarf2out.c (template_parameter_pack_die,
5838         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
5839
5840 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5841
5842         PR debug/41616
5843         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
5844         on updates too.
5845         (maybe_register_def): Likewise.  Take stmt iterator.
5846         (rewrite_update_stmt): Take stmt iterator and pass it on.
5847         (rewrite_update_enter_block): Pass stmt iterator.
5848
5849 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5850
5851         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
5852         (spu_builtin_decl): New function.
5853
5854 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5855
5856         * config/i386/i386.md (SWIM): New mode iterator.
5857         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
5858         using SWIM mode iterator.
5859         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
5860         patterns using SWI48 mode iterator.
5861         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
5862         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
5863         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
5864         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
5865         patterns using SWI248 mode iterator.
5866         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
5867         gen_x86_movdicc_0_m1_rex64 for renamed function
5868
5869 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
5870             Eric Botcazou  <ebotcazou@adacore.com>
5871
5872         PR target/33743
5873         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
5874         * config/sparc/sol2-unwind.h: New file.
5875
5876 2009-10-11  Olivier Hainque  <hainque@adacore.com>
5877             Eric Botcazou  <ebotcazou@adacore.com>
5878
5879         PR target/33743
5880         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
5881         * config/i386/sol2-unwind.h: New file.
5882
5883 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
5884
5885         PR target/41665
5886         * config/i386/i386.md (addsi_1_zext): Get the proper second
5887         operand for lea.
5888
5889 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
5890
5891         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
5892         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
5893         replacement value.
5894
5895 2009-10-11  Richard Guenther  <rguenther@suse.de>
5896
5897         * gimple.c (iterative_hash_type_name): Do not handle special
5898         anonymous names.
5899
5900 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
5901
5902         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
5903         (*setcc_si_1_and): Ditto.
5904         (*setcc_si_1_movzbl): Ditto.
5905         (*setcc_<mode>_2): Ditto.
5906         (*setcc_qi): Rename from *setcc_1.
5907         (*setcc_qi_slp): Rename from *setcc_2.
5908
5909         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
5910         (*zero_extendqisi2_movzbw_and splitter): Ditto.
5911
5912         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
5913         "if" condition, there is already assert with reload_completed present.
5914
5915 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
5916
5917         * plugin.c (try_init_one_plugin): Improve constness of variable err.
5918
5919 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
5920
5921         * doc/install.texi (Final install): Refer to
5922         http://gcc.gnu.org/bugs/ for bug reporting.
5923
5924 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
5925
5926         * configure.ac: Add test for dci instruction.
5927         * configure: Regenerate.
5928         * config.in: Likewise.
5929         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
5930         * doc/invoke.texi: Add cpu_type 476 and 476fp.
5931         (-mmulhw): Add 476 to description.
5932         (-mdlmzb): Likewise.
5933         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
5934         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
5935         (processor_target_table): Add 476 and 476fp entries.
5936         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
5937         (rs6000_issue_rate): Add CPU_PPC476.
5938         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
5939         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
5940         (processor_type): Add PROCESSOR_PPC476.
5941         (EXTRA_SPECS): Add asm_cpu_476 string.
5942         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
5943         (define_attr "cpu"): Add ppc476.
5944         Include 476.md.
5945         Update comments for 476.
5946         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
5947         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
5948         Update copyright year.
5949         * config/rs6000/476.md: New file.
5950         * config/rs6000/40x.md: Add description for "isel" attribute.
5951         Update copyright year.
5952         * config/rs6000/440.md: Likewise.
5953         * config/rs6000/603.md: Likewise.
5954         * config/rs6000/6xx.md: Likewise.
5955         * config/rs6000/7450.md: Likewise.
5956         * config/rs6000/7xx.md: Likewise.
5957         * config/rs6000/8540.md: Likewise.
5958         * config/rs6000/cell.md: Likewise.
5959         * config/rs6000/e300c2c3.md: Likewise.
5960         * config/rs6000/e500mc.md: Likewise.
5961         * config/rs6000/mpc.md: Likewise.
5962         * config/rs6000/power4.md: Likewise.
5963         * config/rs6000/power5.md: Likewise.
5964         * config/rs6000/power6.md: Likewise.
5965         * config/rs6000/power7.md: Likewise.
5966         * config/rs6000/rios1.md: Likewise.
5967         * config/rs6000/rios2.md: Likewise.
5968         * config/rs6000/rs64.md: Likewise.
5969
5970 2009-10-10  Richard Guenther  <rguenther@suse.de>
5971
5972         PR tree-optimization/41654
5973         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
5974         a cond expr before calling gimple_cond_set_condition_from_tree.
5975         (ifcombine_iforif): Likewise.
5976
5977 2009-10-09  Ian Lance Taylor  <iant@google.com>
5978
5979         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
5980         * configure: Rebuild.
5981
5982 2009-10-09  Neil Vachharajani <nvachhar@google.com>
5983
5984         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
5985         deprecated.
5986
5987 2009-10-09  Richard Guenther  <rguenther@suse.de>
5988
5989         PR lto/41638
5990         * target-def.h (TARGET_BUILTIN_DECL): Define.
5991         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
5992         * target.h (struct gcc_target): Add builtin_decl target hook.
5993         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
5994         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
5995         target builtins.
5996         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
5997         not gcc_unreachable.
5998         (lto_output_builtin_tree): Sorry if the target does not support
5999         streaming target builtins.
6000         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
6001         (rs6000_builtin_decl): New function.
6002         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
6003         (ix86_builtin_decl): New function.
6004
6005 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
6006
6007         PR preprocessor/41445
6008         * c-ppoutput.c (do_line_change): New function.
6009         (cb_line_change): Use it.
6010         (scan_translation_unit): Call do_line_change if
6011         avoid_paste or PREV_WHITE and token location is on a different line
6012         than print.src_line.
6013
6014         PR debug/40521
6015         * dwarf2out.c (dwarf2out_init): Test whether
6016         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
6017         it is defined.
6018
6019         PR rtl-optimization/41646
6020         * calls.c (expand_call): For BLKmode types returned in registers
6021         avoid likely spilled hard regs in copy_blkmode_from_reg generated
6022         insns.
6023
6024 2009-10-09  Richard Guenther  <rguenther@suse.de>
6025
6026         PR tree-optimization/41634
6027         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
6028         we remove the correct elements.
6029         (optimize_stmt): Make sure to update stmt operands before
6030         optimizing redundancies.
6031
6032 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6033
6034         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
6035
6036 2009-10-09  Richard Guenther  <rguenther@suse.de>
6037
6038         PR driver/41637
6039         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
6040         globals.
6041         (lto_wrapper_exit): New function.
6042         (fatal): Use it.
6043         (fatal_perror): Likewise.
6044         (fork_execute): Use global args_name, do not free it.
6045         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
6046         * lto-streamer.h: Remove duplicate prototypes.
6047
6048 2009-10-09  Richard Guenther  <rguenther@suse.de>
6049
6050         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
6051         before calling stmt_can_throw_external.
6052
6053 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
6054
6055         PR tree-optimization/40071
6056         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
6057         pointer if the original data reference doesn't conflict with the
6058         created vector data reference.  Fix long line.
6059
6060 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
6061
6062         * config/i386/i386.md (any_div): New code iterator.
6063         (u): Handle div and udiv.
6064         (sgnprefix): Ditto.
6065         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
6066         code iterator.
6067         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
6068         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
6069         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
6070         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
6071
6072 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
6073
6074         * gcc.c (main): Remove trailing "." from diagnostics.
6075
6076 2009-10-08  Cary Coutant  <ccoutant@google.com>
6077
6078         Add support for debugging with ICF (Identical Code Folding).
6079         * calls.c (debug.h): New #include.
6080         (emit_call_1): Call virtual_call_token debug hook.
6081         * common.opt (-fenable-icf-debug): New option.
6082         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
6083         locations in the source).
6084         (poc_label_num): New variable.
6085         (dcall_entry, vcall_entry): New typedefs.
6086         (dcall_table, vcall_table): New variables.
6087         (struct vcall_insn): New type.
6088         (vcall_insn_table): New variable.
6089         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
6090         (size_of_dcall_table): New function.
6091         (output_dcall_table): New function.
6092         (size_of_vcall_table): New function.
6093         (output_vcall_table): New function.
6094         (dwarf2out_direct_call): New function.
6095         (vcall_insn_table_hash): New function.
6096         (vcall_insn_table_eq): New function.
6097         (dwarf2out_virtual_call_token): New function.
6098         (dwarf2out_virtual_call): New function.
6099         (dwarf2out_init): Allocate new tables and sections.
6100         (prune_unused_types): Mark DIEs referenced from direct call table.
6101         (dwarf2out_finish): Output direct and virtual call tables.
6102         * final.c (final_scan_insn): Call direct_call and virtual_call
6103         debug hooks.
6104         * debug.h (struct gcc_debug_hooks): Add direct_call,
6105         virtual_call_token, virtual_call hooks.
6106         (debug_nothing_uid): New function.
6107         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
6108         (debug_nothing_uid): New function.
6109         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
6110         (xcoff_debug_hooks): Likewise.
6111         * sdbout.c (sdb_debug_hooks): Likewise.
6112         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
6113         * doc/invoke.texi (-fenable-icf-debug): New option.
6114
6115 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
6116
6117         PR debug/41353
6118         * regmove.c (regmove_backward_pass): Replace src with dst in the
6119         debug insn, and check for dst before rather than after.
6120
6121 2009-10-08  Janis Johnson <janis187@us.ibm.com>
6122
6123         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
6124         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
6125
6126 2009-10-08  Jan Hubicka  <jh@suse.cz>
6127
6128         PR middle-end/41626
6129         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
6130         do not mark cgraph nodes as needed.
6131         (record_references_in_initializer): Add new only_vars parameter.
6132         * cgraph.h (record_references_in_initializer): New parameter.
6133         * varasm.c (assemble_variable): Update call.
6134         * varpool.c (varpool_analyze_pending_decls): Always look for
6135         referenced vars.
6136
6137 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
6138
6139         * config/avr/avr.c (last_insn_address) Remove variable.
6140         (expand_prologue): Don't initialise last_insn_address variable.
6141         (final_prescan_insn): Don't output insn size.
6142         * config/avr/avr.opt (msize): Remove switch.
6143         * doc/invoke.texi (AVR Options): Remove documentation of -msize
6144         switch.
6145
6146 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
6147
6148         * combine.c (label_tick_ebb_start): Fix comment.
6149         (combine_instructions): Set label_tick and label_tick_ebb_start before
6150         calling setup_incoming_promotions.  Start them from 1.  Increment
6151         label_tick instead of deriving it from the BB index.  Rather than
6152         comparing ticks use the block from the previous iteration to decide
6153         whether to start a new EBB.  Remove empty lines before function.
6154
6155 2009-10-08  Michael Matz  <matz@suse.de>
6156
6157         PR middle-end/41573
6158         * builtins.c (fold_builtin_isascii): Use fold_build2.
6159         (fold_builtin_isdigit): Ditto.
6160         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
6161         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
6162         remove_useless_stmts_cond, remove_useless_stmts_tf,
6163         remove_useless_stmts_tc, remove_useless_stmts_bind,
6164         remove_useless_stmts_goto, remove_useless_stmts_label,
6165         remove_useless_stmts_1, remove_useless_stmts,
6166         pass_remove_useless_stmts): Remove.
6167         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
6168         * passes.c (init_optimization_passes): Don't add
6169         pass_remove_useless_stmts.
6170         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
6171         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
6172         static constants.
6173         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
6174         for static constants.
6175         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
6176         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
6177
6178 2009-10-08  Richard Guenther  <rguenther@suse.de>
6179
6180         * gimple.c (free_gimple_type_tables): New function.
6181         * gimple.h (free_gimple_type_tables): Declare.
6182
6183 2009-10-07  Mark Heffernan  <meheff@google.com>
6184
6185         * ipa-prop.c (ipa_print_node_params) Only print
6186         names of named arguments.
6187
6188 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
6189
6190         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
6191         being statically linked.
6192
6193 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6194
6195         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
6196
6197 2009-10-08  Jan Hubicka  <jh@suse.cz>
6198
6199         PR bootstrap/41620
6200         * ipa.c (cgraph_externally_visible_p,
6201         function_and_variable_visibility,
6202         whole_program_function_and_variable_visibility): Skip non-finalized
6203         nodes.
6204
6205 2009-10-08  Nick Clifton  <nickc@redhat.com>
6206
6207         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
6208         CONST_DOUBLEs.
6209
6210 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
6211
6212         PR bootstrap/37739
6213         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
6214
6215 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
6216
6217         PR c/41182
6218         * c-common.c (c_fully_fold_internal): Strip nops from the result
6219         of recursive calls to c_fully_fold_internal.
6220         (c_wrap_maybe_const): New.
6221         (c_save_expr): Use c_wrap_maybe_const.
6222         * c-common.h (c_wrap_maybe_const): Declare.
6223         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
6224         build_binary_op): Use c_wrap_maybe_const.
6225
6226 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6227
6228         * real.c: Fix comment to reflect actual exponent size.
6229
6230 2009-10-08  Ben Elliston  <bje@au.ibm.com>
6231
6232         * config/rs6000/a2.md: Add FSF comment header.
6233
6234 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
6235
6236         * config/i386/i386.md (any_extend): New code iterator.
6237         (u, s): New code attributes.
6238         (sgnprefix): Ditto.
6239         (DWIH): Rewrite as code iterator for SI and DI modes.
6240         (DWI): Rewrite as mode attribute.
6241         (dwi): New mode attribute.
6242         (di): Depend on SI mode and DI mode.
6243         (doubleint_general_operand): Remove mode attribute.
6244
6245         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
6246         DWIH mode iterator.
6247
6248         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
6249         (*sub<mode>3_doubleword): Ditto.
6250
6251         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
6252         using SWIM248 mode iterator.
6253         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
6254         using SWI48 mode iterator.
6255         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
6256         patterns using DWIH mode iterator and any_extend code iterator.
6257         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
6258         using any_extend code iterator.
6259         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
6260         patterns using DWIH mode iterator and any_extend code iterator.
6261         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
6262         using any_extend code iterator.
6263         (<s>mul<mode>3_highpart): Macroize expander from
6264         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
6265         and any_extend code iterator.
6266         (*<s>muldi3_highpart_1): Macroize insn from
6267         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
6268         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
6269         patterns using any_extend code iterator.
6270         (*<s>mulsi3_highpart_zext): Macroize insn from
6271         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
6272
6273 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
6274
6275         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
6276         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
6277         refering to a DIE with DW_AT_const_value.
6278
6279 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
6280
6281         PR middle-end/22072
6282         * ira-lives.c (check_and_make_def_conflict): Process all operands.
6283
6284 2009-10-06  Jan Hubicka  <jh@suse.cz>
6285
6286         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
6287         correctly.
6288
6289 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
6290
6291         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
6292         *lea_2_rex64): Move before *add<mode>_1 pattern.
6293
6294 2009-10-07  Jan Hubicka  <jh@suse.cz>
6295
6296         * collect2.c (main): Add -fno-whole-program.
6297         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
6298
6299 2009-10-07  Jan Hubicka  <jh@suse.cz>
6300
6301         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
6302         has no address taken.
6303         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
6304         never needed.
6305         (cgraph_clone_node): Clear externally_visible flag for clones.
6306         * cgraph.h (cgraph_only_called_directly_p,
6307         cgraph_can_remove_if_no_direct_calls_p): New predicates.
6308         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
6309         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
6310         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
6311         ipcp_insert_stage): Likwise.
6312         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
6313         externally_visible flag.
6314         (verify_cgraph_node): Verify that inline clones look right.
6315         (process_function_and_variable_attributes): Do not set
6316         externally_visible flags.
6317         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
6318         been already run.
6319         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
6320         boundaries.
6321         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
6322         clear externally_visible when turning into inline clones
6323         (cgraph_mark_inline_edge): Use new predicates.
6324         (cgraph_estimate_growth): Likewise.
6325         (cgraph_decide_inlining): Likewise.
6326         * ipa.c (cgraph_postorder): Likewise.
6327         (cgraph_remove_unreachable_nodes): Likewise; sanity check
6328         that inline clones are not needed.
6329         (cgraph_externally_visible_p): New predicate.
6330         (function_and_variable_visibility): Add whole_program parameter;
6331         always set externally_visible flag; handle COMDAT function
6332         privatization.
6333         (local_function_and_variable_visibility): New function.
6334         (gate_whole_program_function_and_variable_visibility): New function.
6335         (whole_program_function_and_variable_visibility): New function.
6336         (pass_ipa_whole_program_visibility): New function.
6337         * passes.c  (init_optimization_passes): Add whole program visibility
6338         pass.
6339         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
6340         not care about needed/reachable flags.
6341         * varpool.c: Include flags.h
6342         (decide_is_variable_needed): When doing LTO assume whole-program mode.
6343         (varpool_finalize_decl): When we are in LTO read-back, all variables
6344         are analyzed.
6345         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
6346
6347 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6348
6349         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
6350         add MASK_HARD_DFP.
6351
6352 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
6353
6354         * config.gcc: Don't include the makefile fragments intended for
6355         libgcc.
6356         * config/s390/fixdfdi.h: File removed.
6357         * config/s390/libgcc-glibc.ver: File removed.
6358         * config/s390/s390.h: Remove the fixdfdi.h hack.
6359         * config/s390/t-crtstuff: File moved to libgcc dir.
6360         * config/s390/t-linux: Likewise.
6361         * config/s390/t-tpf: libgcc specific parts removed.
6362         * config/s390/t-linux64: Likewise.
6363
6364 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
6365
6366         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
6367         (lto-compress.o): Likewise.
6368
6369 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
6370
6371         PR target/41512
6372         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
6373         dllexport to class members here.
6374         (i386_pe_determine_dllimport_p): Only check static class data for
6375         definition.
6376         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
6377         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
6378         functions for vague linkage.
6379         (i386_pe_type_dllexport_p): Fix formatting.
6380         (maybe_add_dllexport) New function.
6381         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
6382         to class members.
6383
6384 2009-10-07  Ben Elliston  <bje@au.ibm.com>
6385
6386         * config/rs6000/a2.md: Remove duplicated lines.
6387
6388 2009-10-07  Ben Elliston  <bje@au.ibm.com>
6389
6390         * config.gcc (powerpc*-*-*): Handle a2.
6391         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
6392         * config/rs6000/a2.md: New file.
6393         * config/rs6000/rs6000.opt (mno-update): New.
6394         (mupdate): Return to using a mask, not a var.
6395         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
6396         (enum processor_type): Add PROCESSOR_PPCA2.
6397         * config/rs6000/rs6000.c (ppca2_cost): New costs.
6398         (rs6000_override_options): Add "a2" to processor_target_table.
6399         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
6400         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
6401
6402 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
6403
6404         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
6405         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
6406         reference to nonexistent gen_truncxfxf2 function.
6407
6408 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
6409
6410         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
6411         (DWIH, g, di, doubleint_general_operand): New mode attributes.
6412         (general_operand): Handle TI mode.
6413         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
6414         using SDWIM mode iterator.
6415         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
6416         pattern from *add{di,ti}3_1 patterns and corresponding splitters
6417         using DWI mode iterator.
6418         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
6419         patterns using SWI mode iterator.
6420         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
6421         using SWI48 mode iterator.
6422         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
6423         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
6424         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
6425         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
6426         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
6427         using SDWIM mode iterator.
6428         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
6429         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
6430         using DWI mode iterator.
6431         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
6432         patterns using SWI mode iterator.
6433         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
6434         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
6435         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
6436         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
6437         patterns using plusminus code iterator.
6438         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
6439         sub<mode>3 patterns using plusminus code iterator.
6440         * config/i386/i386.c (override_options): Update the call to
6441         gen_subdi_carry_rex64 for renamed function.
6442         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
6443         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
6444         calls to instruction expanders.
6445
6446 2009-10-06  Martin Jambor  <mjambor@suse.cz>
6447
6448         PR bootstrap/41395
6449         * opts.c (decode_options): Run IPA-SRA at -O2.
6450
6451 2009-10-06  Richard Guenther  <rguenther@suse.de>
6452
6453         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
6454
6455 2009-10-06  Tobias Burnus  <burnus@net-b.de>
6456
6457         PR lto/41591
6458         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
6459         -flto and -fwhole-program flags can be combined.
6460
6461 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
6462
6463         PR driver/41217
6464         * gcc.c (process_command): Check that -o argument was specified.
6465
6466 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
6467
6468         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
6469
6470 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6471
6472         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
6473         * doc/invoke.texi (Warning Options): Annotate allowed languages
6474         for -Wunsuffixed-float-constants.
6475
6476 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
6477
6478         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
6479         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
6480         same name and isn't the main variant.
6481
6482         PR debug/41558
6483         * dwarf2out.c (loc_by_reference): Removed.
6484         (dw_loc_list_1): New function.
6485         (dw_loc_list): Remove toplev argument, add want_address argument.
6486         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
6487         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
6488         want_address == 2 to dw_loc_list.  For successful dw_loc_list
6489         set have_address to 1 only if want_address is not 0.
6490
6491 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
6492
6493         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
6494         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
6495         a code block followed by two pointers.
6496         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
6497         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
6498         (MIPS_MOVE): Likewise.
6499         (MIPS_LUI): Likewise.
6500         (MIPS_JR): Likewise.
6501         (MIPS_BAL): Likewise.
6502         (MIPS_NOP): Likewise.
6503         (mips_asm_trampoline_template): Delete.
6504         (mips_trampoline_code_size): New function.
6505         (mips_trampoline_init): Add shorter sequences for all cases
6506         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
6507         Calculate the opcodes directly, rather than copying from a template.
6508         Only flush the code part of the trampoline.
6509         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
6510
6511 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
6512
6513         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
6514         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
6515         (INCOMING_RETURN_ADDR_RTX): Likewise.
6516         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
6517         with AT_REGNUM.
6518         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
6519         with RETURN_ADDR_REGNUM.
6520         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
6521         * config/mips/mips.c (mips16_build_call_stub): Replace
6522         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
6523         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
6524         (mips_print_operand_punctuation): Likewise.
6525         (mips_frame_set): Likewise.
6526         (mips16e_output_save_restore): Likewise.
6527         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
6528         (mips_save_reg_p): Likewise.
6529         (mips_return_addr): Likewise.
6530         (mips_set_return_address): Likewise.
6531         (mips_direct_save_slot_move_p): Likewise.
6532         (mips_output_function_prologue): Likewise.
6533         (mips_restore_reg): Likewise.
6534         (mips_expand_epilogue): Likewise.
6535         (mips_epilogue_uses): Likewise.
6536         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
6537         (*mov<mode>_ra): Use it instead of a hard-coded 31.
6538         (clear_hazard_<mode>): Likewise.
6539         (call_internal): Likewise.
6540         (call_internal_direct): Likewise.
6541         (call_direct_split): Likewise.
6542         (call_value_internal): Likewise.
6543         (call_value_split): Likewise.
6544         (call_value_internal_direct): Likewise.
6545         (call_value_direct_split): Likewise.
6546         (call_value_multiple_internal): Likewise.
6547         (call_value_multiple_split): Likewise.
6548
6549 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
6550             Jakub Jelinek  <jakub@redhat.com>
6551
6552         PR rtl-optimization/41511
6553         * combine.c (record_value_for_reg): Pass explicit values as argument
6554         to get_last_value_validate.
6555         (get_last_value_validate): Document INSN parameter.
6556         For non-readonly MEMs, assume they might have been modified if INSN
6557         was in another basic block.
6558         (get_last_value): Minor reformatting.
6559
6560 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6561
6562         PR tree-opt/40992
6563         * final.c (asm_str_count): Split out from asm_insn_count.
6564         * rtl.h (asm_str_count): New prototype.
6565         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
6566         asm_str_count.
6567
6568 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
6569
6570         * doc/plugins.texi: Change plugin_pass to register_pass_info.
6571
6572 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
6573             Rafael Espindola  <espindola@google.com>
6574
6575         * gengtype.c (write_types): Moved call to write_func_for_structure
6576         into seperate loops.
6577
6578 2009-10-05  Richard Guenther  <rguenther@suse.de>
6579
6580         PR lto/41281
6581         * lto-cgraph.c (output_cgraph): Output toplevel asms.
6582         (input_cgraph_1): Input toplevel asms.
6583
6584 2009-10-05  Richard Guenther  <rguenther@suse.de>
6585
6586         PR lto/40902
6587         * lto-symtab.c (lto_compatible_attributes_p): Remove.
6588         (external_aggregate_decl_p): Likewise.
6589         (lto_symtab_compatible): Re-structure.  Remove dead code.
6590         For variables ignore toplevel qualifiers when comparing types.
6591         Issue warnings, not errors for mismatched user-alignment.
6592
6593 2009-10-05  Richard Guenther  <rguenther@suse.de>
6594
6595         PR lto/41552
6596         PR lto/41487
6597         * lto-symtab.c (struct lto_symtab_base_def): Remove.
6598         (struct lto_symtab_identifier_def): Likewise.
6599         (struct lto_symtab_decl_def): Likewise.
6600         (struct lto_symtab_entry_def): New.
6601         (lto_symtab_identifier_t): Rename to ...
6602         (lto_symtab_entry_t): ... this.
6603         (lto_symtab_decls): Remove.
6604         (lto_symtab_base_hash): Rename to ...
6605         (lto_symtab_entry_hash): ... this.
6606         (lto_symtab_base_eq): Rename to ...
6607         (lto_symtab_entry_eq): ... this.
6608         (lto_symtab_base_marked_p): Rename to ...
6609         (lto_symtab_entry_marked_p): ... this.
6610         (lto_symtab_identifier_marked_p): Remove.
6611         (lto_symtab_decl_marked_p): Likewise.
6612         (lto_symtab_maybe_init_hash_tables): Rename to ...
6613         (lto_symtab_maybe_init_hash_table): ... this.
6614         (lto_symtab_set_resolution_and_file_data): Remove.
6615         (lto_symtab_register_decl): New function.
6616         (lto_symtab_get_identifier): Remove.
6617         (lto_symtab_get): New function.
6618         (lto_symtab_get_resolution): Adjust.
6619         (lto_symtab_get_identifier_decl): Remove.
6620         (lto_symtab_set_identifier_decl): Likewise.
6621         (lto_symtab_merge_decl): Rename to ...
6622         (lto_symtab_merge): ... this.  Rewrite.
6623         (lto_symtab_merge_var): Remove.
6624         (lto_symtab_merge_fn): Likewise.
6625         (lto_symtab_prevailing_decl): Adjust.
6626         (lto_cgraph_replace_node): New function.
6627         (lto_symtab_merge_decls_2): Likewise.
6628         (lto_symtab_merge_decls_1): Likewise.
6629         (lto_symtab_fixup_var_decls): Likewise.
6630         (lto_symtab_resolve_symbols): Likewise.
6631         (lto_symtab_merge_decls): Likewise.
6632         (lto_symtab_prevailing_decl): Adjust.
6633         (lto_symtab_get_symtab_def): Remove.
6634         (lto_symtab_get_file_data): Likewise.
6635         (lto_symtab_clear_resolution): Adjust.
6636         (lto_symtab_clear_resolution): Likewise.
6637         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
6638         (input_cgraph_1): Likewise.
6639         * lto-streamer-in.c (get_resolution): Do not provide fake
6640         symbol resolutions here.
6641         (deferred_global_decls): Remove.
6642         (lto_register_deferred_decls_in_symtab): Likewise.
6643         (lto_register_var_decl_in_symtab): Change signature, register
6644         variable via lto_symtab_register_decl.
6645         (lto_register_function_decl_in_symtab): Likewise.
6646         (lto_read_tree): Adjust.
6647         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
6648         (lto_symtab_merge_var): Likewise.
6649         (lto_symtab_merge_fn): Likewise.
6650         (lto_symtab_register_decl): Declare.
6651         (lto_symtab_merge_decls): Likewise.
6652
6653 2009-10-05  Richard Guenther  <rguenther@suse.de>
6654
6655         PR tree-optimization/23821
6656         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
6657         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
6658         simple IV increments.
6659
6660 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6661
6662         * config/arm/arm.c (arm_override_options): Really initialize
6663         flag_dwarf2_cfi_asm to 0.
6664
6665 2009-10-05  Doug Kwan  <dougkwan@google.com>
6666
6667         PR rtl-optimization/41574
6668         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
6669         floating point and we are not doing unsafe math optimizations.
6670
6671 2009-10-03  Simon Baldwin  <simonb@google.com>
6672             Cary Coutant  <ccoutant@google.com>
6673             Rafael Espindola  <espindola@google.com>
6674             Richard Guenther  <rguenther@suse.de>
6675             Jan Hubicka  <jh@suse.cz>
6676             Doug Kwan <dougkwan@google.com>
6677             H.J. Lu  <hongjiu.lu@intel.com>
6678             Bill Maddox  <maddox@google.com>
6679             Ryan Mansfield  <rmansfield@qnx.com>
6680             Diego Novillo  <dnovillo@google.com>
6681             Ollie Wild  <aaw@google.com>
6682             Kenneth Zadeck <zadeck@naturalbridge.com>
6683
6684         * lto-cgraph.c: New file.
6685         * lto-compress.c: New file.
6686         * lto-compress.h: New file.
6687         * lto-opts.c: New file.
6688         * lto-section-in.c: New file.
6689         * lto-section-out.c: New file.
6690         * lto-streamer-in.c: New file.
6691         * lto-streamer-out.c: New file.
6692         * lto-streamer.c: New file.
6693         * lto-streamer.h: New file.
6694         * lto-symtab.c: New file.
6695         * lto-wpa-fixup.c: New file.
6696         * lto-wrapper.c: New file.
6697
6698 2009-10-03  Simon Baldwin  <baldwin@google.com>
6699             Ben Elliston  <bje@au.ibm.com>
6700             Rafael Espindola  <espindola@google.com>
6701             Nathan Froyd  <froydnj@codesourcery.com>
6702             Jan Hubicka  <jh@suse.cz>
6703             Doug Kwan  <dougkwan@google.com>
6704             Diego Novillo  <dnovillo@google.com>
6705             Kenneth Zadeck  <zadeck@naturalbridge.com>
6706
6707         * Makefile.in (enable_lto): New.
6708         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
6709         (LINKER_PLUGIN_API_H): Define.
6710         (LTO_SYMTAB_H): Define.
6711         (LTO_STREAMER_H): Define.
6712         (TREE_VECTORIZER_H): Define.
6713         (INCLUDES): Add LIBELFINC.
6714         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
6715         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
6716         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
6717         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
6718         (native): Add lto-wrapper$(exeext)
6719         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
6720         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
6721         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
6722         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
6723         (varasm.o): Add dependency on tree-iterator.h.
6724         (cgraph.o): Add dependency on cif-code.def.
6725         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
6726         (ipa-pure-const.o): Likewise.
6727         (GTFILES): Add lto-symtab.c.
6728         (install-lto-wrapper): New.
6729         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
6730         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
6731         * config.in: Regenerate.
6732
6733 2009-10-03  Rafael Espindola  <espindola@google.com>
6734             Diego Novillo  <dnovillo@google.com>
6735
6736         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
6737         ipa_write_summaries.
6738         Call execute_ipa_summary_passes for all_regular_ipa_passes and
6739         all_lto_gen_passes.
6740         (cgraph_optimize): Make extern.
6741
6742 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
6743             Kenneth Zadeck <zadeck@naturalbridge.com>
6744
6745         * toplev.c (in_lto_p): Declare.
6746         * collect2.c (scan_prog_file): Read all the output when reading
6747         information for LTO.
6748         (enum lto_mode_d): Declare.
6749
6750 2009-10-03  Richard Guenther  <rguenther@suse.de>
6751             Diego Novillo  <dnovillo@google.com>
6752
6753         * gimple.c: Include target.h and alias.h.
6754         (gimple_types): Declare.
6755         (type_hash_cache): Declare.
6756         (gimple_alloc_stat): Make extern.
6757         (gimple_build_eh_must_not_throw): Call
6758         gimple_eh_must_not_throw_set_fndecl.
6759         (struct type_pair_d): Declare.
6760         (type_pair_t): Declare.
6761         (type_pair_hash): New.
6762         (type_pair_eq): New.
6763         (lookup_type_pair): New.
6764         (gimple_force_type_merge): New.
6765         (compare_type_names_p): New.
6766         (compare_field_offset): New.
6767         (gimple_types_compatible_p): New.
6768         (struct sccs): Declare.
6769         (next_dfs_num): Declare.
6770         (iterative_hash_gimple_type): New.
6771         (visit): New.
6772         (iterative_hash_type_name): New.
6773         (iterative_hash_gimple_type): New.
6774         (gimple_type_hash): New.
6775         (gimple_type_eq): New.
6776         (gimple_register_type): New.
6777         (print_gimple_types_stats): New.
6778         (gimple_signed_or_unsigned_type): New.
6779         (gimple_unsigned_type): New.
6780         (gimple_signed_type): New.
6781         (gimple_get_alias_set): New.
6782         (gimple_decl_printable_name): Do not use DMGL_TYPES.
6783         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
6784         (gimple_force_type_merge): Declare.
6785         (gimple_types_compatible_p): Declare.
6786         (gimple_register_type): Declare.
6787         (print_gimple_types_stats): Declare.
6788         (gimple_unsigned_type): Declare.
6789         (gimple_signed_type): Declare.
6790         (gimple_get_alias_set): Declare.
6791         (gimple_eh_must_not_throw_set_fndecl): New.
6792
6793 2009-10-03  Jan Hubicka  <jh@suse.cz>
6794             Kenneth Zadeck <zadeck@naturalbridge.com>
6795
6796         * ipa-pure-const.c: Include lto-streamer.h.
6797         (register_hooks): Factor out of ...
6798         (generate_summary): ... here.
6799         (pure_const_write_summary): New.
6800         (pure_const_read_summary): New.
6801         (pass_ipa_pure_const): Add pure_const_write_summary and
6802         pure_const_read_summary.
6803         * ipa-reference.c: Include lto-streamer.h.
6804         (add_new_function): New.
6805         (remove_node_data): New.
6806         (duplicate_node_data): New.
6807         (ipa_init): Guard against multiple calls.
6808         Move hook setup from analyze_function.
6809         (write_node_summary_p): New.
6810         (ipa_reference_write_summary): New.
6811         (ipa_reference_read_summary): New.
6812         (pass_ipa_reference): Add ipa_reference_write_summary and
6813         ipa_reference_read_summary.
6814         * cgraph.h (cgraph_local_info): Add field lto_file_data.
6815         (struct cgraph_edge): Add fields lto_stmt_uid and
6816         call_stmt_cannot_inline_p.
6817         (cgraph_optimize): Declare.
6818         (cgraph_decide_is_function_needed): Declare.
6819         (reset_inline_failed): Declare.
6820         (enum LTO_cgraph_tags): Declare.
6821         (LTO_cgraph_tag_names): Declare.
6822         (LCC_NOT_FOUND): Define.
6823
6824 2009-10-03  Doug Kwan  <dougkwan@google.com>
6825             Rafael Espindola  <espindola@google.com>
6826             Jan Hubicka  <jh@suse.cz>
6827             Diego Novillo  <dnovillo@google.com>
6828             Kenneth Zadeck  <zadeck@naturalbridge.com>
6829
6830         * passes.c (all_regular_ipa_passes): New.
6831         (all_ipa_passes): Rename to all_small_ipa_passes.
6832         (init_optimization_passes): Init all_regular_ipa_passes.
6833         * tree-pass.h (all_regular_ipa_passes): New.
6834         (all_ipa_passes): Rename to all_small_ipa_passes.
6835         * passes.c (all_lto_gen_passes): New.
6836         (init_optimization_passes): Initialize all_lto_gen_passes.
6837         (execute_ipa_summary_passes): Make non-static.
6838         (ipa_write_summaries_1): New.
6839         (ipa_write_summaries_2): New.
6840         (ipa_write_summaries): New.
6841         (ipa_write_summaries_of_cgraph_node_set): New.
6842         (ipa_read_summaries_1): New.
6843         (ipa_read_summaries): New.
6844         (execute_ipa_pass_list): Call cgraph_process_new_functions.
6845         (execute_regular_ipa_pass_list): Remove.
6846         (init_optimization_passes): Schedule
6847         pass_rebuild_cgraph_edges and pass_early_inline outside
6848         of pass_all_early_optimizations.  Document reason.
6849         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
6850         pass_ipa_lto_finish_out): New pass.
6851         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
6852         (execute_all_ipa_transforms): New.
6853         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
6854         (dump_properties, debug_properties): New.
6855         * tree-optimize.c (gate_all_early_local_passes): Return
6856         false if we are in lto1.
6857         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
6858         * tree-pass.h (execute_all_ipa_transforms): Declare.
6859         (pass_ipa_function_and_variable_visibility): Declare.
6860         (pass_ipa_early_inline): Declare.
6861         (pass_ipa_lto_gimple_out): Declare.
6862         (pass_ipa_lto_wpa_fixup): Declare.
6863         (pass_ipa_lto_finish_out): Declare.
6864         (all_small_ipa_passes, all_regular_ipa_passes,
6865         all_lto_gen_passes): Declare.
6866         (execute_ipa_summary_passes): Declare.
6867         (execute_all_ipa_transforms): Declare.
6868         (ipa_write_summaries): Declare
6869         (ipa_write_summaries_of_cgraph_node_set): Declare.
6870         (ipa_read_summaries): Declare.
6871
6872 2009-10-03  Doug Kwan  <dougkwan@google.com>
6873             Ollie Wild  <aaw@google.com>
6874
6875         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
6876
6877         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
6878         (lto_mode): New variable.
6879         (maybe_run_lto_and_relink): Handle the -fwpa option.
6880         (main): Handle the -fwpa option.
6881         (maybe_unlink_list): New function.
6882         * gcc.c (link_lto_options): Replace -flto with -fwpa.
6883         * common.opt (flto): New flag.
6884         * toplev.c (flag_generate_lto): Declare.
6885
6886 2009-10-03  Simon Baldwin  <simonb@google.com>
6887
6888         * common.opt (flto-compression-level): New flag.
6889
6890         * opts.c: Include lto-opts.h.
6891         (handle_option): Call lto_register_user_option for each
6892         valid option handled.
6893         (decode_options): Clear registered options before the options
6894         handling loop.
6895
6896 2009-10-03  Cary Coutant  <ccoutant@google.com>
6897
6898         * collect2.c (is_elf): New function.
6899         (scan_prog_file): Require LTO object to be in ELF format.
6900
6901 2009-10-03  Rafael Espindola  <espindola@google.com>
6902
6903         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
6904         libgcc to the linker.
6905
6906         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
6907
6908         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
6909         (collect_execute): Add flags argument. Pass flags to pex_run. Update
6910         all callers.
6911         * collect2.h (collect_execute): Add flags argument.
6912         * tlink.c (tlink_execute): Update call to collect_execute.
6913         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
6914         (use_linker_plugin): New.
6915         (use_linker_plugin_spec_function): New.
6916         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
6917         (linker_plugin_file_spec): New.
6918         (lto_wrapper_spec): New.
6919         (lto_gcc_spec): New.
6920         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
6921         (static_spec_functions): Add use-linker-plugin.
6922         (process_command): Handle -use-linker-plugin.
6923         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
6924         linker_plugin_file_spec and lto_gcc_spec.
6925         (use_linker_plugin_spec_function): New.
6926
6927 2009-10-03  Richard Guenther  <rguenther@suse.de>
6928
6929         PR lto/41547
6930         PR lto/41548
6931         * tree.h (is_lang_specific): Include LANG_TYPE.
6932         * tree.c (find_decls_types_r): Manually add interesting parts
6933         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
6934
6935         * gimple.c (type_pair_hash): Make symmetric.
6936         (type_pair_eq): Likewise.
6937         (lookup_type_pair): Increase initial hashtable size.
6938         (gimple_force_type_merge): Rely on type-pair symmetry.
6939         (visit): Remove excessive checking code.
6940         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
6941         (gimple_register_type): Remove getenv calls, shrink initial
6942         hashtable size.
6943
6944         PR middle-end/41502
6945         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
6946         inline functions if not generating lto output.
6947
6948         PR lto/41379
6949         * toplev.c (finalize): In WPA mode remove the asm file.
6950
6951 2009-10-03  Doug Kwan  <dougkwan@google.com>
6952
6953         * ipa-inline.c (cgraph_mark_inline): Check
6954         edge->call_stmt_cannot_inline_p instead of calling
6955         gimple_call_cannot_inline_p.
6956         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
6957         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
6958         (inline_generate_summary): Do nothing in LTRANS.
6959         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
6960         exists before calling gimple_call_cannot_inline_p.
6961         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
6962         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
6963         Update new_edge->lto_stmt_uid.
6964         * cgraphbuild.c (reset_inline_failed): New.
6965
6966         * common.opt (fwpa): New flag.
6967         (fltrans): New option.
6968         * gcc.c (gcc_lto_option_t): New type.
6969         (current_lto_option): New variable.
6970         (lto_single_spec_function): Remove and is replaced by ..
6971         (lto_option_spec_function): New function.
6972         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
6973         passing the -flto flag.
6974         (cc1_options): Separate non-LTO related parts into ..
6975         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
6976         (lto1_options): New spec for lto FE.
6977         (link_lto_options): New spec for handling LTO flags in linker.
6978         (invoke_lto_single): Re-format to fit in 80 column.  Replace
6979         lto-single with lto-option.
6980         (static_specs): Add cc1_non_lto_options, lto1_options and
6981         link_lto_options.
6982         (static_spec_function): Replace lto-single with lto-option.
6983         (process_command): Handle -flto, -fwpa and -fltran by setting
6984         current_lto_option and not passing it to subprocess unconditionally.
6985
6986 2009-10-03  Bill Maddox  <maddox@google.com>
6987
6988         Add `gcc' driver support for link-time code generation (LTO).
6989
6990         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
6991         (lto_flag, lto_objects, lto_o_file): New variables.
6992         (struct lto_object, struct lto_object_list): New structures.
6993         (collect_exit, handler): Remove LTO temporary output file on exit.
6994         (add_lto_object): New function.
6995         (maybe_run_lto_and_relink): New function. Perform link time code
6996         generation and relinking for object files containing LTO information.
6997         (main): Invoke maybe_run_lto_and_relink().
6998         (dump_argv): New function.  For debugging, currently disabled.
6999         (scan_prog_file): Add LTO information pass.
7000         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
7001         collect2.
7002         * toplev.c (compile_file): Emit assembler directive to create
7003         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
7004
7005 2009-10-03  Diego Novillo  <dnovillo@google.com>
7006
7007         * c.opt: Add LTO to warn_abi and warn_psabi.
7008
7009         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
7010         inline function.  Ignore language-specific nodes.  Update all users.
7011         (find_decls_types_r): Do not traverse the subtrees of
7012         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
7013         * tree.h (is_lang_specific): New.
7014         * langhooks.h (struct lang_hooks_for_decls): Remove
7015         may_need_assembler_name_p.  Update all users.
7016
7017         * c-common.c (set_builtin_user_assembler_name): Move ...
7018         * builtins.c (set_builtin_user_assembler_name): ... here.
7019         (is_builtin_name): Add comment
7020         (is_builtin_fn): New.
7021         * except.c (output_ttype): Only call
7022         lookup_type_for_runtime if TYPE is not a runtime type.
7023
7024         * passes.c (register_pass): Call position_pass on
7025         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
7026         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
7027         (TV_IPA_LTO_DECL_IO): Define.
7028         (TV_IPA_LTO_CGRAPH_IO): Define.
7029         (TV_LTO): Define.
7030         (TV_WHOPR_WPA): Define.
7031         (TV_WHOPR_WPA_IO): Define.
7032         (TV_WHOPR_LTRANS): Define.
7033         (TV_WHOPR_WPA_FIXUP): Define.
7034         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
7035         * tree-cfg.c (tree_node_can_be_shared): Make extern.
7036         * tree-flow.h (tree_node_can_be_shared): Declare.
7037         * tree-inline.c (tree_can_inline_p): Check that E has a
7038         statement associated with it.
7039         * tree.c (free_lang_data_in_binf): Factor out of ...
7040         (free_lang_data_in_type): ... here.
7041         Call RECORD_OR_UNION_TYPE_P.
7042         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
7043         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
7044         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
7045         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
7046         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
7047         (gate_free_lang_data): Return true if flag_generate_lto is set.
7048         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
7049         * c-common.h (set_builtin_user_assembler_name): Move ...
7050         * tree.h (set_builtin_user_assembler_name): ... here.
7051
7052         * common.opt (flto-report): New flag.
7053         * opts.c (complain_wrong_lang): Do not complain if running lto1.
7054         * collect2.c (scan_prog_file): Send the error output of
7055         'nm' to HOST_BIT_BUCKET.
7056
7057 2009-10-03  Ollie Wild  <aaw@google.com>
7058
7059         * langhooks-def.h (lhd_begin_section): New function declaration.
7060         (lhd_write_section): New function declaration.
7061         (lhd_end_section): New function declaration.
7062         (LANG_HOOKS_BEGIN_SECTION): New macro.
7063         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
7064         (LANG_HOOKS_END_SECTION): New macro.
7065         (LANG_HOOKS_LTO): New macro.
7066         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
7067         * langhooks.c (output.h): Add include.
7068         (saved_section): New static variable.
7069         (lhd_begin_section): New function.
7070         (lhd_write_section_data): New function.
7071         (lhd_end_section): New function.
7072         * langhooks.h (struct lang_hooks_for_lto): New structure.
7073         (struct lang_hooks): Add member lto.
7074         * Makefile.in (langhooks.o): Add dependency on output.h.
7075
7076         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
7077
7078 2009-10-03  Richard Guenther  <rguenther@suse.de>
7079
7080         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
7081         Handle LTO.
7082
7083 2009-10-03  Simon Baldwin  <simonb@google.com>
7084             Richard Guenther  <rguenther@suse.de>
7085             Janis Johnson  <janis187@us.ibm.com>
7086             Doug Kwan  <dougkwan@google.com>
7087             Diego Novillo  <dnovillo@google.com>
7088             Ramana Radhakrishnan  <ramana.r@gmail.com>
7089             Ollie Wild  <aaw@google.com>
7090
7091         * doc/install.texi: Add documentation for libelf and --enable-lto.
7092         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
7093         -flto-report, -flto-compression-level and -use-linker-plugin.
7094         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
7095         Add section for LTO Testing.
7096
7097 2009-10-02  Cary Coutant  <ccoutant@google.com>
7098
7099         Add support for comdat type sections for DWARF v4.
7100         Merge from dwarf4 branch.
7101
7102         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
7103         (dw_die_ref): Define vector type.
7104         (enum dw_val_class): Add dw_val_class_data8.
7105         (struct dw_val_struct): Add v.val_data8.
7106         (comdat_type_node_ref): New type.
7107         (struct die_struct): Move die_symbol into a union; add new field
7108         die_type_node.  Change all uses.
7109         (comdat_type_node): New type.
7110         (skeleton_chain_node): New type.
7111         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
7112         (comdat_type_list): New variable.
7113         (dwarf_tag_name): Add DW_TAG_type_unit.
7114         (dwarf_attr_name): Add DW_AT_signature.
7115         (add_AT_data8): New function.
7116         (replace_child): New function.
7117         (move_all_children): New function.
7118         (print_signature): New function.
7119         (print_die): Print signature information; add dw_val_class_data8.
7120         (attr_checksum): Support dw_val_class_data8.
7121         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
7122         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
7123         (checksum_sleb128, checksum_uleb128): New functions.
7124         (checksum_die_context): New function.
7125         (loc_checksum_ordered): New function.
7126         (attr_checksum_ordered): New function.
7127         (struct checksum_attributes): New structure.
7128         (collect_checksum_attributes): New function.
7129         (die_checksum_ordered): New function.
7130         (generate_type_signature): New function.
7131         (same_dw_val_p): Add dw_val_class_data8.
7132         (is_symbol_die): Use new is_declaration_die function.
7133         (is_declaration_die): New function.
7134         (should_move_die_to_comdat): New function.
7135         (clone_die): New function.
7136         (clone_tree): New function.
7137         (clone_as_declaration): New function.
7138         (copy_declaration_context): New function.
7139         (generate_skeleton_ancestor_tree): New function.
7140         (generate_skeleton_bottom_up): New function.
7141         (generate_skeleton): New function.
7142         (remove_child_or_replace_with_skeleton): New function.
7143         (break_out_comdat_types): New function.
7144         (struct decl_table_entry): New type.
7145         (htab_decl_hash): New function.
7146         (htab_decl_eq): New function.
7147         (htab_decl_del): New function.
7148         (copy_ancestor_tree): New function.
7149         (copy_decls_walk): New function.
7150         (copy_decls_for_unworthy_types): New function.
7151         (build_abbrev_table): Don't assert on missing die_symbol when doing
7152         comdat type sections.
7153         (size_of_die): Use DW_FORM_sig8 for external references.  Add
7154         dw_val_class_data8.
7155         (unmark_dies): Don't assert for unmarked dies when doing comdat
7156         type sections.
7157         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
7158         (output_signature): New function.
7159         (output_die): Likewise.
7160         (output_compilation_unit_header): Mark output as DWARF version 3
7161         even if generating DWARF 4.
7162         (output_comdat_type_unit): New function.
7163         (output_line_info): Mark output as DWARF version 3 even if generating
7164         DWARF 4.
7165         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
7166         DWARF-4.
7167         (dwarf2out_end_source_file): Likewise.
7168         (prune_unused_types_walk_attribs): Don't follow references into
7169         comdat type sections.
7170         (prune_unused_types_mark): When generating type units, do not mark
7171         children of non-defining declarations of types; do mark children of
7172         type entries.
7173         (prune_unused_types): Process comdat type sections.
7174         (htab_ct_hash): New function.
7175         (htab_ct_eq): New function.
7176         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
7177         Add a pointer to the line table from type unit entries so
7178         DW_AT_decl_file has meaning.
7179         * varasm.c (default_elf_asm_named_section): Use identifier name as
7180         comdat key instead of lang hook.
7181
7182 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
7183
7184         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
7185
7186 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
7187
7188         * config/i386/i386.md (SWIM248): New mode iterator.
7189         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
7190         divmodhi4 patterns using SWIM248 macro.
7191         (*divmod<mode>4): Macroize insn_and_split pattern from
7192         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
7193         and their corresponding splitters usign SWIM248 macro.  Split SImode
7194         insn to generate cltd and DImode insn to generate cqto instead of
7195         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
7196         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
7197         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
7198         *divmodsi_noext patterns using SWIM248 macro.
7199         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
7200         udivmodhi4 patterns using SWIM248 macro.
7201         (*udivmod<mode>4): Macroize insn_and_split pattern from
7202         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
7203         corresponding splitters using SWIM248 macro.
7204         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
7205         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
7206
7207 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
7208
7209         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
7210         of zero-sized element is zero-sized regardless of its extent.
7211
7212 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
7213
7214         PR debug/40521
7215         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
7216         * configure: Regenerated.
7217         * config.in: Regenerated.
7218         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
7219         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
7220         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
7221         not emitting .eh_frame, emit .cfi_sections .debug_frame
7222         directive.
7223
7224         PR debug/41404
7225         PR debug/41353
7226         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
7227         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
7228         with '\0'.
7229         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
7230         vars use DECL_RTL with resetting it back to NULL afterwards.
7231         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
7232         rtx_equal_p instead of asserting it is a SYMBOL_REF.
7233         (value_format): For dw_val_class_addr only use DW_FORM_addr if
7234         the attribute type allows it, otherwise use DW_FORM_dataN.
7235         (mem_loc_descriptor): Handle CONST_STRING.
7236         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
7237         Handle MEM with CONST_STRING address using add_AT_string.
7238         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
7239         CONST_STRING for const arrays initialized with a string literal.
7240         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
7241         (dwarf2out_finish): Call resolve_addr.
7242
7243 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
7244             Maxim Kuvyrkov  <maxim@codesourcery.com>
7245
7246         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
7247
7248 2009-10-02  Nick Clifton  <nickc@redhat.com>
7249
7250         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
7251         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
7252
7253 2009-10-01  Jan Hubicka  <jh@suse.cz>
7254
7255         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
7256         (cgraph_create_virtual_clone): Just pass redirect_callers
7257         around.
7258         * cgraph.h (cgraph_clone_node): Update prototype.
7259         * ipa-pure-const.c (self_recursive_p): New function.
7260         (propagate): Use it.
7261         * ipa-inline.c (cgraph_clone_inlined_nodes,
7262         cgraph_decide_recursive_inlining): Update.
7263
7264 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
7265
7266         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
7267         instructions for TARGET_OCTEON.
7268
7269 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7270
7271         * config/arm/arm.c (arm_override_options): Turn off
7272         flag_dwarf2_cfi_asm for AAPCS variants.
7273
7274 2009-10-01  Martin Jambor  <mjambor@suse.cz>
7275
7276         PR middle-end/12392
7277         * tree-sra.c (convert_callers): Do not call
7278         compute_inline_parameters on one caller more than once.
7279
7280 2009-10-01  Nick Clifton  <nickc@redhat.com>
7281
7282         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
7283         an empty string if not already defined.
7284
7285 2009-10-01  Martin Jambor  <mjambor@suse.cz>
7286
7287         PR bootstrap/41395
7288         * tree-sra.c (is_va_list_type): New function.
7289         (find_var_candidates): Call is_va_list_type.
7290         (find_param_candidates): Check that the type or the type pointed
7291         to are not va_list types.
7292
7293 2009-10-01  Martin Jambor  <mjambor@suse.cz>
7294
7295         PR c++/41503
7296         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
7297         DECL_ARTIFICIAL (param_decl) is true.
7298
7299 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
7300
7301         * tree.h (tree_decl_common::lang_flag_8): New.
7302         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
7303         keyword.
7304         * c-common.h (RID_CONSTEXPR): New.
7305
7306 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
7307
7308         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
7309         Use ref-all pointers.
7310         (alpha_gimplify_va_arg): Ditto.
7311
7312 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
7313
7314         PR target/41279
7315         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
7316         before insn counting loop now that BB_END (bb) is counted.  Ensure
7317         the return value isn't zero.
7318
7319 2009-09-30  Nick Clifton  <nickc@redhat.com>
7320
7321         * config.gcc (sh-symbianelf): Replace definition of extra_objs
7322         with separate definitions of c_target_objs and cxx_target_objs.
7323         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
7324         and symbian-base.o.
7325         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
7326         sh_symbian_import_export_class.
7327         * config/sh/sh-protos.h: Fix names of exported symbian functions.
7328         * config/sh/symbian.c: Delete, moving code into...
7329         * config/sh/symbian-base.c: ... here
7330         * config/sh/symbian-c.c: ... and here
7331         * config/sh/symbian-cxx.c: ... and here.
7332
7333 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
7334
7335         PR target/22093
7336         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
7337         of plus RTX into register.
7338
7339 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7340
7341         * doc/install.texi: Linguistic and markup fixes.
7342         (Configuration) <--disable-cpp>: Remove description.
7343         <--enable-maintainer-mode>: Autotools files are affected, too.
7344         <--with-sysroot>: Improve description.
7345         (Building): Bump required GNU make version.
7346
7347 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
7348
7349         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
7350         (x86_64-*-*): Ditto.
7351
7352         * config/i386/fma4intrin.h: New file, provide common x86 compiler
7353         intrinisics for FMA4.
7354         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
7355         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
7356         Add FMA4 check and fma4intrin.h.
7357         * config/i386/i386-c.c(ix86_target_macros_internal): Check
7358         ISA_FLAG for FMA4.
7359         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
7360         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
7361         constant for FMA4 support.
7362         (UNSPEC_FMA4_FMADDSUB): Ditto.
7363         (UNSPEC_FMA4_FMSUBADD): Ditto.
7364         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
7365         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
7366         (ix86_expand_fma4_multiple_memory): Ditto.
7367         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
7368         (OPTION_MASK_ISA_FMA4_UNSET): New.
7369         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
7370         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
7371         (ix86_handle_option): Handle -mfma4.
7372         (isa_opts): Handle -mfma4.
7373         (enum pta_flags): Add PTA_FMA4.
7374         (override_options): Add FMA4 support.
7375         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
7376         (IX86_BUILTIN_VFMADDSD): Ditto.
7377         (IX86_BUILTIN_VFMADDPS): Ditto.
7378         (IX86_BUILTIN_VFMADDPD): Ditto.
7379         (IX86_BUILTIN_VFMSUBSS): Ditto.
7380         (IX86_BUILTIN_VFMSUBSD): Ditto.
7381         (IX86_BUILTIN_VFMSUBPS): Ditto.
7382         (IX86_BUILTIN_VFMSUBPD): Ditto.
7383         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
7384         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
7385         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
7386         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
7387         (IX86_BUILTIN_VFNMADDSS): Ditto.
7388         (IX86_BUILTIN_VFNMADDSD): Ditto.
7389         (IX86_BUILTIN_VFNMADDPS): Ditto.
7390         (IX86_BUILTIN_VFNMADDPD): Ditto.
7391         (IX86_BUILTIN_VFNMSUBSS): Ditto.
7392         (IX86_BUILTIN_VFNMSUBSD): Ditto.
7393         (IX86_BUILTIN_VFNMSUBPS): Ditto.
7394         (IX86_BUILTIN_VFNMSUBPD): Ditto.
7395         (IX86_BUILTIN_VFMADDPS256): Ditto.
7396         (IX86_BUILTIN_VFMADDPD256): Ditto.
7397         (IX86_BUILTIN_VFMSUBPS256): Ditto.
7398         (IX86_BUILTIN_VFMSUBPD256): Ditto.
7399         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
7400         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
7401         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
7402         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
7403         (IX86_BUILTIN_VFNMADDPS256): Ditto.
7404         (IX86_BUILTIN_VFNMADDPD256): Ditto.
7405         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
7406         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
7407         (enum multi_arg_type): New enum for describing the various FMA4
7408         intrinsic argument types.
7409         (bdesc_multi_arg): New table for FMA4 intrinsics.
7410         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
7411         (ix86_expand_multi_arg_builtin): New function for creating FMA4
7412         intrinsics.
7413         (ix86_expand_builtin): Add FMA4 intrinsic support.
7414         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
7415         operand instructions.
7416         (ix86_expand_fma4_multiple_memory): New function to split the
7417         second memory reference from FMA4 instructions.
7418         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
7419         (ssemodesuffixf2s): Ditto.
7420         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
7421         instructions.
7422         (fma4_fmsub<mode>4): Ditto.
7423         (fma4_fnmadd<mode>4): Ditto.
7424         (fma4_fnmsub<mode>4): Ditto.
7425         (fma4_vmfmadd<mode>4): Ditto.
7426         (fma4_vmfmsub<mode>4): Ditto.
7427         (fma4_vmfnmadd<mode>4): Ditto.
7428         (fma4_vmfnmsub<mode>4): Ditto.
7429         (fma4_fmadd<mode>4256): Ditto.
7430         (fma4_fmsub<mode>4256): Ditto.
7431         (fma4_fnmadd<mode>4256): Ditto.
7432         (fma4_fnmsub<mode>4256): Ditto.
7433         (fma4_fmaddsubv8sf4): Ditto.
7434         (fma4_fmaddsubv4sf4): Ditto.
7435         (fma4_fmaddsubv4df4): Ditto.
7436         (fma4_fmaddsubv2df4): Ditto.
7437         (fma4_fmsubaddv8sf4): Ditto.
7438         (fma4_fmsubaddv4sf4): Ditto.
7439         (fma4_fmsubaddv4df4): Ditto.
7440         (fma4_fmsubaddv2df4): Ditto.
7441         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
7442         instructions for intrinsics.
7443         (fma4i_fmsub<mode>4): Ditto.
7444         (fma4i_fnmadd<mode>4): Ditto.
7445         (fma4i_fnmsub<mode>4): Ditto.
7446         (fma4i_vmfmadd<mode>4): Ditto.
7447         (fma4i_vmfmsub<mode>4): Ditto.
7448         (fma4i_vmfnmadd<mode>4): Ditto.
7449         (fma4i_vmfnmsub<mode>4): Ditto.
7450         (fma4i_fmadd<mode>4256): Ditto.
7451         (fma4i_fmsub<mode>4256): Ditto.
7452         (fma4i_fnmadd<mode>4256): Ditto.
7453         (fma4i_fnmsub<mode>4256): Ditto.
7454         (fma4i_fmaddsubv8sf4): Ditto.
7455         (fma4i_fmaddsubv4sf4): Ditto.
7456         (fma4i_fmaddsubv4df4): Ditto.
7457         (fma4i_fmaddsubv2df4): Ditto.
7458         (fma4i_fmsubaddv8sf4): Ditto.
7459         (fma4i_fmsubaddv4sf4): Ditto.
7460         (fma4i_fmsubaddv4df4): Ditto.
7461         (fma4i_fmsubaddv2df4): Ditto.
7462
7463         * doc/invoke.texi (-mfma4): Add documentation.
7464         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
7465
7466 2009-09-29  Richard Henderson  <rth@redhat.com>
7467
7468         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
7469         an edge to the new destination block.
7470
7471 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7472
7473         PR target/41393
7474         * pa.c (hppa_profile_hook): Use
7475         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
7476
7477 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
7478             Alexander Monakov  <amonakov@ispras.ru>
7479
7480         PR target/41365
7481         * config/ia64/predicates.md (not_postinc_destination_operand): New.
7482         (not_postinc_memory_operand): New.
7483         (not_postinc_move_operand): New.
7484         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
7485         (*cmovsi_internal): Ditto.
7486
7487 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
7488
7489         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
7490         restrict issue_rate in first pass when scheduling for register
7491         pressure.
7492
7493 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
7494             Rafael Avila de Espindola  <espindola@google.com>
7495
7496         * gengtype.c (plugin_output): New.
7497         (get_output_file_with_visibility): Return plugin_output for plugins.
7498         (main): Parse and use the -P option.
7499         * gty.texi: Update the command line format.
7500
7501 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
7502
7503         PR debug/41438
7504         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
7505         functions.
7506         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
7507         out if !const_ok_for_output.
7508
7509         PR debug/41474
7510         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
7511         case VAR_LOCATION>: Remove gcc_unreachable ().
7512
7513 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
7514
7515         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
7516         (x86_64-*-*): Ditto.
7517         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
7518         back to smmintrin.h.
7519         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
7520         * config/i386/x86intrin.h: Remove SSE5.
7521         * config/i386/mmintrin-common.h: Delete file.
7522         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
7523
7524 2009-09-29  Richard Guenther  <rguenther@suse.de>
7525
7526         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
7527         resulting from stack temporaries on STRICT_ALIGNMENT targets.
7528
7529 2009-09-29  Nick Clifton  <nickc@redhat.com>
7530
7531         * function.c (current_function_name): If there is no current
7532         function just return "<none>".
7533
7534 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
7535
7536         * tree-pass.h (register_pass_info): New structure.
7537         (pass_positioning_ops): Move enum from gcc-plugin.h.
7538         (register_pass): New function.
7539         * gcc-plugin.h (plugin_pass): Delete structure.
7540         (pass_positioning_ops): Delete enum.
7541         * plugin.c (regsiter_pass): Delete function.
7542         (position_pass): Delete function.
7543         (added_pass_nodes): Delete variable.
7544         (prev_added_pass_nodes): Delete variable.
7545         (pass_list_node): Delete structure.
7546         * passes.c (make_pass_instance): New function.
7547         (next_pass_1): Change to call make_pass_instance.
7548         (pass_list_node): Move structure from gcc-plugin.h.
7549         (added_pass_nodes): Move variable from plugin.c.
7550         (prev_added_pass_nodes): Move variable from plugin.c.
7551         (position_pass): New function.
7552         (register_pass): New function.
7553
7554 2009-09-28  Easwaran Raman  <eraman@google.com>
7555
7556         * ifcvt.c (noce_try_abs): Recognize pattern and call
7557         expand_one_cmpl_abs_nojump.
7558         * optabs.c (expand_one_cmpl_abs_nojump): New function.
7559         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
7560
7561 2009-09-28  Ian Lance Taylor  <iant@google.com>
7562
7563         PR middle-end/40500
7564         * c-opts.c (c_common_handle_option): Don't set
7565         warn_jump_misses_init for -Wall.
7566         * doc/invoke.texi (Warning Options): Update documentation.
7567
7568 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7569
7570         * Makefile.in ($(out_object_file)): Depend on
7571         gt-$(basename $(notdir $(out_file))).h.
7572
7573 2009-09-28  Richard Henderson  <rth@redhat.com>
7574
7575         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
7576         * except.c (gen_eh_region): Set it.
7577         (duplicate_eh_regions_1): Copy it.
7578         * tree-eh.c (lower_resx): Use it to determine which function
7579         to call to resume.
7580
7581         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
7582         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
7583         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
7584         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
7585         BUILT_IN_CXA_END_CLEANUP if necessary.
7586
7587         * c-common.c (c_define_builtins): Update call to
7588         build_common_builtin_nodes.
7589
7590 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7591
7592         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
7593
7594 2009-09-28  Michael Matz  <matz@suse.de>
7595
7596         * builtins.c (interclass_mathfn_icode): New helper.
7597         (expand_builtin_interclass_mathfn): Use it here, and split folding
7598         into ...
7599         (fold_builtin_interclass_mathfn): ... this new folder.
7600         (build_call_nofold_loc): New static helper.
7601         (build_call_nofold): New wrapper macro for above.
7602         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
7603         (expand_builtin_pow): Ditto.
7604         (expand_builtin_memset_args): Ditto.
7605         (expand_builtin_printf): Ditto.
7606         (expand_builtin_fprintf): Ditto.
7607         (expand_builtin_sprintf): Ditto.
7608         (expand_builtin_memory_chk): Ditto.
7609         (expand_builtin_mempcpy_args): Ditto and don't call folders.
7610         (expand_builtin_stpcpy): Ditto.
7611         (expand_builtin_strcmp): Ditto.
7612         (expand_builtin_strncmp): Ditto.
7613         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
7614         (expand_builtin_strcpy_args): Don't call folders.
7615         (expand_builtin_memcmp): Ditto.
7616         (expand_builtin_strncpy): Ditto, and use target.
7617         (expand_builtin_memcpy): Ditto.
7618         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
7619         expand_builtin_strpbrk, expand_builtin_memmove,
7620         expand_builtin_memmove_args, expand_builtin_bcopy,
7621         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
7622         expand_builtin_strspn, expand_builtin_strcspn,
7623         expand_builtin_fputs): Remove these.
7624         (expand_builtin): Don't call the above, change calls to other
7625         expanders that changed prototype.
7626         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
7627         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
7628         fold_builtin_interclass_mathfn.
7629         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
7630         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
7631
7632         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
7633         * passes.c (init_optimization_passes): Move pass_fold_builtins
7634         after last phiopt pass.
7635         * tree-inline.c (fold_marked_statements): When folding builtins
7636         iterate over all instruction potentially generated.
7637         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
7638         earlier.
7639         (fold_gimple_call): Use it to always fold calls (into potentially
7640         multiple instructions).
7641         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
7642         calls into zero at this time.
7643         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
7644         statements generated by builtin folding.
7645
7646 2009-09-28  Nick Clifton  <nickc@redhat.com>
7647
7648         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
7649
7650 2009-09-28  Duncan Sands  <baldrick@free.fr>
7651
7652         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
7653         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
7654         (register_callback): Dispatch it.
7655         (invoke_plugin_callbacks): Incorporate in sanity check.
7656         * ggc.h (ggc_register_cache_tab): Add declaration.
7657         * ggc-common.c (ggc_register_root_tab): Simplify.
7658         (const_ggc_cache_tab_t): New typedef.
7659         (extra_cache_vec): New vector of dynamically added cache tables.
7660         (ggc_register_cache_tab): New function.
7661         (ggc_scan_cache_tab): New function.
7662         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
7663         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
7664
7665 2009-09-27  Richard Henderson  <rth@redhat.com>
7666
7667         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
7668         which we remove __builtin_stack_restore.
7669
7670 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
7671
7672         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
7673         to test for GRD_INVARIANT.
7674         (simple_rhs_p): Anything that's function_invariant_p is fine.
7675
7676 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
7677
7678         * gengtype.c (main): Use plunge_files instead of plugin_output.
7679
7680 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
7681             Rafael Avila de Espindola  <espindola@google.com>
7682
7683         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
7684         Don't print pch related info if it is false.
7685         (main): Don't print pch info in plugin mode.
7686
7687 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7688
7689         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
7690         with dw_val_class_const_double.
7691         (struct dw_val_struct): Replace val_long_long with val_double and
7692         adjust for above change.
7693         (output_loc_operands): Likewise.
7694         (add_AT_long_long): Rename into...
7695         (add_AT_double): ...this.
7696         (print_die): Replace dw_val_class_long_long with
7697         dw_val_class_const_double and adjust.
7698         (attr_checksum): Likewise.
7699         (same_dw_val_p): Likewise.
7700         (size_of_die): Likewise.
7701         (value_format): Likewise.
7702         (output_die): Likewise.
7703         (loc_descriptor) <CONST_DOUBLE>: Likewise.
7704         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
7705         instead of add_AT_long_long.
7706         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
7707         value with the precision of its type.
7708
7709 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
7710
7711         PR c/41476
7712         * c-typeck.c (build_conditional_expr): Use the readonly and
7713         volatile flags of the operand types, not of the operands itself.
7714
7715 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
7716
7717         * collect2.c (main): Look for -brtl before adding libraries.
7718
7719 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
7720
7721         * config.gcc: Update OpenBSD targets.
7722         * config/openbsd-stdint.h: New file.
7723         * config/openbsd-libpthread.h: New file.
7724         * config/openbsd.h: Update and break out LIB_SPEC definition.
7725         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
7726         * config/i386/openbsdelf.h: Correct types.
7727         * config/m68k/openbsd.h: Likewise.
7728         * config/mips/openbsd.h: Likewise.
7729         * config/vax/openbsd.h: Likewise.
7730
7731 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
7732
7733         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
7734         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
7735         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
7736         of the length and zero.
7737
7738 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7739
7740         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
7741         (FLAGS_H): Add options.h $(REAL_H).
7742         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
7743         (TREE_VECTORIZER_H): New.
7744         (EBITMAP_H): Renamed from EBIMAP_H.
7745         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
7746         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
7747         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
7748         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
7749         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
7750         (graphite-clast-to-gimple.o, graphite-dependences.o)
7751         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
7752         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
7753         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
7754         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
7755         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
7756         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
7757         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
7758         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
7759         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
7760         updated and fixed as per above changes and per
7761         check_makefile_deps.sh output.
7762
7763         PR bootstrap/40928
7764         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
7765         * configure: Regenerate.
7766
7767 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7768
7769         * doc/install.texi: Update minimum MPC version to 0.7.
7770
7771 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
7772
7773         * doc/install.texi (Binaries): Remove reference to the binary
7774         distribution CD-ROM from the FSF.
7775
7776 2009-09-26  Michael Matz  <matz@suse.de>
7777
7778         PR lto/40758
7779         PR middle-end/41470
7780         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
7781         that are mentioned in the body.
7782
7783 2009-09-26  Michael Matz  <matz@suse.de>
7784
7785         PR tree-optimization/41454
7786         * tree-ssa-dom (stmts_to_rescan): Remove variable.
7787         (tree_ssa_dominator_optimize): Don't allocate and free it.
7788         (dom_opt_leave_block): Don't iterate over it.
7789         (eliminate_redundant_computations): Don't return a value.
7790         (cprop_operand, cprop_into_stmt): Ditto.
7791         (optimize_stmt): Don't defer updating stmts.
7792
7793 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
7794
7795         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
7796         generic_parameter_die, template_parameter_pack_die,
7797         gen_formal_parameter_die, gen_subprogram_die): Adjust after
7798         renaming DW_TAG_formal_parameter_pack and
7799         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
7800         and DW_TAG_GNU_template_parameter_pack.
7801
7802 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
7803
7804         * config/v850/v850.h (FUNCTION_VALUE): Remove.
7805         * config/v850/v850.c (v850_function_value): New function.
7806         (TARGET_FUNCTION_VALUE): Define.
7807
7808 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
7809
7810         * tree-vect-stmts.c (vectorizable_call): Call
7811         mark_symbols_for_renaming after vect_finish_stmt_generation.
7812
7813         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
7814         to loc_descriptor_from_tree.
7815         (add_location_or_const_value_attribute): Pass 0 instead of 2
7816         for decl_by_reference_p decls.
7817
7818 2009-09-25  Richard Guenther  <rguenther@suse.de>
7819
7820         PR middle-end/41463
7821         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
7822         arrays again.
7823
7824 2009-09-25  Ben Elliston  <bje@au.ibm.com>
7825
7826         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
7827         after `power7'.
7828
7829 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
7830
7831         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
7832         form of instruction.
7833
7834 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7835
7836         PR middle-end/41435
7837         * fold-const.c (const_binop): Handle complex int division.
7838         * tree-complex.c (expand_complex_div_straight,
7839         expand_complex_div_wide): Update comments.
7840
7841 2009-09-24  DJ Delorie  <dj@redhat.com>
7842
7843         PR target/41456
7844         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
7845         (reg_class): Likewise.
7846         (REG_CLASS_NAMES): Likewise.
7847         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
7848         (m32c_override_options): Disable -fivopts for M32C.
7849
7850 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
7851
7852         * config/rs6000/predicates.md (indexed_or_indirect_operand):
7853         Delete VSX load/store with update support.
7854         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
7855         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
7856         (vsx_movti): Ditto.
7857         (VSX_U): Delete.
7858         (VSbit): Ditto.
7859         (VStype_load_update): Ditto.
7860         (VStype_store_update): Ditto.
7861         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7862         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7863
7864         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
7865         load/store with update builtins.
7866
7867 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
7868
7869         * libgcc2.c (L_trampoline): Prototype for getpagesize
7870         and mprotect in WINNT case.
7871
7872 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
7873
7874         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
7875         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
7876         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
7877         'outgoing' argument.
7878         (TARGET_FUNCTION_VALUE): Define.
7879
7880 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7881
7882         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
7883
7884 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7885
7886         PR bootstrap/41405
7887         * common.opt: Initialize dwarf_strict to -1.
7888         * toplev.c (process_options): Catch unset dwarf_strict
7889         and set to 0 for all targets not overriding.
7890         * config/darwin.c (darwin_override_options): Catch unset
7891         dwarf_strict and override to 1.
7892
7893 2009-09-24  Jeff Law  <law@redhat.com>
7894
7895         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
7896
7897 2009-09-24  Richard Guenther  <rguenther@suse.de>
7898
7899         PR tree-optimization/36143
7900         PR tree-optimization/38747
7901         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
7902         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
7903
7904 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7905
7906         PR bootstrap/41457
7907         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
7908         return false instead of gcc_unreachable ().  For CONST return the
7909         value returned by recursive call instead of always returning true.
7910         (tree_add_const_value_attribute): Return the value returned by
7911         add_const_value_attribute instead of always returning true if rtl
7912         is non-NULL.
7913
7914 2009-09-23  Justin Seyster  <jrseys@gmail.com>
7915
7916         * Makefile.in (PLUGIN_HEADERS): Include real.h.
7917
7918 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7919
7920         * cgraphunit.c (cgraph_lower_function): Revert last change.
7921         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
7922         instead of DECL_NO_STATIC_CHAIN.
7923         * tree-cfg.c (verify_gimple_call): Likewise.
7924         * tree-nested.c (get_chain_decl, get_chain_field,
7925         convert_tramp_reference_op, convert_gimple_call): Likewise.
7926         (convert_all_function_calls): Likewise.  Always set or clear
7927         DECL_STATIC_CHAIN initially, for !n->outer clear it.
7928         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
7929         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
7930         if nested.
7931         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
7932         DECL_NO_STATIC_CHAIN.
7933         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
7934         instead of DECL_NO_STATIC_CHAIN.
7935         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
7936         decl_function_context.
7937         * varasm.c (initializer_constant_valid_p): Likewise.
7938         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
7939         (DECL_STATIC_CHAIN): ... this.
7940         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
7941         instead of DECL_NO_STATIC_CHAIN.
7942
7943 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
7944             Rafael Avila de Espindola  <espindola@google.com>
7945
7946         * gengtype.c (nb_plugin_files): Make it unsigned to match
7947         num_gt_files. Adjust other variables to avoid warnings.
7948         (main): Allocate an all zero lang_bitmap before each plugin file name
7949         to match regular file names.
7950
7951 2009-09-23  Richard Henderson  <rth@redhat.com>
7952
7953         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7954         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
7955         static chain passed in memory.
7956         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
7957         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
7958         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
7959         STATIC_CHAIN_REGNUM defined.
7960
7961         * config/picochip/picochip-protos.h: s/class/klass/.
7962         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
7963         (picochip_static_chain): New.
7964         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
7965         (STATIC_CHAIN_INCOMING): Remove.
7966
7967         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
7968         (xtensa_static_chain): New.
7969         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
7970         (STATIC_CHAIN_INCOMING): Remove.
7971
7972 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7973
7974         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
7975         * config/pa/pa-protos.h (function_value): Remove.
7976         * config/pa/pa.c (pa_function_value): Rename from function_value.
7977         Make static, add 'outgoing' argument.
7978         (TARGET_FUNCTION_VALUE): Define.
7979
7980 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7981
7982         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
7983         instead of cfun->machine->is_leaf.
7984         * config/avr/avr.h (machine_function): Remove is_leaf field.
7985
7986 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7987
7988         PR debug/41439
7989         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
7990         DW_OP_piece after DW_OP_stack_value, adjust size calculations
7991         for it, when DW_OP_stack_value and DW_OP_implicit_value has
7992         the same size, prefer DW_OP_stack_value.
7993         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
7994         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
7995
7996 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7997
7998         PR debug/41353
7999         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
8000
8001 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
8002
8003         PR debug/41248
8004         * cfgexpand.c (convert_debug_memory_address): New.
8005         (expand_debug_expr): Convert base address and offset to the same
8006         mode.  Use it to convert addresses to other modes.  Accept
8007         ptr_mode addresses.
8008
8009 2009-09-23  Dodji Seketeli <dodji@redhat.com>
8010
8011         PR debug/41065
8012         * function.h (types_used_by_vars_hash): Declare new hash table.
8013         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
8014         equality and hash function for the hash table.
8015         (types_used_by_cur_var_decl): Declare a new global chained list.
8016         (types_used_by_var_decl_insert): Declare new function.
8017         * function.c (types_used_by_vars_hash): Define the hashtable ...
8018         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
8019         its equality and hash functions.
8020         (hash_types_used_by_vars_entry): New hash helper.
8021         (types_used_by_cur_var_decl): Define the global chained list.
8022         (used_types_insert): Update the list of types used by the global
8023         variable being parsed.
8024         (types_used_by_var_decl_insert): Define new function.
8025         * c-common.h (record_types_used_by_current_var_decl): Declare ...
8026         * c-common.c (record_types_used_by_current_var_decl): ... new
8027         function.
8028         * c-decl.c (finish_decl): Record the types used by the global
8029         variable declaration we've just parsed.
8030         * dwarf2out.c (premark_used_types): Insert a new line between
8031         comment and function.
8032         (premark_used_types_helper): Fix comment.
8033         (premark_types_used_by_global_vars_helper,
8034         premark_types_used_by_global_vars): New functions.
8035         (prune_unused_types): Do not prune types used by global variables.
8036
8037 2009-09-23  Richard Guenther  <rguenther@suse.de>
8038
8039         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
8040         produced for bigendian targets with promoted subregs.
8041
8042 2009-09-23  Richard Guenther  <rguenther@suse.de>
8043
8044         * value-prof.c (gimple_ic): Purge old EH edges only after building
8045         the new ones.
8046
8047 2009-09-23  Nick Clifton  <nickc@redhat.com>
8048
8049         * config/arc/arc.c (arc_trampoline_init): Fix typo.
8050
8051 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
8052
8053         PR bootstrap/41405
8054         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
8055
8056         PR bootstrap/41436
8057         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
8058         on non-nested functions.
8059
8060 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
8061             Jan Hubicka  <jh@suse.cz>
8062
8063         * dwarf2out.c (loc_list_plus_const): Only define if
8064         DWARF2_DEBUGGING_INFO.
8065         (address_of_int_loc_descriptor): Likewise.
8066
8067         PR debug/41411
8068         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
8069
8070 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
8071
8072         PR c/39779
8073         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
8074         constant is more than zero.
8075
8076 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
8077
8078         PR target/40473
8079         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
8080         call final to emit non-scheduled prologue, instead insert at entry.
8081
8082 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
8083             Joseph S. Myers  <joseph@codesourcery.com>
8084
8085         * doc/install.texi (*-*-freebsd*): Add proper format codes.
8086
8087 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
8088             Rafael Avila de Espindola  <espindola@google.com>
8089
8090         * gengtype.c (is_file_equal): New function.
8091         (close_output_files): Use is_file_equal. Free of->buf.
8092
8093 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
8094             Rafael Avila de Espindola  <espindola@google.com>
8095
8096         * gengtype.c (write_types, write_local): Add the output_header
8097         argument. Update all callers.
8098
8099 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
8100
8101         * dwarf2out.c (template_parameter_pack_die,
8102         gen_formal_parameter_pack_die ): New functions.
8103         (make_ith_pack_parameter_name): Remove this function.
8104         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
8105         DW_TAG_formal_parameter_pack.
8106         (gen_generic_params_dies): Represent each template parameter pack
8107         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
8108         represented by usual DW_TAG_template_*_parameter DIEs that are
8109         children of the DW_TAG_template_parameter_pack element DIE.
8110         (generic_parameter_die): This doesn't deal with parameter pack
8111         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
8112         of parameter pack DIEs.
8113         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
8114         in certain cases, e.g. for pack elements.
8115         (gen_formal_types_die, gen_decl_die): Adjust usage of
8116         gen_formal_parameter_die.
8117         (gen_subprogram_die): Represent each function parameter pack by a
8118         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
8119         represented by usual DW_TAG_formal_parameter DIEs that are children
8120         of the DW_TAG_formal_parameter_pack DIE. Remove references to
8121         ____builtin_va_alist decls as no part of the compiler uses those
8122         anymore.
8123         * langhooks.h (struct lang_hooks_for_decls): Add
8124         function_parm_expanded_from_pack_p, get_generic_function_decl
8125         and function_parameter_pack_p hooks.  Fix comment for
8126         get_innermost_generic_parms hook.
8127         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
8128         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
8129         macros and use them to initialize lang_hook.
8130
8131 2009-09-22  Richard Henderson  <rth@redhat.com>
8132
8133         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
8134         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
8135         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
8136         on TRAMPOLINE_TEMPLATE.
8137         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
8138         TRAMPOLINE_ADJUST_ADDRESS.
8139         * targhooks.c (default_asm_trampoline_template): Remove.
8140         (default_trampoline_adjust_address): Remove.
8141         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
8142         * targhooks.h: Update decls.
8143
8144 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8145
8146         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
8147         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
8148         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
8149
8150 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
8151
8152         PR debug/41295
8153         * reload1.c (reload): Reset debug insns with pseudos without
8154         equivalences.
8155
8156 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
8157
8158         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
8159         unconditional true for decimal float modes.
8160         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
8161         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
8162
8163 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
8164
8165         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
8166         Enable a new case for __FreeBSD__ >= 7.
8167         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
8168         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
8169         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
8170         and USE_LD_AS_NEEDED.
8171
8172         * doc/install.texi (*-*-freebsd*): Update target information.
8173
8174 2009-09-22  Richard Guenther  <rguenther@suse.de>
8175
8176         PR middle-end/41395
8177         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
8178         arrays really properly.
8179
8180 2009-09-22  Richard Henderson  <rth@redhat.com>
8181
8182         PR target/41246
8183         * target.h (struct gcc_target): Add asm_out.trampoline_template,
8184         calls.static_chain, calls.trampoline_init,
8185         calls.trampoline_adjust_address.
8186         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8187         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
8188         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
8189         * builtins.c (expand_builtin_setjmp_receiver): Use
8190         targetm.calls.static_chain; only clobber registers.
8191         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
8192         set up memory attributes properly for the trampoline block.
8193         (expand_builtin_adjust_trampoline): Use
8194         targetm.calls.trampoline_adjust_address.
8195         * calls.c (prepare_call_address): Add fndecl argument.  Use
8196         targetm.calls.static_chain.
8197         * df-scan.c (df_need_static_chain_reg): Remove.
8198         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
8199         consolodate static chain handling.
8200         * doc/tm.texi: Document new hooks.
8201         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
8202         (init_emit_regs): Don't initialize them.
8203         * expr.h (prepare_call_address): Update decl.
8204         * final.c (profile_function): Use targetm.calls.static_chain.
8205         * function.c (expand_function_start): Likewise.
8206         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
8207         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
8208         only clobber registers.
8209         * targhooks.c (default_static_chain): New.
8210         (default_asm_trampoline_template, default_trampoline_init): New.
8211         (default_trampoline_adjust_address): New.
8212         * targhooks.h: Declare them.
8213         * varasm.c (assemble_trampoline_template): Use
8214         targetm.asm_out.trampoline_template.  Make the memory block const
8215         and set its size.
8216
8217         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
8218         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
8219         differences into the TARGET_ABI_OPEN_VMS code block.
8220         (TARGET_TRAMPOLINE_INIT): New.
8221         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
8222         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
8223         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
8224         (INITIALIZE_TRAMPOLINE): Remove.
8225
8226         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
8227         (TRAMPOLINE_TEMPLATE): Merge with ...
8228         (INITIALIZE_TRAMPOLINE): ... this and move ...
8229         * config/arc/arc.c (arc_trampoline_init): ... here.
8230         (TARGET_TRAMPOLINE_INIT): New.
8231
8232         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8233         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
8234         (arm_asm_trampoline_template): New.
8235         (arm_trampoline_init, arm_trampoline_adjust_address): New.
8236         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
8237         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
8238         code to arm_asm_trampoline_template.
8239         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
8240         arm_trampoline_adjust_address.
8241         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
8242         adjust for target hook parameters.
8243
8244         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
8245         Remove.
8246
8247         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
8248         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
8249         (bfin_trampoline_init): Rename from initialize_trampoline;
8250         make static; update for target hook parameters.
8251         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
8252         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
8253         bfin_asm_trampoline_template.
8254         (INITIALIZE_TRAMPOLINE): Remove.
8255
8256         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8257         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
8258         cris_trampoline_init): New.
8259         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
8260         cris_asm_trampoline_template.
8261         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
8262         adjust for target hook parameters.
8263
8264         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
8265
8266         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8267         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
8268         fr30_trampoline_init): New.
8269         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
8270         fr30_asm_trampoline_template.
8271         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
8272         adjust for target hook parameters.
8273
8274         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
8275         (frv_trampoline_init): Rename from frv_initialize_trampoline;
8276         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
8277         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
8278         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
8279
8280         * config/h8300/h8300.c (h8300_trampoline_init): New.
8281         (TARGET_TRAMPOLINE_INIT): New.
8282         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
8283         to h8300_trampoline_init and adjust for hook parameters.
8284
8285         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
8286         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
8287         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
8288         make static; adjust for hook parameters.
8289         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
8290
8291         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8292         (TARGET_TRAMPOLINE_INIT): New.
8293         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
8294         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
8295         iq2000_asm_trampoline_template.
8296         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
8297         (TRAMPOLINE_CODE_SIZE): New.
8298         (TRAMPOLINE_SIZE): Use it.
8299         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
8300
8301         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
8302         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
8303         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
8304         adjust for hook parameters.
8305         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
8306
8307         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
8308         (m32r_trampoline_init): New.
8309         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
8310         m32r_trampoline_init.
8311
8312         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
8313         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
8314         make static; update for hook parameters.
8315         * config/m68hc11/m68hc11-protos.h: Update.
8316         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
8317
8318         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8319         (TARGET_TRAMPOLINE_INIT): New.
8320         (mcore_function_value): Fix typo.
8321         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
8322         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
8323         to mcore_asm_trampoline_template.
8324         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
8325
8326         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
8327         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
8328         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
8329         update for hook parameters.
8330         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
8331
8332         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8333         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
8334         mips_trampoline_init): New.
8335         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
8336         mips_asm_trampoline_template.
8337         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
8338         update for hook parameters.
8339
8340         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8341         (TARGET_TRAMPOLINE_INIT): New.
8342         (mmix_trampoline_size): Remove.
8343         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
8344         make static.  Remove out-of-date tetra vs octa comment.
8345         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
8346         make static; update for hook parameters.
8347         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
8348         (INITIALIZE_TRAMPOLINE): Remove.
8349         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
8350         (TRAMPOLINE_ALIGNMENT): New.
8351         * gcc/config/mmix/mmix-protos.h: Update.
8352
8353         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8354         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
8355         mn10300_trampoline_init): New.
8356         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
8357         mn10300_asm_trampoline_template.
8358         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
8359
8360         * config/moxie/moxie.c (moxie_static_chain,
8361         moxie_asm_trampoline_template, moxie_trampoline_init,
8362         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
8363         TARGET_TRAMPOLINE_INIT): New.
8364         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
8365         moxie_trampoline_init.
8366         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
8367         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
8368
8369         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
8370         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
8371         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
8372         pa_trampoline_adjust_address): New.
8373         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
8374         pa_asm_trampoline_template.
8375         (TRAMPOLINE_ALIGNMENT): New.
8376         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
8377         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
8378         adjust for hook parameters.
8379         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
8380
8381         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
8382         (TARGET_TRAMPOLINE_INIT): New.
8383         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
8384         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
8385
8386         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
8387
8388         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
8389         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
8390         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
8391         make static; adjust parameters for the hook.
8392         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
8393
8394         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
8395         s390_trampoline_template; make static.
8396         (s390_trampoline_init): Rename from s390_initialize_trampoline;
8397         make static; adjust for target hook.
8398         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
8399         * config/s390/s390-protos.h: Remove trampoline decls.
8400         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
8401         (TRAMPOLINE_TEMPLATE): Remove.
8402         (TRAMPOLINE_ALIGNMENT): New.
8403
8404         * config/score/score-protos.h (score_initialize_trampoline): Remove.
8405         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8406         (TARGET_TRAMPOLINE_INIT): New.
8407         (score_asm_trampoline_template): New.
8408         (score_trampoline_init): Rename from score_initialize_trampoline;
8409         make static; adjust for hook parameters.
8410         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
8411         score[37]_asm_trampoline_template.
8412         (INITIALIZE_TRAMPOLINE): Remove.
8413         * config/score/score3.c (score3_asm_trampoline_template): New.
8414         (score3_trampoline_init): Rename from score3_initialize_trampoline;
8415         adjust for target hook.
8416         * config/score/score7.c (score7_asm_trampoline_template): New.
8417         (score7_trampoline_init): Rename from score7_initialize_trampoline;
8418         adjust for target hook.
8419         * config/score/score3.h, config/score/score7.h: Update.
8420
8421         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
8422         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
8423         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
8424         (sh_trampoline_init): Rename from sh_initialize_trampoline;
8425         make static; adjust for target hook parameters.
8426         (sh_trampoline_adjust_address): New.
8427         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
8428         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
8429
8430         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
8431         (sparc32_initialize_trampoline): Rename from
8432         sparc_initialize_trampoline; make static; replace tramp parameter
8433         with m_tramp and update memory accesses.
8434         (sparc64_initialize_trampoline): Similarly.
8435         (sparc_trampoline_init): New.
8436         * config/sparc/sparc-protos.h: Remove trampoline decls.
8437         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
8438         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
8439
8440         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
8441         (array_to_constant): Make ARR parameter const.
8442         (spu_trampoline_init): Rename from spu_initialize_trampoline;
8443         make static; update for hook parameters.
8444         * config/spu/spu-protos.h: Update decls.
8445         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
8446
8447         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
8448         from xstormy16_initialize_trampoline; make static; update for
8449         hook parameters.
8450         (TARGET_TRAMPOLINE_INIT): New.
8451         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
8452
8453         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8454         (TARGET_TRAMPOLINE_INIT): New.
8455         (v850_can_eliminate): Make static.
8456         (v850_asm_trampoline_template, v850_trampoline_init): New.
8457         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
8458         v850_asm_trampoline_template.
8459         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
8460         and adjust for target hook parameters.
8461
8462         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8463         (TARGET_TRAMPOLINE_INIT): New.
8464         (vax_asm_trampoline_template, vax_trampoline_init): New.
8465         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
8466         vax_asm_trampoline_template.
8467         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
8468
8469         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
8470         (TARGET_TRAMPOLINE_INIT): New.
8471         (xtensa_asm_trampoline_template): Rename from
8472         xtensa_trampoline_template; make static.
8473         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
8474         make static; update for hook parameters.
8475         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
8476         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
8477         (INITIALIZE_TRAMPOLINE): Remove.
8478
8479         * config/i386/i386.c (ix86_function_regparm): Do not issue an
8480         error for nested functions with regparm=3.
8481         (ix86_compute_frame_layout): Adjust frame pointer offset for
8482         ix86_static_chain_on_stack.
8483         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
8484         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
8485         don't reset to UNITS_PER_WORD.
8486         (ix86_emit_leave): Adjust ix86_cfa_state.
8487         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
8488         (ix86_static_chain): New.
8489         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
8490         make static; update for target hook parameters; use ix86_static_chain.
8491         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
8492         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
8493         (INITIALIZE_TRAMPOLINE): Remove.
8494         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
8495         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
8496         to the end.  Add static_chain_on_stack.
8497         (ix86_static_chain_on_stack): New.
8498
8499         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
8500         (m68k_output_mi_thunk): Don't use static_chain_rtx.
8501         (m68k_trampoline_init): New.
8502         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
8503         m68k_trampoline_init and adjust for hook parameters.
8504         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
8505         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
8506
8507 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8508
8509         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
8510         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
8511
8512         * reload1.c (reload): Call wrap_constant when substituting
8513         reg for equiv inside of DEBUG_INSNs.
8514
8515         PR bootstrap/41405
8516         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
8517         add_call_src_coords_attributes, add_high_low_attributes,
8518         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
8519         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
8520         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
8521         when -gdwarf-2 -gstrict-dwarf.
8522         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
8523         -gdwarf-[23] -gstrict-dwarf.
8524         (address_of_int_loc_descriptor, loc_descriptor,
8525         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
8526         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
8527         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
8528
8529 2009-09-22  Richard Guenther  <rguenther@suse.de>
8530
8531         PR tree-optimization/41428
8532         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
8533         (ccp_finalize): Pass it to substitute_and_fold.
8534
8535 2009-09-22  Richard Guenther  <rguenther@suse.de>
8536
8537         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
8538         (substitute_and_fold): Adjust prototype.
8539         * tree-vrp.c (vrp_evaluate_conditional): Make static.
8540         (simplify_stmt_using_ranges): Likewise.
8541         (fold_predicate_in): Move here from tree-ssa-propagate.c.
8542         (vrp_fold_stmt): New function.
8543         (vrp_finalize): Pass it to substitute_and_fold.
8544         * tree-flow.h (vrp_evaluate_conditional): Remove.
8545         (simplify_stmt_using_ranges): Likewise.
8546         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
8547         * tree-ssa-copy.c (fini_copy_prop): Likewise.
8548         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
8549         member.
8550         (fold_predicate_in): Move to tree-vrp.c.
8551         (substitute_and_fold): Use the callback instead of calling into
8552         tree-vrp.c functions directly.
8553
8554 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
8555
8556         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
8557         comparison warning on rs6000.
8558
8559         PR middle-end/41429
8560         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
8561         GIMPLE_EH_MUST_NOT_THROW cleanup.
8562         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8563
8564 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
8565
8566         PR middle-end/41260
8567         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
8568         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
8569         LIB_SPEC for darwin10 and later since it always uses the unwinder in
8570         libSystem which is derived from the gcc 4.2.1 unwinder.
8571
8572 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8573
8574         PR middle-end/41357
8575         * varasm.c (default_encode_section_info): Copy TLS model into
8576         sym_ref flags regardless of backend support for TLS, for all
8577         model types except TLS_MODEL_EMULATED.
8578
8579 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
8580
8581         PR bootstrap/41404
8582         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
8583         we can handle it correctly.
8584
8585 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8586
8587         * doc/install.texi (os2): Remove section.
8588
8589 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
8590
8591         * doc/standards.texi (Objective-C): Adjust two URLs.
8592
8593 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
8594
8595         * tree-tailcall.c (process_assignment): Don't check if a
8596         multiplication or an addition are already present.
8597         (find_tail_calls): Combine multiple additions and multiplications.
8598         (adjust_accumulator_values): Emit accumulators.
8599
8600 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
8601
8602         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
8603         xmm register restore.
8604
8605 2009-09-21  Jan Hubicka  <jh@suse.cz>
8606
8607         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
8608         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
8609         restore at the end.
8610
8611 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
8612
8613         * stor-layout.c (layout_type): Remove obsolete code.
8614
8615 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
8616
8617         PR middle-end/41395
8618         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
8619
8620 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8621
8622         PR middle-end/30789
8623         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
8624         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
8625         (fold_builtin_2, do_mpc_arg1): Update accordingly.
8626         * fold-const.c (const_binop): Likewise.
8627         * real.h (do_mpc_arg2): Update prototype.
8628
8629 2009-09-20  Jan Hubicka  <jh@suse.cz>
8630
8631         * dwarf2out.c (add_const_value_attribute): Return true if successful.
8632         (add_location_or_const_value_attribute): Rewrite using
8633         loc_list_from_tree.
8634         (tree_add_const_value_attribute): Return true if successful.
8635         (tree_add_const_value_attribute_for_decl): Likewise.
8636
8637         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
8638         (loc_descriptor): ... here;
8639         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8640         (cst_pool_loc_descr): Break out from ...; do not reffer constant
8641         pool items that was not marked for output.
8642         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
8643         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8644         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
8645         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
8646         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
8647         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
8648         DW_OP_stack_value to get address of items that are not available
8649         as addresses.
8650         (dw_loc_list): Handle single element lists correctly.
8651
8652 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
8653             Pascal Obry  <obry@adacore.com>
8654
8655         * unwind-dw2-fde.c (classify_object_over_fdes):
8656         Cast the constant 1 to _Unwind_Ptr.
8657         (add_fdes): Likewise.
8658         (linear_search_fdes): Likewise.
8659
8660 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
8661
8662         * stor-layout.c (set_sizetype): Avoid useless type copy.
8663
8664 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
8665
8666         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
8667         feature check.
8668         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
8669         * configure, config.in: Regenerate.
8670         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
8671         DW_EH_PE_absptr.
8672         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
8673         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
8674         for global data if the output could be used in a shared library.
8675         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
8676         to 0 if TARGET_WRITABLE_EH_FRAME.
8677
8678 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
8679
8680         PR rtl-optimization/39886
8681         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
8682         just when insn is equal to BB_END (bb).
8683
8684 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
8685
8686         * config/mips/mips.opt (mrelax-pic-calls): New option.
8687         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
8688         the file.
8689         (mips_unspec_call): Change "unspec_call" expander into this.
8690         (mips_strip_unspec_call): New function.
8691         (mips_got_load): Call mips_unspec_call instead of
8692         gen_unspec_call<mode>.
8693         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
8694         MIPS_CALL.
8695         (mips_cfg_in_reorg): New function.
8696         (mips16_lay_out_constants): Use it to decide whether to call
8697         CFG-aware insn splitting.
8698         (r10k_insert_cache_barriers): Move CFG set-up code from here to
8699         mips_reorg.  Move DF set-up code from here ...
8700         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
8701         from here.
8702         (mips_reorg): Call mips_df_reorg instead of
8703         r10k_insert_cache_barriers.  Move CFG set-up code here from
8704         r10k_insert_cache_barriers.
8705         (mips_call_expr_from_insn): New function.
8706         (mips_pic_call_symbol_from_set): Likewise.
8707         (mips_find_pic_call_symbol): Likewise.
8708         (mips_annotate_pic_call_expr): Likewise.
8709         (mips_get_pic_call_symbol): Likewise.
8710         (mips_annotate_pic_calls): Likewise.
8711         (mips_override_options): Disable -mrelax-pic-calls unless PIC
8712         calls are used.
8713         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
8714         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
8715         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
8716         directive.
8717         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
8718         (unspec_call<mode>): Remove it.
8719         (sibcall_internal, sibcall_value_internal,
8720         sibcall_value_multiple_internal, call_internal, call_split,
8721         call_value_internal, call_value_split,
8722         call_value_multiple_internal, call_value_multiple_split): Pass
8723         SIZE_OPNO to MIPS_CALL.
8724         (call_internal_direct, call_direct_split,
8725         call_value_internal_direct, call_value_direct_split): Pass -1 as
8726         SIZE_OPNO to MIPS_CALL.
8727         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
8728         * configure: Regenerate.
8729         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
8730         and -mno-relax-pic-calls.
8731         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
8732
8733 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
8734
8735         PR bootstrap/35619
8736         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
8737         in the directory this rule is called from, rather than the
8738         toplevel 'gcc' directory, to fix in-tree build.
8739
8740 2009-09-19  Chris Demetriou  <cgd@google.com>
8741
8742         PR preprocessor/28435:
8743         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
8744         to cpplib that the preprocessor output is needed.
8745
8746 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
8747
8748         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
8749         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
8750         *return_and_restore_fpregs_<mode>,
8751         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
8752
8753         PR bootstrap/41397
8754         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
8755         instead of assuming it has always a REG inside of it.
8756
8757 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
8758
8759         * config/freebsd.h: Update comment on types.
8760         (WINT_TYPE): Define.
8761
8762 2009-09-18  Jason Merrill  <jason@redhat.com>
8763
8764         * c.opt: Add -fno-deduce-init-list.
8765
8766 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
8767
8768         * value-prof.c (interesting_stringop_to_profile_p): Added output
8769         argument to indicate which parameter is the size parameter.
8770         * value-prof.c (gimple_stringop_fixed_value): Use
8771         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
8772         * value-prof.c (gimple_stringops_transform): Update call sites to
8773         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
8774
8775 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
8776
8777         PR target/38288
8778         From David Binderman <dcb314@hotmail.com>:
8779         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
8780         local variable f.  Remove stale comments.
8781         (ix86_compute_frame_layout): Remove useless local variable total_size.
8782         Remove #if 0'd code.
8783         (legitimate_address_p): Remove useless local variables
8784         reason_rtx and reason.
8785         (ix86_split_copysign_const): Remove useless local variable op1.
8786         (scale_counter): Remove useless local variable piece_size_mask.
8787
8788 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
8789
8790         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
8791         output decl.
8792
8793 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
8794
8795         PR target/40913
8796         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
8797
8798 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
8799
8800         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
8801         TYPE_STUB_DECL.
8802
8803 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
8804
8805         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
8806         DW_OP_implicit_value even without dwarf_version 4.
8807
8808 2009-09-17  Jan Hubicka  <jh@suse.cz>
8809
8810         * dwarf2out.c: Include tree-pass.h and gimple.h.
8811         (loc_list_plus_const): New function.
8812         (loc_descriptor_from_tree_1): Rename to ...
8813         (loc_descriptor_from_tree): ... remove original.
8814         (loc_list_from_tree): New function.
8815         (add_AT_location_description): Accept location list.
8816         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
8817         (concatn_mem_loc_descriptor): Remove.
8818         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
8819         returning NULL.
8820         (secname_for_decl): Move up.
8821         (hidden_reference_p): New function; break out from ...
8822         (loc_by_refernece): ... here; move up.
8823         (dw_loc_list): New function.
8824         (single_element_loc_list): New function.
8825         (single_element_loc_list_p): New function.
8826         (add_loc_descr_to_each): New function.
8827         (add_loc_list): New function.
8828         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
8829         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
8830         add diagnostics why expansion failed.
8831         (add_location_or_const_value_attribute): Support location lists.
8832         (add_bound_info): Likewise.
8833         (descr_info_loc): Update call of loc_descriptor_from_tree.
8834         (gen_variable_die): Work on location lists.
8835         * final.c (pass_final): Add dump file.
8836         * Makefile.in (dwarf2out.o): Add new dependencies.
8837
8838 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
8839
8840         PR c/41049
8841         * real.c decimal_from_integer, decimal_integer_string): New.
8842         (real_from_integer): Use them as special case for decimal float.
8843         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
8844         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
8845         Do not append zero after the decimal point in string to convert.
8846
8847 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
8848
8849         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
8850         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
8851
8852 2009-09-17  Martin Jambor  <mjambor@suse.cz>
8853
8854         * common.opt (fipa-sra): New switch.
8855         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
8856         * timevar.def (TV_IPA_SRA): New timevar.
8857         * params.def (ipa-sra-ptr-growth-factor): New parameter.
8858         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
8859         * tree-sra.c: Include cgraph.c.
8860         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
8861         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
8862         and grp_not_necessarilly_dereferenced.
8863         (func_param_count): New variable.
8864         (encountered_apply_args): New variable.
8865         (bb_dereferences): New variable.
8866         (final_bbs): New variable.
8867         (no_accesses_representant): New variable.
8868         (no_accesses_p): New function.
8869         (dump_access): Dump the new fields.
8870         (sra_initialize): Set encountered_apply_args to false.
8871         (get_ssa_base_param): New function.
8872         (mark_parm_dereference): New function.
8873         (create_access): Caring for INIDRECT_REFs and different handling of
8874         varialble length accesses in early IPA SRA.  Store the stmt - a new
8875         parameter - to the new access.
8876         (build_access_from_expr_1): New parameter stmt, passed to
8877         create_access.  Handle INDIRECT_REFs.
8878         (build_access_from_expr): Pass the current statement to
8879         build_access_from_expr_1.
8880         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
8881         passes.
8882         (build_accesses_from_assign): Pass the current statement to
8883         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
8884         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
8885         final_bbs when necessary.  Check for calls to __builtin_apply_args.
8886         Fixup EH info if anythng was changed.
8887         (is_unused_scalar_param): New function.
8888         (ptr_parm_has_direct_uses): New function.
8889         (find_param_candidates): New function.
8890         (mark_maybe_modified): New function.
8891         (analyze_modified_params): New function.
8892         (propagate_dereference_distances): New function.
8893         (dump_dereferences_table): New function.
8894         (analyze_caller_dereference_legality): New function.
8895         (unmodified_by_ref_scalar_representative): New function.
8896         (splice_param_accesses): New function.
8897         (decide_one_param_reduction): New function.
8898         (enum ipa_splicing_result): New type.
8899         (splice_all_param_accesses): New function.
8900         (get_param_index): New function.
8901         (turn_representatives_into_adjustments): New function.
8902         (analyze_all_param_acesses): New function.
8903         (get_replaced_param_substitute): New function.
8904         (get_adjustment_for_base): New function.
8905         (replace_removed_params_ssa_names): New function.
8906         (sra_ipa_reset_debug_stmts): New function.
8907         (sra_ipa_modify_expr): New function.
8908         (sra_ipa_modify_assign): New function.
8909         (convert_callers): New function.
8910         (modify_function): New function.
8911         (ipa_sra_preliminary_function_checks): New function.
8912         (ipa_early_sra): New function.
8913         (ipa_early_sra_gate): New function.
8914         (pass_early_ipa_sra): New variable.
8915         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
8916
8917 2009-09-17  Michael Matz  <matz@suse.de>
8918
8919         PR middle-end/41347
8920         * tree.c (build_type_attribute_qual_variant): Export.
8921         * tree.h (build_type_attribute_qual_variant): Declare.
8922         * tree-inline.c (remap_type_1): Use it to build variants with
8923         the original qualifiers and attributes.
8924
8925 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8926
8927         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
8928         without a fallthrough edge.
8929
8930 2009-09-16  DJ Delorie  <dj@redhat.com>
8931
8932         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
8933         chip and ignore the "fast_interrupt" attribute if so.
8934
8935 2009-09-16  Richard Henderson  <rth@redhat.com>
8936
8937         PR middle-end/41360
8938         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
8939         barrier fix.
8940
8941 2009-09-16  Richard Henderson  <rth@redhat.com>
8942
8943         PR target/41246
8944         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
8945         is set only if DECL_NO_STATIC_CHAIN is unset.
8946         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
8947         (FOR_EACH_NEST_INFO): New.
8948         (walk_all_functions): Use it.
8949         (finalize_nesting_tree): Likewise.
8950         (unnest_nesting_tree): Likewise.
8951         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
8952         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
8953         (convert_gimple_call): Early out if gimple_call_chain already set.
8954         (convert_all_function_calls): Iterate until no new functions
8955         require a static chain.
8956         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
8957         when building a trampoline.  Use dump_function_to_file instead
8958         of dump_function.
8959         (lower_nested_functions): Open dump_file.  Validate that decls
8960         that have DECL_NO_STATIC_CHAIN from the front end don't have that
8961         bit reset by this pass.
8962
8963 2009-09-16  Michael Matz  <matz@suse.de>
8964
8965         PR fortran/41212
8966         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
8967         shorten decl_common_unused.
8968         (DECL_RESTRICTED_P): New accessor.
8969         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
8970         to disambiguate marked decls and restrict pointers.
8971
8972 2009-09-16  Richard Henderson  <rth@redhat.com>
8973
8974         PR middle-end/41360
8975         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
8976
8977 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
8978
8979         * integrate.c (set_block_abstract_flags): Call
8980         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
8981
8982 2009-09-16  Richard Guenther  <rguenther@suse.de>
8983
8984         PR middle-end/34011
8985         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
8986         as non-aliased.
8987
8988 2009-09-16  DJ Delorie  <dj@redhat.com>
8989             Kaz Kojima  <kkojima@gcc.gnu.org>
8990
8991         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
8992         (sh_expand_prologue): Update calls to output_stack_adjust.
8993         (sh_expand_epilogue): Likewise.
8994
8995 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
8996
8997         PR bootstrap/41349
8998         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
8999         trying to limit the extent of searches in the insn stream.
9000
9001 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
9002             Jakub Jelinek  <jakub@redhat.com>
9003
9004         PR target/41175
9005         PR target/40677
9006         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
9007         problem.
9008         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
9009         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
9010         (rs6000_savres_strategy): Always save FP registers inline if the
9011         target doesn't support hardware double-precision.  Set the above
9012         bits in return value when needed.
9013         (rs6000_savres_routine_sym): Fix computation for cache selector.
9014         Mark the generated symbol as a function.  Rename exitp argument to
9015         lr.  Move code for determining the name of the symbol...
9016         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
9017         getting the names right on AIX and 64-bit Linux.
9018         (savres_routine_name): New variable.
9019         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
9020         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
9021         on what the target routine uses as a base register.  If savep && lr
9022         describe saving of r0 into memory slot.
9023         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
9024         line calls for AIX ABI.
9025         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
9026         determine FP save/restore functions.
9027         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
9028         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
9029         gen_addsi3.
9030         (rs6000_emit_epilogue): Adjust computation of restore_lr.
9031         Duplicate restoration of LR and execute the appropriate one
9032         depending on whether GPRs are being restored inline.  Set r11 from
9033         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
9034         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
9035         Fix out of line calls for AIX ABI.
9036         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
9037         New insn.
9038         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
9039         register 11.
9040         (*restore_gpregs_spe): Likewise.
9041         (*return_and_restore_gpregs_spe): Likewise.
9042         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
9043         Define to empty string unconditionally.
9044         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
9045         Define to empty string unconditionally.
9046         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
9047         !TARGET_64BIT.
9048
9049 2009-09-15  Jan Hubicka  <jh@suse.cz>
9050
9051         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
9052         * params.def (inline-insns-auto): Likewise.
9053
9054 2009-09-15  Martin Jambor  <mjambor@suse.cz>
9055
9056         * ipa-inline.c (estimate_function_body_sizes): Dump info about
9057         individual statements only at TDF_DETAILS dump level.  Format
9058         source for 80 characters per line.
9059
9060 2009-09-15  Christian Bruel  <christian.bruel@st.com>
9061
9062         * regrename.c (do_replace): Update REG_DEAD notes.
9063
9064 2009-09-15  Revital Eres  <eres@il.ibm.com>
9065
9066         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
9067         * targhooks.c (default_builtin_support_vector_misalignment):
9068         New builtin function.
9069         * targhooks.h (default_builtin_support_vector_misalignment):
9070         Declare.
9071         * target.h (builtin_support_vector_misalignment):
9072         New field in struct gcc_target.
9073         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
9074         new builtin function.
9075         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
9076         Define.
9077         * config/rs6000/rs6000.c
9078         (rs6000_builtin_support_vector_misalignment): New function.
9079         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
9080
9081 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
9082
9083         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
9084         instead of INSN_P.
9085         (bfin_optimize_loop): Likewise.
9086         (bfin_gen_bundles): Likewise.
9087         (workaround_speculation): Likewise.
9088         (find_load): Return NULL_RTX for debug_insn.
9089
9090 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
9091
9092         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
9093         (sminsf3): Ditto.
9094
9095 2009-09-14  DJ Delorie  <dj@redhat.com>
9096
9097         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
9098         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
9099         VLIW mode.
9100
9101 2009-09-14  Richard Henderson  <rth@redhat.com>
9102             Jakub Jelinek  <jakub@redhat.com>
9103
9104         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
9105         * cfgbuild.c (make_edges): Handle asm goto.
9106         * cfglayout.c (fixup_reorder_chain): Likewise.
9107         * cfgrtl.c (patch_jump_insn): Likewise.
9108         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
9109         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
9110         (gimple_build_asm_vec): Add and use labels parameter.
9111         (gimple_build_asm): Remove.
9112         (walk_gimple_asm): Walk labels too.
9113         * gimple.def (GIMPLE_ASM): Update docs.
9114         * gimple.h: Update decls.
9115         (struct gimple_statement_asm): Change nc to use unsigned char;
9116         add nl member.
9117         (gimple_asm_nlabels): New.
9118         (gimple_asm_label_op, gimple_asm_set_label_op): New.
9119         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
9120         into gimple_build_asm_vec.
9121         * jump.c (mark_jump_label_asm): New.
9122         (mark_jump_label): Use it.
9123         (redirect_jump_1): Handle asm goto.
9124         (invert_jump_1): Soft fail if X is null.
9125         * recog.c (extract_asm_operands): New.
9126         (asm_noperands): Use it; handle asm labels.
9127         (decode_asm_operands): Use extract_asm_operands.
9128         (asm_operand_ok): Properly handle empty string.
9129         * reg-stack.c (get_asm_operands_in_out): Rename from
9130         get_asm_operand_n_inputs; use extract_asm_operands; return both
9131         inputs and outputs by reference; update all callers.
9132         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
9133         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
9134         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
9135         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
9136         (extract_asm_operands): Declare.
9137         * stmt.c (expand_asm_operands): Add and use labels parameter.
9138         (check_unique_operand_names): Likewise.
9139         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
9140         (expand_asm_stmt): Handle asm labels.
9141         * tree-cfg.c (make_gimple_asm_edges): New.
9142         (make_edges): Use it.
9143         (cleanup_dead_labels): Handle asm labels.
9144         (is_ctrl_altering_stmt): Likewise.
9145         (gimple_redirect_edge_and_branch): Likewise.
9146         * tree.def (ASM_EXPR): Add 5th operand.
9147         * tree.h (ASM_LABELS): New.
9148         (resolve_asm_operand_names): Update decl.
9149
9150         * c-parser.c (c_parser_asm_statement): Parse asm goto.
9151         (c_parser_asm_goto_operands): New.
9152         * c-tree.h (build_asm_expr): Update decl.
9153         * c-typeck.c (build_asm_expr): Add and use labels parameter.
9154         * doc/extend.texi: Document asm goto.
9155
9156 2009-09-14  Richard Henderson  <rth@redhat.com>
9157
9158         * except.h: Update declarations.
9159         (struct pointer_map_t): Forward declare.
9160         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
9161         (struct eh_landing_pad_d, eh_landing_pad): New.
9162         (struct eh_catch_d, eh_catch): New.
9163         (struct eh_region_d): Remove next_region_sharing_label, aka,
9164         label, tree_label, landing_pad, post_landing_pad, resume,
9165         may_contain_throw.  Rename region_number to index.  Remove
9166         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
9167         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
9168         (VEC(eh_landing_pad,gc)): New.
9169         (struct eh_status): Remove last_region_number.  Add lp_array,
9170         throw_stmt_table, ttype_data, ehspec_data.
9171         (ehr_next, FOR_ALL_EH_REGION_AT): New.
9172         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
9173         * except.c (lang_protect_cleanup_actions): Return tree.
9174         (struct ehl_map_entry): Remove.
9175         (init_eh_for_function): Push zero entries for region and lp_array.
9176         (gen_eh_region): Add to region_array immediately.
9177         (gen_eh_region_catch): Operate on eh_catch objects.
9178         (gen_eh_landing_pad): New.
9179         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
9180         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
9181         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
9182         (get_eh_landing_pad_from_number_fn): New.
9183         (get_eh_landing_pad_from_number): New.
9184         (get_eh_region_from_lp_number_fn): New.
9185         (get_eh_region_from_lp_number): New.
9186         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
9187         (get_exception_pointer, get_exception_filter): Remove.
9188         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
9189         (current_function_has_exception_handlers): Simplify.
9190         (bring_to_root, eh_region_replaceable_by_p): Remove.
9191         (replace_region, hash_type_list, hash_eh_region): Remove.
9192         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
9193         (label_to_region_map, num_eh_regions): Remove.
9194         (get_next_region_sharing_label, must_not_throw_labels): Remove.
9195         (find_exception_handler_labels): Remove.
9196         (duplicate_eh_regions_0, find_prev_try): Remove.
9197         (struct duplicate_eh_regions_data): New.
9198         (duplicate_eh_regions_1): Rewrite.
9199         (duplicate_eh_regions): Return a pointer map instead of an
9200         integer offset.
9201         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
9202         (redirect_eh_edge_to_label): Remove.
9203         (eh_region_outermost): Rewrite using eh_region pointers
9204         instead of integers.
9205         (add_ttypes_entry): Update for ttype_data move to eh_status.
9206         (add_ehspec_entry): Rewrite with VEC instead of varray.
9207         (assign_filter_values): Likewise.  Export.
9208         (build_post_landing_pads, connect_post_landing_pads): Remove.
9209         (dw2_build_landing_pads): Rewrite to use lp_array.
9210         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
9211         (sjlj_assign_call_site_values): Rewrite to use lp_array.
9212         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
9213         (sjlj_mark_call_sites): Update for landing pad numbers.
9214         (finish_eh_generation): Rewrite.
9215         (gate_handle_eh): Do nothing for no eh tree.
9216         (pass_rtl_eh): Move up near finish_eh_generation.
9217         (remove_eh_landing_pad): New.
9218         (remove_eh_handler): Export.
9219         (remove_eh_region, remove_eh_handler_and_replace): Remove.
9220         (for_each_eh_label): Rewrite to use lp_array.
9221         (make_reg_eh_region_note): New.
9222         (make_reg_eh_region_note_nothrow_nononlocal): New.
9223         (insn_could_throw_p): New.
9224         (copy_reg_eh_region_note_forward): New.
9225         (copy_reg_eh_region_note_backward): New.
9226         (check_handled, add_reachable_handler): Remove.
9227         (reachable_next_level, foreach_reachable_handler): Remove.
9228         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
9229         (get_eh_region_and_lp_from_rtx): New.
9230         (get_eh_region_from_rtx): New.
9231         (can_throw_internal_1, can_throw_external_1): Remove.
9232         (can_throw_internal): Use get_eh_region_from_rtx.
9233         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
9234         (insn_nothrow_p, can_nonlocal_goto): New.
9235         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
9236         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
9237         (add_action_record): Use VEC not varray.
9238         (collect_one_action_chain): Update for eh_region changes.
9239         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
9240         Use get_eh_region_and_lp_from_rtx.
9241         (gate_convert_to_eh_region_ranges): New.
9242         (pass_convert_to_eh_region_ranges): Use it.
9243         (push_uleb128, push_sleb128): Use VEC not varray.
9244         (output_one_function_exception_table): Likewise.
9245         (dump_eh_tree): Update for eh_region changes.
9246         (verify_eh_tree): Likewise.
9247         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
9248         * tree-eh.c: Include target.h.
9249         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
9250         Don't disallow GIMPLE_RESX; adjust argument check.
9251         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
9252         (record_stmt_eh_region): Update for landing pad numbers;
9253         generate a landing pad if necessary.
9254         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
9255         (remove_stmt_from_eh_lp_fn): Similarly.
9256         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
9257         Update for lp numbers; don't special case missing throw_stmt_table.
9258         (lookup_expr_eh_lp): Similarly.
9259         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
9260         (eh_seq, eh_region_may_contain_throw): New.
9261         (struct leh_state): Add ehp_region.
9262         (struct leh_tf_state): Remove eh_label.
9263         (emit_post_landing_pad): New.
9264         (emit_resx, emit_eh_dispatch): New.
9265         (note_eh_region_may_contain_throw): New.
9266         (frob_into_branch_around): Take eh_region not eh label;
9267         emit eh code into eh_seq.
9268         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
9269         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
9270         lower_eh_must_not_throw.  Emit code to eh_seq.
9271         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
9272         (lower_try_finally_onedest): Likewise.
9273         (lower_try_finally_copy): Likewise.
9274         (lower_try_finally_switch): Likewise.
9275         (lower_try_finally): Initialize ehp_region.
9276         (lower_catch): Update for eh_catch objects.
9277         (lower_eh_filter): Don't handle must_not_throw.
9278         (lower_eh_must_not_throw): New.
9279         (lower_cleanup): Don't set eh_label.
9280         (lower_eh_constructs_2): Resolve eh builtins.
9281         Handle GIMPLE_EH_MUST_NOT_THROW.
9282         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
9283         Add eh_seq to the end of the function body.
9284         (make_eh_dispatch_edges): New.
9285         (make_eh_edge): Remove.
9286         (make_eh_edges): Simplify for landing pads.
9287         (redirect_eh_edge_1): New.
9288         (redirect_eh_edge): Use it.
9289         (redirect_eh_dispatch_edge): New.
9290         (stmt_could_throw_p): Use a switch.  Allow RESX.
9291         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
9292         (stmt_can_throw_internal): Likewise.
9293         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
9294         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
9295         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
9296         (gate_refactor_eh): New.
9297         (pass_refactor_eh): Use it.
9298         (lower_resx, execute_lower_resx, pass_lower_resx): New.
9299         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
9300         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
9301         (remove_unreachable_handlers): Rename from
9302         tree_remove_unreachable_handlers; rewrite for landing pads;
9303         call remove_eh_handler directly.
9304         (remove_unreachable_handlers_no_lp): New.
9305         (unsplit_eh, unsplit_all_eh): New.
9306         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
9307         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
9308         (cleanup_empty_eh_unsplit): New.
9309         (cleanup_empty_eh): Rewrite.
9310         (cleanup_all_empty_eh): New.
9311         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
9312         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
9313         (gate_cleanup_eh): New.
9314         (pass_cleanup_eh): Use it.
9315         (verify_eh_edges): Move later in file.  Expect one EH edge.
9316         (verify_eh_dispatch_edge): New.
9317
9318         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
9319         (gtype-desc.o): Add TARGET_H.
9320         (tree.o): Use EXCEPT_H, not except.h.
9321         (cfgbuild.o): Add EXPR_H.
9322         (GTFILES): Add vecprim.h.
9323         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
9324         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
9325         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
9326         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
9327         * calls.c (emit_call_1): Use make_reg_eh_region_note.
9328         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
9329         calls to can_throw_internal.
9330         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
9331         (make_edges): Don't handle RESX; use can_nonlocal_goto.
9332         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
9333         (expand_gimple_stmt): Use make_reg_eh_region_note.
9334         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
9335         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
9336         or find_exception_handler_labels.
9337         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
9338         there is exacly one EH edge.  Use can_nonlocal_goto and
9339         can_throw_internal.
9340         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
9341         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
9342         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
9343         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
9344         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
9345         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
9346         * dse.c (scan_insn): Use insn_could_throw_p.
9347         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
9348         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
9349         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
9350         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
9351         EXC_PTR_EXPR or FILTER_EXPR.
9352         (tree_expr_nonzero_warnv_p): Likewise.
9353         * function.h: Include vecprim.h, not varray.h
9354         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
9355         move ttype_data and ehspec_data members to struct eh_status; change
9356         action_record_data member to a VEC.
9357         * gcse.c (hash_scan_set): Use can_throw_internal.
9358         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
9359         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
9360         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
9361         (block_may_fallthru): Don't handle RESX_EXPR.
9362         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
9363         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
9364         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
9365         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
9366         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
9367         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
9368         (gimple_size): Likewise.
9369         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
9370         (gimple_build_resx): Use gimple_build_with_ops.
9371         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
9372         (is_gimple_val): Likewise.
9373         (is_gimple_stmt): Remove RESX_EXPR.
9374         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
9375         (GIMPLE_RESX): Reorder with other EH constructs.
9376         * gimple.h (struct gimple_statement_eh_mnt): New.
9377         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
9378         (gimple_eh_filter_must_not_throw): Remove.
9379         (gimple_eh_filter_set_must_not_throw): Remove.
9380         (gimple_eh_must_not_throw_fndecl): New.
9381         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
9382         (is_gimple_resx): New.
9383         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
9384         Don't copy EH_FILTER_MUST_NOT_THROW.
9385         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
9386         * ipa-inline.c (estimate_function_body_sizes): Don't try to
9387         handle must_not_throw_labels specially.
9388         * ipa-pure-const.c (check_call): Update debug statement for LP.
9389         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
9390         * ipa-utils.c (get_base_var): Likewise.
9391         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
9392         * lower-subreg.c (move_eh_region_note): Remove.
9393         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
9394         * omp-low.c (new_omp_context): Update for eh_lp_nr.
9395         (create_task_copyfn): Likewise.
9396         (maybe_catch_exception): Use gimple_build_eh_filter.
9397         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
9398         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
9399         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
9400         and pass_lower_resx.
9401         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
9402         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
9403         can_throw_internal, can_nonlocal_goto.
9404         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
9405         copy_reg_eh_region_note_forward.
9406         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
9407         (emit_output_reload_insns): Likewise.
9408         (copy_eh_notes): Remove.
9409         * rtl.def (RESX): Remove.
9410         * rtl.h: Update declarations.
9411         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
9412         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
9413         (update_eh_label): Remove.
9414         (cleanup_dead_labels_eh): New.
9415         (cleanup_deal_labels): Use it instead of update_eh_label.
9416         (gimple_merge_blocks): Update landing pad data structure when
9417         removing a landing pad label.
9418         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
9419         test; handle GIMPLE_EH_MUST_NOT_THROW.
9420         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
9421         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
9422         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
9423         (verify_stmt): Likewise.  Verify landing pads.
9424         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
9425         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
9426         (struct move_stmt_d): Add eh_map.
9427         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
9428         (move_stmt_r): Remap eh region numbers in builtin calls,
9429         resx and eh_dispatch.
9430         (move_block_to_fn): Remove eh_offset parameter.  Use
9431         maybe_duplicate_eh_stmt_fn.
9432         (find_outermost_region_in_block): Operate on eh_region pointers
9433         instead of region numbers.
9434         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
9435         duplicate_eh_regions.
9436         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
9437         test earlier.  Disallow EH landing pads.
9438         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
9439         * tree-flow.h: Update declarations.
9440         (struct tree_ann_common_d): Replace rn with lp_nr.
9441         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
9442         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
9443         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
9444         resx and eh_dispatch.
9445         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
9446         (copy_edges_for_bb): Use make_eh_dispatch_edges.
9447         (copy_cfg_body): Expect eh_map instead of eh_region_offset
9448         from duplicate_eh_regions.
9449         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
9450         update RESX; handle EH_DISPATCH.
9451         (expand_call_inline): Set eh_lp_nr, not eh_region.
9452         (maybe_inline_call_in_expr): Likewise.
9453         * tree-inline.h (struct copy_body_data): Replace eh_region with
9454         eh_lp_nr, eh_region_offset with eh_map.
9455         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
9456         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
9457         * tree-pretty-print.c (dump_generic_node): Don't handle
9458         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
9459         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
9460         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
9461         EXC_PTR_EXPR, FILTER_EXPR.
9462         * tree-ssa-operands.c (get_expr_operands): Likewise.
9463         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
9464         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
9465         (ao_ref_init_from_vn_reference): Likewise.
9466         * tree-ssa-sink.c (statement_sink_location): Likewise.
9467         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
9468         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
9469         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
9470         EXC_PTR_EXPR, FILTER_EXPR.
9471         (is_exception_related): Remove.
9472         (compute_avail): Don't call it.
9473         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
9474         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
9475         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
9476         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
9477         Build EH builtins.
9478         (build_resx): Remove.
9479         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
9480         * tree.h: Update declarations.
9481         (EH_FILTER_MUST_NOT_THROW): Remove.
9482         (struct tree_label_decl): Add eh_landing_pad_nr.
9483         (EH_LANDING_PAD_NR): New.
9484         * value-prof.c (gimple_ic): Tidy variable names.  Update for
9485         landing pad numbers.
9486         (gimple_stringop_fixed_value): Tidy variable names.  Assert
9487         that neither call stmt can throw.
9488         * vecprim.h (uchar): New.
9489         (VEC(uchar,heap), VEC(uchar,gc)): New.
9490
9491         * c-common.c (c_define_builtins): Update call to
9492         build_common_builtin_nodes.
9493         * c-parser.c (c_parse_file): Don't call
9494         default_init_unwind_resume_libfunc.
9495
9496 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
9497
9498         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
9499         (mips_cprestore_address_p): Likewise.
9500         (mips_save_gp_to_cprestore_slot): Likewise.
9501         (mips_restore_gp): Rename to...
9502         (mips_restore_gp_from_cprestore_slot): ...this.
9503         (mips_must_initialize_gp_p): Declare.
9504         (mips_emit_save_slot_move): Likewise.
9505         (mips_output_load_label): Return nothing.
9506         (mips_eh_uses): Declare.
9507         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
9508         (TARGET_CPRESTORE_DIRECTIVE): New macro.
9509         (TARGET_ABSOLUTE_JUMPS): Likewise.
9510         (EH_USES): Likewise.
9511         (FIRST_PSEUDO_REGISTER): Update comment.
9512         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
9513         (MIPS_CALL): ...here.
9514         (REGISTER_NAMES): Add $cprestore.
9515         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
9516         Add load_label_length, has_inflexible_gp_insn_p,
9517         has_flexible_gp_insn_p, must_initialize_gp_p and
9518         must_restore_gp_when_clobbered_p.
9519         (mips_expand_call): Don't generate split instructions here.
9520         (mips_split_call): Update the call to mips_restore_gp after
9521         the above name change.
9522         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
9523         (mips_find_gp_ref): New function.
9524         (mips_insn_has_inflexible_gp_ref_p): Likewise.
9525         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
9526         (mips_insn_has_flexible_gp_ref_p): Likewise.
9527         (mips_cfun_has_flexible_gp_ref_p): Likewise.
9528         (mips_function_has_gp_insn): Delete.
9529         (mips_global_pointer): Drop the df_regs_ever_live_p check.
9530         Use the new functions above.  Only return INVALID_REGNUM
9531         for TARGET_ABSOLUTE_JUMPS.
9532         (mips_must_initialize_gp_p): New function.
9533         (mips_get_cprestore_base_and_offset): New function, extracted from...
9534         (mips_cprestore_slot): ...here.  Take a bool parameter.
9535         (mips_cfun_has_cprestore_slot_p): New function.
9536         (mips_cprestore_address_p): Likewise.
9537         (mips_save_gp_to_cprestore_slot): Likewise.
9538         (mips_restore_gp): Rename to...
9539         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
9540         epilogue_completed.  Update the call to mips_cprestore_slot.
9541         Test cfun->machine->must_restore_gp_when_clobbered_p.
9542         (mips_direct_save_slot_move_p): New function.
9543         (mips_emit_save_slot_move): Likewise.
9544         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
9545         of cfun->machine->global_pointer.
9546         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
9547         (mips_save_reg): Use mips_emit_save_slot_move.
9548         (mips_expand_prologue): Set must_initialize_gp_p.
9549         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
9550         for all cprestore saves.  Emit a use_cprestore instruction after
9551         setting up the cprestore slot.
9552         (mips_restore_reg): Use mips_emit_save_slot_move.
9553         (mips_process_load_label): New function.
9554         (mips_load_label_length): Likewise.
9555         (mips_output_load_label): Don't return asm: output it here instead.
9556         Use mips_process_load_label.
9557         (mips_adjust_insn_length): Adjust the length of branch instructions
9558         that have length MAX_PIC_BRANCH_LENGTH.
9559         (mips_output_conditional_branch): Update the call to
9560         mips_output_load_label.  Assume the branch target is OPERANDS[0]
9561         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
9562         (mips_output_order_conditional_branch): Swap the meaning of
9563         OPERANDS[0] and OPERANDS[1].
9564         (mips_variable_issue): Don't count ghost instructions.
9565         (mips_expand_ghost_gp_insns): New function.
9566         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
9567         (mips_output_mi_thunk): Set must_initialize_gp_p.
9568         (mips_eh_uses): New function.
9569         * config/mips/predicates.md (cprestore_save_slot_operand)
9570         (cprestore_load_slot_operand): New predicates.
9571         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
9572         (UNSPEC_MOVE_GP): Likewise.
9573         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
9574         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
9575         (CPRESTORE_SLOT_REGNUM): New register.
9576         (MAX_PIC_BRANCH_LENGTH): New constant.
9577         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
9578         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
9579         branches.  Fix commentary.
9580         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
9581         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
9582         Change type to "ghost".
9583         (loadgp_absolute_<mode>): Likewise.
9584         (loadgp_rtp_<mode>): Likewise.
9585         (copygp_mips16): Likewise.
9586         (loadgp_blockage): Remove redundant mode attribute.
9587         (potential_cprestore): New instruction.
9588         (cprestore): Turn into an unspec set.
9589         (use_cprestore): New instruction.
9590         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
9591         (*branch_fp_inverted): Likewise.
9592         (*branch_order<mode>): Likewise.
9593         (*branch_order<mode>_inverted): Likewise.
9594         (*branch_equality<mode>): Likewise.
9595         (*branch_equality<mode>_inverted): Likewise.
9596         (*branch_bit<bbv><mode>): Likewise.
9597         (*branch_bit<bbv><mode>_inverted): Likewise.
9598         (*branch_equality<mode>_mips16): Remove redundant mode.
9599         (jump): Turn into a define_expand.
9600         (*jump_absolute): New instruction.
9601         (*jump_pic): Likewise.
9602         (*jump_mips16): Rename previously-unnamed pattern.  Remove
9603         redundant mode attribute.
9604         (restore_gp): Split on epilogue_completed rather than
9605         reload_completed.  Change type to "ghost".
9606         (move_gp<mode>): New instruction.
9607         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
9608         Remove redundant mode attribute.
9609         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
9610         (bc1any4f, bc1any2t, bc1any2f): Likewise.
9611         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
9612
9613 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
9614
9615         PR target/41210
9616         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
9617         are returned in the same register (vs34 or v2) that Altivec vector
9618         types are returned in.
9619         (rs6000_libcall_value): Ditto.
9620
9621         PR target/41331
9622         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
9623         instead of explicit addsi3/adddi3 calls.
9624         (rs6000_split_multireg_move): Ditto.
9625         (rs6000_emit_allocate_stack): Ditto.
9626         (rs6000_emit_prologue): Ditto.
9627         (rs6000_output_mi_thunk): Ditto.
9628
9629         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
9630         size is 64 bits if we can use 64-bit registers.
9631
9632 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
9633
9634         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
9635         symbols.
9636
9637         From Jie Zhang <jie.zhang@analog.com>:
9638         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
9639         save FP and RETS with saveall attribute.
9640         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
9641         with saveall attribute.
9642
9643         * config/bfin/bfin.c (bfin_expand_builtin,
9644         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
9645         operands.
9646
9647         From Jie Zhang <jie.zhang@analog.com>:
9648         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
9649         before use in two places.
9650         * config/bfin/bfin.md (AREG): Define mode iterator.
9651         (reload_in, reload_out): Use mode iterator AREG.
9652
9653 2009-09-14  Richard Guenther  <rguenther@suse.de>
9654
9655         PR middle-end/41350
9656         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
9657         EH personality path.
9658
9659 2009-09-13  Richard Guenther  <rguenther@suse.de>
9660             Rafael Avila de Espindola  <espindola@google.com>
9661
9662         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
9663         (LANG_HOOKS_EH_PERSONALITY): Likewise.
9664         (LANG_HOOKS_INITIALIZER): Adjust.
9665         (lhd_pass_through_t): Declare.
9666         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
9667         eh_personality.
9668         * langhooks.c (lhd_pass_through_t): New function.
9669         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
9670         dwarf2out_begin_prologue): Use personality from current_function_decl.
9671         * expr.h (get_personality_function): Declare.
9672         * expr.c (get_personality_function): New function.
9673         (build_personality_function): Likewise.
9674         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
9675         (eh_personality_libfunc): Remove.
9676         * optabs.c (build_libfunc_function): New function split out from ...
9677         (init_one_libfunc): ... here.
9678         * tree.h (DECL_FUNCTION_PERSONALITY): New.
9679         (tree_function_decl): Add personality.
9680         (lhd_gcc_personality): Declare.
9681         (build_personality_function): Likewise.
9682         * tree.c (gcc_eh_personality_decl): New.
9683         (lhd_gcc_personality): New function.
9684         * except.h (lang_eh_runtime_type): Remove.
9685         (enum eh_personality_kind): New.
9686         (build_personality_function): Declare.
9687         (function_needs_eh_personality): Declare.
9688         * except.c (lang_eh_runtime_type): Remove.
9689         (function_needs_eh_personality): New function.
9690         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
9691         (sjlj_emit_function_enter, output_function_exception_table):
9692         Use personality from current_function_decl.
9693         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
9694         * tree-inline.c (tree_can_inline_p): Do not inline across different
9695         EH personalities.
9696         (expand_call_inline): Likewise.  Adjust the callers EH personality.
9697         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
9698         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
9699         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
9700         (c-parser.o): Likewise
9701         * c-tree.h (c_eh_initialized_p): Remove.
9702         (c_maybe_initialize_eh): Likewise.
9703         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
9704         (finish_decl): Don't call c_maybe_initialize_eh.
9705         (c_eh_initialized_p): Remove.
9706         (c_maybe_initialize_eh): Likewise.
9707         * c-parser.c (c_parser_omp_construct): Likewise.
9708         (c_parse_file): Initialize exception handling.
9709
9710 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
9711
9712         * config.gcc (tm_file): Remove i386/biarch32.h
9713         for i?86-w64-mingw* case.
9714         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
9715         support.
9716         * config.host: Set for x64 mingw the option
9717         use_long_long_for_widest_fast_int to yes.
9718
9719 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
9720
9721         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
9722         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
9723         (dbxout_begin_function): Likewise.
9724         * final.c (dwarf2_debug_info_emitted_p): New predicate.
9725         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
9726         set on the function.
9727         (final_end_function): Likewise.
9728         (final_scan_insn): Likewise.
9729         (rest_of_handle_final): Likewise.
9730         * varasm.c (assemble_start_function): Likewise.
9731         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
9732
9733 2009-09-12  Jason Merrill  <jason@redhat.com>
9734
9735         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
9736         * opts.c (common_handle_option): constify.
9737
9738 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9739
9740         * doc/install.texi (avr): Remove obsolete reference site.
9741
9742 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
9743
9744         * doc/install.texi (Binaries): Adjust AIX link.
9745
9746 2009-09-12  Akim Demaille  <demaille@gostai.com>
9747
9748         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
9749         Use an imperative sentence.
9750
9751 2009-09-11  Richard Henderson  <rth@redhat.com>
9752
9753         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
9754         structure-name and has-tree-operands arguments; update all entries.
9755         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
9756         update all entries.
9757         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
9758         (gsstruct_code_size): New.
9759         (gss_for_code_): New.
9760         (gss_for_code): Remove.
9761         (gimple_size): Rewrite using gsstruct_code_size.
9762         (gimple_statement_structure): Move to gimple.h.
9763         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
9764         (gss_for_code, gimple_statement_structure): New.
9765         (gimple_ops): Use new arrays; tidy.
9766
9767 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9768
9769         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
9770         operand to be a PLUS expression.
9771         * config/pa/pa.c (pa_secondary_reload): Likewise.
9772
9773 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
9774
9775         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
9776
9777         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
9778         XEXP (in_rtx, 8).
9779
9780 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9781
9782         From Jie Zhang <jie.zhang@analog.com>:
9783         * doc/extend.texi (node Function Attributes): Document l2
9784         function attribute.
9785         (node Blackfin Variable Attributes): Document l2 variable attributes.
9786
9787 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
9788
9789         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
9790         to match the system compiler's configuration at inflection point.
9791         Add comment to remark a remaining difference with system compiler.
9792
9793         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
9794         * configure: Regenerate.
9795
9796 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
9797
9798         From Jie Zhang <jie.zhang@analog.com>:
9799         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
9800         (bfin_handle_l2_attribute): New.
9801         (bfin_attribute_table): Add l2 attribute.
9802
9803 2009-09-11  Michael Matz  <matz@suse.de>
9804
9805         PR middle-end/41275
9806         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
9807         on the local_decls list.
9808
9809 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
9810
9811         PR debug/41276
9812         PR debug/41307
9813         * cselib.c (cselib_expand_value_rtx_cb): Document callback
9814         interface.
9815         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
9816         for VALUEs, to implement the documented interface.
9817         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
9818         Adjust for VALUEs and anything else, to implement the
9819         documented interface.
9820
9821 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
9822
9823         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
9824         with actual SPE/paired vector modes before using 64-bit alignment.
9825         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
9826
9827 2009-09-10  DJ Delorie  <dj@redhat.com>
9828
9829         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
9830         emitted.
9831
9832         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
9833         * config/mep/mep.c (mep_legitimate_constant_p): New.
9834         * config/mep/mep-protos.h: Prototype it.
9835
9836 2009-09-10  Richard Henderson  <rth@redhat.com>
9837
9838         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
9839
9840 2009-09-10  Jason Merrill  <jason@redhat.com>
9841
9842         * tree.c (chain_index): New fn.
9843         * tree.h: Declare it.
9844
9845 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9846
9847         * config/sol2-c.c (cmn_err_length_specs): Initialize
9848         scalar_identity_flag.
9849
9850 2009-09-10  Richard Henderson  <rth@redhat.com>
9851
9852         * tree.h (struct tree_decl_common): Move align member earlier;
9853         move label_decl_uid member ...
9854         (struct tree_label_decl): ... here.
9855         (LABEL_DECL_UID): Update to match.
9856
9857         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
9858         not TDF_DETAILS.
9859
9860         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
9861         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
9862
9863         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
9864         dest_prev if the edge is complex.
9865
9866         * tree-cfg.c (is_ctrl_stmt): Use a switch.
9867
9868         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
9869         loop latch tests earlier.
9870
9871         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
9872         before GIMPLE_RETURN, not after its predecessor; insert
9873         before GIMPLE_RESX.
9874
9875         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
9876         gimple_seq_empty_p to test for no PHI nodes.
9877         * tree-cfg.c (split_critical_edges): Likewise.
9878
9879         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
9880
9881 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9882
9883         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
9884         introduced by the VTA branch merge.
9885
9886 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9887
9888         * ira-conflicts.c: Use fputs or putc instead of fprintf
9889         where appropriate.
9890         * cfg.c: Ditto.
9891         * toplev.c: Ditto.
9892         * tree-switch-conversion.c: Ditto.
9893
9894 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9895
9896         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
9897         introduced by the VTA branch merge.
9898
9899 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9900
9901         Revert:
9902         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9903
9904         PR rtl-optimization/39779
9905         * expr.c (convert_modes): Return when mode == oldmode after
9906         CONST_INTs are processed.
9907
9908 2009-09-10  Nick Clifton  <nickc@redhat.com>
9909
9910         * config/mep/mep.c (mep_encode_section_info): Copy weakness
9911         attribute and referring decl when creating renamed symbol.
9912
9913 2009-09-10  Richard Guenther  <rguenther@suse.de>
9914
9915         PR middle-end/41257
9916         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
9917         reachable nodes.
9918         (cgraph_finalize_compilation_unit): Compute reachability
9919         before emitting thunks.  Properly process aliases before
9920         possibly removing unreachable nodes.
9921
9922 2009-09-10  Richard Guenther  <rguenther@suse.de>
9923
9924         PR middle-end/41254
9925         * tree.c (struct free_lang_data_d): Add worklist member.
9926         (find_decls_types_r): Push onto the worklist instead of recursing.
9927         Handle TREE_BINFOs properly.
9928         (find_decls_types): New function wrapped around find_decls_types_r
9929         to process the worklist.
9930         (find_decls_types_in_eh_region): Use it.
9931         (find_decls_types_in_node): Likewise.
9932         (find_decls_types_in_var): Likewise.
9933         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
9934         * tree.h (RECORD_OR_UNION_TYPE_P): New.
9935         (AGGREGATE_TYPE_P): Adjust.
9936
9937 2009-09-09  Jason Merrill  <jason@redhat.com>
9938
9939         * configure.ac: Check glibc version even if we have an in-tree
9940         assembler.
9941
9942 2009-09-09  Anthony Green  <green@moxielogic.com>
9943
9944         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
9945         the constant 0 when appropriate.
9946         * config/moxie/constraints.md: Add constraint O.
9947
9948         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
9949         to pass up to 6 32-bit argument values in registers.
9950         (moxie_function_arg): Ditto.
9951         (moxie_arg_partial_bytes): Ditto.
9952         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
9953         (REG_PARM_STACK_SPACE): Ditto.
9954         (FUNCTION_ARG_REGNO_P): Ditto.
9955
9956         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9957         instruction to allocate stack space.
9958
9959 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9960
9961         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
9962         unnecessarily stringent constraints.  Fix address
9963         calculation in the splitters.
9964
9965 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9966
9967         PR rtl-optimization/39779
9968         * expr.c (convert_modes): Return when mode == oldmode after
9969         CONST_INTs are processed.
9970
9971 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
9972
9973         PR/41315
9974         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
9975         (ix86_expand_prologue): Take frame.padding0 into logic of
9976         to_allocate checks.
9977         (ix86_expand_epilogue): Likewise.
9978
9979 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
9980
9981         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
9982         New variables.
9983         (SHLIB_LINK, SHLIB_INSTALL): Use them.
9984         * config/t-slibgcc-libgcc: New file.
9985         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
9986
9987 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9988
9989         PR tree-optimization/41089
9990         * tree-sra.c (find_var_candidates): Do not consider va_lists in
9991         early SRA.
9992
9993 2009-09-09  Richard Henderson  <rth@redhat.com>
9994
9995         * gimple.h (CASE_GIMPLE_OMP): New.
9996         (is_gimple_omp): Use it.
9997         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
9998         (verify_gimple_debug): Likewise.
9999
10000 2009-09-09  Richard Guenther  <rguenther@suse.de>
10001
10002         PR tree-optimization/41101
10003         * tree-ssa-pre.c (maximal_set): Remove.
10004         (compute_antic_aux): Treat the maximal set as implicitly all ones.
10005         Defer all blocks we didn't visit at least one successor.
10006         (add_to_exp_gen): Do not add to the maximal set.
10007         (make_values_for_phi): Likewise.
10008         (compute_avail): Likewise.
10009         (init_pre): Do not allocate the maximal set.
10010         (execute_pre): Do not dump it.
10011
10012 2009-09-09  Martin Jambor  <mjambor@suse.cz>
10013
10014         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
10015         an SSA_NAME rather than a is_gimple_variable.
10016
10017 2009-09-09  Richard Guenther  <rguenther@suse.de>
10018
10019         PR middle-end/41317
10020         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
10021         code dealing with plain pointer bases.
10022         (maybe_fold_offset_to_reference): Likewise.
10023         (maybe_fold_stmt_addition): Adjust.
10024
10025 2009-09-09  Richard Guenther  <rguenther@suse.de>
10026
10027         * tree.c (free_lang_data_in_type): Do not free the type variant
10028         chains.
10029         (free_lang_data): Merge char_type_node with its properly signed
10030         variant.
10031         (pass_ipa_free): Collect after freeing language specific data.
10032
10033 2009-09-09  Michael Matz  <matz@suse.de>
10034
10035         PR middle-end/41268
10036         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
10037         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
10038         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
10039         to reflect reality.
10040
10041 2009-09-08  DJ Delorie  <dj@redhat.com>
10042
10043         * config/mep/mep.c (conversions[]): Add "ml" pattern.
10044
10045 2009-09-04  Jason Merrill  <jason@redhat.com>
10046
10047         * tree.c (tree_find_value): Remove.
10048         * tree.h: Remove prototype.
10049         * varasm.c (assemble_external): Use value_member instead.
10050
10051 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
10052
10053         * toplev.c (process_options): Choose default debugging type when
10054         gtoggle enables debug info and type is unset.
10055
10056 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
10057
10058         PR debug/41276
10059         PR debug/41307
10060         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
10061         invalid subreg.
10062
10063 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
10064
10065         * configure: Rebuilt with modified libtool.m4.
10066
10067 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
10068
10069         PR debug/41229
10070         PR debug/41291
10071         PR debug/41300
10072         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
10073
10074 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
10075
10076         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
10077         (remove_statement): Likewise.
10078         (rewrite_use_nonlinear_expr): Adjust.
10079         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
10080         * tree-ssa.c (release_defs_bitset): ... this.  New.
10081         * tree-flow.h (release_defs_bitset): Declare.
10082
10083 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
10084
10085         PR debug/41232
10086         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
10087         in the middle block.
10088
10089 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
10090
10091         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
10092         via intptr_t to long type.
10093         (insert_operand_rank): Cast long type via intptr_t to
10094         pointer type.
10095         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
10096         pointer to scalar.
10097         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
10098         from pointer to unsigned via uintptr_t.
10099
10100         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
10101         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
10102         and HAVE_INTPTR_T.
10103         * configure: Regenerated.
10104         * config.in: Regenerated
10105         * system.h (stdint.h): Add include.
10106         (inttypes.h): Likewise.
10107         * Makefile.in (aclocal): Add config/stdint.m4.
10108         * aclocal.m4: Regenerated.
10109
10110 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
10111
10112         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
10113         variables.
10114         (note_np_check_stores): New function.
10115         (harmless_null_pointer_p): New function.
10116         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
10117         changed.  Take into account whether we're in the shadow of a condjump
10118         that tested NP_REG for NULL.
10119         Lose all code that tested for SEQUENCEs.
10120         (workaround_speculation): Avoid inserting NOPs for loads that are
10121         either always executed or a NULL pointer.
10122
10123 2009-09-08  Jan Hubicka  <jh@suse.cz>
10124
10125         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
10126         * params.def (early-inlining-insns): Likewise.
10127
10128 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
10129
10130         PR rtl-optimization/41239
10131         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
10132         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
10133         lists.
10134         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
10135         across calls, as the calls might not always return normally.
10136         (call_may_noreturn_p): New function.
10137         (deps_analyze_insn): Update last_function_call_may_noreturn list.
10138         (init_deps): Initialize it.
10139         (remove_from_deps): Also remove calls from
10140         last_function_call_may_noreturn list.
10141
10142 2009-09-07  Richard Henderson  <rth@redhat.com>
10143
10144         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
10145         more VR->OPERANDS than LHS operands.  Free LHS before returning.
10146
10147 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
10148
10149         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
10150         (attr "addrtype"): New member "spreg".
10151         Use it if mem_spfp_address_operand is true for the address.
10152         (attr "type"): New entry "stall".
10153         (cpu_unit "load"): New.
10154         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
10155         "load".
10156         (insn_reservation "loadsp"): New.
10157         (insn_reservation "load_stall1"): New.
10158         (insn_reservation "load_stall3"): New.
10159         (stall): New insn.
10160         * config/bfin/predicates.md (const1_operand, const3_operand): New.
10161         (mem_p_address_operand): Exclude stack and frame pointer based
10162         addresses.
10163         (mem_spfp_address_operand): New; match them here.
10164         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
10165         (bfin_reorg): Call it if scheduling insns.
10166         (bfin_gen_bundles): Remove dummy insns created by
10167         add_sched_insns_for_speculation.
10168
10169         From Jie Zhang <jie.zhang@analog.com>:
10170         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
10171         bfin_si_revision, bfin_workarounds): Move these ...
10172         * config/bfin/bfin.h: ... here.
10173
10174         From Mike Frysinger  <michael.frysinger@analog.com>
10175         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
10176         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
10177         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
10178         bf547m, bf548m, and bf549m.
10179         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
10180         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
10181         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
10182         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
10183         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
10184         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
10185         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
10186         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
10187         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
10188         bf542m, bf544m, bf547m, bf548m, and bf549m.
10189
10190         From Jie Zhang <jie.zhang@analog.com>:
10191         * config/bfin/predicates.md (p_register_operand): New predicate.
10192         (dp_register_operand): New predicate.
10193         * config/bfin/bfin-protos.h (WA_05000074): Define.
10194         (ENABLE_WA_05000074): Define.
10195         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
10196         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
10197         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
10198         (define_attr addrtype): Allow load/store register to be P register.
10199         (define_attr storereg): New.
10200         (define_cpu_unit anomaly_05000074): New.
10201         (define_insn_reservation dsp32shiftimm): New.
10202         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
10203         (define_insn_reservation loadp): Cannot use slot2.
10204         (define_insn_reservation loadsp): Cannot use slot2.
10205         (define_insn_reservation storep): Cannot use slot2. Does not
10206         apply when working around 05000074.
10207         (define_insn_reservation storep_anomaly_05000074): New.
10208         (define_insn_reservation storei): Does not apply when working
10209         around 05000074.
10210         (define_insn_reservation storei_anomaly_05000074): New.
10211         (define_attr length): Add dsp32shiftimm case.
10212         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
10213         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
10214         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
10215         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
10216         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
10217
10218 2009-09-07  Martin Jambor  <mjambor@suse.cz>
10219
10220         PR middle-end/41282
10221         * tree-sra.c (create_artificial_child_access): Return NULL if
10222         build_ref_for_offset fails.
10223         (propagate_subacesses_accross_link): Allow build_ref_for_offset
10224         and create_artificial_child_access to fail.
10225
10226 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
10227
10228         PR c++/41214
10229         * unwind-dw2.c (uw_init_context_1): Mark noinline.
10230         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
10231         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
10232
10233 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
10234
10235         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
10236         block, ensure it has an exit edge.  Emit a barrier after a jump.
10237
10238 2009-09-07  Nick Clifton  <nickc@redhat.com>
10239
10240         * gcc.c (this_is_linker_script): New variable.  Like
10241         this_is_library_file but for the %T constructor.
10242         (end_going_arg): If this_is_linker_script is set then locate the
10243         script and insert a --script switch before it
10244         (do_spec_2): Initialise this_is_linker_script.
10245         (do_spec_1): Likewise.  Handle %T construct.
10246         (eval_spec_function): Preserve this_is_linker_script.
10247         * doc/invoke.texi: Document %T construct in spec files.
10248         * config/m32c/m32c.h (LIB_SPEC): Use it.
10249
10250 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
10251
10252         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
10253         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
10254         when volatile flag is set.
10255         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
10256
10257 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
10258
10259         PR bootstrap/41241
10260         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
10261         (combine_stack_adjustments_for_block): Allow insns between stack
10262         adjustments and stores with corresponding pre-(dec|inc)rement or
10263         pre-modify operation.
10264
10265 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
10266
10267         PR bootstrap/41241
10268         * combine-stack-adj.c (struct csa_memlist): Rename to...
10269         (struct csa_reflist): ... this.  Rename mem field to ref.
10270         (free_csa_memlist): Rename to...
10271         (free_csa_reflist): ... this.
10272         (record_one_stack_memref): Rename to...
10273         (record_one_stack_ref): ... this.  Handle also REG_P.
10274         (try_apply_stack_adjustment): Handle also REG_P.
10275         (struct record_stack_memrefs_data): Rename to...
10276         (struct record_stack_refs_data): ... this.  Rename memlist field to
10277         reflist.
10278         (record_stack_memrefs): Rename to...
10279         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
10280         subexpressions instead of failing when a MEM contains SP references.
10281         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
10282         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
10283
10284 2009-09-06  Richard Guenther  <rguenther@suse.de>
10285
10286         PR middle-end/41144
10287         * tree.c (build_array_type): Do not record types marked
10288         with structural equality in the canonical type hashtable.
10289
10290 2009-09-06  Richard Guenther  <rguenther@suse.de>
10291
10292         PR middle-end/41261
10293         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
10294
10295 2009-09-05  Richard Guenther  <rguenther@suse.de>
10296
10297         PR middle-end/41181
10298         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
10299
10300 2009-09-05  Richard Guenther  <rguenther@suse.de>
10301
10302         PR debug/41273
10303         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
10304
10305 2009-09-05  Richard Guenther  <rguenther@suse.de>
10306
10307         PR middle-end/41271
10308         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
10309         before comparing function argument types.
10310
10311 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10312
10313         PR target/41024
10314         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
10315         the assembler.
10316
10317 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
10318
10319         Revert:
10320         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
10321
10322         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
10323         locators before emit_insn is called.
10324
10325 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
10326
10327         PR bootstrap/41241
10328         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
10329         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
10330         (reginfo_init): Don't call allocate_reg_info.
10331
10332 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
10333
10334         PR target/41262
10335         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
10336         NONDEBUG_INSN_P instead of INSN_P.
10337
10338 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10339
10340         PR debug/41225
10341         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
10342
10343 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10344
10345         PR target/41252
10346         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
10347         pattern of the split.
10348
10349 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10350
10351         * toplev.c (process_options): Move setter of flag_var_tracking
10352         before other tests that depend on it.  Move down setter of
10353         flag_rename_registers.  Don't enable var-tracking-assignments
10354         by default if selective scheduling is enabled.  Warn if both
10355         are enabled.
10356
10357 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
10358
10359         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
10360         comment.  Use switch statement to catch overlaps between rtx
10361         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
10362         (IS_DECL_CODE): ... here. Remove.
10363         (check_value_is_not_decl): Remove.
10364         (dv_from_decl, dv_from_value): Check after conversion.
10365
10366 2009-09-04  Richard Guenther  <rguenther@suse.de>
10367
10368         PR middle-end/41257
10369         * (cgraph_finalize_compilation_unit): Move finalizing aliases
10370         after emitting tunks.  Move emitting thunks and ctors from ...
10371         (cgraph_optimize): ... here.  Remove redundant
10372         cgraph_analyze_functions.
10373         * varasm.c (find_decl_and_mark_needed): Remove no longer
10374         necessary check.
10375         (finish_aliases_1): Adjust check for thunk aliases.
10376
10377 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
10378
10379         * config/arm/arm.md (ctzsi2): Added braces
10380         to avoid warning that broke booststrap.
10381
10382 2009-09-04  Martin Jambor  <mjambor@suse.cz>
10383
10384         PR tree-optimization/41112
10385         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
10386         handle variable-bounded arrays.
10387         (expr_with_var_bounded_array_refs_p): New function.
10388         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
10389
10390 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
10391
10392         * config/s390/2097.md: Removed two incorrect bypasses.
10393         (z10_fsimpdf): Fixed latency.
10394         (z10_fhex): New insn_reservation.
10395         (z10_floaddf): Fixed latency.
10396         (z10_floadsf): Fixed latency.
10397         (z10_ftrunctf): Fixed latency.
10398         (z10_ftruncdf): Fixed latency.
10399         * config/s390/s390.c (z10_cost): Fixed values.
10400         (s390_adjust_priority): Added z10 path.
10401         * config/s390/s390.md (type): Added fhex.
10402         (*mov<mode>_64dfp): Updated type attribute.
10403         (*mov<mode>_64): Updated type attribute.
10404         (*mov<mode>_31): Updated type attribute.
10405         (*mov<mode>"): Likewise.
10406         * config/s390/2084.md (x_fsimpdf): Updated condition.
10407
10408 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
10409
10410         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
10411         RTXs in the predicate for operand 1.
10412
10413 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
10414
10415         * config/arm/arm.md (UNSPEC_RBIT): New constant.
10416         (rbitsi2): New insn.
10417         (ctzsi2): New expand.
10418         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
10419
10420 2009-09-03  Martin Jambor  <mjambor@suse.cz>
10421
10422         * tree-sra.c (duplicate_expr_for_different_base): Removed.
10423         (create_artificial_child_access): Use build_ref_for_offset instead
10424         of duplicate_expr_for_different_base.
10425         (propagate_subacesses_accross_link): Likewise.
10426
10427 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
10428
10429         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
10430         of INSN_P.
10431         (mips16e_collect_argument_saves): Skip debug instructions.
10432         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
10433         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
10434         (r10k_insert_cache_barriers): Likewise.
10435         (mips_reorg_process_insns): Likewise.
10436
10437 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
10438
10439         PR bootstrap/41241
10440         * ira.c (update_equiv_reg): Remove check on class likely spill.
10441
10442 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
10443
10444         PR debug/41236
10445         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
10446         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
10447         it or SUBREG.
10448
10449         PR debug/41238
10450         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
10451         the stack slot if it is passed by invisible reference.
10452         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
10453         by invisible reference.
10454
10455 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
10456
10457         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
10458         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
10459         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
10460         0.
10461         * config/bfin/sync.md: New file.
10462         * config/bfin/bfin.md: Include it.
10463         (UNSPEC_ATOMIC): New.
10464         (UNSPEC_ONES): Provide a unique number.
10465
10466         From Jie Zhang <jie.zhang@analog.com>:
10467         * config/bfin/bfin.c (ret_regs): New.
10468         (must_save_fp_p): Don't return true because of frame_pointer_needed.
10469         (must_save_rets_p): New.
10470         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
10471         current_function_is_leaf.
10472         (do_link): Likewise.
10473         (do_unlink): Likewise.
10474         (expand_interrupt_handler_prologue): Use ret_regs array.
10475         (expand_interrupt_handler_epilogue): Use ret_regs array and
10476         pass return register to gen_return_internal.
10477         (bfin_expand_epilogue): Pass return register to
10478         gen_return_internal.
10479         (bfin_expand_call): Explicitly clobber RETS.
10480         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
10481         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
10482         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
10483         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
10484         RETS.
10485         (return_internal): Take a reg rtx rather than the register number.
10486
10487 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
10488
10489         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
10490         when comparing against estimated_loop_iterations_int return.
10491
10492 2009-09-03  Richard Guenther  <rguenther@suse.de>
10493
10494         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
10495         eh_personality_libfunc.
10496
10497 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10498
10499         * tree-parloops.c (separate_decls_in_region): Add space.
10500
10501 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10502
10503         * tree-parloops.c (separate_decls_in_region): Change the condition
10504         checking if there are reductions in the loop.
10505
10506 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
10507
10508         PR tree-optimization/38275
10509         * tree-parloops.c (parallelize_loops): Replace profitability condition
10510         for expected number of iterations.
10511
10512 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
10513
10514         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
10515         (bootstrap-debug): Explain conditions in which it becomes default.
10516         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
10517         make it add to it.
10518
10519 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
10520
10521         * doc/invoke.texi (Optimize Options): Move
10522         -finline-small-functions to the -O2 list.
10523
10524 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
10525
10526         * toplev.c (process_options): Enable var-tracking-assignments
10527         by default if var-tracking is enabled.
10528
10529 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
10530
10531         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
10532         barrier.
10533         * emit-rtl.c (prev_nonnote_insn_bb): New function.
10534         * rtl.h (prev_nonnote_insn_bb): Declare it.
10535
10536 2009-09-03  Diego Novillo  <dnovillo@google.com>
10537
10538         * cgraph.c (cgraph_node_for_decl): New.
10539         * cgraph.h (cgraph_node_for_decl): Declare.
10540         * tree.c (host_integerp): Return 0 if T is NULL.
10541
10542 2009-09-03  Diego Novillo  <dnovillo@google.com>
10543
10544         * tree.h (struct alias_pair): Move from varasm.c.
10545         (alias_pairs): Likewise.
10546         (TYPE_MAXVAL): Define.
10547         (TYPE_MINVAL): Define.
10548         (iterative_hash_host_wide_int): Declare.
10549         (remove_unreachable_alias_pairs): Declare.
10550         * tree-pass.h (pass_ipa_free_lang_data): Declare.
10551         * diagnostic.c (default_diagnostic_starter): Make extern.
10552         (default_diagnostic_finalizer): Make extern.
10553         * diagnostic.h (default_diagnostic_starter): Declare.
10554         (default_diagnostic_finalizer): Declare.
10555         (default_tree_printer): Declare.
10556         * toplev.c (default_tree_printer): Make extern.
10557
10558 2009-09-03  Richard Guenther  <rguenther@suse.de>
10559             Diego Novillo  <dnovillo@google.com>
10560
10561         * cgraph.c (cgraph_add_new_function): Remove gimplification.
10562         * cgraphunit.c (cgraph_expand_function): Do not emit
10563         associated thunks from here.
10564         (cgraph_emit_thunks): New.
10565         (cgraph_optimize): Call it.
10566         Return if any IPA pass finds an error.
10567         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
10568         by thunks.
10569
10570 2009-09-03  Simon Baldwin  <simonb@google.com>
10571             Rafael Espindola  <espindola@google.com>
10572             Richard Guenther  <rguenther@suse.de>
10573             Doug Kwan  <dougkwan@google.com>
10574             Diego Novillo  <dnovillo@google.com>
10575
10576         * tree.c: Include tree-pass.h, langhooks-def.h,
10577         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
10578         (free_lang_data_in_type): New.
10579         (need_assembler_name_p): New.
10580         (free_lang_data_in_block): New.
10581         (free_lang_data_in_decl): New.
10582         (struct free_lang_data_d): New.
10583         (add_tree_to_fld_list): New.
10584         (find_decls_types_r): New.
10585         (get_eh_types_for_runtime): New.
10586         (find_decls_types_in_eh_region): New.
10587         (find_decls_types_in_node): New.
10588         (find_decls_types_in_var): New.
10589         (free_lang_data_in_cgraph): New.
10590         (free_lang_data): New.
10591         (gate_free_lang_data): New.
10592         (pass_ipa_free_lang_data): New.
10593
10594 2009-09-03  Diego Novillo  <dnovillo@google.com>
10595
10596         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
10597         * langhooks.h (struct lang_hooks): Add field free_lang_data.
10598         (lang_hooks): Remove const qualifier.
10599         * ipa.c (cgraph_remove_unreachable_nodes): Call
10600         remove_unreachable_alias_pairs.
10601         * except.c (add_type_for_runtime): Check if TYPE has
10602         already been converted.
10603         (lookup_type_for_runtime): Likewise.
10604         (check_handled): Handle converted types.
10605         * varasm.c (remove_unreachable_alias_pairs): New.
10606         * gimple.c: Include demangle.h.
10607         (gimple_decl_printable_name): New.
10608         (gimple_fold_obj_type_ref): New.
10609         * gimple.h (gimple_decl_printable_name): Declare.
10610         (gimple_fold_obj_type_ref): Declare.
10611         * passes.c (init_optimization_passes): Add pass
10612         pass_ipa_free_lang_data.
10613         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
10614         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
10615
10616 2009-09-03  Diego Novillo  <dnovillo@google.com>
10617
10618         * c-lang.c (lang_hooks): Remove const qualifier.
10619
10620 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
10621
10622         * doc/install.texi (*-*-freebsd*): Update target information.
10623
10624 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
10625
10626         * hard-reg-set.h (call_fixed_regs): Remove.
10627         * reginfo.c (call_fixed_regs): Remove.
10628         (init_reg_sets_1): Remove initialization of call_fixed_regs.
10629         (globalize_reg): Don't use call_fixed_regs.
10630         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
10631         call_fixed_regs.
10632
10633 2009-09-01  Michael Matz  <matz@suse.de>
10634
10635         * expr.h (emit_storent_insn, expand_expr_real_1,
10636         expand_expr_real_2): Declare.
10637         * expr.c (emit_storent_insn, expand_expr_real_1,
10638         expand_expr_real_2): Export.
10639         (store_expr): Setting and evaluating dont_return_target is useless.
10640         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
10641         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
10642         * except.c (expand_resx_expr): Rename to ...
10643         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
10644         * except.h (expand_resx_stmt): Declare.
10645         * stmt.c: Add include gimple.h
10646         (expand_asm_expr): Rename to ...
10647         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
10648         (expand_case): Rewrite to take gimple statement.
10649         * tree.h (expand_asm_stmt): Declare.
10650         (expand_case): Change prototype.
10651         * Makefile.in (stmt.o): Depend on gimple.h.
10652         * builtins.c (expand_builtin_synchronize): Build gimple asm
10653         statement, not an ASM_EXPR.
10654         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
10655         gimple_to_tree, release_stmt_tree): Remove.
10656         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
10657         ggc_free, but hold comparison code and operands separately.
10658         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
10659         (expand_call_stmt, expand_gimple_stmt_1,
10660         expand_gimple_stmt): New helpers.
10661         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
10662         release_stmt_tree.  Call expand_gimple_stmt instead.
10663         (expand_gimple_basic_block): Ditto.
10664
10665         * calls.c (emit_call_1): Don't look at EH regions here, make
10666         fntree parameter useless.
10667         (expand_call): New local rettype for TREE_TYPE(exp), use it
10668         throughout.  Remove local p, use addr instead.
10669         Don't look at EH regions here.
10670
10671 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
10672
10673         * doc/invoke.texi (-fsched-pressure): Document it.
10674         (-fsched-reg-pressure-heuristic): Remove it.
10675
10676         * reload.c (ira.h): Include.
10677         (find_reloads): Add choosing reload on number of small spilled
10678         classes.
10679
10680         * haifa-sched.c (ira.h): Include.
10681         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
10682         saved_reg_pressure, curr_reg_live, saved_reg_live,
10683         region_ref_regs): New variables.
10684         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
10685         initiate_reg_pressure_info, setup_ref_regs,
10686         initiate_bb_reg_pressure_info, save_reg_pressure,
10687         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
10688         functions.
10689         (setup_insn_reg_pressure_info): New function.
10690         (rank_for_schedule): Add pressure checking and insn issue time.
10691         Remove comparison of insn reg weights.
10692         (ready_sort): Set insn reg pressure info.
10693         (update_register_pressure, setup_insn_max_reg_pressure,
10694         update_reg_and_insn_max_reg_pressure,
10695         sched_setup_bb_reg_pressure_info): New functions.
10696         (schedule_insn): Add code for printing and updating reg pressure info.
10697         (find_set_reg_weight, find_insn_reg_weight): Remove.
10698         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
10699         (debug_ready_list): Print reg pressure info.
10700         (schedule_block): Ditto.  Check insn issue time.
10701         (sched_init): Set up sched_pressure_p.  Allocate and set up some
10702         reg pressure related info.
10703         (sched_finish): Free some reg pressure related info.
10704         (fix_tick_ready): Make insn always ready if pressure_p.
10705         (init_h_i_d): Don't call find_insn_reg_weight.
10706         (haifa_finish_h_i_d): Free insn reg pressure info.
10707
10708         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10709         ira_memory_move_cost, ira_class_hard_regs,
10710         ira_class_hard_regs_num, ira_no_alloc_regs,
10711         ira_available_class_regs, ira_reg_class_cover_size,
10712         ira_reg_class_cover, ira_class_translate): Move to ira.h.
10713
10714         * ira-lives.c (single_reg_class): Check mode to find how many
10715         registers are necessary for operand.
10716         (ira_implicitly_set_insn_hard_regs): New.
10717
10718         * common.opt (fsched-pressure): New options.
10719         (fsched-reg-pressure-heuristic): Remove.
10720
10721         * ira.c (setup_eliminable_regset): Rename to
10722         ira_setup_eliminable_regset.  Make it external.
10723         (expand_reg_info): Pass cover class to setup_reg_classes.
10724         (ira): Call resize_reg_info instead of allocate_reg_info.
10725
10726         * sched-deps.c: Include ira.h.
10727         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
10728         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
10729         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
10730         mark_insn_hard_regno_birth, mark_insn_reg_birth,
10731         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
10732         mark_insn_reg_store, mark_insn_reg_clobber,
10733         setup_insn_reg_pressure_info): New.
10734         (sched_analyze_1): Update implicit_reg_pending_uses.
10735         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
10736         Use them to create dependencies.  Set insn reg uses and pressure
10737         info.  Process reg_pending_uses in one place.
10738         (free_deps): Free implicit sets.
10739         (remove_from_deps): Remove implicit sets if necessary.  Check
10740         implicit sets when clearing reg_last_in_use.
10741         (init_deps_global): Clear implicit_reg_pending_clobbers and
10742         implicit_reg_pending_uses.
10743
10744         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
10745         ira_memory_move_cost, ira_class_hard_regs,
10746         ira_class_hard_regs_num, ira_no_alloc_regs,
10747         ira_available_class_regs, ira_reg_class_cover_size,
10748         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
10749         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
10750         ira_implicitly_set_insn_hard_regs): New prototypes.
10751
10752         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
10753         cost_elements_num): New variables.
10754         (allocno_costs, total_costs): Rename to costs and
10755         total_allocno_costs.
10756         (COSTS_OF_ALLOCNO): Rename to COSTS.
10757         (allocno_pref): Rename to pref.
10758         (allocno_pref_buffer): Rename to pref_buffer.
10759         (common_classes): Rename to regno_cover_class.
10760         (COST_INDEX): New.
10761         (record_reg_classes): Set allocno attributes only if allocno_p.
10762         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
10763         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
10764         and COSTS_OF_ALLOCNO.
10765         (print_costs): Rename to print_allocno_costs.
10766         (print_pseudo_costs): New.
10767         (process_bb_node_for_costs): Split into 2 functions with new
10768         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
10769         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
10770         new parameter dump_file.  Use cost_elements_num instead of
10771         ira_allocnos_num.  Make one iteration if preferred classes were
10772         already calculated for scheduler.  Make 2 versions of code
10773         depending on allocno_p.
10774         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
10775         regno_cover_class and COSTS instead of common_classes and
10776         COSTS_OF_ALLOCNO.
10777         (init_costs, finish_costs): New.
10778         (ira_costs): Set up allocno_p and cost_elements_num.  Call
10779         init_costs and finish_costs.
10780         (ira_set_pseudo_classes): New.
10781
10782         * rtl.h (allocate_reg_info): Remove.
10783         (resize_reg_info): Change return type.
10784         (reg_cover_class): New.
10785         (setup_reg_classes): Add new parameter.
10786
10787         * sched-int.h (struct deps_reg): New member implicit_sets.
10788         (sched_pressure_p, sched_regno_cover_class): New external definitions.
10789         (INCREASE_BITS): New macro.
10790         (struct reg_pressure_data, struct reg_use_data): New.
10791         (struct _haifa_insn_data): Remove reg_weight.  Add members
10792         reg_pressure, reg_use_list, reg_set_list, and
10793         reg_pressure_excess_cost_change.
10794         (struct deps): New member implicit_sets.
10795         (pressure_p): New variable.
10796         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
10797         (struct reg_pressure_data, struct reg_use_data): New.
10798         (INSN_REG_WEIGHT): Remove.
10799         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
10800         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
10801         (sched_init_region_reg_pressure_info,
10802         sched_setup_bb_reg_pressure_info): New prototypes.
10803
10804         * reginfo.c (struct reg_pref): New member coverclass.
10805         (reg_cover_class): New function.
10806         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
10807         (reg_info_size): New variable.
10808         (allocate_reg_info): Make static.  Setup reg_info_size.
10809         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
10810         (setup_reg_classes): Add a new parameter.  Setup cover class too.
10811
10812         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
10813         the dependencies.
10814
10815         * sched-rgn.c (deps_join): Set up implicit_sets.
10816         (schedule_region): Set up region and basic blocks pressure
10817         relative info.
10818
10819         * passes.c (init_optimization_passes): Move
10820         pass_subregs_of_mode_init before pass_sched.
10821
10822 2009-09-02  Martin Jambor  <mjambor@suse.cz>
10823
10824         * tree-sra.c (struct access): New field grp_hint.
10825         (dump_access): Dump grp_hint.
10826         (sort_and_splice_var_accesses): Set grp_hint if a group is read
10827         multiple times.
10828         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
10829         those which have been specifically read and somehow written to.
10830         (propagate_subacesses_accross_link): Set grp_hint of right child and
10831         also possibly of the left child.
10832
10833 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
10834
10835         * tree-object-size.c (addr_object_size): Always use object_size_type
10836         0 or 2 when determining the pointer pointed object size.
10837
10838 2009-09-02  Richard Guenther  <rguenther@suse.de>
10839
10840         Revert
10841         2009-08-31  Richard Guenther  <rguenther@suse.de>
10842
10843         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10844         to query if the memory regions for memmove overlap.
10845         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10846         asserts on pointers, instead deal with odd trees.
10847         (ptr_derefs_may_alias_p): Likewise.
10848         (refs_may_alias_p_1): Constructor bases also never alias.
10849
10850 2009-08-01  Christian Bruel  <christian.bruel@st.com>
10851
10852         Revert:
10853         2009-07-31  Christian Bruel  <christian.bruel@st.com>
10854         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
10855
10856 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
10857
10858         * doc/invoke.texi (-fvar-tracking-assignments): New.
10859         (-fvar-tracking-assignments-toggle): New.
10860         (-fdump-final-insns=file): Mark filename as optional.
10861         (--param min-nondebug-insn-uid): New.
10862         (-gdwarf-@{version}): Mention version 4.
10863         * opts.c (common_handle_option): Accept it.
10864         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
10865         * regrename.c (regrename_optimize): Drop last.  Don't count debug
10866         insns as uses.  Don't reject change because of debug insn.
10867         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
10868         from the chain starter, and check for inexact matches in DEBUG_INSNS.
10869         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
10870         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
10871         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
10872         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
10873         * doc/gimple.texi (is_gimple_debug): New.
10874         (gimple_debug_bind_p): New.
10875         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
10876         * doc/install.texi (bootstrap-debug): More details.
10877         (bootstrap-debug-big, bootstrap-debug-lean): Document.
10878         (bootstrap-debug-lib): More details.
10879         (bootstrap-debug-ckovw): Update.
10880         (bootstrap-time): New.
10881         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
10882         (insert_phi_nodes_for): Insert debug stmts.
10883         (rewrite_stmt): Take iterator.  Insert debug stmts.
10884         (rewrite_enter_block): Adjust.
10885         (maybe_replace_use_in_debug_stmt): New.
10886         (rewrite_update_stmt): Use it.
10887         (mark_use_interesting): Return early for debug stmts.
10888         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
10889         stmts before replacing stmt.
10890         (move_computations_stmt): Likewise.
10891         * ira-conflicts.c (add_copies): Skip debug insns.
10892         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
10893         (regstat_bb_compute_ri): Skip debug insns.
10894         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
10895         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
10896         check_loop_closed_ssa_stmt): Skip debug stmts.
10897         * tree-tailcall.c (find_tail_calls): Likewise.
10898         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
10899         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
10900         (build_var_debug_value_stat): Declare.
10901         (build_var_debug_value): Define.
10902         (target_for_debug_bind): Declare.
10903         * reload.c (find_equiv_reg): Skip debug insns.
10904         * rtlanal.c (reg_used_between_p): Skip debug insns.
10905         (side_effects_p): Likewise.
10906         (canonicalize_condition): Likewise.
10907         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
10908         insns never depend on debug insns.
10909         (create_ddg_dep_no_link): Likewise.
10910         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
10911         Don't add inter-loop dependencies for debug insns.
10912         (build_intra_loop_deps): Likewise.
10913         (create_ddg): Count debug insns.
10914         * ddg.h (struct ddg::num_debug): New.
10915         (num_backargs): Pair up with previous int field.
10916         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
10917         -fcompare-debug-second.
10918         * final.c (get_attr_length_1): Skip debug insns.
10919         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
10920         * gcc.c (invoke_as): Call compare-debug-dump-opt.
10921         (driver_self_specs): Map -fdump-final-insns to
10922         -fdump-final-insns=..
10923         (get_local_tick): New.
10924         (compare_debug_dump_opt_spec_function): Test for . argument and
10925         compute output name.  Compute temp output spec without flag name.
10926         Compute -frandom-seed.
10927         (OPT): Undef after use.
10928         * cfgloopanal.c (num_loop_insns): Skip debug insns.
10929         (average_num_loop_insns): Likewise.
10930         * params.h (MIN_NONDEBUG_INSN_UID): New.
10931         * gimple.def (GIMPLE_DEBUG): New.
10932         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
10933         * auto-inc-dec.c (merge_in_block): Skip debug insns.
10934         (merge_in_block): Fix whitespace.
10935         * toplev.c (flag_var_tracking): Update comment.
10936         (flag_var_tracking_assignments): New.
10937         (flag_var_tracking_assignments_toggle): New.
10938         (process_options): Don't open final insns dump file if we're not
10939         going to write to it.  Compute defaults for var_tracking.
10940         * df-scan.c (df_insn_rescan_debug_internal): New.
10941         (df_uses_record): Handle debug insns.
10942         * haifa-sched.c (ready): Initialize n_debug.
10943         (contributes_to_priority): Skip debug insns.
10944         (dep_list_size): New.
10945         (priority): Use it.
10946         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
10947         they're ready.  Disregard previous debug insns to make decisions.
10948         (queue_insn): Never queue debug insns.
10949         (ready_add, ready_remove_first, ready_remove): Count debug insns.
10950         (schedule_insn): Don't reject debug insns because of issue rate.
10951         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
10952         (queue_to_ready): Skip and discount debug insns.
10953         (choose_ready): Let debug insns through.
10954         (schedule_block): Check boundary debug insns.  Discount debug
10955         insns, schedule them early.  Adjust whitespace.
10956         (set_priorities): Check for boundary debug insns.
10957         (add_jump_dependencies): Use dep_list_size.
10958         (prev_non_location_insn): New.
10959         (check_cfg): Use it.
10960         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
10961         stmts.
10962         (remove_unused_ivs): Reset debug stmts.
10963         * modulo-sched.c (const_iteration_count): Skip debug insns.
10964         (res_MII): Discount debug insns.
10965         (loop_single_full_bb_p): Skip debug insns.
10966         (sms_schedule): Likewise.
10967         (sms_schedule_by_order): Likewise.
10968         (ps_has_conflicts): Likewise.
10969         * caller-save.c (refmarker_fn): New.
10970         (save_call_clobbered_regs): Replace regs with saved mem in
10971         debug insns.
10972         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
10973         Call refmarker_fn mark for hardregnos.
10974         (mark_reg_as_referenced): New.
10975         (replace_reg_with_saved_mem): New.
10976         * ipa-pure-const.c (check_stmt): Skip debug stmts.
10977         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
10978         searching back.
10979         (cse_extended_basic_block): Skip debug insns.
10980         (count_reg_usage): Likewise.
10981         (is_dead_reg): New, split out of...
10982         (set_live_p): ... here.
10983         (insn_live_p): Use it for debug insns.
10984         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
10985         (execute_optimize_stdarg): Likewise.
10986         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
10987         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
10988         changes in debug stmts as changes.
10989         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
10990         (moveup_expr): Don't move across debug insns.  Don't move
10991         debug insn if it would create a bookkeeping block.
10992         (moveup_expr_cached): Don't use cache for debug insns that
10993         are heads of blocks.
10994         (compute_av_set_inside_bb): Skip debug insns.
10995         (sel_rank_for_schedule): Schedule debug insns first.  Remove
10996         dead code.
10997         (block_valid_for_bookkeeping_p); Support lax searches.
10998         (create_block_for_bookkeeping): Adjust block numbers when
10999         encountering debug-only blocks.
11000         (find_place_for_bookkeeping): Deal with debug-only blocks.
11001         (generate_bookkeeping_insn): Accept no place to insert.
11002         (remove_temp_moveop_nops): New argument full_tidying.
11003         (prepare_place_to_insert): Deal with debug insns.
11004         (advance_state_on_fence): Debug insns don't start cycles.
11005         (update_boundaries): Take fence as argument.  Deal with
11006         debug insns.
11007         (schedule_expr_on_boundary): No full_tidying on debug insns.
11008         (fill_insns): Deal with debug insns.
11009         (track_scheduled_insns_and_blocks): Don't count debug insns.
11010         (need_nop_to_preserve_insn_bb): New, split out of...
11011         (remove_insn_from_stream): ... this.
11012         (fur_orig_expr_not_found): Skip debug insns.
11013         * rtl.def (VALUE): Move up.
11014         (DEBUG_INSN): New.
11015         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
11016         (nearest_common_dominator_of_uses): Take debug_stmts argument.
11017         Set it if debug stmts are found.
11018         (statement_sink_location): Skip debug stmts.  Propagate
11019         moving defs into debug stmts.
11020         * ifcvt.c (first_active_insn): Skip debug insns.
11021         (last_active_insns): Likewise.
11022         (cond_exec_process_insns): Likewise.
11023         (noce_process_if_block): Likewise.
11024         (check_cond_move_block): Likewise.
11025         (cond_move_convert_if_block): Likewise.
11026         (block_jumps_and_fallthru_p): Likewise.
11027         (dead_or_predicable): Likewise.
11028         * dwarf2out.c (debug_str_hash_forced): New.
11029         (find_AT_string): Add comment.
11030         (gen_label_for_indirect_string): New.
11031         (get_debug_string_label): New.
11032         (AT_string_form): Use it.
11033         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
11034         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
11035         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
11036         several operations that cannot be represented with DWARF opcodes.
11037         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
11038         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
11039         (dwarf2out_var_location): Take during-call mark into account.
11040         (output_indirect_string): Update comment.  Output if there are
11041         label and references.
11042         (prune_indirect_string): New.
11043         (prune_unused_types): Call it if debug_str_hash_forced.
11044         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
11045         (dw_long_long_const): Remove.
11046         (struct dw_val_struct): Change val_long_long type to rtx.
11047         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
11048         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
11049         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
11050         component instead of HOST_BITS_PER_LONG.
11051         (output_loc_operands): Likewise.  For const8* assert
11052         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
11053         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
11054         rather than HOST_BITS_PER_LONG is >= 64.
11055         (add_AT_long_long): Remove val_hi and val_lo arguments, add
11056         val_const_double.
11057         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
11058         HOST_BITS_PER_LONG for dw_val_class_long_long.
11059         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
11060         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
11061         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
11062         DW_OP_stack_value.
11063         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
11064         Handle DW_OP_implicit_value.
11065         (extract_int): Move prototype earlier.
11066         (mem_loc_descriptor): For SUBREG punt if inner
11067         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
11068         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
11069         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
11070         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
11071         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
11072         instead of Pmode size.
11073         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
11074         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
11075         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
11076         (concat_loc_descriptor, concatn_loc_descriptor,
11077         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
11078         (add_location_or_const_value_attribute): Likewise.  For single
11079         location loc_lists attempt to use add_const_value_attribute
11080         for constant decls.  Add DW_AT_const_value even if
11081         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
11082         in its expression.
11083         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
11084         (control_flow_insn_p): Likewise.
11085         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
11086         (separate_decls_in_region_debug_bind): New.
11087         (separate_decls_in_region): Process debug bind stmts afterwards.
11088         * recog.c (verify_changes): Handle debug insns.
11089         (extract_insn): Likewise.
11090         (peephole2_optimize): Skip debug insns.
11091         * dse.c (scan_insn): Skip debug insns.
11092         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
11093         Pass it on.
11094         (setup_id_for_insn): Handle debug insns.
11095         (maybe_tidy_empty_bb): Adjust whitespace.
11096         (tidy_control_flow): Skip debug insns.
11097         (sel_remove_insn): Adjust for debug insns.
11098         (sel_estimate_number_of_insns): Skip debug insns.
11099         (create_insn_rtx_from_pattern): Handle debug insns.
11100         (create_copy_of_insn_rtx): Likewise.
11101         * sel-sched-.h (sel_bb_end): Declare.
11102         (sel_bb_empty_or_nop_p): New.
11103         (get_all_loop_exits): Use it.
11104         (_eligible_successor_edge_p): Likewise.
11105         (return_nop_to_pool): Adjust.
11106         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
11107         * ira-lives.c (process_bb_node_lives): Skip debug insns.
11108         * gimple-pretty-print.c (dump_gimple_debug): New.
11109         (dump_gimple_stmt): Use it.
11110         (dump_bb_header): Skip gimple debug stmts.
11111         * regmove.c (optimize_reg_copy_1): Discount debug insns.
11112         (fixup_match_2): Likewise.
11113         (regmove_backward_pass): Likewise.  Simplify combined
11114         replacement.  Handle debug insns.
11115         * function.c (instantiate_virtual_regs): Handle debug insns.
11116         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
11117         * print-rtl.h: Include cselib.h.
11118         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
11119         * df.h (df_inns_rescan_debug_internal): Declare.
11120         * gcse.c (alloc_hash_table): Estimate n_insns.
11121         (cprop_insn): Don't regard debug insns as changes.
11122         (bypass_conditional_jumps): Skip debug insns.
11123         (one_pre_gcse_pass): Adjust.
11124         (one_code_hoisting_pass): Likewise.
11125         (compute_ld_motion_mems): Skip debug insns.
11126         (one_cprop_pass): Adjust.
11127         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
11128         (if_convertible_stmt_p): Handle debug stmts.
11129         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
11130         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
11131         * ira-build.c (create_bb_allocnos): Skip debug insns.
11132         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
11133         (has_single_use): Likewise.
11134         (single_imm_use): Likewise.
11135         (num_imm_uses): Likewise.
11136         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
11137         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
11138         (create_outofssa_var_map): Likewise.
11139         * lower-subreg.c (adjust_decomposed_uses): New.
11140         (resolve_debug): New.
11141         (decompose_multiword_subregs): Use it.
11142         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
11143         * emit-rtl.c: Include params.h.
11144         (cur_debug_insn_uid): Define.
11145         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
11146         (copy_rtx_if_shared_1): Handle debug insns.
11147         (reset_used_flags): Likewise.
11148         (set_used_flags): LIkewise.
11149         (get_max_insn_count): New.
11150         (next_nondebug_insn): New.
11151         (prev_nondebug_insn): New.
11152         (make_debug_insn_raw): New.
11153         (emit_insn_before_noloc): Handle debug insns.
11154         (emit_jump_insn_before_noloc): Likewise.
11155         (emit_call_insn_before_noloc): Likewise.
11156         (emit_debug_insn_before_noloc): New.
11157         (emit_insn_after_noloc): Handle debug insns.
11158         (emit_jump_insn_after_noloc): Likewise.
11159         (emit_call_insn_after_noloc): Likewise.
11160         (emit_debug_insn_after_noloc): Likewise.
11161         (emit_insn_after): Take loc from earlier non-debug insn.
11162         (emit_jump_insn_after): Likewise.
11163         (emit_call_insn_after): Likewise.
11164         (emit_debug_insn_after_setloc): New.
11165         (emit_debug_insn_after): New.
11166         (emit_insn_before): Take loc from later non-debug insn.
11167         (emit_jump_insn_before): Likewise.
11168         (emit_call_insn_before): Likewise.
11169         (emit_debug_insn_before_setloc): New.
11170         (emit_debug_insn_before): New.
11171         (emit_insn): Handle debug insns.
11172         (emit_debug_insn): New.
11173         (emit_jump_insn): Handle debug insns.
11174         (emit_call_insn): Likewise.
11175         (emit): Likewise.
11176         (init_emit): Take min-nondebug-insn-uid into account.
11177         Initialize cur_debug_insn_uid.
11178         (emit_copy_of_insn_after): Handle debug insns.
11179         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
11180         location of single rhs in place.
11181         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
11182         (floor_sdiv_adjust): New.
11183         (cell_sdiv_adjust): New.
11184         (cell_udiv_adjust): New.
11185         (round_sdiv_adjust): New.
11186         (round_udiv_adjust): New.
11187         (wrap_constant): Moved from cselib.
11188         (unwrap_constant): New.
11189         (expand_debug_expr): New.
11190         (expand_debug_locations): New.
11191         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
11192         debug bind stmts.
11193         (gimple_expand_cfg): Expand debug locations.
11194         * cselib.c: Include tree-pass.h.
11195         (struct expand_value_data): New.
11196         (cselib_record_sets_hook): New.
11197         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
11198         (cselib_clear_table): Move, and implemnet in terms of...
11199         (cselib_reset_table_with_next_value): ... this.
11200         (cselib_get_next_unknown_value): New.
11201         (discard_useless_locs): Don't discard preserved values.
11202         (cselib_preserve_value): New.
11203         (cselib_preserved_value_p): New.
11204         (cselib_preserve_definitely): New.
11205         (cselib_clear_preserve): New.
11206         (cselib_preserve_only_values): New.
11207         (new_cselib_val): Take rtx argument.  Dump it in details.
11208         (cselib_lookup_mem): Adjust.
11209         (expand_loc): Take regs_active in struct.  Adjust.  Silence
11210         dumps unless details are requested.
11211         (cselib_expand_value_rtx_cb): New.
11212         (cselib_expand_value_rtx): Rename and reimplment in terms of...
11213         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
11214         without details.  Copy more subregs.  Try to resolve values
11215         using a callback.  Wrap constants.
11216         (cselib_subst_to_values): Adjust.
11217         (cselib_log_lookup): New.
11218         (cselib_lookup): Call it.
11219         (cselib_invalidate_regno): Don't count preserved values as useless.
11220         (cselib_invalidate_mem): Likewise.
11221         (cselib_record_set): Likewise.
11222         (struct set): Renamed to cselib_set, moved to cselib.h.
11223         (cselib_record_sets): Adjust.  Call hook.
11224         (cselib_process_insn): Reset table when it would be cleared.
11225         (dump_cselib_val): New.
11226         (dump_cselib_table): New.
11227         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
11228         (remove_forwarder_block): Support moving debug stmts.
11229         * cselib.h (cselib_record_sets_hook): Declare.
11230         (cselib_expand_callback): New type.
11231         (cselib_expand_value_rtx_cb): Declare.
11232         (cselib_reset_table_with_next_value): Declare.
11233         (cselib_get_next_unknown_value): Declare.
11234         (cselib_preserve_value): Declare.
11235         (cselib_preserved_value_p): Declare.
11236         (cselib_preserve_only_values): Declare.
11237         (dump_cselib_table): Declare.
11238         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
11239         (try_crossjump_to_edge): Likewise.
11240         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
11241         dominated blocks when debug stmts are present.
11242         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
11243         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
11244         (set_var_live_on_entry): Likewise.
11245         * loop-invariant.c (find_invariants_bb): Skip debug insns.
11246         * cfglayout.c (curr_location, last_location): Make static.
11247         (set_curr_insn_source_location): Don't avoid bouncing.
11248         (get_curr_insn_source_location): New.
11249         (get_curr_insn_block): New.
11250         (duplicate_insn_chain): Handle debug insns.
11251         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
11252         into debug stmts.
11253         * common.opt (fcompare-debug): Move to sort order.
11254         (fdump-unnumbered-links): Likewise.
11255         (fvar-tracking-assignments): New.
11256         (fvar-tracking-assignments-toggle): New.
11257         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
11258         because of debug stmts.
11259         (mark_stmt_if_obviously_necessary): Mark debug stmts.
11260         (eliminate_unnecessary_stmts): Walk dominated blocks before
11261         dominators.
11262         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
11263         * ira.c (memref_used_between_p): Skip debug insns.
11264         (update_equiv_regs): Likewise.
11265         * sched-deps.c (sd_lists_size): Accept empty list.
11266         (sd_init_insn): Mark debug insns.
11267         (sd_finish_insn): Unmark them.
11268         (sd_add_dep): Reject non-debug deps on debug insns.
11269         (fixup_sched_groups): Give debug insns group treatment.
11270         Skip debug insns.
11271         (sched_analyze_reg): Don't mark debug insns for sched before call.
11272         (sched_analyze_2): Handle debug insns.
11273         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
11274         insns.
11275         (deps_analyze_insn): Handle debug insns.
11276         (deps_start_bb): Skip debug insns.
11277         (init_deps): Initialize last_debug_insn.
11278         * tree-ssa.c (target_for_debug_bind): New.
11279         (find_released_ssa_name): New.
11280         (propagate_var_def_into_debug_stmts): New.
11281         (propagate_defs_into_debug_stmts): New.
11282         (verify_ssa): Skip debug bind stmts without values.
11283         (warn_uninialized_vars): Skip debug stmts.
11284         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
11285         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
11286         (rtx_equal_p): Likewise.
11287         * ira-costs.c (scan_one_insn): Skip debug insns.
11288         (process_bb_node_for_hard_reg_moves): Likewise.
11289         * rtl.h (DEBUG_INSN_P): New.
11290         (NONDEBUG_INSN_P): New.
11291         (MAY_HAVE_DEBUG_INSNS): New.
11292         (INSN_P): Accept debug insns.
11293         (RTX_FRAME_RELATED_P): Likewise.
11294         (INSN_DELETED_P): Likewise
11295         (PAT_VAR_LOCATION_DECL): New.
11296         (PAT_VAR_LOCATION_LOC): New.
11297         (PAT_VAR_OCATION_STATUS): New.
11298         (NOTE_VAR_LOCATION_DECL): Reimplement.
11299         (NOTE_VAR_LOCATION_LOC): Likewise.
11300         (NOTE_VAR_LOCATION_STATUS): Likewise.
11301         (INSN_VAR_LOCATION): New.
11302         (INSN_VAR_LOCATION_DECL): New.
11303         (INSN_VAR_LOCATION_LOC): New.
11304         (INSN_VAR_LOCATION_STATUS): New.
11305         (gen_rtx_UNKNOWN_VAR_LOC): New.
11306         (VAR_LOC_UNKNOWN_P): New.
11307         (NOTE_DURING_CALL_P): New.
11308         (SCHED_GROUP_P): Accept debug insns.
11309         (emit_debug_insn_before): Declare.
11310         (emit_debug_insn_before_noloc): Declare.
11311         (emit_debug_insn_beore_setloc): Declare.
11312         (emit_debug_insn_after): Declare.
11313         (emit_debug_insn_after_noloc): Declare.
11314         (emit_debug_insn_after_setloc): Declare.
11315         (emit_debug_insn): Declare.
11316         (make_debug_insn_raw): Declare.
11317         (prev_nondebug_insn): Declare.
11318         (next_nondebug_insn): Declare.
11319         (delegitimize_mem_from_attrs): Declare.
11320         (get_max_insn_count): Declare.
11321         (wrap_constant): Declare.
11322         (unwrap_constant): Declare.
11323         (get_curr_insn_source_location): Declare.
11324         (get_curr_insn_block): Declare.
11325         * tree-inline.c (insert_debug_decl_map): New.
11326         (processing_debug_stmt): New.
11327         (remap_decl): Don't create new mappings in debug stmts.
11328         (remap_gimple_op_r): Don't add references in debug stmts.
11329         (copy_tree_body_r): Likewise.
11330         (remap_gimple_stmt): Handle debug bind stmts.
11331         (copy_bb): Skip debug stmts.
11332         (copy_edges_for_bb): Likewise.
11333         (copy_debug_stmt): New.
11334         (copy_debug_stmts): New.
11335         (copy_body): Copy debug stmts at the end.
11336         (insert_init_debug_bind): New.
11337         (insert_init_stmt): Take id.  Skip and emit debug stmts.
11338         (setup_one_parameter): Remap variable earlier, register debug mapping.
11339         (estimate_num_insns): Skip debug stmts.
11340         (expand_call_inline): Preserve debug_map.
11341         (optimize_inline_calls): Check for no debug_stmts left-overs.
11342         (unsave_expr_now): Preserve debug_map.
11343         (copy_gimple_seq_and_replace_locals): Likewise.
11344         (tree_function_versioning): Check for no debug_stmts left-overs.
11345         Init and destroy debug_map as needed.  Split edges unconditionally.
11346         (build_duplicate_type): Init and destroy debug_map as needed.
11347         * tree-inline.h: Include gimple.h instead of pointer-set.h.
11348         (struct copy_body_data): Add debug_stmts and debug_map.
11349         * sched-int.h (struct ready_list): Add n_debug.
11350         (struct deps): Add last_debug_insn.
11351         (DEBUG_INSN_SCHED_P): New.
11352         (BOUNDARY_DEBUG_INSN_P): New.
11353         (SCHEDULE_DEBUG_INSN_P): New.
11354         (sd_iterator_cond): Accept empty list.
11355         * combine.c (create_log_links): Skip debug insns.
11356         (combine_instructions): Likewise.
11357         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
11358         return value is always unshared.
11359         (struct rtx_subst_pair): New.
11360         (auto_adjust_pair): New.
11361         (propagate_for_debug_subst): New.
11362         (propagate_for_debug): New.
11363         (try_combine): Skip debug insns.  Propagate removed defs into
11364         debug insns.
11365         (next_nonnote_nondebug_insn): New.
11366         (distribute_notes): Use it.  Skip debug insns.
11367         (distribute_links): Skip debug insns.
11368         * tree-outof-ssa.c (set_location_for_edge): Likewise.
11369         * resource.c (mark_target_live_regs): Likewise.
11370         * var-tracking.c: Include cselib.h and target.h.
11371         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
11372         MO_VAL_SET.
11373         (micro_operation_type_name): New.
11374         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
11375         (struct micro_operation_def): Update comments.
11376         (decl_or_value): New type.  Use instead of decls.
11377         (struct emit_note_data_def): Add vars.
11378         (struct attrs_def): Use decl_or_value.
11379         (struct variable_tracking_info_def): Add permp, flooded.
11380         (struct location_chain_def): Update comment.
11381         (struct variable_part_def): Use decl_or_value.
11382         (struct variable_def): Make var_part a variable length array.
11383         (valvar_pool): New.
11384         (scratch_regs): New.
11385         (cselib_hook_called): New.
11386         (dv_is_decl_p): New.
11387         (dv_is_value_p): New.
11388         (dv_as_decl): New.
11389         (dv_as_value): New.
11390         (dv_as_opaque): New.
11391         (dv_onepart_p): New.
11392         (dv_pool): New.
11393         (IS_DECL_CODE): New.
11394         (check_value_is_not_decl): New.
11395         (dv_from_decl): New.
11396         (dv_from_value): New.
11397         (dv_htab_hash): New.
11398         (variable_htab_hash): Use it.
11399         (variable_htab_eq): Support values.
11400         (variable_htab_free): Free from the right pool.
11401         (attrs_list_member, attrs_list_insert): Use decl_or_value.
11402         (attrs_list_union): Adjust.
11403         (attrs_list_mpdv_union): New.
11404         (tie_break_pointers): New.
11405         (canon_value_cmp): New.
11406         (unshare_variable): Return possibly-modified slot.
11407         (vars_copy_1): Adjust.
11408         (var_reg_decl_set): Adjust.  Split out of...
11409         (var_reg_set): ... this.
11410         (get_init_value): Adjust.
11411         (var_reg_delete_and_set): Adjust.
11412         (var_reg_delete): Adjust.
11413         (var_regno_delete): Adjust.
11414         (var_mem_decl_set): Split out of...
11415         (var_mem_set): ... this.
11416         (var_mem_delete_and_set): Adjust.
11417         (var_mem_delete): Adjust.
11418         (val_store): New.
11419         (val_reset): New.
11420         (val_resolve): New.
11421         (variable_union): Adjust.  Speed up merge of 1-part vars.
11422         (variable_canonicalize): Use unshared slot.
11423         (VALUED_RECURSED_INTO): New.
11424         (find_loc_in_1pdv): New.
11425         (struct dfset_merge): New.
11426         (insert_into_intersection): New.
11427         (intersect_loc_chains): New.
11428         (loc_cmp): New.
11429         (canonicalize_loc_order_check): New.
11430         (canonicalize_values_mark): New.
11431         (canonicalize_values_star): New.
11432         (variable_merge_over_cur): New.
11433         (variable_merge_over_src): New.
11434         (dataflow_set_merge): New.
11435         (dataflow_set_equiv_regs): New.
11436         (remove_duplicate_values): New.
11437         (struct dfset_post_merge): New.
11438         (variable_post_merge_new_vals): New.
11439         (variable_post_merge_perm_vals): New.
11440         (dataflow_post_merge_adjust): New.
11441         (find_mem_expr_in_1pdv): New.
11442         (dataflow_set_preserve_mem_locs): New.
11443         (dataflow_set_remove_mem_locs): New.
11444         (dataflow_set_clear_at_call): New.
11445         (onepart_variable_different_p): New.
11446         (variable_different_p): Use it.
11447         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
11448         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
11449         if not needed.
11450         (track_loc_p): Pass it true.
11451         (struct count_use_info): New.
11452         (find_use_val): New.
11453         (replace_expr_with_values): New.
11454         (log_op_type): New.
11455         (use_type): New, partially split out of...
11456         (count_uses): ... this.  Count new micro-ops.
11457         (count_uses_1): Adjust.
11458         (count_stores): Adjust.
11459         (count_with_sets): New.
11460         (VAL_NEEDS_RESOLUTION): New.
11461         (VAL_HOLDS_TRACK_EXPR): New.
11462         (VAL_EXPR_IS_COPIED): New.
11463         (VAL_EXPR_IS_CLOBBERED): New.
11464         (add_uses): Adjust.  Generate new micro-ops.
11465         (add_uses_1): Adjust.
11466         (add_stores): Generate new micro-ops.
11467         (add_with_sets): New.
11468         (find_src_status): Adjust.
11469         (find_src_set_src): Adjust.
11470         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
11471         Handle new micro-ops.  Canonicalize value equivalances.
11472         (vt_find_locations): Compute total size of hash tables for
11473         dumping.  Perform merge for var-tracking-assignments.  Don't
11474         disregard single-block loops.
11475         (dump_attrs_list): Handle decl_or_value.
11476         (dump_variable): Take variable.  Deal with decl_or_value.
11477         (dump_variable_slot): New.
11478         (dump_vars): Use it.
11479         (dump_dataflow_sets): Adjust.
11480         (set_slot_part): New, extended to support one-part variables
11481         after splitting out of...
11482         (set_variable_part): ... this.
11483         (clobber_slot_part): New, split out of...
11484         (clobber_variable_part): ... this.
11485         (delete_slot_part): New, split out of...
11486         (delete_variable_part): .... this.
11487         (check_wrap_constant): New.
11488         (vt_expand_loc_callback): New.
11489         (vt_expand_loc): New.
11490         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
11491         EMIT_NOTE_AFTER_CALL_INSN.
11492         (emit_notes_for_differences_1): Adjust.  Handle values.
11493         (emit_notes_for_differences_2): Likewise.
11494         (emit_notes_for_differences): Adjust.
11495         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
11496         Adjust.  Handle new micro-ops.
11497         (vt_add_function_parameters): Adjust.  Create and bind values.
11498         (vt_initialize): Adjust.  Initialize scratch_regs and
11499         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
11500         operations.  Move some code to count_with_sets and add_with_sets.
11501         (delete_debug_insns): New.
11502         (vt_debug_insns_local): New.
11503         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
11504         cselib.
11505         (var_tracking_main): If var-tracking-assignments is enabled
11506         but var-tracking isn't, delete debug insns and leave.  Likewise
11507         if we exceed limits or fail the stack adjustments tests, and
11508         after all var-tracking processing.
11509         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
11510         (dataflow_set): Add traversed_vars.
11511         (value_chain, const_value_chain): New typedefs.
11512         (value_chain_pool, value_chains): New variables.
11513         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
11514         add_value_chains, add_cselib_value_chains, remove_value_chain,
11515         remove_value_chains, remove_cselib_value_chains): New functions.
11516         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
11517         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
11518         static inlines.
11519         (shared_hash_find_slot_unshare, shared_hash_find_slot,
11520         shared_hash_find_slot_noinsert, shared_hash_find): Update.
11521         (dst_can_be_shared): New variable.
11522         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
11523         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
11524         different from set->vars, look up slot again instead of using the
11525         passed in slot.
11526         (dataflow_set_init): Initialize traversed_vars.
11527         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
11528         lookup if set->vars is shared.  Don't keep slot cleared before
11529         calling unshare_variable.  Unshare set->vars if needed.  Adjust
11530         unshare_variable callers.  Clear dst_can_be_shared if needed.
11531         Even ->refcount == 1 vars must be unshared if set->vars is shared
11532         and var needs to be modified.
11533         (dataflow_set_union): Set traversed_vars during canonicalization.
11534         (VALUE_CHANGED, DECL_CHANGED): Define.
11535         (set_dv_changed, dv_changed_p): New static inlines.
11536         (track_expr_p): Clear DECL_CHANGED.
11537         (dump_dataflow_sets): Set it.
11538         (variable_was_changed): Call set_dv_changed.
11539         (emit_note_insn_var_location): Likewise.
11540         (changed_variables_stack): New variable.
11541         (check_changed_vars_1, check_changed_vars_2): New functions.
11542         (emit_notes_for_changes): Do nothing if changed_variables is
11543         empty.  Traverse changed_variables with check_changed_vars_1,
11544         call check_changed_vars_2 on each changed_variables_stack entry.
11545         (emit_notes_in_bb): Add SET argument.  Just clear it at the
11546         beginning, use it instead of local &set, don't destroy it at the end.
11547         (vt_emit_notes): Call dataflow_set_clear early on all
11548         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
11549         computed set, dataflow_set_clear also VTI(bb)->in when we are
11550         done with the basic block.  Initialize changed_variables_stack,
11551         free it afterwards.  If ENABLE_CHECKING verify that after noting
11552         differences to an empty set value_chains hash table is empty.
11553         (vt_initialize): Initialize value_chains and value_chain_pool.
11554         (vt_finalize): Delete value_chains htab, free value_chain_pool.
11555         (variable_tracking_main): Call dump_dataflow_sets before calling
11556         vt_emit_notes, not after it.
11557         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
11558         (propagate_var_def_into_debug_stmts): Declare.
11559         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
11560         (df_set_note): Reject debug insns.
11561         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
11562         add notes to debug insns.
11563         (df_note_bb_compute): Adjust.  Likewise.
11564         (df_simulate_uses): Skip debug insns.
11565         (df_simulate_initialize_backwards): Likewise.
11566         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
11567         (subst_stack_regs_pat): Reject debug insns.
11568         (convert_regs_1): Handle debug insns.
11569         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
11570         (print-rtl.o): Depend on cselib.h.
11571         (cselib.o): Depend on TREE_PASS_H.
11572         (var-tracking.o): Depend on cselib.h and TARGET_H.
11573         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
11574         (init_ready_list): Skip boundary debug insns.
11575         (add_branch_dependences): Skip debug insns.
11576         (free_block_dependencies): Check for blocks with only debug insns.
11577         (compute_priorities): Likewise.
11578         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
11579         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
11580         all callers.
11581         (gimple_build_debug_bind_stat): New.
11582         (empty_body_p): Skip debug stmts.
11583         (gimple_has_side_effects): Likewise.
11584         (gimple_rhs_has_side_effects): Likewise.
11585         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
11586         (gimple_build_debug_bind_stat): Declare.
11587         (gimple_build_debug_bind): Define.
11588         (is_gimple_debug): New.
11589         (gimple_debug_bind_p): New.
11590         (gimple_debug_bind_get_var): New.
11591         (gimple_debug_bind_get_value): New.
11592         (gimple_debug_bind_get_value_ptr): New.
11593         (gimple_debug_bind_set_var): New.
11594         (gimple_debug_bind_set_value): New.
11595         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
11596         (gimple_debug_bind_reset_value): New.
11597         (gimple_debug_bind_has_value_p): New.
11598         (gsi_next_nondebug): New.
11599         (gsi_prev_nondebug): New.
11600         (gsi_start_nondebug_bb): New.
11601         (gsi_last_nondebug_bb): New.
11602         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
11603         (print_insn): Handle DEBUG_INSN.
11604         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
11605         of first insn prevail.
11606         (first_stmt): Skip debug stmts.
11607         (first_non_label_stmt): Likewise.
11608         (last_stmt): Likewise.
11609         (has_zero_uses_1): New.
11610         (single_imm_use_1): New.
11611         (verify_gimple_debug): New.
11612         (verify_types_in_gimple_stmt): Handle debug stmts.
11613         (verify_stmt): Likewise.
11614         (debug_loop_num): Skip debug stmts.
11615         (remove_edge_and_dominated_blocks): Remove dominators last.
11616         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
11617         (linearize_expr): Likewise.
11618         * config/i386/i386.c (ix86_delegitimize_address): Call
11619         default implementation.
11620         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
11621         (group_barrier_needed): Skip debug insns.
11622         (emit_insn_group_barriers): Likewise.
11623         (emit_all_insn_group_barriers): Likewise.
11624         (ia64_variable_issue): Handle debug insns.
11625         (ia64_dfa_new_cycle): Likewise.
11626         (final_emit_insn_group_barriers): Skip debug insns.
11627         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
11628         def cfa without frame.
11629         (process_set): Likewise.
11630         (process_for_unwind_directive): Pass frame on.
11631         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
11632         (rs6000_delegitimize_address): New.
11633         (rs6000_debug_adjust_cost): Handle debug insns.
11634         (is_microcoded_insn): Likewise.
11635         (is_cracked_insn): Likewise.
11636         (is_nonpipeline_insn): Likewise.
11637         (insn_must_be_first_in_group): Likewise.
11638         (insn_must_be_last_in_group): Likewise.
11639         (force_new_group): Likewise.
11640         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
11641         contains only debug insns.
11642         (rtl_merge_blocks): Skip debug insns.
11643         (purge_dead_edges): Likewise.
11644         (rtl_block_ends_with_call_p): Skip debug insns.
11645         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
11646         (mark_reg_dependencies): Skip debug insns.
11647         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
11648         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
11649         * tree-ssa-threadedge.c
11650         (record_temporary_equivalences_from_stmts): Skip debug stmts.
11651         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
11652         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
11653         (copyprop_hardreg_forward_1): Handle debug insns.
11654         * reload1.c (reload): Skip debug insns.  Replace unassigned
11655         pseudos in debug insns with their equivalences.
11656         (eliminate_regs_in_insn): Skip debug insns.
11657         (emit_input_reload_insns): Skip debug insns at first, adjust
11658         them later.
11659         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
11660         (get_indirect_ref_operands): Pass opf_no_vops on.
11661         (get_expr_operands): Likewise.  Skip debug stmts.
11662         (parse_ssa_operands): Scan debug insns with opf_no_vops.
11663
11664 2009-09-01  Richard Henderson  <rth@redhat.com>
11665
11666         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
11667         stmt_ends_pp_p statements at least once.
11668         * tree-vrp.c (vrp_initialize): Likewise.
11669         (vrp_visit_stmt): Be prepared for non-interesting stmts.
11670
11671 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
11672
11673         PR bootstrap/41205
11674         Fix AIX bootstrap after PR debug/30161
11675         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
11676         that is a GNU extension.
11677         (tmpl_value_parm_die_table): Move the definition of this global
11678         outside #ifdef DWARF2_DEBUGGING_INFO region.
11679
11680 2009-09-01  Richard Guenther  <rguenther@suse.de>
11681
11682         * tree.c (tree_expr_size): New function.
11683         * tree.h (tree_expr_size): Declare.
11684         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
11685         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
11686         * langhooks.c (lhd_expr_size): Remove.
11687         * langhooks.h (struct lang_hooks): Remove expr_size.
11688         * explow.c (expr_size): Use tree_expr_size.
11689         (int_expr_size): Likewise.
11690         * langhooks-def.h (lhd_expr_size): Remove.
11691         (LANG_HOOKS_EXPR_SIZE): Likewise.
11692         (LANG_HOOKS_INITIALIZER): Adjust.
11693
11694 2009-09-01  Richard Guenther  <rguenther@suse.de>
11695
11696         * tree-flow.h (mark_addressable): Move declaration ...
11697         * tree.h (mark_addressable): ... here.
11698         * stmt.c (expand_asm_operands): Use mark_addressable, not
11699         lang_hooks.mark_addressable.
11700         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
11701         LANG_HOOKS_MARK_ADDRESSABLE.
11702         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
11703         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
11704
11705 2009-08-31  Chris Demetriou  <cgd@google.com>
11706
11707         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
11708         vectorize if not TARGET_SSE2.
11709
11710 2009-08-31  DJ Delorie  <dj@redhat.com>
11711
11712         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
11713         registers if no coprocessor is enabled.
11714
11715 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
11716
11717         PR debug/30161
11718         * cgraph.h (cgraph_get_node): Declare ...
11719         * cgraph.c (cgraph_get_node): ... new function.
11720         * dwarf2out.c (gen_generic_params_dies,
11721         generic_parameter_die, tree_add_const_value_attribute_for_decl,
11722         make_ith_pack_parameter_name,
11723         append_entry_to_tmpl_value_parm_die_table,
11724         gen_remaining_tmpl_value_param_die_attribute): New functions.
11725         (gen_subprogram_die): Generate debug info for template parameters
11726         if debug info level is higher than DINFO_LEVEL_TERSE.
11727         Use tree_add_const_value_attribute_for_decl instead of
11728         tree_add_const_value_attribute.
11729         (gen_const_die): Use tree_add_const_value_attribute_for_decl
11730         instead of tree_add_const_value_attribute.
11731         (gen_struct_or_union_type_die): Generate debug
11732         info for template parameters if debug info level is higher than
11733         DINFO_LEVEL_TERSE.
11734         (tree_add_const_value_attribute): Handle integral and pointer
11735         constants. Update comment.
11736         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
11737         (dwarf_attr_name): Support DW_AT_GNU_template_name.
11738         (reference_to_unused): Fix thinko. Remove redundant predicates from
11739         tests.
11740         (tree_add_const_value_attribute): Make this work for constant
11741         expressions only.
11742         tree_add_const_value_attribute_for_decl is to be used for variable
11743         DECLs now.
11744         (add_location_or_const_value_attribute): Use
11745         tree_add_const_value_attribute_for_decl now.
11746         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
11747         DW_TAG_template_value_param DIEs after function DIEs have been
11748         emitted.
11749         * langhooks.h (lang_hooks_for_types): Add
11750         get_argument_pack_elems.
11751         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
11752         (lang_hooks): Added get_innermost_generic_parms,
11753         get_innermost_generic_args.
11754         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
11755         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
11756         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
11757         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
11758
11759 2009-08-31  DJ Delorie  <dj@redhat.com>
11760
11761         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
11762         it once we start generating the prologue or epilogue.
11763         (mep_call_saves_register): If the frame is locked, re-use
11764         cached values.
11765         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
11766         (mep_expand_prologue): Call it.
11767         (mep_expand_epilogue): Likewise.
11768         (mep_start_function): Use the same logic as mep_expand_prologue.
11769         (mep_pass_by_reference): Make logic more readable.
11770         (mep_return_in_memory): Zero-sized objects are passed in memory.
11771         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
11772
11773 2009-08-31  Richard Guenther  <rguenther@suse.de>
11774
11775         * builtins.c (fold_builtin_memory_op): Use the alias oracle
11776         to query if the memory regions for memmove overlap.
11777         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
11778         asserts on pointers, instead deal with odd trees.
11779         (ptr_derefs_may_alias_p): Likewise.
11780         (refs_may_alias_p_1): Constructor bases also never alias.
11781
11782 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
11783
11784         * doc/install.texi (Final install): Adjust reference on where to
11785         order printed manuals.
11786
11787 2009-08-30  Olivier Hainque  <hainque@adacore.com>
11788
11789         * dwarf2out.c (switch_to_frame_table_section): Move
11790         definition prior to first use.
11791
11792 2009-08-30  Richard Guenther  <rguenther@suse.de>
11793
11794         PR tree-optimization/41186
11795         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
11796         (ao_ref_init_from_ptr_and_size): New function.
11797         (ref_maybe_used_by_call_p_1): Be more precise tracking
11798         used ranges for builtin functions.
11799         (ref_maybe_used_by_call_p): Adjust.
11800         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
11801         ranges for builtin functions.
11802         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
11803
11804 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
11805
11806         PR target/41081
11807         * fwprop.c (get_reg_use_in): Delete.
11808         (free_load_extend): New function.
11809         (forward_propagate_subreg): Use it.
11810
11811 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
11812
11813         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
11814
11815 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
11816
11817         PR/41184
11818         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
11819         padding.
11820
11821 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
11822
11823         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
11824         fini or fini_array section.
11825
11826 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11827
11828         * graphite-dependences.c (graphite_legal_transform_bb): Call
11829         pbb_remove_duplicate_pdrs.
11830         * graphite-poly.c (can_collapse_pdr): Removed.
11831         (pdr_find_duplicate): Removed.
11832         (can_collapse_pdrs): New.
11833         (pbb_remove_duplicate_pdrs): New.
11834         (new_poly_dr): Do not look for duplicates.
11835         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
11836         (PBB_PDR_DUPLICATES_REMOVED): New.
11837         (pbb_remove_duplicate_pdrs): Declared.
11838
11839 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11840
11841         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
11842         the strides by multiplying by PDR_NB_REFS.
11843         * graphite-poly.c (can_collapse_pdr): New.
11844         (pdr_find_duplicate): New.
11845         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
11846         Initialize PDR_NB_REFS.
11847         * graphite-poly.h (struct poly_dr): Add field nb_refs.
11848         (PDR_NB_REFS): New.
11849         (new_poly_dr): Number of subscripts is a graphite_dim_t.
11850
11851 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11852
11853         PR middle-end/40965
11854         * graphite-poly.c (apply_poly_transforms): Remove legality test before
11855         any transform.
11856
11857 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11858
11859         * graphite-dependences.c (pddr_original_scattering): Return NULL
11860         for read-read dependence relations.
11861         * graphite-poly.h (enum poly_dr_type): Fix comment.
11862         (pdr_read_p): New.
11863         (pdr_write_p): New.
11864         (pdr_may_write_p): New.
11865
11866 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11867
11868         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
11869         (struct poly_dr): Same.
11870         (new_poly_dr): Same.
11871         * graphite-poly.c (new_poly_dr): Same.
11872         * graphite-dependences.c (dot_deps): Disable call to system.
11873
11874 2009-08-28  Cary Coutant  <ccoutant@google.com>
11875
11876         PR debug/41063
11877         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
11878         struct/union/enum types local to a function.
11879
11880 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11881             Sebastian Pop  <sebastian.pop@amd.com>
11882
11883         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
11884         pbb_strip_mine_time_depth.  Changed the implementation so that
11885         transformation is expressed as a transformation on
11886         time (scatttering) dimensions.  Also, ensures that the 2d+1
11887         scheduling format is preserved.
11888         (pbb_strip_mine_profitable_p): Profitability is based on the
11889         iteration number of a given time (scattering) dimension,
11890         and not on a original loop depth dimension.
11891         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
11892         (pbb_do_strip_mine): Call psct_dynamic_dim.
11893         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
11894         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
11895         (pbb_nb_dynamic_scattering_transform): New.
11896         (psct_dynamic_dim): New.
11897
11898 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11899
11900         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11901         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11902         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
11903         * graphite-interchange.c (build_linearized_memory_access): Same.
11904         (memory_stride_in_loop): Same.
11905
11906 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11907
11908         * graphite-dependences.c (pddr_original_scattering): New.
11909         (graphite_legal_transform_dr): Call pddr_original_scattering.
11910         (dot_deps_1): New.
11911         (dot_deps): New.
11912         * graphite-dependences.h (dot_deps): Declared.
11913         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
11914         (print_pdr): Print PDR_ID.
11915         * graphite-poly.h (struct poly_dr): Add field id.
11916         (PDR_ID): New.
11917         (pbb_index): New.
11918         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
11919
11920 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11921
11922         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
11923         not delete the original dependence relation.
11924
11925 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11926
11927         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
11928         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
11929         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
11930         (free_poly_ddr): New.
11931         (pddr_is_empty): New.
11932         (dependence_polyhedron_1): Now returns a poly_ddr_p.
11933         (dependence_polyhedron): Same.  Remove useless gcc_assert.
11934         Remove fprintfs.
11935         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
11936         (graphite_carried_dependence_level_k): Call pddr_is_empty.
11937         * graphite-dependences.h (enum poly_dependence_kind): New.
11938         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
11939         (PDRP_SOURCE): Renamed PDDR_SOURCE.
11940         (PDRP_SINK): Renamed PDDR_SINK.
11941         (PDRP_DDP): Renamed PDDR_DDP.
11942         (PDDR_KIND): New.
11943         (free_poly_ddr): Declared.
11944         * graphite-poly.c (new_scop): Use the new hash function names.
11945         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
11946         into original_pddrs.
11947         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
11948
11949 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11950
11951         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
11952         bounds with LT_EXPR to make niter analysis more precise on code
11953         generated by Graphite.
11954
11955 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11956
11957         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
11958         (graphite_legal_transform_bb): Same.
11959         (poly_drs_may_alias_p): Same.
11960
11961 2009-08-28  Richard Guenther  <rguenther@suse.de>
11962
11963         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
11964
11965 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11966
11967         * config/i386/netware.c: Include langhooks.h.
11968         (i386_nlm_encode_section_info): Simplify.
11969         (netware_override_options): Delete.
11970         * config/i386/netware.h (netware_override_options): Delete
11971         declaration.
11972         (OVERRIDE_OPTIONS): Delete definition.
11973         (SUBTARGET_OVERRIDE_OPTIONS): Define.
11974         (ASM_COMMENT_START): Define.
11975         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
11976
11977 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11978
11979         * configure.ac: For in-tree ld, do a plain version check to
11980         determine whether comdat groups are supported.
11981         * configure: Regenerate.
11982
11983 2009-08-28  Olivier Hainque  <hainque@adacore.com>
11984
11985         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
11986         always defined.  Reflect definition or absence of such for
11987         COLLECT_EXPORT_LIST.  Readability helper.
11988         (scanfilter): New enum, to help control what symbols
11989         are to be considered or ignored by scan_prog_file.
11990         (enum pass): Rename as "scanpass", moved together with scanfilter
11991         prior to scan_prog_file's prototype.
11992         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
11993         Group prototype with the scanpass/scanfilter definitions, factorize
11994         head comments for the several implementations at the prototype.
11995         (main): Reorganize the first pass link control to let AIX
11996         drag only the needed frame tables in executables.  Prevent
11997         frame tables collection during the scan aimed at static ctors.
11998         Pre-link and scan for frame tables later to compensate.
11999         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
12000         A C statement to issue assembly directives that create a reference
12001         to the given DWARF table identifier label from the current function
12002         section.
12003         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
12004         to differentiate first time section entry.  Only emit a .data
12005         tables start identifier label the first time around.
12006         (switch_to_frame_table_section): New function.  Helper for
12007         output_call_frame_info to switch possibly BACK into the eh_frame
12008         or the debug_frame section depending on FOR_EH.
12009         (output_call_frame_info): Use helper to first enter the proper
12010         frame section.
12011         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
12012         emit a link to the frame table start label from each function
12013         section.
12014         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
12015         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
12016         * config/rs6000/rs6000-protos.h: Declare it.
12017         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
12018
12019 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
12020
12021         * config/sh/sh.c (split_branches): Check the result of
12022         next_active_insn.
12023
12024 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
12025
12026         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
12027         using -pthread -fopenmp
12028
12029 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
12030
12031         * doc/service.texi (service directory): Update URL.
12032
12033 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
12034
12035         PR rtl-optimization/40861
12036         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
12037         extract word from a multi-word subreg for negative byte positions.
12038
12039 2009-08-27  Tristan Gingold  <gingold@adacore.com>
12040             Douglas B Rupp  <rupp@gnat.com>
12041
12042         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
12043         (SECTION_VMS_OVERLAY): Define.
12044         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
12045         attribute.
12046         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
12047         for common_object.
12048         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
12049         common_object declarations.
12050         (ia64_section_type_flags): Set section flag for common_object.
12051         * config/ia64/ia64-protos.h
12052         (ia64_vms_output_aligned_decl_common): Declare.
12053         (ia64_vms_elf_asm_named_section): Declare.
12054
12055 2009-08-27  Michael Matz  <matz@suse.de>
12056
12057         * expr.c (expand_expr_real_2): New function taking exploded
12058         unary or binary expression, split out from ...
12059         (expand_expr_real_1): ... here.  Move over all unary/binary
12060         switch parts to above function, in particular these codes:
12061         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
12062         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
12063         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
12064         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
12065         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
12066         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
12067         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
12068         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
12069         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
12070         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
12071         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
12072         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
12073         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
12074         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
12075         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
12076         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
12077         VEC_PACK_FIX_TRUNC_EXPR.
12078         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
12079         full expression.
12080
12081 2009-08-27  Richard Guenther  <rguenther@suse.de>
12082
12083         * gengtype.c (main): Handle uint64_t.
12084         * ipa-utils.c (get_base_var): Indent properly.
12085         * tree-ssa-live.c (debug_scope_block): New function.
12086         * tree-flow.h (debug_scope_block): Declare.
12087         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
12088         * basic-block.h (enum profile_status): Rename to
12089         enum profile_status_d.
12090         (x_profile_status): Adjust type.
12091
12092 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
12093
12094         PR debug/41170
12095         * dwarf2out.c (get_context_die): Declare this static function.
12096         (gen_type_die_with_usage): Make sure a DIE is a generated for
12097         the context of a typedef.
12098
12099 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
12100
12101         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
12102         switch.
12103
12104 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
12105
12106         * config/mips/mips-protos.h (mips_output_sync): Declare.
12107         (mips_sync_loop_insns): Likewise.
12108         (mips_output_sync_loop): Replace first two parameters with an rtx.
12109         * config/mips/mips.c (mips_multi_member): New structure.
12110         (mips_multi_members): New variable.
12111         (mips_multi_start): New function.
12112         (mips_multi_add): Likewise.
12113         (mips_multi_add_insn): Likewise.
12114         (mips_multi_add_label): Likewise.
12115         (mips_multi_last_index): Likewise.
12116         (mips_multi_copy_insn): Likewise.
12117         (mips_multi_set_operand): Likewise.
12118         (mips_multi_write): Likewise.
12119         (mips_print_operand_punctuation): Remove '%|' and '%-'.
12120         (mips_init_print_operand_punct): Update accordingly.
12121         (mips_start_ll_sc_sync_block): New function.
12122         (mips_end_ll_sc_sync_block): Likewise.
12123         (mips_output_sync): Likewise.
12124         (mips_sync_insn1_template): Likewise.
12125         (mips_sync_insn2_template): Likewise.
12126         (mips_get_sync_operand): Likewise.
12127         (mips_process_sync_loop): Likewise.
12128         (mips_output_sync_loop): Use mips_process_sync_loop.
12129         (mips_sync_loop_insns): New function.
12130         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
12131         (MIPS_COMPARE_AND_SWAP_12): Likewise.
12132         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
12133         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
12134         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
12135         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
12136         (MIPS_SYNC_OLD_OP_12): Likewise.
12137         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
12138         (MIPS_SYNC_NEW_OP_12): Likewise.
12139         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
12140         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
12141         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
12142         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
12143         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
12144         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
12145         * config/mips/mips.md (sync_mem): New attribute.
12146         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
12147         (sync_exclusive_mask, sync_required_oldval): Likewise.
12148         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
12149         (sync_release_barrier): Likewise.
12150         (length): Handle sync loops.
12151         (sync): Use mips_output_sync.
12152         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
12153         (sync_compare_and_swap<mode>): Set the new sync_* attributes
12154         and use mips_output_sync_loop.
12155         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
12156         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
12157         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
12158         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
12159         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
12160         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
12161         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
12162         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
12163         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
12164
12165 2009-08-26  Richard Guenther  <rguenther@suse.de>
12166
12167         PR middle-end/41163
12168         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
12169         the types to not match.
12170         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
12171         verification.
12172         * tree-ssa.c (useless_type_conversion_p): Conversions to
12173         pointers to unprototyped functions are useless.
12174
12175 2009-08-26  Richard Guenther  <rguenther@suse.de>
12176
12177         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
12178         whole-program condition, prepare to be called for non-globals.
12179         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
12180         params build a representative with known type and track its fields.
12181
12182 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
12183
12184         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
12185         clearing by a taken branch.
12186         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
12187         effectively after bbro pass.
12188         (sync_nand<mode>): Ditto.
12189         (sync_old_<fetchop_name><mode>): Ditto.
12190         (sync_old_nand<mode>): Ditto.
12191         (sync_new_<fetchop_name><mode>): Dito.
12192         (sync_new_nand<mode>): Ditto.
12193         (sync_compare_and_swap<mode>_1): Ditto.
12194         (*sync_compare_and_swap<mode>): Ditto.
12195         (sync_lock_test_and_set<mode>_1): Ditto.
12196         ("sync_lock_test_and_set<mode>): Ditto.
12197
12198 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
12199
12200         * hwint.h (HOST_LONG_FORMAT): New macro
12201         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
12202         Use HOST_PTR_PRINTF.
12203         * system.h (HOST_PTR_PRINTF): Resurrect old macro
12204         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
12205         (HOST_PTR_PRINTF): Document.
12206
12207 2009-08-25 Jan Hubicka  <jh@suse.cz>
12208
12209         * config/i386/bmmintrin.h: Replace by #error.
12210
12211         Revert:
12212         Michael Meissner  <michael.meissner@amd.com>
12213         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12214         Tony Linthicum  <tony.linthicum@amd.com>
12215
12216         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
12217         (TARGET_ROUND): New macro for the round/ptest instructions which
12218         are shared between SSE4.1 and SSE5.
12219         (OPTION_MASK_ISA_ROUND): Ditto.
12220         (OPTION_ISA_ROUND): Ditto.
12221         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
12222         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
12223
12224         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
12225         (-mfused-madd): New switch to give users control over whether the
12226         compiler optimizes to use the multiply/add SSE5 instructions.
12227
12228         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
12229         (ix86_handle_option): Turn off 3dnow if -msse5.
12230         (override_options): Add SSE5 support.
12231         (print_operand): %Y prints comparison codes for SSE5 com/pcom
12232         instructions.
12233         (ix86_expand_sse_movcc): Add SSE5 support.
12234         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
12235         vector type to the next largest size.
12236         (ix86_expand_sse5_pack): New function to use pperm to pack a
12237         vector type to the next smallest size.
12238         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
12239         (IX86_BUILTIN_FMADDSD): Ditto.
12240         (IX86_BUILTIN_FMADDPS): Ditto.
12241         (IX86_BUILTIN_FMADDPD): Ditto.
12242         (IX86_BUILTIN_FMSUBSS): Ditto.
12243         (IX86_BUILTIN_FMSUBSD): Ditto.
12244         (IX86_BUILTIN_FMSUBPS): Ditto.
12245         (IX86_BUILTIN_FMSUBPD): Ditto.
12246         (IX86_BUILTIN_FNMADDSS): Ditto.
12247         (IX86_BUILTIN_FNMADDSD): Ditto.
12248         (IX86_BUILTIN_FNMADDPS): Ditto.
12249         (IX86_BUILTIN_FNMADDPD): Ditto.
12250         (IX86_BUILTIN_FNMSUBSS): Ditto.
12251         (IX86_BUILTIN_FNMSUBSD): Ditto.
12252         (IX86_BUILTIN_FNMSUBPS): Ditto.
12253         (IX86_BUILTIN_FNMSUBPD): Ditto.
12254         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
12255         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
12256         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
12257         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
12258         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
12259         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
12260         (IX86_BUILTIN_PPERM): Ditto.
12261         (IX86_BUILTIN_PERMPS): Ditto.
12262         (IX86_BUILTIN_PERMPD): Ditto.
12263         (IX86_BUILTIN_PMACSSWW): Ditto.
12264         (IX86_BUILTIN_PMACSWW): Ditto.
12265         (IX86_BUILTIN_PMACSSWD): Ditto.
12266         (IX86_BUILTIN_PMACSWD): Ditto.
12267         (IX86_BUILTIN_PMACSSDD): Ditto.
12268         (IX86_BUILTIN_PMACSDD): Ditto.
12269         (IX86_BUILTIN_PMACSSDQL): Ditto.
12270         (IX86_BUILTIN_PMACSSDQH): Ditto.
12271         (IX86_BUILTIN_PMACSDQL): Ditto.
12272         (IX86_BUILTIN_PMACSDQH): Ditto.
12273         (IX86_BUILTIN_PMADCSSWD): Ditto.
12274         (IX86_BUILTIN_PMADCSWD): Ditto.
12275         (IX86_BUILTIN_PHADDBW): Ditto.
12276         (IX86_BUILTIN_PHADDBD): Ditto.
12277         (IX86_BUILTIN_PHADDBQ): Ditto.
12278         (IX86_BUILTIN_PHADDWD): Ditto.
12279         (IX86_BUILTIN_PHADDWQ): Ditto.
12280         (IX86_BUILTIN_PHADDDQ): Ditto.
12281         (IX86_BUILTIN_PHADDUBW): Ditto.
12282         (IX86_BUILTIN_PHADDUBD): Ditto.
12283         (IX86_BUILTIN_PHADDUBQ): Ditto.
12284         (IX86_BUILTIN_PHADDUWD): Ditto.
12285         (IX86_BUILTIN_PHADDUWQ): Ditto.
12286         (IX86_BUILTIN_PHADDUDQ): Ditto.
12287         (IX86_BUILTIN_PHSUBBW): Ditto.
12288         (IX86_BUILTIN_PHSUBWD): Ditto.
12289         (IX86_BUILTIN_PHSUBDQ): Ditto.
12290         (IX86_BUILTIN_PROTB): Ditto.
12291         (IX86_BUILTIN_PROTW): Ditto.
12292         (IX86_BUILTIN_PROTD): Ditto.
12293         (IX86_BUILTIN_PROTQ): Ditto.
12294         (IX86_BUILTIN_PROTB_IMM): Ditto.
12295         (IX86_BUILTIN_PROTW_IMM): Ditto.
12296         (IX86_BUILTIN_PROTD_IMM): Ditto.
12297         (IX86_BUILTIN_PROTQ_IMM): Ditto.
12298         (IX86_BUILTIN_PSHLB): Ditto.
12299         (IX86_BUILTIN_PSHLW): Ditto.
12300         (IX86_BUILTIN_PSHLD): Ditto.
12301         (IX86_BUILTIN_PSHLQ): Ditto.
12302         (IX86_BUILTIN_PSHAB): Ditto.
12303         (IX86_BUILTIN_PSHAW): Ditto.
12304         (IX86_BUILTIN_PSHAD): Ditto.
12305         (IX86_BUILTIN_PSHAQ): Ditto.
12306         (IX86_BUILTIN_FRCZSS): Ditto.
12307         (IX86_BUILTIN_FRCZSD): Ditto.
12308         (IX86_BUILTIN_FRCZPS): Ditto.
12309         (IX86_BUILTIN_FRCZPD): Ditto.
12310         (IX86_BUILTIN_CVTPH2PS): Ditto.
12311         (IX86_BUILTIN_CVTPS2PH): Ditto.
12312         (IX86_BUILTIN_COMEQSS): Ditto.
12313         (IX86_BUILTIN_COMNESS): Ditto.
12314         (IX86_BUILTIN_COMLTSS): Ditto.
12315         (IX86_BUILTIN_COMLESS): Ditto.
12316         (IX86_BUILTIN_COMGTSS): Ditto.
12317         (IX86_BUILTIN_COMGESS): Ditto.
12318         (IX86_BUILTIN_COMUEQSS): Ditto.
12319         (IX86_BUILTIN_COMUNESS): Ditto.
12320         (IX86_BUILTIN_COMULTSS): Ditto.
12321         (IX86_BUILTIN_COMULESS): Ditto.
12322         (IX86_BUILTIN_COMUGTSS): Ditto.
12323         (IX86_BUILTIN_COMUGESS): Ditto.
12324         (IX86_BUILTIN_COMORDSS): Ditto.
12325         (IX86_BUILTIN_COMUNORDSS): Ditto.
12326         (IX86_BUILTIN_COMFALSESS): Ditto.
12327         (IX86_BUILTIN_COMTRUESS): Ditto.
12328         (IX86_BUILTIN_COMEQSD): Ditto.
12329         (IX86_BUILTIN_COMNESD): Ditto.
12330         (IX86_BUILTIN_COMLTSD): Ditto.
12331         (IX86_BUILTIN_COMLESD): Ditto.
12332         (IX86_BUILTIN_COMGTSD): Ditto.
12333         (IX86_BUILTIN_COMGESD): Ditto.
12334         (IX86_BUILTIN_COMUEQSD): Ditto.
12335         (IX86_BUILTIN_COMUNESD): Ditto.
12336         (IX86_BUILTIN_COMULTSD): Ditto.
12337         (IX86_BUILTIN_COMULESD): Ditto.
12338         (IX86_BUILTIN_COMUGTSD): Ditto.
12339         (IX86_BUILTIN_COMUGESD): Ditto.
12340         (IX86_BUILTIN_COMORDSD): Ditto.
12341         (IX86_BUILTIN_COMUNORDSD): Ditto.
12342         (IX86_BUILTIN_COMFALSESD): Ditto.
12343         (IX86_BUILTIN_COMTRUESD): Ditto.
12344         (IX86_BUILTIN_COMEQPS): Ditto.
12345         (IX86_BUILTIN_COMNEPS): Ditto.
12346         (IX86_BUILTIN_COMLTPS): Ditto.
12347         (IX86_BUILTIN_COMLEPS): Ditto.
12348         (IX86_BUILTIN_COMGTPS): Ditto.
12349         (IX86_BUILTIN_COMGEPS): Ditto.
12350         (IX86_BUILTIN_COMUEQPS): Ditto.
12351         (IX86_BUILTIN_COMUNEPS): Ditto.
12352         (IX86_BUILTIN_COMULTPS): Ditto.
12353         (IX86_BUILTIN_COMULEPS): Ditto.
12354         (IX86_BUILTIN_COMUGTPS): Ditto.
12355         (IX86_BUILTIN_COMUGEPS): Ditto.
12356         (IX86_BUILTIN_COMORDPS): Ditto.
12357         (IX86_BUILTIN_COMUNORDPS): Ditto.
12358         (IX86_BUILTIN_COMFALSEPS): Ditto.
12359         (IX86_BUILTIN_COMTRUEPS): Ditto.
12360         (IX86_BUILTIN_COMEQPD): Ditto.
12361         (IX86_BUILTIN_COMNEPD): Ditto.
12362         (IX86_BUILTIN_COMLTPD): Ditto.
12363         (IX86_BUILTIN_COMLEPD): Ditto.
12364         (IX86_BUILTIN_COMGTPD): Ditto.
12365         (IX86_BUILTIN_COMGEPD): Ditto.
12366         (IX86_BUILTIN_COMUEQPD): Ditto.
12367         (IX86_BUILTIN_COMUNEPD): Ditto.
12368         (IX86_BUILTIN_COMULTPD): Ditto.
12369         (IX86_BUILTIN_COMULEPD): Ditto.
12370         (IX86_BUILTIN_COMUGTPD): Ditto.
12371         (IX86_BUILTIN_COMUGEPD): Ditto.
12372         (IX86_BUILTIN_COMORDPD): Ditto.
12373         (IX86_BUILTIN_COMUNORDPD): Ditto.
12374         (IX86_BUILTIN_COMFALSEPD): Ditto.
12375         (IX86_BUILTIN_COMTRUEPD): Ditto.
12376         (IX86_BUILTIN_PCOMEQUB): Ditto.
12377         (IX86_BUILTIN_PCOMNEUB): Ditto.
12378         (IX86_BUILTIN_PCOMLTUB): Ditto.
12379         (IX86_BUILTIN_PCOMLEUB): Ditto.
12380         (IX86_BUILTIN_PCOMGTUB): Ditto.
12381         (IX86_BUILTIN_PCOMGEUB): Ditto.
12382         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
12383         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
12384         (IX86_BUILTIN_PCOMEQUW): Ditto.
12385         (IX86_BUILTIN_PCOMNEUW): Ditto.
12386         (IX86_BUILTIN_PCOMLTUW): Ditto.
12387         (IX86_BUILTIN_PCOMLEUW): Ditto.
12388         (IX86_BUILTIN_PCOMGTUW): Ditto.
12389         (IX86_BUILTIN_PCOMGEUW): Ditto.
12390         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
12391         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
12392         (IX86_BUILTIN_PCOMEQUD): Ditto.
12393         (IX86_BUILTIN_PCOMNEUD): Ditto.
12394         (IX86_BUILTIN_PCOMLTUD): Ditto.
12395         (IX86_BUILTIN_PCOMLEUD): Ditto.
12396         (IX86_BUILTIN_PCOMGTUD): Ditto.
12397         (IX86_BUILTIN_PCOMGEUD): Ditto.
12398         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
12399         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
12400         (IX86_BUILTIN_PCOMEQUQ): Ditto.
12401         (IX86_BUILTIN_PCOMNEUQ): Ditto.
12402         (IX86_BUILTIN_PCOMLTUQ): Ditto.
12403         (IX86_BUILTIN_PCOMLEUQ): Ditto.
12404         (IX86_BUILTIN_PCOMGTUQ): Ditto.
12405         (IX86_BUILTIN_PCOMGEUQ): Ditto.
12406         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
12407         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
12408         (IX86_BUILTIN_PCOMEQB): Ditto.
12409         (IX86_BUILTIN_PCOMNEB): Ditto.
12410         (IX86_BUILTIN_PCOMLTB): Ditto.
12411         (IX86_BUILTIN_PCOMLEB): Ditto.
12412         (IX86_BUILTIN_PCOMGTB): Ditto.
12413         (IX86_BUILTIN_PCOMGEB): Ditto.
12414         (IX86_BUILTIN_PCOMFALSEB): Ditto.
12415         (IX86_BUILTIN_PCOMTRUEB): Ditto.
12416         (IX86_BUILTIN_PCOMEQW): Ditto.
12417         (IX86_BUILTIN_PCOMNEW): Ditto.
12418         (IX86_BUILTIN_PCOMLTW): Ditto.
12419         (IX86_BUILTIN_PCOMLEW): Ditto.
12420         (IX86_BUILTIN_PCOMGTW): Ditto.
12421         (IX86_BUILTIN_PCOMGEW): Ditto.
12422         (IX86_BUILTIN_PCOMFALSEW): Ditto.
12423         (IX86_BUILTIN_PCOMTRUEW): Ditto.
12424         (IX86_BUILTIN_PCOMEQD): Ditto.
12425         (IX86_BUILTIN_PCOMNED): Ditto.
12426         (IX86_BUILTIN_PCOMLTD): Ditto.
12427         (IX86_BUILTIN_PCOMLED): Ditto.
12428         (IX86_BUILTIN_PCOMGTD): Ditto.
12429         (IX86_BUILTIN_PCOMGED): Ditto.
12430         (IX86_BUILTIN_PCOMFALSED): Ditto.
12431         (IX86_BUILTIN_PCOMTRUED): Ditto.
12432         (IX86_BUILTIN_PCOMEQQ): Ditto.
12433         (IX86_BUILTIN_PCOMNEQ): Ditto.
12434         (IX86_BUILTIN_PCOMLTQ): Ditto.
12435         (IX86_BUILTIN_PCOMLEQ): Ditto.
12436         (IX86_BUILTIN_PCOMGTQ): Ditto.
12437         (IX86_BUILTIN_PCOMGEQ): Ditto.
12438         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
12439         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
12440         (enum multi_arg_type): New enum for describing the various SSE5
12441         intrinsic argument types.
12442         (bdesc_multi_arg): New table for SSE5 intrinsics.
12443         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
12444         (ix86_expand_multi_arg_builtin): New function for creating SSE5
12445         intrinsics.
12446         (ix86_expand_builtin): Add SSE5 intrinsic support.
12447         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
12448         operand instructions.
12449         (ix86_expand_sse5_multiple_memory): New function to split the
12450         second memory reference from SSE5 instructions.
12451         (type_has_variadic_args_p): Delete in favor of stdarg_p.
12452         (ix86_return_pops_args): Use stdarg_p to determine if the function
12453         has variable arguments.
12454         (ix86_setup_incoming_varargs): Ditto.
12455         (x86_this_parameter): Ditto.
12456
12457         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
12458         declaration.
12459         (ix86_expand_sse5_pack): Ditto.
12460         (ix86_sse5_valid_op_p): Ditto.
12461         (ix86_expand_sse5_multiple_memory): Ditto.
12462
12463         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
12464         constant for SSE5 support.
12465         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
12466         (UNSPEC_SSE5_TRUEFALSE): Ditto.
12467         (UNSPEC_SSE5_PERMUTE): Ditto.
12468         (UNSPEC_SSE5_ASHIFT): Ditto.
12469         (UNSPEC_SSE5_LSHIFT): Ditto.
12470         (UNSPEC_FRCZ): Ditto.
12471         (UNSPEC_CVTPH2PS): Ditto.
12472         (UNSPEC_CVTPS2PH): Ditto.
12473         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
12474         (PCOM_TRUE): Ditto.
12475         (COM_FALSE_S): Ditto.
12476         (COM_FALSE_P): Ditto.
12477         (COM_TRUE_S): Ditto.
12478         (COM_TRUE_P): Ditto.
12479         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
12480         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
12481         types.
12482         (memory attribute): Ditto.
12483         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
12484         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
12485         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
12486         (floor<mode>2): Ditto.
12487         (ceil<mode>2): Ditto.
12488         (btrunc<mode>2): Ditto.
12489         (nearbyintdf2): Ditto.
12490         (nearbyintsf2): Ditto.
12491         (sse_setccsf): Disable if SSE5.
12492         (sse_setccdf): Ditto.
12493         (sse5_setcc<mode>): New support for SSE5 conditional move.
12494         (sse5_pcmov_<mode>): Ditto.
12495
12496         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
12497         (SSEMODEF4): Ditto.
12498         (SSEMODEF2P): Ditto.
12499         (ssemodesuffixf4): New mode attribute for SSE5.
12500         (ssemodesuffixf2s): Ditto.
12501         (ssemodesuffixf2c): Ditto.
12502         (sserotatemax): Ditto.
12503         (ssescalarmode): Ditto.
12504         (sse_maskcmpv4sf3): Disable if SSE5.
12505         (sse_maskcmpv2df3): Ditto.
12506         (sse_vmmaskcmpv4sf3): Ditto.
12507         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
12508         (sse5_vmfmadd<mode>4): Ditto.
12509         (sse5_fmsub<mode>4): Ditto.
12510         (sse5_vmfmsub<mode>4): Ditto.
12511         (sse5_fnmadd<mode>4): Ditto.
12512         (sse5_vmfnmadd<mode>4): Ditto.
12513         (sse5_fnmsub<mode>4): Ditto.
12514         (sse5_vmfnmsub<mode>4): Ditto.
12515         (sse5i_fmadd<mode>4): Ditto.
12516         (sse5i_fmsub<mode>4): Ditto.
12517         (sse5i_fnmadd<mode>4): Ditto.
12518         (sse5i_fnmsub<mode>4): Ditto.
12519         (sse5i_vmfmadd<mode>4): Ditto.
12520         (sse5i_vmfmsub<mode>4): Ditto.
12521         (sse5i_vmfnmadd<mode>4): Ditto.
12522         (sse5i_vmfnmsub<mode>4): Ditto.
12523         (mulv16qi3): Add SSE5 support.
12524         (mulv4si3): Ditto.
12525         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
12526         (sse2_mulv4si3): Disable if SSE5.
12527         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
12528         (sse4_1_roundps): Ditto.
12529         (sse4_1_roundsd): Ditto.
12530         (sse4_1_roundss): Ditto.
12531         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
12532         be generated.
12533         (sse_maskcmpsf3): Ditto.
12534         (sse_vmmaskcmpv4sf3): Ditto.
12535         (sse2_maskcmpv2df3): Ditto.
12536         (sse2_maskcmpdf3): Ditto.
12537         (sse2_vmmaskcmpv2df3): Ditto.
12538         (sse2_eq<mode>3): Ditto.
12539         (sse2_gt<mode>3): Ditto.
12540         (sse5_pcmov_<mode>): Add SSE5 support.
12541         (vec_unpacku_hi_v16qi): Ditto.
12542         (vec_unpacks_hi_v16qi): Ditto.
12543         (vec_unpacku_lo_v16qi): Ditto.
12544         (vec_unpacks_lo_v16qi): Ditto.
12545         (vec_unpacku_hi_v8hi): Ditto.
12546         (vec_unpacks_hi_v8hi): Ditto.
12547         (vec_unpacku_lo_v8hi): Ditto.
12548         (vec_unpacks_lo_v8hi): Ditto.
12549         (vec_unpacku_hi_v4si): Ditto.
12550         (vec_unpacks_hi_v4si): Ditto.
12551         (vec_unpacku_lo_v4si): Ditto.
12552         (vec_unpacks_lo_v4si): Ditto.
12553         (sse5_pmacsww): New SSE5 intrinsic insn.
12554         (sse5_pmacssww): Ditto.
12555         (sse5_pmacsdd): Ditto.
12556         (sse5_pmacssdd): Ditto.
12557         (sse5_pmacssdql): Ditto.
12558         (sse5_pmacssdqh): Ditto.
12559         (sse5_pmacsdqh): Ditto.
12560         (sse5_pmacsswd): Ditto.
12561         (sse5_pmacswd): Ditto.
12562         (sse5_pmadcsswd): Ditto.
12563         (sse5_pmadcswd): Ditto.
12564         (sse5_pcmov_<move>): Conditional move support on SSE5.
12565         (sse5_phaddbw): New SSE5 intrinsic insn.
12566         (sse5_phaddbd): Ditto.
12567         (sse5_phaddbq): Ditto.
12568         (sse5_phaddwd): Ditto.
12569         (sse5_phaddwq): Ditto.
12570         (sse5_phadddq): Ditto.
12571         (sse5_phaddubw): Ditto.
12572         (sse5_phaddubd): Ditto.
12573         (sse5_phaddubq): Ditto.
12574         (sse5_phadduwd): Ditto.
12575         (sse5_phadduwq): Ditto.
12576         (sse5_phaddudq): Ditto.
12577         (sse5_phsubbw): Ditto.
12578         (sse5_phsubwd): Ditto.
12579         (sse5_phsubdq): Ditto.
12580         (sse5_pperm): Ditto.
12581         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
12582         (sse5_pperm_zero_v16qi_v8hi): Ditto.
12583         (sse5_pperm_sign_v8hi_v4si): Ditto.
12584         (sse5_pperm_zero_v8hi_v4si): Ditto.
12585         (sse5_pperm_sign_v4si_v2di): Ditto.
12586         (sse5_pperm_sign_v4si_v2di): Ditto.
12587         (sse5_pperm_pack_v2di_v4si): Ditto.
12588         (sse5_pperm_pack_v4si_v8hi): Ditto.
12589         (sse5_pperm_pack_v8hi_v16qi): Ditto.
12590         (sse5_perm<mode>): New SSE5 intrinsic insn.
12591         (rotl<mode>3): Ditto.
12592         (sse5_rotl<mode>3): Ditto.
12593         (sse5_ashl<mode>3): Ditto.
12594         (sse5_lshl<mode>3): Ditto.
12595         (sse5_frcz<mode>2): Ditto.
12596         (sse5s_frcz<mode>2): Ditto.
12597         (sse5_cvtph2ps): Ditto.
12598         (sse5_cvtps2ph): Ditto.
12599         (sse5_vmmaskcmp<mode>3): Ditto.
12600         (sse5_com_tf<mode>3): Ditto.
12601         (sse5_maskcmp<mode>3): Ditto.
12602         (sse5_maskcmp_uns<mode>3): Ditto.
12603         (sse5_maskcmp_uns2<mode>3): Ditto.
12604         (sse5_pcom_tf<mode>3): Ditto.
12605
12606         * config/i386/predicates.md (sse5_comparison_float_operator):
12607         New predicate to match the comparison operators supported by
12608         the SSE5 com instruction.
12609         (ix86_comparison_int_operator): New predicate to match just the
12610         signed int comparisons.
12611         (ix86_comparison_uns_operator): New predicate to match just the
12612         unsigned int comparisons.
12613
12614         * doc/invoke.texi (-msse5): Add documentation.
12615         (-mfused-madd): Ditto.
12616
12617         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
12618
12619         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
12620         mmintrin-common.h.
12621         (x86_64-*-*): Ditto.
12622
12623         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
12624
12625         * config/i386/bmmintrin.h: New file, provide common x86 compiler
12626         intrinisics for SSE5.
12627
12628         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
12629         mmintrin-common.h.
12630
12631         * config/i386/mmintrin-common.h: New file, to contain common
12632         instructions between SSE4.1 and SSE5.
12633
12634         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
12635         FOREACH_FUNCTION_ARGS to iterate over the argument list.
12636         (gen_regparm_prefix): Ditto.
12637
12638         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
12639         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
12640         prototype_p to determine if a function is prototyped.
12641
12642 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
12643
12644         * c-common.c (c_common_reswords) add the alignof keyword,
12645         with same RID as __alignof and __alignof__
12646
12647 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
12648
12649         * hooks.h (hook_bool_const_int_const_int_true): Declare.
12650         * hooks.c (hook_bool_const_int_const_int_true): New function.
12651         * target.h (struct gcc_target): Add can_eliminate field.
12652         * target-def.h (TARGET_CAN_ELIMINATE): Define.
12653         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
12654         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
12655         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
12656         (elim_table): Revise comment.
12657         * system.h (CAN_ELIMINATE): Poison.
12658         * defaults.h (CAN_ELIMINATE): Remove.
12659         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
12660
12661         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
12662         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
12663         Define macro.
12664         (alpha_vms_can_eliminate): Declare as static, change return type to
12665         bool.
12666         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
12667
12668         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
12669         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
12670         (arm_can_eliminate): New function.
12671
12672         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
12673         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
12674         (avr_can_eliminate): Declare as static.
12675         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
12676
12677         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
12678         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
12679         (bfin_can_eliminate): New function.
12680
12681         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
12682         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
12683         (crx_can_eliminate): New function.
12684
12685         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
12686         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
12687         (fr30_can_eliminate): New function.
12688
12689         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
12690         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
12691         (frv_can_eliminate): New function.
12692
12693         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
12694         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
12695         (h8300_can_eliminate): New function.
12696
12697         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
12698         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
12699         (i386_can_eliminate): Declare as static, change return type to bool.
12700         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
12701
12702         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
12703         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
12704         (ia64_can_eliminate): New function.
12705
12706         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
12707         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
12708         (iq2000_can_eliminate): New function.
12709
12710         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
12711         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
12712         (m32r_can_eliminate): New function.
12713
12714         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
12715         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
12716         (m68hc11_can_eliminate): New function.
12717
12718         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
12719         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
12720         (m68k_can_eliminate): New function.
12721
12722         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
12723         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
12724         (mep_can_eliminate): New function.
12725
12726         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
12727         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
12728         (mips_can_eliminate): New function.
12729
12730         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
12731         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
12732         (rs6000_can_eliminate): New function.
12733
12734         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
12735         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
12736         (s390_can_eliminate): Declare as static.
12737         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
12738
12739         * config/score/score.h (CAN_ELIMINATE): Remove macro.
12740         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
12741         (score_can_eliminate): New function.
12742
12743         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
12744         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
12745         (sparc_can_eliminate): Declare as static.
12746         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
12747
12748         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
12749         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
12750         (xstormy16_can_eliminate): New function.
12751
12752         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
12753         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
12754         (v850_can_eliminate): New function.
12755
12756 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
12757
12758         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
12759         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
12760         (*movdfcc_ext[1234]): Disable for IEEE mode.
12761
12762 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
12763
12764         * gimplify.c (prepare_gimple_addressable): New static function.
12765         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
12766         it addressable.
12767         (gimplify_addr_expr): Invoke it similarly on the operand instead of
12768         manually fiddling with it.
12769
12770 2009-08-25  Michael Matz  <matz@suse.de>
12771
12772         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
12773         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
12774         full expression.
12775         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
12776         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
12777         (do_jump): Split out code for simple binary comparisons into ...
12778         (do_jump_1): ... this, taking the individual operands and code.
12779         Change callers to helper function above accordingly.
12780         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
12781         comparisons.
12782
12783 2009-08-25  Michael Matz  <matz@suse.de>
12784
12785         * expr.h (struct separate_ops, sepops): New type for passing
12786         around an exploded simple expression.
12787         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
12788         Use this structure instead of expression tree.
12789         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
12790         expression, only its type.
12791         (expand_vec_cond_expr): Take type and individual operands instead
12792         of full expression.
12793         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
12794         expand_vec_shift_expr): Change prototype accordingly.
12795         * tree-vect-stmts.c (vectorizable_condition): Change call of
12796         expand_vec_cond_expr_p to pass only type.
12797         * expr.c (do_store_flags): Change prototype and implementation
12798         to take an exploded expression.
12799         (expand_expr_real_1): New local ops initialized with details
12800         of the full expression.  Use it instead of full
12801         expression in calls to do_store_flags, expand_vec_cond_expr,
12802         expand_widen_pattern_expr and expand_vec_shift_expr.
12803
12804 2009-08-25  Michael Matz  <matz@suse.de>
12805
12806         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
12807         treeop2 initialized with first three operands of the full expression.
12808         Substitute all TREE_OPERAND (exp, [012]) calls with them.
12809
12810 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
12811
12812         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
12813         (__gthread_objc_condition_allocate): Mark arguments as unused.
12814         (__gthread_objc_condition_deallocate): Likewise.
12815         (__gthread_objc_condition_wait): Likewise.
12816         (__gthread_objc_condition_broadcast): Likewise.
12817         (__gthread_objc_condition_signal): Likewise.
12818         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
12819         (__gthread_objc_thread_id): Likewise.
12820
12821 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
12822
12823         PR middle-end/41149
12824         * tree-pretty-print.c (print_call_name): Print the correct call name
12825         for procedure pointer components.
12826
12827 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
12828
12829         * config/ia64/ia64.c (ia64_promote_function_mode): Call
12830         default_promote_function_mode when not VMS.
12831
12832 2009-08-24  Olivier Hainque  <hainque@adacore.com>
12833
12834         * convert.c (convert_to_integer): Don't assume an input pointer is
12835         POINTER_SIZE wide.  Fetch from the type instead.
12836
12837 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12838
12839         * configure.ac (AC_PREREQ): Bump to 2.64.
12840
12841 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
12842
12843         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
12844         (process_command): Don't search standard_exec_prefix_1 and
12845         standard_exec_prefix_2.
12846
12847 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12848
12849         * config/arm/arm.c (output_return_instruction): Handle for
12850         unified syntax.
12851
12852 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12853
12854         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
12855
12856 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12857
12858         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
12859         (*arm_movdf_vfp): Likewise.
12860
12861 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12862
12863         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
12864         (vashr<mode>3): Rename from ashr<mode>3.
12865         (vlshr<mode>3): Rename from lshr<mode>3.
12866
12867 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
12868
12869         PR/40786
12870         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
12871         (check_format_info_main): Use scalar_identify_flag.
12872         (check_format_types): Check for scalar size identity if
12873         scalar_identify_flag is set.
12874         (printf_length_specs): Extend by new field.
12875         (asm_fprintf_length_specs): Likewise.
12876         (gcc_diag_length_specs): Likewise.
12877         (scanf_length_specs): Likewise.
12878         (strfmon_length_specs): Likewise.
12879         (gcc_gfc_length_specs): Likewise.
12880         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
12881         (ms_printf_flag_specs): Likewise.
12882         * c-format.h (format_length_info): Add new member scalar_identity_flag.
12883
12884 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
12885
12886         PR target/40718
12887         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
12888         (*call_value_pop_1): Ditto.
12889         (*sibcall_pop_1): New insn pattern.
12890         (*sibcall_value_pop_1): Ditto.
12891
12892 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12893
12894         PR target/41081
12895         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
12896         ashrsi3_64): New.
12897
12898 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12899
12900         PR target/41081
12901         * fwprop.c (try_fwprop_subst): Allow multiple sets.
12902         (get_reg_use_in): New function.
12903         (forward_propagate_subreg): Propagate through subreg of zero_extend
12904         or sign_extend.
12905
12906 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12907
12908         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
12909         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
12910
12911 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12912
12913         * configure.ac: Remove --with-datarootdir, --with-docdir,
12914         --with-htmldir switches.  No need to call AC_SUBST for
12915         datarootdir, docdir, htmldir any more.
12916         * configure: Regenerate.
12917         * doc/install.texi (Configuration): Document --datarootdir,
12918         --docdir, --htmldir, --pdfdir; update documentation for
12919         --infodir, --mandir.
12920         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
12921         M4 to 1.4.6.
12922
12923         * aclocal.m4: Regenerate.
12924         * config.in: Regenerate.
12925         * configure: Regenerate.
12926
12927 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
12928             Olivier Hainque  <hainque@adacore.com>
12929
12930         * config/ia64/ia64.c: Include libfuncs.h.
12931         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
12932         (ia64_expand_call): Use reg 25 on VMS.
12933         (ia64_initialize_trampoline): Fix for VMS ABI.
12934         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
12935         (ia64_function_arg): Initialize reg 25 on VMS.
12936         Fix OpenVMS ABI issues for varargs.
12937         For OpenVMS, emit the Argument Information register set in the
12938         incoming/sibcall case as well.
12939         (ia64_arg_type): New function.
12940         (ia64_function_arg_advance): Keep track of cum->words.
12941         Fix OpenVMS ABI issues for varargs.
12942         (ia64_function_value): On VMS, promote mode of non-aggregate types.
12943         (ia64_override_options): Set flag_no_common on VMS.
12944         (ia64_init_builtins): Disable FWRITE builtin.
12945         (ia64_asm_output_external): Call DO_CRTL_NAMES.
12946         (ia64_vms_init_libfuncs): Add decc$ routines.
12947         (ia64_vms_valid_pointer_mode): New function.
12948         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
12949         (ia64_promote_function_mode): New function
12950         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
12951         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
12952         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12953         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
12954         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
12955         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
12956         Suppress trailing '#' if VALUE is numeric.
12957         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
12958         ia64_promote_function_mode.
12959         (TARGET_VALID_POINTER_MODE): Define.
12960
12961 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12962
12963         PR target/40671
12964         * config/rs6000/rs6000.c (rs6000_override_options): Use
12965         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
12966
12967         PR target/41145
12968         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
12969         reporting of vector + decimal/boolean/complex error.
12970
12971 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
12972
12973         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
12974         __vector double TYPE_DECL.
12975
12976 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
12977
12978         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
12979         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
12980         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
12981         to pointer to enum machine_mode.  Update all callers as needed.
12982
12983 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
12984
12985         * config/alpha/alpha.md (exception_receiver): Emit alternative
12986         GP load sequence if flag_reorder_blocks_and_partition is set.
12987         (*exception_receiver_2): Also enable when
12988         flag_reorder_blocks_and_partition is set.
12989
12990 2009-08-20  Matt Rice  <ratmice@gmail.com>
12991             Diego Novillo  <dnovillo@google.com>
12992
12993         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
12994         tree-ssa-sccvn.h.
12995
12996 2009-08-20  Richard Guenther  <rguenther@suse.de>
12997
12998         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
12999         * c-tree.h (c_dup_lang_specific_decl): Remove.
13000         (struct lang_decl, struct lang_type): Move definitions ...
13001         * c-lang.h: ... here.  New file.
13002         * c-decl.c: Include c-lang.h.
13003         (c_dup_lang_specific_decl): Remove.
13004         * c-typeck.c: Include c-lang.h.
13005         * Makefile.in (c-decl.o): Add c-lang.h dependency.
13006         (c-typeck.o): Likewise.
13007         * c-config-lang.in (gtfiles): Add c-lang.h.
13008         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
13009         like c-tree.h.
13010
13011 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
13012
13013         * config/alpha/alpha.c (alpha_end_function): Do not clear
13014         crtl->emit structure and free insn locators if cfun->is_thunk is true,
13015         this is now handled in generic code.
13016
13017 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
13018
13019         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
13020         (s390_z10_fix_long_loop_prediction): New function.
13021         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
13022         (s390_reorg): Walk over the INSNs and invoke
13023         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
13024
13025 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
13026
13027         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
13028         "*brx_64bit", "*brx_31bit"): New patterns.
13029         * config/s390/s390.c ('E'): New output modifier.
13030
13031 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13032             Richard Earnshaw  <richard.earnshaw@arm.com>
13033
13034         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
13035         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
13036
13037 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13038
13039         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
13040         patterns.
13041         * pa.c (emit_move_sequence): Check if address of operand1 is valid
13042         for mode mode of operand0 when doing secondary reload for SAR.
13043
13044 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
13045
13046         PR middle-end/41123
13047         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
13048         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
13049
13050 2009-08-19  Jason Merrill  <jason@redhat.com>
13051
13052         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
13053         supported template depth in C++0x.
13054
13055 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
13056
13057         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
13058         free_after_compilation.
13059         * config/score/score7.c (score7_output_mi_thunk): Likewise.
13060         * config/score/score3.c (score3_output_mi_thunk): Likewise.
13061         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
13062         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
13063         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
13064         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
13065         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
13066
13067 2009-08-19  Ian Lance Taylor  <iant@google.com>
13068
13069         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
13070         of (plus (mult (neg B) C) A).
13071
13072 2009-08-18  Michael Matz  <matz@suse.de>
13073
13074         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
13075         instead of comparing TYPE_MAIN_VARIANT for equality.
13076         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
13077         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
13078         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
13079         * gimplify.c (goa_lhs_expr_p): Ditto and use
13080         STRIP_USELESS_TYPE_CONVERSION.
13081
13082 2009-08-18  Michael Matz  <matz@suse.de>
13083
13084         * tree-ssa-structalias.c (create_variable_info_for): Also mark
13085         first field in a struct.
13086         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
13087
13088 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
13089
13090         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
13091         locators before emit_insn is called.  Remove assert that
13092         cfun->is_thunk.
13093         (alpha_end_function): Clear crtl->emit structure and free insn
13094         locators if cfun->is_thunk is true.
13095
13096 2009-08-18  Jason Merrill  <jason@redhat.com>
13097
13098         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
13099         type if available.
13100         * configure.ac: Test for it.
13101         * configure, config.in: Regenerate.
13102         * doc/install.texi: Document --enable-gnu-unique-object.
13103
13104 2009-08-18  Richard Guenther  <rguenther@suse.de>
13105
13106         PR middle-end/41094
13107         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
13108         pow(x,y*z) only if x is nonnegative.
13109
13110 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
13111
13112         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
13113         on jumps.
13114
13115         PR target/40971
13116         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
13117         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
13118
13119 2009-08-17  DJ Delorie  <dj@redhat.com>
13120
13121         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
13122         * config/m32c/prologue.md (epilogue_freit): New.
13123         (fset_b): New.
13124         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
13125         (bank_switch_p): Likewise.
13126         (fast_interrupt_p): Likewise.
13127         (interrupt_p): Likewise.
13128         (m32c_conditional_register_usage): Round memregs size up.
13129         (need_to_save): We only need to save $a0 when we use ENTER.
13130         (interrupt_p): Check for fast_interrupt too.
13131         (bank_switch_p): New.
13132         (fast_interrupt_p): New.
13133         (m32c_attribute_table): Add bank_switch and fast_interrupt.
13134         (m32c_emit_prolog): Support bank switching and fast interrupts.
13135         * doc/extend.texi (Function Attributes): Add bank_switch and
13136         fast_interrupt.
13137
13138 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
13139
13140         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
13141         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
13142
13143 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
13144
13145         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
13146         (menu): Add IA-64/VMS Options.
13147         (IA-64/VMS Options): Likewise.
13148
13149 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
13150
13151         PR target/38599
13152         * config/mips/mips.md (*lwxs): Use :P for pointer values.
13153
13154 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
13155
13156         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
13157         (mips_pop_asm_switch): Likewise.
13158         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
13159         with...
13160         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
13161         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
13162         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
13163         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
13164         instead of set_noreorder.
13165         (mips_output_function_prologue): Use the new functions.
13166         (mips_output_function_epilogue): Likewise.
13167         (mips_need_noat_wrapper_p): New function, split out from...
13168         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
13169         Use mips_push_asm_switch and mips_pop_asm_switch.
13170         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
13171         and mips_pop_asm_switch.
13172         (ASM_OUTPUT_REG_POP): Likewise.
13173         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
13174         Use mips_pop_asm_switch.
13175         (mips_asm_switch): New structure.
13176         (set_noreorder, set_nomacro): Replace with...
13177         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
13178         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
13179         instead of set_nomacro.
13180         (fix_truncsfsi2_macro): Likewise.
13181         (cprestore): Likewise.
13182         (hazard): Use mips_noreorder instead of set_noreorder.
13183         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
13184
13185 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
13186
13187         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
13188         from prev_active_insn.
13189
13190 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
13191
13192         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
13193         * config/avr/avr.c (avr_override_options): Initialize
13194         avr_current_arch variable.
13195         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
13196         __AVR_HAVE_16BIT_SP__ according to the device type.
13197         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
13198         TARGET_TINY_STACK.
13199         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
13200         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
13201
13202 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
13203
13204         PR debug/37801
13205         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
13206         generating inlined subroutine die only. We shouldn't be
13207         called for anything else.
13208         (gen_block_die): Don't generate inline subroutine debug info for
13209         abstract blocks.
13210
13211 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
13212
13213         * graphite-poly.c (print_pbb): Print PBB index.
13214
13215 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
13216
13217         PR middle-end/40981
13218         * graphite-interchange.c (ppl_max_for_le): Moved...
13219         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
13220         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
13221         ppl_Pointset_Powerset_C_Polyhedron_maximize.
13222         * graphite-ppl.h (ppl_max_for_le): Declared.
13223
13224 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
13225
13226         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
13227         supported on all platforms.
13228         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
13229         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
13230         * c-pragma.c: Likewise.
13231         * target-def.h (TARGET_INITIALIZER): Remove
13232         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
13233         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
13234
13235 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
13236
13237         * config/ia64/fde-vms.c: New file.
13238         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
13239         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
13240         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
13241         (uw_frame_state_for): Only register a personality routine if it is
13242         known to be compatible with our expectations.
13243         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
13244         Declare unw_table_entry stack variable and
13245         mod all calls to _Unwind_FindTableEntry to add arg.
13246         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
13247         (_Unwind_FindTableEntry): Add arg to prototype.
13248
13249 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
13250
13251         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
13252         field 'signal_pfs_loc'.
13253         (uw_frame_state_for): Remove duplicate code dealing with leaf
13254         procedures without unwind info.
13255         If in the frame after unwinding through a signal handler, restore
13256         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
13257         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
13258         'pfs_loc' to the AR.PFS location in the signal context; instead
13259         set 'signal_pfs_loc'.
13260         Manually generate the unwind info for the AR.PFS register.
13261         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
13262         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
13263         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
13264         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
13265         instead set 'signal_pfs_loc'.
13266         Remove code preventing the AR.PFS register from being restored
13267         from the signal context.
13268
13269 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
13270             Tristan Gingold  <gingold@adacore.com>
13271
13272         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
13273         * config/ia64/t-vms: New file.
13274         * config/ia64/vms64.h: New file.
13275         * config/ia64/vms.h: New file.
13276         * config/ia64/vms-crtinit.asm: New file.
13277         * config/ia64/vms_symvec_libgcc_s.opt: New file.
13278         * config/ia64/vms-unwind.h: New file.
13279
13280 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
13281
13282         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
13283         TFmode compares.
13284
13285 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13286
13287         PR middle-end/30789
13288         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
13289         Move declaration...
13290         * real.h (do_mpc_arg2): ... here.
13291         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
13292         and RDIV_EXPR.
13293
13294 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
13295
13296         * final.c (add_debug_prefix_map): Don't use GC memory for
13297         old_prefix and new_prefix.
13298
13299 2009-08-14  Richard Guenther  <rguenther@suse.de>
13300
13301         * ipa-prop.c (compute_complex_pass_through): If we cannot
13302         compute a non-varying offset for IPA_JF_ANCESTOR punt.
13303
13304 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13305
13306         * c-lex.c (c_lex_with_flags): Increase size of local variable
13307         to avoid memory clobber.
13308
13309 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
13310
13311         PR target/40934
13312         * config/i386/i386.c (ix86_fp_comparison_strategy):
13313         Only enable/disable sahf at function granularity.
13314
13315 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
13316
13317         PR rtl-optimization/41064
13318         * reload1.c (reload_as_needed): Don't call extract_insn
13319         for known invalid replacements after calling
13320         validate_replace_rtx_group and verify_changes.
13321
13322 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
13323
13324         PR target/41019
13325         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
13326         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
13327         ix86_expand_fp_vcond.
13328         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
13329         Assert that operation is supported by ix86_expand_int_vcond.
13330         (vcondu<SSEMODE124C8:mode>): Ditto.
13331
13332 2009-08-13  DJ Delorie  <dj@redhat.com>
13333
13334         * config/i386/djgpp-stdint.h: New.
13335         * config.gcc (djgpp): Use it.
13336
13337 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
13338
13339         * config/sh/sh.c (sh_override_options): When flag_exceptions or
13340         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
13341
13342 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
13343
13344         * tree-ssa-loop-prefetch.c
13345         (prune_ref_by_group_reuse): Enhance probabilistic analysis
13346         for long-stride pruning.
13347         (compute_miss_rate): New function to compute the probability
13348         that two memory references access different cache lines.
13349
13350 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
13351
13352         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
13353
13354 2009-08-13  Richard Guenther  <rguenther@suse.de>
13355
13356         PR middle-end/41047
13357         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
13358         use the constant pointer type.
13359         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
13360         of CV qualifiers on the target pointer type.
13361         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
13362         conversion check before restrict check.
13363
13364 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13365
13366         PR target/41029
13367         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
13368
13369 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
13370
13371         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
13372
13373 2009-08-12  Richard Guenther  <rguenther@suse.de>
13374
13375         PR tree-optimization/41011
13376         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
13377         and reference constructing.
13378
13379 2009-08-12  Xinliang David Li  <davidxl@google.com>
13380
13381         PR tree-optimization/41012
13382         * tree-flow.h : New external interface.
13383         * gimple-low.c (check_call_arg): Change to public function.
13384         Remove argument mismatch check in lowering.
13385         * tree-inline.h (tree_can_inline_p): Interface change.
13386         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
13387         into this function.
13388         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
13389         Call change to tree_can_inline_p function.
13390         (cgraph_decide_inlining_incrementally): Ditto.
13391
13392 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
13393
13394         PR tree-optimization/41031
13395         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
13396         on the partition variable rather than promote_mode on the source
13397         type.  Assert that the partition variable's type has the same
13398         mode as the source value's.
13399
13400 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
13401
13402         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
13403         for for_return == 2.
13404         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
13405         comments.
13406         * calls.c (expand_call): Fix typo.
13407         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
13408         and PARM_DECL.
13409         * stmt.c (expand_value_return): Use promote_function_mode to copy out
13410         of pseudo.
13411         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
13412         * config/cris/cris.c (cris_promote_function_mode): Likewise.
13413         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
13414         * config/pa/pa.c (pa_promote_function_mode): Likewise.
13415
13416 2009-08-12  Andrew Haley  <aph@redhat.com>
13417
13418         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
13419
13420 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13421
13422         PR bootstrap/40103
13423         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
13424
13425 2009-08-12  Richard Guenther  <rguenther@suse.de>
13426
13427         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
13428         * gimplify.c (gimplify_modify_expr): Do not use
13429         lang_hooks.types_compatible_p.
13430         * tree-ssa.c (useless_type_conversion_p): For aggregates
13431         just return false if the canonical types differ.
13432
13433 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13434
13435         PR middle-end/40980
13436         * sese.c (convert_for_phi_arg): New.
13437         (add_guard_exit_phis): Use convert_for_phi_arg.
13438
13439 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13440
13441         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
13442         unknown subscript upper bounds.
13443
13444 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13445             Pranav Garg  <pranav.garg2107@gmail.com>
13446
13447         * graphite-interchange.c (gather_access_strides): Removed.
13448         (ppl_max_for_le): New.
13449         (build_linearized_memory_access): New.
13450         (memory_stride_in_loop): New.
13451         (pbb_interchange_profitable_p): Reimplemented.
13452         * graphite-ppl.h (ppl_new_id_map): New.
13453         (ppl_interchange): New.
13454
13455 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13456
13457         * graphite-interchange.c (compute_subscript): Removed.
13458         (compute_array_size_cstr): Removed.
13459         (compute_array_size_poly): Removed.
13460         (compute_array_size): Removed.
13461         (gather_access_strides_poly): Removed.
13462         (gather_access_strides): Empty.
13463
13464 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13465
13466         * graphite-dependences.c (dependence_polyhedron_1): Replace
13467         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
13468         (graphite_legal_transform_dr): Same.
13469         (graphite_carried_dependence_level_k): Same.
13470         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
13471         Initialize PDR_NB_SUBSCRIPTS.
13472         (print_pdr_access_layout): Replace pdr_nb_subscripts with
13473         PDR_NB_SUBSCRIPTS.
13474         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
13475         (PDR_NB_SUBSCRIPTS): New.
13476         (pdr_nb_subscripts): Removed.
13477         (pdr_dim): Simplified.
13478         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
13479         with PDR_NB_SUBSCRIPTS.
13480
13481 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13482
13483         * graphite-interchange.c (compute_array_size): Remove use of
13484         PDR_DATA_CONTAINER.
13485         * graphite-poly.c (new_poly_dr): Remove argument data_container.
13486         Do not initialize PDR_DATA_CONTAINER.
13487         (print_pdr): Do not print PDR_DATA_CONTAINER.
13488         * graphite-poly.h (struct poly_dr): Remove data_container field.
13489         (PDR_DATA_CONTAINER): Removed.
13490         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
13491         PDR_DATA_CONTAINER.
13492         (build_poly_dr): Same.
13493
13494 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
13495             Sebastian Pop  <sebastian.pop@amd.com>
13496
13497         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
13498         copy of the dependence polyhedron.  Free the temporary objects.
13499         (graphite_carried_dependence_level_k): Free unused objects before
13500         returning.
13501
13502 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13503
13504         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
13505         Early return without analyzing the data dependences if no
13506         transform has been done.  Call restore_scattering if the transform
13507         is not legal.
13508         (graphite-interchange.c): Same.
13509         * graphite-poly.c (print_scattering_function): Test for
13510         PBB_TRANSFORMED.
13511         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
13512         (apply_poly_transforms): Do not gcc_assert that
13513         the transform is legal.
13514         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
13515         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
13516         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
13517         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
13518         * graphite-poly.h (struct poly_scattering): New.
13519         (struct poly_bb): Add original, transformed, and saved fields.
13520         Remove transformed_scattering, original_scattering,
13521         nb_local_variables and nb_scattering_transform fields.
13522         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
13523         (poly_scattering_new): New.
13524         (poly_scattering_free): New.
13525         (poly_scattering_copy): New.
13526         (store_scattering_pbb): New.
13527         (store_scattering): New.
13528         (restore_scattering_pbb): New.
13529         (restore_scattering): New.
13530         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
13531         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
13532
13533 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13534
13535         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
13536         (print_scop): Same.
13537
13538 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13539
13540         * Makefile.in (graphite.o): Depends on PREDICT_H.
13541         * graphite.c: Include predict.h.
13542         (graphite_finalize): Call tree_estimate_probability.
13543         * predict.c (predict_loops): Do not call scev_initialize and
13544         scev_finalize.
13545         (tree_estimate_probability_bb): New.
13546         (tree_estimate_probability): Do not initialize loops: move that
13547         code to the driver.  Call tree_estimate_probability_bb.
13548         (tree_estimate_probability_driver): New.
13549         (pass_profile): Use tree_estimate_probability_driver.
13550         * predict.h (tree_estimate_probability): Declared.
13551
13552 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
13553
13554         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
13555         * graphite-dependences.c (graphite_legal_transform): Add time to
13556         TV_GRAPHITE_DATA_DEPS.
13557         (dependency_between_pbbs_p): Same.
13558         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
13559
13560 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
13561
13562         PR rtl-optimization/41033
13563         * alias.c (nonoverlapping_component_refs_p): Punt when strict
13564         aliasing is disabled.
13565
13566 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13567
13568         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
13569         si_mask_operand, and_load_operand, low_bitmask_operand,
13570         and_reg_operand, and_operand): New predicates.
13571         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
13572         * config/mips/mips.c (and_operands_ok): New function.
13573         * config/mips/mips-protos.h (and_operands_ok): Declare it.
13574         * config/mips/mips.md (move_type): Add ext_ins and logical.
13575         (type): Handle them.
13576         (and<mode>3): Use and_reg_operand as the second operand's predicate.
13577         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
13578         shift_shift.  Remove commutative constraint modifier.
13579         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
13580         shift_shift.
13581         (*clear_upper32_dext): Remove define_insn_and_split.
13582         (*clear_upper32): Turn this define_insn_and_split ...
13583         (splitter for ANDing register with 0xffff_ffff): .. into this.
13584
13585 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
13586
13587         * combine.c (try_widen_shift_mode): Factor out code to check if an
13588         integer constant is a low-order bitmask from here ...
13589         * rtlanal.c (low_bitmask_len): ... to here.
13590         * rtl.h (low_bitmask_len): Declare.
13591
13592 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
13593
13594         PR target/8603
13595         * config/alpha/alpha.md (addsi3): Remove expander.
13596         (addsi3): Rename from *addsi3_internal insn pattern.
13597         (subsi3): Remove expander.
13598         (subsi3): Rename from *subsi3_internal insn pattern.
13599
13600 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
13601
13602         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
13603         FWRITE_UNLOCKED.
13604
13605 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
13606             Eric Botcazou  <botcazou@adacore.com>
13607             Douglas B Rupp  <rupp@gnat.com>
13608
13609         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
13610         that records that fit in 64 bits are returned by immediate value,
13611         as required by OpenVMS Calling Standard.
13612         (function_value): Adjust for above modification.
13613         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
13614         virtual_incoming_args_rtx as base object, not next_arg.
13615         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
13616
13617 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13618
13619         * reload.c (find_reloads_subreg_address): Check the original
13620         req_equiv_mem address to detect the case where an address is
13621         not valid in the outer mode.
13622
13623 2009-08-11  Richard Guenther  <rguenther@suse.de>
13624
13625         PR bootstrap/40788
13626         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
13627
13628 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
13629
13630         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
13631         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
13632
13633 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
13634             Douglas B Rupp  <rupp@gnat.com>
13635
13636         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
13637         PT_STACK when frame_pointer_needed on OpenVMS.
13638         (alpha_pv_save_size, alpha_using_fp): Remove.
13639         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
13640         with proper processing for PT_NULL.
13641         (alpha_vms_initial_elimination_offset): New function. Support for
13642         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
13643         (alpha_sa_size): Force procedure type to PT_STACK when
13644         frame_pointer_needed on OpenVMS.
13645         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
13646         (alpha_using_fp): Likewise.
13647         (alpha_vms_can_eliminate): Add prototype.
13648         (alpha_vms_initial_elimination_offset): Likewise.
13649         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
13650         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
13651
13652 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
13653             Douglas B Rupp  <rupp@gnat.com>
13654
13655         * config/alpha/alpha.c (common_object_handler): New function.
13656         (vms_attribute_table): Declare a single attribute "common_object".
13657         (vms_output_aligned_decl_common): New global function.
13658         (SECTION_VMS_OVERLAY): Delete.
13659         (SECTION_VMS_GLOBAL): Likewise.
13660         (SECTION_VMS_INITIALIZE): Likewise.
13661         (vms_asm_named_section): Remove support for above flags.
13662         (vms_section_type_flags): Delete.
13663         (TARGET_SECTION_TYPE_FLAGS): Likewise.
13664         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
13665         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
13666         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
13667
13668 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13669
13670         PR target/41015
13671         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
13672         (sub_ddmmss): Likewise.
13673
13674 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
13675
13676         PR bootstrap/41018
13677         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
13678         year.
13679
13680 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13681
13682         PR target/37053
13683         * reload1.c (reload_as_needed): Use cancel_changes to completely
13684         undo a failed replacement attempt.
13685
13686 2009-08-10  Richard Guenther  <rguenther@suse.de>
13687
13688         PR middle-end/41006
13689         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
13690         (useless_type_conversion_p): ... here.  Require pointer targets
13691         to be compatible.
13692
13693 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
13694
13695         PR c++/40866
13696         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
13697         loose the original type of the statement list.
13698
13699 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13700
13701         * config/alpha/alpha.c: Include libfuncs.h
13702         (avms_asm_output_extern): New function.
13703         (alpha_init_libfuncs): Init some decc libfuncs.
13704         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
13705         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
13706         (DO_CRTL_NAMES): Define.
13707         (LIB_SPEC): Remove.
13708         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
13709         (LONG_TYPE_SIZE): Define.
13710         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
13711         (SUBTARGET_SWITCHES): Define malloc64 switch.
13712         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
13713         (MASK_RETURN_ADDR): Define.
13714         doc/invoke.texi (mmalloc64): Document switch.
13715
13716 2009-08-09  Olivier Hainque  <hainque@adacore.com>
13717             Douglas B Rupp  <rupp@gnat.com>
13718
13719         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
13720         uses_condition_handler.
13721         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
13722         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
13723         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
13724         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
13725         (code_for_builtin): New insn codes for the new alpha_builtins.
13726         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
13727         (alpha_sa_size): Account for uses_condition_handler.
13728         (alpha_expand_prologue): Likewise.
13729         (alpha_start_function): Likewise.
13730         (alpha_expand_epilogue): Likewise.
13731         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
13732         establish/revert expanders.
13733         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
13734         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
13735         New expander, resorting to the alpha.c associated function.
13736         (builtin_revert_vms_condition_handler): Likewise.
13737         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
13738         __gcc_shell_handler, the static VMS condition handler used as
13739         an indirection wrapper to the current dynamically established
13740         handler.
13741         * config/alpha/vms-unwind.h: Complete rewrite.
13742         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
13743         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
13744
13745 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
13746             Douglas B Rupp  <rupp@gnat.com>
13747
13748         * config/alpha/alpha.c (alpha_links): Add 'target' field.
13749         (alpha_need_linkage): Handle aliases.  Return function symbol.
13750         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
13751         Use ultimate alias target for the linkage name.
13752         * config/alpha/alpha.md (movmemdi): Use the symbol returned
13753         by alpha_need_linkage for the function symbol.
13754         (setmemdi): Likewise.
13755
13756 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13757
13758         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
13759         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
13760         (ASM_WEAKEN_LABEL): Define.
13761         (CRT_CALL_STATIC_FUNCTION): Define.
13762         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
13763         (ENDFILE_SPEC): Define.
13764         (INIT_SECTION_ASM_OP): Define.
13765         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
13766         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
13767         crtend.o crtendS.o.
13768         (MULTILIB_OSDIRNAMES): Define.
13769         (shlib_version): Define.
13770         (SHLIB_EXT): Define.
13771         (SHLIB_OBJS): Define.
13772         (SHLIB_NAME): Define.
13773         (SHLIB_MULTILIB): Define.
13774         (SHLIB_INSTALL): Define.
13775         (SHLIB_SYMVEC): Define.
13776         (SHLIB_SYMVECX2): Define.
13777         (SHLIB_LINK): Define.
13778
13779 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13780
13781         * config/alpha/alpha.c (alpha_initialize_trampoline):
13782         Initialize VMS trampoline IAW ABI for bounded procedure calls.
13783         (alpha_start_function): Emit transfer address on nested functions
13784         for VMS trampoline call.
13785         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
13786         since no longer used.
13787         * config/alpha/vms-tramp.asm: Remove.
13788         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
13789         since now only data initialized at runtime.
13790
13791 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13792
13793         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
13794         (LINK_GCC_C_SEQUENCE_SPEC): Define.
13795         (MD_EXEC_PREFIX): Remove, no longer used.
13796         (MD_STARTFILE_PREFIX): Likewise.
13797         (INCLUDE_DEFAULTS): Likewise.
13798         * config/alpha/t-vms:
13799         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
13800
13801 2009-08-09  Richard Guenther  <rguenther@suse.de>
13802
13803         PR tree-optimization/41016
13804         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
13805         (operand_precision): Remove.
13806         (integral_operand_p): Likewise.
13807         (recognize_single_bit_test): Adjust.
13808
13809 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13810
13811         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
13812         operation overflows.  Likewise non-cast unary arithmetic.
13813         If one arm of a conditional expression is always taken,
13814         inhibit evaluation warnings for the other arm.  Likewise inhibit
13815         evaluation warnings for the second && or || operand if the first
13816         operand is enough to determine the result.
13817         * c-typeck.c (build_conditional_expr): Apply the same inhibition
13818         rules here.
13819         (build_binary_op): Prevent duplicate evaluation warnings.
13820
13821 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
13822
13823         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
13824         and destination have different modes, Use promote_mode to
13825         determine the signedness of the conversion.  Assert that the
13826         promoted source mode matches the destination mode.  Don't pass
13827         the destination and destination mode to expand_expr if the source
13828         mode is different.  Simplify conversion logic.
13829
13830 2009-08-09  Ira Rosen  <irar@il.ibm.com>
13831
13832         PR tree-optimization/41008
13833         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
13834         from condition only in case it's a comparison. Adjust checks.
13835
13836 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
13837
13838         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
13839         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
13840         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
13841         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
13842         (dump_cand): Handle them.
13843         (struct iv_cand): New members COST_STEP and AINC_USE.
13844         (stmt_after_increment): Likewise.
13845         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
13846         callers changed.  Use gimple_uid comparison instead of scanning.
13847         (add_candidate_1): When looking for identical candidates, take
13848         AINC_USE into account.  Set it for new candidates.
13849         (force_expr_to_var_cost): Cast target_spill_cost to int.
13850         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
13851         All callers changed.  Check for availability of autoinc addressing
13852         modes, both in general for a given mode, and in the specific use case.
13853         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
13854         changed.
13855         (get_computation_cost): Likewise.
13856         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
13857         add_autoinc_candidates): New static functions.
13858         (add_candidate): Call add_autoinc_candidates for candidates based on
13859         a USE_ADDRESS use.
13860         (find_iv_candidates): Call set_autoinc_for_original_candidates.
13861         (determine_use_iv_cost_address): If we have an autoinc candidate at
13862         the matching use, verify autoinc is possible and subtract the cost
13863         of the candidate's step from the cost.
13864         (determine_iv_cost): Record the cost of the increment in the COST_STEP
13865         member of the candidate.
13866         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
13867         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
13868
13869 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13870
13871         * config.build (ia64-hp-*vms*): New target.
13872         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13873         with ia64-hp-*vms*.
13874         * config.gcc (ia64-hp-*vms*): New target.
13875         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13876         with ia64-hp-*vms*.
13877         * config.host (ia64-hp-*vms*): New target.
13878         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13879         with ia64-hp-*vms*.
13880
13881 2009-08-08  Richard Guenther  <rguenther@suse.de>
13882
13883         PR tree-optimization/40991
13884         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
13885
13886 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
13887
13888         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
13889         mode check.  Do truncations in an integer mode.
13890         (force_to_mode): Handle subregs for all mode types.  Only do
13891         arithmetic simplifications on integer modes.
13892
13893 2009-08-07  Richard Guenther  <rguenther@suse.de>
13894
13895         PR tree-optimization/40999
13896         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
13897         (maybe_fold_reference): Lookup constant initializers.
13898         (fold_gimple_assign): Likewise.
13899
13900 2009-08-07  Richard Guenther  <rguenther@suse.de>
13901
13902         * tree-ssa.c (useless_type_conversion_p_1): Only for types
13903         that require structural equality defer to the langhook.
13904
13905 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13906
13907         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
13908         comments.
13909         (struct ipa_pass_through_data): New type.
13910         (struct ipa_ancestor_jf_data): New type.
13911         (union jump_func_value): Removed field formal_id, added fields
13912         pass_through and ancestor.
13913         (struct ipa_param_call_note): Changed type of formal_id to int from
13914         unsigned.
13915         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
13916         operations jump functions and ancestor jump functions.
13917         (compute_complex_pass_through): New function.
13918         (compute_scalar_jump_functions): Call compute_complex_pass_through,
13919         reflect changes in the jump function strucutre.
13920         (update_jump_functions_after_inlining): Ignore complex pass-through
13921         and ancestor jump functions.
13922         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
13923         polynomial pass-through with operation jump functions.
13924
13925 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
13926
13927         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
13928         fde->dw_fde_begin as begin label instead of hot/cold label.
13929         Use LLSDAC label instead of LLSDA for second section lsda.
13930         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
13931         label instead of LLSDA if it is true.
13932         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
13933         callers.
13934         * except.c (add_call_site, dw2_size_of_call_site_table): Add
13935         SECTION argument.  Use it as index into crtl->eh.call_site_record
13936         array.
13937         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
13938         use it to determine how to print table entries instead of using
13939         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
13940         label instead of normal begin label as base.
13941         (sjlj_assign_call_site_values): Adjust add_call_site caller.
13942         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
13943         ensure no EH range spans between sections and that landing pads
13944         are always in the corresponding section.
13945         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
13946         for crtl->eh.call_site_record being an array rather than scalar.
13947         (output_one_function_exception_table): New function, copied
13948         from output_function_exception_table.  Adjust
13949         dw2_size_of_call_site_table, dw2_output_call_site_table
13950         callers.  For SECOND section use *C suffixed labels.
13951         (output_function_exception_table): Call
13952         output_one_function_exception_table and, when doing hot/cold
13953         partitioning, also another time for the second section.
13954         * opts.c: Include except.h.
13955         (decode_options): Allow -freorder-blocks-and-partition with
13956         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
13957         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
13958         * function.h (struct rtl_eh): Change call_site_record from
13959         scalar into array of 2 elements.
13960
13961 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13962
13963         * ipa-prop.c (count_formal_params_1): New function.
13964         (ipa_get_vector_of_formal_parms): New function.
13965         (get_vector_of_formal_parm_types): New function.
13966         (ipa_modify_formal_parameters): New function.
13967         (ipa_modify_call_arguments): New function.
13968         (index_in_adjustments_multiple_times_p): New function.
13969         (ipa_combine_adjustments): New function.
13970         (ipa_dump_param_adjustments): New function.
13971         * ipa-prop.h (struct ipa_parm_adjustment): New type.
13972         (ipa_get_vector_of_formal_parms): Declare.
13973         (ipa_modify_formal_parameters): Declare.
13974         (ipa_modify_call_arguments): Declare.
13975         (ipa_combine_adjustments): Declare.
13976         (ipa_dump_param_adjustments): Declare.
13977         (build_ref_for_offset): Declare.
13978         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
13979         * tree-sra.c: Include ipa-prop.c.
13980         (build_ref_for_offset): Make public.
13981
13982 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
13983
13984         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
13985
13986 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
13987
13988         * gcc/doc/extend.texi (__builtin_extract_return_address)
13989         (__builtin_frob_return_address): Document.
13990
13991 2009-08-06  Paul Brook  <paul@codesourcery.com>
13992
13993         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
13994         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
13995         implementation on ARMv6-M.
13996
13997 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13998
13999         * doc/extend.texi (pcs): Document new attribute for ARM.
14000
14001 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
14002
14003         * arm.c (pcs_attribute_args): Comment out unsupported attribute
14004         variants.
14005
14006 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
14007
14008         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
14009         warning ().
14010
14011 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
14012
14013         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
14014
14015 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
14016
14017         Merge ARM/hard_vfp_branch to trunk.
14018
14019         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
14020
14021         * arm.c (libcall_eq): New function.
14022         (libcall_hash): New function.
14023         (add_libcall): New function.
14024         (arm_libcall_uses_aapcs_base): New function.
14025         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
14026         libcalls using the base PCS.
14027         (arm_init_cumulative_args): Likewise.
14028
14029         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
14030
14031         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
14032         Use base ABI for conversion libfuncs between HFmode and SFmode.
14033
14034         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
14035
14036         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
14037         V4SImode as representatives of all 64-bit and 128-bit vector
14038         types.  Allow vector types without vector modes.
14039         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
14040         without vector modes like BLKmode.
14041         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
14042         BLKmode.  Avoid unsupported vector modes or TImode moves for
14043         non-TARGET_NEON.
14044         (aapcs_vfp_allocate_return_reg): Likewise.
14045         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
14046         V8QImode if TARGET_NEON || TARGET_IWMMXT.
14047
14048         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
14049
14050         * config/arm/arm.c (arm_handle_pcs_attribute): New.
14051         (arm_get_pcs_model): Pass attribute arguments to
14052         arm_pcs_from_attribute.
14053         (arm_init_cumulative_args): Use base AAPCS for conversions from
14054         floating-point types to DImode.
14055         (arm_attribute_table): Add pcs attribute.
14056         (arm_handle_pcs_attribute): New.
14057         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
14058         conversions from floating-point types to DImode, also declare them
14059         to use base AAPCS and declare functions they call to use base
14060         AAPCS and their RTABI names.
14061
14062         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
14063
14064         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
14065         -mfloat-abi=hard not being supported for VFP.
14066
14067         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
14068
14069         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
14070         SYMBOL_REF to hard_libcall_value.
14071
14072         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
14073             Richard Earnshaw  <rearnsha@arm.com>
14074
14075         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
14076         has been put on the stack, all remaining co-processory arguments for
14077         that co-processor also go on the stack.
14078
14079         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
14080
14081         * config/arm/arm.c (arm_return_in_memory): Handle returning
14082         vectors of suitable size in registers also for AAPCS case.
14083
14084         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
14085
14086         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
14087
14088         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
14089
14090         ARM Hard-VFP calling convention
14091         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
14092         * target.h (gcc_target): Add libcall_value to table of call hooks.
14093         * targhooks.h (default_libcall_value): Default implementation.
14094         * targhooks.c (default_libcall_value): Likewise.
14095         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
14096         * optabs.c (expand_unop): Use it.
14097         * expr.h (hard_libcall_value): Pass the function RTX through.
14098         * calls.c (emit_library_call_value_1): Update call to
14099         hard_libcall_value.
14100         * explow.c (hard_libcall_value): Use new target hook.
14101         * config/arm/arm.c: Include cgraph.h
14102         (TARGET_FUNCTION_VALUE): Override default hook.
14103         (arm_pcs_default): New variable.
14104         (arm_override_options): Don't fault hard calling convention with VFP.
14105         Add support for AAPCS variants.
14106         (arm_function_value): Make static.  Handle AAPCS variants.
14107         (arm_libcall_value): New function.
14108         (arm_apply_result_size): Handle VFP registers in results.
14109         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
14110         conventions.
14111         (pcs_attribute_args): New variable.
14112         (arm_pcs_from_attribute): New function.
14113         (arm_get_pcs_model): New function.
14114         (aapcs_vfp_cum_init): New function.
14115         (aapcs_vfp_sub_candidate): New function.
14116         (aapcs_vfp_is_return_candidate): New function.
14117         (aapcs_vfp_is_call_candidate): New function.
14118         (aapcs_vfp_allocate): New function.
14119         (aapcs_vfp_allocate_return_reg): New function.
14120         (aapcs_vfp_advance): New function.
14121         (aapcs_cp_arg_layout): New variable.
14122         (aapcs_select_call_coproc): New function.
14123         (aapcs_select_return_coproc): New function.
14124         (aapcs_allocate_return_reg): New function.
14125         (aapcs_libcall_value): New function.
14126         (aapcs_layout_arg): New function.
14127         (arm_init_cumulative_args): Initialize AAPCS args data.
14128         (arm_function_arg): Handle AAPCS variants using new interface.
14129         (arm_arg_parital_bytes): Likewise.
14130         (arm_function_arg_advance): New function.
14131         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
14132         calling conventions.
14133         (arm_setup_incoming_varargs): Handle new AAPCS args data.
14134         * arm.h (NUM_VFP_ARG_REGS): Define.
14135         (LIBCALL_VALUE): Update.
14136         (FUNCTION_VALUE): Delete.
14137         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
14138         (arm_pcs): New enum.
14139         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
14140         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
14141         (FUNCTION_ARG_REGNO_P): Add VFP regs.
14142         * arm-protos.h (arm_function_arg_advance): Add.
14143         (aapcs_libcall_value): Add.
14144         (arm_function_value): Delete.
14145
14146 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
14147             H.J. Lu  <hongjiu.lu@intel.com>
14148
14149         PR target/40957
14150         * config/i386/i386.c (standard_sse_mode_p): Remove.
14151         (standard_sse_constant_p): Return 2 for integer mode
14152         vector_all_ones_operand when SSE2 is enabled.
14153         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
14154         (ix86_expand_vector_move): Do not check for negative values from
14155         standard_sse_constant_p.
14156
14157 2009-08-06  Richard Guenther  <rguenther@suse.de>
14158
14159         * tree-ssa.c (useless_type_conversion_p_1): Make function and
14160         array type comparisons frontend independent.
14161         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
14162         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
14163         out array reference lower bound and element size operands.
14164         (ao_ref_init_from_vn_reference): Properly compute the offset
14165         for ARRAY_RANGE_REF.
14166         (vn_reference_fold_indirect): Fill out array reference lower
14167         bound and element size operands.
14168         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
14169         a non gimple valued reference operand which can happen for
14170         array reference lower bound or element size.
14171         (create_component_ref_by_pieces_1): Properly generate the
14172         element size operand for array references.
14173
14174 2009-08-06  Richard Guenther  <rguenther@suse.de>
14175
14176         PR tree-optimization/40964
14177         * tree.c (iterative_hash_host_wide_int): Export.
14178         * tree.h (iterative_hash_host_wide_int): Declare.
14179         * tree-ssa-structalias.c (heapvar_map): New struct.
14180         (heapvar_map_eq): New function.
14181         (heapvar_map_hash): Likewise.
14182         (heapvar_lookup): Adjust.
14183         (heapvar_insert): Likewise.
14184         (make_constraint_from_heapvar): Allow multiple heap variables
14185         per decl at different offsets.
14186         (init_alias_heapvars): Adjust.
14187
14188 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
14189
14190         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
14191         * mips_output_sync_loop (mips_output_sync_loop): Only emit
14192         trailing sync if TARGET_SYNC_AFTER_SC.
14193
14194 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
14195
14196         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
14197         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
14198         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
14199         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
14200         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
14201         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
14202         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
14203         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
14204         test_and_set_12): Rewrite calls to mips_output_sync_loop.
14205         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
14206         the prototype declaration match the definition.
14207         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
14208         instructions explicitly.  Add barrier_before and operands
14209         parameters.
14210         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
14211         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
14212         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
14213         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
14214         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
14215         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
14216
14217 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
14218
14219         * tree-ssa-alias.c: Fix intervals to use [) syntax.
14220
14221 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
14222             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
14223
14224         PR target/40906
14225         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
14226         source operand.
14227
14228 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
14229
14230         PR rtl-optimization/40924
14231         * dse.c (canon_address): Before calling cselib_expand_value_rtx
14232         make sure canon_rtx (mem_address) isn't simpler than
14233         canon_rtx (expanded_mem_address).
14234
14235 2009-08-05  Li Feng  <nemokingdom@gmail.com>
14236
14237         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
14238         for each poly_bb_p.
14239         (build_scop_drs): Build alias set for each SCoP.
14240
14241 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
14242
14243         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
14244         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
14245         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
14246         (MIPS_ARCH_FLOAT_SPEC): Likewise.
14247         (BASE_DRIVER_SELF_SPECS): Likewise.
14248
14249 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
14250
14251         * tree-ssa-alias.c: Fix some comment typos.
14252
14253 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
14254
14255         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
14256         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
14257
14258 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
14259
14260         PR c/39902
14261         * simplify-rtx.c (simplify_binary_operation_1): Disable
14262         simplifications for decimal float operations.
14263
14264 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
14265
14266         PR middle-end/40943
14267         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
14268         operand of INDIRECT_REF.
14269
14270 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
14271
14272         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
14273         constants referencing TLS symbols.
14274
14275 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
14276
14277         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
14278         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
14279
14280 2009-08-03  Richard Guenther  <rguenther@suse.de>
14281
14282         * tree.c (make_vector_type): Build a main variant first,
14283         get the canonical one and then build the variant.
14284         * tree-ssa.c (useless_type_conversion_p_1): Handle
14285         fixed-point types.
14286         (useless_type_conversion_p): Conversions to pointers to
14287         incomplete record types are useless.
14288
14289 2009-08-03  Richard Guenther  <rguenther@suse.de>
14290
14291         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
14292         file will be created.
14293         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
14294         * toplev.c (compile_file): Adjust comment.
14295
14296 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
14297
14298         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
14299         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
14300         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14301         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
14302         (sh_promote_function_mode): Fix typo.
14303
14304 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
14305
14306         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
14307
14308 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14309
14310         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
14311         declaration arguments.
14312
14313 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
14314
14315         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
14316         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
14317         (ix86_split_ashl): Ditto.
14318         (ix86_expand_vector_init_one_nonzero): Ditto.
14319         (ix86_expand_vector_set): Ditto.
14320         (ix86_expand_reduc_v4sf): Ditto.
14321
14322 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
14323
14324         * explow.c (promote_function_mode): Remove assert.
14325         * config/sh/sh.c (sh_promote_function_mode): Declare.
14326
14327 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14328
14329         * config/pa/pa.c (pa_promote_function_mode): Declare.
14330         Change to static.  Fix promote_mode call.
14331
14332         * gthr-dce.h (CONST_CAST2): Define if not defined.
14333         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
14334
14335         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
14336
14337 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
14338
14339         * expr.c (store_constructor): Use promote_decl_mode.  Remove
14340         now write-only variable unsignedp.
14341         (expand_expr_real_1): Use promote_decl_mode.
14342         * expr.h (promote_function_mode, promote_decl_mode): New.
14343         (promote_mode): Remove last argument.
14344         * function.c (assign_temp): Drop last argument of promote_mode.
14345         (assign_parm_find_data_types): Use promote_function_mode.
14346         (assign_parm_setup_reg): Likewise.
14347         (expand_function_end): Use promote_function_mode.
14348         * calls.c (initialize_argument_information): Use promote_function_mode.
14349         (precompute_arguments): Use promote_mode instead of checking if
14350         only PROMOTE_FUNCTION_MODE is defined.
14351         (expand_call): When making sibcall decisions, use promote_function_mode.
14352         Below, remove an if for targetm.calls.promote_function_return and
14353         and use promote_function_mode.
14354         (emit_library_call_value_1): Use promote_function_mode, fix bug
14355         where promote_mode was passed FOR_CALL == 0 for a return value in an
14356         assertion.
14357         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
14358         * explow.c (promote_function_mode, promote_decl_mode): New.
14359         (promote_mode): Keep only the FOR_CALL == 0 case.
14360         * combine.c (setup_incoming_promotion): Remove test of
14361         promote_function_args.  Use promote_function_mode.
14362         * stmt.c (expand_value_return): Use promote_decl_mode.
14363         (expand_decl): Use promote_decl_mode.
14364
14365         * expr.c (store_constructor): Use promote_decl_mode.  Remove
14366         now write-only variable unsignedp.
14367         (expand_expr_real_1): Use promote_decl_mode.
14368         * expr.h (promote_function_mode, promote_decl_mode): New.
14369         (promote_mode): Remove last argument.
14370         * function.c (assign_temp): Drop last argument of promote_mode.
14371         (assign_parm_find_data_types): Use promote_function_mode.
14372         (assign_parm_setup_reg): Likewise.
14373         (expand_function_end): Use promote_function_mode.
14374         * calls.c (initialize_argument_information): Use promote_function_mode.
14375         (precompute_arguments): Use promote_mode instead of checking if
14376         only PROMOTE_FUNCTION_MODE is defined.
14377         (expand_call): When making sibcall decisions, use promote_function_mode.
14378         Below, remove an if for targetm.calls.promote_function_return and
14379         and use promote_function_mode.
14380         (emit_library_call_value_1): Use promote_function_mode, fix bug
14381         where promote_mode was passed FOR_CALL == 0 for a return value in an
14382         assertion.
14383         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
14384         * explow.c (promote_function_mode, promote_decl_mode): New.
14385         (promote_mode): Keep only the FOR_CALL == 0 case.
14386         * combine.c (setup_incoming_promotion): Remove test of
14387         promote_function_args.  Use promote_function_mode.
14388         * stmt.c (expand_value_return): Use promote_decl_mode.
14389         (expand_decl): Use promote_decl_mode.
14390
14391         * explow.c (promote_function_mode): Just call the target hook.
14392         * targhooks.c (default_promote_function_mode,
14393         default_promote_function_mode_always_promote): New.
14394         * targhooks.h (default_promote_function_mode,
14395         default_promote_function_mode_always_promote): Declare.
14396         * target.h (promote_function_args, promote_function_return): Remove.
14397         (promote_function_mode): New.
14398         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
14399         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14400         (TARGET_PROMOTE_FUNCTION_MODE): New.
14401         (TARGET_CALLS): Adjust.
14402         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
14403         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
14404
14405         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
14406         * config/s390/s390.c (s390_promote_function_mode): ... here,
14407         with pointer handling.
14408         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14409         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14410
14411         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
14412         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
14413         with pointer handling.
14414         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14415         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14416
14417         * config/sh/sh-protos.h (sh_promote_function_mode): New.
14418         * config/sh/sh.c (sh_promote_function_mode): New.
14419         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14420         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14421
14422         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
14423         * config/cris/cris.c (cris_promote_function_mode): ... here.
14424         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14425         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
14426
14427         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
14428         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
14429         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14430         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
14431
14432         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
14433         * config/arm/arm.c (arm_promote_function_mode): ... here, without
14434         complex type handling.
14435         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14436         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14437
14438         * config/pa/pa.c (pa_promote_function_mode): New.
14439         (TARGET_PROMOTE_FUNCTION_MODE): Define.
14440         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14441
14442         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
14443         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
14444         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
14445         * config/xtensa/xtensa.c: Likewise.
14446         * config/stormy16/stormy16.c: Likewise.
14447         * config/iq2000/iq2000.c: Likewise.
14448         * config/rs6000/rs6000.c: Likewise.
14449         * config/picochip/picochip.c: Likewise.
14450         * config/arc/arc.c: Likewise.
14451         * config/mcore/mcore.c: Likewise.
14452         * config/score/score.c: Likewise.
14453         * config/mips/mips.c: Likewise.
14454         * config/bfin/bfin.c: Likewise.
14455         * config/ia64/ia64.c: Likewise (disabled though).
14456
14457         * config/frv/frv.h: Remove pointless remark.
14458
14459         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
14460         TARGET_PROMOTE_FUNCTION_ARGS,
14461         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
14462         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
14463
14464 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
14465
14466         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
14467         -floop-parallelize-all.
14468         * toplev.c (process_options): Rename flag_graphite_force_parallel to
14469         flag_loop_parallelize_all.
14470         * tree-ssa-loop.c (gate_graphite_transforms): Same.
14471         * graphite.c (graphite_transform_loops): Same.
14472         * common.opt: Same.
14473         * graphite-poly.c (apply_poly_transforms): Same.
14474
14475 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
14476
14477         PR tree-optimization/40914
14478         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
14479         if set, then check the delta field of the PMF record.
14480         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
14481         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
14482         call is stored in the delta.
14483
14484 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
14485
14486         * config/mips/mips.md (*clear_upper32_dext): New pattern.
14487
14488 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
14489
14490         * config/i386/bsd.h (ASM_BYTE): New define.
14491         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
14492         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
14493         .byte.  Use fputs or putc instead of fprintf where appropriate.
14494         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
14495         fputs or putc instead of fprintf where appropriate.
14496         * config/i386/i386elf.h: Ditto.
14497         * config/i386/sysv4.h: Ditto.
14498
14499         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
14500         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
14501         (*tls_global_dynamic_64): Ditto.
14502
14503 2009-07-31  Christian Bruel  <christian.bruel@st.com>
14504
14505         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
14506
14507 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14508
14509         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
14510         Remove dead code for MINUS.
14511
14512 2009-07-31  Anthony Green  <green@moxielogic.com>
14513
14514         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
14515         $r12 in prologue.
14516         (moxie_expand_epilogue): Ditto for epilogue.
14517         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
14518         incoming arguments.
14519         (moxie_function_arg): Ditto.
14520         (moxie_pass_by_reference): Ditto.
14521         (moxie_arg_partial_bytes): Ditto.
14522         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
14523         (FUNCTION_ARG_ADVANCE) Ditto.
14524         (REG_PARM_STACK_SPACE) Ditto.
14525         (FUNCTION_ARG_REGNO_P) Dito.
14526
14527         * config.gcc: Add moxie linux config support.
14528         * gcc/config/moxie/uclinux.h: New file.
14529
14530 2009-07-31  DJ Delorie  <dj@redhat.com>
14531
14532         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
14533         (UNSPECV_SP_SWITCH_E): New.
14534         (sp_switch_1): Change to an unspec.
14535         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
14536         replace $r15.
14537         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
14538         reference the new stack's address
14539
14540 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14541
14542         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
14543         graphite-clast-to-gimple.o, graphite-dependences.o,
14544         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14545         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
14546         (graphite-blocking.o,
14547         graphite-clast-to-gimple.o, graphite-dependences.o,
14548         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
14549         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
14550         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
14551         * cfgloop.h (struct loop): Add can_be_parallel field.
14552         * common.opt (fgraphite-identity): Moved up.
14553         (fgraphite-force-parallel): New flag.
14554         * graphite.c: Rewrite.
14555         * graphite.h: Rewrite.
14556         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
14557         after Graphite.
14558         * toplev.c (graphite_out_file): New file descriptor.
14559         (graphite_in_file): New.
14560         (process_options): flag_graphite_force_parallel cannot be used without
14561         Graphite.
14562         * tree-ssa-loop.c: Include toplev.h.
14563         (gate_graphite_transforms): Enable flag_graphite for
14564         flag_graphite_force_parallel.
14565
14566 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14567
14568         * ChangeLog.graphite: New.
14569         * graphite-blocking.c: New.
14570         * graphite-clast-to-gimple.c: New.
14571         * graphite-clast-to-gimple.h: New.
14572         * graphite-dependences.c: New.
14573         * graphite-dependences.h: New.
14574         * graphite-interchange.c: New.
14575         * graphite-poly.c: New.
14576         * graphite-poly.h: New.
14577         * graphite-ppl.c: New.
14578         * graphite-ppl.h: New.
14579         * graphite-scop-detection.c: New.
14580         * graphite-scop-detection.h: New.
14581         * graphite-sese-to-poly.c: New.
14582         * graphite-sese-to-poly.h: New.
14583         * sese.c: New.
14584         * sese.h: New.
14585
14586 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14587
14588         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
14589         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
14590
14591 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14592
14593         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
14594         (scev_is_linear_expression): Return false if the evolution is not
14595         affine multivariate.
14596
14597 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14598
14599         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
14600         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
14601
14602 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14603
14604         * tree-data-ref.c (debug_data_references): New.
14605         (debug_data_reference): New.
14606         * tree-data-ref.h (debug_data_references): Declared.
14607         (debug_data_reference): Declared.
14608
14609 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14610
14611         * tree-data-ref.c (stmt_simple_memref_p: Removed.
14612         * tree-data-ref.h (scop_p): Removed.
14613         (struct data_reference): Remove field scop.
14614         (DR_SCOP): Removed.
14615         (stmt_simple_memref_p): Removed.
14616
14617 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14618
14619         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
14620         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
14621         basic block empty.
14622
14623 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14624
14625         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
14626
14627 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14628
14629         * doc/invoke.texi (-fgraphite-identity): Documented.
14630
14631 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14632
14633         * tree-scalar-evolution.c: Fix comment.
14634         (instantiate_scev_1): Return unknow from scev instantiation if the
14635         result is not above instantiate_below.
14636
14637 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
14638
14639         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
14640         static anymore.  Instantiate the symbols that may have been introduced
14641         by chrec_apply.
14642         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
14643         Declared.
14644
14645 2009-07-30  DJ Delorie  <dj@redhat.com>
14646
14647         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
14648         .vliw directive to VLIW sections.
14649
14650 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14651
14652         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
14653         New variables.
14654         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
14655         (AUTOHEADER): New variable.
14656         ($(srcdir)/cstamp-h.in): Use it.
14657
14658 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
14659             Pat Haugen  <pthaugen@us.ibm.com>
14660             Revital Eres <ERES@il.ibm.com>
14661
14662         * config/rs6000/vector.md (VEC_F): Add VSX support.
14663         (VEC_A): Ditto.
14664         (VEC_N): Ditto.
14665         (mov<mode>): Ditto.
14666         (vector_load_<mode>): Ditto.
14667         (vector_store_<mode>): Ditto.
14668         (vector GPR move split): Ditto.
14669         (vec_reload_and_plus_<mptrsize>): Ditto.
14670         (vec_reload_and_reg_<mptrsize>): Ditto.
14671         (add<mode>3): Ditto.
14672         (sub<mode>3): Ditto.
14673         (mul<mode>3): Ditto.
14674         (neg<mode>2): Ditto.
14675         (abs<mode>2): Ditto.
14676         (smin<mode>3): Ditto.
14677         (smax<mode>3): Ditto.
14678         (vector_eq<mode>): Ditto.
14679         (vector_gt<mode>): Ditto.
14680         (vector_ge<mode>): Ditto.
14681         (vector_gtu<mode>): Ditto.
14682         (vector_select_<mode>_uns): Ditto.
14683         (vector_eq_<mode>_p): Ditto.
14684         (vector_gt_<mode>_p): Ditto.
14685         (vector_ge_<mode>_p): Ditto.
14686         (vector_gtu_<mode>_p): Ditto.
14687         (cr6_test_for_zero): Ditto.
14688         (cr6_test_for_zero_reverse): Ditto.
14689         (cr6_test_for_lt): Ditto.
14690         (cr6_test_for_lt_reverse): Ditto.
14691         (xor<mode>3): Ditto.
14692         (ior<mode>3): Ditto.
14693         (and<mode>3): Ditto.
14694         (one_cmpl<mode>2): Ditto.
14695         (nor<mode>2): Ditto.
14696         (andc<mode>2): Ditto.
14697         (float<VEC_int<mode>2): Ditto.
14698         (unsigned_float<VEC_int><mode>2): Ditto.
14699         (fix_trunc<mode><VEC_int>2): Ditto.
14700         (fixuns_trunc<mode><VEC_int>2): Ditto.
14701         (vec_init<mode>):
14702         (vec_set<mode>): Ditto.
14703         (vec_extract<mode>): Ditto.
14704         (vec_interleave_highv4sf): Ditto.
14705         (vec_interleave_lowv4sf): Ditto.
14706         (vec_realign_load_<mode>): Ditto.
14707         (vec_shl_<mode>): Ditto.
14708         (vec_shr_<mode>): Ditto.
14709         (div<mode>3): New patterns for VSX.
14710         (vec_interleave_highv2df): Ditto.
14711         (vec_interleave_lowv2df): Ditto.
14712         (vec_pack_trunc_v2df): Ditto.
14713         (vec_pack_sfix_trunc_v2df): Ditto.
14714         (vec_pack_ufix_trunc_v2df): Ditto.
14715         (vec_unpacks_hi_v4sf): Ditto.
14716         (vec_unpacks_lo_v4sf): Ditto.
14717         (vec_unpacks_float_hi_v4si): Ditto.
14718         (vec_unpacks_float_lo_v4si): Ditto.
14719         (vec_unpacku_float_hi_v4si): Ditto.
14720         (vec_unpacku_float_lo_v4si): Ditto.
14721         (movmisalign<mode>): Ditto.
14722         (vector_ceil<mode>2): New patterns for vectorizing math library.
14723         (vector_floor<mode>2): Ditto.
14724         (vector_btrunc<mode>2): Ditto.
14725         (vector_copysign<mode>3): Ditto.
14726
14727         * config/rs6000/predicates.md (easy_vector_constant_msb): New
14728         predicate for setting the high bit in each word, used for copysign.
14729
14730         * config/rs6000/ppc-asm.h (f19): Whitespace.
14731         (f32-f63): Define if VSX.
14732         (v0-v31): Define if Altivec.
14733         (vs0-vs63): Define if VSX.
14734
14735         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
14736
14737         * config/rs6000/power7.md: New file, provide tuning parameters for
14738         -mcpu=power7.
14739
14740         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
14741         (rs6000_cpu_cpp_builtins): Ditto.
14742         (altivec_overloaded_builtins): Ditto.
14743         (altivec_resolve_overloaded_builtin): Ditto.
14744
14745         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
14746         debug switch to disable vectorizing simple math builtin
14747         functions.
14748
14749         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
14750         Vectorize simple math builtin functions.
14751         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
14752         hook to vectorize math builtins.
14753         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
14754         (rs6000_builtin_conversion): Add VSX/power7 support.
14755         (rs6000_builtin_vec_perm): Ditto.
14756         (vsplits_constant): Add support for loading up a vector constant
14757         with just the high bit set in each part.
14758         (rs6000_expand_vector_init): Add VSX/power7 support.
14759         (rs6000_expand_vector_set): Ditto.
14760         (rs6000_expand_vector_extract): Ditto.
14761         (rs6000_emit_move): Ditto.
14762         (bdesc_3arg): Ditto.
14763         (bdesc_2arg): Ditto.
14764         (bdesc_1arg): Ditto.
14765         (rs6000_expand_ternop_builtin): Ditto.
14766         (altivec_expand_builtin): Ditto.
14767         (rs6000_expand_unop_builtin): Ditto.
14768         (rs6000_init_builtins): Ditto.
14769         (altivec_init_builtins): Ditto.
14770         (builtin_function_type): Ditto.
14771         (rs6000_common_init_builtins): Ditto.
14772         (rs6000_handle_altivec_attribute); Ditto.
14773         (rs6000_mangle_type): Ditto.
14774         (rs6000_vector_mode_supported_p): Ditto.
14775         (rs6000_mode_dependent_address): Altivec addresses with AND -16
14776         are mode dependent.
14777
14778         * config/rs6000/vsx.md: New file for VSX support.
14779
14780         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
14781         identifing values with just the most significant bit set.
14782         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
14783         vectorized builtins.
14784
14785         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
14786         (UNSPEC_VRFIM): Delete.
14787         (splitter for loading up vector with most significant bit): New
14788         splitter for vectorizing copysign.
14789         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
14790         vectorizing simple math functions.
14791         (altivec_vrfip): Add support for vectorizing simple math functions.
14792         (altivec_vrfim): Ditto.
14793         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
14794
14795         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
14796         (power7.md, vsx.md): Include for power7 support.
14797         (copysigndf3): Use VSX instructions if -mvsx.
14798         (negdf2_fpr): Ditto.
14799         (absdf2_fpr): Ditto.
14800         (nabsdf2_fpr): Ditto.
14801         (adddf3_fpr): Ditto.
14802         (subdf3_fpr): Ditto.
14803         (muldf3_fpr): Ditto.
14804         (divdf3_fpr): Ditto.
14805         (fix_truncdfdi2_fpr): Ditto.
14806         (cmpdf_internal1): Ditto.
14807         (fred, fred_fpr): Convert into expander/insn to add VSX support.
14808         (btruncdf2, btruncdf2_fpr): Ditto.
14809         (ceildf2, ceildf2_fpr): Ditto.
14810         (floordf2, floordf2_fpr): Ditto.
14811         (floatdidf2, floatdidf2_fpr): Ditto.
14812         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
14813         (fmsubdf4_fpr): Ditto.
14814         (fnmadddf4_fpr_1): Ditto.
14815         (fnmadddf4_fpr_2): Ditto.
14816         (fnmsubdf4_fpr_1): Ditto.
14817         (fnmsubdf4_fpr_2): Ditto.
14818         (fixuns_truncdfdi2): Add expander for VSX support.
14819         (fix_truncdfdi2): Ditto.
14820         (fix_truncdfsi2): Ditto.
14821         (ftruncdf2): Ditto.
14822         (btruncsf2): Whitespace.
14823         (movdf_hardfloat32): Add support for VSX registers.
14824         (movdf_softfloat32): Ditto.
14825         (movdf_hardfloat64): Ditto.
14826         (movdf_hardfloat64_mfpgpr): Ditto.
14827         (movdf_softfloat64): Ditto.
14828         (movti splitters): Add check for vector registers supporting
14829         TImode in the future.
14830         (bpermd): Add power7 bpermd instruction.
14831
14832         * config/rs6000/altivec.h (vec_div): Define if VSX.
14833         (vec_mul): Ditto.
14834         (vec_msub): Ditto.
14835         (vec_nmadd): Ditto.
14836         (vec_nearbyint): Ditto.
14837         (vec_rint): Ditto.
14838         (vec_sqrt): Ditto.
14839         (all predicates): Use the generic builtin function, and not the V4SF
14840         specific function so that the predicates will work with VSX's V2DF.
14841         (vec_all_*): Ditto.
14842         (vec_any_*): Ditto.
14843
14844         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
14845         Document new VSX functions and types.
14846
14847         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
14848         switches.
14849
14850         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
14851         "wa", and "j" constraints.  Modify "v" to talk about Altivec
14852         instead of just vector.
14853
14854 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
14855
14856         PR debug/26475
14857         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
14858         location for phi arguments.
14859         (rewrite_update_phi_arguments): Find locations for reaching defs.
14860         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
14861         Add location to add_phi_arg calls.
14862         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
14863         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
14864         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
14865         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
14866         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
14867         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
14868         * tree-phinodes.c (make_phi_node): Initialize location.
14869         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
14870         (add_phi_arg): Add location parameter.
14871         (remove_phi_arg_num): Move location when moving phi argument.
14872         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
14873         location.
14874         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
14875         slpeel_update_phi_nodes_for_guard1,
14876         slpeel_update_phi_nodes_for_guard2,
14877         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
14878         vect_loop_versioning): Set locations.
14879         * tree-parloops.c (create_phi_for_local_result,
14880         transform_to_exit_first_loop, create_parallel_loop): Add locations.
14881         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
14882         * tree-vect-loop.c (get_initial_def_for_induction,
14883         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
14884         locations.
14885         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
14886         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
14887         (gimple_phi_arg_set_location): New.  Set locus.
14888         (gimple_phi_arg_has_location): New.  Check for locus.
14889         (redirect_edge_var_map_location): New.  Return locus from var_map.
14890         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
14891         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
14892         combining PHI arguments.
14893         (cond_store_replacement): Set location.
14894         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
14895         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
14896         scop_add_exit_phis_edge): Add locations.
14897         * tree-cfgcleanup.c (remove_forwarder_block,
14898         remove_forwarder_block_with_phi): Add locations.
14899         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
14900         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
14901         locations.
14902         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
14903         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
14904         flush_pending_stmts): Add source location.
14905         * lambda-code.c (perfect_nestify): Maintain location stack with argument
14906         stack to preserve locations.
14907         * tree-vect-stmts.c (vectorizable_load): Add location.
14908         * tree-inline.c (copy_phis_for_bb): Copy locus.
14909         (setup_one_parameter): Add call locus to inlined parameter stmts.
14910         (initialize_inlined_parameters): Pass in call location as parameter
14911         assignment locus.
14912         (tree_function_versioning): Pass location to setup_one_parameter.
14913         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
14914         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
14915         copy and edge lists.
14916         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
14917         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
14918         locus parameter and override the stmt default if provided.
14919         (new_elim_graph, clear_elim_graph, delete_elim_graph,
14920         elim_graph_add_edge, elim_graph_remove_succ_edge,
14921         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
14922         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
14923         eliminate_phi):  Add locus info in elimination graph for each edge and
14924         value copy.
14925         (insert_backedge_copies): Copy locus if present.
14926         * tree-flow.h (struct _edge_var_map): Add locus field.
14927         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
14928         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
14929         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
14930         locations.
14931         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
14932
14933 2009-07-30  Martin Jambor  <mjambor@suse.cz>
14934
14935         PR tree-optimization/40570
14936         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
14937         use inlining loops.
14938
14939 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
14940
14941         * ssa-loop-manip.c: Include langhooks.h.
14942         (rewrite_phi_with_iv): New.
14943         (rewrite_all_phi_nodes_with_iv): New.
14944         (canonicalize_loop_ivs): Move here from tree-parloops.c.
14945         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
14946         * tree-parloops.c (loop_parallel_p): Move out all conditions
14947         except dependency check.
14948         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
14949         (gen_parallel_loop): Call canonicalize_loop_ivs without
14950         reduction_list argument.
14951         (build_new_reduction): New.
14952         (gather_scalar_reductions): New.
14953         (try_get_loop_niter): New.
14954         (try_create_reduction_list): New.
14955         (parallleize_loops): Change the parallel conditions check.
14956         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
14957         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
14958
14959 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
14960
14961         * opt-functions.awk (opt_args): Allow argument to be enclosed in
14962         curly braces.
14963         * doc/options.texi (Option properties):  Mention new quoting syntax.
14964
14965 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14966
14967         * config/alpha/alpha.c (alpha_start_function):
14968         Handle VMS_DEBUG_MAIN_POINTER
14969         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
14970         * doc/invoke.texi: Document -mdebug-main switch.
14971
14972 2009-07-29  Richard Henderson  <rth@redhat.com>
14973
14974         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
14975         (cgraph_create_edge_including_clones): Likewise.
14976         * tree-inline.c (copy_bb): Operate on the correct edges
14977         when updating the callgraph.
14978
14979 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14980
14981         * config/alpha/vms-cc.c: Deleted.
14982         * config/alpha/vms-ld.c: Deleted.
14983         * config/alpha/t-vms64: Moved to config/vms
14984         * config/alpha/vms-crt0-64.c: Moved to config/vms
14985         * config/alpha/vms-crt0.c: Moved to config/vms
14986         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
14987         * config/alpha/vms-psxcrt0.c: Moved to config/vms
14988         * config/alpha/xm-vms.h: Moved to config/vms
14989         * config/alpha/x-vms: Moved to config/vms
14990         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
14991         config/vms/t-vms.
14992         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
14993         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
14994         (version): Set.
14995         * config/vms/t-vms64: Moved here from config/alpha
14996         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
14997         (argc,argv,envp): Enforce 32bit malloc'ing.
14998         * config/vms/vms-psxcrt0-64.c: Likewise.
14999         * config/vms/vms-crt0.c: Moved here from config/alpha.
15000         * config/vms/vms-psxcrt0.c: Likewise.
15001         * config/vms/vms-crtl-64.h: New file.
15002         * config/vms/vms-crtl.h: New file.
15003         * config/vms/vms.opt: New file.
15004         * config/vms/xm-vms64.h: New file.
15005         * config/vms/xm-vms.h: Moved here from config/alpha.
15006         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
15007         Set.
15008         * config/vms/x-vms: Moved here from config/alpha.
15009         (version, VMS_EXTRA_PARTS): Moved to t-vms.
15010         (vms-ld.o, vms-cc.o): Removed.
15011         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
15012
15013 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
15014
15015         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
15016         correct stack (obvious VMS fix).
15017
15018 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
15019
15020         * dwarf2out.c (output_file_names): Output VMS style file name, size,
15021         date, version info if VMS_DEBUGGING_INFO defined.
15022         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
15023         size, date calculating code moved here.
15024
15025 2009-07-29  Paul Brook  <paul@codesourcery.com>
15026
15027         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
15028         do_push/do_pop.
15029
15030 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
15031
15032         PR target/40577
15033         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
15034         to DImode when generating insq_le insn.
15035
15036 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
15037
15038         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
15039         New macro set for VMS_DEBUGGGING_INFO.
15040         (AT_string_form): Use it.
15041
15042 2009-07-28  DJ Delorie  <dj@redhat.com>
15043
15044         * config/mep/mep.c (vtext_section): New.
15045         (vftext_section): New.
15046         (ftext_section): New.
15047         (mep_select_section): Add support for functions.
15048         (mep_unique_section): Likewise.
15049         (mep_asm_init_sections): Likewise.
15050         (mep_encode_section_info): Remove it from here.
15051
15052         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
15053
15054 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
15055
15056         * tree.h (TREE_DEPRECATED): Document it is used for types too.
15057         (TYPE_VECTOR_OPAQUE): Use default_def_flag
15058
15059 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
15060
15061         * dwarf2out.c (output_file_names): Test new macro
15062         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
15063         (add_comp_dir_attribute): Likewise.
15064
15065 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
15066
15067         * config/i386/mingw-w64.h (LINK_SPEC): Add
15068         separating space between commands.
15069
15070 2009-07-28  Jan Hubicka  <jh@suse.cz>
15071
15072         PR tree-optimization/40759
15073         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
15074         for renaming.
15075
15076 2009-07-27  DJ Delorie  <dj@redhat.com>
15077
15078         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
15079         types are dword-aligned.
15080         (mep_expand_va_start): Likewise.
15081
15082 2009-07-27  Olivier Hainque  <hainque@adacore.com>
15083             Douglas B Rupp  <rupp@gnat.com>
15084
15085         * convert.c (convert_to_pointer): Don't assume the target
15086         pointer type is POINTER_SIZE long. Fetch its precision instead.
15087
15088 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
15089
15090         * system.h (fopen): Undefine if macro.
15091
15092 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
15093
15094         * dwarf2out.c (output_cfi_p): Removed.
15095         (output_cfis): New function.
15096         (output_fde): New function, split from output_call_frame_info.
15097         (output_call_frame_info): Use it.
15098         (dwarf2out_switch_text_section): Use output_cfis.
15099
15100 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
15101
15102         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
15103         TARGET_BI_ARCH is specified without enabling SJLJ.
15104         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
15105         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
15106
15107 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
15108
15109         * arm.md (negdi2): Use DImode if forcing a value into a register.
15110
15111 2009-07-26  Ira Rosen  <irar@il.ibm.com>
15112
15113         PR tree-optimization/40801
15114         * tree-vect-stmts.c (vectorizable_call): Get previous copy
15115         of vector operand from the previous copy of vector statement.
15116         Pass the correct definition type value to
15117         vect_get_vec_def_for_stmt_copy().
15118
15119 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15120
15121         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
15122         const char ** conversion.
15123
15124 2009-07-25 David Daney <ddaney@caviumnetworks.com>
15125
15126         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
15127         fancy_abort() if !ENABLE_ASSERT_CHECKING.
15128         (gcc_unreachable): Invoke __builtin_unreachable() if
15129         !ENABLE_ASSERT_CHECKING.
15130
15131 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
15132
15133         PR rtl-optimization/40445
15134         * emit-rtl.c (next_nonnote_insn_bb): New function.
15135         * rtl.h (next_nonnote_insn_bb): Declare new function.
15136         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
15137         with no successors that is the successor of the ENTRY_BLOCK.
15138         Continue from the top after removing an empty fallthrough block.
15139         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
15140         of next_nonnote_insn.
15141
15142 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
15143
15144         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
15145
15146 2009-07-25  Martin Jambor  <mjambor@suse.cz>
15147
15148         * c-common.c (c_common_attribute_table): New element for noclone.
15149         (handle_noclone_attribute): New function. Forward-declare.
15150         * tree-inline.c (tree_versionable_function_p): Check for noclone
15151         attribute.
15152         * doc/extend.texi (Labels as Values): Document need for noclone.
15153         (Function Attributes): Document noclone attribute.
15154
15155 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
15156
15157         PR rtl-optimization/34999
15158         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
15159         and dw_fde_switched_cold_to_hot fields.
15160         (output_cfi_p): New function.
15161         (output_call_frame_info): If fde->dw_fde_switched_sections,
15162         output 2 FDEs instead of one with corrupted header.
15163         (dwarf2out_do_cfi_startproc): New function.
15164         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
15165         and fde->dw_fde_switched_cold_to_hot.
15166         (dwarf2out_switch_text_section): Compute
15167         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
15168         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
15169         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
15170         Otherwise, compute fde->dw_fde_switch_cfi.
15171
15172 2009-07-24  Cary Coutant  <ccoutant@google.com>
15173
15174         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
15175
15176 2009-07-24  Cary Coutant  <ccoutant@google.com>
15177
15178         * cfghooks.c (split_block): Copy discriminator to new block.
15179         * tree-cfg.c (assign_discriminator): Check location of last
15180         instruction in block as well as first.
15181
15182 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
15183
15184         * config/i386/linux.c: Use fputs or putc instead of fprintf
15185         where appropriate.
15186         * config/i386/gas.h: Ditto.
15187         * config/i386/x86-64.h: Ditto.
15188         * config/i386/att.h: Ditto.
15189
15190 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
15191
15192         * expmed.c (emit_store_flag): Use a recursive call to optimize the
15193         xor case.
15194
15195 2009-07-24  Martin Jambor  <mjambor@suse.cz>
15196
15197         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
15198         (ipa_push_func_to_list_1): Declare.
15199         (ipa_push_func_to_list): New function.
15200
15201         * ipa-prop.c (ipa_push_func_to_list_1): New function.
15202         (ipa_init_func_list): Call ipa_push_func_to_list_1.
15203         (ipa_push_func_to_list): Removed.
15204         (ipa_pop_func_from_list): Clear node_enqueued flag.
15205
15206 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
15207
15208         * config/s390/s390.c (override_options): Default
15209         max-unrolled-insns to 100 for z10 tuning.
15210
15211 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
15212
15213         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
15214         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
15215         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
15216         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
15217         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
15218         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
15219         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
15220
15221 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
15222
15223         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
15224         use default set in mingw32.h header.
15225         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
15226         64-bit /mingw/include path.
15227         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
15228         path.
15229
15230 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
15231
15232         PR rtl-optimization/40209
15233         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
15234
15235 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
15236
15237         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
15238         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
15239         with the rest of string where appropriate.  Use fputs or putc
15240         instead of fprintf where appropriate.
15241
15242 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
15243             Pat Haugen  <pthaugen@us.ibm.com>
15244             Revital Eres <ERES@il.ibm.com>
15245
15246         * config/rs6000/vector.md: New file.  Move most of the vector
15247         expander support here from altivec.md to allow for the VSX vector
15248         unit in the future.  Add support for secondary_reload patterns.
15249         Rewrite the patterns for vector comparison, and vector comparison
15250         predicate instructions so that the RTL expresses the desired
15251         behavior, instead of using unspec.
15252
15253         * config/rs6000/constraints.md ("f" constraint): Use
15254         rs6000_constraints to hold the precalculated register class.
15255         ("d" constraint): Ditto.
15256         ("wd" constraint): New constraint for VSX.
15257         ("wf" constraint): Ditto.
15258         ("ws" constraint): Ditto.
15259         ("wa" constraint): Ditto.
15260         ("wZ" constraint): Ditto.
15261         ("j" constraint): Ditto.
15262
15263         * config/rs6000/predicates.md (vsx_register_operand): New
15264         predicate for VSX.
15265         (vfloat_operand): New predicate for vector.md.
15266         (vint_operand): Ditto.
15267         (vlogical_operand): Ditto.
15268         (easy_fp_constant): If VSX, 0.0 is an easy constant.
15269         (easy_vector_constant): Add VSX support.
15270         (altivec_indexed_or_indirect_operand): New predicate for
15271         recognizing Altivec style memory references with AND -16.
15272
15273         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
15274         for vector secondary reload support.
15275         (rs6000_vector_reg_class): Delete, replacing it with
15276         rs6000_constraints.
15277         (rs6000_vsx_reg_class): Ditto.
15278         (rs6000_constraints): New array to hold the register classes of
15279         each of the register constraints that can vary at runtime.
15280         (builtin_mode_to_type): New static array for builtin function type
15281         creation.
15282         (builtin_hash_table): New static hash table for builtin function
15283         type creation.
15284         (TARGET_SECONDARY_RELOAD): Define target hook.
15285         (TARGET_IRA_COVER_CLASSES): Ditto.
15286         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
15287         registers are 128 bits if VSX memory reference instructions are used.
15288         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
15289         unit is being used.
15290         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
15291         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
15292         Print several of the scheduling related parameters.
15293         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
15294         rs6000_constraints instead of rs6000_vector_reg_class.  Move
15295         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
15296         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
15297         Altivec.  Add VSX support.  Setup for secondary reload support on
15298         Altivec/VSX registers.
15299         (rs6000_override_options): Make power7 set the scheduling groups
15300         like the power5.  Add support for new debug switches to override
15301         the scheduling defaults.  Temporarily disable -mcpu=power7 from
15302         setting -mvsx.  Add support for debug switches -malways-hint,
15303         -msched-groups, and -malign-branch-targets.
15304         (rs6000_buitlin_conversion): Add support for returning unsigned
15305         vector conversion functions to fix regressions due to stricter
15306         type checking.
15307         (rs6000_builtin_mul_widen_even): Ditto.
15308         (rs6000_builtin_mul_widen_odd): Ditto.
15309         (rs6000_builtin_vec_perm): Ditto.
15310         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
15311         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
15312         to zero a register.
15313         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
15314         generated upstream.
15315         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
15316         VSX types for bit operations.  Changes to accomidate vector.md.
15317         (bdesc_2arg): Ditto.
15318         (bdesc_1arg): Ditto.
15319         (struct builtin_description_predicates): Rewrite predicate
15320         handling so that RTL describes the operation, instead of passing
15321         the instruction to be used as a string argument.
15322         (bdesc_altivec_preds): Ditto.
15323         (altivec_expand_predicate_builtin): Ditto.
15324         (altivec_expand_builtin): Ditto.
15325         (rs6000_expand_ternop_builtin): Use a switch instead of an if
15326         statement for vsldoi support.
15327         (altivec_expand_ld_builtin): Change to use new names from vector.md.
15328         (altivec_expand_st_builtin): Ditto.
15329         (paired_expand_builtin): Whitespace changes.
15330         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
15331         builtin_mode_to_type table for secondary reload.  Call
15332         builtin_function_type to build random builtin functions.
15333         (altivec_init_builtins): Change to use builtin_function_type to
15334         create builtin function types dynamically as we need them.
15335         (builtin_hash_function): New support for hashing the tree types
15336         for builtin function as we need it, rather than trying to build
15337         all of the trees that we need.  Add initial preliminary VSX support.
15338         (builtin_function_type): Ditto.
15339         (builtin_function_eq): Ditto.
15340         (builtin_hash_struct): Ditto.
15341         (rs6000_init_builtins): Ditto.
15342         (rs6000_common_init_builtins): Ditto.
15343         (altivec_init_builtins): Ditto.
15344         (rs6000_common_init_builtins): Ditto.
15345         (enum reload_reg_type): New enum for simplifing reg classes.
15346         (rs6000_reload_register_type): Simplify register classes into GPR,
15347         Vector, and other registers.  Altivec and VSX addresses in reload.
15348         (rs6000_secondary_reload_inner): Ditto.
15349         (rs6000_ira_cover_classes): New target hook, that returns the
15350         appropriate cover classes, based on -mvsx being used or not.
15351         (rs6000_secondary_reload_class): Add VSX support.
15352         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
15353         (get_vsel_insn): Ditto.
15354         (rs6000_emit_vector_compare): Rewrite vector conditional support
15355         so that where we can, we use RTL operators, instead of blindly use
15356         UNSPEC.
15357         (rs6000_emit_vector_select): Ditto.
15358         (rs6000_emit_vector_cond_expr): Ditto.
15359         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
15360         (create_TOC_reference): Add -mdebug=addr support.
15361         (emit_frame_save): VSX loads/stores need register indexed addressing.
15362
15363         * config/rs6000/rs6000.md: Include vector.md.
15364
15365         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
15366
15367         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
15368         support for V2DI, V2DF in logical, permute, select operations.
15369
15370         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
15371         switch for vsx/power7.
15372         (-mvsx-scalar-memory): Ditto.
15373         (-mvsx-align-128): Ditto.
15374         (-mallow-movmisalign): Ditto.
15375         (-mallow-df-permute): Ditto.
15376         (-msched-groups): Ditto.
15377         (-malways-hint): Ditto.
15378         (-malign-branch-targets): Ditto.
15379
15380         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
15381         hook instead.
15382         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
15383         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
15384         (rs6000_vector_reg_class): Delete.
15385         (rs6000_vsx_reg_class): Ditto.
15386         (enum rs6000_reg_class_enum): New enum for the constraints that
15387         vary based on target switches.
15388         (rs6000_constraints): New array to hold the register class for all
15389         of the register constraints that vary based on the switches used.
15390         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
15391         (enum rs6000_builtins): Add unsigned varients for the builtin
15392         declarations returned by target hooks for expanding multiplies,
15393         select, and permute operations.  Add VSX builtins.
15394         (enum rs6000_builtin_type_index): Add entries for VSX.
15395         (V2DI_type_node): Ditto.
15396         (V2DF_type_node): Ditto.
15397         (unsigned_V2DI_type_node): Ditto.
15398         (bool_long_type_node): Ditto.
15399         (intDI_type_internal_node): Ditto.
15400         (uintDI_type_internal_node): Ditto.
15401         (double_type_internal_node): Ditto.
15402
15403         * config/rs6000/altivec.md (whole file): Move all expanders to
15404         vector.md from altivec.md.  Rename insn matching functions to be
15405         altivec_foo.
15406         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
15407         (altivec_vcmp*): Ditto.
15408         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
15409         (VM): New iterator for moves that includes the VSX types.
15410         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
15411         (altivec_vperm_<mode>_uns): New, for unsigned types.
15412         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
15413         (altivec_eq<mode>): Ditto.
15414         (altivec_gt<mode>): Ditto.
15415         (altivec_gtu<mode>): Ditto.
15416         (altivec_eqv4sf): Ditto.
15417         (altivec_gev4sf): Ditto.
15418         (altivec_gtv4sf): Ditto.
15419         (altivec_vcmpbfp_p): Ditto.
15420
15421 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
15422
15423         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
15424         unsigned HWI.
15425
15426 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
15427
15428         PR target/40832
15429         * config/i386/i386.c (output_387_ffreep): Rewrite to use
15430         ASM_SHORT instead of .word.
15431         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
15432         instead of .word in asm template.
15433
15434 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
15435
15436         PR target/37488
15437         * ira-lives.c (bb_has_abnormal_call_pred): New function.
15438         (process_bb_node_lives): Use it.
15439
15440         * ira.c (setup_cover_and_important_classes): Don't setup
15441         ira_important_class_nums.  Add cover classes to the end of
15442         important classes.
15443         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
15444         New.
15445         (find_reg_class_closure): Use reorder_important_classes.
15446
15447         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
15448
15449         * config/i386/i386.c (i386_ira_cover_classes): New function.
15450         (TARGET_IRA_COVER_CLASSES): Redefine.
15451
15452         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
15453         importance of order of cover classes in the array.
15454
15455 2009-07-22  Diego Novillo  <dnovillo@google.com>
15456
15457         * tree-pass.h (TDF_EH): Define.
15458         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
15459         contains TDF_EH, print the EH region number holding GS.
15460         * tree-dump.c (dump_options): Add "eh".
15461         * doc/invoke.texi: Document it.
15462
15463 2009-07-22  Doug Kwan  <dougkwan@google.com>
15464
15465         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
15466
15467 2009-07-22  Michael Matz  <matz@suse.de>
15468
15469         PR tree-optimization/35229
15470         PR tree-optimization/39300
15471
15472         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
15473         (inhibit_phi_insertion): New function.
15474         (insert_into_preds_of_block): Call it for REFERENCEs.
15475         (init_pre): Initialize and finalize scalar evolutions.
15476         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
15477
15478 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
15479
15480         * config/i386/predicates.md (zero_extended_scalar_load_operand):
15481         Use CONST_VECTOR_NUNITS to determine number of elements.
15482
15483 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
15484
15485         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
15486         (U, W): Constraints are now deprecated and will be removed if we
15487         run out of letters.
15488         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
15489         the file.
15490         ("prefetch"): Add the stcmh instruction for prefetching.
15491         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
15492         changes.
15493         (s390_short_displacement): Return always true if compiling for
15494         machines not providing the long displacement facility.
15495         (s390_mem_constraint): Support the new constraint letter Z.
15496         (s390_check_qrst_address): New function.
15497
15498 2009-07-21  DJ Delorie  <dj@redhat.com>
15499
15500         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
15501         alone too.
15502
15503 2009-07-21  Jason Merrill  <jason@redhat.com>
15504
15505         * c-common.c (max_tinst_depth): Increase default to 1024.
15506
15507 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
15508
15509         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
15510         (vec_unpacku_float_lo_v4si): Ditto.
15511
15512 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
15513
15514         PR target/40811
15515         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
15516         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
15517         (builtin_description): Add __builtin_ia32_cvtudq2ps.
15518         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
15519
15520 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
15521
15522         PR tree-optimization/40813
15523         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
15524         it.
15525
15526 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
15527
15528         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
15529         with a NOP_EXPR if needed.
15530
15531 2009-07-21  Paul Brook <paul@codesourcery.com>
15532
15533         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
15534         Terminate debug dump with newline.
15535
15536 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15537
15538         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
15539         Cast "1" to unsigned HOST_WIDE_INT.
15540         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
15541         deposit length to the maximum length - lsb.  Extend length if
15542         HOST_BITS_PER_WIDE_INT is 32.
15543
15544 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
15545
15546         * cgraph.h (constant_pool_htab): New function.
15547         (constant_descriptor_tree): Move from varasm.c.
15548         * varasm.c (constant_pool_htab): New function.
15549         (constant_descriptor_tree): Move to cgraph.h.
15550
15551 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
15552
15553         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
15554
15555 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
15556
15557         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
15558         $(VARRAY_H).
15559
15560 2009-07-20  Xinliang David Li  <davidxl@google.com>
15561
15562         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
15563
15564 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
15565
15566         * config/mips/mips.md (move_type): Add arith.
15567         (type): Handle arith.
15568         (zero_extendsidi2): Rename this into ...
15569         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
15570         (zero_extendsidi2): New expander.
15571         (*zero_extendsidi2_dext): New pattern.
15572
15573 2009-07-20  Nick Clifton  <nickc@redhat.com>
15574
15575         * config.gcc (mips64-*-*): Add definition of tm_defines in order
15576         to set MIPS_ABI_DEFAULT.
15577         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
15578
15579 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
15580
15581         * tree-object-size.c (addr_object_size): Handle unions with
15582         array in it as last field of structs in __bos (, 1) as __bos (, 0).
15583
15584         PR tree-optimization/40792
15585         * tree.c (build_function_type_skip_args): Remove bogus assert.
15586
15587 2009-07-20  Jan Hubicka  <jh@suse.cz>
15588             Martin Jambor  <mjambor@suse.cz>
15589
15590         * cgraph.h (combined_args_to_skip): New field.
15591         * cgraph.c (cgraph_create_virtual_clone): Properly handle
15592         combined_args_to_skip and args_to_skip.
15593         * tree-inline.c (update_clone_info): New function.
15594         (tree_function_versioning): Call update_clone_info.
15595         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
15596         functions.
15597         (cgraph_materialize_all_clones): More extensive dumping, working
15598         with combined_args_to_skip rather than args_to_skip.
15599
15600 2009-07-20  Ira Rosen  <irar@il.ibm.com>
15601
15602         * tree-vectorizer.h (vectorizable_condition): Add parameters.
15603         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
15604         (get_initial_def_for_reduction): Likewise.
15605         (vectorizable_reduction): Skip the check of first operand in case
15606         of COND_EXPR. Add check that it is outer loop vectorization if
15607         nested cycle was detected. Call vectorizable_condition() for
15608         COND_EXPR. If reduction epilogue cannot be created do not fail for
15609         nested cycles (if it is not double reduction). Assert that there
15610         is only one type in the loop in case of COND_EXPR. Call
15611         vectorizable_condition() to vectorize COND_EXPR.
15612         * tree-vect-stmts.c (vectorizable_condition): Update comment.
15613         Add parameters. Allow nested cycles if called from
15614         vectorizable_reduction(). Use reduction vector variable if provided.
15615         (vect_analyze_stmt): Call vectorizable_reduction() before
15616         vectorizable_condition().
15617         (vect_transform_stmt): Update call to vectorizable_condition().
15618
15619 2009-07-20  Christian Bruel  <christian.bruel@st.com>
15620
15621         * config/sh/sh.opt (-mfmovd): Resurrect and document.
15622         * doc/invoke.texi (-mfmovd): Likewise.
15623         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
15624
15625 2009-07-20  Jan Hubicka  <jh@suse.cz>
15626
15627         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
15628         when handling SSA name.
15629
15630 2009-07-19  Jan Hubicka  <jh@suse.cz>
15631
15632         PR tree-optimization/40676
15633         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
15634         virtual PHIs in empty BBs.
15635
15636 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15637
15638         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
15639         re-expanded the compound use gen_lowpart instead to convert to the
15640         desired mode.
15641
15642 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15643
15644         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
15645         OUTER_CONST arguments.
15646         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
15647         the new wider mode will be masked off.
15648         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
15649
15650 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15651
15652         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
15653         high-order bits are zero.
15654
15655 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
15656
15657         * combine.c (simplify_shift_const_1): Split code to determine
15658         shift_mode into ...
15659         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
15660         new bits shifted in are identical to the old sign bit.
15661
15662 2009-07-18  Richard Guenther  <rguenther@suse.de>
15663
15664         PR c/40787
15665         * gimplify.c (gimplify_call_expr): Reject code using results from
15666         functions returning void.
15667
15668 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15669
15670         * doc/md.texi: Document the new PowerPC "es" constraint.
15671         Document that "m" can include automodified addresses on this target,
15672         and explain how %U must be used.  Extend the "Q" and "Z" documentation
15673         to suggest "es" as well as "m".
15674         * config/rs6000/constraints.md (es): New memory constraint.
15675         (Q, Z): Update strings to match new documentation.
15676
15677 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
15678
15679         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
15680         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
15681         * config/rs6000/predicates.md (volatile_mem_operand): Use
15682         offsettable_nonstrict_memref_p.
15683         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
15684         (*floatunssidf2_internal): Likewise.
15685         (*fix_truncdfsi2_internal): Likewise.
15686         (*fix_trunctfsi2_internal): Likewise.
15687
15688 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
15689
15690         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
15691         atmega32u2 devices.
15692         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
15693
15694 2009-07-17  Richard Guenther  <rguenther@suse.de>
15695
15696         PR c/40401
15697         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
15698         (pass_warn_unused_result): Likewise.
15699         (TODO_set_props): Remove.
15700         * omp-low.c (diagnose_omp_structured_block_errors): Change to
15701         run as a pass.
15702         (pass_diagnose_omp_blocks): Define.
15703         * c-decl.c (pop_file_scope): Do not finalize the CU here.
15704         (c_gimple_diagnostics_recursively): Remove.
15705         (finish_function): Do not call it.
15706         (c_write_global_declarations): Continue after errors.
15707         Finalize the CU here.
15708         * c-gimplify.c (c_genericize): Do not gimplify here.
15709         * c-common.c (c_warn_unused_result): Move ...
15710         * tree-cfg.c (do_warn_unused_result): ... here.
15711         (run_warn_unused_result): New function.
15712         (gate_warn_unused_result): New function.
15713         (pass_warn_unused_result): New pass.
15714         * c-common.h (c_warn_unused_result): Remove.
15715         * flags.h (flag_warn_unused_result): Declare.
15716         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
15717         * opts.c (flag_warn_unused_result): Initialize to false.
15718         * toplev.c (compile_file): Add comment.
15719         * omp-low.c (create_omp_child_function): Do not register
15720         the function with the frontend.
15721         (diagnose_omp_structured_block_errors): Prepare to be
15722         called as optimization pass.
15723         (gate_diagnose_omp_blocks): New function.
15724         (pass_diagnose_omp_blocks): New pass.
15725         * cgraph.h (cgraph_optimize): Remove.
15726         (cgraph_analyze_function): Likewise.
15727         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
15728         * cgraphunit.c (cgraph_lower_function): Lower nested functions
15729         before their parents here.
15730         (cgraph_finalize_function): Not here.
15731         (cgraph_analyze_function): Gimplify functions here.
15732         (cgraph_finalize_compilation_unit): Continue after errors.
15733         Optimize the callgraph from here.
15734         (cgraph_optimize): Make static.
15735         * langhooks.c (write_global_declarations): Finalize the CU.
15736         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
15737         (gimplify_function_tree): Assert we gimplify only once.
15738         Set PROP_gimple_any property.
15739         * tree-nested.c (gimplify_all_functions): New function.
15740         (lower_nested_functions): Gimplify all nested functions.
15741         * gimple.h (diagnose_omp_structured_block_errors): Remove.
15742         * passes.c (init_optimization_passes): Add pass_warn_unused_result
15743         and pass_diagnose_omp_blocks after gimplification.  Do not
15744         set TODO_set_props on all_lowering_passes.
15745         (execute_one_pass): Do not handle TODO_set_props.
15746         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
15747         (gimplify.o): Add tree-pass.h dependency.
15748         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
15749         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
15750         (unsave_r): Likewise.
15751         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
15752         temporary variable.
15753
15754 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
15755
15756         * doc/service.texi (Service): Restore previously removed link,
15757         which isn't broken after all.
15758
15759 2009-07-17  Richard Guenther  <rguenther@suse.de>
15760
15761         PR tree-optimization/40321
15762         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
15763         PHI nodes to the maximal set.
15764         (make_values_for_phi): Add PHI arguments to the maximal set.
15765         (execute_pre): Dump PHI_GEN and the maximal set.
15766
15767 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
15768
15769         PR c++/40780
15770         * gimplify.c (gimplify_conversion): Don't change non-conversions into
15771         VIEW_CONVERT_EXPR.
15772
15773 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
15774
15775         * doc/extend.texi (Nested Functions): Replace broken link with
15776         textual reference.
15777         * doc/service.texi (Service): Remove broken link.
15778
15779 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
15780
15781         PR bootstrap/40781
15782         * builtins.c (expand_builtin_memcmp): Use loc instead of
15783         EXPR_LOCATION (exp).
15784         (expand_builtin_strncmp): Likewise.
15785
15786 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
15787             Manuel López-Ibáñez  <manu@gcc.gnu.org>
15788
15789         PR 40435
15790         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
15791         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
15792         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
15793         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
15794         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
15795         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
15796         tree-inline.c, c-common.c, c-common.h, gimple.c,
15797         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
15798         convert.c: Add location argument to fold_{unary,binary,ternary},
15799         fold_build[123], build_call_expr, build_size_arg,
15800         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
15801         fold_build1_initializer, fold_build2_initializer,
15802         fold_build3_initializer, fold_build_call_array,
15803         fold_build_call_array_initializer, fold_single_bit_test,
15804         omit_one_operand, omit_two_operands, invert_truthvalue,
15805         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
15806         combine_comparisons, fold_builtin_*, fold_call_expr,
15807         build_range_check, maybe_fold_offset_to_address, round_up,
15808         round_down.
15809
15810 2009-07-16  Jason Merrill  <jason@redhat.com>
15811
15812         PR libstdc++/37907
15813         * c-common.c (c_common_reswords): Add __is_standard_layout
15814         and __is_trivial.
15815         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
15816         * doc/implement-cxx.texi: New.
15817         * doc/gcc.texi: Include it.
15818
15819 2009-07-16  DJ Delorie  <dj@redhat.com>
15820
15821         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
15822         compares that may be indirectly affected by previous instructions.
15823
15824 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15825
15826         * builtins.c (do_mpc_arg2): New.
15827         (fold_builtin_2): Fold builtin cpow.
15828         * real.h (HAVE_mpc_pow): New.
15829
15830 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
15831
15832         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
15833         comparison to skip unprofitable schedule
15834
15835 2009-07-16  Simon Baldwin  <simonb@google.com>
15836
15837         * gcc.c (option_map): New flag -no-canonical-prefixes.
15838         * (display_help): Print help text for new flag.
15839         * (process_command): Move options translation and language specifics
15840         and handle new flag early.  Use it to set a function pointer to a
15841         prefix builder.  Replace make_relative_prefix calls with calls to
15842         the function pointed to.  Ignore new flag in regular options handling.
15843         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
15844
15845 2009-07-15  DJ Delorie  <dj@redhat.com>
15846
15847         * config/mep/mep.md (sibcall_internal): Change register to avoid
15848         argument registers.
15849         (sibcall_value_internal): Likewise.
15850
15851 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
15852
15853         PR rtl-optimization/40710
15854         * resource.c (mark_target_live_regs): Reset DF problem to LR.
15855
15856 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
15857
15858         * config/mips/mips.md (*extenddi_truncate<mode>,
15859         *extendsi_truncate<mode>): Change type attribute to move_type
15860         with shift_shift.  Split out code handling exts from here ...
15861         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
15862         pattern.
15863         (*extendhi_truncateqi): Change type attribute to move_type with
15864         shift_shift.  Split out code handling exts from here ...
15865         (*extendhi_truncateqi_exts): ... to this new pattern.
15866
15867 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
15868
15869         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
15870         instead of "and" with inverted sign bit mask value.  Use
15871         "nonimmediate_operand" for operand 1 and operand 2 predicate.
15872         Allocate registers only for operand 4 and operand 5.
15873
15874 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
15875
15876         PR middle-end/40747
15877         * fold-const.c (fold_cond_expr_with_comparison): When folding
15878         < and <= to MIN, make sure the MIN uses the same type as the
15879         comparison's operands.
15880
15881 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
15882
15883         * arm.md (ior_xor): New code iterator.
15884         (split for ior/xor with shift and zero-extend): New split pattern.
15885         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
15886
15887 2009-07-15  Richard Guenther  <rguenther@suse.de>
15888
15889         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
15890         offset member.
15891
15892 2009-07-15  Richard Guenther  <rguenther@suse.de>
15893
15894         PR middle-end/40753
15895         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
15896
15897 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15898
15899         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
15900         handle 2.6.30 kernel.
15901
15902 2009-07-15  DJ Delorie  <dj@redhat.com>
15903
15904         * config/mep/mep.md (sibcall_internal): Change register to allow
15905         for 24-bit addresses.
15906         (sibcall_value_internal): Likewise.
15907
15908 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15909
15910         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
15911         that are enabled/disabled by the flags introduced by a previous patch.
15912
15913 2009-07-14  DJ Delorie  <dj@redhat.com>
15914
15915         * config/mep/mep.md (sibcall_internal): Include non-toggling
15916         non-jmp case.
15917         (sibcall_value_internal): Likewise.
15918
15919 2009-07-14  Taras Glek  <tglek@mozilla.com>
15920             Rafael Espindola  <espindola@google.com>
15921
15922         * doc/sourcebuild.texi: Document install-plugin target.
15923         * configure.ac: Added install-plugin target to language makefiles.
15924         * configure: Regenerate.
15925         * Makefile.in (install-plugin): Install more headers,
15926         depend on lang.install-plugin.
15927
15928 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15929
15930         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
15931         translation.
15932
15933 2009-07-14  DJ Delorie  <dj@redhat.com>
15934
15935         * config/mep/mep.c (mep_vliw_jmp_match): New function.
15936         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
15937         * config/mep/mep.md (sibcall_internal): Change test from
15938         mep_vliw_mode_match to mep_vliw_jmp_match.
15939         (sibcall_value_internal): Likewise.
15940
15941 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
15942
15943         * config/i386/sse.md (copysign<mode>3): New expander.
15944         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
15945         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
15946         Use ix86_build_const_vector.
15947         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
15948         IX86_BUILTIN_CPYSGNPD.
15949         (builtin_description): Add __builtin_ia32_copysignps and
15950         __builtin_ia32_copysignpd.
15951         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
15952         and BUILT_IN_COPYSIGNF.
15953
15954 2009-07-13  Jason Merrill  <jason@redhat.com>
15955
15956         * builtins.c (can_trust_pointer_alignment): New fn.
15957         (get_pointer_alignment): Factor it out from here.
15958         * tree.h: Declare it.
15959
15960 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
15961
15962         * config/rs6000/predicates.md (offsettable_mem_operand): Test
15963         RTX_AUTOINC class.
15964
15965 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
15966
15967         PR debug/40705
15968         PR c++/403057
15969         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
15970
15971 2009-07-14  Richard Guenther  <rguenther@suse.de>
15972             Andrey Belevantsev <abel@ispras.ru>
15973
15974         PR middle-end/40745
15975         * cfgexpand.c (partition_stack_vars): Do not bother to update
15976         alias information when not optimizing.
15977
15978 2009-07-14  Richard Guenther  <rguenther@suse.de>
15979             Andrey Belevantsev <abel@ispras.ru>
15980
15981         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
15982         (pt_solution_set): Likewise.
15983         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
15984         * tree-ssa-structalias.c (pt_solution_set): New function.
15985         * final.c (rest_of_clean_state): Free SSA data structures.
15986         * print-rtl.c (print_decl_name): Remove.
15987         (print_mem_expr): Implement in terms of print_generic_expr.
15988         * alias.c (ao_ref_from_mem): New function.
15989         (rtx_refs_may_alias_p): Likewise.
15990         (true_dependence): Query alias-export info.
15991         (canon_true_dependence): Likewise.
15992         (write_dependence_p): Likewise.
15993         * tree-dfa.c (get_ref_base_and_extent): For void types leave
15994         size unknown.
15995         * emit-rtl.c (component_ref_for_mem_expr): Remove.
15996         (mem_expr_equal_p): Use operand_equal_p.
15997         (set_mem_attributes_minus_bitpos): Do not use
15998         component_ref_for_mem_expr.
15999         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
16000         (update_alias_info_with_stack_vars): Likewise.
16001         (partition_stack_vars): Call update_alias_info_with_stack_vars.
16002         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
16003         explicitly nor clear stmt operands.
16004         Free the decl-to-pointer map.
16005         * tree-optimize.c (execute_free_datastructures): Do not free
16006         SSA data structures here.
16007         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
16008         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
16009         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
16010         dependencies.
16011         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
16012
16013 2009-07-13  DJ Delorie  <dj@redhat.com>
16014
16015         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
16016         unrolling at the right iteration count.
16017
16018         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
16019         calculations.
16020
16021 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
16022
16023         * haifa-sched.c (rank_for_schedule): Introduced flags to
16024         enable/disable individual scheduling heuristics.
16025         * common.opt: Introduced flags to enable/disable individual
16026         heuristics in the scheduler.
16027         * doc/invoke.texi: Introduced flags to enable/disable individual
16028         heuristics in the scheduler.
16029
16030 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
16031
16032         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
16033         config/i386/mingw-tls.c.
16034         * config/i386/mingw-tls.c: Removed.
16035
16036 2009-07-13  Ira Rosen  <irar@il.ibm.com>
16037
16038         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
16039         checks access only relevant statements.
16040         (vectorizable_reduction): Likewise.
16041
16042 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
16043
16044         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
16045         just for 32-bit case.
16046
16047 2009-07-12  Jan Hubicka  <jh@suse.cz>
16048
16049         PR tree-optimization/40585
16050         * except.c (expand_resx_expr): When there already is resume
16051         instruction, produce linked list.
16052         (build_post_landing_pads): Assert that resume is empty.
16053         (connect_post_landing_pads): Handle resume lists.
16054         (dump_eh_tree): Dump resume list.
16055
16056 2009-07-12  Ira Rosen  <irar@il.ibm.com>
16057
16058         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
16059         with additional argument.
16060         * tree-vectorizer.h (enum vect_def_type): Add
16061         vect_double_reduction_def.
16062         (vect_is_simple_reduction): Add argument.
16063         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
16064         indentation.
16065         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
16066         vect_is_simple_reduction with additional argument.
16067         (vect_analyze_loop_operations): Handle exit phi nodes in case of
16068         double reduction.
16069         (reduction_code_for_scalar_code): Handle additional codes by
16070         returning ERROR_MARK for them. Fix comment and indentation.
16071         (vect_is_simple_reduction): Fix comment, add argument to specify
16072         double reduction. Detect double reduction.
16073         (get_initial_def_for_induction): Fix indentation.
16074         (get_initial_def_for_reduction): Fix comment and indentation.
16075         Handle double reduction. Create initial definitions that do not
16076         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
16077         (vect_create_epilog_for_reduction): Fix comment, add argument to
16078         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
16079         epilogue result extraction. Create double reduction phi node and
16080         replace relevant uses.
16081         (vectorizable_reduction): Call vect_is_simple_reduction with
16082         additional argument. Fix indentation. Update epilogue code treatment
16083         according to the changes in reduction_code_for_scalar_code. Check
16084         for double reduction. Call vect_create_epilog_for_reduction with
16085         additional argument.
16086         * tree-vect-stmts.c (process_use): Handle double reduction, update
16087         documentation.
16088         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
16089         (vect_get_vec_def_for_operand): Likewise.
16090
16091 2009-07-12  Danny Smith  <dansmister@gmail.com>
16092
16093         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
16094         dllexport if !TREE_PUBLIC.
16095         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
16096
16097 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
16098
16099         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
16100         (avr_extra_arch_macro) Remove declatation.
16101         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
16102         (avr_extra_arch_macro) Declare as static.
16103         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
16104
16105 2009-07-11  Jan Hubicka  <jh@suse.cz>
16106
16107         PR middle-end/48388
16108         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
16109
16110 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
16111
16112         PR debug/40713
16113         * dwarf2out.c (dw_fde_struct): Add in_std_section and
16114         cold_in_std_section bits.
16115         (dwarf2out_begin_prologue): Initialize them.
16116         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
16117         if already covered by text_section or cold_text_section range.
16118
16119         PR rtl-optimization/40667
16120         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
16121         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
16122         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
16123         * config/i386/i386.c (ix86_minimum_alignment): New function.
16124         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
16125         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
16126         * emit-rtl.c (gen_reg_rtx): Likewise.
16127         * function.c (assign_parms): Likewise.  If nominal_type needs
16128         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
16129         rather than passed_type's alignment.
16130
16131         PR target/40668
16132         * function.c (assign_parm_setup_stack): Adjust
16133         MEM_OFFSET (data->stack_parm) if promoted_mode is different
16134         from nominal_mode on big endian.
16135
16136 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
16137
16138         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
16139
16140 2009-07-10  DJ Delorie  <dj@redhat.com>
16141
16142         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
16143
16144 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
16145
16146         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
16147         attribute.
16148         (thumb2_cbnz): Likewise.
16149
16150 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
16151
16152         PR target/39079
16153         * config.gcc (supported_defaults): Add synci.
16154         (with_synci): Add validation.
16155         (all_defaults): Add synci.
16156         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
16157         ISA_HAS_SYNCI.
16158         (synci): Same.
16159         * config/mips/mips.opt (msynci): New option.
16160         * config/mips/mips.c (mips_override_options): Warn on use of
16161         -msynci for targets that do now support it.
16162         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
16163         msynci.
16164         * gcc/doc/invoke.texi (-msynci): Document the new option.
16165         * doc/install.texi (--with-synci): Document the new option.
16166
16167 2009-07-10  Richard Guenther  <rguenther@suse.de>
16168
16169         PR tree-optimization/40496
16170         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
16171         the PHI result with a compatible type.
16172
16173 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16174
16175         PR 25509
16176         PR 40614
16177         * c.opt (Wunused-result): New.
16178         * doc/invoke.texi: Document it.
16179         * c-common.c (c_warn_unused_result): Use it.
16180
16181 2009-07-09  DJ Delorie  <dj@redhat.com>
16182
16183         * targhooks.c (default_target_can_inline_p): Rename from
16184         default_target_option_can_inline_p.
16185         * targhooks.h (default_target_can_inline_p): Likewise.
16186         * target-def.h (TARGET_CAN_INLINE_P): Rename from
16187         TARGET_OPTION_CAN_INLINE_P.
16188         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
16189         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
16190         (mep_target_can_inline_p): Rename from
16191         mep_target_option_can_inline_p.
16192
16193         PR target/40626
16194         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
16195         registers used to pass vectors.
16196
16197         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
16198
16199 2009-07-09  Tom Tromey  <tromey@redhat.com>
16200
16201         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
16202         * config/mmix/mmix.c: Include dwarf2.h.
16203         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
16204         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
16205         * config/sh/sh.c: Include dwarf2.h.
16206         * config/i386/i386.c: Include dwarf2.h.
16207         * Makefile.in (DWARF2_H): Remove 'elf'.
16208         * except.c: Include dwarf2.h.
16209         * unwind-dw2.c: Include dwarf2.h.
16210         * dwarf2out.c: Include dwarf2.h.
16211         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
16212         * unwind-dw2-fde.c: Include dwarf2.h.
16213         * dwarf2asm.c: Include dwarf2.h.
16214
16215 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
16216
16217         * haifa-sched.c (insn_finishes_cycle_p): New static function.
16218         (max_issue): Use it.
16219         * sched-int.h (struct sched_info: insn_finishes_block_p): New
16220         scheduler hook.
16221         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
16222         (region_sched_info): Update.
16223         * sched-ebb.c (ebb_sched_info): Update.
16224         * modulo-sched.c (sms_sched_info): Update.
16225         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
16226
16227 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
16228
16229         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
16230
16231 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
16232
16233         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
16234
16235 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
16236
16237         PR middle-end/40692
16238         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
16239         arg1 with arg01 if arg1 is already INTEGER_CST.
16240
16241 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
16242
16243         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
16244         Transform (and (truncate)) into (truncate (and)).
16245
16246 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
16247
16248         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
16249         creating LHS paradoxical subregs.  Fix surrounding returns to
16250         use NULL_RTX rather than 0.
16251
16252 2009-07-08  DJ Delorie  <dj@redhat.com>
16253
16254         * config/mep/mep.c (mep_option_can_inline_p): New.
16255         (TARGET_OPTION_CAN_INLINE_P): Define.
16256
16257 2009-07-08  Mark Wielaard  <mjw@redhat.com>
16258
16259         PR debug/40659
16260         * dwarf2out.c (add_data_member_location_attribute): When we have
16261         only a constant offset don't emit a new location description using
16262         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
16263         dwarf_version > 2.
16264
16265 2009-07-08  Richard Henderson  <rth@redhat.com>
16266
16267         PR target/38900
16268         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
16269         (enum reg_class): Add CLOBBERED_REGS.
16270         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
16271         * config/i386/i386.c (ix86_conditional_register_usage): Moved
16272         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
16273         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
16274         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
16275         force 64-bit sibcalls into R11.
16276         * config/i386/constraints.md (U): New constraint.
16277         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
16278         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
16279         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
16280
16281 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
16282
16283         * basic-block.h (dump_regset, debug_regset): Remove duplicate
16284         prototypes.
16285         * c-objc-common.h (c_initialize_diagnostics): Ditto.
16286         * ebitmap.h (dump_ebitmap): Ditto.
16287         * optabs.h (optab_libfunc): Ditto.
16288         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
16289         * tree-flow.h (vect_can_force_dr_alignment_p,
16290         get_vectype_for_scalar_type): Ditto.
16291         (vectorize_loops): Move prototype to ...
16292         * tree-vectorizer.h: ... here. Also, adjust comment.
16293         (vect_set_verbosity_level): Remove duplicate prototype.
16294         * tree-ssa-loop.c: Include tree-vectorizer.h.
16295         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
16296
16297 2009-07-08  Nick Clifton  <nickc@redhat.com>
16298
16299         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
16300         forward slash.
16301
16302 2009-07-08  DJ Delorie  <dj@redhat.com>
16303
16304         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
16305         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
16306         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
16307         written to.
16308         * config/mep/intrinsics.md: Regenerated.
16309         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
16310         registers when asm() or calls are detected.
16311
16312 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16313
16314         PR c++/31246
16315         * gimplify.c (gimplify_expr): Propagate no_warning flag when
16316         gimplifying.
16317         * gimple (gimple_build_call_from_tree): Likewise.
16318         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
16319         no_warning flag before warning.
16320
16321 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16322
16323         * tree.c (set_expr_locus): Remove.
16324         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
16325         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
16326         EXPR_LOCATION.
16327         * gimplify.c (internal_get_tmp_var): Likewise.
16328         (gimplify_call_expr): Likewise.
16329         (gimplify_one_sizepos): Likewise.
16330
16331 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
16332
16333         PR debug/40666
16334         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
16335         to variables for debugging purposes.
16336
16337 2009-06-23  Mark Loeser  <mark@halcy0n.com>
16338
16339         PR build/40010
16340         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
16341
16342 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16343
16344         * pretty-print.c (pp_base_format): Remove %J.
16345         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
16346         gcc_cxxdiag_char_table): Likewise.
16347         (init_dynamic_diag_info): Likewise.
16348
16349 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16350
16351         * pretty-print.c (pp_base_format): Remove %H.
16352         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
16353         gcc_cxxdiag_char_table): Likewise.
16354         (init_dynamic_diag_info): Likewise.
16355         * config/mep/mep.c (mep_select_section): Likewise.
16356
16357 2009-07-07  Duncan Sands  <baldrick@free.fr>
16358
16359         * final.c (pass_clean_state): Give the pass a name.
16360         * passes.c (pass_rest_of_compilation): Likewise.
16361         * tree-optimize.c (pass_all_optimizations): Likewise.
16362
16363 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
16364
16365         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
16366         an extra 'decl' for error_at.
16367
16368 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
16369
16370         PR middle-end/40669
16371         * tree-tailcall.c (adjust_return_value_with_ops,
16372         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
16373         if it has complex or vector type.
16374
16375 2009-07-07  Olivier Hainque  <hainque@adacore.com>
16376
16377         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
16378         pthread symbols.
16379
16380 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
16381
16382         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
16383
16384 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16385
16386         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
16387         * c-decl.c: Likewise.
16388         * function.c: Likewise.
16389         * varasm.c: Likewise.
16390         * tree-ssa.c: Likewise.
16391         * c-common.c: Likewise.
16392         * tree-cfg.c: Likewise.
16393         * config/spu/spu.c: Likewise.
16394         * config/ia64/ia64.c: Likewise.
16395         * config/v850/v850.c: Likewise.
16396
16397 2009-07-06  DJ Delorie  <dj@redhat.com>
16398
16399         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
16400         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
16401         unspecified accesses to control registers.
16402         * config/mep/intrinsics.md: Regenerate.
16403         * config/mep/intrinsics.h: Regenerate.
16404         * config/mep/mep-intrin.h: Regenerate.
16405
16406 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
16407
16408         * c-lex.c: Replace %H by an explicit location. Update all calls.
16409         * c-common.c: Likewise.
16410         * c-decl.c: Likewise.
16411         * c-typeck.c: Likewise.
16412         * fold-const.c: Likewise.
16413         * gimplify.c: Likewise.
16414         * stmt.c: Likewise.
16415         * tree-cfg.c: Likewise.
16416         * tree-ssa-loop-niter.c: Likewise.
16417         * tree-vrp.c: Likewise.
16418         * value-prof.c: Likewise.
16419
16420 2009-07-06  Diego Novillo  <dnovillo@google.com>
16421
16422         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
16423         if it has one.  Handle cases where VAR does not have an
16424         annotation or cfun is NULL.
16425
16426 2009-07-06  Diego Novillo  <dnovillo@google.com>
16427
16428         * tree.c: Include debug.h.
16429         (initialize_tree_contains_struct): New.
16430         (init_ttree): Call it.
16431         (tree_node_structure_for_code): Factor out of ...
16432         (tree_node_structure): ... here.
16433         * treestruct.def (TS_PHI_NODE): Remove.
16434         (TS_GIMPLE_STATEMENT): Remove.
16435
16436 2009-07-06  Diego Novillo  <dnovillo@google.com>
16437
16438         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
16439         (debug_tree_chain): Handle cycles.
16440
16441 2009-07-06  Nick Clifton  <nickc@redhat.com>
16442             DJ Delorie  <dj@redhat.com>
16443
16444         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16445         __FMOVD_ENABLED__ is defined.
16446         * config/sh/sh.h
16447         (TARGET_FMOVD): Provide a default definition.
16448         (MASK_FMOVD): Likewise.
16449         (TARGET_CPU_CPP_BUILTINS): Define
16450         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16451         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16452         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
16453         (split for DF load from memory into register): Also handle
16454         MEMs which consist of REG+DISP addressing.
16455         (split for DF store from register to memory): Likewise.
16456         (movsf_ie): Always use single fp_mode.
16457         * config/sh/sh.c (sh_override_options): Do not automatically
16458         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16459         that to the -mfmovd command line switch.
16460         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
16461         (fldi_ok): Always allow.
16462         * config/sh/sh.opt (mfmovd): Remove this switch.
16463         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16464
16465 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
16466             Kaz Kojima  <kkojima@gcc.gnu.org>
16467
16468         PR rtl-optimization/30807
16469         * postreload.c (reload_combine): For every new use of REG_SUM,
16470         record the use of BASE.
16471
16472 2009-07-06  Jan Hubicka  <jh@suse.cz>
16473
16474         * params.def: Revert my accidental commit at 2009-06-30.
16475
16476 2009-07-04  Ian Lance Taylor  <iant@google.com>
16477
16478         PR target/40636
16479         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
16480         EXPORTED_CONST.
16481         (mingw_format_attribute_overrides): Likewise.
16482
16483 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
16484
16485         PR debug/40596
16486         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
16487         don't check cfa.reg.  Instead of cfa.indirect use
16488         fde && fde->drap_reg != INVALID_REGNUM test.
16489
16490 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
16491
16492         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
16493
16494 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
16495
16496         PR target/40587
16497         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
16498
16499 2009-07-03  Richard Guenther  <rguenther@suse.de>
16500
16501         PR tree-optimization/40640
16502         * tree-switch-conversion.c (build_arrays): Perform arithmetic
16503         in original type.
16504
16505 2009-07-03  Jan Hubicka  <jh@suse.cz>
16506
16507         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
16508         for size, reduce amount of inlining.
16509
16510 2009-07-03  Richard Guenther  <rguenther@suse.de>
16511
16512         PR middle-end/34163
16513         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
16514         if t +- x is known to not overflow and the conversion widens the
16515         operation.
16516         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
16517
16518 2009-07-03  Jan Hubicka  <jh@suse.cz>
16519
16520         * ipa-pure-const.c (analyze): Update loop optimizer init.
16521         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
16522         try_remove_empty_loop, remove_empty_loops): Remove.
16523         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
16524         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
16525         to mark regular loops as neccesary.
16526         (degenerate_phi_p): New function.
16527         (propagate_necessity, remove_dead_phis): Use it.
16528         (forward_edge_to_pdom): Likewise.
16529         (eliminate_unnecessary_stmts): Take care to remove uses of results of
16530         virtual PHI nodes that became unreachable.
16531         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
16532         * tree-flow.h (remove_empty_loops): Remove.
16533         * passes.c (init_optimization_passes): Remove.
16534
16535 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
16536
16537         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
16538         can_create_pseudo_p.
16539         (*fix_trunc<mode>_i387_1): Ditto.
16540         (*floathi<mode>2_1): Ditto.
16541         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
16542         (*fistdi2_1): Ditto.
16543         (*fist<mode>2_1): Ditto.
16544         (frndintxf2_floor): Ditto.
16545         (*fist<mode>2_floor_1): Ditto.
16546         (frndintxf2_ceil): Ditto.
16547         (*fist<mode>2_ceil_1): Ditto.
16548         (frndintxf2_trunc): Ditto.
16549         (frndintxf2_mask_pm): Ditto.
16550         (fxam<mode>2_i387_with_temp): Ditto.
16551         * config/i386/sse.md (mulv16qi3): Ditto.
16552         (*sse2_mulv4si3): Ditto.
16553         (mulv2di3): Ditto.
16554         (sse4_2_pcmpestr): Ditto.
16555         (sse4_2_pcmpistr): Ditto.
16556
16557 2009-07-03  Jan Hubicka  <jh@suse.cz>
16558
16559         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
16560         (mark_stmt_necessary): Set it.
16561         (mark_operand_necessary): Set it.
16562         (mark_control_dependent_edges_necessary): Set it.
16563         (mark_virtual_phi_result_for_renaming): New function.
16564         (get_live_post_dom): New function.
16565         (forward_edge_to_pdom): New function.
16566         (remove_dead_stmt): Fix handling of control dependences.
16567         (tree_dce_init): Init new bitmap.
16568         (tree_dce_done): Free it.
16569
16570 2009-07-02  Richard Guenther  <rguenther@suse.de>
16571
16572         PR bootstrap/40617
16573         * tree-ssa-structalias.c (new_var_info): Initialize
16574         is_restrict_var.
16575
16576 2009-07-02  Jan Hubicka  <jh@suse.cz>
16577
16578         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
16579         local.
16580
16581 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
16582
16583         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
16584         instead of recomputing it.  Adjust calls.
16585         (emit_store_flag): Adjust recursive calls.
16586
16587 2009-07-02  Richard Guenther  <rguenther@suse.de>
16588
16589         * tree-ssa-live.c (remove_unused_locals): Do not remove
16590         heap variables.
16591         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
16592         of DECL_EXTERNAL for HEAP variables.
16593         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
16594         HEAP variables.  Do not adjust RESTRICT vars.
16595         (find_what_var_points_to): Nobody cares if something
16596         points to READONLY.
16597
16598 2009-07-02  Ben Elliston  <bje@au.ibm.com>
16599
16600         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
16601         pc_low and pc_high declarations to the top of the function.
16602
16603 2009-07-01  DJ Delorie  <dj@redhat.com>
16604
16605         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
16606         registers as fixed.
16607         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
16608         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
16609         unspecified accesses to control registers.
16610         * config/mep/intrinsics.md: Regenerate.
16611         * config/mep/intrinsics.h: Regenerate.
16612         * config/mep/mep-intrin.h: Regenerate.
16613
16614 2009-07-01  Anthony Green  <green@moxielogic.com>
16615
16616         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
16617         instruction when possible.
16618         (moxie_expand_prologue): Ditto.  Also, save an instruction and
16619         some complexity by popping off of $r12 instead of $sp.
16620         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
16621         operands.
16622
16623 2009-07-01  Richard Henderson  <rth@redhat.com>
16624
16625         PR bootstrap/40347
16626         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
16627         contained no insns, reposition note before last insn.
16628
16629 2009-07-01  Richard Henderson  <rth@redhat.com>
16630
16631         PR debug/40431
16632         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
16633         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
16634
16635 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
16636
16637         PR bootstrap/40558
16638         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
16639         darwin9 for printing reg addresses with %y.
16640
16641 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16642
16643         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
16644         truncation from operands in binary operations.
16645
16646 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
16647
16648         Revert:
16649         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
16650         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
16651         subreg of op0 to the original op0.
16652
16653         * expmed.c (store_bit_field_1): Use a temporary as the destination
16654         instead of a paradoxical subreg when we need to truncate the result.
16655
16656 2009-07-01  DJ Delorie  <dj@redhat.com>
16657
16658         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
16659         names to VLIW variants.
16660         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
16661         * config/mep/intrinsics.md: Regenerate.
16662         * config/mep/intrinsics.h: Regenerate.
16663         * config/mep/mep-intrin.h: Regenerate.
16664
16665 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
16666
16667         PR debug/40462
16668         * jump.c (returnjump_p): Revert last patch.
16669         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
16670
16671 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16672
16673         PR target/40575
16674         * pa.md (casesi32p): Use jump table label to determine the offset
16675         of the jump table.
16676         (casesi64p): Likewise.
16677
16678         * pa.c (forward_branch_p): Return bool type.  Use instruction
16679         addresses when available.  Assert that INSN has a jump label.
16680         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
16681         have a jump label.
16682
16683 2009-07-01  Richard Guenther  <rguenther@suse.de>
16684
16685         PR tree-optimization/19831
16686         * tree-ssa-dce.c (propagate_necessity): Calls to functions
16687         that only act as barriers do not make any previous stores necessary.
16688         * tree-ssa-structalias.c (handle_lhs_call): Delay making
16689         HEAP variables global, do not add a constraint from nonlocal.
16690         (find_func_aliases): Handle escapes through return statements.
16691         (compute_points_to_sets): Make escaped HEAP variables global.
16692
16693 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16694
16695         PR bootstrap/40597
16696         * expmed.c (emit_store_flag): Perform a conversion if necessary,
16697         after reducing a DImode cstore to SImode.
16698
16699 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
16700
16701         * expr.c (expand_expr_real_1): Reinstate fallthrough to
16702         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
16703
16704 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
16705
16706         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
16707         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
16708         to 0.
16709         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
16710         and umod_optab if TARGET_BSD_DIVMOD.
16711         * config/vax/lib1funcs.asm: New file.
16712         * config/vax/t-linux: New file.
16713         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
16714
16715 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
16716
16717         PR c++/40566
16718         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
16719         to type arguments that have void type.
16720
16721         PR debug/40573
16722         * dwarf2out.c (gen_formal_parameter_die): Call
16723         equate_decl_number_to_die if node is different from origin.
16724
16725 2009-06-30  Anthony Green  <green@moxielogic.com>
16726
16727         Clean up moxie port for --enable-build-with-cxx.
16728         * config/moxie/moxie.c (moxie_function_value): First two
16729         parameters are const_tree, not tree.
16730         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
16731         (REG_CLASS_NAMES): Ditto.
16732         (REGNO_REG_CLASS): Ditto.
16733         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
16734         (moxie_function_value): Fix constyness of arguments.
16735
16736 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
16737
16738         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
16739         finalize_size_functions before further processing.
16740         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
16741         (variable_size): Call self_referential_size on size expressions
16742         that contain a PLACEHOLDER_EXPR.
16743         (size_functions): New static variable.
16744         (copy_self_referential_tree_r): New static function.
16745         (self_referential_size): Likewise.
16746         (finalize_size_functions): New global function.
16747         * tree.c: Include tree-inline.h.
16748         (push_without_duplicates): New static function.
16749         (find_placeholder_in_expr): New global function.
16750         (substitute_in_expr) <tcc_declaration>: Return the replacement object
16751         on equality.
16752         <tcc_expression>: Likewise.
16753         <tcc_vl_exp>: If the replacement object is a constant, try to inline
16754         the call in the expression.
16755         * tree.h (finalize_size_functions): Declare.
16756         (find_placeholder_in_expr): Likewise.
16757         (FIND_PLACEHOLDER_IN_EXPR): New macro.
16758         (substitute_placeholder_in_expr): Update comment.
16759         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
16760         is true.
16761         (copy_tree_body_r): Likewise.
16762         (copy_tree_body): New static function.
16763         (maybe_inline_call_in_expr): New global function.
16764         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
16765         (maybe_inline_call_in_expr): Declare.
16766         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
16767         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
16768         GIMPLE_H.
16769
16770 2009-06-30  Richard Guenther  <rguenther@suse.de>
16771
16772         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
16773         continue walking.
16774         (propagate_necessity): Do not mark reaching defs of stores
16775         as necessary.
16776
16777 2009-06-30  Jan Hubicka  <jh@suse.cz>
16778
16779         * cfgloopanal.c (check_irred): Move into ...
16780         (mark_irreducible_loops): ... here; return true if ireducible
16781         loops was found.
16782         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
16783         (analyze_function): Try to prove loop finiteness.
16784         * cfgloop.h (mark_irreducible_loops): Update prototype.
16785         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
16786
16787 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
16788
16789         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
16790
16791 2009-06-30  Ira Rosen  <irar@il.ibm.com>
16792
16793         PR tree-optimization/40542
16794         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
16795         types.
16796
16797 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16798
16799         PR tree-optimization/40582
16800         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
16801         than useless_type_conversion_p.
16802         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
16803         proper place.
16804
16805 2009-06-30  Martin Jambor  <mjambor@suse.cz>
16806
16807         PR middle-end/40554
16808         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
16809
16810 2009-06-30  Richard Guenther  <rguenther@suse.de>
16811
16812         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
16813         use ao_ref references.
16814         (walk_aliased_vdefs): Likewise.
16815         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
16816         * tree-ssa-dce.c (struct ref_data): Remove.
16817         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
16818         (mark_aliased_reaching_defs_necessary): Adjust.
16819         (mark_all_reaching_defs_necessary_1): Likewise.
16820
16821 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
16822
16823         PR boostrap/40597
16824         * expmed.c (emit_cstore): New name of emit_store_flag_1.
16825         (emit_store_flag_1): Extract from emit_store_flag, adjust
16826         calls to (what now is) emit_cstore.
16827         (emit_store_flag): Call emit_store_flag_1 and also use it
16828         for what used to be recursive calls.
16829
16830 2009-06-30  Wei Guozhi  <carrot@google.com>
16831
16832         PR/40416
16833         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
16834         if the target bb post dominates from bb.
16835         * config/i386/i386.c (memory_address_length): Check existence of base
16836         register before using it.
16837
16838 2009-06-30  Nick Clifton  <nickc@redhat.com>
16839             DJ Delorie  <dj@redhat.com>
16840
16841         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16842         __FMOVD_ENABLED__ is defined.
16843         * config/sh/sh.h
16844         (TARGET_FMOVD): Provide a default definition.
16845         (MASK_FMOVD): Likewise.
16846         (TARGET_CPU_CPP_BUILTINS): Define
16847         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16848         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16849         two fmov instructions depending upon whether TARGET_FMOVD is
16850         enabled.
16851         (split for DF load from memory into register): Also handle
16852         MEMs which consist of REG+DISP addressing.
16853         (split for DF store from register to memory): Likewise.
16854         * config/sh/sh.opt (mfmovd): Remove this switch.
16855         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16856         * config/sh/sh.c (sh_override_options): Do not automatically
16857         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16858         that to the -mfmovd command line switch.
16859
16860         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
16861         the SH4 and SH4A.
16862         (fldi_ok): Always allow.
16863         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
16864
16865 2009-06-29  DJ Delorie  <dj@redhat.com>
16866
16867         * doc/install.texi (mep-x-elf): Correct chip's full name.
16868
16869 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
16870
16871         * doc/extend.texi: Fix typo.
16872
16873 2009-06-29  Tom Tromey  <tromey@redhat.com>
16874
16875         * dwarf2.h: Remove.
16876         * Makefile.in (DWARF2_H): New variable.
16877         (except.o): Use it.
16878         (dwarf2out.o): Likewise.
16879         (dwarf2asm.o): Likewise.
16880         * config/i386/t-i386: Use DWARF2_H.
16881         * except.c: Include elf/dwarf2.h.
16882         * unwind-dw2.c: Include elf/dwarf2.h.
16883         * dwarf2out.c: Include elf/dwarf2.h.
16884         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
16885         <dtprel>: New field.
16886         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
16887         (size_of_loc_descr): Likewise.
16888         (output_loc_operands_raw): Likewise.
16889         (output_loc_operands): Handle new dtprel field.
16890         (loc_checksum): Update.
16891         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
16892         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
16893         * unwind-dw2-fde.c: Include elf/dwarf2.h.
16894         * dwarf2asm.c: Include elf/dwarf2.h.
16895         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
16896         * config/mmix/mmix.c: Include elf/dwarf2.h.
16897         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
16898         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
16899         * config/sh/sh.c: Include elf/dwarf2.h.
16900         * config/i386/i386.c: Include elf/dwarf2.h.
16901
16902 2009-06-29  DJ Delorie  <dj@redhat.com>
16903
16904         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
16905
16906         * doc/extend.texi: Add MeP attributes and pragmas.
16907         * doc/invoke.text: Add MeP Options.
16908         * doc/contrib.texi: Add MeP contribution.
16909         * doc/md.texi: Add MeP constraints.
16910         * doc/install.texi: Add MeP target.
16911
16912 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
16913
16914         * target.h (struct gcc_target): Add frame_pointer_required field.
16915         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
16916         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
16917         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
16918         hook.
16919         * reload1.c (update_eliminables): (Ditto.).
16920         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
16921         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16922         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
16923
16924         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
16925
16926         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
16927         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16928         (arm_frame_pointer_required): New function.
16929
16930         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
16931         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16932         (avr_frame_pointer_required_p): Declare as static.
16933         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
16934
16935         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
16936         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16937         (bfin_frame_pointer_required): Make as static, change return type
16938         to bool.
16939         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
16940
16941         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
16942         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16943         (cris_frame_pointer_required): New function.
16944
16945         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
16946
16947         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
16948         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16949         (fr30_frame_pointer_required): New function.
16950
16951         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
16952         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16953         (frv_frame_pointer_required): Make as static, change return type
16954         to bool.
16955         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
16956
16957         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
16958         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16959         (ix86_frame_pointer_required): Make as static, change return type to
16960         bool.
16961         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
16962
16963         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
16964         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16965
16966         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
16967
16968         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
16969
16970         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
16971
16972         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
16973         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16974         (mips_frame_pointer_required): Make as static.
16975         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
16976
16977         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
16978         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16979         (mmix_frame_pointer_required): Mew function.
16980
16981         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
16982         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16983
16984         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
16985
16986         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
16987
16988         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
16989
16990         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
16991         (CAN_ELIMINATE): Redefine.
16992         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16993         (sparc_frame_pointer_required): New function.
16994         (sparc_can_eliminate): New function.
16995         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
16996
16997         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
16998         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16999
17000         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
17001         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
17002         (xtensa_frame_pointer_required): Make as static, change return type
17003         to bool.
17004         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
17005         Remove.
17006
17007 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
17008
17009         * doc/plugins.texi: Document PLUGIN_START_UNIT.
17010         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
17011         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
17012         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
17013         (register_callback): Handle PLUGIN_START_UNIT.
17014         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
17015
17016 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
17017
17018         * tree.c (process_call_operands): Propagate TREE_READONLY from the
17019         operands.
17020         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
17021         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
17022
17023 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
17024
17025         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
17026         move cost.
17027
17028 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
17029
17030         * doc/extend.texi (Additional Floating Types): __float128 is also
17031         supported on i386 targets.
17032
17033 2009-06-29  Richard Guenther  <rguenther@suse.de>
17034
17035         PR middle-end/14187
17036         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
17037         flag.
17038         (pt_solutions_same_restrict_base): Declare.
17039         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
17040         flag.
17041         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
17042         (make_constraint_from, make_copy_constraint): Move earlier.
17043         (make_constraint_from_heapvar): New function.
17044         (make_constraint_from_restrict): Likewise.
17045         (handle_lhs_call): Use it.
17046         (find_func_aliases): Use it to track conversions to restrict
17047         qualified pointers.
17048         (struct fieldoff): Add only_restrict_pointers flag.
17049         (push_fields_onto_fieldstack): Initialize it.
17050         (create_variable_info_for): Track global restrict qualified pointers.
17051         (intra_create_variable_infos): Use make_constraint_from_heapvar.
17052         Track restrict qualified pointer arguments.
17053         (set_uids_in_ptset): Use varinfo is_global_var flag.
17054         (find_what_var_points_to): Set the vars_contains_restrict flag.
17055         Always create the points-to solution for sets including restrict tags.
17056         (pt_solutions_same_restrict_base): New function.
17057         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
17058         qualified pointers use pt_solutions_same_restrict_base as
17059         additional source for disambiguation.
17060
17061 2009-06-29  Richard Guenther  <rguenther@suse.de>
17062
17063         PR middle-end/38212
17064         * alias.c (find_base_decl): Remove.
17065         (get_deref_alias_set_1): Remove restrict handling.
17066         * c-common.c (c_apply_type_quals_to_decl): Do not set
17067         DECL_POINTER_ALIAS_SET.
17068         * gimplify.c (find_single_pointer_decl_1): Remove.
17069         (find_single_pointer_decl): Likewise.
17070         (internal_get_tmp_var): Remove restrict handling.
17071         (gimple_regimplify_operands): Likewise.
17072         * omp-low.c (expand_omp_atomic_pipeline): Do not set
17073         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
17074         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
17075         * tree.c (restrict_base_for_decl): Remove.
17076         (init_ttree): Do not allocate it.
17077         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
17078         LABEL_DECL_UID for label decls.
17079         (copy_node_stat): Do not copy restrict information.
17080         (decl_restrict_base_lookup): Remove.
17081         (decl_restrict_base_insert): Likewise.
17082         (print_restrict_base_statistics): Likewise.
17083         (dump_tree_statistics): Do not call print_restrict_base_statistics.
17084         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
17085         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
17086         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
17087         (LABEL_DECL_UID): Adjust.
17088         (DECL_BASED_ON_RESTRICT_P): Remove.
17089         (DECL_GET_RESTRICT_BASE): Likewise.
17090         (SET_DECL_RESTRICT_BASE): Likewise.
17091         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
17092
17093         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
17094         instead of DECL_POINTER_ALIAS_SET.
17095         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
17096         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
17097         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
17098
17099 2009-06-29  Richard Guenther  <rguenther@suse.de>
17100
17101         PR tree-optimization/40579
17102         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
17103         the IL to simplify has constants that overflowed.
17104
17105 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
17106
17107         PR tree-optimization/40550
17108         * tree-vect-generic.c (expand_vector_operations_1): Compute in
17109         vector_compute_type only when the size of vector_compute_type is
17110         less than the size of type.
17111
17112 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
17113
17114         * fold-const.c (contains_label_1): Fix comments.
17115         (contains_label_p): Do not walk trees multiple time.
17116
17117 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17118
17119         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
17120         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
17121         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
17122         ix86_fp_comparison_operator.
17123         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
17124         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
17125         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
17126         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
17127         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
17128         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
17129         (related splits): Change predicate to ix86_fp_comparison_operator.
17130         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
17131         instead of ix86_fp_comparison_codes.
17132         (ix86_trivial_fp_comparison_operator,
17133         ix86_fp_comparison_operator): New.
17134         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
17135         (ix86_expand_compare): Eliminate last two parameters.
17136         (ix86_fp_jump_nontrivial_p): Kill.
17137         * config/i386/i386.c (put_condition_code): Eliminate call to
17138         ix86_fp_comparison_codes and subsequent assertion.
17139         (ix86_fp_comparison_codes): Eliminate.
17140         (ix86_fp_swap_condition): New.
17141         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
17142         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
17143         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
17144         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
17145         and ix86_fp_swap_condition.
17146         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
17147         Use ix86_fp_comparison_strategy.
17148         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
17149         (ix86_fp_jump_nontrivial_p): Eliminate.
17150         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
17151         call to ix86_expand_compare.
17152         (ix86_split_fp_branch, ix86_expand_setcc,
17153         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
17154         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
17155
17156 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17157
17158         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
17159         related to jump_clobbers.
17160         * config/arm/arm.md (conds): Remove jump_clob case.
17161         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
17162         splits): Change comparison_operator to arm_comparison_operator.
17163         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
17164         Eliminate.
17165
17166 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17167
17168         * dojump.c (do_compare_rtx_and_jump): Try swapping the
17169         condition for floating point modes.
17170         * expmed.c (emit_store_flag_1): Move here a bigger part
17171         of emit_store_flag.
17172         (emit_store_flag): Try swapping the condition for floating point
17173         modes.
17174         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
17175
17176 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17177
17178         * expr.c (expand_expr_real_1): Just use do_store_flag.
17179         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
17180         emit_store_flag_force.
17181         * expmed.c (emit_store_flag_force): Copy here trick
17182         previously in expand_expr_real_1.  Try reversing the comparison.
17183         (emit_store_flag_1): Work if target is NULL.
17184         (emit_store_flag): Work if target is NULL, using the result mode
17185         from the comparison.  Use split_comparison, restructure final part
17186         to simplify conditionals.
17187
17188 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
17189
17190         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
17191         * dojump.c (do_jump): Change handling of floating-point
17192         ops to use just do_compare_and_jump.
17193         (split_comparison): New.
17194         (do_compare_rtx_and_jump): Add here logic coming previously
17195         in do_jump, using split_comparison.
17196
17197 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
17198
17199         PR target/40489
17200         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
17201
17202 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17203
17204         * tree-ssa-alias.c: Fix unintentional commit.
17205
17206 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17207
17208         * passes.c (execute_one_pass): Fix unintentional commit.
17209
17210 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17211
17212         * df-problems.c (df_set_seen, df_unset_seen): Delete.
17213         (df_rd_local_compute, df_md_local_compute): Inline them.
17214
17215         (df_md_scratch): New.
17216         (df_md_alloc, df_md_free): Allocate/free it.
17217         (df_md_local_compute): Only include live registers in init.
17218         (df_md_transfer_function): Prune the in-set computed by
17219         the confluence function, and the gen-set too.
17220
17221 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17222
17223         PR rtl-optimization/26854
17224         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
17225         * df-problems.c (df_rd_add_problem): Fix comment.
17226         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
17227         df_md_simulate_artificial_defs_at_top,
17228         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
17229         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
17230         df_md_transfer_function, df_md_init, df_md_confluence_0,
17231         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
17232         problem_MD, df_md_add_problem): New.
17233         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
17234         df_md_get_bb_info): New.
17235         (DF_LAST_PROBLEM_PLUS1): Adjust.
17236
17237         * Makefile.in (fwprop.o): Include domwalk.h.
17238         * fwprop.c: Include domwalk.h.
17239         (reg_defs, reg_defs_stack): New.
17240         (bitmap_only_bit_between): Remove.
17241         (process_defs): New.
17242         (process_uses): Use reg_defs and local_md instead of
17243         bitmap_only_bit_between and local_rd.
17244         (single_def_use_enter_block): New, from build_single_def_use_links.
17245         (single_def_use_leave_block): New.
17246         (build_single_def_use_links): Remove code moved to
17247         single_def_use_enter_block, invoke domwalk.
17248         (use_killed_between): Adjust comment.
17249
17250 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17251
17252         * bitmap.h (bitmap_ior_and_into): New.
17253         * bitmap.c (bitmap_ior_and_into): New.
17254
17255 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
17256
17257         * domwalk.h (struct dom_walk_data): Remove all callbacks except
17258         before_dom_children_before_stmts and after_dom_children_after_stmts.
17259         Rename the two remaining callbacks to just before_dom_children and
17260         after_dom_children. Remove other GIMPLE statement walking bits.
17261         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
17262         * graphite.c: Do not include domwalk.h.
17263         * tree-into-ssa.c (interesting_blocks): New global.
17264         (struct mark_def_sites_global_data): Remove it and names_to_rename.
17265         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
17266         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
17267         now that they're not domwalk callbacks.
17268         (rewrite_initialize_block): Rename to...
17269         (rewrite_enter_block): ... this, place after called functions.  Test
17270         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
17271         (rewrite_finalize_block): Rename to...
17272         (rewrite_leave_block): ... this, place after called functions.
17273         (rewrite_update_init_block): Rename to...
17274         (rewrite_update_enter_block): ... this, place after called functions.
17275         Test interesting_blocks, call rewrite_update_stmt and
17276         rewrite_update_phi_arguments.
17277         (rewrite_update_fini_block): Rename to...
17278         (rewrite_leave_block): ... this, place after called functions.
17279         (rewrite_blocks): Remove last argument, simplify initialization of
17280         walk_data.
17281         (mark_def_sites_initialize_block): Rename to...
17282         (mark_def_sites_block): ... this, call mark_def_sites.
17283         (mark_def_sites_blocks): Remove argument, simplify initialization of
17284         walk_data.
17285         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
17286         (update_ssa): Likewise.
17287         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
17288         callback.
17289         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
17290         (dom_opt_initialize_block): Rename to...
17291         (dom_opt_enter_block): ... this, place after called functions.  Walk
17292         statements here, inline propagate_to_outgoing_edges.
17293         (dom_opt_finalize_block): Rename to...
17294         (dom_opt_leave_block): ... this, place after called functions.
17295         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
17296         domwalk callback.
17297         (dse_enter_block, dse_record_phi): New.
17298         (dse_record_phis): Delete.
17299         (dse_finalize_block): Rename to...
17300         (dse_leave_block): ... this.
17301         (tree_ssa_dse): Simplify initialization of walk_data.
17302         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
17303         Adjust initialization of walk_data.
17304         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
17305         * tree-ssa-loop-phiopt.c (get_non_trapping):
17306         Adjust initialization of walk_data.
17307         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
17308         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
17309         it's not a domwalk callback.
17310         (uncprop_initialize_block): Rename to...
17311         (dse_enter_block): ... this, call uncprop_into_successor_phis.
17312         (dse_finalize_block): Rename to...
17313         (dse_leave_block): ... this.
17314         (tree_ssa_uncprop): Simplify initialization of walk_data.
17315         * Makefile.in: Adjust dependencies.
17316
17317 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
17318
17319         * arm.md (casesi): Fix test for Thumb1.
17320         (thumb1_casesi_internal_pic): Likewise.
17321         (thumb1_casesi_dispatch): Likewise.
17322
17323 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
17324
17325         * config/arm/arm-cores.def: Added core cortex-m0.
17326         * config/arm/arm-tune.md: Regenerated.
17327         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
17328
17329 2009-06-26  DJ Delorie  <dj@redhat.com>
17330
17331         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
17332
17333         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
17334         the scheduler doesn't tag jump insns.
17335
17336 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
17337
17338         * c-decl.c (merge_decls): Re-indent.
17339
17340 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
17341
17342         PR c/39902
17343         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
17344         Special-case decimal float constants.
17345
17346 2009-06-26  Richard Henderson  <rth@redhat.com>
17347
17348         * function.h (struct function): Add cannot_be_copied_reason,
17349         and cannot_be_copied_set.
17350         * tree-inline.c (has_label_address_in_static_1): Rename from
17351         inline_forbidden_p_2; don't set inline_forbidden_reason here.
17352         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
17353         don't set inline_forbidden_reason.
17354         (copy_forbidden): New function, split out of inline_forbidden_p.
17355         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
17356         (inline_forbidden_p): Use copy_forbidden.
17357         (tree_versionable_function_p): Likewise.
17358         (inlinable_function_p): Merge into tree_inlinable_function_p.
17359         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
17360         * ipa-cp.c (ipcp_versionable_function_p): New function.
17361         (ipcp_cloning_candidate_p): Use it.
17362         (ipcp_node_modifiable_p): Likewise.
17363
17364 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
17365
17366         * builtins.c (expand_builtin_alloca): Handle builtin alloca
17367         that is marked not to be inlined. Remove flag_mudflap use.
17368         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
17369         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
17370
17371 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
17372
17373         PR bootstrap/40338
17374         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
17375         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
17376
17377 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
17378
17379         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
17380         shared libgcc.
17381         (__mingwthr_remove_key_dtor): Likewise.
17382
17383 2009-06-26  Richard Guenther  <rguenther@suse.de>
17384
17385         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
17386
17387 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
17388
17389         PR middle-end/40525
17390         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
17391         try the non-cond_exec path also.
17392
17393 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17394
17395         PR target/40468
17396         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
17397         (output_cbranch): Use new functions.
17398         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
17399         Likewise.
17400
17401 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
17402             Pat Haugen  <pthaugen@us.ibm.com>
17403             Revital Eres <ERES@il.ibm.com>
17404
17405         * config/rs6000/rs6000.c (print_operand): Correct lossage message
17406         for %c error.  Add %x support to print VSX registers as a unified
17407         register set, instead of separate float and altivec registers.
17408         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
17409         %y case, and add support for VSX pre-modify addresses.
17410         (output_toc): Add assert for CONST containing an integer constant
17411         in the PLUS case.
17412         (rs6000_adjust_cost): Add POWER7 support.
17413         (insn_must_be_first_in_group): Ditto.
17414         (insn_must_be_last_in_group): Ditto.
17415         (rs6000_emit_popcount): Ditto.
17416         (rs6000_vector_mode_supported_p): Ditto.
17417
17418         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
17419         Change some of the functions called by macros to being called
17420         through a pointer, so debug functions can be inserted if
17421         -mdebug=addr or -mdebug=cost.
17422         (rs6000_preferred_reload_class_ptr): Ditto.
17423         (rs6000_secondary_reload_class_ptr): Ditto.
17424         (rs6000_secondary_memory_needed_ptr): Ditto.
17425         (rs6000_cannot_change_mode_class_ptr): Ditto.
17426         (rs6000_secondary_reload_inner): Ditto.
17427         (rs6000_legitimize_reload_address): Ditto.
17428         (rs6000_legitimize_reload_address_ptr): Ditto.
17429         (rs6000_mode_dependent_address): Ditto.
17430         (rs6000_mode_dependent_address_ptr): Ditto.
17431
17432         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
17433         function to return true if the mode allows reg + integer
17434         addresses.
17435         (virtual_stack_registers_memory_p): New function to return true if
17436         the address refers to a virtual stack register.
17437         (rs6000_legitimate_offset_address_p): Move code to say whether a
17438         mode supports reg+int addressing to reg_offset_addressing_ok_p and
17439         call it.
17440         (rs6000_legitimate_address_p): Add checks for modes that only can
17441         do reg+reg addressing.  Start adding VSX support.
17442         (rs6000_legitimize_reload_address): Ditto.
17443         (rs6000_legitimize_address): Ditto.
17444         (rs6000_debug_legitimate_address_p): New debug functions for
17445         -mdebug=addr and -mdebug=cost.
17446         (rs6000_debug_rtx_costs): Ditto.
17447         (rs6000_debug_address_costs): Ditto.
17448         (rs6000_debug_adjust_cost): Ditto.
17449         (rs6000_debug_legitimize_address): Ditto.
17450         (rs6000_legitimize_reload_address_ptr): Point to call normal
17451         function or debug function.  Make functions called via pointer
17452         static.
17453         (rs6000_mode_dependent_address_ptr): Ditto.
17454         (rs6000_secondary_reload_class_ptr): Ditto.
17455         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
17456         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
17457         into a friendlier error.
17458         (rs6000_init_builtins): Add initial VSX support.
17459         (rs6000_adjust_cost): Fix some spacing issues.
17460
17461         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
17462         (REG_CLASS_NAMES): Ditto.
17463         (REG_CLASS_CONTENTS): Ditto.
17464         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
17465         pointer, to add -mdebug=addr support.
17466         (CANNOT_CHANGE_MODE_CLASS): Ditto.
17467         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
17468         -mdebug=addr support.
17469         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
17470         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
17471         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
17472
17473         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
17474         16-bit values.
17475         (bswapsi*): Set attribute types for load/store.  Add combiner
17476         patterns to eliminate zero extend on 64-bit.
17477         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
17478         stdbrx if the hardware supports those instructions.
17479
17480 2009-06-25  Ian Lance Taylor  <iant@google.com>
17481
17482         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
17483         (Link Options): Document -static-libstdc++.
17484
17485 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17486
17487         PR target/38731
17488         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
17489         DATA_ALIGNMENT instead.
17490
17491 2009-06-25  Richard Guenther  <rguenther@suse.de>
17492
17493         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
17494         indirect references against the callused/escaped solutions.
17495         (call_may_clobber_ref_p_1): Likewise.
17496
17497 2009-06-25  Martin Jambor  <mjambor@suse.cz>
17498
17499         PR tree-optimization/40493
17500         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
17501         (enum unscalarized_data_handling): New type.
17502         (handle_unscalarized_data_in_subtree): Return what has been done.
17503         (load_assign_lhs_subreplacements): Handle left flushes differently.
17504         (sra_modify_assign): Use unscalarized_data_handling, simplified
17505         condition determining whether to remove the statement.
17506
17507 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
17508
17509         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
17510         excerpt - @ should be doubled for texinfo.
17511
17512 2009-06-24  Ian Lance Taylor  <iant@google.com>
17513
17514         * config/arc/arc.c: Include "df.h".
17515         (arc_attribute_table): Make static.  Move higher in file.
17516         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
17517         (output_shift): Initialize n later to avoid warning.
17518         * config/arm/arm.c (arm_attribute_table): Make static.  Move
17519         higher in file.
17520         * config/avr/avr.c (avr_attribute_table): Make static.  Move
17521         higher in file.
17522         (reg_class_tab): Change array type from int to enum reg_class.
17523         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
17524         LABEL_REF.
17525         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
17526         (lshrhi3_out): Likewise.
17527         (class_likely_spilled_p): Change return type to bool.
17528         (avr_rtx_costs): Use local code variable with enum type.
17529         * config/avr/avr.md (movmemhi): Use add_reg_note.
17530         (andhi3, andsi3): Don't use AS2 with "and".
17531         (iorhi3, iorsi3): Don't use AS2 with "or".
17532         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
17533         * config/crx/crx.c: Include "df.h".
17534         (crx_attribute_table): Make static.
17535         * config/m32r/m32r.c: Include "df.h".
17536         (m32r_attribute_table): Make static.  Move higher in file.
17537         (pop): Use add_reg_note.
17538         (block_move_call): Change 0 to LCT_NORMAL in function call.
17539         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
17540         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
17541         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
17542         declare, not just when TREE_CODE is defined.
17543         * config/m68hc11/m68hc11.c: Include "expr.h".
17544         (m68hc11_attribute_table): Make static.  Move higher in file.
17545         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
17546         function call.
17547         (m68hc11_register_indirect_p): Likewise.
17548         (m68hc11_function_arg_padding): Change return type to enum
17549         direction.
17550         (emit_move_after_reload): Use add_reg_note.
17551         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
17552         (m68hc11_split_logical): Likewise.
17553         (m68hc11_rtx_costs): Add local code_and outer_code variables with
17554         enum type.
17555         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
17556         to VOIDmode in function call.
17557         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
17558         tree is defined.
17559         (m68hc11_split_logical): Update declaration.
17560         (m68hc11_function_arg_padding): Update declaration.
17561         * config/mcore/mcore.c (regno_reg_class): Change form array of int
17562         to array of enum reg_class.
17563         (mcore_attribute_table): Make static.  Move higher in file.
17564         (mcore_rtx_costs): Add cast to enum type.
17565         * config/mcore/mcore.h (regno_reg_class): Update declaration.
17566         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
17567         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
17568         in file.
17569         * config/sh/predicates.md (trapping_target_operand): Rename and to
17570         and_expr.
17571         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
17572         higher in file.
17573         * config/spu/spu.c (spu_attribute_table): Make static.  Move
17574         higher in file.
17575         * config/v850/v850.c (v850_attribute_table): Make static.  Move
17576         higher in file.
17577         (v850_rtx_costs): Use local code with enum type.
17578         (expand_epilogue): Add cast.
17579         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
17580
17581 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
17582
17583         PR target/40515
17584         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
17585         -m2a-single-only and -m2a-nofpu.
17586         * config/sh/sh.opt: Document m2a generates FPU code.
17587
17588 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
17589
17590         * defaults.h (CAN_ELIMINATE): Provide default.
17591         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
17592         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
17593         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
17594         * config/spu/spu.h (CAN_ELIMINATE): Delete.
17595         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
17596         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
17597         * config/cris/cris.h (CAN_ELIMINATE): Delete.
17598         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
17599         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
17600         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
17601
17602 2009-06-24  DJ Delorie  <dj@redhat.com>
17603
17604         * mep-ext-cop.cpu: Fix copyright notice.
17605         * mep-default: Fix copyright notice.
17606         * mep-core: Fix copyright notice.
17607         * mep: Fix copyright notice.
17608         * mep-ivc2: Fix copyright notice.
17609         * mep-c5: Fix copyright notice.
17610
17611 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
17612
17613         * doc/contrib.texi (Contributors):
17614
17615 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
17616
17617         PR middle-end/40501
17618         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
17619         src and dst operands if necessary.
17620
17621 2009-06-23  DJ Delorie  <dj@redhat.com>
17622
17623         Add MeP port.
17624         * config.gcc: Add mep support.
17625         * recog.c: Resurrect validate_replace_rtx_subexp().
17626         * recog.h: Likewise.
17627         * config/mep/: Add new port:
17628         * config/mep/constraints.md: New file.
17629         * config/mep/default.h: New file.
17630         * config/mep/intrinsics.h: New file.
17631         * config/mep/intrinsics.md: New file.
17632         * config/mep/ivc2-template.h: New file.
17633         * config/mep/mep-c5.cpu: New file.
17634         * config/mep/mep-core.cpu: New file.
17635         * config/mep/mep-default.cpu: New file.
17636         * config/mep/mep-ext-cop.cpu: New file.
17637         * config/mep/mep-intrin.h: New file.
17638         * config/mep/mep-ivc2.cpu: New file.
17639         * config/mep/mep-lib1.asm: New file.
17640         * config/mep/mep-lib2.c: New file.
17641         * config/mep/mep-pragma.c: New file.
17642         * config/mep/mep-protos.h: New file.
17643         * config/mep/mep-tramp.c: New file.
17644         * config/mep/mep.c: New file.
17645         * config/mep/mep.cpu: New file.
17646         * config/mep/mep.h: New file.
17647         * config/mep/mep.md: New file.
17648         * config/mep/mep.opt: New file.
17649         * config/mep/predicates.md: New file.
17650         * config/mep/t-mep: New file.
17651
17652 2009-06-23  Ian Lance Taylor  <iant@google.com>
17653
17654         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
17655         from loose_warn into c_loose_warn and from strict_warn into
17656         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
17657         --enable-build-with-cxx.  Set and substitute
17658         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
17659         * Makefile.in (CXXFLAGS): New variable.
17660         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
17661         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
17662         the default is the same as $(STRICT_WARN).
17663         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
17664         (CXX): New variable.
17665         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
17666         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
17667         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
17668         (HOST_LIBS): New variable.
17669         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
17670         (ALL_CXXFLAGS): New variable.
17671         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
17672         * doc/install.texi (Configuration): Document
17673         --enable-build-with-cxx, --with-stage1-ldflags,
17674         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
17675         * configure: Rebuild.
17676
17677 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17678
17679         * config/arm/arm.c (arm_override_options): Fix braces and formatting
17680         from previous commit.
17681
17682 2009-06-23  Ian Lance Taylor  <iant@google.com>
17683
17684         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
17685
17686 2009-06-23  Ian Lance Taylor  <iant@google.com>
17687
17688         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
17689         with ATTRIBUTE_UNUSED.
17690
17691 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
17692             Pat Haugen  <pthaugen@us.ibm.com>
17693             Revital Eres  <eres@il.ibm.com>
17694
17695         * config.in (HAVE_AS_POPCNTD): Add default definition.
17696         (HAVE_AS_LWSYNC): Ditto.
17697
17698         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
17699         release number.
17700         (gcc_cv_as_powerpc_cmpb): Ditto.
17701         (gcc_cv_as_powerpc_dfp): Ditto.
17702         (gcc_cv_as_powerpc_vsx): Ditto.
17703         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
17704         supporting the popcntd/lwsync instructions.
17705         (gcc_cv_as_powerpc_lwsync): Ditto.
17706         * configure: Regenerate.
17707
17708         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
17709         -mcpu=native and -mcpu=power7.
17710         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
17711
17712         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
17713         a variable instead of a mask to reduce the number of mask bits.
17714         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
17715         (-mbit-word): Ditto.
17716         (-mregnames): Ditto.
17717         * config/rs6000/rs6000.opt (-mupdate): Ditto.
17718         (-mfused-madd): Ditto.
17719
17720         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
17721         2.06 instructions.
17722         (-mvsx): New switch for VSX instructions.
17723         (-misel): Move from a variable to a mask to allow it to be set by
17724         -mcpu=.
17725
17726         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
17727         function declaration to an array declaration.
17728         (rs6000_hard_regno_nregs): New external array declaration.
17729
17730         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
17731         files included by rs6000.md.
17732
17733         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
17734         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
17735
17736         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
17737         a target mask.
17738         (rs6000_debug_reg): New -mdebug= variables.
17739         (rs6000_debug_addr): Ditto.
17740         (rs6000_debug_cost): Ditto.
17741         (rs6000_pmode): New variable to hold Pmode.
17742         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
17743         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
17744         calculated at compiler start.
17745         (rs6000_hard_regno_nregs): Change function to an array which holds
17746         HARD_REGNO_NREGS calculated at compiler start.
17747         (rs6000_explicit_options): Delete isel field.
17748         (rs6000_vector_unit): New array to hold which vector unit
17749         supports arithmetic options for a given type.
17750         (rs6000_vector_mem): New array to hold which vector unit supports
17751         memory reference operations for a given type.
17752         (rs6000_vector_align): New array to given the alignment of each
17753         vector type.
17754         (power7_cost): New basic costs for power7.
17755         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
17756         (rs6000_hard_regno_nregs_internal): New function, moved from
17757         HARD_REGNO_NREGS, to calculate the number of registers each hard
17758         register takes for each type.
17759         (rs6000_debug_reg_print): New function for -mdebug=reg support.
17760         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
17761         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
17762         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
17763         unit information here so it is calculated once at compiler startup
17764         time.
17765         (rs6000_override_options): Make -misel a target mask.  Add more
17766         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
17767         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
17768         -mdebug=cost.
17769         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
17770         (rs6000_handle_option): Move -misel from variable to target mask.
17771         (rs6000_builtin_mask_for_load): Add VSX support.
17772         (rs6000_conditional_register_usage): Ditto.
17773         (USE_ALTIVEC_FOR_ARG_P): Ditto.
17774         (function_arg_boundary): Ditto.
17775         (rs6000_expand_builtin): Ditto.
17776         (def_builtin): Make abort message a little friendlier.
17777         (rs6000_emit_int_cmove): Add support for 64-bit isel.
17778
17779         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
17780         assembler support the popcntd instruction instead of a vsx
17781         instruction to enable power7 support.
17782         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
17783         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
17784         option to the assembler if -mcpu=native.
17785         (ASM_CPU_NATIVE_SPEC): Ditto.
17786         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
17787         ISA 2.06 features.
17788         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
17789         the lwsync instruction.
17790         (enum processor_type): Add PROCESSOR_POWER7.
17791         (rs6000_debug_reg): New -mdebug= options.
17792         (rs6000_debug_addr): Ditto.
17793         (rs6000_debug_cost): Ditto.
17794         (rs6000_isel): Delete.
17795         (enum rs6000_vector): New enum to say what vector unit we have.
17796         (VECTOR_UNIT_*): New macros to say which vector unit has
17797         arithmetic operations for a given type.
17798         (VECTOR_MEM_*): New macros to say which vector unit has memory
17799         operations for a given type.
17800         (TARGET_LDBRX): Whether the machine supports the ldbrx
17801         instruction.
17802         (TARGET_ISEL): Delete, -misel moved to be a mask.
17803         (TARGET_ISEL64): New macro for 64-bit isel support.
17804         (UNITS_PER_VSX_WORD): New macro.
17805         (POINTER_SIZE): Move to be an external variable, rather than
17806         calculating whether we are generating 32 ot 64-bit code.
17807         (Pmode): Ditto.
17808         (STACK_BOUNDARY): Add VSX support.
17809         (LOCAL_ALIGNMENT): Ditto.
17810         (SLOW_UNALIGNED_ACCESS): Ditto.
17811         (VSX_REGNO_P): New macro for VSX support.
17812         (VFLOAT_REGNO_P): Ditto.
17813         (VINT_REGNO_P): Ditto.
17814         (VLOGICAL_REGNO_P): Ditto.
17815         (VSX_VECTOR_MODE): Ditto.
17816         (VSX_SCALAR_MODE): Ditto.
17817         (VSX_MODE): Ditto.
17818         (VSX_MOVE_MODE): Ditto.
17819         (VSX_REG_CLASS_P): Ditto.
17820         (HARD_REGNO_NREGS): Instead of calling a function, use an array
17821         lookup.
17822         (UNITS_PER_SIMD_WORD): Add VSX support.
17823         (MODES_TIEABLE_P): Ditto.
17824         (STARTING_FRAME_OFFSET): Ditto.
17825         (STACK_DYNAMIC_OFFSET): Ditto.
17826         (EPILOGUE_USES): Ditto.
17827         (REGNO_REG_CLASS): Move to array lookup.
17828         (CLASS_MAX_NREGS): Ditto.
17829         (rs6000_vector_reg_class): Add declaration.
17830         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
17831         overlap with the floating point and Altivec registers.
17832
17833         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
17834
17835         * config/rs6000/driver-rs6000.c (asm_names): New static array to
17836         give the appropriate asm switches if -mcpu=native.
17837         (host_detect_local_cpu): Add support for "asm".
17838         (host_detect_local_cpu): Follow GNU code guidelines for name.
17839
17840         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
17841         -mbit-word to a variable instead of being a target mask.
17842
17843         * config/rs6000/sync.md (lwsync): If the assembler supports it,
17844         emit the lwsync instruction instead of emitting the instruction as
17845         an integer constant.
17846
17847         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
17848         fixuns_trundfsi2, move expander into rs6000.md.
17849
17850         * config/rs6000/rs6000.md (cpu): Add power7.
17851         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
17852         (logical predicate patterns): Change the single instruction
17853         primitives that set CR0 to be fast_compare instead of compare.
17854         (norsi*): Ditto.
17855         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
17856         (popcntddi2): Ditto.
17857         (popcount<mode>): Ditto.
17858         (floating multiply/add insns): Name the floating point
17859         multiply/add insns.
17860         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
17861         (isel_unsigned_<mode>): Ditto.
17862         (fixuns_trundfsi2): Move expander here from spe.md.
17863         (smindi3): Define if we have -misel on 64-bit systems.
17864         (smaxdi3): Ditto.
17865         (umindi3): Ditto.
17866         (umaxdi3): Ditto.
17867
17868 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
17869
17870         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
17871         extra_objs.
17872         * config/avr/avr.c (avr_current_device): New variable.
17873         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
17874         (avr_arch, mcu_type_s): Move to avr.h.
17875         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
17876         default_data_section_start fields.
17877         (avr_arch): Moved from avr.c.
17878         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
17879         library_name fields.
17880         (avr_current_device, avr_mcu_types, avr_arch_types,
17881         avr_device_to_arch, avr_device_to_data_start,
17882         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
17883         (EXTRA_SPEC_FUNCTIONS): Define.
17884         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
17885         options mapping. Use device_to_arch and device_to_data_start insted.
17886         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
17887         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
17888         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
17889         * config/avr/driver-avr.c: New file.
17890         * config/avr/avr-devices.c: New file.
17891
17892 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
17893
17894         * var-tracking.c (unshare_variable): Force initialized to
17895         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
17896         (set_variable_part): Likewise.
17897         (struct variable_union_info): Remove pos_src field.
17898         (vui_vec, vui_allocated): New variables.
17899         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
17900         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
17901         == 1 use a simpler sorting algorithm.  Compute pos field right
17902         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
17903         Avoid quadratic comparison if !flag_var_tracking_uninit.
17904         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
17905         unshare_variable unconditionally.
17906         (dataflow_set_different_2): Removed.
17907         (dataflow_set_different): Don't traverse second hash table.
17908         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
17909         unconditionally to var_reg_set or var_mem_set.
17910         (emit_notes_in_bb): Likewise.
17911         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
17912         unshare_variable.
17913         (emit_note_insn_var_location): Don't set initialized to
17914         VAR_INIT_STATUS_INITIALIZED early.
17915         (vt_finalize): Free vui_vec if needed, clear vui_vec and
17916         vui_allocated.
17917         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
17918
17919         * tree-object-size.c (addr_object_size): Instead of checking
17920         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
17921         are no FIELD_DECLs following it.
17922
17923 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
17924
17925         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
17926         order to match bswaps with signed source operands.
17927
17928 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17929
17930         * sdbout.c (sdbout_one_type): Fix braces in switch.
17931
17932 2009-06-23  Richard Guenther  <rguenther@suse.de>
17933
17934         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
17935         member.
17936         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
17937         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
17938         var_callused, callused_tree, var_storedanything, storedanything_tree,
17939         var_integer, integer_tree): Remove global variables.
17940         (new_var_info): Do not pass new id, append the new var to the
17941         global variable vector.
17942         (do_ds_constraint): Use is_global_var member of the variable-info.
17943         (new_scalar_tmp_constraint_exp): Adjust.
17944         (create_function_info_for): Likewise.
17945         (create_variable_info_for): Likewise.
17946         (find_what_var_points_to): Remove dead code.
17947         (init_base_vars): Simplify.
17948         (compute_points_to_sets): Adjust.
17949
17950 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17951
17952         * combine.c (try_combine): Dump information about the insns we're
17953         combining.
17954
17955 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17956
17957         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
17958         check when calling force_to_mode on TRUNCATE's operand.
17959
17960 2009-06-22  Ian Lance Taylor  <iant@google.com>
17961
17962         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
17963
17964 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17965
17966         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
17967
17968 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17969
17970         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
17971         override library linkage flags such as -static-libgcc or
17972         -shared-libgcc.
17973
17974 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17975
17976         * config/m68k/m68k-devices.def: Add line for MCF5221x.
17977
17978 2009-06-22  Ian Lance Taylor  <iant@google.com>
17979
17980         * config/linux.opt: Put mglibc ahead of muclibc.
17981
17982         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
17983         for duplicate decls.
17984
17985 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17986
17987         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
17988
17989 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17990
17991         PR objc/28050
17992         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
17993         instead of NULL if a parser error occurs.
17994
17995 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17996
17997         * dwarf2out.c (dwarf2_debug_hooks): Initialize
17998         non-DWARF2_DEBUGGING_INFO version.
17999
18000 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
18001
18002         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
18003         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
18004
18005         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
18006         (LIBGCC2_TF_CEXT): Define.
18007         (TF_SIZE): Define.
18008
18009 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18010
18011         PR target/40463
18012         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
18013
18014 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18015
18016         * config/arm/arm.c (arm_override_options): Disable
18017         -mcaller-super-interworking and -mcallee-super-interworking.
18018         * doc/invoke.texi (ARM Options): Document this.
18019
18020 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
18021
18022         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
18023         * config/arm/constraints.md (j): New constraint for movw operands.
18024         (N): Remove thumb2 meaning.
18025         * config/arm/arm.md (*arm_movw): Delete.
18026         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
18027         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
18028         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
18029
18030 2009-06-22  Martin Jambor  <mjambor@suse.cz>
18031
18032         PR tree-optimization/40492
18033         * tree-sra.c (sra_modify_assign): Pass zero offsets to
18034         build_ref_for_offset.
18035
18036 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
18037
18038         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
18039         JUMP_TABLE_DATA_P predicates where applicable.
18040         * auto-inc-dec.c: Ditto.
18041         * builtins.c: Ditto.
18042         * caller-save.c: Ditto.
18043         * calls.c: Ditto.
18044         * cfgcleanup.c: Ditto.
18045         * cfglayout.c: Ditto.
18046         * cfgrtl.c: Ditto.
18047         * combine.c: Ditto.
18048         * combine-stack-adj.c: Ditto.
18049         * cse.c: Ditto.
18050         * cselib.c: Ditto.
18051         * dbxout.c: Ditto.
18052         * df-scan.c: Ditto.
18053         * dse.c: Ditto.
18054         * dwarf2asm.c: Ditto.
18055         * dwarf2out.c: Ditto.
18056         * emit-rtl.c: Ditto.
18057         * except.c: Ditto.
18058         * explow.c: Ditto.
18059         * expmed.c: Ditto.
18060         * expr.c: Ditto.
18061         * final.c: Ditto.
18062         * function.c: Ditto.
18063         * fwprop.c: Ditto.
18064         * gcse.c: Ditto.
18065         * genpreds.c: Ditto.
18066         * genrecog.c: Ditto.
18067         * ifcvt.c: Ditto.
18068         * ira-costs.c: Ditto.
18069         * ira-lives.c: Ditto.
18070         * jump.c: Ditto.
18071         * loop-iv.c: Ditto.
18072         * lower-subreg.c: Ditto.
18073         * modulo-sched.c: Ditto.
18074         * optabs.c: Ditto.
18075         * postreload.c: Ditto.
18076         * print-rtl.c: Ditto.
18077         * recog.c: Ditto.
18078         * reginfo.c: Ditto.
18079         * regmove.c: Ditto.
18080         * reload1.c: Ditto.
18081         * reload.c: Ditto.
18082         * reorg.c: Ditto.
18083         * rtlanal.c: Ditto.
18084         * rtl.c: Ditto.
18085         * sched-vis.c: Ditto.
18086         * sdbout.c: Ditto.
18087         * sel-sched-ir.c: Ditto.
18088         * simplify-rtx.c: Ditto.
18089         * targhooks.c: Ditto.
18090         * var-tracking.c: Ditto.
18091         * vmsdbgout.c: Ditto.
18092
18093 2009-06-22  Matthias Klose  <doko@ubuntu.com>
18094
18095         * Makefile.in (install-plugin): Always use DESTDIR.
18096
18097 2009-06-22  Olivier Hainque  <hainque@adacore.com>
18098
18099         * config/pa/pa.c (output_call): Don't optimize post call jumps
18100         into return address adjustments if the call may throw.
18101
18102 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
18103
18104         * arm.c (thumb1_output_casesi): New function.
18105         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
18106         optimizing for size or PIC.
18107         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
18108         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
18109         (casesi): Handle Thumb-1 when optimizing for size or PIC.
18110         (thumb1_casesi_internal_pic): New expand rule.
18111         (thumb1_casesi_dispatch): New pattern.
18112         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
18113         thumb-1 mode.
18114         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
18115         in the text seciton when PIC or optimizing for size.
18116         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
18117         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
18118         preservation properties of code.
18119         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
18120         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
18121         (__gnu_thumb1_case_si): New function.
18122         * t-arm (LIB1ASMSRC): Define here.
18123         (LIB1ASMFUNCS): Add some common functions.
18124         * t-arm-elf (LIB1ASMSRC): Delete.
18125         (LIB1ASMFUNCS): Append to existing set.
18126         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18127         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18128         * t-symbian (LIB1ASMFUNCS): Likewise.
18129         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18130         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
18131
18132 2009-06-21  Richard Guenther  <rguenther@suse.de>
18133
18134         PR tree-optimization/38729
18135         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
18136         to loops with a single exit if -fno-expensive-optimizations.
18137
18138 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
18139
18140         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
18141         (dataflow_set): Change vars type from htab_t to shared_hash.
18142         (shared_hash_pool, empty_shared_hash): New variables.
18143         (vars_clear): Removed.
18144         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
18145         shared_hash_find_slot_unshare, shared_hash_find_slot,
18146         shared_hash_find_slot_noinsert, shared_hash_find): New
18147         static inlines.
18148         (shared_hash_unshare, shared_hash_destroy): New functions.
18149         (unshare_variable): Unshare set->vars if shared, use
18150         shared_hash_htab.
18151         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
18152         (get_init_value, find_src_set_src, dump_dataflow_set,
18153         clobber_variable_part, emit_notes_for_differences): Use
18154         shared_hash_htab.
18155         (dataflow_set_init): Remove second argument, set vars to
18156         empty_shared_hash instead of creating a new htab.
18157         (dataflow_set_clear): Call shared_hash_destroy and set vars
18158         to empty_shared_hash instead of calling vars_clear.
18159         (dataflow_set_copy): Don't call vars_copy, instead just share
18160         the src htab with dst.
18161         (variable_union): Use shared_hash_*, use initially NO_INSERT
18162         lookup if set->vars is shared.  Don't keep slot cleared before
18163         calling unshare_variable.  Unshare set->vars if needed.
18164         Even ->refcount == 1 vars must be unshared if set->vars is shared
18165         and var needs to be modified.
18166         (variable_canonicalize): New function.
18167         (dataflow_set_union): If dst->vars is empty, just share src->vars
18168         with dst->vars and traverse with variable_canonicalize to canonicalize
18169         and unshare what is needed.
18170         (dataflow_set_different): If old_set and new_set use the same shared
18171         htab, they aren't different.  If number of htab elements is different,
18172         htabs are different.  Use shared_hash_*.
18173         (dataflow_set_destroy): Call shared_hash_destroy instead of
18174         htab_delete.
18175         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
18176         second argument to dataflow_set_init.
18177         (vt_initialize): Likewise.  Initialize shared_hash_pool and
18178         empty_shared_hash, move bb in/out initialization afterwards.
18179         Use variable_htab_free instead of NULL as changed_variables del hook.
18180         (variable_was_changed): Change type of second argument to pointer to
18181         dataflow_set.  When inserting var into changed_variables, bump
18182         refcount.  Unshare set->vars if set is shared htab and slot needs to
18183         be cleared.
18184         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
18185         lookup if set->vars is shared.  Unshare set->vars if needed.
18186         Even ->refcount == 1 vars must be unshared if set->vars is shared
18187         and var needs to be modified.  Adjust variable_was_changed caller.
18188         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
18189         vars must be unshared if set->vars is shared and var needs to be
18190         modified.  Adjust variable_was_changed caller.
18191         (emit_note_insn_var_location): Don't pool_free var.
18192         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
18193         instead of 1.
18194         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
18195         free_alloc_pool on shared_hash_pool.
18196
18197 2009-06-20  Anthony Green  <green@moxielogic.com>
18198
18199         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
18200         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
18201
18202 2009-06-20  Richard Guenther  <rguenther@suse.de>
18203
18204         * tree-ssa-structalias.c (find_func_aliases): For memset use
18205         a constraint from NULL if we memset to zero.
18206         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
18207         we explicitly handle that do not read from memory.
18208         (call_may_clobber_ref_p_1): Properly handle builtins that may
18209         set errno.
18210
18211 2009-06-20  Richard Guenther  <rguenther@suse.de>
18212
18213         PR tree-optimization/40495
18214         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
18215         (new_scalar_tmp_constraint_exp): New function.
18216         (process_constraint): Do not create temporary decls.
18217         (process_all_all_constraints): Likewise.
18218         (handle_const_call): Likewise.
18219         (create_function_info_for): Do not set decl.
18220
18221 2009-06-19  Ian Lance Taylor  <iant@google.com>
18222
18223         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
18224         (rs6000_attribute_table): Make static; move before use.
18225
18226 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
18227
18228         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
18229         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
18230         Propagate the TREE_READONLY flag without overwriting it.
18231         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
18232         Propagate the TREE_READONLY flag onto the result.
18233         (process_call_operands): Move around.  Use correct constant value.
18234
18235 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
18236
18237         PR target/40482
18238         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
18239         * config/arm/arm.md: Likewise.
18240
18241 2009-06-19  Ian Lance Taylor  <iant@google.com>
18242
18243         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
18244         to GIMPLE_ERROR_MARK.
18245
18246         * c-typeck.c (build_conditional_expr): Add op1_original_type and
18247         op2_original_type parameters.  Warn about using different enum types.
18248         * c-parser.c (c_parser_conditional_expression): Pass original
18249         types to build_conditional_expr.
18250         * c-tree.h (build_conditional_expr): Update declaration.
18251
18252 2009-06-19  Ian Lance Taylor  <iant@google.com>
18253
18254         * config/i386/i386.c (ix86_function_specific_save): Test that
18255         fields match values, rather than testing the values are in a
18256         certain range.
18257
18258 2009-06-19  Richard Guenther  <rguenther@suse.de>
18259
18260         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
18261         ADDR_EXPR pointers.
18262         (ptr_derefs_may_alias_p): Likewise.
18263         (ptr_deref_may_alias_ref_p_1): New function.
18264         (ptr_deref_may_alias_ref_p): Likewise.
18265         (ref_maybe_used_by_call_p_1): Handle builtins that are not
18266         covered by looking at the ESCAPED solution.
18267         (call_may_clobber_ref_p_1): Likewise.
18268         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
18269         Handle NULL_TREE offset.  Do not produce redundant constraints.
18270         (process_all_all_constraints): New helper function.
18271         (do_structure_copy): Use it.
18272         (handle_lhs_call): Likewise.
18273         (find_func_aliases): Handle some builtins with pointer arguments
18274         and/or return values explicitly.
18275
18276 2009-06-19  Ian Lance Taylor  <iant@google.com>
18277
18278         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
18279
18280 2009-06-19  Ian Lance Taylor  <iant@google.com>
18281
18282         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
18283
18284 2009-06-19  Ian Lance Taylor  <iant@google.com>
18285
18286         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
18287         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
18288         version.
18289
18290         * c-decl.c (finish_decl): If -Wc++-compat, warn about
18291         uninitialized const.
18292
18293 2009-06-19  Ian Lance Taylor  <iant@google.com>
18294
18295         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
18296         all uses.
18297
18298         * c-decl.c (in_struct, struct_types): Remove.
18299         (struct c_binding): Add in_struct field.
18300         (c_binding_ptr): Define type, along with VEC.
18301         (struct c_struct_parse_info): Define.
18302         (struct_parse_info): New static variable.
18303         (bind): Initialize in_struct field.
18304         (start_struct): Remove enclosing_in_struct and
18305         enclosing_struct_types parameters.  Add
18306         enclosing_struct_parse_info parameter.  Change all callers.  Set
18307         struct_parse_info rather than in_struct and struct_types.
18308         (grokfield): If -Wc++-compat and there is a symbol binding for the
18309         field name, set the in_struct flag and push it on the
18310         struct_parse_info->fields vector.
18311         (warn_cxx_compat_finish_struct): New static function.
18312         (finish_struct): Remove enclosing_in_struct and
18313         enclosing_struct_types parameters.  Add
18314         enclosing_struct_parse_info parameter.  Change all callers.  Don't
18315         set C_TYPE_DEFINED_IN_STRUCT here.  Call
18316         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
18317         parameter.  Only push on struct_types if warn_cxx_compat.
18318         (finish_enum): Only push on struct_types if warn_cxx_compat.
18319         (declspecs_add_type): Add loc parameter.  Change all callers.
18320         Change all error calls to error_at.  Pass loc, not input_location,
18321         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
18322         defined in a struct.  If -Wc++-compat and parsing a struct, record
18323         that a typedef name was used.
18324         * c-parser.c (c_parser_declspecs): Get location to pass to
18325         declspecs_add_type.
18326         (c_parser_struct_or_union_specifier): Update calls to start_struct
18327         and finish_struct.
18328         * c-tree.h (struct c_struct_parse_info): Declare.
18329         (finish_struct, start_struct): Update declarations.
18330         (declspecs_add_type): Update declaration.
18331
18332 2009-06-19  Ian Lance Taylor  <iant@google.com>
18333
18334         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
18335         variable with an anonymous type.
18336
18337 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
18338
18339         * see.c: Remove for real.
18340
18341 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
18342
18343         * optabs.h (enum optab_index): Add new OTI_significand.
18344         (significand_optab): Define corresponding macro.
18345         * optabs.c (init_optabs): Initialize significand_optab.
18346         * genopinit.c (optabs): Implement significand_optab using
18347         significand?f2 patterns.
18348         * builtins.c (expand_builtin_mathfn): Handle
18349         BUILT_IN_SIGNIFICAND{,F,L}.
18350         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
18351         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
18352
18353         * config/i386/i386.md (significandxf2, significand<mode>2): New
18354         expanders to implement significandf, significand and significandl
18355         built-ins as inline x87 intrinsics.
18356
18357 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
18358
18359         * config/avr/avr.c (avr_override_options): Remove setting value of
18360         PARAM_INLINE_CALL_COST.
18361
18362 2009-06-18  Richard Henderson  <rth@redhat.com>
18363
18364         PR 40488
18365         * tree-pass.h (TDF_ASMNAME): New.
18366         * tree-dump.c (dump_options): Add asmname.
18367         * doc/invoke.texi: Document it.
18368
18369         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
18370         (dump_decl_name): ...here.
18371         (dump_function_name): New flags arg; mind TDF_ASMNAME.
18372         (dump_generic_node): Update dump_function_name calls.
18373         (print_call_name): New flags arg; update all dump calls.
18374         * diagnostic.h (print_call_name): Update.
18375         * gimple-pretty-print.c (dump_gimple_call): Update.
18376
18377 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
18378
18379         PR target/40470
18380         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
18381
18382 2009-06-18  Diego Novillo  <dnovillo@google.com>
18383
18384         * doc/plugins.texi: Document plugin_is_GPL_compatible.
18385         * plugin.c (str_license): Declare.
18386         (try_init_one_plugin): Assert that the symbol
18387         'plugin_is_GPL_compatible' exists.
18388
18389 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
18390
18391         * see.c: Remove.
18392         * Makefile.in (OBJS-common): Remove see.o.
18393         (see.o): Remove.
18394         * common.opt (fsee): Mark as preserved for backward compatibility.
18395         * opts.c (common_handle_option): Add OPT_fsee to the backward
18396         compatibility section.
18397         * passes.c (init_optimization_passes, pass_see): Remove pass.
18398         * timevar.def (TV_SEE): Remove.
18399         * tree-pass.h (pass_see): Remove declaration.
18400         * doc/invoke.texi (-fsee): Remove documentation.
18401
18402 2009-06-18  Martin Jambor  <mjambor@suse.cz>
18403
18404         * tree-sra.c: Include statistics.h
18405         (sra_stats): New variable.
18406         (sra_initialize): Clear sra_stats.
18407         (create_access_replacement): Increment sra_stats.replacements.
18408         (get_access_replacement): Do not return twice.
18409         (analyze_all_variable_accesses): Increment statistics counter by the
18410         number of scalarized aggregates.
18411         (generate_subtree_copies): Increment sra_stats.subtree_copies.
18412         (sra_modify_expr): Increment sra_stats.exprs.
18413         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
18414         (sra_modify_assign): Increment sra_stats.exprs,
18415         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
18416         (perform_intra_sra): Update statistics counters.
18417         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
18418
18419 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
18420
18421         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
18422         (arm_scalar_mode_supported_p): New function.
18423
18424 2009-06-18  Paul Brook  <paul@codesourcery.com>
18425             Sandra Loosemore  <sandra@codesourcery.com>
18426
18427         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
18428         (__extendhfsf2, __truncsfhf2): Define.
18429         * config/arm/fp16.c: New file.
18430         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
18431         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
18432
18433 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
18434
18435         * doc/extend.texi (Half-Precision): New section.
18436         * doc/invoke.texi (Option Summary): List -mfp16-format.
18437         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
18438         * config/arm/arm.opt (mfp16-format=): New.
18439         * config/arm/arm.c: Include intl.h.
18440         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
18441         (TARGET_INVALID_RETURN_TYPE): Redefine.
18442         (TARGET_PROMOTED_TYPE): Redefine.
18443         (TARGET_CONVERT_TO_TYPE): Redefine.
18444         (arm_fp16_format): Define.
18445         (all_fpus): Add entry for neon-fp16.
18446         (fp_model_for_fpu): Likewise.
18447         (struct fp16_format): Declare.
18448         (all_fp16_formats): Define.
18449         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
18450         functions.
18451         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
18452         and no ldrh.
18453         (arm_legitimate_index_p): Treat HFmode like HImode.
18454         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
18455         (coproc_secondary_reload_class): Special-case HFmode.
18456         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
18457         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
18458         (arm_init_fp16_builtins): New.
18459         (arm_init_builtins): Call it.
18460         (arm_invalid_parameter_type): New.
18461         (arm_invalid_return_type): New.
18462         (arm_promoted_type): New.
18463         (arm_convert_to_type).
18464         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
18465         format.
18466         (arm_emit_fp16_const): New function.
18467         (arm_mangle_type): Mangle __fp16 as "Dh".
18468         * config/arm/arm.h (TARGET_VFPD32): Make it know about
18469         FPUTYPE_NEON_FP16.
18470         (TARGET_NEON_FP16): New.
18471         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
18472         (enum fputype): Add FPUTYPE_NEON_FP16.
18473         (enum arm_fp16_format_type): Declare.
18474         (arm_fp16_format): Declare.
18475         (LARGEST_EXPONENT_IS_NORMAL): Define.
18476         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
18477         * config/arm/arm-modes.def (HFmode): Define.
18478         * config/arm/vfp.md (*movhf_vfp): New.
18479         (extendhfsf2): New.
18480         (truncsfhf2): New.
18481         * config/arm/arm.md (fpu): Add neon_fp16.
18482         (floatsihf2, floatdihf2): New.
18483         (fix_trunchfsi2, fix_trunchfdi2): New.
18484         (truncdfhf2): New.
18485         (extendhfdf2): New.
18486         (movhf): New.
18487         (*arm32_movhf): New.
18488         (*thumb1_movhf): New.
18489         (consttable_2): Add check for HFmode constants.
18490         (consttable_4): Handle HFmode constants.
18491
18492 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
18493
18494         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
18495
18496 2009-06-17  Olivier Hainque  <hainque@adacore.com>
18497
18498         * collect2.c (main): Use CONST_CAST2 to perform char ** to
18499         const char ** conversion in AIX specific section.
18500
18501 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
18502
18503         * config/i386/i386.c (ix86_special_builtin_type): Remove
18504         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
18505         (bdesc_special_args): Updated.
18506         (ix86_init_mmx_sse_builtins): Likewise.
18507         (ix86_expand_special_args_builtin): Likewise.
18508
18509 2009-06-17  Richard Henderson  <rth@redhat.com>
18510
18511         * tree-pretty-print.c (maybe_dump_asm_name): New.
18512         (dump_decl_name): Use it.
18513         (PRINT_FUNCTION_NAME): Merge into...
18514         (dump_function_name): ... here.  Use maybe_dump_asm_name.
18515
18516 2009-06-17  Cary Coutant  <ccoutant@google.com>
18517
18518         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
18519         Change caller.
18520         * debug.c (struct gcc_debug_hooks): Change placeholder for
18521         source_line hook.
18522         (debug_nothing_int_charstar_int): Replaced by...
18523         (debug_nothing_int_charstar_int_bool): ...this.
18524         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
18525         source_line prototype.
18526         (debug_nothing_int_charstar_int): Replaced by...
18527         (debug_nothing_int_charstar_int_bool): ...this.
18528         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
18529         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
18530         Output is_stmt operand when necessary.
18531         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
18532         (notice_source_line): Add is_stmt parameter.
18533         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
18534         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
18535         Change callers.
18536         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
18537         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
18538
18539 2009-06-17  Ian Lance Taylor  <iant@google.com>
18540
18541         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
18542         Change all uses.
18543         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
18544         call uses.
18545
18546 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
18547
18548         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
18549         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
18550         tree_strip_sign_nop_conversions and
18551         tree_ssa_strip_useless_type_conversions rather than stripping
18552         the operations here.
18553         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
18554         Declare them.
18555         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
18556         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
18557         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
18558         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
18559         functions.
18560
18561 2009-06-17  Michael Eager  <eager@eagercon.com>
18562
18563         * config/rs6000/constraints.md (register_constraint "d"): New.
18564         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
18565         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
18566         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
18567         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
18568         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
18569         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
18570         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
18571         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
18572         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
18573         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
18574         __fctiwz): Same.
18575         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
18576         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
18577         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
18578         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
18579         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
18580         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
18581         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
18582         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
18583         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
18584         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
18585         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
18586         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
18587         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
18588         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
18589
18590 2009-06-16  Ian Lance Taylor  <iant@google.com>
18591
18592         * profile.c (total_num_never_executed): Don't define.
18593         (compute_branch_probabilities): Don't count or print
18594         num_never_executed.
18595         (init_branch_prob): Don't set total_num_never_executed.
18596         (end_branch_prob): Don't print total_num_never_executed.
18597
18598 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
18599
18600         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
18601
18602 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
18603
18604         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
18605         (nabstd2_fpr): Same.
18606
18607 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
18608
18609         * expr.c (expand_assignment): Change complex type check.
18610
18611 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
18612
18613         * doc/plugins.texi (Building GCC plugins): Added new section.
18614
18615 2009-06-17  Ian Lance Taylor  <iant@google.com>
18616
18617         * c-pch.c (get_ident): Don't set size of templ array.
18618         (pch_init): Don't set size of partial_pch array.
18619
18620         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
18621         string constant to intialize an array whose size is the length of
18622         the string.
18623
18624 2009-06-17  Richard Guenther  <rguenther@suse.de>
18625
18626         PR tree-optimization/40389
18627         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
18628         to addressable types.
18629         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
18630
18631 2009-06-17  Richard Guenther  <rguenther@suse.de>
18632
18633         PR middle-end/40460
18634         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
18635         if there is no evolution of left in the loop bail out.
18636         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
18637         chrec_fold_multiply.
18638
18639 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
18640             Janis Johnson  <janis187@us.ibm.com>
18641
18642         PR target/39254
18643         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
18644         for the symbol ref of a constant that is the source of a move
18645         - nor for any other not-obvious-label-ref constants.
18646
18647 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
18648
18649         * plugin.c (position_pass): Skip newly inserted pass during list
18650         traversal to avoid repeated insertion.
18651
18652 2009-06-16  Ian Lance Taylor  <iant@google.com>
18653
18654         * vec.h (VEC_stack_alloc): Define different version if
18655         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
18656         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
18657         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
18658         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
18659
18660 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
18661
18662         * config.gcc (extra_headers): Add ia32intrin.h for x86.
18663
18664         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
18665         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
18666         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
18667         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
18668         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
18669         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18670         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18671         (bdesc_special_args): Add __builtin_ia32_rdtsc and
18672         __builtin_ia32_rdtscp.
18673         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
18674         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
18675         and __builtin_ia32_rorhi.
18676         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
18677         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
18678         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
18679         (ix86_expand_args_builtin): Likewise.
18680         (ix86_expand_special_args_builtin): Likewise.
18681
18682         * config/i386/i386.md (UNSPECV_RDTSCP): New.
18683         (UNSPECV_RDTSC): Likewise.
18684         (UNSPECV_RDPMC): Likewise.
18685         (*bsr): Renamed to ...
18686         (bsr): This
18687         (*bsr_rex64): Renamed to ...
18688         (bsr_rex64): This.
18689         (rdpmc): New.
18690         (*rdpmc): Likewise.
18691         (*rdpmc_rex64): Likewise.
18692         (rdtsc): Likewise.
18693         (*rdtsc): Likewise.
18694         (*rdtsc_rex64): Likewise.
18695         (rdtscp): Likewise.
18696         (*rdtscp): Likewise.
18697         (*rdtscp_rex64): Likewise.
18698
18699         * config/i386/ia32intrin.h: New.
18700
18701         * config/i386/x86intrin.h: Include <ia32intrin.h>.
18702
18703 2009-06-16  Ian Lance Taylor  <iant@google.com>
18704
18705         * ira-build.c (copy_info_to_removed_store_destinations):
18706         Initialize parent_a.
18707
18708 2009-06-16  Ian Lance Taylor  <iant@google.com>
18709
18710         * c-decl.c (grokdeclarator): Change size_varies to bool.
18711
18712 2009-06-16  Ian Lance Taylor  <iant@google.com>
18713
18714         * sel-sched.c: Make forward declarations of move_op_hooks and
18715         fur_hooks explicitly extern.
18716
18717 2009-06-16  Ian Lance Taylor  <iant@google.com>
18718
18719         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
18720         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
18721
18722 2009-06-16  Ian Lance Taylor  <iant@google.com>
18723
18724         * resource.c (mark_referenced_resources): Change
18725         include_delayed_effects parameter to bool.  Change all callers.
18726         (mark_end_of_function_resources): Likewise.
18727         * reorg.c (insn_references_resource_p): Likewise.
18728         (insn_sets_resource_p): Likewise.
18729         * resource.h (mark_referenced_resources): Update declaration.
18730         (mark_end_of_function_resources): Update declaration.
18731
18732 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18733
18734         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
18735
18736 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
18737
18738         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
18739         GCC can bootstrap on AIX with GNU Binutils 2.20.
18740
18741 2009-06-16  Ian Lance Taylor  <iant@google.com>
18742
18743         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
18744
18745 2009-06-16  Ian Lance Taylor  <iant@google.com>
18746
18747         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
18748         inline, not extern inline.
18749         (exact_log2): Likewise.
18750         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
18751         test CLZ_HWI.
18752         (exact_log2): Likewise, but don't test CTZ_HWI.
18753
18754 2009-06-16  Ian Lance Taylor  <iant@google.com>
18755
18756         * bitmap.c (bitmap_clear): Don't declare as inline.
18757         * gimple.c (gimplify_assign): Likewise.
18758         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
18759         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
18760         (sched_scan_info): Remove duplicate definition.
18761
18762 2009-06-16  Ian Lance Taylor  <iant@google.com>
18763
18764         * c-common.c (skip_evaluation): Don't define.
18765         (c_inhibit_evaluation_warnings): Define global variable.
18766         (overflow_warning): Check c_inhibit_evaluation_warnings rather
18767         than skip_evaluation.
18768         (convert_and_check, warn_for_div_by_zero): Likewise.
18769         * c-common.h (skip_evaluation): Don't declare.
18770         (c_inhibit_evaluation_warnings): Declare.
18771         * c-parser.c (c_parser_typeof_specifier): Set
18772         c_inhibit_evaluation_warnings rather than skip_evaluation.
18773         (c_parser_conditional_expression): Likewise.
18774         (c_parser_binary_expression): Likewise.
18775         (c_parser_sizeof_expression): Likewise.
18776         (c_parser_alignof_expression): Likewise.
18777         * c-typeck.c (build_indirect_ref): Check
18778         c_inhibit_evaluation_warnings rather than skip_evaluation.
18779         (build_conditional_expr, build_binary_op): Likewise.
18780
18781 2009-06-16  Richard Guenther  <rguenther@suse.de>
18782
18783         * tree-ssa-alias.c (is_escape_site): Remove.
18784         * tree-ssa-alias.h (enum escape_type): Remove.
18785         (is_escape_site): Likewise.
18786         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
18787         via casts and asms without deferring to is_escape_site.
18788
18789 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
18790
18791         PR middle-end/40446
18792         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
18793         use gen_lowpart if op0 has complex mode.
18794
18795 2009-06-16  Richard Guenther  <rguenther@suse.de>
18796
18797         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
18798         variables add them to ESCAPED.
18799         (find_func_aliases): Do not make all indirectly stored values escaped.
18800
18801 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
18802
18803         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
18804         make_decl_one_only.
18805
18806 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18807
18808         PR tree-optimization/40432
18809         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
18810         check whether we need to force gimple register operand.
18811
18812 2009-06-16  Martin Jambor  <mjambor@suse.cz>
18813
18814         PR tree-optimization/40413
18815         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
18816         build_ref_for_offset.
18817         (propagate_subacesses_accross_link): Fix a typo in a comment.
18818
18819 2009-06-16  Ira Rosen  <irar@il.ibm.com>
18820
18821         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
18822         with additional parameter.
18823         * tree-vectorizer.h (enum vect_def_type): Add new value
18824         vect_nested_cycle.
18825         (enum vect_relevant): Add comments.
18826         (vect_is_simple_reduction): Add new argument.
18827         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
18828         Detect nested cycles.
18829         (vect_is_simple_reduction): Update documentation, add an argument to
18830         distinguish inner-loop reduction from nested cycle, detect nested
18831         cycles, fix printings and indentation, don't swap operands in case
18832         of nested cycle.
18833         (get_initial_def_for_reduction): Handle subtraction.
18834         (vect_create_epilog_for_reduction): Add new argument to specify
18835         reduction variable.
18836         (vect_finalize_reduction): Handle subtraction, fix comments.
18837         (vectorizable_reduction): Handle nested cycles. In case of nested
18838         cycle keep track of the reduction variable position. Call
18839         vect_is_simple_reduction with additional parameter. Use original
18840         statement code in reduction epilogue for nested cycle. Call
18841         vect_create_epilog_for_reduction with additional parameter.
18842         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
18843         inner-loop vectorization.
18844         (vect_recog_widen_sum_pattern): Likewise.
18845         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
18846         and reductions.
18847         (vect_mark_stmts_to_be_vectorized): Likewise.
18848         (vect_get_vec_def_for_operand): Handle nested cycles.
18849
18850 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18851
18852         * doc/invoke.texi (Debugging Options): Fix option index entries
18853         for -fdump-statistics, -frandom-seed add entries for
18854         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
18855         (FRV Options): Fix entries for -mTLS, -mtls.
18856         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
18857         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
18858         (M68hc1x Options): Fix @itemx for -mnominmax.
18859         (MCore Options): Fix entry for -mno-lsim.
18860         (MMIX Options): Fix entry for -mabi=mmixware.
18861         (PDP-11 Options): Fix entry for -mbcopy-builtin.
18862
18863 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
18864
18865         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
18866         Mention the plugin mode of gengtype.
18867         * doc/gty.texi (Source Files Containing Type Information): Likewise.
18868         * gengtype.c: Updated copyright.
18869         (plugin_files, nb_plugin_files) Added new static variables.
18870         (measure_input_list) Care about plugin_files.
18871         (write_rtx_next): Added early return in plugin mode.
18872         (create_file): Updated copyright year in generated file. Added
18873         asserts.
18874         (oprintf): Added early return if NULL outf.
18875         (get_output_file_with_visibility): Care of plugin_files.
18876         (get_output_file_name): May return null.
18877         (write_local): Added early return.
18878         (put_mangled_filename): Ditto.
18879         (finish_root_table): Added check for base_files.
18880         (write_roots): Care about null when plugins.
18881         (main): Added plugin mode.
18882
18883 2009-06-15  Ian Lance Taylor  <iant@google.com>
18884
18885         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
18886         * gcov.c (read_count_file): Add braces around variables declared
18887         before label.
18888
18889         * c.opt (Wjump-misses-init): New warning.
18890         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
18891         -Wall and -Wc++-compat if not already set.
18892         (c_common_post_options): Clear warn_jump_misses_init if it was not
18893         set.
18894         * c-decl.c (struct c_binding): Change type field to a union with
18895         new label field.  Make it the first field in the struct.  Update
18896         references to type to use u.type instead.
18897         (struct c_spot_bindings): Define.
18898         (struct c_goto_bindings): Define.
18899         (c_goto_bindings_p): Define, along with VECs.
18900         (struct c_label_vars): Define.
18901         (struct c_scope): Add has_label_bindings field.
18902         (bind_label, set_spot_bindings): New static functions.
18903         (decl_jump_unsafe, update_spot_bindings): New static functions.
18904         (update_label_decls): New static function.
18905         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
18906         Update binding u.label field to shadowed field.
18907         (c_binding_start_stmt_expr): New function.
18908         (c_binding_end_stmt_expr): New function.
18909         (pushdecl): Don't call c_begin_vm_scope.
18910         (make_label): Add defining and p_label_vars parameters.  Change
18911         all callers.
18912         (lookup_label): Correct test for whether a label has not yet been
18913         defined.  Call bind_label rather than bind.
18914         (warn_about_goto): New static function.
18915         (lookup_label_for_goto): New function.
18916         (declare_label): Call bind_label rather than bind.
18917         (check_earlier_gotos): New static function.
18918         (define_label): Don't give errors about jumping into statement
18919         expressions or scopes of variably modified types.  Call
18920         set_spot_bindings and check_earlier_gotos.  Call bind_label
18921         instead of bind.  Don't set label_context_stack_se or
18922         label_context_stack_vm.
18923         (c_get_switch_bindings): New function.
18924         (c_release_switch_bindings): New function.
18925         (c_check_switch_jump_warnings): New function.
18926         (start_function): Don't set label_context_stack_se or
18927         label_context_stack_vm.
18928         (finish_function): Likewise.
18929         * c-typeck.c (label_context_stack_se): Don't define.
18930         (label_context_stack_vm): Don't define.
18931         (c_finish_goto_label): Call lookup_label_for_goto rather than
18932         lookup_label.  Don't give errors about jumping into a statement
18933         expression or the scope of a variably modified type.  Don't set
18934         label_context_stack_se or label_context_stack_vm.
18935         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
18936         fields.  Add bindings field.
18937         (c_start_case): Don't set deleted fields.  Set bindings field.
18938         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
18939         or blocked_vm.  Call c_check_switch_jump_warnings.
18940         (c_finish_case): Don't test blocked_stmt_expr field.  Call
18941         c_release_switch_bindings.
18942         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
18943         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18944         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
18945         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
18946         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18947         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
18948         (c_begin_vm_scope, c_end_vm_scope): Don't define.
18949         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
18950         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
18951         (C_DECL_UNJUMPABLE_VM): Don't define.
18952         (C_DECL_UNDEFINABLE_VM): Don't define.
18953         (struct c_label_list): Don't define.
18954         (struct c_label_context_se): Don't define.
18955         (struct c_label_context_vm): Don't define.
18956         (struct c_spot_bindings): Declare.
18957         (c_bindings_start_stmt_expr): Declare.
18958         (c_bindings_end_stmt_expr): Declare.
18959         (lookup_label_for_goto): Declare.
18960         (c_get_switch_bindings, c_release_switch_bindings): Declare.
18961         (c_check_switch_jump_warnings): Declare.
18962         (label_context_stack_se, label_context_stack_vm): Don't declare.
18963         (c_finish_goto_label): Update declaration.
18964         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
18965         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
18966         (Warning Options): Document -Wjump-misses-init.
18967
18968 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
18969
18970         * tree-object-size.c (addr_object_size): Fix a pasto in the last
18971         change.
18972
18973 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18974
18975         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
18976
18977 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18978
18979         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
18980
18981 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18982
18983         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
18984
18985 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18986
18987         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
18988         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
18989         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
18990         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
18991         * dwarf2asm.c (dw2_force_const_mem): Update call to
18992         make_decl_one_only.
18993         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
18994         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
18995         * langhooks.c (lhd_comdat_group): Remove.
18996         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
18997         * tree.h (DECL_COMDAT_GROUP): New.
18998         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
18999         (tree_decl_with_vis): Add comdat_group. Remove one_only.
19000         (make_decl_one_only): Change signature.
19001         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
19002         make_decl_one_only.
19003         (make_decl_one_only): Change signature.
19004         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
19005
19006 2009-06-15  Richard Guenther  <rguenther@suse.de>
19007
19008         PR middle-end/40439
19009         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
19010
19011 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
19012
19013         * tree-ssa-math-opts.c: Remove extra divide.
19014
19015 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
19016
19017         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
19018
19019 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
19020
19021         * passes.c: Add bswap pass.
19022         * tree-pass.h: Add pass_optimize_bswap declaration.
19023         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
19024         Include rtl.h, expr.h and optabs.h for optab_handler check.
19025         (struct symbolic_number, pass_optimize_bswap): New definition.
19026         (do_shift_rotate, verify_symbolic_number_p): New functions.
19027         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
19028         (gate_optimize_bswap): New function.
19029         * tree.c (widest_int_cst_value): New function.
19030         * tree.h (widest_int_cst_value): Prototype added.
19031
19032 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
19033
19034         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
19035         REG_EQUAL/REG_EQUIV notes.
19036
19037 2009-06-14  Richard Guenther  <rguenther@suse.de>
19038
19039         PR middle-end/40389
19040         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
19041         has its address taken if NRV was applied and it is addressable.
19042         * tree-ssa-structalias.c (get_constraint_for_address_of): New
19043         function split out from ...
19044         (get_constraint_for_1): ... here.
19045         (handle_rhs_call): Use it to mark the return slot escaped if
19046         it is addressable and NRV was applied.
19047
19048 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
19049
19050         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
19051         Change first argument type to location_t.
19052         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
19053         Do not set input_location.
19054         Use loc instead of input_location throughout.
19055
19056 2009-06-13  Richard Guenther  <rguenther@suse.de>
19057
19058         PR tree-optimization/40421
19059         * tree-predcom.c (should_unroll_loop_p): Remove.
19060         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
19061
19062 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
19063
19064         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19065         Add location argument.
19066
19067 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
19068
19069         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
19070         build_decl.
19071         * config/s390/s390.c (s390_build_builtin_va_list): Same.
19072         (s390_gimplify_va_arg): Pass location to create_artificial_label.
19073         * config/spu/spu-protos.h: Add location to
19074         spu_resolve_overloaded_builtin.
19075         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
19076         spu_build_builtin_va_list.
19077         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
19078         argument.  Pass location to build_function_call_vec.
19079         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
19080         build_decl.
19081         (emit_fpu_switch): Same.
19082         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
19083         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
19084         to build_decl and create_artificial_label.
19085         (xtensa_gimplify_va_arg_expr): Same.
19086         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
19087         (xstormy16_gimplify_va_arg_expr): Same.
19088         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
19089         * config/arm/arm.c (arm_build_builtin_va_list): Same.
19090         * config/mips/mips.c (mips_build_builtin_va_list): Same.
19091         (mips16_build_function_stub): Same.
19092         (mips16_build_call_stub): Same.
19093
19094 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
19095
19096         PR target/40327
19097         * arm/constraints.md (Pa, Pb): New constraints.
19098         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
19099         split pattern to deal with them.
19100
19101 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
19102
19103         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
19104         fix index entry for -Xpreprocessor.
19105
19106 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
19107
19108         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19109         Add location argument to build_decl call.
19110         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
19111         (rs6000_init_builtins): Same.
19112         (spe_init_builtins): Same.
19113         (rs6000_gimplify_va_arg): Add location argument to
19114         create_artificial_label call.
19115
19116 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
19117
19118         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
19119         * combine-stack-adj.c (pass_stack_adjustments): Use it.
19120         * Makefile.in: Fix GGC dependency for gcse.o.
19121
19122 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
19123
19124         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
19125         * gimple-pretty-print.c (dump_gimple_stmt): Same.
19126         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
19127         created.
19128         * c-parser.c (c_parser_binary_expression): Use current column while
19129         building binary operations.
19130         * common.opt (fshow-column): Enable by default.
19131         * tree-vrp.c (check_array_ref): Use warning_at.
19132         (check_array_bounds): Use location from call back if expr has no
19133         location.
19134         * tree.h: Add location argument to maybe_fold_*.
19135         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
19136         (maybe_fold_offset_to_array_ref): Add location argument and use it.
19137         (maybe_fold_offset_to_component_ref): Same.
19138         (maybe_fold_offset_to_reference): Same.
19139         (maybe_fold_offset_to_address): Same.
19140         (maybe_fold_stmt_indirect): Same.
19141         (maybe_fold_stmt_addition): Same.
19142         (fold_stmt_r): Pass location to maybe_fold_*.
19143         (fold_gimple_assign): Same.
19144         * c-tree.h: Add location argument to finish_decl,
19145         default_function_array_conversion, store_init_value.
19146         * c-decl.c (define_label): Use error_at.
19147         (c_make_fname_decl): Pass location to finish_decl.
19148         (finish_decl): New location argument.
19149         (build_compound_literal): Pass location to store_init_value.
19150         (grokdeclarator): Pass location to finish_decl.
19151         (grokfield): Same.
19152         * c-typeck.c (array_to_pointer_conversion): New location argument.
19153         (function_to_pointer_conversion): Same.
19154         (default_function_array_conversion): Same.
19155         (parser_build_unary_op): Pass location to overflow_warning.
19156         (parser_build_binary_op): Same.  Use warning_at.
19157         (build_unary_op): Pass location to array_to_pointer_conversion.
19158         (build_c_cast): Pass location to digest_init.
19159         (build_modify_expr): New location argument.
19160         (convert_for_assignment): Same.
19161         (store_init_value): Same.
19162         (digest_init): Same.
19163         (output_init_element): Pass location to digest_init and
19164         array_to_pointer_conversion.
19165         (c_finish_return): Pass location to convert_for_assignment.
19166         * gimplify.c (gimplify_conversion): Pass location to
19167         maybe_fold_offset_to_address.
19168         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
19169         to maybe_fold_stmt_addition.
19170         * c-omp.c (c_finish_omp_atomic): Pass new location to
19171         build_modify_expr.
19172         (c_finish_omp_for): Same.
19173         * c-common.c (overflow_warning): New argument.
19174         * c-common.h: New argument to build_modify_expr, overflow_warning.
19175         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
19176         finish_decl.
19177         (c_parser_initializer): Pass location to
19178         default_function_array_conversion.
19179         (c_parser_initelt): Same.
19180         (c_parser_initval): Same.
19181         (c_parser_asm_operands): Same.
19182         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
19183         (c_parser_conditional_expression): Same.
19184         (c_parser_binary_expression): Add location info to stack.  Use it.
19185         (c_parser_unary_expression): Pass location to
19186         default_function_array_conversion, parser_build_unary_op,
19187         build_indirect_ref, c_parser_postfix_expression_after_primary.
19188         (c_parser_postfix_expression_after_primary): New location argument.
19189         Use it.
19190         (c_parser_expression_conv): Pass location to
19191         default_function_array_conversion.
19192         (c_parser_expr_list): Same.
19193         (c_parser_omp_atomic): Same.
19194         (c_parser_omp_for_loop): Same.
19195         * c-tree.h (struct c_declarator): Add comment to id_loc.
19196         (build_array_declarator): New argument.
19197         * c-decl.c (build_array_declarator): Add location argument.
19198         (grokdeclarator): Set id_loc for cdk_array.
19199         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
19200         build_array_declarator.
19201         * tree.c (build_omp_clause): Add location argument.
19202         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
19203         (OMP_CLAUSE_LOCATION): New macro.
19204         (struct tree_omp_clause): Add location field.
19205         (build_omp_clause): Add argument.
19206         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
19207         build_omp_clause.
19208         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
19209         (cp_parser_omp_clause_collapse): Same.
19210         (cp_parser_omp_clause_default): Same.
19211         (cp_parser_omp_clause_if): Same.
19212         (cp_parser_omp_clause_nowait): Same.
19213         (cp_parser_omp_clause_num_threads): Same.
19214         (cp_parser_omp_clause_ordered): Same.
19215         (cp_parser_omp_clause_schedule): Same.
19216         (cp_parser_omp_clause_untied): Same.
19217         (cp_parser_omp_for_loop): Same.
19218         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
19219         * c-tree.h (c_start_case): Add location argument.
19220         (c_process_expr_stmt): Same.
19221         (c_finish_goto_*): Same.
19222         * tree-parloops.c (initialize_reductions): Pass location to
19223         build_omp_clause.
19224         (create_parallel_loop): Same.
19225         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
19226         (gfc_trans_omp_reduction_list): Same.
19227         (gfc_trans_omp_clauses): Same.
19228         (gfc_trans_omp_do): Same.
19229         * c-typeck.c (c_finish_goto_label): Same.
19230         (c_finish_goto_ptr): New location argument.
19231         (c_start_case): Same.
19232         (emit_side_effect_warnings): Same.
19233         (c_process_expr_stmt): Same.
19234         (c_finish_stmt_expr): Same.
19235         (c_finish_omp_clauses): Use error_at instead of error.
19236         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
19237         build_omp_clause.
19238         * c-omp.c (c_split_parallel_clauses): New location argument.
19239         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
19240         to build_omp_clause.
19241         (convert_local_reference_stmt): Same.
19242         (convert_gimple_call): Same.
19243         * c-common.h (c_split_parallel_clauses): New argument.
19244         * c-parser.c (c_parser_statement_after_labels): Pass location to
19245         c_finish_goto_label.
19246         (c_parser_switch_statement): Pass location to c_start_case.
19247         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
19248         and c_process_expr_stmt.
19249         (c_parser_omp_variable_list): Add location argument.
19250         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
19251         (c_parser_omp_clause_default): Same.
19252         (c_parser_omp_clause_if): Same.
19253         (c_parser_omp_clause_num_threads): Same.
19254         (-c_parser_omp_clause_ordered): Same.
19255         (c_parser_omp_clause_reduction): Pass location to
19256         c_parser_omp_variable_list.
19257         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
19258         (c_parser_omp_clause_untied): Same.
19259         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
19260         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
19261
19262         * c-tree.h (check_for_loop_decls, undeclared_variable,
19263         build_component_ref, build_array_ref, build_external_ref,
19264         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
19265         build_conditional_expr, build_compound_expr, c_cast_expr,
19266         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
19267         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
19268         argument.
19269         * c-semantics.c (build_stmt): Same.
19270         (build_case_label): Same.
19271         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
19272         (undeclared_variable): New argument.
19273         (make_label): Same.
19274         (lookup_label): Pass location on down.
19275         (define_label): Same.
19276         (finish_decl): Same.
19277         (build_compound_literal): Same.
19278         (finish_struct): Same.
19279         (finish_function): Do not set location here.
19280         (check_for_loop_decls): New argument.
19281         * tree.c (save_expr): Set location.
19282         (build_empty_stmt): New argument.
19283         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
19284         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
19285         * builtins.c (gimplify_va_arg_expr): Use locations.
19286         (expand_builtin_sync_operation): Same.
19287         * c-typeck.c (build_component_ref): New argument.
19288         (build_array_ref): Same.
19289         (build_external_ref): Same.
19290         (c_expr_sizeof_expr): Same.
19291         (c_expr_sizeof_type): Same.
19292         (parser_build_unary_op): Same.
19293         (build_conditional_expr): Same.
19294         (build_compound_expr): Pass location on down.
19295         (build_compound_expr): New argument.
19296         (build_c_cast): Same.
19297         (c_cast_expr): Same.
19298         (build_asm_expr): Same.
19299         (c_finish_return): Same.
19300         (c_process_expr_stmt): Pass location on down.
19301         (c_finish_stmt_expr): New argument.
19302         (push_clenaup): Same.
19303         (c_finish_omp_parallel): Same.
19304         (c_finish_omp_task): Same.
19305         * gimplify.c (gimplify_call_expr): Pass location on down.
19306         * c-omp.c (c_finish_omp_master): New argument.
19307         (c_finish_omp_critical): Same.
19308         (c_finish_omp_ordered): Same.
19309         (c_finish_omp_barrier): Same.
19310         (-c_finish_omp_taskwait): Same.
19311         (c_finish_omp_atomic): Same.
19312         (c_finish_omp_flush): Same.
19313         * tree-inline.c (copy_tree_body_r): Pass location on down.
19314         (inline_forbidden_p): Remove use of input_location.
19315         * c-gimplify.c (c_build_bind_expr): New argument.
19316         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
19317         (c_sizeof_or_alignof_type): New argument.
19318         (c_alignof_expr): Same.
19319         (build_va_arg): Same.
19320         (c_add_case_label): Same.
19321         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
19322         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
19323         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
19324         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
19325         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
19326         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
19327         New argument.
19328         * stub-objc.c (objc_build_selector_expr): Same.
19329         (objc_build_throw_stmt): Same.
19330         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
19331         (c_parser_initelt): Same.
19332         (c_parser_compound_statement): Same.
19333         (c_parser_compound_statement_nostart): Same.
19334         (c_parser_label): Same.
19335         (c_parser_statement_after_labels): Same.
19336         (c_parser_if_body): Same.
19337         (c_parser_else_body): Same.
19338         (c_parser_if_statement): Same.
19339         (c_parser_switch_statement): Same.
19340         (c_parser_while_statement): Same.
19341         (c_parser_do_statement): Same.
19342         (c_parser_for_statement): Same.
19343         (c_parser_asm_statement): Same.
19344         (c_parser_conditional_expression): Same.
19345         (c_parser_binary_expression): Same.
19346         (c_parser_cast_expression): Same.
19347         (c_parser_unary_expression): Same.
19348         (c_parser_sizeof_expression): Same.
19349         (c_parser_alignof_expression): Same.
19350         (c_parser_postfix_expression): Same.
19351         (c_parser_expression): Same.
19352         (c_parser_objc_receiver): Same.
19353         (c_parser_omp_variable_list): Same.
19354         (c_parser_omp_structured_block): Same.
19355         (c_parser_omp_atomic): New argument.
19356         (c_parser_omp_barrier): Same.
19357         (c_parser_omp_critical): Same.
19358         (c_parser_omp_flush): Pass location on down.
19359         (c_parser_omp_for_loop): New argument.
19360         (c_parser_omp_for): Same.
19361         (c_parser_omp_master): Same.
19362         (c_parser_omp_ordered): Same.
19363         (c_parser_omp_sections_scope): Same.
19364         (c_parser_omp_sections): Same.
19365         (c_parser_omp_parallel): Same.
19366         (c_parser_omp_single): Same.
19367         (c_parser_omp_task): Same.
19368         (c_parser_omp_taskwait): Pass location on down.
19369         (c_parser_omp_construct): Same.
19370         (c_parser_omp_threadprivate): Same.
19371         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
19372         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
19373         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
19374         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
19375         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
19376         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
19377         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
19378         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
19379         config/i386/i386.c, stmt.c:
19380         Add location argument to the following function definitions and/or
19381         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
19382         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
19383         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
19384         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
19385         do_case, c_finish_bc_stmt, build_compound_literal,
19386         build_function_call.
19387         * c-decl.c (build_compound_literal): Add location argument.
19388         Make all diagnostic calls use location.
19389         (start_struct): Same.
19390         (finish_struct): Same.
19391         (start_enum): Same.
19392         (build_enumerator): Same.
19393         (start_function): Same.
19394         (grokdeclarator): Make all diagnostic calls use location.
19395         (store_parm_decls_oldstyle): Same.
19396         * c-typeck.c (build_function_call): Add location argument.
19397         Make all diagnostic calls use location.
19398         (do_case): Same.
19399         (c_finish_bc_stmt): Same.
19400         * tree-nested.c (get_trampoline_type): Add argument.
19401         Pass location to build_decl.
19402         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
19403         * rtl.h (RTL_LOCATION): New.
19404         * c-common.c (c_add_case_label): Add location argument.
19405         Make all diagnostic calls use location.
19406         * c-common.h: Add location argument to make_fname_decl, do_case,
19407         c_add_case_label, build_function_call, resolve_overloaded_builtin.
19408         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
19409         Set it appropriately for every case.  Pass enum_loc to start_enum
19410         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
19411         parser_xref_tag.
19412         (c_parser_struct_or_union_specifier): Save location.  Use it for
19413         start_struct, finish_struct, and parser_xref_tag.
19414
19415 2009-06-12  Ian Lance Taylor  <iant@google.com>
19416
19417         * fold-const.c (fold_unary): Rename local variable and to and_expr.
19418
19419         * c-opts.c (c_common_handle_option): For -Wc++-compat set
19420         cpp_opts->warn_cxx_operator_names.
19421
19422 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19423
19424         PR tree-opt/38865
19425         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
19426         is returns NULL and OP is a VCE, look through the VCE.
19427
19428 2009-06-12  Ian Lance Taylor  <iant@google.com>
19429
19430         PR bootstrap/40430
19431         * collect2.c (main): Use CONST_CAST2 in code inside #if
19432         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
19433
19434 2009-06-12  Joey Ye  <joey.ye@intel.com>
19435
19436         PR middle-end/39146
19437         * cfgexpand.c (get_decl_align_unit): Update
19438         max_used_stack_slot_alignment with align instead of
19439         stack_alignment_needed.
19440
19441         * function.c (assign_stack_local_1): Update
19442         max_used_stack_slot_alignment with alignment_in_bits instead
19443         of stack_alignment_needed.
19444         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
19445         here.
19446
19447 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
19448
19449         * dwarf2out.c (last_var_location_insn): New variable.
19450         (dwarf2out_end_epilogue): Clear last_var_location_insn.
19451         (dwarf2out_var_location): Don't record anything after last real
19452         insn.  Only change labels if there were any real instructions
19453         in between last note and this one, or if changed sections.
19454
19455 2009-06-11  Richard Henderson  <rth@redhat.com>
19456
19457         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
19458         note when storing the frame pointer in a register.
19459         (FRP): Don't redefine to nothing for epilogue.
19460         (alpha_expand_epilogue): Mark register and sp restores.
19461         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
19462
19463         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
19464         when gen_lowpart is needed.
19465
19466 2009-06-11  Richard Henderson  <rth@redhat.com>
19467
19468         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
19469
19470         * dwarf2out.c (need_data_align_sf_opcode): New.
19471         (div_data_align): Move earlier.
19472         (def_cfa_1, reg_save): Use it.
19473
19474 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
19475
19476         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
19477         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
19478         (ix86_handle_option): Handle OPT_mcrc32.
19479         (ix86_target_string): Add -mcrc32.
19480         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
19481
19482         * config/i386/i386.h (TARGET_CRC32): New.
19483
19484         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
19485         (sse4_2_crc32di): Likewise.
19486
19487         * config/i386/i386.opt (mcrc32): New.
19488
19489         * doc/invoke.texi: Document -mcrc32.
19490
19491 2009-06-11  Richard Henderson  <rth@redhat.com>
19492
19493         * common.opt (gdwarf-): Accept a version number.
19494         * doc/invoke.texi (gdwarf-): Update docs.
19495         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
19496         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
19497         version level, and record it.
19498
19499         * dwarf2.h (DW_CIE_VERSION): Remove.
19500         * dwarf2out.c (DWARF_VERSION): Remove.
19501         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
19502         (output_call_frame_info): Use CIE version 3 for dwarf3,
19503         or if the return register column is out of range for version 1.
19504         (dwarf_stack_op_name): Add all dwarf3 values.
19505         (DEBUG_PUBTYPES_SECTION): New.
19506         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
19507         encoding change for dwarf3.
19508         (output_die) [dw_val_class_die_ref]: Likewise.
19509         (output_compilation_unit_header): Emit correct version for dwarf3.
19510         (output_line_info): Likewise.
19511         (output_pubnames): Update for DWARF_VERSION removal.
19512         (output_aranges): Likewise.
19513         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
19514         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
19515         (dwarf2out_finish): Likewise.
19516
19517 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
19518
19519         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
19520         in r148403.
19521
19522 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
19523
19524         PR c/39252
19525         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
19526         * builtins.c (expand_builtin_unreachable): New function.
19527         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
19528         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
19529         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
19530         successors.
19531         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
19532         searching for missing barriers.
19533
19534 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19535
19536         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
19537         when -fprofile-generate* was passed.
19538         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
19539
19540 2009-06-11  Anthony Green  <green@moxielogic.com>
19541
19542         * config/moxie/moxie.md: Define length attribute for all instructions.
19543         (rCC): Define.
19544         (*b<cond:code>): Support limited branch ranges for new PC-relative
19545         branch instructions.
19546         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
19547
19548 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
19549
19550         * config/i386/i386.c (min_insn_size): Use get_attr_length
19551         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
19552         For __asm return 0.
19553
19554         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
19555         instead of emit_insn_before.
19556
19557 2009-06-10  Ian Lance Taylor  <iant@google.com>
19558
19559         PR bootstrap/40408
19560         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
19561         GIMPLE_SWITCH.
19562
19563 2009-06-10  Revital Eres  <eres@il.ibm.com>
19564
19565         * passes.c (init_optimization_passes): Reschedule
19566         predictive-commoning pass before complete unroll pass.
19567
19568 2009-06-10  Martin Jambor  <mjambor@suse.cz>
19569
19570         * cgraph.c (cgraph_node_can_be_local_p): New function.
19571         (cgraph_make_node_local): New function.
19572         * cgraph.h (cgraph_node_can_be_local_p): Declare.
19573         (cgraph_make_node_local): Declare.
19574
19575 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
19576
19577         * tree.h (tree_base): Add packed_flag and user_align fields.
19578         Decrease size of spare field.
19579         (TYPE_USER_ALIGN): Use user_align from tree_base.
19580         (DECL_USER_ALIGN): Likewise.
19581         (TYPE_PACKED): Use packed_flag from tree_base.
19582         (DECL_PACKED): Likewise.
19583         (tree_type): Delete packed_flag and user_align fields.  Widen
19584         precision field.  Widen mode field and shuffle fields to align
19585         mode on an 8-bit boundary.
19586         (tree_decl_common): Delete decl_flag_1 and user_align fields.
19587         Renumber decl_flag_* fields.  Fix comments.  Widen
19588         decl_common_unused field.
19589         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
19590         (DECL_EXTERNAL): Likewise.
19591         (DECL_BIT_FIELD): Likewise.
19592         (DECL_NONADDRESSABLE_P): Likewise.
19593         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
19594         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
19595
19596 2009-06-10  Ian Lance Taylor  <iant@google.com>
19597
19598         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
19599         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
19600         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
19601         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
19602         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
19603         DEF_VEC_ALLOC_FUNC_P.
19604         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
19605         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
19606         DEF_VEC_ALLOC_FUNC_O.
19607         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
19608         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
19609         DEF_VEC_ALLOC_FUNC_I.
19610         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
19611         (vec_stack_p_reserve_exact_1): Declare.
19612         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
19613         (vec_stack_free): Declare.
19614         (VEC_stack_alloc): Define.
19615         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
19616         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
19617         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
19618         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
19619         for void_p.
19620         (stack_vecs): New static variable.
19621         (vec_stack_p_reserve_exact_1): New function.
19622         (vec_stack_o_reserve_1): New static function.
19623         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
19624         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
19625         (vec_stack_free): New function.
19626         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
19627         (VEC_df_ref_stack_alloc): Define.
19628         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
19629         DEF_VEC_ALLOC_P_STACK.
19630         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
19631         (struct df_collection_rec): Change _vec fields to VEC.  Remove
19632         _use fields.
19633         (df_free_collection_rec): Adjust for new fields.
19634         (df_insn_rescan): Use new df_collection_rec fields.
19635         (df_notes_rescan, df_canonize_collection_rec): Likewise.
19636         (df_ref_create_structure, df_ref_record): Likewise.
19637         (df_get_conditional_uses, df_get_call_refs): Likewise.
19638         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
19639         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
19640         (df_record_exit_block_uses, df_bb_verify): Likewise.
19641         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
19642         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
19643         Remove count parameter.  Change return type to void.  Change all
19644         callers.
19645         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
19646         Remove count parameter.  Change return type to void.  Change all
19647         callers.
19648         (df_install_refs): Change old_vec parameter to VEC.  Remove count
19649         parameter.  Change all callers.
19650         (df_install_mws): Change old_vec parameter to VEC.  Remove count
19651         parameter.  Change all callers.
19652         (df_refs_verify): Change new_rec parameter to VEC.  Change call
19653         callers.
19654         (df_mws_verify): Likewise.
19655
19656 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
19657
19658         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
19659
19660 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
19661
19662         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
19663
19664 2009-06-10  Anthony Green  <green@moxielogic.com>
19665
19666         * config/moxie/crti.asm: New file.
19667         * config/moxie/crtn.asm: New file.
19668         * config/moxie/moxie.c: New file.
19669         * config/moxie/moxie.h: New file.
19670         * config/moxie/sfp-machine.h: New file.
19671         * config/moxie/moxie-protos.h: New file.
19672         * config/moxie/t-moxie: Created.
19673         * config/moxie/t-moxie-softfp: Created.
19674         * config/moxie/moxie.md: Created.
19675         * config/moxie/constraints.md: Created.
19676         * config.gcc: Add moxie support.
19677         * doc/md.texi (Machine Constraints): Add moxie constraints.
19678         * doc/contrib.texi (Contributors): Mention moxie port.
19679         * doc/install.texi (Specific): Mention the moxie port.
19680
19681 2009-06-09  Ian Lance Taylor  <iant@google.com>
19682
19683         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
19684         compiling with C++.
19685         * optabs.c (optab_table): Only use designated initializers if
19686         HAVE_DESIGNATED_INITIALIZERS is defined.
19687         (convert_optab_table): Likewise.
19688         (init_optabs): Always call init_insn_codes if
19689         HAVE_DESIGNATED_INITIALIZERS is not defined.
19690
19691 2009-06-09  Ian Lance Taylor  <iant@google.com>
19692
19693         * targhooks.c (default_builtin_vectorized_function): Change fn
19694         parameter to unsigned int.
19695         (default_builtin_vectorized_conversion): Change code parameter to
19696         unsigned int.
19697         (default_builtin_reciprocal): Change fn parameter to unsigned int.
19698         * targhooks.h: Update declarations.
19699         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
19700         parameter to unsigned int.
19701
19702         * c-typeck.c (comptypes_check_enum_int): New static function.
19703         (comptypes_internal): Add enum_and_int_p parameter.  Change all
19704         callers.
19705         (comp_target_types): Add location parameter.  Change all callers.
19706         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
19707         Change all callers.
19708         (function_types_compatible_p, type_lists_compatible_p): Likewise.
19709         (build_conditional_expr): Add colon_loc parameter.  Change all
19710         callers.
19711         (convert_for_assignment): Add location parameter.  Change all callers.
19712         * c-parser.c (c_parser_conditional_expression): Pass location of
19713         colon to build_conditional_expr.
19714         * c-tree.h (build_conditional_expr): Update declaration.
19715
19716 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19717
19718         * graphite.c: Revert previous patch.
19719
19720 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
19721
19722         PR bootstrap/40103
19723         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
19724
19725 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19726
19727         * tree-ssa-loop-prefetch.c
19728         (loop_prefetch_arrays): Fixed a portability problem in printf format
19729         string.
19730
19731 2009-06-09  Martin Jambor  <mjambor@suse.cz>
19732
19733         PR tree-optimization/40351
19734         * tree-sra.c (propagate_subacesses_accross_link): Check that a
19735         refrence to a potential artifical subaccess can be constructed.
19736
19737 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
19738
19739         * config/sh/sh-protos.h (sh_optimization_options): Declare.
19740         (sh_override_options): Likewise.
19741         * config/sh/sh.c: Include params.h.
19742         (sh_optimization_options): New.
19743         (sh_override_options): Likewise.
19744         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
19745         (OVERRIDE_OPTIONS): Use sh_override_options.
19746
19747 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19748
19749         * dwarf2out.c (emit_cfa_remember): New variable.
19750         (add_fde_cfi): If emit_cfa_remember, recurse to add
19751         DW_CFA_remember_state first.
19752         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
19753         instead just set emit_cfa_remember.
19754
19755 2009-06-08  Jan Hubicka  <jh@suse.cz>
19756
19757         PR debug/40126
19758         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
19759
19760 2009-06-08  Jan Hubicka  <jh@suse.cz>
19761
19762         PR middle-end/39834
19763         * cgraphunit.c (save_inline_function_body): Do not copy transform
19764         hooks for saved inline bodies.
19765         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
19766         for given function.
19767
19768 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
19769
19770         * jump.c (returnjump_p): Handle delayed branches.  Add missing
19771         function comment.
19772
19773 2009-06-08  Jan Hubicka  <jh@suse.cz>
19774
19775         PR middle-end/40102
19776         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
19777         original node might've been modified.
19778         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
19779
19780 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
19781
19782         * tree-object-size.c (addr_object_size): Add OSI argument.
19783         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
19784         (compute_builtin_object_size, expr_object_size): Adjust callers.
19785         (plus_stmt_object_size): Call addr_object_size instead of
19786         compute_builtin_object_size.
19787
19788 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
19789             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19790
19791         * tree-ssa-loop-prefetch.c
19792         (gather_memory_references): Introduced a counter for the number of
19793         memory references.
19794         (anything_to_prefetch_p): Introduced a counter for the number of
19795         prefetches.
19796         (is_loop_prefetching_profitable): New function with a cost model
19797         for prefetching.
19798         (loop_prefetch_arrays): Use the new cost model to determine if
19799         prefetching is profitable.
19800         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
19801         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19802         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
19803         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19804         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
19805         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
19806
19807 2009-06-08  Michael Matz  <matz@suse.de>
19808
19809         PR debug/40012
19810         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
19811         partitions use the same.
19812         (expand_one_var): Deal with DECL_RTL sometimes begin set also
19813         for basevars of SSA_NAMEs.
19814         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
19815         to not expand them twice.
19816         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
19817         multiple places.
19818
19819 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
19820
19821         * common.opt (fcompare-debug=, fcompare-debug-second): New.
19822         (fdump-final-insns=, gtoggle): New.
19823         * doc/invoke.texi: Document them.
19824         * final.c (rest_of_clean_state): Dump final insn stream.
19825         * gcc.c (invoke_as): Hook in -fcompare-debug.
19826         (static_spec_functions): Add compare-debug-dump-opt,
19827         compare-debug-self-opt and compare-debug-auxbase-opt.
19828         (compare_debug, compare_debug_second, compare_debug_opt): New.
19829         (switches_debug_check, n_switches_debug_check): New.
19830         (debug_auxbase_opt, debug_check_temp_file): New.
19831         (process_command): Handle -fno-compare-debug, -fcompare-debug and
19832         -fcompare-debug=*.
19833         (do_self_spec): Handle arguments after switches.
19834         (do_spec_1): Add .gk extension to temp file basenames for compare.
19835         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
19836         (cc1_options): Use it instead of normal auxbase computation for
19837         the second compare-debug compilation.
19838         (compare_files): New.
19839         (main): Set up and implement compare debug mode.
19840         (compare_debug_dump_opt_spec_function): New.
19841         (compare_debug_self_opt_spec_function): New.
19842         (compare_debug_auxbase_opt_spec_function): New.
19843         * toplev.c (process_options): Handle flag_gtoggle,
19844         flag_dump_final_insns.
19845         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
19846         during -fcompare-debug-second compilation.
19847
19848 2009-06-07  Ian Lance Taylor  <iant@google.com>
19849
19850         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
19851         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
19852
19853         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
19854         with no default node.  Change warning with %H to warning_at.
19855         Don't clear warn_switch around case checking.
19856         * doc/invoke.texi (Warning Options): Clarify distinction between
19857         -Wswitch and -Wswitch-enum.
19858
19859 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19860
19861         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
19862
19863 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19864
19865         * gbl-ctors.h: Add header guard.
19866
19867 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19868
19869         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
19870         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
19871         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
19872         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
19873         prototypes for removed functions.
19874         (expressions_equal_p): Move to ...
19875         * tree-ssa-sccvn.h: ... here and ...
19876         * matrix-reorg.c: ... adjust includes.
19877
19878 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19879
19880         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
19881
19882 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19883
19884         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
19885         (finish_function): Remove erroneous whitespace.
19886
19887 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19888
19889         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
19890         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
19891
19892 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19893
19894         * errors.c (internal_error): Commentary typo fix.
19895         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
19896         * tree-ssa-pre.c: Ditto.
19897
19898 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19899
19900         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
19901         them is supposed to hold actual statements.
19902
19903 2009-06-06  Ian Lance Taylor  <iant@google.com>
19904
19905         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
19906         empty statements can now have attributes.
19907
19908 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
19909
19910         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
19911         * config/mips/mips.md: Ditto.
19912
19913 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19914
19915         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
19916         _RELOCATABLE.
19917         (__eabi_uconvert): Likewise.
19918
19919 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19920
19921         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
19922         CFI_* definitions with IN_GCC.
19923
19924 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
19925
19926         * xcoffout.h (xcoffout_source_line): Update prototype.
19927
19928 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19929
19930         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
19931         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
19932
19933 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19934
19935         PR middle-end/40340
19936         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
19937         inlined_function_outer_scope_p blocks for artificial inlines
19938         even at -g0/-g1.
19939         * tree.c (tree_nonartificial_location): Rewrite using
19940         block_nonartificial_location.
19941
19942 2009-06-05  Revital Eres  <eres@il.ibm.com>
19943             Leehod Baruch  <leehod@il.ibm.com>
19944
19945         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
19946         (expand_expr_real_1): Remove comment.
19947         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
19948         Vectorize misaligned access when the target supports it.
19949         (vect_supportable_dr_alignment): Check for unaligned access support.
19950         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
19951         and remove asset.
19952
19953 2009-06-05  Julian Brown  <julian@codesourcery.com>
19954
19955         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
19956         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
19957
19958 2009-06-05  Richard Guenther  <rguenther@suse.de>
19959
19960         PR bootstrap/40350
19961         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
19962         as possibly unused.
19963
19964 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19965
19966         * config/s390/s390.c (global_not_special_regno_p): New static inline.
19967         (save_gprs): Don't tell unwinder when a global register is saved.
19968         (s390_emit_epilogue): Emit needed epilogue unwind info.
19969
19970 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19971
19972         * dwarf2out.c (deferred_asm_name): New.
19973         (add_name_and_src_coords_attributes): Defer creation of
19974         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
19975         computed yet.
19976         (move_linkage_attr): New.
19977         (dwarf2out_finish): Revisit deferrals and emit attributes at the
19978         right place.
19979
19980 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19981
19982         * tree-nested.c (finalize_nesting_tree_1): Declare the
19983         frame_decl in the binding tree.
19984
19985 2009-06-04  Cary Coutant  <ccoutant@google.com>
19986
19987         * basic-block.h (struct basic_block_def): Add discriminator field.
19988         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
19989         callers.
19990         * debug.c (do_nothing_debug_hooks): Add additional entry.
19991         (debug_nothing_int_charstar_int): New function.
19992         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
19993         (debug_nothing_int_charstar_int): New declaration.
19994         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
19995         discriminator value in .loc directive.
19996         * final.c (last_discriminator): New variable.
19997         (discriminator): New variable.
19998         (final_start_function): Initialize above variables, pass current
19999         discriminator to debug hook.
20000         (notice_source_line): Check for discriminator change.
20001         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
20002         * sdbout.c (sdbout_source_line): New parameter.
20003         * tree-cfg.c (struct locus_discrim_map): New structure type.
20004         (discriminator_per_locus): New hash table.
20005         (build_gimple_cfg): Allocate and free discriminator hash table.
20006         (make_edges): Call assign_discriminator.
20007         (locus_map_hash): New function.
20008         (locus_map_eq): New function.
20009         (next_discriminator_for_locus): New function.
20010         (same_line_p): New function.
20011         (assign_discriminator): New function.
20012         (make_cond_expr_edges): Call assign_discriminator.
20013         (make_gimple_switch_edges): Likewise.
20014         (first_non_label_stmt): New function.
20015         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
20016         all callers.
20017         * xcoffout.c (xcoffout_source_line): Add new parameter.
20018
20019         * configure.ac (gcc_cv_as_discriminator): New configury check for
20020         gas support for discriminator.
20021         * configure: Regenerate.
20022         * config.in: Regenerate.
20023
20024 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
20025
20026         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
20027         val after checking for integers.
20028
20029 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
20030
20031         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
20032         X64_REGPARM_MAX.
20033         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
20034         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
20035         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
20036         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
20037         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
20038         X64_SSE_REGPARM_MAX.
20039         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
20040         X64_SSE_REGPARM_MAX.
20041
20042 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
20043
20044         * gcc.c (report_times_to_file): New.
20045         (execute): Implement it.
20046         (process_command): Support -time=.
20047         * doc/invoke.texi: Document it.
20048
20049 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
20050
20051         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
20052         that have value exprs.
20053
20054 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
20055
20056         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
20057         declarations for constants until...
20058         (dw2_output_indirect_constant_1): ... this point.
20059
20060 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
20061
20062         PR target/10242
20063         * arm.md (arm_addsi3): Don't try to split an add with an
20064         eliminable register until after reload has completed.
20065
20066 2009-06-03  Ian Lance Taylor  <iant@google.com>
20067
20068         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
20069         * genattrtab.c (write_length_unit_log): Likewise.
20070         * genchecksum.c (dosum): Likewise.
20071         * gengtype.c (write_rtx_next): Likewise.
20072         (finish_root_table, write_roots): Likewise.
20073         * gimple.c (gimple_ops_offset_): Likewise.
20074         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
20075         * config/arc/arc.c (arc_attribute_table): Likewise.
20076         * config/arm/arm.c (arm_attribute_table): Likewise.
20077         * config/avr/avr.c (avr_attribute_table): Likewise.
20078         * config/crx/crx.c (crx_attribute_table): Likewise.
20079         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
20080         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
20081         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
20082         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
20083         * config/sh/sh.c (sh_attribute_table): Likewise.
20084         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
20085         * config/spu/spu.c (spu_attribute_table): Likewise.
20086         * config/v850/v850.c (v850_attribute_table): Likewise.
20087
20088         * config/alpha/alpha.c (vms_attribute_table): Make static.
20089         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
20090         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
20091         * config/mips/mips.c (mips_attribute_table): Likewise.
20092
20093         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
20094         $(SYSTEM_H).
20095         (cc1-checksum.o): Likewise.
20096
20097 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
20098
20099         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
20100
20101 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
20102
20103         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
20104         insn if it is changing sp.  Use gen_add3_insn instead of
20105         conditionally gen_addsi3 and gen_adddi3.
20106         (offset_below_red_zone_p): New static inline function.
20107         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
20108         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
20109         * config/rs6000/ppc-asm.h: Include auto-host.h.
20110         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
20111         CFI_RESTORE): Define.
20112         * config/rs6000/crtresxgpr.asm: Add unwind info.
20113         * config/rs6000/crtresxfpr.asm: Likewise.
20114         * config/rs6000/crtresgpr.asm: Likewise.
20115         * config/rs6000/crtresfpr.asm: Likewise.
20116         * config/rs6000/crtsavgpr.asm: Likewise.
20117         * config/rs6000/crtsavfpr.asm: Likewise.
20118
20119         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
20120         argument of DWARF2_FRAME_REG_OUT macros.
20121
20122 2009-06-03  Julian Brown  <julian@codesourcery.com>
20123
20124         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
20125         words or less (including TImode) in core registers.
20126
20127 2009-06-03  Richard Guenther  <rguenther@suse.de>
20128
20129         PR middle-end/40328
20130         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
20131
20132 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
20133
20134         * statistics.c (statistics_counter_event): Do not record event
20135         in pass dump if its number == -1.
20136         (curr_statistics_hash): Add assert that we never get passes
20137         with static number == -1.
20138
20139 2009-06-03  Richard Guenther  <rguenther@suse.de>
20140             Andrey Belevantsev  <abel@ispras.ru>
20141
20142         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
20143         non-BLKmode arrays addressable.
20144
20145 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
20146
20147         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
20148         * config/m68k/m68k.h: ... here.
20149
20150 2009-06-03  Martin Jambor  <mjambor@suse.cz>
20151
20152         PR tree-optimization/40323
20153         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
20154         assignment.
20155
20156 2009-06-03  Richard Guenther  <rguenther@suse.de>
20157
20158         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
20159         consistently.
20160
20161 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
20162
20163         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
20164         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
20165         JUMP_TABLE_DATA_P where applicable.
20166         * config/sh/sh.c: Ditto.
20167         * config/sh/sh.h: Ditto.
20168         * config/sh/sh.md: Ditto.
20169         * config/sh/symbian.c: Ditto.
20170
20171 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
20172
20173         * config/i386/driver-i386.c (describe_cache): Optimize
20174         concatenation of strings.  Use snprintf instead of sprintf.
20175         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
20176         target when not compiling with GCC.
20177
20178 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
20179
20180         * config/sh/sh.c: Revert last change.
20181         (sh_expand_epilogue): Emit a blockage insn before the frame
20182         pointer adjustment unconditionally.
20183
20184 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20185
20186         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
20187         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
20188         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
20189         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
20190         to COLLECT_GCC_OPTIONS.
20191
20192 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20193
20194         * collect2.c (target_system_root): New variable.
20195         (main): Handle --sysroot=.
20196         (ignore_library): Strip the sysroot from the library path.
20197
20198 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20199
20200         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
20201         (collect2.o): Depend on collect2-aix.h.
20202         (collect2-aix.o): New rule.
20203         * collect2-aix.h: New file.
20204         * collect2-aix.c: Likewise.
20205         * collect2.c: Include collect2-aix.h.  Don't undefine
20206         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
20207         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
20208         Use TARGET_AIX_VERSION instead of _AIX51.
20209         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
20210         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
20211         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
20212         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
20213         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
20214
20215 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20216
20217         * collect2.c (ignore_library): Avoid premature post-increment
20218         and null deference.
20219
20220 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
20221
20222         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
20223         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
20224         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
20225         CROSS_DIRECTORY_STRUCTURE too.
20226         (LINK_LIBG_SPEC): Likewise.
20227         (LIB_SPEC): Add %R to sysroot paths.
20228         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
20229         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
20230         * config/rs6000/aix51.h: As for aix43.h.
20231         * config/rs6000/aix52.h: Likewise.
20232         * config/rs6000/aix53.h: Likewise.
20233         * config/rs6000/aix61.h: Likewise.
20234         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
20235         to the beginning of sysroot paths.
20236
20237 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20238
20239         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
20240         INSN_LISTs that are out of the REG_NOTE range.
20241
20242 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20243
20244         * loop-unroll.c (struct iv_to_split): Add pointer to next.
20245         (struct var_to_expand): Likewise.
20246         (struct opt_info): Add head and tail for linked lists of the above.
20247         (analyze_insn_to_expand_var): Initialize next.
20248         (analyze_iv_to_split_insn): Likewise.
20249         (analyze_insns_in_loop): Create linked lists.
20250         (allocate_basic_variable): Simplify for use without hash table.
20251         (insert_var_expansion_initialization): Likewise, make it type-safer.
20252         (combine_var_copies_in_loop_exit): Likewise.
20253         (apply_opt_in_copies): Walk lists rather than hash tables.
20254         (release_var_copies): Simplified and inlined by hand into...
20255         (free_opt_info): ... this function.
20256
20257 2009-06-02  Richard Guenther  <rguenther@suse.de>
20258
20259         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
20260         for field decls.
20261
20262 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20263
20264         * cfgexpand.c (gimple_expand_cfg): Discard the source location
20265         only for builtins that are not overridden.
20266
20267 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20268
20269         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
20270         label string.
20271
20272 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20273
20274         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
20275
20276 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20277
20278         * combine.c (move_deaths): Compare LUIDs within the same BB only.
20279
20280 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
20281
20282         * common.opt (fdump-unnumbered-links): New.
20283         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
20284         * print-rtl.c (flag_dump_unnumbered_links): New.
20285         (print_rtx): Test it.
20286
20287 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
20288
20289         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
20290         push/pop multiple to 8-byte alignment.
20291
20292 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
20293
20294         * config/i386/i386.c (queued_cfa_restores): New static variable.
20295         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
20296         functions.
20297         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
20298         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
20299         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
20300         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
20301         note unconditionally.
20302         (ix86_emit_restore_regs_using_mov): Likewise.
20303         (ix86_emit_restore_sse_regs_using_mov): Likewise.
20304         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
20305         it through to ix86_emit_restore_reg_using_pop.
20306         (ix86_emit_leave): Add RED_OFFSET argument.  Call
20307         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
20308         instead of adding REG_CFA_OFFSET note unconditionally.
20309         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
20310         the above functions.  Call ix86_add_queued_cfa_restore_notes when
20311         needed.
20312
20313         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
20314         force output of the label even for dwarf2out_do_cfi_asm.
20315         (add_fde_cfi): If -g2 and above and cfi might change CFA,
20316         force creation of CFI label and chain DW_CFA_set_loc jumping to it
20317         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
20318         caller.
20319         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
20320         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
20321         dwarf2out_cfi_label callers.
20322         * tree.h (dwarf2out_cfi_label): Adjust prototype.
20323         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
20324         Adjust dwarf2out_cfi_label callers.
20325         * config/vax/vax.c (vax_output_function_prologue): Likewise.
20326
20327         * config/i386/i386.h (struct machine_cfa_state,
20328         struct machine_function): Guard with ifndef USED_FOR_TARGET
20329         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
20330
20331         PR other/40024
20332         * emutls.c (__emutls_get_address): Change arr->size to mean number
20333         of allocated arr->data entries instead of # of slots + 1.
20334
20335         PR middle-end/40316
20336         * recog.c (peep2_reinit_state): New function.
20337         (peephole2_init_state): Use it at the end of a basic block and also
20338         when seeing a RTX_FRAME_RELATED_P insn.
20339
20340 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
20341
20342         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
20343         fixuns_truncrfdi2): New.
20344         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
20345         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
20346         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
20347         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
20348         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
20349         *recip_approx): Remove.
20350         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
20351         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
20352         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
20353         move to div.md.
20354         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
20355         setf_exp_rf): New.
20356
20357 2009-06-01  Ian Lance Taylor  <iant@google.com>
20358
20359         * attribs.c (register_attribute): Use CONST_CAST.
20360         * collect2.c (main): Use CONST_CAST2.
20361         (scan_prog_file): Likewise.
20362         * gcc.c (process_command, main): Likewise.
20363         * toplev.c (toplev_main): Likewise.
20364
20365         * c-typeck.c (handle_warn_cast_qual): New static function,
20366         partially broken out of build_c_cast.
20367         (build_c_cast): Call handle_warn_cast_qual.
20368         * doc/invoke.texi (Warning Options): Document new effect of
20369         -Wcast-qual.
20370
20371 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
20372
20373         * diagnostic.c (diagnostic_build_prefix): Always print columns.
20374         (diagnostic_report_current_module): Print columns.
20375         * common.opt (flag_show_column): Enable by default.
20376
20377 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
20378
20379         * alias.c (find_base_term): Check for NULL term before returning.
20380
20381 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
20382
20383         Revert due to PR40320:
20384         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
20385         * calls.c (emit_library_call_value_1): Don't force_operand for move
20386         and push insns.
20387
20388 2009-06-01  Olivier Hainque  <hainque@adacore.com>
20389             Eric Botcazou  <ebotcazou@adacore.com>
20390
20391         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
20392         to be processed as a bitfield for constructor output purposes.
20393         * output.h (initializer_constant_valid_for_bitfield_p): Declare
20394         new function.
20395         * varasm.c (oc_local_state): New type, output_constructor
20396         local state to support communication with helpers.
20397         (oc_outer_state): New type, output_constructor outer state of
20398         relevance in recursive calls.
20399         (output_constructor_array_range): New output_constructor helper,
20400         extracted code for an array range element.
20401         (output_constructor_regular_field): New output_constructor helper,
20402         extracted code for an element that is not a bitfield.
20403         (output_constructor_bitfield): New output_constructor helper,
20404         extracted code for a bitfield element.  Accept an OUTER state
20405         argument for recursive processing.  Recurse on record or array
20406         CONSTRUCTOR values, possibly past noop conversions.
20407         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
20408         VALUE is a valid constant-valued expression for use in a static
20409         bit-field initializer.
20410         (output_constructor): Rework to use helpers.  Accept and honor an
20411         OUTER state argument for recursive calls.  Return total size.  Be
20412         prepared for nested constructors initializing bitfields.
20413         (output_constant): Feed OUTER in calls to output_constructor.
20414
20415 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
20416
20417         * calls.c (emit_library_call_value_1): Don't force_operand for move
20418         and push insns.
20419
20420 2009-06-01  Nick Clifton  <nickc@redhat.com>
20421
20422         * doc/invoke.texi (IA-64 Options): Fix typo.
20423
20424 2009-06-01  Ira Rosen  <irar@il.ibm.com>
20425
20426         PR tree-optimization/39129
20427         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
20428         printed message.
20429         (vect_do_peeling_for_loop_bound): Use
20430         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
20431         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
20432         (vect_loop_versioning): Likewise.
20433         (vect_create_cond_for_alias_checks): Fix indentation.
20434         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
20435         macros.
20436         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
20437         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
20438         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
20439         "control flow in loop".
20440         (vect_estimate_min_profitable_iters): Use
20441         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
20442         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
20443         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
20444         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
20445         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
20446         statement belongs to a group of strided accesses with the exact code
20447         check.
20448         (vectorizable_load): Likewise.
20449         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
20450         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20451
20452 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
20453
20454         * config/freebsd-stdint.h: New file.
20455         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
20456         Add freebsd-stdint.h to tm_file.
20457
20458 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
20459
20460         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
20461         (thumb2_extendhidi2): Likewise.
20462
20463 2009-05-31  Ian Lance Taylor  <iant@google.com>
20464
20465         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
20466
20467 2009-05-31  Ian Lance Taylor  <iant@google.com>
20468
20469         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
20470         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
20471         (ipa-reference.o): Depend upon gt-ipa-reference.h.
20472
20473 2009-05-31  Jason Merrill  <jason@redhat.com>
20474
20475         * tree-pretty-print.c (print_call_name): Take the callee, not the
20476         call itself.  Make non-static.  Use dump_function_name for functions.
20477         (dump_generic_node): Adjust.
20478         * diagnostic.h: Declare print_call_name.
20479         * gimple-pretty-print.c (dump_gimple_call): Use it.
20480
20481 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
20482
20483         * config/sh/sh.md (ashldi3_std): New define_expand.
20484         (ashldi3): Use it.
20485
20486 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
20487
20488         PR target/40313
20489         * config/sh/sh.c: Include debug.h.
20490         (sh_expand_epilogue): Emit a blockage insn before the frame
20491         pointer adjustment also when dwarf2out_do_frame returns true.
20492
20493 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
20494
20495         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
20496         (thumb2_extendqidi2): New pattern.
20497
20498 2009-05-31  Ira Rosen  <irar@il.ibm.com>
20499
20500         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
20501         mark phis for renaming.
20502         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
20503         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
20504         Call mark_sym_for_renaming.
20505         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
20506         * tree-vect-loop.c (vect_transform_loop): Remove
20507         vect_memsyms_to_rename initialization and a call to
20508         mark_set_for_renaming.
20509
20510 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
20511
20512         PR middle-end/40304
20513         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
20514         frame related even if !set_cfa && style < 0.
20515
20516 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
20517
20518         * config/i386/mingw-tls.c: New file.
20519         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
20520         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
20521         defining _WIN32 but not __CYGWIN__.
20522
20523 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20524
20525         * configure.ac: Add MPC support.
20526
20527         * config.in, configure: Regenerate.
20528
20529 2009-05-29  Richard Henderson  <rth@redhat.com>
20530
20531         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
20532         NOTE_INSN_BASIC_BLOCK.
20533         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
20534         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
20535         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
20536         to be deleted.
20537         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
20538         add in_use field.
20539         (add_cfi): Disable check redefining cfa away from drap.
20540         (lookup_cfa_1): Add remember argument; handle remember/restore.
20541         (lookup_cfa): Pass remember argument.
20542         (cfa_remember): New.
20543         (compute_barrier_args_size_1): Remove sibcall check.
20544         (dwarf2out_frame_debug_def_cfa): New.
20545         (dwarf2out_frame_debug_adjust_cfa): New.
20546         (dwarf2out_frame_debug_cfa_offset): New.
20547         (dwarf2out_frame_debug_cfa_register): New.
20548         (dwarf2out_frame_debug_cfa_restore): New.
20549         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
20550         (dwarf2out_begin_epilogue): New.
20551         (dwarf2out_frame_debug_restore_state): New.
20552         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
20553         DW_CFA_restore_state.
20554         (output_cfi_directive): Likewise.
20555         (convert_cfa_to_fb_loc_list): Likewise.
20556         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
20557         * dwarf2out.h: Update.
20558         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
20559         (copy_insn_1): Early out for null.
20560         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
20561         and dwarf2out_frame_debug_restore_state.
20562         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
20563         (prologue_insn_hash, epilogue_insn_hash): New.
20564         (free_after_compilation): Adjust freeing accordingly.
20565         (record_insns): Create hash table if needed; push insns into
20566         hash instead of array.
20567         (maybe_copy_epilogue_insn): New.
20568         (contains): Search hash table instead of array.
20569         (sibcall_epilogue_contains): Remove.
20570         (thread_prologue_and_epilogue_insns): Split eh_return insns
20571         and mark them as epilogues.
20572         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
20573         scanning in terms of basic blocks.
20574         * insn-notes.def (CFA_RESTORE_STATE): New.
20575         * jump.c (returnjump_p_1): Accept EH_RETURN.
20576         (eh_returnjump_p_1, eh_returnjump_p): New.
20577         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
20578         CFA_REGISTER, CFA_RESTORE): New.
20579         * rtl.def (EH_RETURN): New.
20580         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
20581
20582         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
20583         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
20584
20585         * config/i386/i386.c (gen_push): Update cfa state.
20586         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
20587         add a CFA_ADJUST_CFA note.
20588         (ix86_dwarf_handle_frame_unspec): Remove.
20589         (ix86_expand_prologue): Update cfa state.
20590         (ix86_emit_restore_reg_using_pop): New.
20591         (ix86_emit_restore_regs_using_pop): New.
20592         (ix86_emit_leave): New.
20593         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
20594         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
20595         * config/i386/i386.h (struct machine_cfa_state): New.
20596         (ix86_cfa_state): New.
20597         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
20598         (eh_return_internal): Merge from eh_return_<mode>,
20599         use eh_return rtx, split w/ epilogue.
20600
20601 2009-05-29  Ian Lance Taylor  <iant@google.com>
20602
20603         * builtins.c (validate_gimple_arglist): Don't use va_arg with
20604         enum type.
20605         * calls.c (emit_library_call_value_1): Likewise.
20606
20607         * c-typeck.c (c_build_va_arg): New function.
20608         * c-tree.h (c_build_va_arg): Declare.
20609         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
20610         instead of build_va_arg.
20611
20612 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
20613
20614         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
20615         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
20616         (ptr_difference_cost): Use affine combinations to compute it.
20617         (difference_cost): Likewise.
20618         (get_computation_cost_at): Compute more accurate cost for addresses
20619         if the ratio is a multiplier allowed in addresses.
20620         For non-addresses, consider that an additional offset or symbol is
20621         added only once.
20622
20623 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20624
20625         * config/i386/i386.c (ix86_decompose_address): Avoid useless
20626         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
20627
20628         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
20629         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
20630         (prefix_rex): For UNIT_MMX don't imply the prefix by default
20631         if MODE_DI.
20632         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
20633         to 1 for TYPE_SSE{IADD1,CVT1}.
20634         (prefix_vex_imm8): Removed.
20635         (length_vex): Only pass 1 as second argument to
20636         ix86_attr_length_vex_default if prefix_extra is 0.
20637         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
20638         (length): For prefix vex computation use length_immediate
20639         attribute instead of prefix_vex_imm8.
20640         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
20641         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
20642         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
20643         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
20644         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
20645         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
20646         a space in between the operands.
20647         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
20648         if one operand is 0xff and the other one si, di, bp or sp.
20649         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
20650         other one si, di, bp or sp.
20651         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
20652         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
20653         type and mode attributes.
20654         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
20655         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
20656         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
20657         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
20658         prefix_data16 attribute iff MODE_DF.
20659         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
20660         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
20661         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
20662         constm128_operand in length_immediate computation.
20663         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
20664         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
20665         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
20666         length_immediate attribute to 1.
20667         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
20668         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
20669         for certain alternatives.
20670         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
20671         prefix_data16 attribute if MODE_V1DF.
20672         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
20673         length_immediate to 1.
20674         (set_got_rex64, set_rip_rex64): Remove length attribute, set
20675         length_address to 4, set mode attribute to MODE_DI.
20676         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
20677         (fxam<mode>2_i387): Set length attribute to 4.
20678         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
20679         *prefetch_3dnow_rex): Override length_address attribute.
20680         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
20681         attributes.
20682         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
20683         (constm128_operand): Removed.
20684         * config/i386/i386.c (memory_address_length): For
20685         disp && !index && !base in 64-bit mode account for SIB byte if
20686         print_operand_address can't optimize disp32 into disp32(%rip)
20687         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
20688         for fs: or gs: segment.
20689         (ix86_attr_length_immediate_default): When checking if shortform
20690         is possible, truncate immediate to the length of the non-shortened
20691         immediate.
20692         (ix86_attr_length_address_default): Ignore MEM_P operands
20693         with X constraint.
20694         (ix86_attr_length_vex_default): Only check for DImode on
20695         GENERAL_REG_P operands.
20696         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
20697         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
20698         (sse_cvttps2pi): Clear prefix_rep attribute.
20699         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
20700         attribute.
20701         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
20702         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
20703         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
20704         iff operand 2 is const_int_operand.
20705         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
20706         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
20707         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
20708         instead of vex.
20709         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
20710         prefix_data16.
20711         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
20712         prefix_data16 attribute for movlpd and movhpd instructions.
20713         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
20714         length_immediate for shufpd instruction.
20715         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
20716         (avx_cmpp<avxmodesuffixf2c><mode>3,
20717         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
20718         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
20719         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
20720         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
20721         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
20722         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
20723         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
20724         prefix_data16 attribute for the first alternative to 1.
20725         (*avx_loadlps): Override length_immediate for the first alternative.
20726         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
20727         attributes for second alternative.
20728         (*vec_concatv2sf_sse4_1): Override length_immediate and
20729         prefix_data16 attributes for second alternative.
20730         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
20731         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
20732         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
20733         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
20734         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
20735         prefix_data16 and length_immediate to 1.
20736         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
20737         to 1.
20738         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
20739         prefix_extra attribute for variants that don't have 0f prefix alone.
20740         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
20741         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
20742         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
20743         *sse4_1_pextrd): Set length_immediate to 1.
20744         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
20745         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
20746         to 1.
20747         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
20748         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
20749         length_immediate to 1 for second alternative.
20750         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
20751         prefix_extra and length_immediate attributes for the first
20752         alternative.
20753         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
20754         first alternative.
20755         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
20756         to 1 for the first and third alternative.
20757         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
20758         alternative.
20759         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
20760         attribute.
20761         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
20762         attribute to 0.
20763         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
20764         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
20765         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
20766         *avx_psign<mode>3): Set prefix_extra attribute to 1.
20767         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
20768         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
20769         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
20770         ssse3_psign<mode>3): Override prefix_rex attribute.
20771         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
20772         (ssse3_palignrti): Override length_immediate to 1.
20773         (ssse3_palignrdi): Override length_immediate to 1, override
20774         prefix_rex attribute.
20775         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
20776         (sse4a_extrqi): Override length_immediate to 2.
20777         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
20778         (sse4a_insertq): Override prefix_data16 to 0.
20779         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
20780         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
20781         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
20782         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
20783         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
20784         and length_immediate to 1.
20785         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
20786         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
20787         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
20788         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
20789         and length_immediate to 1.
20790         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
20791         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
20792         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
20793         avx_ptest256): Override prefix_extra to 1.
20794         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
20795         Override prefix_data16 and length_immediate to 1.
20796         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
20797         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
20798         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
20799         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
20800         prefix_data16 to 0 and prefix_extra to 2.
20801         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
20802         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
20803         attribute.
20804         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
20805         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
20806         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
20807         and prefix_extra to 2.
20808         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
20809         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
20810         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
20811         avx_vpermilvar<mode>3,
20812         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
20813         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
20814         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
20815         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
20816         Override prefix_extra to 1.
20817         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
20818         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
20819         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
20820         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
20821         prefix_extra and length_immediate to 1.
20822         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
20823         modrm to 0.
20824         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
20825         to 1 for the first alternative.
20826         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
20827         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
20828         cases.
20829         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
20830         *movv2sf_internal_avx, *movv2sf_internal): Override
20831         prefix_rep attribute for certain alternatives.
20832         (*mov<mode>_internal): Override prefix_rep or prefix_data16
20833         attributes for certain alternatives.
20834         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
20835         attributes for certain alternatives.
20836         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
20837         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
20838         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
20839         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
20840         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
20841         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
20842         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
20843         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
20844         length_immediate to 1 if operand 2 is const_int_operand.
20845         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
20846         *vec_extractv2si_1): Set length_immediate attribute to 1.
20847         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
20848         using old 3DNOW insn rather than SSE/3DNOW_A.
20849         (mmx_emms, mmx_femms): Clear modrm attribute.
20850
20851 2009-05-29  Martin Jambor  <mjambor@suse.cz>
20852
20853         * tree-sra.c:  New implementation of SRA.
20854
20855         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
20856         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
20857         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
20858         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
20859         (SRA_MAX_STRUCTURE_COUNT): Removed.
20860         (SRA_FIELD_STRUCTURE_RATIO): Removed.
20861         * doc/invoke.texi (sra-max-structure-size): Removed.
20862         (sra-field-structure-ratio): Removed.
20863
20864 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20865
20866         PR middle-end/40291
20867         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
20868         before expansion.
20869
20870 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
20871
20872         PR rtl-optimization/40101
20873         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
20874         seqno.  Adjust comment.
20875         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
20876         inserting bookkeeping before a jump, the jump is not scheduled.
20877         When no positive seqno found, provide a value.  Add comment.
20878
20879 2009-05-29  Richard Guenther  <rguenther@suse.de>
20880
20881         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
20882         short-cutting on the first component.
20883
20884 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20885
20886         PR middle-end/39958
20887         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
20888         for trees other than decls/types.
20889
20890 2009-05-29  Richard Guenther  <rguenther@suse.de>
20891
20892         * tree-ssa-operands.c (get_expr_operands): Do not handle
20893         INDIRECT_REFs in the handled-component case.  Remove
20894         unused get_ref_base_and_extent case.
20895         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
20896         tree_low_cst and host_integerp where possible.
20897         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
20898         codes for equivalence.
20899         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
20900
20901 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
20902
20903         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
20904         to tmake_file for i[34567]86-*-cygwin*.
20905
20906 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20907
20908         PR target/40017
20909         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
20910         (altivec_categorize_keyword, init_vector_keywords,
20911         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
20912         similar to bool.
20913
20914 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
20915
20916         * tree.c (handle_dll_attribute): Check if node is
20917         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
20918
20919 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
20920
20921         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
20922         component.
20923         (thumb2_zero_extendqidi2): Likewise.
20924
20925 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20926
20927         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
20928         instead of gen_movrt.
20929         * config/sh/sh.md (movrt): Remove.
20930
20931 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
20932
20933         * doc/invoke.texi (IA-64 Options):
20934         Add -msdata, -mfused-madd, -mno-inline-float-divide,
20935         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
20936         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
20937         -msched-prefer-non-control-spec-insns,
20938         -msched-stop-bits-after-every-cycle,
20939         -msched-count-spec-in-critical-path,
20940         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
20941         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
20942         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
20943         and -msched-spec-verbose.
20944
20945 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
20946
20947         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
20948         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
20949         error if used.
20950         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
20951
20952 2009-05-28  Richard Guenther  <rguenther@suse.de>
20953
20954         * tree-ssa-alias.c (ao_ref_init): New function.
20955         (ao_ref_base): Likewise.
20956         (ao_ref_base_alias_set): Likewise.
20957         (ao_ref_alias_set): Likewise.
20958         (refs_may_alias_p_1): Change signature.
20959         (refs_may_alias_p): Adjust.
20960         (refs_anti_dependent_p): Likewise.
20961         (refs_output_dependent_p): Likewise.
20962         (call_may_clobber_ref_p_1): Change signature.
20963         (call_may_clobber_ref_p): Adjust.
20964         (stmt_may_clobber_ref_p_1): New function split out from ...
20965         (stmt_may_clobber_ref_p): ... here.
20966         (maybe_skip_until): Adjust signature.
20967         (get_continuation_for_phi): Likewise.
20968         (walk_non_aliased_vuses): Likewise.
20969         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
20970         (ao_ref_init): Declare.
20971         (ao_ref_base): Likewise.
20972         (ao_ref_alias_set): Likewise.
20973         (stmt_may_clobber_ref_p_1): Likewise.
20974         (walk_non_aliased_vuses): Adjust.
20975         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
20976         (get_ref_from_reference_ops): remove.
20977         (vn_reference_lookup_2): Adjust signature.
20978         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
20979         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
20980         (vn_reference_lookup): Adjust.
20981         (vn_reference_insert): Likewise.
20982         (vn_reference_insert_pieces): Adjust signature.
20983         (visit_reference_op_call): Adjust.
20984         * tree-ssa-pre.c (get_expr_type): Simplify.
20985         (phi_translate_1): Adjust.
20986         (compute_avail): Likewise.
20987         (translate_vuse_through_block): Do not re-build trees.
20988         (value_dies_in_block_x): Likewise.
20989         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
20990         fields.
20991         (vn_reference_lookup_pieces): Adjust declaration.
20992         (vn_reference_insert_pieces): Likewise.
20993
20994 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
20995
20996         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
20997         with checking disabled.
20998
20999 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
21000
21001         PR target/37216
21002
21003         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
21004         macro definition for support of three-operand format aligned
21005         .comm directive in assembler on cygwin/pe/mingw target OS.
21006         * configure:  Regenerate.
21007         * config.h:  Regenerate.
21008
21009         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
21010         aligned form of .comm directive if -mpe-aligned-commons is in effect.
21011         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
21012
21013         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
21014         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
21015
21016 2009-05-28  Ira Rosen  <irar@il.ibm.com>
21017
21018         PR tree-optimization/40254
21019         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
21020         in analysis of basic blocks.
21021
21022 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
21023
21024         PR middle-end/33699
21025         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
21026         * target-def.h (TARGET_CONST_ANCHOR): New macro.
21027         (TARGET_INITIALIZER): Use it.
21028         * cse.c (CHEAPER): Move it up to the other macros.
21029         (insert): Rename this ...
21030         (insert_with_costs): ... to this.  Add cost parameters.  Update
21031         function comment.
21032         (insert): New function.  Call insert_with_costs.
21033         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
21034         find_reg_offset_for_const, try_const_anchors): New functions.
21035         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
21036         when using a const-anchor.  Call insert_const_anchors.
21037         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
21038         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
21039
21040 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
21041
21042         * tree-inline.c (remap_decls): Enable nonlocalized variables
21043         when not optimizing.
21044
21045 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
21046
21047         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
21048         Simplify other tests involving optimize.
21049
21050 2009-05-27  Tom Tromey  <tromey@redhat.com>
21051
21052         * unwind-dw2.c (_Unwind_DebugHook): New function.
21053         (uw_install_context): Call _Unwind_DebugHook.
21054
21055 2009-05-27  Tom Tromey  <tromey@redhat.com>
21056
21057         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
21058
21059 2009-05-27  Ian Lance Taylor  <iant@google.com>
21060
21061         * Makefile.in (LINKER, LINKER_FLAGS): Define.
21062         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
21063         (ALL_LINKERFLAGS): Define.
21064         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
21065         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
21066         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
21067         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
21068         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
21069         $(LINKER_FOR_BUILD).
21070         (build/gcov-iov$(build_exeext)): Likewise.
21071
21072 2009-05-27  Julian Brown  <julian@codesourcery.com>
21073
21074         * gcse.c (target.h): Include.
21075         (can_assign_to_reg_without_clobbers_p): Check that the target allows
21076         copy of argument to a pseudo register.
21077
21078 2009-05-27  Diego Novillo  <dnovillo@google.com>
21079
21080         * tree-ssa-live.c (dump_scope_block): Document arguments.
21081         (dump_scope_blocks): Document.
21082         (debug_scope_blocks): New.
21083         * tree-flow.h (debug_scope_blocks): Declare.
21084
21085 2009-05-21  Denis Chertykov  <denisc@overta.ru>
21086
21087         * doc/contrib.texi (Contributors): Add myself to the list.
21088
21089 2009-05-27  Olivier Hainque  <hainque@adacore.com>
21090
21091         * expr.c (target_align): New function.  Alignment the TARGET of an
21092         assignment may be assume to have.
21093         (highest_pow2_factor_for_target): Use it instead of relying on
21094         immediate tree attributes of TARGET, not necessarily honored when
21095         intermediate bitfields are involved.
21096
21097 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
21098
21099         PR target/40266
21100         * config/i386/driver-i386.c (host_detect_local_cpu): Support
21101         AVX, SSE4, AES, PCLMUL and POPCNT.
21102
21103 2009-05-27  Diego Novillo  <dnovillo@google.com>
21104
21105         * tree-pretty-print.c (dump_location): New.
21106         (dump_generic_node): Call it.
21107         Factor code to handle BLOCK nodes ...
21108         (dump_block_node): ... here.
21109
21110 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
21111
21112         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
21113         with it.
21114         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
21115         included.
21116         * gcc-plugin.h: Include config.h and system.h.
21117         (IN_GCC): Define if not defined.
21118
21119 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
21120
21121         PR middle-end/40249
21122         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
21123         with -fno-inline.
21124
21125 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
21126
21127         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
21128         applicable.
21129         * config/m32r/m32r.h: Ditto.
21130         * config/m32r/m32r.md: Ditto.
21131         * config/m32r/predicates.md: Ditto.
21132
21133 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
21134
21135         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
21136
21137 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
21138
21139         * doc/plugins.texi
21140         (Loading plugins): typo.
21141         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
21142         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
21143         (Interacting with the GCC Garbage Collector): Added new section.
21144         (Giving information about a plugin): Added new section for
21145         PLUGIN_INFO.
21146         * ggc.h (ggc_register_root_tab): Added declaration.
21147         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
21148         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
21149         (register_callback): Improved comment in declaration.
21150         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
21151         (extra_root_vec) Added static variable for dynamic roots registration.
21152         (ggc_register_root_tab) Added new routine.
21153         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
21154         PLUGIN_GGC_MARKING event.
21155         * ggc-zone.c: Include plugin.h.
21156         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
21157         * ggc-page.c: Include plugin.h.
21158         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
21159         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
21160         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
21161         (register_callback): check lack of callbacks for
21162         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
21163         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
21164         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
21165         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
21166         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
21167         dependency on plugin.h.
21168         (plugin.o): Added dependency on ggc.h...
21169
21170 2009-05-26  Richard Guenther  <rguenther@suse.de>
21171
21172         PR middle-end/40248
21173         Revert
21174         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21175         with mismatched comparison modes.
21176
21177         * expr.c (expand_expr_real_1): Expand the operand of a
21178         VIEW_CONVERT_EXPR in its natural mode.
21179
21180 2009-05-26  Ian Lance Taylor  <iant@google.com>
21181
21182         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
21183         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
21184         (ALL_COMPILERFLAGS): Define.
21185         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
21186         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
21187         (collect2$(exeext), collect2.o): Likewise.
21188         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
21189         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
21190         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
21191         (libbackend.o, intl.o, cppdefault.o): Likewise.
21192         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
21193         (build/%.o): Use $(COMPILER_FOR_BUILD).
21194         (build/gen%$(build_exeext)): Likewise.
21195         (build/gcov-iov$(build_exeext)): LIkewise.
21196         * config/t-darwin (darwin.o): Use $(COMPILER).
21197         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
21198         * config/t-sol2 (sol2-c.o): Likewise.
21199         (sol2.o): Likewise.
21200         * config/t-vxworks (vxworks.o): Likewise.
21201         * config/x-darwin (host-darwin.o): Likewise.
21202         * config/x-hpux (host-hpux.o): Likewise.
21203         * config/x-linux (host-linux.o): Likewise.
21204         * config/x-solaris (host-solaris.o): Likewise.
21205         * config/alpha/x-alpha (driver-alpha.o): Likewise.
21206         * config/arm/t-arm (arm-c.o): Likewise.
21207         * config/arm/t-pe (pe.o): Likewise.
21208         * config/arm/t-wince-pe (pe.o): Likewise.
21209         * config/i386/t-cygming (winnt.o): Likewise.
21210         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
21211         * config/i386/t-cygwin (cygwin1.o): Likewise.
21212         (cygwin2.o): Likewise.
21213         * config/i386/t-i386 (i386-c.o): Likewise.
21214         * config/i386/t-interix (winnt.o): Likewise.
21215         * config/i386/t-netware (netware.o): Likewise.
21216         * config/i386/t-nwld (nwld.o): Likewise.
21217         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
21218         * config/i386/x-i386 (driver-i386.o): Likewise.
21219         * config/i386/x-cygwin (host-cygwin.o): Likewise.
21220         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
21221         * config/ia64/t-ia64 (ia64-c.o): Likewise.
21222         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
21223         * config/mips/x-native (driver-native.o): Likewise.
21224         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
21225         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
21226         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
21227         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
21228         * config/score/t-score-elf (score7.o): Likewise.
21229         (score3.o): Likewise.
21230         * config/sh/t-sh (sh-c.o): Likewise.
21231         * config/sh/t-symbian (sh-c.o): Likewise.
21232         (symbian.o): Likewise.
21233         * config/spu/t-spu-elf (spu-c.o): Likewise.
21234         * config/v850/t-v850 (v850-c.o): Likewise.
21235         * config/v850/t-v850e (v850-c.o): Likewise.
21236
21237 2009-05-26  Richard Guenther  <rguenther@suse.de>
21238
21239         PR tree-optimization/40122
21240         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
21241         VECTOR_CSTs if possible.
21242         (fold_gimple_assign): Likewise.
21243
21244 2009-05-26  Richard Guenther  <rguenther@suse.de>
21245
21246         PR middle-end/40252
21247         * fold-const.c (fold_binary): Use the correct types for building
21248         rotates.
21249
21250 2009-05-26  Richard Guenther  <rguenther@suse.de>
21251
21252         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
21253         redundant calls to merge_alias_info.
21254         (bump_vector_ptr): Likewise.
21255         * tree-ssa-copy.c (merge_alias_info): Remove.
21256         (replace_exp_1): Remove call to merge_alias_info.
21257         (propagate_tree_value): Likewise.
21258         (fini_copy_prop): Propagate points-to info.
21259         * tree-flow.h (merge_alias_info): Remove.
21260
21261 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
21262
21263         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
21264
21265 2009-05-25  Jan Hubicka  <jh@suse.cz>
21266
21267         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21268         * cgraph.h (struct inline_summary): New filed self_wize,
21269         size_inlining_benefit, self_time and time_inlining_benefit.
21270         (struct cgraph_global_info): Replace insns by time ans size fields.
21271         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21272         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21273         (ipcp_update_callgraph): Do not touch function bodies.
21274         * ipa-inline.c: Include except.h
21275         (MAX_TIME): New constant.
21276         (overall_insns): Remove.
21277         (leaf_node_p): New.
21278         (overall_size, max_benefit): New static variables.
21279         (cgraph_estimate_time_after_inlining): New function.
21280         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21281         (cgraph_clone_inlined_nodes): Update size.
21282         (cgraph_mark_inline_edge): Update size.
21283         (cgraph_estimate_growth): Use size info.
21284         (cgraph_check_inline_limits): Check size.
21285         (cgraph_default_inline_p): Likewise.
21286         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21287         (cgraph_decide_recursive_inlining): Check size.
21288         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21289         and times.
21290         (cgraph_decide_inlining): Likewise.
21291         (cgraph_decide_inlining_incrementally): Likewise; honor
21292         PARAM_EARLY_INLINING_INSNS.
21293         (likely_eliminated_by_inlining_p): New predicate.
21294         (estimate_function_body_sizes): New function.
21295         (compute_inline_parameters): Use it.
21296         * except.c (must_not_throw_labels): New function.
21297         * except.h (must_not_throw_labels): Declare.
21298         * tree-inline.c (init_inline_once): Kill inlining_weigths
21299         * tree-ssa-structalias.c: Avoid uninitialized warning.
21300         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21301         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21302         (PARAM_INLINE_CALL_COST): Remove.
21303         (PARAM_EARLY_INLINING_INSNS): New.
21304
21305 2009-05-25  Richard Guenther  <rguenther@suse.de>
21306
21307         PR tree-optimization/36327
21308         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
21309         callback for reference translation or lookup at the point of may-defs.
21310         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
21311         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
21312         for union COMPONENT_REFs.
21313         (vn_reference_lookup_3): New callback.  Lookup from memset
21314         and CONSTRUCTOR assignment, translate through struct copies.
21315         (vn_reference_lookup_pieces): Make sure to not free the
21316         passed operands array.  Adjust walk_non_aliased_vuses call.
21317         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
21318         make sure we do not leak memory.
21319
21320 2009-05-25  Richard Guenther  <rguenther@suse.de>
21321
21322         * tree-ssa-alias.h (dump_points_to_solution): Declare.
21323         * tree-inline.c (expand_call_inline): Reset the escaped and
21324         callused solutions.
21325         * tree-ssa-structalias.c (pass_build_ealias): New.
21326         * tree-pass.h (pass_build_ealias): Declare.
21327         * passes.c (init_optimization_passes): Add PTA during
21328         early optimizations.
21329         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
21330         and CALLUSED solutions.
21331         (dump_points_to_solution): New function, split out from ...
21332         (dump_points_to_info_for): ... here.
21333         * tree-parloops.c (parallelize_loops): Reset the escaped and
21334         callused solutions.
21335
21336 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21337
21338         PR bootstrap/40027
21339         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
21340         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
21341
21342 2009-05-25  Ira Rosen  <irar@il.ibm.com>
21343
21344         PR tree-optimization/40238
21345         * tree-vect-stmts.c (vect_init_vector): Insert initialization
21346         statements after basic block's labels.
21347         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
21348         to free the allocated memory.
21349
21350 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
21351
21352         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
21353         return address with a USE.
21354
21355 2009-05-24  Richard Guenther  <rguenther@suse.de>
21356
21357         PR middle-end/40233
21358         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
21359         array type from the main variant of the inner type.
21360
21361 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
21362
21363         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
21364         definition to bool (from int) to un-break build.
21365         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
21366
21367 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
21368
21369         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
21370         discard_stmt_changes): Delete.
21371         * tree-ssa-operands.c (scb_stack): Delete.
21372         (init_ssa_operands): Do not initialize it.
21373         (fini_ssa_operands): Do not free it.
21374         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
21375
21376         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
21377         update_stmt, remove the others.  Fix comments.
21378         * tree-dfa.c (optimize_stack_restore): Likewise.
21379         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
21380         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
21381         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
21382         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
21383         Likewise.
21384         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
21385         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
21386         (dom_opt_finalize_block): Likewise, adjusting access to
21387         stmts_to_rescan.
21388         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
21389         (stmts_to_rescan): Change item type to gimple.
21390         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
21391
21392 2009-05-24  Ira Rosen  <irar@il.ibm.com>
21393
21394         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
21395         * tree-pass.h (pass_slp_vectorize): New pass.
21396         * params.h (SLP_MAX_INSNS_IN_BB): Define.
21397         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
21398         * tree-vectorizer.c (timevar.h): Include.
21399         (user_vect_verbosity_level): Declare.
21400         (vect_location): Fix comment.
21401         (vect_set_verbosity_level): Update user_vect_verbosity_level
21402         instead of vect_verbosity_level.
21403         (vect_set_dump_settings): Add an argument. Ignore user defined
21404         verbosity if dump flags require higher level of verbosity. Print to
21405         stderr only for loop vectorization.
21406         (vectorize_loops): Update call to vect_set_dump_settings.
21407         (execute_vect_slp): New function.
21408         (gate_vect_slp): Likewise.
21409         (struct gimple_opt_pass pass_slp_vectorize): New.
21410         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
21411         access its members.
21412         (vec_info_for_bb): New function.
21413         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
21414         (VECTORIZATION_ENABLED): New macro.
21415         (SLP_ENABLED, SLP_DISABLED): Likewise.
21416         (vect_is_simple_use): Add bb_vec_info argument.
21417         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
21418         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
21419         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
21420         vect_schedule_slp, vect_analyze_slp): Likewise.
21421         (vect_analyze_stmt): Add slp_tree argument.
21422         (find_bb_location): Declare.
21423         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
21424         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
21425         (vect_analyze_loop_operations, vect_analyze_loop,
21426         get_initial_def_for_induction, vect_create_epilog_for_reduction,
21427         vect_finalize_reduction, vectorizable_reduction,
21428         vectorizable_live_operation, vect_transform_loop): Likewise.
21429         * tree-data-ref.c (dr_analyze_innermost): Update comment,
21430         skip evolution analysis if analyzing a basic block.
21431         (dr_analyze_indices): Likewise.
21432         (initialize_data_dependence_relation): Skip the test whether the
21433         object is invariant for basic blocks.
21434         (compute_all_dependences): Skip dependence analysis for data
21435         references in basic blocks.
21436         (find_data_references_in_stmt): Don't fail in case of invariant
21437         access in basic block.
21438         (find_data_references_in_bb): New function.
21439         (find_data_references_in_loop): Move code to
21440         find_data_references_in_bb and add a call to it.
21441         (compute_data_dependences_for_bb): New function.
21442         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
21443         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
21444         that STEP is 0.
21445         (vect_analyze_data_ref_dependence): Check for interleaving in case of
21446         unknown dependence in basic block and fail in case of dependence in
21447         basic block.
21448         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
21449         dependence instances from either loop or basic block vectorization
21450         info.
21451         (vect_compute_data_ref_alignment): Check if it is loop vectorization
21452         before calling nested_in_vect_loop_p.
21453         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
21454         dependence instances from either loop or basic block vectorization
21455         info.
21456         (vect_verify_datarefs_alignment): Likewise.
21457         (vect_enhance_data_refs_alignment): Adjust function calls.
21458         (vect_analyze_data_refs_alignment): Likewise.
21459         (vect_analyze_group_access): Fix printing. Skip different checks if
21460         DR_STEP is 0. Keep strided stores either in loop or basic block
21461         vectorization data structure. Fix indentation.
21462         (vect_analyze_data_ref_access): Fix comments, allow zero step in
21463         basic blocks.
21464         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
21465         dependence instances from either loop or basic block vectorization
21466         info.
21467         (vect_analyze_data_refs): Update comment. Call
21468         compute_data_dependences_for_bb to analyze basic blocks.
21469         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
21470         case of loop vectorization. In case of basic block vectorization use
21471         data-ref itself as a base.
21472         (vect_create_data_ref_ptr): In case of basic block vectorization:
21473         don't advance the pointer, add new statements before the current
21474         statement.  Adjust function calls.
21475         (vect_supportable_dr_alignment): Support only aligned accesses in
21476         basic block vectorization.
21477         * common.opt (ftree-slp-vectorize): New flag.
21478         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
21479         (vect_pattern_recog_1): Likewise.
21480         * tree-vect-stmts.c (process_use): Likewise.
21481         (vect_init_vector): Add new statements in the beginning of the basic
21482         block in case of basic block SLP.
21483         (vect_get_vec_def_for_operand): Adjust function calls.
21484         (vect_finish_stmt_generation): Likewise.
21485         (vectorizable_call): Add assert that it is loop vectorization, adjust
21486         function calls.
21487         (vectorizable_conversion, vectorizable_assignment): Likewise.
21488         (vectorizable_operation): In case of basic block SLP, take
21489         vectorization factor from statement's type and skip the relevance
21490         check. Adjust function calls.
21491         (vectorizable_type_demotion): Add assert that it is loop
21492         vectorization, adjust function calls.
21493         (vectorizable_type_promotion): Likewise.
21494         (vectorizable_store): Check for outer loop only in case of loop
21495         vectorization. Adjust function calls. For basic blocks, skip the
21496         relevance check and don't advance pointers.
21497         (vectorizable_load): Likewise.
21498         (vectorizable_condition): Add assert that it is loop vectorization,
21499         adjust function calls.
21500         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
21501         that it is not reduction, get vector type, call only supported
21502         functions, skip loop specific parts.
21503         (vect_transform_stmt): Check for outer loop only in case of loop
21504         vectorization.
21505         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
21506         (vect_is_simple_use): Fix comment, add new argument, fix conditions
21507         for external definition.
21508         * passes.c (pass_slp_vectorize): New pass.
21509         * tree-vect-slp.c (find_bb_location): New function.
21510         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
21511         check for patterns only in loops.
21512         (vect_build_slp_tree): Add argument, adjust function calls, fail in
21513         case of multiple types in basic block SLP.
21514         (vect_mark_slp_stmts_relevant): New function.
21515         (vect_supported_load_permutation_p): Fix comment.
21516         (vect_analyze_slp_instance): Add argument. In case of basic block
21517         SLP, take vectorization factor from statement's type, check that
21518         unrolling factor is 1. Adjust function call. Save SLP instance in
21519         either loop or basic block vectorization structure. Return FALSE,
21520         if SLP failed.
21521         (vect_analyze_slp): Add argument. Get strided stores groups from
21522         either loop or basic block vectorization structure. Return FALSE
21523         if basic block SLP failed.
21524         (new_bb_vec_info): New function.
21525         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
21526         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
21527         (vect_schedule_slp): Add argument. Get SLP instances from either
21528         loop or basic block vectorization structure. Set vectorization factor
21529         to be 1 for basic block SLP.
21530         (vect_slp_transform_bb): New function.
21531         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
21532
21533 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
21534
21535         * final.c (shorten_branches): Do not align labels for jump tables.
21536         (final_scan_insn): Use JUMP_TABLE_DATA_P.
21537
21538 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
21539
21540         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
21541         Remove outdated reference to flow.c and fix nits.
21542         * doc/gccint.texi: Tweak RTL description.
21543         * doc/rtl.texi: Likewise.
21544
21545 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
21546
21547         * config/avr/avr.c: Change my email address.
21548         * config/avr/avr.h: Likewise.
21549         * config/avr/avr.md: Likewise.
21550         * config/avr/avr-protos.h: Likewise.
21551         * config/avr/libgcc.S: Likewise.
21552
21553 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
21554
21555         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
21556         (spu_split_load, spu_split_store): Change return type to int.
21557         (spu_split_convert): Declare.
21558         * config/spu/predicates.md (spu_mem_operand): Remove.
21559         (spu_mov_operand): Update.
21560         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
21561         * config/spu/spu.c (regno_aligned_for_load): Remove.
21562         (reg_aligned_for_addr, spu_expand_load): Define.
21563         (spu_expand_extv): Reimplement and handle MEM.
21564         (spu_expand_insv): Handle MEM.
21565         (spu_sched_reorder): Handle insn's with length 0.
21566         (spu_legitimate_address_p): Reimplement.
21567         (store_with_one_insn_p): Return TRUE for any mode with size
21568         larger than 16 bytes.
21569         (address_needs_split): Define.
21570         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
21571         operands.
21572         (spu_convert_move): Define.
21573         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
21574         (spu_split_store): Change all MEM's to TImode.
21575         (spu_init_expanders): Preallocate registers that correspond to
21576         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
21577         mark_reg_pointer.
21578         (spu_split_convert): Define.
21579         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
21580         (_move<mode>, _movdi, _movti): Update predicate and condition.
21581         (load, store): Change to define_split.
21582         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
21583         extend<mode>ti2.
21584         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
21585         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
21586         define_insn_and_split of lshr<mode>3.
21587         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
21588         (<v>ashr<mode>3_imm): Define.
21589         (extv, extzv, insv): Allow MEM operands.
21590         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
21591         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
21592         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
21593         (_spu_convert2): Change to define_insn_and_split and remove the
21594         corresponding define_peephole2.
21595         (stack_protect_set, stack_protect_test, stack_protect_test_si):
21596         Change predicates to memory_operand.
21597
21598 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21599
21600         * config/arm/thumb2.md: Add 16-bit multiply instructions.
21601
21602 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
21603
21604         PR tree-optimization/40219
21605         * tree.c (iterative_hash_expr): Make sure the builtin function is
21606         a normal builtin function and not a front end or back end builtin
21607         before indexing into the built_in_decls array.
21608
21609 2009-05-22  Richard Guenther  <rguenther@suse.de>
21610
21611         PR middle-end/38964
21612         * alias.c (write_dependence_p): Do not use TBAA for answering
21613         anti-dependence or output-dependence.
21614         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
21615         (emit_pointer_definition): Remove.
21616         (emit_alias_warning): Likewise.
21617         (find_what_var_points_to): Remove TBAA pruning code.
21618         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
21619         violations.
21620         (compute_points_to_sets): Remove code computing the set of
21621         dereferenced pointers.
21622         * tree-data-ref.c (dr_may_alias_p): Properly use the split
21623         oracle for querying anti and output dependencies.
21624         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
21625         if TBAA may be applied.
21626         (refs_anti_dependent_p): New function.
21627         (refs_output_dependent_p): Likewise.
21628         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
21629         (refs_output_dependent_p): Likewise.
21630         * doc/tree-ssa.texi (Memory model): New section.
21631         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21632         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21633         * cfgexpand.c (expand_gimple_basic_block): Do not handle
21634         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
21635         * expr.c (expand_expr_real_1): Likewise.
21636         * gimple-low.c (lower_stmt): Likewise.
21637         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
21638         (dump_gimple_cdt): Remove.
21639         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21640         (gimple_size): Likewise.
21641         (walk_gimple_op): Likewise.
21642         (is_gimple_stmt): Likewise.
21643         (walk_stmt_load_store_addr_ops): Likewise.
21644         (gimple_build_cdt): Remove.
21645         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
21646         * gimple.h (gimple_cdt_new_type): Remove.
21647         (gimple_cdt_new_type_ptr): Likewise.
21648         (gimple_cdt_set_new_type): Likewise.
21649         (gimple_cdt_location): Likewise.
21650         (gimple_cdt_location_ptr): Likewise.
21651         (gimple_cdt_set_location): Likewise.
21652         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21653         * tree-cfg.c (remove_useless_stmts_1): Do not handle
21654         GIMPLE_CHANGE_DYNAMIC_TYPE.
21655         (verify_types_in_gimple_stmt): Likewise.
21656         * tree-inline.c (estimate_num_insns): Likewise.
21657         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
21658         (copy_decl_to_var): Likewise.
21659         (copy_result_decl_to_var): Likewise.
21660         * tree-pretty-print.c (dump_generic_node): Do not handle
21661         CHANGE_DYNAMIC_TYPE_EXPR.
21662         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
21663         * tree-ssa-operands.c (get_expr_operands): Likewise.
21664         * tree-ssa-structalias.c (struct variable_info): Remove
21665         no_tbaa_pruning member.
21666         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
21667         (unify_nodes): Do not copy it.
21668         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
21669         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
21670         (set_uids_in_ptset): Do not check it.
21671         (find_what_var_points_to): Likewise.
21672         (compute_tbaa_pruning): Remove.
21673         (compute_points_to_sets): Do not call it.
21674         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
21675         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
21676         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
21677         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
21678         (DECL_NO_TBAA_P): Likewise.
21679         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
21680         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
21681         (expand_omp_atomic_pipeline): Do not set it.
21682         * print-tree.c (print_node): Do not dump it.
21683         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
21684         redundant check.
21685
21686 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
21687
21688         PR target/39856
21689         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
21690         for clobber.
21691
21692 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
21693
21694         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
21695         non-external.
21696
21697 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21698
21699         * Makefile.in (bversion.h, s-bversion): New targets.
21700         (TOPLEV_H): Add bversion.h.
21701         * toplev.h: Include "bversion.h".
21702         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
21703         the __format__ attribute only if compiling with the same version
21704         of GCC as the sources (the "build version").
21705
21706 2009-05-22  Ben Elliston  <bje@au.ibm.com>
21707
21708         * c-format.c (handle_format_attribute): Fix comment typo.
21709
21710 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
21711
21712         PR target/37846
21713         * config/ia64/ia64.opt (mfused-madd): New.
21714         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
21715         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
21716         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
21717         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
21718         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
21719         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
21720         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
21721         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
21722         instruction if !TARGET_FUSED_MADD.
21723         (fpma, fpms): Remove colon from name.
21724
21725 2009-05-22  Richard Guenther  <rguenther@suse.de>
21726
21727         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
21728         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
21729         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
21730         TARGET_MEM_REF.
21731         (create_expression_by_pieces): Only convert if necessary.
21732         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
21733         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
21734
21735 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
21736
21737         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
21738         regular pattern from a template and rename it ...
21739         (*extzv_truncsi_exts): ... to this.
21740
21741 2009-05-21  Richard Guenther  <rguenther@suse.de>
21742
21743         * cgraph.h (struct cgraph_node): Remove inline_decl member.
21744         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
21745         (cgraph_default_inline_p): Likewise.
21746         (cgraph_decide_inlining_incrementally): Likewise.
21747
21748 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
21749             Uros Bizjak  <ubizjak@gmail.com>
21750
21751         * config/i386/cpuid.h (bit_MOVBE): New.
21752
21753         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
21754
21755         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
21756         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
21757         (ix86_handle_option): Handle OPT_mmovbe.
21758         (ix86_target_string): Add -mmovbe.
21759         (pta_flags): Add PTA_MOVBE.
21760         (processor_alias_table): Add PTA_MOVBE to "atom".
21761         (override_options): Handle PTA_MOVBE.
21762
21763         * config/i386/i386.h (TARGET_MOVBE): New.
21764
21765         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
21766         (*bswapsi_movbe): New.
21767         (*bswapdi_movbe): Likewise.
21768         (bswapdi2): Renamed to ...
21769         (*bswapdi_1): This.
21770         (bswapdi2): New expander.
21771
21772         * config/i386/i386.opt (mmovbe): New.
21773
21774         * doc/invoke.texi: Document -mmovbe.
21775
21776 2009-05-21  Taras Glek  <tglek@mozilla.com>
21777
21778         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
21779         * gcc-plugin.h (plugin_init): Updated signature.
21780         * gcc-plugin.h (plugin_name_args): Moved to this header.
21781         * doc/plugins.texi (plugin_init): Updated documention to reflect
21782         API change.
21783         * doc/plugins.texi (plugin_name_args): Added to documention.
21784
21785 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
21786
21787         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
21788         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
21789
21790 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
21791
21792         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
21793         JUMP_TABLE_DATA_P predicates where applicable.
21794         * config/i386/predicates.md: Ditto.
21795         * config/i386/sse.md: Ditto.
21796
21797 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
21798
21799         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
21800         operand2 -128 override length_immediate attribute to 1.
21801         * config/i386/predicates.md (constm128_operand): New predicate.
21802
21803         * config/i386/i386.c (memory_address_length): Handle %r12
21804         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
21805         also check REGNO.
21806         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
21807         mode look through optional ZERO_EXTEND and SUBREG.
21808         * config/i386/i386.md (R12_REG): New define_constant.
21809         (prefix_data16): For sse unit set also for MODE_TI insns.
21810         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
21811         insns set if operand 1 is ext_QIreg_operand.
21812         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
21813         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
21814         immediate.
21815         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
21816         mode from MODE_DI to MODE_SI.
21817         (movdi_1_rex64): Override modrm and length_immediate attributes
21818         only for movabs (TYPE_IMOV, alternative 2).
21819         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
21820         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
21821         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
21822         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
21823         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
21824         prefix_rex attribute if DImode.
21825         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
21826         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
21827         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
21828         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
21829         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
21830         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
21831         Likewise.  For TYPE_IMOV clear length_immediate attribute.
21832         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
21833         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
21834         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
21835         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
21836         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
21837         or one operand TYPE_ISHIFT.
21838         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
21839         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
21840         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
21841         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
21842         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
21843         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
21844         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
21845         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
21846         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
21847         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
21848         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
21849         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
21850         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
21851         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
21852         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
21853         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
21854         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
21855         set mode attribute, don't override length attribute.
21856         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
21857         to 1.
21858         (return_internal_long): Set length attribute to 2 instead of 1.
21859         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
21860         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
21861         prefix_rex attribute.
21862         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
21863         New predicates.
21864         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
21865
21866 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21867
21868         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
21869
21870 2009-05-20  Ian Lance Taylor  <iant@google.com>
21871
21872         * tree.c (build_tree_list_vec_stat): New function.
21873         (ctor_to_vec): New function.
21874         (build_nt_call_vec): New function.
21875         (build_call_array): Change args to be a const pointer.
21876         (build_call_vec): New function.
21877         * tree.h (build_nt_call_vec): Declare.
21878         (build_tree_list_vec_stat): Declare.
21879         (build_tree_list_vec): Define.
21880         (build_call_array): Update declaration.
21881         (build_call_vec): Declare.
21882         (ctor_to_vec): Declare.
21883         * c-common.c (tree_vector_cache): New static variable.
21884         (make_tree_vector): New function.
21885         (release_tree_vector): New function.
21886         (make_tree_vector_single): New function.
21887         (make_tree_vector_copy): New function.
21888         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
21889         (make_tree_vector_single, make_tree_vector_copy): Declare.
21890         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
21891         (c_parser_expr_list): Don't manage cache here, instead call
21892         make_tree_vector.
21893         (c_parser_release_expr_list): Remove static function.
21894         (c_parser_vec_to_tree_list): Remove static function.
21895         (c_parser_attributes): Call build_tree_list_vec instead of
21896         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
21897         c_parser_release_expr_list.
21898         (c_parser_postfix_expression_after_primary): Likewise.
21899         (c_parser_objc_keywordexpr): Likewise.
21900
21901 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
21902
21903         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
21904         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
21905         TARGET_CONVERT_TO_TYPE.
21906         * hooks.c (hook_tree_const_tree_null): Define.
21907         * hooks.h (hook_tree_const_tree_null): Declare.
21908         * target.h (struct gcc_target):  Add invalid_parameter_type,
21909         invalid_return_type, promoted_type, and convert_to_type fields.
21910         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
21911         (TARGET_INVALID_RETURN_TYPE): Define.
21912         (TARGET_PROMOTED_TYPE): Define.
21913         (TARGET_CONVERT_TO_TYPE): Define.
21914         (TARGET_INITIALIZER): Update for new fields.
21915         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
21916         (grokparms): Check targetm.invalid_parameter_type.
21917         * c-typeck.c (default_conversion): Check targetm.promoted_type.
21918         * c-convert.c (convert): Check targetm.convert_to_type.
21919
21920 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
21921
21922         * config/mips/mips.md (*extenddi_truncate<mode>,
21923         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
21924         defintions.
21925         (*extendhi_truncateqi): New define_insn_and_sptit.
21926
21927 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
21928
21929         PR middle-end/40204
21930         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
21931         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
21932
21933 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
21934
21935         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
21936         the operand of VIEW_CONVERT_EXPR.
21937
21938 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
21939
21940         * config/i386/driver-i386.c (host_detect_local_cpu): Check
21941         extended family and model for Intel processors.  Support Intel Atom.
21942
21943 2009-05-20  Olivier Hainque  <hainque@adacore.com>
21944
21945         * gstab.h (stab_code_type): Define, to be used instead of the
21946         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
21947         notice.
21948         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
21949         occurrences by stab_code_type.
21950         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
21951
21952 2009-05-20  Martin Jambor  <mjambor@suse.cz>
21953
21954         * tree-flow.h (insert_edge_copies_seq): Undeclare.
21955         (sra_insert_before): Likewise.
21956         (sra_insert_after): Likewise.
21957         (sra_init_cache): Likewise.
21958         (sra_type_can_be_decomposed_p): Likewise.
21959         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
21960         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
21961         (sra_insert_before): Likewise.
21962         (sra_insert_after): Likewise.
21963         (sra_init_cache): Likewise.
21964         (insert_edge_copies_seq): Made static and moved upwards.
21965
21966         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
21967         case.
21968
21969         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
21970
21971         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
21972         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
21973         simple copies.
21974
21975 2009-05-20  Richard Guenther  <rguenther@suse.de>
21976
21977         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21978         with mismatched comparison modes.
21979
21980 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21981
21982         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
21983         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
21984         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
21985         with shifts for Thumb2.
21986         (orsi_notsi): New for orn.
21987         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
21988         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
21989         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
21990         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
21991         Don't invert remainder for IOR.
21992
21993 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
21994
21995         PR tree-optimization/40087
21996         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
21997         number_of_iterations_ne): Rename never_infinite argument.
21998         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
21999         number_of_iterations_le): Handle pointer-type ivs when
22000         exit_must_be_taken is false.
22001         (number_of_iterations_cond):  Do not always assume that
22002         exit_must_be_taken if the control variable is a pointer.
22003
22004 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22005
22006         * c-typeck.c (build_binary_op): Allow % on integal vectors.
22007         * doc/extend.texi (Vector Extension): Document that % is allowed too.
22008
22009 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
22010
22011         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
22012         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
22013
22014 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22015
22016         PR c/40172
22017         * c.opt (Wlogical-op): Disabled by default.
22018         * c-opt (c_common_post_options): Do not enable Wlogical-op with
22019         Wextra.
22020         * doc/invoke.texi (Wlogical-op): Likewise.
22021
22022 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
22023
22024         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
22025         into CASE_CONVERT.
22026         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
22027         Propagate the type of the first operand.
22028         <ASSERT_EXPR>: Simplify.
22029         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
22030         Rewrite using the RHS code as discriminant.
22031         <NOP_EXPR>: Turn into CASE_CONVERT.
22032         <PLUS_EXPR>: Propagate the type of the first operand.
22033
22034 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
22035
22036         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
22037         (ia64_dconst_0_375): New.
22038         * config/ia64/ia64.c (ia64_override_options): Remove
22039         -minline-sqrt-min-latency warning.
22040         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
22041         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
22042         * config/ia64/ia64.md (*sqrt_approx): Remove.
22043         (sqrtsf2): Remove #if 0.
22044         (sqrtsf2_internal_thr): Rewrite and move to div.md.
22045         (sqrtdf): Remove assert.
22046         (sqrtdf2_internal_thr): Rewrite and move to div.md.
22047         (sqrtxf2): Remove #if 0.
22048         (sqrtxf2_internal_thr): Rewrite and move to div.md.
22049         * div.md (sqrt_approx_rf): New.
22050         (sqrtsf2_internal_thr): New implementation.
22051         (sqrtsf2_internal_lat): New.
22052         (sqrtdf2_internal_thr: New implementation.
22053         (sqrtxf2_internal): New implementation.
22054
22055 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
22056             Hans-Peter Nilsson  <hp@axis.com>
22057
22058         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
22059         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
22060         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
22061         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
22062         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
22063         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
22064         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
22065         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
22066         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
22067         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
22068         * c-common.c: ...from here.
22069
22070 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22071
22072         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
22073
22074 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22075
22076         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
22077
22078 2009-05-19  Ben Elliston  <bje@au.ibm.com>
22079
22080         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
22081         assignments with memcpy calls.
22082         (add_fdes): Likewise.
22083         (binary_search_unencoded_fdes): Likewise.
22084         (linear_search_fdes): Eliminate type puns.
22085
22086 2009-05-19  Richard Guenther  <rguenther@suse.de>
22087
22088         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
22089         not falsely claim to have propagated into all uses.
22090
22091 2009-05-19  Ben Elliston  <bje@au.ibm.com>
22092
22093         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
22094         version to v3.0.
22095
22096 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
22097
22098         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
22099         * config/sh/sh.c (sh_legitimate_address_p): Make static.
22100         (TARGET_LEGITIMATE_ADDRESS_P): New.
22101         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22102         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
22103
22104 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
22105
22106         PR debug/40109
22107         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
22108         child of the containing namespace's DIE.
22109
22110 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
22111
22112         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
22113         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
22114         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
22115         extend patterns.
22116
22117 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
22118
22119         PR target/39942
22120         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
22121         gen_align with gen_pad.
22122         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
22123         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
22124
22125         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
22126         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
22127
22128         * config/i386/i386.md (align): Renamed to ...
22129         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
22130         ASM_OUTPUT_MAX_SKIP_PAD.
22131
22132 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
22133
22134         * config.gcc: Fix variable syntax.
22135
22136         PR target/39531
22137         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
22138         before calling exact_log2.
22139         (output_iorsi3): Likewise.
22140         (output_xorsi3): Likewise.
22141
22142 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
22143
22144         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
22145         for the none zero constant operand except for EQ and NE
22146         comprisons even when the first operand is R0.
22147
22148 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
22149
22150         * config/s390/2064.md: Remove trailing whitespaces.
22151         * config/s390/2084.md: Likewise.
22152         * config/s390/constraints.md: Likewise.
22153         * config/s390/fixdfdi.h: Likewise.
22154         * config/s390/libgcc-glibc.ver: Likewise.
22155         * config/s390/s390-modes.def: Likewise.
22156         * config/s390/s390-protos.h: Likewise.
22157         * config/s390/s390.c: Likewise.
22158         * config/s390/s390.h: Likewise.
22159         * config/s390/s390.md: Likewise.
22160         * config/s390/tpf-unwind.h: Likewise.
22161
22162 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
22163
22164         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
22165
22166 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
22167
22168         M68K TLS support.
22169         * configure.ac (m68k-*-*): Check if binutils support TLS.
22170         * configure: Regenerate.
22171         * config/m68k/predicates.md (symbolic_operand): Extend comment.
22172         * config/m68k/constraints.md (Cu): New constraint.
22173         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
22174         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
22175         (movsi): Handle TLS symbols.
22176         (addsi3_5200): Handle XTLS symbols, indent.
22177         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
22178         (m68k_tls_reference_p): Declare.
22179         (m68k_legitimize_address): Declare.
22180         (m68k_unwrap_symbol): Declare.
22181         * config/m68k/m68k.opt (mxtls): New option.
22182         * config/m68k/m68k.c (ggc.h): Include.
22183         (m68k_output_dwarf_dtprel): Implement hook.
22184         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
22185         (m68k_expand_prologue): Load GOT pointer when function needs it.
22186         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
22187         (m68k_legitimate_constant_address_p): Same.
22188         (m68k_decompose_address): Handle TLS references.
22189         (m68k_get_gp): New static function.
22190         (enum m68k_reloc): New contants.
22191         (TLS_RELOC_P): New macro.
22192         (m68k_wrap_symbol): New static function.
22193         (m68k_unwrap_symbol): New function.
22194         (m68k_final_prescan_insn_1): New static function.
22195         (m68k_final_prescan_insn): New function.
22196         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
22197         functions.
22198         (legitimize_pic_address): Handle TLS references..
22199         (m68k_tls_get_addr, m68k_get_tls_get_addr)
22200         (m68k_libcall_value_in_a0_p)
22201         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
22202         (m68k_call_m68k_read_tp): Helper variables and functions for ...
22203         (m68k_legitimize_tls_address): Handle TLS references.
22204         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
22205         New functions.
22206         (m68k_legitimize_address): Handle TLS symbols.
22207         (m68k_get_reloc_decoration): New static function.
22208         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
22209         UNSPEC_RELOC32.
22210         (m68k_output_dwarf_dtprel): Implement hook.
22211         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
22212         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
22213         m68k_call_* routines.
22214         (sched_attr_op_type): Handle TLS symbols.
22215         (gt-m68k.h): Include.
22216         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
22217         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
22218
22219 2009-05-18  Martin Jambor  <mjambor@suse.cz>
22220
22221         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
22222         (visit_store_addr_for_mod_analysis): New function.
22223         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
22224         (determine_cst_member_ptr): Use gimple_assign_single_p.
22225         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
22226         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
22227         operands.  Don't check number of operands of a NOP_EXPR.
22228
22229 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
22230
22231         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
22232
22233 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22234
22235         PR c/40172
22236         * c-common.c (warn_logical_operator): Don't warn if one of
22237         expression isn't always true or false.
22238
22239 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
22240
22241         * config/i386/biarch32.h: New file.
22242         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
22243
22244 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
22245
22246         * config/mips/mips.md (*zero_extend<mode>_trunchi,
22247         *zero_extend<mode>_truncqi): Merge these into ...
22248         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
22249         Name the pattern following this as *zero_extendhi_truncqi.
22250
22251 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
22252
22253         PR middle-end/39301
22254         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
22255         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
22256         (output_info): Make field HOST_WIDEST_INT.
22257         (print_statistics): Use HOST_WIDEST_INT_PRINT.
22258         (dump_bitmat_statistics): Same.
22259
22260 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
22261
22262         * config.gcc (use_gcc_stdint):  Set to wrap.
22263         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
22264         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
22265         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
22266         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
22267         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
22268         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
22269         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
22270         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
22271
22272 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
22273
22274         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
22275         tune_64.
22276         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
22277         Move definitions earlier.
22278         (OPT_ARCH64, OPT_ARCH32): Define.
22279         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
22280         and tune_64.
22281
22282 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
22283
22284         PR target/40153
22285         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
22286         implies.
22287
22288 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
22289
22290         * arm.md (movdi2): Copy non-reg values to DImode registers.
22291
22292 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
22293
22294         PR target/39942
22295         * final.c (label_to_max_skip): New function.
22296         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
22297         CODE_LABEL_NUMBER <= max_labelno.
22298         * output.h (label_to_max_skip): New prototype.
22299         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
22300         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
22301         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
22302         Handle CODE_LABELs with >= 16 byte alignment or with
22303         max_skip == (1 << align) - 1.
22304         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
22305         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
22306
22307         PR target/39942
22308         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
22309         .p2align 3 if MAX_SKIP is smaller than 7.
22310         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
22311
22312 2009-05-15  Ian Lance Taylor  <iant@google.com>
22313
22314         * alias.c (struct alias_set_entry_d): Rename from struct
22315         alias_set_entry.  Change all uses.
22316         * except.c (struct call_site_record_d): Rename from struct
22317         call_site_record.  Change all uses.
22318         * except.h (struct eh_region_d): Rename from struct eh_region.
22319         Change all uses.
22320         * gcse.c (struct hash_table_d): Rename from struct hash_table.
22321         Change all uses.
22322         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
22323         ivtype_map_elt.  Change all uses.
22324         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
22325         Change all uses.
22326         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
22327         * graphite.h (struct name_tree_d): Rename from struct name_tree.
22328         Change all uses.
22329         (struct sese_d): Rename from struct sese.  Change all uses.
22330         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
22331         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
22332         * optabs.h (struct optab_d): Rename from struct optab.  Change all
22333         uses.
22334         (struct convert_optab_d): Rename from struct convert_optab.
22335         Change all uses.
22336         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
22337         ipa_opt_pass.  Change all uses.
22338         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
22339         all uses.
22340
22341         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
22342         defined as a typedef.
22343         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
22344         defined as a tag.
22345
22346 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22347
22348         PR 16302
22349         * fold-const.c (make_range,build_range_check,merge_ranges): Move
22350         declaration to...
22351         (merge_ranges): Returns bool.
22352         * tree.h (make_range): .. to here.
22353         (build_range_check): Likewise.
22354         (merge_ranges): Likewise. Renamed from merge_ranges.
22355         * c-typeck.c (parser_build_binary_op): Update calls to
22356         warn_logical_operator.
22357         * c-common.c (warn_logical_operator): Add new warning.
22358         * c-common.h (warn_logical_operator): Update declaration.
22359
22360 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
22361
22362         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
22363
22364 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22365
22366         * doc/install.texi: Document MPC requirements, flags etc.
22367
22368         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
22369         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
22370         Evaluate constant arguments.
22371         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
22372         (fold_builtin_1): Likewise, also evaluate constant arguments.
22373         Remove superfluous break.
22374         (do_mpc_ckconv): New.
22375         * real.h: Include mpc.h.
22376         * toplev.c (print_version): Output MPC version info if available.
22377
22378 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
22379
22380         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
22381
22382 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
22383
22384         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
22385         only once.
22386
22387 2009-05-15  Jan Hubicka  <jh@suse.cz>
22388
22389         * doc/invoke.texi (max-early-inliner-iterations): New flag.
22390         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
22391         (try_inline): Fix return value.
22392         (cgraph_decide_inlining_incrementally): Honor new value.
22393         (cgraph_early_inlining): Handle indirect inlining.
22394         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
22395
22396 2009-05-15  Jan Hubicka  <jh@suse.cz>
22397
22398         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
22399         * cgraphunit.c (cgraph_finalize_function): Set it.
22400         (cgraph_expand_function): Use it.
22401
22402 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
22403
22404         * real.c (encode_ieee_half): Define.
22405         (decode_ieee_half): Define.
22406         (ieee_half_format): Define.
22407         (arm_half_format): Define.
22408         * real.h (ieee_half_format): Declare.
22409         (arm_half_format): Declare.
22410
22411 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
22412
22413         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
22414         swapped, and reversed optabs exist before trying to use them.
22415
22416 2009-05-15  Paul Brook  <paul@codesourcery.com>
22417             Sandra Loosemore  <sandra@codesourcery.com>
22418
22419         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
22420         loads.  Allow PRE_DEC.
22421         (output_move_neon): Handle PRE_DEC.
22422         (arm_print_operand): Add 'A' for neon structure loads.
22423         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
22424         * config/arm/neon.md (neon_mov): Update comment.
22425         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
22426         calls.
22427         (Um): New constraint.
22428
22429 2009-05-15  Jan Hubicka  <jh@suse.cz>
22430
22431         Revert the following patch until testsuite fallout is fixed:
22432         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
22433         * cgraph.h (struct inline_summary): New filed self_wize,
22434         size_inlining_benefit, self_time and time_inlining_benefit.
22435         (struct cgraph_global_info): Replace insns by time ans size fields.
22436         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
22437         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
22438         (ipcp_update_callgraph): Do not touch function bodies.
22439         * ipa-inline.c: Include except.h
22440         (MAX_TIME): New constant.
22441         (overall_insns): Remove
22442         (overall_size, max_benefit): New static variables.
22443         (cgraph_estimate_time_after_inlining): New function.
22444         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
22445         (cgraph_clone_inlined_nodes): Update size.
22446         (cgraph_mark_inline_edge): Update size.
22447         (cgraph_estimate_growth): Use size info.
22448         (cgraph_check_inline_limits): Check size.
22449         (cgraph_default_inline_p): Likewise.
22450         (cgraph_edge_badness): Compute badness based on benefit and size cost.
22451         (cgraph_decide_recursive_inlining): Check size.
22452         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
22453         and times.
22454         (cgraph_decide_inlining): Likewise.
22455         (cgraph_decide_inlining_incrementally): Likewise; honor
22456         PARAM_EARLY_INLINING_INSNS.
22457         (likely_eliminated_by_inlining_p): New predicate.
22458         (estimate_function_body_sizes): New function.
22459         (compute_inline_parameters): Use it.
22460         * except.c (must_not_throw_labels): New function.
22461         * except.h (must_not_throw_labels): Declare.
22462         * tree-inline.c (init_inline_once): Kill inlining_weigths
22463         * tree-ssa-structalias.c: Avoid uninitialized warning.
22464         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22465         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22466         (PARAM_INLINE_CALL_COST): Remove.
22467         (PARAM_EARLY_INLINING_INSNS): New.
22468
22469 2009-05-15  Richard Guenther  <rguenther@suse.de>
22470
22471         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
22472         not TODO_update_ssa.
22473
22474 2009-05-15  Richard Guenther  <rguenther@suse.de>
22475
22476         PR tree-optimization/39999
22477         * gimple.h (gimple_expr_type): Use the expression type looking
22478         through useless conversions.
22479         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
22480         (vn_nary_op_insert_stmt): Likewise.
22481         (simplify_binary_expression): Likewise.
22482
22483 2009-05-15  Richard Guenther  <rguenther@suse.de>
22484
22485         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
22486         New options, enabled by default.
22487         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
22488         Document.
22489         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
22490         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
22491         * tree-ssa-structalias.c (gate_tree_pta): New function.
22492         (pass_build_alias): Use it.
22493
22494 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
22495
22496         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
22497         recurse on an invariant address if a conversion from a pointer
22498         type to a wider integer type is involved.
22499
22500 2009-05-15  Jan Hubicka  <jh@suse.cz>
22501
22502         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
22503         * cgraph.h (struct inline_summary): New filed self_wize,
22504         size_inlining_benefit, self_time and time_inlining_benefit.
22505         (struct cgraph_global_info): Replace insns by time ans size fields.
22506         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
22507         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
22508         (ipcp_update_callgraph): Do not touch function bodies.
22509         * ipa-inline.c: Include except.h
22510         (MAX_TIME): New constant.
22511         (overall_insns): Remove
22512         (overall_size, max_benefit): New static variables.
22513         (cgraph_estimate_time_after_inlining): New function.
22514         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
22515         (cgraph_clone_inlined_nodes): Update size.
22516         (cgraph_mark_inline_edge): Update size.
22517         (cgraph_estimate_growth): Use size info.
22518         (cgraph_check_inline_limits): Check size.
22519         (cgraph_default_inline_p): Likewise.
22520         (cgraph_edge_badness): Compute badness based on benefit and size cost.
22521         (cgraph_decide_recursive_inlining): Check size.
22522         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
22523         and times.
22524         (cgraph_decide_inlining): Likewise.
22525         (cgraph_decide_inlining_incrementally): Likewise; honor
22526         PARAM_EARLY_INLINING_INSNS.
22527         (likely_eliminated_by_inlining_p): New predicate.
22528         (estimate_function_body_sizes): New function.
22529         (compute_inline_parameters): Use it.
22530         * except.c (must_not_throw_labels): New function.
22531         * except.h (must_not_throw_labels): Declare.
22532         * tree-inline.c (init_inline_once): Kill inlining_weigths
22533         * tree-ssa-structalias.c: Avoid uninitialized warning.
22534         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
22535         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
22536         (PARAM_INLINE_CALL_COST): Remove.
22537         (PARAM_EARLY_INLINING_INSNS): New.
22538         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
22539         (inline-call-cost): Remove.
22540         (early-inlining-insns): New.
22541
22542 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
22543
22544         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
22545         for bounds.
22546         (print_int_cst_bounds_in_octal_p): Likewise.
22547         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
22548         with subtypes.
22549         * dwarf2out.c (base_type_die): Likewise.
22550         (is_subrange_type): Delete.
22551         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
22552         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
22553         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
22554         if the destination type is boolean.
22555         (build_range_check): Do not special-case subtypes.
22556         (fold_sign_changed_comparison): Likewise.
22557         (fold_unary): Likewise.
22558         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
22559         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
22560         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
22561         * tree.c (subrange_type_for_debug_p): New predicate based on the
22562         former is_subrange_type.
22563         * tree.h (subrange_type_for_debug_p): Declare.
22564         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
22565         (convert_affine_scev): Remove call to above function.
22566         (chrec_convert_aggressive): Likewise.
22567         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
22568         false for conversions involving subtypes.
22569         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
22570         (vrp_val_min): Likewise.
22571         (needs_overflow_infinity): Likewise.
22572         (extract_range_from_unary_expr): Likewise.
22573
22574 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
22575
22576         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
22577         * config/frv/frv.c: Likewise.
22578         * config/s390/s390.c: Likewise.
22579         * config/sparc/sparc.h: Likewise.
22580         * config/i386/i386.h: Likewise.
22581         * config/i386/i386.c: Likewise.
22582         * config/crx/crx.c: Likewise.
22583         * config/m68hc11/m68hc11.h: Likewise.
22584         * config/iq2000/iq2000.c: Likewise.
22585         * config/mn10300/mn10300.h: Likewise.
22586         * config/mn10300/mn10300.c: Likewise.
22587         * config/m68k/m68k.c: Likewise.
22588         * config/rs6000/rs6000.c: Likewise.
22589         * config/rs6000/xcoff.h: Likewise.
22590         * config/rs6000/linux64.h: Likewise.
22591         * config/rs6000/sysv4.h: Likewise.
22592         * config/score/score3.c: Likewise.
22593         * config/score/score7.c: Likewise.
22594         * config/score/score.c: Likewise.
22595         * config/arm/arm.md: Likewise.
22596         * config/mips/mips.c: Likewise.
22597         * config/mips/mips.md: Likewise.
22598         * config/bfin/bfin.h: Likewise.
22599         * config/pa/pa.c: Likewise.
22600         * config/pa/constraints.md: Likewise.
22601
22602         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
22603         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
22604         * config/pdp11/pdp11.h: Use memory_address_p instead.
22605
22606 2009-05-14  Ian Lance Taylor  <iant@google.com>
22607
22608         * passes.c (finish_optimization_passes): Change i to int.
22609         * plugin.c (plugins_active_p): Change event to int.
22610         (dump_active_plugins): Likewise.
22611         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
22612         Add cast.
22613         * tree.c (tree_range_check_failed): Change c to unsigned int.
22614         (omp_clause_range_check_failed): Likewise.
22615         (build_common_builtin_nodes): Change mode to int.  Add cast.
22616         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
22617         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
22618
22619         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
22620         ++ or -- with a variable of enum type.
22621
22622 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22623
22624         PR driver/40144
22625         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
22626
22627 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22628
22629         * store-motion.c: Do not include params.h
22630         * Makefile.in: Fix dependencies for various files.
22631
22632 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
22633
22634         * auto-inc-dec.c: Fix pass description, remove apparent
22635         accidental duplication.
22636
22637 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
22638
22639         PR middle-end/40147
22640         * ipa-utils.h (memory_identifier_string): Moved to ...
22641         * tree.h (memory_identifier_string): Here.  Add GTY(()).
22642
22643 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22644
22645         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
22646         in the former documentation of...
22647         (GO_IF_LEGITIMATE_ADDRESS): ... this.
22648         * ira-conflicts.c (get_dup_num): Use address_operand.
22649         * targhooks.c (default_legitimate_address_p): New.
22650         * targhooks.h (default_legitimate_address_p): New.
22651         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
22652         Call hook.
22653         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
22654         * target.h (struct target): Add legitimate_address_p.
22655         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
22656         (TARGET_INITIALIZER): Include it.
22657
22658         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22659         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
22660         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
22661         (TARGET_LEGITIMATE_ADDRESS_P): New.
22662
22663         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22664         (REG_OK_STRICT_P): Delete.
22665         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
22666         (frv_legitimate_address_p_1): ... this.
22667         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
22668         (frv_legitimate_address_p_1): ... the renamed old
22669         frv_legitimate_address_p.
22670         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
22671         (TARGET_LEGITIMATE_ADDRESS_P): New.
22672
22673         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22674         * config/s390/s390-protos.h (legitimate_address_p): Remove.
22675         * config/s390/s390.c (legitimate_address_p): Rename to...
22676         (s390_legitimate_address_p): ... this, make static.
22677         (legitimize_address): Adjust call.
22678         (TARGET_LEGITIMATE_ADDRESS_P): New.
22679         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
22680
22681         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22682         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
22683         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
22684         (TARGET_LEGITIMATE_ADDRESS_P): New.
22685
22686         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22687         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
22688         * config/spu/spu.c (spu_legitimate_address): Rename to...
22689         (spu_legitimate_address_p): ... this, make static.
22690         (TARGET_LEGITIMATE_ADDRESS_P): New.
22691
22692         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22693         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
22694         * config/sparc/sparc.c (legitimate_address_p): Rename to...
22695         (sparc_legitimate_address_p): ... this, make static and return bool.
22696         (legitimize_address): Adjust call.
22697         (TARGET_LEGITIMATE_ADDRESS_P): New.
22698
22699         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22700         * config/i386/i386-protos.h (legitimate_address_p): Remove.
22701         * config/i386/i386.c (legitimate_address_p): Rename to...
22702         (ix86_legitimate_address_p): ... this, make static.
22703         (constant_address_p): Move after it, adjust call.
22704         (TARGET_LEGITIMATE_ADDRESS_P): New.
22705
22706         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22707         * config/avr/avr-protos.h (legitimate_address_p): Remove.
22708         * config/avr/avr.c (legitimate_address_p): Rename to...
22709         (avr_legitimate_address_p): ... this, make static.
22710         (legitimize_address): Adjust call.
22711         (TARGET_LEGITIMATE_ADDRESS_P): New.
22712
22713         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22714         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
22715         * config/crx/crx.c (crx_legitimate_address_p): Make static.
22716         (TARGET_LEGITIMATE_ADDRESS_P): New.
22717
22718         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22719         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
22720         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
22721         (TARGET_LEGITIMATE_ADDRESS_P): New.
22722
22723         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22724         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
22725         Remove.
22726         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
22727         Make static.
22728         (TARGET_LEGITIMATE_ADDRESS_P): New.
22729
22730         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22731         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
22732         Remove.
22733         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
22734         Rename to...
22735         (m68hc11_legitimate_address_p): ... this, make static.
22736         (go_if_legitimate_address_internal): Rename to...
22737         (m68hc11_legitimate_address_p_1): ... this.
22738         (legitimize_address): Adjust call.
22739         (TARGET_LEGITIMATE_ADDRESS_P): New.
22740
22741         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22742         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
22743         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
22744         (TARGET_LEGITIMATE_ADDRESS_P): New.
22745
22746         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22747         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
22748         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
22749         (mn10300_legitimate_address_p): ... this, make static.
22750         (TARGET_LEGITIMATE_ADDRESS_P): New.
22751
22752         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22753         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
22754         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
22755         (TARGET_LEGITIMATE_ADDRESS_P): New.
22756
22757         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22758         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
22759         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
22760         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22761         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
22762         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
22763         (rs6000_legitimate_address_p): ... this, make static.
22764         (TARGET_LEGITIMATE_ADDRESS_P): New.
22765         (REG_MODE_OK_FOR_BASE_P): Delete.
22766         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
22767
22768         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22769         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
22770         Delete.
22771         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
22772         static, adjust types.
22773         (TARGET_LEGITIMATE_ADDRESS_P): New.
22774
22775         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22776         * config/score/score.c (score_address_p): Rename to...
22777         (score_legitimate_address_p): ... this.
22778         (TARGET_LEGITIMATE_ADDRESS_P): New.
22779         * config/score/score3.c (score3_address_p): Rename to...
22780         (score3_legitimate_address_p): ... this.
22781         * config/score/score7.c (score7_address_p): Rename to...
22782         (score7_legitimate_address_p): ... this.
22783
22784         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
22785         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
22786         GO_IF_LEGITIMATE_ADDRESS): Delete.
22787         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
22788         thumb2_legitimate_address_p): Delete.
22789         (arm_legitimate_address_p): Rename to...
22790         (arm_legitimate_address_outer_p): ... this.
22791         * config/arm/constraints.md ("Uq"): Adjust call.
22792         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
22793         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
22794         to...
22795         (arm_legitimate_address_outer_p): ... this.
22796         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
22797         static.
22798         (TARGET_LEGITIMATE_ADDRESS_P): New.
22799
22800         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22801         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
22802         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
22803         (TARGET_LEGITIMATE_ADDRESS_P): New.
22804
22805         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22806         * config/vax/vax-protos.h (legitimate_address_p): Remove.
22807         * config/vax/vax.c (legitimate_address_p): Rename to...
22808         (vax_legitimate_address_p): ... this, make static.
22809         (TARGET_LEGITIMATE_ADDRESS_P): New.
22810
22811         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22812         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
22813         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
22814         (TARGET_LEGITIMATE_ADDRESS_P): New.
22815
22816         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22817         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
22818         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
22819         (mmix_legitimate_address_p): ... this, make static.
22820         (TARGET_LEGITIMATE_ADDRESS_P): New.
22821
22822         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
22823         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
22824         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
22825         (TARGET_LEGITIMATE_ADDRESS_P): New.
22826
22827 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
22828
22829         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
22830         of MODE_COMPLEX_INT.
22831
22832 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
22833
22834         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
22835         LCT_NORMAL in function call.
22836         * mips-tdump.c (print_file_desc): Add cast to enum type.
22837         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
22838         (mark_stabs): Add casts to enum types.
22839         (parse_stabs_common): Add casts to enum types.
22840
22841 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22842
22843         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
22844         Check for invalid values of LETTER.
22845
22846 2009-05-13  Taras Glek  <tglek@mozilla.com>
22847
22848         * attribs.c (register_attribute): moved out attribute registration
22849         into register_attribute.
22850         * doc/plugins.texi: Documented register_attribute and
22851         PLUGIN_ATTRIBUTES.
22852         * gcc-plugin.h: Added forward decl for register_attribute.
22853         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
22854         * plugin.c (register_callback, invoke_plugin_callbacks): Added
22855         PLUGIN_ATTRIBUTES boilerplate.
22856
22857 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
22858
22859         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
22860         values even in sentinel and empty entries.
22861         (ms_printf_flag_specs):  Likewise.
22862         (ms_scanf_flag_specs):  Likewise.
22863         (ms_strftime_flag_specs):  Likewise.
22864         (ms_print_char_table):  Likewise.
22865         (ms_scan_char_table):  Likewise.
22866         (ms_time_char_table):  Likewise.
22867
22868 2009-05-13  Doug Kwan  <dougkwan@google.com>
22869
22870         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
22871
22872 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22873
22874         * config/mips/mips.md (store): Add attributes for QI and HI.
22875         Update comment.
22876         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
22877         (truncdi<mode>2): ... this new pattern.
22878
22879 2009-05-13  Brad Hards  <bradh@kde.org>
22880
22881         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
22882
22883 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
22884             Ben Elliston <bje@au.ibm.com>
22885
22886         PR middle-end/40035
22887         * dse.c (check_mem_read_rtx): Guard against width == -1.
22888
22889 2009-05-13  Michael Matz  <matz@suse.de>
22890
22891         PR middle-end/39976
22892         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
22893         (trivially_conflicts_p): New function.
22894         (insert_backedge_copies): Use it.
22895
22896 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
22897
22898         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
22899         (handle_stdc_pragma): Use new enum constant names.
22900         (handle_pragma_float_const_decimal64): Ditto.
22901
22902 2009-05-13  Ian Lance Taylor  <iant@google.com>
22903
22904         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
22905         tree.def.
22906
22907 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
22908
22909         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
22910         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
22911         multilibs.
22912         * config/m68k/m68k.h (FL_UCLINUX): Define.
22913
22914 2009-05-13  Jan Hubicka  <jh@suse.cz>
22915
22916         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
22917
22918 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22919
22920         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
22921         unless -fschedule-insns is specified.
22922
22923 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22924
22925         PR target/39561
22926         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
22927         TARGET_EXPAND_CBRANCHDI4.
22928         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
22929         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
22930         (cmpeqdi): Fix comment.
22931
22932 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22933
22934         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
22935         (sh_legitimate_address_p): Likewise.
22936         * config/sh/sh.c (sh_legitimate_index_p): New.
22937         (sh_legitimate_address_p): Likewise.
22938         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
22939         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
22940         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
22941         (MAYBE_BASE_REGISTER_RTX_P): New macro.
22942         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
22943         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
22944         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
22945         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
22946         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
22947
22948 2009-05-12  Jan Hubicka  <jh@suse.cz>
22949
22950         * tree-inline.c (estimate_operator_cost): Add operands;
22951         when division happens by constant, it is cheap.
22952         (estimate_num_insns): Loads and stores are not having cost of 0;
22953         EH magic stuff is cheap; when computing runtime cost of switch,
22954         use log2 base of amount of its cases; builtin_expect has cost of 0;
22955         compute cost for moving return value of call.
22956         (init_inline_once): Initialize time_based flags.
22957         * tree-inline.h (eni_weights_d): Add time_based flag.
22958
22959 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22960
22961         * df-core.c: Update head documentation.
22962
22963 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22964
22965         PR bootstrap/40118
22966         * rs6000.c (rs6000_generate_compare): Use op1b instead of
22967         shadowing exisiting variable op1.
22968
22969 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
22970
22971         PR target/37179
22972         * config/i386/driver-i386.c (processor_signatures): New enum.
22973         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
22974         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
22975         processor signature to detect geode processor.
22976
22977 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22978
22979         Revert:
22980
22981         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22982
22983         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22984         causes spurious differences between trunk and cond-optab branch.
22985
22986 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22987
22988         * dojump.c (compare_from_rtx): Delete.
22989         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
22990         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
22991         if the comparison does not satisfy the predicate; test predicates for
22992         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
22993         further if one existing pattern fails.
22994         * expr.h (compare_from_rtx): Delete.
22995         (prepare_operand): Declare it.
22996         * optabs.c: Change "lib call" to "libcall" throughout.
22997         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
22998         HAVE_conditional_trap, emit_cmp_insn): Delete.
22999         (can_compare_p): Delete cmp_optab case.
23000         (prepare_float_lib_cmp): Return an rtx and a machine mode.
23001         Accept other parameters by value.
23002         (prepare_operand): Make non-static.
23003         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
23004         other parameters by value.  Try to widen operands here based on
23005         an optab_methods argument and looking at cbranch_optab.
23006         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
23007         loop.  Use cbranch_optab directly.
23008         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
23009         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
23010         assertion.
23011         (emit_conditional_move, emit_conditional_add): Inline what's needed
23012         of compare_from_rtx, using new prepare_cmp_insn for the rest.
23013         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
23014         with COMPARE.  Move cmov_optab and cstore_optab above
23015         with cbranch_optab, move cmp_optab down with ucmp_optab,
23016         remove tst_otpab.  Do not initialize trap_rtx.
23017         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
23018         for trap code.  Do not check HAVE_conditional_trap.  Use
23019         prepare_cmp_insn.  Accept no predicate for operand 3.
23020         * optabs.h (OTI_cmp): Mark as used only for libcalls.
23021         (OTI_ctrap, ctrap_optab): New.
23022         (tst_optab): Delete.
23023         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
23024         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
23025         with lookup of ctrap_optab.
23026         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
23027         Delete.
23028         (ctrap_optab): New.
23029
23030         * combine.c (combine_simplify_rtx, simplify_set): Do not
23031         special case comparing against zero for cc0 machines.
23032         * simplify-rtx.c (simplify_binary_operation_1): Never remove
23033         COMPARE on cc0 machines.
23034         (simplify_relational_operation): Return a new expression when
23035         a COMPARE could be removed.
23036         * final.c (final_scan_insn): Compare cc_status values
23037         against LHS of a (compare FOO (const_int 0)) cc0 source.
23038         Also check if cc_status.value is the full compare.
23039
23040         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
23041         (cstoreMM4): Document.
23042         (conditional_trap): Document ctrapMM4 instead.
23043         (sync_compare_and_swapMM): Refer to cbranchcc4.
23044         (Dependent Patterns): Eliminate obsolete information referring to
23045         the old jump optimization phase.
23046         (Canonicalization): Include cbranchcc4 case, omit canonicalization
23047         of compares with 0 on cc0 machines.
23048         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
23049         avoiding references to cc0.  Remove text about storing operands
23050         in cmpMM.
23051         * doc/tm.texi (Condition Codes): Include blurb on different
23052         condition code representations, separate into subsections for
23053         CC0, MODE_CC and conditional execution.
23054
23055         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
23056         alpha_emit_setcc): Accept operands and a machine mode.
23057         * config/alpha/alpha.c (alpha_emit_conditional_branch):
23058         Get code/op0/op1 from operands, use machine mode argument
23059         instead of alpha_compare.fp_p.  Emit the branch here.
23060         (alpha_emit_setcc): Likewise, and return boolean.
23061         (alpha_emit_conditional_move): Likewise.  Assert that
23062         cmp_op_mode == cmp_mode, and simplify accordingly.
23063         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
23064         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
23065         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
23066         Delete.
23067         (stack probe test): Use cbranchdi4.
23068         * config/alpha/predicates.md (alpha_cbranch_operator): New.
23069
23070         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
23071         * config/arc/arc.h (movsicc, movsfcc): Use it.
23072         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
23073         (cbranchsi4, cstoresi4): New.
23074         (cmpsi, bCC and sCC expanders): Remove.
23075
23076         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
23077         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
23078         * config/arm/predicates.md (arm_comparison_operator): Only include
23079         floating-point operators if there is a hardware floating-point unit.
23080         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
23081         deferring to cbranch_cc and cstore_cc respectively.
23082         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
23083         cbranch_cc, cstore_cc): New.
23084         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
23085         arm_compare_op1.
23086         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
23087
23088         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
23089         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
23090         as an argument.
23091         (adjust_insn_length): Adjust calls.
23092         (avr_reorg): Handle (compare (foo) (const_int 0)).
23093         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
23094         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
23095         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
23096         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
23097         (bCC): Remove.
23098         (cbranchqi4, cbranchhi4, cbranchsi4): New.
23099         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
23100
23101         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
23102         (cbranchsi4, cstorebi4, cstoresi4): New.
23103         (movbisi): This insn is duplicate, split it to zero_extend.
23104         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
23105         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
23106         (bfin_optimize_loop): Use cbranch expander.
23107         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
23108         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
23109         (bfin_bimode_comparison_operator): ... this.
23110         (bfin_direct_comparison_operator): New.
23111
23112         * config/cris/cris.c (cris_normal_notice_update_cc): Look
23113         inside (compare FOO (const_int 0)).
23114         (cris_rtx_costs): Handle ZERO_EXTRACT.
23115         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
23116         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
23117         (*tstdi_v32): Delete.
23118         (*cmpdi_non_v32): Add M alternative for operand 1.
23119         (cmpsi, cmp<mode>): Make private.
23120         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
23121         with COMPARE.
23122         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
23123
23124         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
23125         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
23126         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
23127         (cc_reg_operand): New.
23128         (any_cond): Delete.
23129         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
23130         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
23131         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
23132         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
23133         crx_expand_scond): Delete.
23134
23135         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
23136         (cbranchsi4): New.
23137         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
23138         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
23139
23140         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
23141         cstoresi4, cstoresf4, cstoredf4): New.
23142         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
23143         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
23144         Receive the entire operands array.
23145         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
23146         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
23147         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
23148         Get test/op0/op1 from the operands array.
23149         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
23150
23151         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
23152         (h8300_expand_store): New.
23153         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
23154         (const_int 0)).
23155         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
23156         (h8300_expand_store): New.
23157         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
23158         or do not try to produce (set (cc0) REG).
23159         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
23160         change a compare into a move to a scratch register.  Disable some
23161         peepholes when comparing with zero.
23162         (tstsi, tsthi, tstsi, cmpqi): Make private.
23163         (cmphi): Delete.
23164         (bCC, sCC): Delete.
23165         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
23166         cstoresi4): New.
23167
23168         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
23169         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
23170         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
23171         (ix86_emit_i387_log1p): Use cbranchxf2.
23172         (ix86_expand_setcc): Return void.
23173         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
23174         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
23175         cmp<MODEF>, cmpcc): Remove.
23176         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
23177         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
23178         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
23179         (sCC and bCC expanders): Remove.
23180         (stack_protect_test): Use cbranchcc4.
23181
23182         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
23183         Delete.
23184         (ia64_expand_compare): Accept three rtx by reference and return void.
23185         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
23186         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
23187         from *expr.  Update *expr with the BImode comparison to do.
23188         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
23189         cmptf, bCC, sCC, conditional_trap): Delete.
23190         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
23191         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
23192         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
23193         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
23194         * config/ia64/predicates.md (ia64_cbranch_operator): New.
23195
23196         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
23197         type of last argument.
23198         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
23199         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
23200         use machine mode argument instead of branch_type.  Remove dead
23201         code for floating-point comparisons.
23202         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
23203         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
23204         Remove.
23205         (cbranchsi4, cstoresi4): New.
23206         * config/iq2000/predicates.md (reg_or_const_operand): New.
23207
23208         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
23209         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
23210         (b<code>_op): Rewrite to...
23211         (bcc_op): ... this, using match_operator.
23212         (s<code>_op): Rewrite to...
23213         (scc_op): ... this, using match_operator.
23214         (s<code>_24_op): Rewrite to...
23215         (scc_op_24): ... this, using match_operator.
23216         (s<code>_<mode>): Rewrite to...
23217         (cstore<mode>4): ... this, using match_operator.
23218         (s<code>_<mode>_24): Rewrite to...
23219         (cstore<mode>4_24): ... this, using match_operator.
23220         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
23221         m32c_unpend_compare, m32c_expand_scc): Delete.
23222         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
23223         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
23224         (m32c_expand_movcc): Change NE to EQ if necessary.
23225         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
23226
23227         * config/m32r/m32r-protos.h (gen_cond_store): New.
23228         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
23229         (gen_cond_store): New, from sCC patterns.
23230         (m32r_expand_block_move): Use cbranchsi4.
23231         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
23232         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
23233         (cbranchsi4, cstoresi4): New.
23234
23235         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
23236         Delete.
23237         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
23238         (m68hc11_notice_update_cc): Look into a compare with 0.
23239         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
23240         Delete.
23241         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
23242         cmphi, cmpqi, bCC): Delete.
23243         (cbranchsi4, cbranchhi4, cbranchqi4): New.
23244         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
23245         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
23246         sets with COMPARE.
23247
23248         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
23249         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
23250         * config/m68k/constraints.md (H): New.
23251         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
23252         the define_insn below.
23253         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
23254         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
23255         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
23256         patterns): Wrap RHS with COMPARE.
23257         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
23258         (*cmpdi_internal): Name this pattern.
23259         (cmpdi): Change to define_insn.
23260         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
23261         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
23262         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
23263         predicate.
23264         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
23265         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
23266         (conditional_trap): Change to...
23267         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
23268         (*conditional_trap): Use the ordered_comparison_operator and
23269         const1_operand predicates.
23270         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
23271         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
23272         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
23273         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
23274
23275         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
23276         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
23277         (mcore_gen_compare): New.
23278         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
23279         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
23280         (mcore_gen_compare): ... this.
23281         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
23282         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
23283         (stack probe pattern): Use cbranchsi4.
23284
23285         * config/mips/predicates.md (mips_cstore_operator): New.
23286         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
23287         * config/mips/mips.md (any_cond): Delete.
23288         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
23289         always succeed.
23290         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
23291         fixuns_truncsfdi2): Use cbranch patterns.
23292         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
23293         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
23294         Adjust call to mips_expand_conditional_branch.
23295         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
23296         cstore<GPR:mode>4.
23297         * config/mips/mips-protos.h (mips_expand_conditional_branch,
23298         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
23299         * config/mips/mips.c (cmp_operands): Delete.
23300         (mips_emit_compare): Get comparison operands from *op0/*op1.
23301         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
23302         that it succeeds.  Use op0/op1 instead of cmp_operands.
23303         (mips_expand_conditional_branch, mips_expand_conditional_move,
23304         mips_expand_conditional_trap): Likewise.
23305         (mips_block_move_loop): Use cbranch patterns.
23306         * config/mips/mips.h (cmp_operands): Delete.
23307
23308         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
23309         (mmix_gen_compare_reg): Just return a register in the right CC mode.
23310         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
23311         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
23312         (*cmpcc_folded): Rename to...
23313         (*cmpdi_folded): this.
23314         (*cmpcc): Rename to...
23315         (*cmps): ... this.
23316         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
23317         (bCC): Remove.
23318         (cbranchdi4): New.
23319         (cbranchdf4): New.  Handle invalid comparisons here.
23320         * config/mmix/predicates.md (float_comparison_operator): New.
23321
23322         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
23323         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
23324         * config/mn10300/mn10300.md (tst): Delete.
23325         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
23326         Name these patterns and wrap RHS in a compare.
23327         (*cmpsi): Make this pattern private.  Include tst.
23328         (*cmpsf): Make this pattern private.
23329         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
23330         (compare with zero peepholes): Likewise.
23331         (bCC): Remove.
23332         (cbranchsi4, cbranchsf4): New.
23333         (casesi): Use cbranchsi4.
23334
23335         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
23336         hppa_branch_type): Delete.
23337         (return_addr_rtx): Use cbranchsi4.
23338         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
23339         Emit CCFPmode comparison here.
23340         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
23341         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
23342         hppa_branch_type): Delete.
23343         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
23344         (movsicc, movdicc): Remove references to hppa_compare_op0,
23345         hppa_compare_op1 and compare_from_rtx.
23346         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
23347         (casesi): Use cbranchsi4.
23348
23349         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
23350         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
23351         * config/pdp11/pdp11.md (register_or_const0_operand): New.
23352         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
23353         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
23354         (bCC): Delete.
23355         (cbranchdf4, cbranchhi4, cbranchqi4): New.
23356         (*branch, *branch_inverted): New.
23357
23358         * config/picochip/picochip.md (cbranchhi4): Use
23359         ordered_comparison_operator.
23360         (cmphi, bCC): Remove.
23361
23362         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
23363         (trap_comparison_operator): Delete.
23364         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
23365         rs6000_emit_cbranch): Accept mode and operands.
23366         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
23367         rs6000_compare_fp_p): Delete.
23368         (rs6000_generate_compare): Accept mode and comparison.  Extract code
23369         and op0/op1 from there.  Replace references to rs6000_compare_op0
23370         and rs6000_compare_op1.
23371         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
23372         extract result from passed operands.
23373         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
23374         extract loc from passed operands.
23375         (rs6000_emit_cmove): Likewise.
23376         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
23377         rs6000_compare_fp_p): Delete.
23378         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
23379         (cbranch<GPR>4, cbranch<FP>4): New.
23380         (cstore<mode>4): New.  Consolidate here all choices about when to use
23381         portable or specialized sCC sequences.
23382         (stack_protect_test): Use cbranchsi4.
23383         (conditional_trap): Replace with ctrap<GPR>4.
23384         (conditional trap insn): Replace trap_comparison_operator with
23385         ordered_comparison_operator.
23386
23387         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
23388         (s390_emit_prologue): Use ctrap.
23389         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
23390         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
23391         New predicates replacing...
23392         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
23393         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
23394         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
23395         (add<mode>cc): Do not use s390_compare_op0/op1.
23396         (s<code>): Change to...
23397         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
23398         (seq): Change to...
23399         (cstorecc4): ... this.  Handle EQ or NE equally.
23400         (*sne): Un-privatize for use in cstorecc4.
23401         (b<code>): Change to...
23402         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
23403         (conditional_trap): Replace with...
23404         (ctrap<GPR>4, ctrap<FP>4): ... these.
23405         (stack_protect): Use cbranchcc4.
23406
23407         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
23408         * config/score/score-protos.h (score_gen_cmp): Delete.
23409         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
23410         (score_block_move-loop): Use cbranchsi4.
23411         * config/score/score.md (cbranchsi4): New.
23412         (cmpsi, bCC): Delete.
23413         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
23414         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
23415         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
23416         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
23417         * config/score/score3.h (score3_gen_cmp): Delete.
23418         * config/score/score7.h (score7_gen_cmp): Delete.
23419
23420         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
23421         (sh_emit_scc_to_t): ... this.  Return void.
23422         (from_compare): Rename to...
23423         (sh_emit_compare_and_branch): ... this.
23424         (sh_emit_compare_and_set): New.
23425         (sh_expand_t_scc): Accept operands.
23426         * config/sh/predicates.md (sh_float_comparison_operator): New.
23427         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
23428         (prepare_scc_operands): Rename to...
23429         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
23430         arguments.
23431         (sh_emit_cheap_store_flag): New.
23432         (sh_emit_set_t_insn): New.
23433         (from_compare): Rename to...
23434         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
23435         handling of TARGET_SH2E floating point to avoid recursive call.
23436         Generate branch here.
23437         (sh_emit_compare_and_set): New.
23438         (sh_expand_t_scc): Get op0/op1 from arguments.
23439         (sh_emit_cheap_store_flag): New.
23440         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
23441         cases.
23442         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
23443         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
23444         (movsicc, movdicc): Do nothing when it recreated operands from
23445         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
23446         prepare_scc_operands (now sh_emit_scc_to_t).
23447         (udivdi3): Use cstoresi4.
23448         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
23449         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
23450         (cbranchint4_media, cbranchfp4_media): New.
23451         (casesi): Use cbranchdi4.
23452         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
23453         Delete.
23454         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
23455         (movnegt): Remove second operand.
23456         (cbranchsf4, cbranchdf4): New.
23457         (stack_protect): Use cbranchdi4/cbranchsi4.
23458
23459         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
23460         (gen_compare_reg): Accept comparison, extract part of it to...
23461         (gen_compare_reg_1): ... this.
23462         (gen_compare_operator): Delete.
23463         (gen_v9_scc): Accept separate destination, comparison code and arms.
23464         Do not use sparc_compare_op0/sparc_compare_op1.
23465         (emit_scc_insn, emit_conditional_branch_insn): New.
23466         (emit_v9_brxx): Make static.  Remove useless assertion.
23467         (sparc_emit_float_lib_cmp): Return RTL instead of calling
23468         emit_cmp_insn.
23469         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
23470         * config/sparc/sparc-protos.h (gen_compare_reg,
23471         sparc_emit_float_lib_cmp): Adjust prototype.
23472         (emit_scc_insn, emit_conditional_branch_insn): New.
23473         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
23474         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
23475         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
23476         iterators to the top.
23477         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
23478         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
23479         snedi_special_trunc): Delete.
23480         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
23481         and snedi_special_trunc.
23482         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
23483         cbranchdi4, cbranch<F:mode>4): New.
23484         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
23485         here.  Use gen_compare_reg instead of gen_compare_operator.
23486         (conditional_trap): Replace with...
23487         (ctrapsi4, ctrapdi4): ... this.
23488         (stack_protect_test): Use cbranchcc4.
23489
23490         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
23491         argument to rtx.
23492         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
23493         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
23494         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
23495         from operands[0] or operands[3] depending on is_set.
23496         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
23497         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
23498         cmpdf, bCC), sCC: Remove.
23499         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
23500         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
23501         cstoredf4): New.
23502         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
23503         spu_emit_branch_or_set.
23504
23505         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
23506         Add two arguments.
23507         * config/stormy16/stormy16.h (xstormy16_compare_op0,
23508         xstormy16_compare_op1): Delete.
23509         * config/stormy16/stormy16.c (xstormy16_compare_op0,
23510         xstormy16_compare_op1): Delete.
23511         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
23512         Adjust calls.
23513         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
23514         (cmphi, cmpsi, bCC): Remove.
23515
23516         * config/v850/v850.md (tstsi, cmpsi): Fold into...
23517         (*cmpsi): ... this one.
23518         (cbranchsi4, cstoresi4): New.
23519         (bCC expanders): Delete.
23520         (sCC insns): Fold into...
23521         (*setcc): ... this one.
23522         (casesi): Do not use gen_cmpsi and gen_bgtu.
23523         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
23524         (movsicc): Simplify.
23525         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
23526
23527         * config/vax/vax-protos.h (cond_name): New.
23528         (vax_output_conditional_branch): Remove.
23529         * config/vax/vax.c (cond_name): New.
23530         (vax_output_conditional_branch): Remove.
23531         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
23532         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
23533         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
23534         (bit<VAXint>): Wrap source with (compare).
23535         (b<code> and following unnamed pattern): Rename to *branch and
23536         *branch_reversed.  Change macroization to match_operator.
23537         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
23538
23539         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
23540         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
23541         Change last argument to machine_mode.
23542         (xtensa_expand_scc): Add machine_mode argument.
23543         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
23544         (gen_conditional_move, xtensa_expand_conditional_branch,
23545         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
23546         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
23547         Adjust operand numbers.
23548         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
23549         Delete.
23550         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
23551         (cmpsi, cmpsf, b<code>, s<code>): Delete.
23552         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
23553
23554 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
23555
23556         * optabs.c (prepare_cmp_insn): Temporarily disable test that
23557         causes spurious differences between trunk and cond-optab branch.
23558
23559 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23560
23561         PR target/37137
23562         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
23563
23564 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
23565
23566         * tree.c (iterative_hash_pointer): Delete.
23567         (iterative_hash_expr): Short-circuit handling of NULL pointer.
23568         Hash UIDs and versions of SSA names.  Don't special-case built-in
23569         function declarations.
23570
23571 2009-05-11  Ian Lance Taylor  <iant@google.com>
23572
23573         PR bootstrap/40103
23574         * graphite.c: Force -Wc++-compat to only be a warning before
23575         #including "cloog/cloog.h".
23576
23577 2009-05-11  Martin Jambor  <mjambor@suse.cz>
23578
23579         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
23580
23581 2009-05-11  Jan Hubicka  <jh@suse.cz>
23582
23583         * tree-ssa-loop-ivcanon.c: Include target.h
23584         (struct loop_size): new structure.
23585         (constant_after_peeling): New predicate.
23586         (tree_estimate_loop_size): New function.
23587         (estimated_unrolled_size): Rewrite for new estimates.
23588         (try_unroll_loop_completely): Use new estimates.
23589         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
23590
23591 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23592
23593         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
23594         libcpp interface change.
23595         (spu_macro_to_expand): Likewise.
23596
23597 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
23598
23599         PR tree-optimization/40026
23600         * gimplify.c (gimplify_init_constructor): Change initial conditional
23601         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
23602         optimize_compound_literals_in_ctor.
23603
23604 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
23605
23606         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
23607         New devices.
23608         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
23609
23610 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
23611
23612         * tree-vect-data-refs.c (vect_analyze_group_access): Use
23613         HOST_WIDE_INT for gap.
23614
23615 2009-05-11  Ira Rosen  <irar@il.ibm.com>
23616
23617         PR tree-optimization/40074
23618         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
23619         account in group size and step comparison.
23620
23621 2009-05-11  Richard Guenther  <rguenther@suse.de>
23622
23623         * passes.c (init_optimization_passes): Strip now incorrect comment.
23624         (execute_function_todo): Do not set PROP_alias.
23625         * tree-pass.h (PROP_alias): Remove.
23626         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
23627         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
23628         * tree-nrv.c (pass_return_slot): Likewise.
23629         * tree-object-size.c (pass_object_sizes): Likewise.
23630         * tree-ssa-dom.c (pass_dominator): Likewise.
23631         (pass_phi_only_cprop): Likewise.
23632         * tree-ssa-dse.c (pass_dse): Likewise.
23633         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
23634         (pass_cselim): Likewise.
23635         * tree-ssa-pre.c (pass_pre): Likewise.
23636         (pass_fre): Likewise.
23637         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
23638         * tree-ssa-sink.c (pass_sink_code): Likewise.
23639         * tree-stdarg.c (pass_stdarg): Likewise.
23640         * tree-tailcall.c (pass_tail_calls): Likewise.
23641         * tree-vrp.c (pass_vrp): Likewise.
23642
23643 2009-05-10  Ian Lance Taylor  <iant@google.com>
23644
23645         * basic-block.h (enum profile_status): Break out of struct
23646         control_flow_graph.
23647         * cgraph.h (struct inline_summary): Break out of struct
23648         cgraph_local_info.
23649         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
23650         of struct cgraph_order_sort.
23651         * combine.c (enum undo_kind): New enum, broken out of struct undo.
23652         * cse.c (struct branch_path): Break out of struct
23653         cse_basic_block_data.
23654         * except.h (enum eh_region_type): Break out of struct eh_region.
23655         * gcc.c (enum add_del): Break out of struct modify_target.
23656         * genrecog.c (enum decision_type): Break out of struct decision_test.
23657         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
23658         ggc_pch_data.
23659         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
23660         * regmove.c (enum match_use): New enum, broken out of struct match.
23661         * sched-int.h (enum post_call_group): New enum, broken out of
23662         struct deps.
23663         (struct deps_reg): Break out of struct deps.
23664         * target.h (struct asm_int_op): Break out of struct gcc_target.
23665         * tree-eh.c (struct goto_queue_node): Break out of struct
23666         leh_tf_state.
23667         * tree-inline.h (enum copy_body_cge_which): Break out of
23668         copy_body_data.
23669         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
23670
23671         * c-decl.c (in_struct, struct_types): New static variables.
23672         (pushtag): Add loc parameter.  Change all callers.
23673         (lookup_tag): Add ploc parameter.  Change all callers.
23674         (check_compound_literal_type): New function.
23675         (parser_xref_tag): Add loc parameter.  Change all callers.  If
23676         -Wc++-compat, warn about struct/union/enum types defined within a
23677         struct or union.
23678         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
23679         and loc parameters.  Change all callers.  Change error calls to
23680         error_at, using loc.  For a redefinition, if the location of the
23681         original definition is known, report it.  Set in_struct and
23682         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
23683         (finish_struct): Add new parameters enclosing_in_struct and
23684         enclosing_struct_types.  Change all callers.  Set
23685         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
23686         in the struct.  If in a struct, add this struct to struct_types.
23687         (start_enum): Add loc parameter.  Change all callers.  Use
23688         error_at for errors, using loc.  For a redefinition, if the
23689         location of the original definition is known, report it.  If in a
23690         struct, add this enum type to struct_types.  If -Wc++-compat warn
23691         if in sizeof, typeof, or alignof.
23692         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
23693         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
23694         (c_parser_enum_specifier): Get enum location for start_enum.
23695         (c_parser_struct_or_union_specifier): Get struct location for
23696         start_struct.  Save in_struct and struct_types status between
23697         start_struct and finish_struct.
23698         (c_parser_cast_expression): Get location of cast.
23699         (c_parser_alignof_expression): Get location of type.
23700         (c_parser_postfix_expression): Likewise.
23701         (c_parser_postfix_expression_after_paren_type): Add type_loc
23702         parameter.  Change all callers.  Call check_compound_literal_type.
23703         Use type_loc for error about variable size type.
23704         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
23705         of an enum constant from an enum type defined in a struct or union.
23706         (c_cast_expr): Add loc parameter.  Change all callers.  If
23707         -Wc++-compat, warn about defining a type in a cast.
23708         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
23709         (start_enum, start_struct, finish_struct): Update declarations.
23710         (parser_xref_tag, c_cast_expr): Update declarations.
23711         (check_compound_literal_type): Declare.
23712
23713 2009-05-11  Ben Elliston  <bje@au.ibm.com>
23714
23715         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
23716         for recent libcpp interface change.
23717         (rs6000_macro_to_expand): Likewise.
23718
23719 2009-05-10  Michael Matz  <matz@suse.de>
23720
23721         PR target/40031
23722         * config/arm/arm.c (require_pic_register): Emit on entry edge,
23723         not at entry of function.
23724
23725 2009-05-10  Richard Guenther  <rguenther@suse.de>
23726
23727         PR tree-optimization/40081
23728         Revert
23729         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23730         using the main variant of the element type.  Do not fiddle with
23731         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23732
23733         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
23734         structs with volatile fields.
23735
23736 2009-05-10  Jan Hubicka  <jh@suse.cz>
23737
23738         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
23739         (estimate_move_cost): Assert that it does not get called for
23740         VOID_TYPE_P.
23741         (estimate_num_insns): Skip VOID types in argument handling.
23742         (optimize_inline_calls): Delete unreachable blocks and verify that
23743         callgraph is valid.
23744
23745 2009-05-10  Jan Hubicka  <jh@suse.cz>
23746
23747         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
23748         * cgraph.c (cgraph_mark_address_taken_node): New function.
23749         (dump_cgraph_node): Dump new flag.
23750         * cgraph.h (struct cgraph_node): Add address_taken.
23751         (cgraph_mark_address_taken_node): New function.
23752         * ipa.c (cgraph_postorder): Prioritize functions with address taken
23753         since new direct calls can be born.
23754
23755 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23756
23757         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
23758         tok->val.node.node.
23759
23760 2009-05-10  Jan Hubicka  <jh@suse.cz>
23761
23762         PR middle-end/40084
23763         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
23764         argument; rewrite.
23765         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
23766         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
23767         * tree-inline.c (copy_bb): Set frequency correctly.
23768         (fold_marked_statements): Update call to
23769         cgraph_update_edges_for_call_stmt.
23770
23771 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23772
23773         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
23774         identifiers in diagnostics.
23775         * config/arm/arm.c (arm_handle_fndecl_attribute,
23776         arm_handle_isr_attribute): Likewise.
23777         * config/avr/avr.c (avr_handle_progmem_attribute,
23778         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
23779         * config/bfin/bfin.c (handle_int_attribute,
23780         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
23781         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
23782         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
23783         Likewise.
23784         * config/darwin.c (darwin_handle_kext_attribute,
23785         darwin_handle_weak_import_attribute): Likewise.
23786         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
23787         h8300_handle_eightbit_data_attribute,
23788         h8300_handle_tiny_data_attribute): Likewise.
23789         * config/i386/i386.c (ix86_handle_cconv_attribute,
23790         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
23791         * config/i386/winnt.c (ix86_handle_shared_attribute,
23792         ix86_handle_selectany_attribute): Likewise.
23793         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
23794         * config/m32c/m32c.c (function_vector_handler): Likewise.
23795         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
23796         m68hc11_handle_fntype_attribute): Likewise.
23797         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
23798         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
23799         * config/mips/mips.c (mips_insert_attributes,
23800         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
23801         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
23802         rs6000_handle_struct_attribute): Likewise.
23803         * config/sh/sh.c (sh_insert_attributes,
23804         sh_handle_resbank_handler_attribute,
23805         sh_handle_interrupt_handler_attribute,
23806         sh2a_handle_function_vector_handler_attribute,
23807         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
23808         Likewise.
23809         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
23810         * config/spu/spu.c (spu_handle_fndecl_attribute,
23811         spu_handle_vector_attribute): Likewise.
23812         * config/stormy16/stormy16.c
23813         (xstormy16_handle_interrupt_attribute): Likewise.
23814         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
23815         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
23816
23817 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
23818
23819         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
23820         (pp_translate_identifiers): New.
23821         (pp_identifier): Only conditionally translate identifier to locale
23822         character set.
23823         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
23824         (pp_base_tree_identifier): Only conditionally translate identifier
23825         to locale character set.
23826         * c-pretty-print.c (M_): Define.
23827         (pp_c_type_specifier, pp_c_primary_expression): Mark English
23828         fragments for conditional translation with M_.
23829         * tree-pretty-print.c (maybe_init_pretty_print): Disable
23830         identifier translation.
23831
23832 2009-05-10  Richard Guenther  <rguenther@suse.de>
23833
23834         PR tree-optimization/40081
23835         * tree-sra.c (instantiate_element): Instantiate scalar replacements
23836         using the main variant of the element type.  Do not fiddle with
23837         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
23838
23839 2009-05-09  Jan Hubicka  <jh@suse.cz>
23840
23841         PR middle-end/40080
23842         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
23843         indirect calls; verify cgraph afterwards.
23844
23845 2009-05-09  Jan Hubicka  <jh@suse.cz>
23846
23847         PR bootstrap/40082
23848         * ipa.c (update_inlined_to_pointer): New function.
23849         (cgraph_remove_unreachable_nodes): Use it.
23850
23851 2009-05-09  Jan Hubicka  <jh@suse.cz>
23852
23853         * tree-eh.c (struct leh_state): Remove prev_try.
23854         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
23855         not track prev_try.
23856         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
23857         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
23858         remove_eh_handler_and_replace, foreach_reachable_handler,
23859         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
23860         * except.h (struct eh_region): Remove eh_region_u_cleanup.
23861         (gen_eh_region_cleanup): Update prototype.
23862
23863 2009-05-09  Jan Hubicka  <jh@suse.cz>
23864
23865         PR middle-end/40043
23866         * except.c (copy_eh_region): Always set prev_try.
23867         (redirect_eh_edge_to_label): Find outer try.
23868         (foreach_reachable_handler): When looking for prev try
23869         handle case where previous try is not going to be taken.
23870
23871 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23872
23873         PR tree-optimization/40049
23874         * tree-vect-stmts.c (vectorizable_operation): If the machine has
23875         only vector/vector shifts, convert the type of the constant to the
23876         appropriate type to avoid building incorrect trees, which
23877         eventually have problems with garbage collection.
23878
23879 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23880
23881         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
23882         -1 for complex floating-point types if honoring signed zeros.
23883
23884 2009-05-08  Jan Hubicka  <jh@suse.cz>
23885
23886         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
23887         argument; handle correctly when profile is absent.
23888         (build_cgraph_edges): Update.
23889         (rebuild_cgraph_edges): Update.
23890         * cgraph.c: Do not include varray.h.
23891         (cgraph_set_call_stmt_including_clones): New function.
23892         (cgraph_create_edge_including_clones): Likewise
23893         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
23894         (cgraph_update_edges_for_call_stmt): Handle clones.
23895         (cgraph_remove_node): Handle clone tree.
23896         (cgraph_remove_node_and_inline_clones): New function.
23897         (dump_cgraph_node): Dump clone tree.
23898         (cgraph_clone_node): Handle clone tree.
23899         (clone_function_name): Bring here from tree-inline.c.
23900         (cgraph_create_virtual_clone): New function.
23901         * cgraph.h (ipa_replace_map): Move here from ipa.h.
23902         (cgraph_clone_info): New function.
23903         (strut cgraph_node): Add clone_info and new clone tree pointers.
23904         (cgraph_remove_node_and_inline_clones,
23905         cgraph_set_call_stmt_including_clones,
23906         cgraph_create_edge_including_clones,
23907         cgraph_create_virtual_clone): Declare.
23908         (cgraph_function_versioning): Use VEC argument.
23909         (compute_call_stmt_bb_frequency): Update prototype.
23910         (cgraph_materialize_all_clones): New function.
23911         * ipa-cp.c (ipcp_update_cloned_node): Remove.
23912         (ipcp_create_replace_map): Update to VECtors.
23913         (ipcp_update_callgraph): Use virtual clones.
23914         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
23915         (ipcp_update_profiling): Do not update local profiling.
23916         (ipcp_insert_stage): Use VECtors and virtual clones.
23917         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
23918         (clone_of_p): New function.
23919         (cgraph_preserve_function_body_p): Use clone tree.
23920         (cgraph_optimize): Materialize clones.
23921         (cgraph_function_versioning): Update for VECtors.
23922         (save_inline_function_body): Use clone tree.
23923         (cgraph_materialize_clone): New function.
23924         (cgraph_materialize_all_clones): Likewise.
23925         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
23926         * ipa.c: Include gimple.h.
23927         (cgraph_remove_unreachable_nodes): Use clone tree.
23928         * ipa-prop.c (ipa_note_param_call): Update call to
23929         compute_call_stmt_bb_frequencycall.
23930         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
23931         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
23932         (copy_bb): Handle updating of clone tree; add new edge when new call
23933         appears.
23934         (expand_call_inline): Be strict about every call having edge.
23935         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
23936         (delete_unreachable_blocks_update_callgraph): New function.
23937         (tree_function_versioning): Use VECtors; always remove unreachable
23938         blocks and fold conditionals.
23939         * tree-inline.h: Do not include varray.h.
23940         (tree_function_versioning): Remove.
23941         * Makefile.in (GTFILES): Remove tree-inline.c
23942         * passes.c (do_per_function): Do only functions having body.
23943         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
23944         tree.
23945
23946 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
23947             Andrew Morrow  <acm@google.com>
23948
23949         PR c/36892
23950         * c-common.c (c_common_attribute_table): Permit deprecated
23951         attribute to take an optional argument.
23952         (handle_deprecated_attribute): If the optional argument to
23953         __attribute__((deprecated)) is not a string ignore the attribute
23954         and emit a warning.
23955
23956         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
23957         * c-typeck.c (build_component_ref): Likewise.
23958         (build_external_ref): Likewise.
23959
23960         * toplev.c (warn_deprecated_use): Add an attribute argument.
23961         Emit the message associated with __attribute__((deprecated)).
23962
23963         * toplev.h (warn_deprecated_use): Updated.
23964
23965         * doc/extend.texi: Document new optional parameter to
23966         __attribute__((deprecated))
23967
23968 2009-05-08  Michael Eager <eager@eagercon.com>
23969
23970         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
23971         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
23972
23973 2009-05-08  Richard Guenther  <rguenther@suse.de>
23974
23975         PR tree-optimization/40062
23976         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
23977         Avoid exponential behavior.
23978
23979 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23980
23981         PR rtl-optimization/33928
23982         PR 26854
23983         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
23984         process_uses, build_single_def_use_links): New.
23985         (update_df): Update use_def_ref.
23986         (forward_propagate_into): Use get_def_for_use instead of use-def
23987         chains.
23988         (fwprop_init): Call build_single_def_use_links and let it initialize
23989         dataflow.
23990         (fwprop_done): Free use_def_ref.
23991         (fwprop_addr): Eliminate duplicate call to df_set_flags.
23992         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
23993         df_rd_simulate_one_insn): New.
23994         (df_rd_bb_local_compute_process_def): Update head comment.
23995         (df_chain_create_bb): Use the new RD simulation functions.
23996         * df.h (df_rd_simulate_artificial_defs_at_top,
23997         df_rd_simulate_one_insn): New.
23998         * opts.c (decode_options): Enable fwprop at -O1.
23999         * doc/invoke.texi (-fforward-propagate): Document this.
24000
24001 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
24002
24003         PR c/24581
24004         * c-typeck.c (build_binary_op): Handle arithmetic between one real
24005         and one complex operand specially.
24006         * tree-complex.c (some_nonzerop): Do not identify a real value as
24007         zero if flag_signed_zeros.
24008
24009 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
24010
24011         PR rtl-optimization/33928
24012         * loop-invariant.c (record_use): Fix && vs. || mishap.
24013
24014 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
24015
24016         PR rtl-optimization/33928
24017         * loop-invariant.c (struct use): Add addr_use_p.
24018         (struct def): Add n_addr_uses.
24019         (struct invariant): Add cheap_address.
24020         (create_new_invariant): Set cheap_address.
24021         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
24022         (record_uses): Pass df_ref to record_use.
24023         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
24024         used only as such.
24025
24026 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
24027
24028         * config/sh/sh.c: Do not include c-pragma.h.
24029
24030 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24031
24032         * config/spu/spu.c: Remove include of c-common.h.
24033
24034 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
24035
24036         PR c/39037
24037         * c-common.h (mark_valid_location_for_stdc_pragma,
24038         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
24039         clear_float_const_decimal64, float_const_decimal64_p): New.
24040         * c.opt (Wunsuffixed-float-constants): New.
24041         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
24042         unsuffixed float constant, handle new warning.
24043         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
24044         * c-decl.c (c_scope): New flag float_const_decimal64.
24045         (set_float_const_decimal64, clear_float_const_decimal64,
24046         float_const_decimal64_p): New.
24047         (push_scope): Set new flag.
24048         * c-parser.c (c_parser_translation_unit): Mark when it's valid
24049         to use STDC pragmas.
24050         (c_parser_external_declaration): Ditto.
24051         (c_parser_compound_statement_nostart): Ditto.
24052         * c-pragma.c (valid_location_for_stdc_pragma,
24053         mark_valid_location_for_stdc_pragma,
24054         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
24055         handle_pragma_float_const_decimal64): New.
24056         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
24057         * cp/semantics.c (valid_location_for_stdc_pragma_p,
24058         set_float_const_decimal64, clear_float_const_decimal64,
24059         float_const_decimal64_p): New dummy functions.
24060         * doc/extend.texi (Decimal Float): Remove statement that the
24061         pragma, and suffix for double constants, are not supported.
24062         * doc/invoke.texi (Warning Options): List new option.
24063         (-Wunsuffixed-float-constants): New.
24064
24065 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
24066
24067         * config/i386/i386.c: Do not include c-common.h.
24068
24069 2009-05-07  Mark Heffernan  <meheff@google.com>
24070
24071         * doc/invoke.texi (Debugging Options): Document change of debugging
24072         dump location.
24073         * opts.c (decode_options): Make dump_base_name relative to
24074         aux_base_name directory.
24075
24076 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
24077
24078         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
24079         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
24080
24081 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
24082
24083         * Makefile.in (install-plugin): Simplify a bit.
24084
24085 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
24086
24087         * Makefile.in (OBJS-common): Add regcprop.o.
24088         (regcprop.o): New.
24089         * timevar.def (TV_CPROP_REGISTERS): New.
24090         * regrename.c (regrename_optimize): Return 0.
24091         (rest_of_handle_regrename): Delete.
24092         (pass_rename_registers): Point to regrename_optimize.
24093         (struct value_data_entry, struct value_data,
24094         kill_value_one_regno, kill_value_regno, kill_value,
24095         set_value_regno, init_value_data, kill_clobbered_value,
24096         kill_set_value, kill_autoinc_value, copy_value,
24097         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
24098         replace_oldest_value_reg, replace_oldest_value_addr,
24099         replace_oldest_value_mem, copyprop_hardreg_forward_1,
24100         debug_value_data, validate_value_data): Move...
24101         * regcprop.c: ... here.
24102         (rest_of_handle_cprop): Delete.
24103         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
24104
24105 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
24106
24107         PR middle-end/40057
24108         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
24109         GEN_INT for 1 << bitnum.
24110         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
24111         build_int_cst_type.
24112
24113 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
24114
24115         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
24116         Remove wrong description of "nand" operation.
24117
24118 2009-05-06  Richard Guenther  <rguenther@suse.de>
24119             Adam Nemet  <anemet@caviumnetworks.com>
24120
24121         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
24122         comment.  Add that if LHS is not a gimple register, then RHS1 has
24123         to be a single object (GIMPLE_SINGLE_RHS).
24124
24125 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
24126
24127         * expr.c (get_def_for_expr): Move it up in the file.
24128         (store_field): When expanding a bit-field store, look at the
24129         defining gimple stmt for the masking conversion.
24130
24131 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
24132
24133         PR middle-end/39986
24134         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
24135         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
24136         32-bit memcpy into long.
24137
24138 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
24139
24140         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
24141         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
24142         new_reg_loc_descr.
24143         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
24144         instead of appending DW_OP_deref*.
24145
24146 2009-05-06  Michael Matz  <matz@suse.de>
24147
24148         PR middle-end/40021
24149         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
24150         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
24151
24152 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
24153
24154         * Makefile.in (install-plugin): Fix srcdir handling.
24155
24156 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
24157
24158         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
24159         when processing for not_regs_needed bitmap.
24160         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
24161         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
24162         handling it for rhs.
24163
24164 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
24165
24166         * config/i386/i386.md (unnamed inc/dec peephole): Use
24167         optimize_insn_for_size_p instead of optimize_size.
24168         * config/i386/predicates.md (incdec_operand): Likewise.
24169         (aligned_operand): Likewise.
24170         * config/i386/sse.md (divv8sf3): Likewise.
24171         (sqrtv8sf2): Likewise.
24172
24173 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
24174
24175         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
24176
24177         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
24178
24179 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
24180
24181         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
24182         ssemodesuffixf2c with avxmodesuffixf2c.
24183
24184 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
24185
24186         PR c/40032
24187         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
24188
24189 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
24190
24191         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
24192         (struct tree_base): Adjust spacing for 8 bit boundaries.
24193         (struct tree_decl_common): Add decl_by_reference_flag bit.
24194         (DECL_BY_REFERENCE): Adjust.
24195         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
24196         print DECL_BY_REFERENCE bit.
24197         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
24198         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
24199         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
24200         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
24201         unconditionally.
24202
24203         PR middle-end/39666
24204         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
24205         range of the type, but default label is missing, add it with one
24206         of the existing labels instead of adding a new label for it.
24207
24208 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
24209
24210         * dwarf.h: Remove.
24211
24212 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
24213
24214         * Makefile.in (enable_plugin, plugin_includedir): New.
24215         (install): Depend on install-plugin.
24216         (PLUGIN_HEADERS): New.
24217         (install-plugin): New.
24218         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
24219
24220 2009-05-05  Richard Guenther  <rguenther@suse.de>
24221
24222         PR tree-optimization/40022
24223         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
24224         the only vuse.
24225         (phivn_valid_p): Fix tuplification error, simplify.
24226         (phiprop_insert_phi): Add dumps.
24227         (propagate_with_phi): Simplify.
24228
24229 2009-05-05  Richard Guenther  <rguenther@suse.de>
24230
24231         PR middle-end/40023
24232         * builtins.c (gimplify_va_arg_expr): Properly build the address.
24233
24234 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
24235
24236         * tree.h (strip_float_extensions): Remove duplicate declaration.
24237         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
24238         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
24239         block_ultimate_origin): Rearrange the declarations line to match the
24240         comment that indicates the .c file which the functions are defined.
24241         (dwarf2out_*, set_decl_rtl): Add comment.
24242         (get_base_address): Adjust comment.
24243         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
24244         declarations line and add comment.
24245         (is_builtin_name): Add blank after function name, for clarity.
24246
24247 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
24248
24249         * attribs.c (decl_attributes): Use %qE for identifiers in
24250         diagnostics.
24251         * cgraphunit.c (verify_cgraph_node): Translate function names to
24252         locale character set in diagnostics.
24253         * coverage.c (get_coverage_counts): Use %qE for identifiers in
24254         diagnostics.
24255         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
24256         Document that functions are named in UTF-8.
24257         * expr.c (expand_expr_real_1): Translate function names to locale
24258         character set in diagnostics.
24259         * gimplify.c (omp_notice_variable, omp_is_private,
24260         gimplify_scan_omp_clauses): Use %qE for identifiers in
24261         diagnostics.
24262         * langhooks.c (lhd_print_error_function): Translate function names
24263         to locale character set.
24264         * langhooks.h (decl_printable_name): Document that return value is
24265         in internal character set.
24266         * stmt.c: Include pretty-print.h
24267         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
24268         diagnostics.
24269         (resolve_operand_name_1): Translate named operand name to locale
24270         character set.
24271         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
24272         diagnostics.
24273         * toplev.c (announce_function): Translate function names to locale
24274         character set.
24275         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
24276         (default_tree_printer): Use pp_identifier or translate identifiers
24277         to locale character set.  Mark "<anonymous>" for translation.
24278         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
24279         for identifiers in diagnostics.
24280         * tree.c (handle_dll_attribute): Use %qE for identifiers in
24281         diagnostics.
24282         * varasm.c (output_constructor): Use %qE for identifiers in
24283         diagnostics.
24284
24285 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
24286
24287         * configure.ac: use ` ` instead of $()
24288         * configure: Regenerate.
24289
24290 2009-05-05  Ben Elliston  <bje@au.ibm.com>
24291
24292         * config/pa/linux-atomic.c: Eliminate conditional include of
24293         errno.h on non-LP64 systems to simplify build requirements.
24294
24295 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
24296
24297         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
24298         diagnostics.
24299         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
24300         and pass value to identifier_to_locale.
24301         (warn_variable_length_array): Make name a tree.
24302         (grokdeclarator): Separate diagnostic texts for named and unnamed
24303         declarators.  Use %qE for named declarators.
24304         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
24305         diagnostics.
24306         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
24307         identifiers in diagnostics.
24308         * c-typeck.c (push_member_name, start_init): Pass identifiers to
24309         identifier_to_locale.  Mark "anonymous" strings for translation.
24310
24311 2009-05-04  Michael Eager <eager@eagercon.com>
24312
24313         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
24314         address for DImode/DFmode only if double-precision FP regs.
24315
24316 2009-05-04  Michael Eager <eager@eagercon.com>
24317
24318         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
24319         TARGET_SINGLE_FLOAT check.
24320
24321 2009-05-04  Michael Eager <eager@eagercon.com>
24322
24323         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
24324
24325 2009-05-04  Michael Eager <eager@eagercon.com>
24326
24327         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
24328         * config/rs6000/t-xilinx: New
24329
24330 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
24331
24332         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
24333         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
24334         * gcc/explow.c (memory_address): Use target hook.
24335         * gcc/targhooks.c (default_legitimize_address): New.
24336         * gcc/targhooks.h (default_legitimize_address): New.
24337         * gcc/target.h (legitimize_address): New.
24338         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
24339         (TARGET_INITIALIZER): Include it.
24340         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
24341
24342         * config/bfin/bfin-protos.h (legitimize_address): Remove.
24343         * config/bfin/bfin.c (legitimize_address): Remove.
24344         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
24345         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
24346         Remove.
24347         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
24348         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
24349
24350         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
24351         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
24352         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
24353         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
24354         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
24355         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
24356         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
24357         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
24358         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
24359         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
24360         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
24361         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
24362         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
24363         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
24364         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
24365         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
24366         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
24367         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
24368         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
24369         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
24370         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
24371         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
24372         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
24373
24374         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
24375         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
24376         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
24377         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
24378         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
24379         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
24380         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
24381         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
24382         (thumb_legitimize_address): Delete.
24383         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
24384         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
24385         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
24386         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
24387         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
24388         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
24389         Delete.
24390         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
24391         Delete.
24392
24393         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
24394         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
24395         * config/m32r/m32r.c (m32r_legitimize_address): New.
24396         * config/m68k/m68k.c (m68k_legitimize_address): New.
24397         * config/score/score.c (score_legitimize_address): Standardize.
24398         * config/score/score3.c (score3_legitimize_address): Standardize.
24399         * config/score/score3.h (score3_legitimize_address): Adjust.
24400         * config/score/score7.c (score7_legitimize_address): Standardize.
24401         * config/score/score7.h (score7_legitimize_address): Adjust.
24402         * config/sh/sh.c (sh_legitimize_address): New.
24403         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
24404
24405         * gcc/config/s390/s390.c (legitimize_address): Rename to...
24406         (s390_legitimize_address): ... this.
24407         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
24408         (sparc_legitimize_address): ... this.
24409         * gcc/config/i386/i386.c (legitimize_address): Rename to...
24410         (ix86_legitimize_address): ... this.
24411         * gcc/config/avr/avr.c (legitimize_address): Rename to...
24412         (avr_legitimize_address): ... this.
24413         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
24414         (mn10300_legitimize_address): ... this.
24415         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
24416         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
24417         (alpha_expand_mov): Adjust call.
24418
24419         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
24420         * config/spu/spu.c (spu_legitimize_address): Likewise.
24421         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
24422         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
24423
24424 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
24425
24426         * intl.c (locale_encoding, locale_utf8): New.
24427         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
24428         * intl.h (locale_encoding, locale_utf8): Declare.
24429         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
24430         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
24431         New.
24432         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
24433         argument.
24434         (pp_tree_identifier): Define to call pp_base_tree_identifier.
24435         (pp_base_tree_identifier): Declare as function.
24436         (identifier_to_locale): Declare.
24437         * Makefile.in (pretty-print.o): Update dependencies.
24438         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
24439
24440 2009-05-04  Richard Guenther  <rguenther@suse.de>
24441
24442         PR middle-end/40015
24443         * builtins.c (fold_builtin_memory_op): Do not decay to element
24444         type if the size matches the whole array.
24445
24446 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
24447
24448         * expmed.c (synth_mult): When trying out a shift, pass the result
24449         of a signed shift.
24450
24451 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
24452
24453         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
24454         (shiftsub1_cost): New.
24455         (init_expmed): Compute shiftsub1_cost.
24456         (synth_mult): Optimize multiplications by constants of the form
24457         -(2^^m-1) for some constant positive integer m.
24458
24459 2009-05-03  Richard Guenther  <rguenther@suse.de>
24460
24461         PR c/39983
24462         * c-typeck.c (array_to_pointer_conversion): Do not built
24463         ADDR_EXPRs of arrays of pointer-to-element type.
24464         * c-gimplify.c (c_gimplify_expr): Revert change fixing
24465         up wrong ADDR_EXPRs after-the-fact.
24466         * c-common.c (strict_aliasing_warning): Strip pointer
24467         conversions for obtaining the original type.
24468         * builtins.c (fold_builtin_memset): Handle array types.
24469         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
24470         and array types
24471
24472 2009-05-03  Richard Guenther  <rguenther@suse.de>
24473
24474         PR middle-end/23329
24475         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
24476         Do not lose casts from array types with unknown extent to array
24477         types with known extent.
24478         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
24479         alias set compatibility.
24480
24481 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
24482
24483         * flags.h (extra_warnings): Delete.
24484         * toplev.c (process_options): Handle Wuninitialized here.
24485         * opts.c (extra_warnings): Delete.
24486         (set_Wextra): Delete.
24487         (common_handle_option): -Wextra can be handled automatically.
24488         * c-opts.c (c_common_handle_option): Delete obsolete code.
24489         (c_common_post_options): Simplify comment.
24490         * common.opt (W): Add Var.
24491         (Wextra): Add Var.
24492         (Wuninitialized): Initialize to -1.
24493
24494 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
24495             Richard Guenther  <rguenther@suse.de>
24496
24497         * expr.c (get_def_for_expr): New function.
24498         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
24499         SSA rather than trees.
24500         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
24501         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
24502
24503 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
24504
24505         * c-common.c (reswords): Add _Imaginary.
24506         * c-common.c (enum rid): Add RID_IMAGINARY.
24507
24508 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
24509
24510         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
24511         Patch by Richard Guenther.
24512
24513 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
24514
24515         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
24516         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
24517         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
24518         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
24519         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
24520         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
24521         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
24522         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
24523         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
24524         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
24525         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
24526         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
24527         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
24528         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
24529         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
24530         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
24531         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
24532         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
24533
24534 2009-05-02  Richard Guenther  <rguenther@suse.de>
24535
24536         PR tree-optimization/39940
24537         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
24538         doing so.
24539
24540 2009-05-02  Richard Guenther  <rguenther@suse.de>
24541
24542         PR middle-end/40001
24543         * tree-ssa.c (execute_update_addresses_taken): Properly check
24544         if we can mark a variable DECL_GIMPLE_REG_P.
24545         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
24546         back to the end of the function.
24547         (is_gimple_reg_type): Remove complex type special casing.
24548         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
24549         if not optimizing.
24550
24551 2009-05-02  Ben Elliston  <bje@au.ibm.com>
24552
24553         * doc/collect2.texi (Collect2): Document search path behaviour
24554         when configured with --with-ld.
24555
24556 2009-05-02  Jan Hubicka  <jh@suse.cz>
24557
24558         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
24559         parameter; update callers.
24560         (coalesce_cost_edge): EH edges are costier because they needs
24561         splitting even if not critical and even more costier when there are
24562         multiple EH predecestors.
24563
24564 2009-05-02  Jan Hubicka  <jh@suse.cz>
24565
24566         * except.c (remove_eh_handler_and_replace): Handle updating after
24567         removing TRY blocks.
24568
24569 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
24570
24571         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
24572
24573 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
24574
24575         * varasm.c: Do not include c-pragma.h.
24576         * attribs.c: Do not incude c-common.h.
24577
24578 2009-05-01  Michael Matz  <matz@suse.de>
24579
24580         * calls.c (initialize_argument_information): Handle SSA names like
24581         decls with a non MEM_P DECL_RTL.
24582
24583 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24584
24585         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
24586         * ipa-utils.c: Likewise.
24587         * ipa-type-escape.c: Likewise.
24588         * cgraphunit.c Do not include c-common.h.
24589         * ipa-pure-const.c: Likewise.
24590         * tree-if-conv.c: Likewise.
24591         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
24592         * ipa-struct-reorg.c: Likewise.
24593         * tree-nomudflap.c: Likewise.
24594         * tree-ssa-structalias.c: Likewise.
24595
24596 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
24597
24598         * store-motion.c: Many cleanups to make this pass a first-class
24599         citizen instead of an appendix to gcse load motion.  Add TODO list
24600         to make this pass faster/cleaner/better.
24601
24602         (struct ls_expr): Post gcse.c-split cleanups.
24603         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
24604         "stores" field to "avail_stores".
24605         (pre_ldst_mems): Rename to store_motion_mems.
24606         (pre_ldst_table): Rename to store_motion_mems_table.
24607         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
24608         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
24609         (ldst_entry): Rename to st_expr_entry, update users.
24610         (free_ldst_entry): Rename to free_st_expr_entry, update users.
24611         (free_ldst_mems): Rename to free_store_motion_mems, update users.
24612         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
24613         update caller.
24614         (first_ls_expr): Rename to first_st_expr, update users.
24615         (next_ls_expr): Rename to next_st_expr, update users.
24616         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
24617         fields properly for store motion instead of names inherited from load
24618         motion in gcse.c.
24619         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
24620         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
24621         are done with it.
24622
24623         (ae_kill): Rename to st_kill, update users.
24624         (ae_gen): Rename to st_avloc, update users.
24625         (transp): Rename to st_transp, update users.
24626         (pre_insert_map): Rename to st_insert_map, update users.
24627         (pre_delete_map): Rename to st_delete_map, update users.
24628         (insert_store, build_store_vectors, free_store_memory,
24629         one_store_motion_pass): Update for abovementioned changes.
24630
24631         (gcse_subst_count, gcse_create_count): Remove.
24632         (one_store_motion_pass): New statistics counters "n_stores_deleted"
24633         and "n_stores_created", local variables.
24634
24635         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
24636         use for_each_rtx.
24637
24638         (regvec, compute_store_table_current_insn): Remove.
24639         (reg_set_info, reg_clear_last_set): Remove.
24640         (compute_store_table): Use DF caches instead of local dataflow
24641         solvers.
24642
24643 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
24644
24645         * c-objc-common.c (c_tree_printer): Print identifiers with
24646         pp_identifier, not pp_string.  Mark "({anonymous})" for
24647         translation.
24648         * c-pretty-print.c (pp_c_ws_string): New.
24649         (pp_c_cv_qualifier, pp_c_type_specifier,
24650         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
24651         pp_c_storage_class_specifier, pp_c_function_specifier,
24652         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
24653         pp_c_primary_expression, pp_c_postfix_expression,
24654         pp_c_unary_expression, pp_c_shift_expression,
24655         pp_c_relational_expression, pp_c_equality_expression,
24656         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
24657         use pp_string and pp_c_ws_string in place of pp_identifier and
24658         pp_c_identifier for non-identifiers.  Mark English strings for
24659         translation.
24660         * c-pretty-print.h (pp_c_ws_string): Declare.
24661
24662 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
24663             Roland McGrath <roland@redhat.com>
24664
24665         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
24666         (ENABLE_LD_BUILDID): New configuration option.
24667         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
24668         (LINK_BUILDID_SPEC): New macro.
24669         (init_spec): If defined, prepend it between LINK_EH_SPEC and
24670         link_spec.
24671         * doc/install.texi: Document --enable-linker-build-id option.
24672         * configure: Rebuild.
24673         * config.in: Rebuild.
24674
24675 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
24676
24677         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
24678         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
24679         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
24680         MIPS_GP_SAVE_AREA_SIZE.
24681         * config/mips/mips.c (struct mips_frame_info): Update comment
24682         before arg_pointer_offset and hard_frame_pointer_offset.
24683         (mips_compute_frame_info): Update diagram before function: to
24684         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
24685         indicate the position of frame_pointer_rtx with -fstack-protector and
24686         to show args_size.  Don't allocate cprestore area for leaf functions
24687         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
24688         cprestore_size.
24689         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
24690
24691 2009-04-30  Michael Matz  <matz@suse.de>
24692
24693         PR tree-optimization/39955
24694         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
24695
24696 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
24697
24698         * ira.c (setup_cover_and_important_classes):  Use safe macro
24699         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
24700         directly.
24701         * genpreds.c (write_tm_preds_h):  Output suitable definition of
24702         REG_CLASS_FOR_CONSTRAINT.
24703
24704 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24705
24706         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
24707         instead of an int.
24708         * bitmap.c (bitmap_descriptor): Likewise.
24709         * ggc-common.c (loc_descriptor): Likewise.
24710         * varray.c (varray_descriptor): Likewise.
24711         * vec.c (vec_descriptor): Likewise.
24712
24713 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
24714
24715         * Makefile.in (dce.o): Add $(EXCEPT_H).
24716         * dce.c: Include except.h and delete redundant vector definitions.
24717         (deletable_insn_p): Return false for non-call insns that can throw
24718         if DF is running.
24719
24720 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
24721
24722         * gcse.c (ae_gen): Remove.
24723         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
24724         and make non-static function to make it available in store-motion.c.
24725         Update call sites with search-and-replace.
24726         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
24727         extract_mentioned_regs, extract_mentioned_regs_helper,
24728         find_moveable_store, compute_store_table, load_kills_store, find_loads,
24729         store_killed_in_insn, store_killed_after, store_killed_before,
24730         build_store_vectors, insert_insn_start_basic_block, insert-store,
24731         remove_reachable_equiv_notes, replace_store_insn, delete_store,
24732         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
24733         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
24734         * store-motion.c: ...new file.  Also copy data structures from gcse.c
24735         and clean up to remove parts not used by store motion.
24736         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
24737         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
24738
24739 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24740
24741         PR target/38571
24742         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
24743         when optimizing for size.
24744
24745 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
24746
24747         * gcse.c (gcse_constant_p): Fix typo in last change.
24748
24749 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
24750
24751         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
24752
24753 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
24754
24755         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
24756
24757 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
24758
24759         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
24760         CONST_HIGH_PART result.
24761
24762 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
24763
24764         * config/avr/avr.c (initial_elimination_offset): Rename to
24765         avr_initial_elimination_offset.
24766         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
24767         change return type to bool.
24768         (avr_can_eliminate): New function.
24769         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
24770         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
24771         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
24772         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
24773         avr_initial_elimination_offset.
24774         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
24775         (avr_initial_elimination_offset): Define.
24776
24777 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
24778             Steven Bosscher  <steven@gcc.gnu.org>
24779
24780         PR rtl-optimization/39938
24781         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
24782         * cfgrtl.c: Include insn-attr.h.
24783         (rest_of_pass_free_cfg): New function.
24784         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
24785         * resource.c (init_resource_info): Remove call to df_analyze.
24786
24787 2009-04-29  Richard Guenther  <rguenther@suse.de>
24788
24789         PR target/39943
24790         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
24791         allow conversion to signed integers.
24792
24793 2009-04-29  Richard Guenther  <rguenther@suse.de>
24794
24795         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
24796         shifts of floating point vectors if the shift amount is
24797         a constant multiple of the element size.
24798
24799 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
24800             Michael Matz  <matz@suse.de>
24801
24802         PR middle-end/39927
24803         PR bootstrap/39929
24804         * tree-outof-ssa.c (emit_partition_copy): New function.
24805         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
24806         insert_part_to_rtx_on_edge): Perform the partition base var
24807         copy using emit_partition_copy.
24808         (insert_value_copy_on_edge): Convert constants to the right mode.
24809         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
24810         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
24811
24812 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24813
24814         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
24815         scan backwards to try to find a constant to initialize it.
24816
24817         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
24818         insn before the loop_end instruction, don't look past labels.
24819
24820 2009-04-29  Richard Guenther  <rguenther@suse.de>
24821
24822         PR middle-end/39937
24823         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
24824         loose type conversions.
24825         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
24826         stmts only if there are no uses of its definition.
24827
24828 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24829
24830         * config/bfin/bfin.h (splitting_loops): Declare.
24831         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
24832         Reorder bit definitions to be ascending.
24833         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
24834         * config/bfin/bfin.c (splitting_loops): New variable.
24835         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
24836         (struct loop_info): Remove members INIT and LOOP_INIT.
24837         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
24838         the LSETUP sequence.  Allow LC to be loaded from any register, but
24839         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
24840         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
24841         set to 1.
24842         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
24843         of reload_completed.
24844
24845         From Jie Zhang:
24846         * config/bfin/bfin.md (movsi_insn): Refine constraints.
24847
24848 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
24849
24850         * Makefile.in (PLUGIN_VERSION_H): New.
24851         (OBJS-common): Remove plugin-version.o.
24852         (plugin.o): Depend on (PLUGIN_VERSION_H).
24853         (plugin-version.o): Remove.
24854         * configure: Regenerate
24855         * configure.ac: Create plugin-version.h.
24856         * gcc-plugin.h (plugin_gcc_version): Remove.
24857         (plugin_default_version_check): Change signature.
24858         * plugin-version.c: Remove.
24859         * plugin.c: Include plugin-version.h.
24860         (str_plugin_gcc_version_name): Remove.
24861         (try_init_one_plugin): Pass gcc version to plugin_init.
24862         (plugin_default_version_check): Both gcc and plugin versions are now
24863         arguments.
24864
24865 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24866
24867         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
24868         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
24869         Remove special case testing for last insn of inner loops. Don't fail
24870         if the loop ends with a jump, emit an extra nop instead.
24871
24872         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
24873         DREGS rather than comparing directly.  Remove code that tries to
24874         account for latencies.
24875
24876 2009-04-29  Richard Guenther  <rguenther@suse.de>
24877
24878         PR tree-optimization/39941
24879         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
24880         eliminating an indirect call.
24881
24882 2009-04-29  Richard Guenther  <rguenther@suse.de>
24883
24884         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
24885         parameter.  Allow invariants as base if !require_lvalue.
24886         (verify_gimple_assign_single): Adjust.
24887
24888 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24889
24890         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
24891         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
24892         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
24893         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
24894         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
24895         a VEC_SELECT.
24896         * config/bfin/bfin.c (bfin_expand_builtin,
24897         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
24898
24899 2009-04-28  Richard Guenther  <rguenther@suse.de>
24900
24901         * tree-vect-loop.c (get_initial_def_for_induction): Use
24902         correct types for pointer increment.
24903
24904 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24905
24906         * toplev.c (print_version): Update GMP version string calculation.
24907
24908 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
24909
24910         PR rtl-optimization/39938
24911         * resource.c (init_resource_info): Add call to df_analyze.
24912
24913 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24914
24915         * config/alpha/alpha.md (usegp): Cast the result of
24916         alpha_find_lo_sum_using_gp to enum attr_usegp.
24917         * config/alpha/alpha.c (override_options): Remove end-of-structure
24918         marker element from cpu_table.  Use array size of cpu_table to handle
24919         -mcpu and -mtune options.
24920         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
24921
24922 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
24923
24924         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
24925         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
24926         tune_32 and tune_64.
24927         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
24928         support on PowerPC.
24929         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
24930         * config/rs6000/option-defaults.h: ... here.  New file.
24931         (OPT_64, OPT_32): Define.
24932         (MASK_64BIT): Define to 0 if not already defined.
24933         (OPT_ARCH64, OPT_ARCH32): Define.
24934         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
24935         and tune_64.
24936
24937 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24938
24939         * config/arm/arm.c (arm_override_options): Emit error on using
24940         fpa with AAPCS.
24941
24942 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24943
24944         PR rtl-optimization/39914
24945         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24946         registers for allocnos created from user-defined variables only
24947         when not optimizing.
24948
24949 2009-04-28  Richard Guenther  <rguenther@suse.de>
24950
24951         PR middle-end/39937
24952         * fold-const.c (fold_binary): Use distribute_real_division only
24953         on float types.
24954
24955 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
24956
24957         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
24958         add hpux-stdint.h to tm_file.
24959         (hppa[12]*-*-hpux11*): Ditto.
24960         (ia64*-*-hpux*): Ditto.
24961         * config/hpux-stdint.h: New.
24962         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
24963         __STDC_EXT__ for all compiles.
24964         * config/pa/pa-hpux.h: Ditto.
24965         * config/pa/pa-hpux10.h: Ditto.
24966         * config/pa/pa-hpux11.h: Ditto.
24967
24968 2009-04-28  Catherine Moore  <clm@codesourcery.com>
24969
24970         * debug.h (set_name): Add comment.
24971
24972 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
24973
24974         PR target/39929
24975         * config/darwin.c (machopic_gen_offset): Check
24976         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
24977         * config/arm/arm.c (require_pic_register): Likewise.
24978
24979 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
24980
24981         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
24982         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
24983         m32c_promote_prototypes): Delete.
24984
24985 2009-04-28  Michael Matz  <matz@suse.de>
24986
24987         PR middle-end/39922
24988         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
24989         constants.
24990
24991 2009-04-28  Richard Guenther  <rguenther@suse.de>
24992
24993         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
24994
24995 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24996
24997         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
24998         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
24999         * config/arm/arm-tune.md: Regenerate.
25000
25001 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
25002
25003         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
25004         block if there are complex incoming edges.
25005         (sel_merge_blocks): Remove useless assert.
25006         (sel_redirect_edge_and_branch): Check that edge was redirected.
25007         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
25008         (sel_find_rgns): Delete declaration.
25009         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
25010         the region when it is not a preheader.
25011
25012 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
25013
25014         PR c/39323
25015         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
25016
25017 2009-04-28  Richard Guenther  <rguenther@suse.de>
25018
25019         * tree.h (SSA_NAME_VALUE): Remove.
25020         (struct tree_ssa_name): Remove value_handle member.
25021         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
25022         array for jump threading.
25023         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
25024         SSA_NAME_VALUEs.
25025         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
25026         * tree-flow.h (threadedge_initialize_values): Declare.
25027         (threadedge_finalize_values): Likewise.
25028         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
25029         (SSA_NAME_VALUE): Define.
25030         (threadedge_initialize_values): New function.
25031         (threadedge_finalize_values): Likewise.
25032         * tree-ssa-dom.c (ssa_name_values): New global variable.
25033         (SSA_NAME_VALUE): Define.
25034         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
25035
25036 2009-04-28  Ira Rosen  <irar@il.ibm.com>
25037
25038         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
25039         Use REPORT_VECTORIZED_LOCATIONS instead
25040         REPORT_VECTORIZED_LOOPS.
25041         * tree-vectorizer.c (vect_verbosity_level): Make static.
25042         (vect_loop_location): Rename to vect_location.
25043         (vect_set_verbosity_level): Update comment.
25044         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
25045         and vect_location.
25046         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
25047         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
25048         instead REPORT_UNVECTORIZED_LOOPS.
25049         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
25050         and vect_loop_def to vect_external_def and vect_internal_def.
25051         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
25052         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
25053         REPORT_UNVECTORIZED_LOCATIONS.
25054         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
25055         and vect_used_in_loop and to vect_unused_in_scope and
25056         vect_used_in_scope.
25057         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
25058         (vect_verbosity_level): Remove declaration.
25059         (vect_analyze_operations): Likewise.
25060         (vect_analyze_stmt): Declare.
25061         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
25062         REPORT_UNVECTORIZED_LOCATIONS.
25063         (vect_get_loop_niters): Fix indentation.
25064         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
25065         (vect_analyze_loop_operations): New function.
25066         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
25067         vect_analyze_operations.
25068         (vect_is_simple_reduction): Use new names.
25069         (vectorizable_live_operation, vect_transform_loop): Likewise.
25070         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
25071         to specify whether the data references can be a part of interleaving
25072         chain.
25073         (vect_analyze_data_ref_dependence): Use new names.
25074         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
25075         (vect_create_addr_base_for_vector_ref): Remove redundant code.
25076         * tree-vect-patterns.c (widened_name_p): Use new names.
25077         (vect_recog_dot_prod_pattern): Likewise.
25078         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
25079         (process_use, vect_mark_stmts_to_be_vectorized,
25080         vect_model_simple_cost, vect_model_store_cost,
25081         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
25082         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
25083         vectorizable_operation, vectorizable_type_demotion,
25084         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
25085         vectorizable_condition): Likewise.
25086         (vect_analyze_operations): Split into vect_analyze_loop_operations
25087         and ...
25088         (vect_analyze_stmt): ... new function.
25089         (new_stmt_vec_info): Use new names.
25090         (vect_is_simple_use): Use new names and fix comment.
25091         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
25092         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
25093
25094 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
25095
25096         PR target/39911
25097         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
25098         and integer modes for x87 operands.  Do not ICE for unsupported size,
25099         generate error instead.  Generate error for unsupported operand types.
25100         ['z']: Do not handle HImode memory operands specially.  Warning
25101         for floating-point operands.  Fallthru to 'Z' for unsupported operand
25102         types.  Do not ICE for unsupported size, generate error instead.
25103         (output_387_binary_op): Use %Z to output operands.
25104         (output_fp_compare): Ditto.
25105         (output_387_reg_move): Ditto.
25106
25107 2009-04-28  Ben Elliston  <bje@au.ibm.com>
25108
25109         PR c++/35652
25110         Revert:
25111
25112         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25113
25114         * builtins.c (c_strlen): Do not warn here.
25115         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
25116         * c-common.c (pointer_int_sum): Take an explicit location.
25117         Warn about offsets out of bounds.
25118         * c-common.h (pointer_int_sum): Adjust declaration.
25119
25120 2009-04-27  Ian Lance Taylor  <iant@google.com>
25121
25122         * collect2.c (is_ctor_dtor): Change type of ret field in struct
25123         names to symkind.
25124         * dce.c (run_fast_df_dce): Change type of old_flags to int.
25125         * df-core.c (df_set_flags): Change return type to int.  Change
25126         type of old_flags to int.
25127         (df_clear_flags): Likewise.
25128         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
25129         (df_get_conditional_uses): Likewise.
25130         * df.h (df_set_flags, df_clear_flags): Update declarations.
25131         * dwarf2out.c (struct indirect_string_node): Change type of form
25132         field to enum dwarf_form.
25133         (AT_string_form): Change return type to enum dwarf_form.
25134         * fixed-value.c (fixed_compare): Add cast to enum type.
25135         * fwprop.c (update_df): Change 0 to VOIDmode.
25136         * gensupport.c: Change 0 to UNKNOWN.
25137         * gimple.h (gimple_cond_code): Add cast to enum type.
25138         * haifa-sched.c (reemit_notes): Add cast to enum type.
25139         * hooks.c (hook_int_void_no_regs): Remove function.
25140         * hooks.h (hook_int_void_no_regs): Remove declaration.
25141         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
25142         * predict.c (combine_predictions_for_insn): Add casts to enum type.
25143         * real.c (real_arithmetic): Add cast to enum type.
25144         (real_compare): Likewise.
25145         * target.h (struct gcc_target): Change return type of
25146         branch_target_register_class to enum reg_class.
25147         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
25148         default_branch_target_register_class.
25149         * targhooks.c (default_branch_target_register_class): New function.
25150         * targhooks.h (default_branch_target_register_class): Declare.
25151         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
25152         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
25153         cast to int.
25154         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
25155         ERROR_MARK.
25156         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
25157         vect_uninitialized_def.  Change 0 to ERROR_MARK.
25158         * tree-vect-stmts.c (supportable_widening_operation): Don't
25159         initialize icode1 and icode2.
25160         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
25161         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
25162         and to STD_C89.
25163         (cmn_err_flag_specs): Change 0 to STD_C89.
25164         (cmn_err_char_table): Likewise.
25165         * config/arm/arm.c (get_arm_condition_code): Change type of code
25166         to enum arm_cond_code.
25167         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
25168         (IWMMXT_BUILTIN2): Likewise.
25169         (neon_builtin_type_bits): Don't define typedef.
25170         (neon_builtin_datum): Change type of bits field to int.
25171         (arm_expand_neon_args): Add cast to enum type.
25172         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
25173         TLS_MODEL_NONE.
25174         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
25175         casts to enum type.
25176         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
25177         MIPS_FP_COND_f.
25178         * config/mips/mips.md (jal_macro): Return enum constant.
25179         (single_insn): Likewise.
25180         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
25181         CODE_FOR_nothing.
25182         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
25183         casts to enum type.
25184         * config/s390/s390.c (s390_tune_flags): Change type to int.
25185         (s390_arch_flags): Likewise.
25186         (s390_handle_arch_option): Change flags field of struct pta to int.
25187         * config/s390/s390.h (s390_tune_flags): Update declaration.
25188         (s390_arch_flags): Likewise.
25189         * config/sh/sh.c (prepare_move_operands): Compare
25190         tls_symbolic_operand result with enum constant.
25191         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
25192         (sh_expand_prologue): Add cast to enum type.
25193         (sh_expand_epilogue): Likewise.
25194         (tls_symbolic_operand): Change return type to enum tls_model.
25195         (fpscr_set_from_mem): Add cast to enum type.
25196         (legitimize_pic_address): Compare tls_symbolic_operand result with
25197         enum constant.
25198         (sh_target_reg_class): Change return type to enum reg_class.
25199         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
25200         PROCESSOR_xxx.
25201         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
25202         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
25203         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
25204         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
25205         (delayed_branch, tls_call_delay): Likewise.
25206         (eligible_for_sibcall_delay): Likewise.
25207         (eligible_for_return_delay): Likewise.
25208         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
25209         (spu_expand_builtin_1): Likewise.
25210
25211         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
25212         for all types of conversions.
25213         (output_init_element): Issue -Wc++-compat warning if needed when
25214         initializing a bitfield with enum type.
25215         * c-parser.c (c_parser_expression): Set original_type to
25216         original_type of right hand operand of comma operator.
25217
25218 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25219
25220         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
25221         grammar nits.
25222         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
25223         * doc/cpp.texi (Standard Predefined Macros)
25224         (Implementation-defined behavior): Likewise.
25225         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
25226         * doc/gimple.texi (GIMPLE Exception Handling)
25227         (@code{GIMPLE_ASSIGN}): Likewise.
25228         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
25229         * doc/invoke.texi (Warning Options, Optimize Options)
25230         (AVR Options, Darwin Options): Likewise.
25231         (Optimize Options): Reformulate -fwhole-program description.
25232         * doc/loop.texi (Lambda): Likewise.
25233         * doc/md.texi (Output Template, Define Constraints)
25234         (Standard Names, Insn Splitting): Likewise.
25235         * doc/options.texi (Option properties): Likewise.
25236         * doc/passes.texi (Tree-SSA passes): Likewise.
25237         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
25238         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
25239         (File Names and DBX): Likewise.
25240         * doc/trouble.texi (Incompatibilities): Likewise.
25241
25242 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
25243
25244         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
25245         instruction is correct.
25246
25247 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
25248
25249         Allow non-constant arguments to conversion intrinsics.
25250         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
25251         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
25252         * spu.c (print_operand): Handle 'v' and 'w'.
25253         (exp2_immediate_p, spu_gen_exp2): Define.
25254         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
25255         spu_convtf_1): Update parameter descriptions.
25256         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
25257         * constraints.md ('v', 'w'): New.
25258         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
25259         Remove.
25260         (i2f, I2F): New define_mode_attr.
25261         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
25262         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
25263         fixuns_truncv4sfv4si2):  Update to use mode attribute.
25264         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
25265         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
25266         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
25267         patterns for combine.
25268
25269 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
25270
25271         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
25272         (cprop, hoist, pre, store_motion): New debug counters.
25273         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
25274         is not an RTL pass anymore.
25275         (pass_profiling): Remove extern decl for pass removed in 2005.
25276         (pass_gcse, pass_jump_bypass): Remove.
25277         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
25278         to 0 for clean state.
25279         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
25280         * cse.c (gate_handle_cse_after_global_opts,
25281         rest_of_handle_cse_after_global_opts): New functions.
25282         (pass_cse_after_global_opts): New pass, does local CSE.
25283         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
25284         (TV_CPROP): New timevar.
25285         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
25286         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
25287         (gcse_main, recompute_all_luids): Remove.
25288         (compute_hash_table_work): Call max_reg_num instead of reading
25289         max_gcse_regno.
25290         (cprop_jump): Don't set run_jump_opt_after_gcse.
25291         (constprop_register): Always allow to alter jumps.
25292         (cprop_insn): Likewise.
25293         (do_local_cprop): Likewise.
25294         (local_cprop_pass): Likewise.  Return non-zero if something changed.
25295         (cprop): Remove function, fold interesting bits into one_cprop_pass.
25296         (find_implicit_sets): Add note about missed optimization opportunity.
25297         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
25298         pass_rtl_cprop execute function.
25299         Don't bother tracking the pass number, each pass gets its own dumpfile
25300         now anyway.
25301         Always allow to alter jumpsand bypass jumps.
25302         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
25303         will just find no suitable set.
25304         (pre_edge_insert): Fix dumping, this function is for PRE only.
25305         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
25306         pass_rtl_pre execute function.
25307         (hoist_code): Return non-zero if something changed.  Keep track of
25308         substitutions and insertions for statistics gathering similar to PRE.
25309         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
25310         called from the pass_rtl_hoist execute function.  Show pass statistics.
25311         (compute_store_table): Use max_reg_num directly instead of using the
25312         formerly global max_gcse_regno.
25313         (build_store_vectors): Likewise.
25314         (replace_store_insn): Fix dumping.
25315         (store_motion): Rename to ...
25316         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
25317         pass, called from the pass_rtl_store_motion execute function.  Keep
25318         track of substitutions and insertions for statistics gathering similar
25319         to PRE.
25320         (bypass_jumps): Remove, fold interesting bits into ...
25321         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
25322         from the pass_rtl_cprop execute function.
25323         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
25324         pass_jump_bypass): Remove.
25325         (gate_handle_gcse, rest_of_handle_gcse): Remove.
25326         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
25327         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
25328         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
25329         (gate_rtl_store_motion, execute_rtl_store_motion,
25330         pass_rtl_store_motion): New.
25331         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
25332         make it clear that -fcse-skip-blocks is a no-op for backward compat.
25333         * passes.c (init_optimization_passes): Remove pass_gcse and
25334         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
25335         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
25336         instead of pass_jump_bypass.
25337
25338 2009-04-27  Richard Guenther  <rguenther@suse.de>
25339
25340         PR middle-end/39928
25341         * gimplify.c (gimplify_expr): If we are required to create
25342         a temporary make sure it ends up as register.
25343
25344 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
25345
25346         PR target/39903
25347         * config/i386/i386.c (construct_container): Don't call
25348         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
25349         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
25350
25351 2009-04-27  Michael Matz  <matz@suse.de>
25352
25353         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
25354         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
25355         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
25356         (dump_replaceable_exprs): Take a bitmap.
25357         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
25358         array.
25359         (expand_gimple_basic_block): Likewise.
25360         * tree-ssa-ter.c (struct temp_expr_table_d): Make
25361         replaceable_expressions member a bitmap.
25362         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
25363         (mark_replaceable): Likewise.
25364         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
25365         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
25366
25367 2009-04-27  Richard Guenther  <rguenther@suse.de>
25368
25369         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
25370         (verify_stmts): Dispatch to gimple/type verification code.
25371         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
25372         issue with call argument types.
25373
25374 2009-04-27  Michael Matz  <matz@suse.de>
25375
25376         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
25377         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
25378         to above.
25379
25380 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
25381             Eric Botcazou  <ebotcazou@adacore.com>
25382
25383         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
25384         a label's basic block.
25385         (mark_target_live_regs): Tidy and rework obsolete comments.
25386         Change back DF problem to LIVE.  If a label starts a basic block,
25387         assume that all registers that used to be live then still are.
25388         (init_resource_info): If a label starts a basic block, set its
25389         BLOCK_FOR_INSN accordingly.
25390         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
25391
25392 2009-04-27  Richard Guenther  <rguenther@suse.de>
25393
25394         * tree-flow-inline.h (function_ann): Remove.
25395         (get_function_ann): Likewise.
25396         * tree-dfa.c (create_function_ann): Remove.
25397         * tree-flow.h (struct static_var_ann_d): Remove.
25398         (struct function_ann_d): Likewise.
25399         (union tree_ann_d): Remove fdecl member.
25400         (function_ann_t): Remove.
25401         (function_ann, get_function_ann, create_function_ann): Remove
25402         declarations.
25403
25404 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
25405
25406         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
25407
25408 2009-04-27  Jan Hubicka  <jh@suse.cz>
25409
25410         * ipa-pure-const.c (struct funct_state_d): New fields
25411         state_previously_known, looping_previously_known; remove
25412         state_set_in_source.
25413         (analyze_function): Use new fields.
25414         (propagate): Avoid assumption that state_set_in_source imply
25415         nonlooping.
25416
25417         * tree-ssa-loop-niter.c (finite_loop_p): New function.
25418         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
25419         * cfgloop.h (finite_loop_p): Declare.
25420
25421 2009-04-26  Michael Matz  <matz@suse.de>
25422
25423         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
25424
25425 2009-04-26  Michael Matz  <matz@suse.de>
25426
25427         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
25428         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
25429         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
25430         pass_mark_used_blocks): Remove.
25431         * tree-optimize.c (pass_free_datastructures,
25432         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
25433         * passes.c (init_optimization_passes): Don't call
25434         pass_mark_used_blocks, remove dead code.
25435
25436 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
25437
25438         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
25439         * tree-ssa-live.h (register_ssa_partition): Likewise.
25440
25441 2009-04-26  Michael Matz  <matz@suse.de>
25442
25443         Expand from SSA.
25444         * builtins.c (fold_builtin_next_arg): Handle SSA names.
25445         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
25446         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
25447         SSA names.
25448         (compare_pairs): Swap cost comparison.
25449         (coalesce_ssa_name): Don't use change_partition_var.
25450         * tree-nrv.c (struct nrv_data): Add modified member.
25451         (finalize_nrv_r): Set it.
25452         (tree_nrv): Use it to update statements.
25453         (pass_nrv): Require PROP_ssa.
25454         * tree-mudflap.c (mf_decl_cache_locals,
25455         mf_build_check_statement_for): Use make_rename_temp.
25456         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
25457         * alias.c (find_base_decl): Handle SSA names.
25458         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
25459         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
25460         * rtl.h (set_reg_attrs_for_parm): Declare.
25461         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
25462         to "optimized", remove unused locals at finish.
25463         (execute_free_datastructures): Make global, call
25464         delete_tree_cfg_annotations.
25465         (execute_free_cfg_annotations): Don't call
25466         delete_tree_cfg_annotations.
25467
25468         * ssaexpand.h: New file.
25469         * expr.c (toplevel): Include ssaexpand.h.
25470         (expand_assignment): Handle SSA names the same as register variables.
25471         (expand_expr_real_1): Expand SSA names.
25472         * cfgexpand.c (toplevel): Include ssaexpand.h.
25473         (SA): New global variable.
25474         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
25475         (SSAVAR): New macro.
25476         (set_rtl): New helper function.
25477         (add_stack_var): Deal with SSA names, use set_rtl.
25478         (expand_one_stack_var_at): Likewise.
25479         (expand_one_stack_var): Deal with SSA names.
25480         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
25481         before unique numbers.
25482         (expand_stack_vars): Use set_rtl.
25483         (expand_one_var): Accept SSA names, add asserts for them, feed them
25484         to above subroutines.
25485         (expand_used_vars): Expand all partitions (without default defs),
25486         then only the local decls (ignoring those expanded already).
25487         (expand_gimple_cond): Remove edges when jumpif() expands an
25488         unconditional jump.
25489         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
25490         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
25491         SSA name.
25492         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
25493         members of SA; deal with PARM_DECL partitions here; expand
25494         all PHI nodes, free tree datastructures and SA.  Commit instructions
25495         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
25496         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
25497         info and statements at start, collect garbage at finish.
25498         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
25499         (VAR_ANN_PARTITION) Remove.
25500         (change_partition_var): Don't declare.
25501         (partition_to_var): Always return SSA names.
25502         (var_to_partition): Only accept SSA names.
25503         (register_ssa_partition): Only check argument.
25504         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
25505         member.
25506         (delete_var_map): Don't free it.
25507         (var_union): Only accept SSA names, simplify.
25508         (partition_view_init): Mark only useful SSA names as used.
25509         (partition_view_fini): Only deal with SSA names.
25510         (change_partition_var): Remove.
25511         (dump_var_map): Use ssa_name instead of partition_to_var member.
25512         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
25513         basic blocks.
25514         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
25515         (struct _elim_graph): New member const_dests; nodes member vector of
25516         ints.
25517         (set_location_for_edge): New static helper.
25518         (create_temp): Remove.
25519         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
25520         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
25521         (new_elim_graph): Allocate const_dests member.
25522         (clean_elim_graph): Truncate const_dests member.
25523         (delete_elim_graph): Free const_dests member.
25524         (elim_graph_size): Adapt to new type of nodes member.
25525         (elim_graph_add_node): Likewise.
25526         (eliminate_name): Likewise.
25527         (eliminate_build): Don't take basic block argument, deal only with
25528         partition numbers, not variables.
25529         (get_temp_reg): New static helper.
25530         (elim_create): Use it, deal with RTL temporaries instead of trees.
25531         (eliminate_phi): Adjust all calls to new signature.
25532         (assign_vars, replace_use_variable, replace_def_variable): Remove.
25533         (rewrite_trees): Only do checking.
25534         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
25535         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
25536         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
25537         contains_tree_r, MAX_STMTS_IN_LATCH,
25538         process_single_block_loop_latch, analyze_edges_for_bb,
25539         perform_edge_inserts): Remove.
25540         (expand_phi_nodes): New global function.
25541         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
25542         functions, initialize new parameter, remember partitions having a
25543         default def.
25544         (finish_out_of_ssa): New global function.
25545         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
25546         don't reset in_ssa_p here, don't disable TER when mudflap.
25547         (pass_del_ssa): Remove.
25548         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
25549         partition members.
25550         (execute_free_datastructures): Declare.
25551         * Makefile.in (SSAEXPAND_H): New variable.
25552         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
25553         * basic-block.h (commit_one_edge_insertion): Declare.
25554         * passes.c (init_optimization_passes): Move pass_nrv and
25555         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
25556         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
25557         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
25558         (redirect_branch_edge): Deal with super block when expanding, split
25559         out jump patching itself into ...
25560         (patch_jump_insn): ... here, new static helper.
25561
25562 2009-04-26  Michael Matz  <matz@suse.de>
25563
25564         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
25565         beyond num_ssa_names.
25566         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
25567         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
25568
25569 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25570
25571         PR inline-asm/39543
25572         * fwprop.c (forward_propagate_asm): New function.
25573         (forward_propagate_and_simplify): Propagate also into __asm, if it
25574         doesn't increase the number of referenced registers.
25575
25576         PR c/39889
25577         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
25578
25579 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
25580
25581         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
25582         note_nonlocal_vla_type for nonlocal VLAs.
25583         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
25584         contains_remapped_vars, remap_vla_decls): New functions.
25585         (convert_nonlocal_reference_stmt): If not optimizing, call
25586         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
25587         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
25588         if it wasn't found in var_map.
25589         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
25590         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
25591         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
25592         declare_vars.
25593         * gimplify.c (nonlocal_vlas): New variable.
25594         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
25595         referenced VLAs.
25596         (gimplify_body): Create and destroy nonlocal_vlas.
25597
25598         * dwarf2out.c (loc_descr_plus_const): New function.
25599         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
25600         mem_loc_descriptor, loc_descriptor_from_tree_1,
25601         descr_info_loc, gen_variable_die): Use it.
25602
25603         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
25604         !TREE_STATIC VAR_DECLs.
25605         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
25606         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
25607         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
25608         DECL_BY_REFERENCE is valid.
25609         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
25610         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
25611         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
25612         Copy DECL_BY_REFERENCE.
25613         (struct nesting_copy_body_data): New type.
25614         (nesting_copy_decl): New function.
25615         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
25616         if they have variable length.
25617
25618 2009-04-26  Michael Matz  <matz@suse.de>
25619
25620         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
25621         mark new temporaries for renaming.
25622
25623 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25624
25625         PR c/39581
25626         * c-decl.c (global_bindings_p): Return negative value.
25627         (c_variable_size): New.  Based on variable_size from
25628         stor-layout.c.
25629         (grokdeclarator): Call c_variable_size not variable_size.
25630
25631 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
25632
25633         * config/i386/i386.c (print_operand) ['z']: Fix typo.
25634
25635 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
25636
25637         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
25638         Redefine it to just use mingw/include.
25639         (ASM_SPEC): Rules for -m32 and -m64.
25640         (LINK_SPEC): Use Likewise.
25641         (SPEC_32): New define.
25642         (SPEC_64): Likewise.
25643         (SUB_LINK_SPEC): Likewise.
25644         (MULTILIB_DEFAULTS): New define.
25645         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
25646         Add multilib options.
25647         (MULTILIB_DIRNAMES): Likewise.
25648         (MULTILIB_OSDIRNAMES): Likewise.
25649         (LIBGCC): Likewise.
25650         (INSTALL_LIBGCC): Likewise.
25651
25652 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
25653
25654         PR c/39556
25655         * c-tree.h (enum c_inline_static_type): New.
25656         (record_inline_static): Declare.
25657         * c-decl.c (struct c_inline_static, c_inline_statics,
25658         record_inline_static, check_inline_statics): New.
25659         (pop_file_scope): Call check_inline_statics.
25660         (start_decl): Call record_inline_static instead of pedwarning
25661         directly for static in inline function.
25662         * c-typeck.c (build_external_ref): Call record_inline_static
25663         instead of pedwarning directly for static referenced in inline
25664         function.
25665
25666 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
25667
25668         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
25669         not new but only being rescanned.
25670         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
25671         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
25672         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
25673         record_set_info, compute_set, grealloc): Remove.
25674         (recompute_all_luids): New function.
25675         (gcse_main): Don't compute sets, and don't do related memory
25676         allocations/free-ing.  If something changed before the end of the
25677         pass, update LUIDs using recompute_all_luids.
25678         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
25679         (free_gcse_mem): Don't free it either.
25680         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
25681         Use the df insn LUIDs.
25682         (load_killed_in_block): Likewise.
25683         (compute_hash_table_work): Don't compute reg_set_in_block.
25684         (compute_transp): Use DF_REG_DEF_CHAINs.
25685         (local_cprop_pass): Don't use compute_sets and related functions.
25686         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
25687         Use get_max_uid() instead of max_cuid.
25688         (insert_insn_end_basic_block, pre_insert_copy_insn,
25689         update_ld_motion_stores): Don't try to
25690         keep reg_set tables up to date.
25691         (pre_insert_copies): Use df insn LUIDs.
25692         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
25693         (reg_set_info): Don't use extra bitmap argument.
25694         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
25695         information to compute regs_set_in_block.
25696         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
25697         (bypass_jumps): Don't use compute_sets and friends.
25698
25699 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25700
25701         PR testsuite/39710
25702         * opts.c (undocumented_msg): Do not leave blank even with
25703         ENABLE_CHECKING.
25704
25705 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25706
25707         * c-decl.c (build_enumerator): Allow values folding to integer
25708         constants but not integer constant expressions with a pedwarn if
25709         pedantic.
25710
25711 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25712
25713         PR c/39582
25714         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
25715         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
25716         type is an integer constant.
25717
25718 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25719
25720         PR target/39897
25721         * config/i386/i386.c (print_operand) ['z']: Revert handling of
25722         HImode operands.
25723
25724 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
25725
25726         PR c/39564
25727         * c-decl.c (grokdeclarator): Diagnose declarations of functions
25728         with variably modified return type and no storage class
25729         specifiers, except for the case of nested functions.  Distinguish
25730         extern declarations of functions with variably modified return
25731         types from those of objects with variably modified types.
25732
25733 2009-04-25  Jan Hubicka  <jh@suse.cz>
25734
25735         * tree.c (list_equal_p): New function.
25736         * tree.h (list_equal_p): Declare.
25737         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25738         basic_block_def, basic_block, const_basic_block): New.
25739         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
25740         (redirect_eh_edge): New function.
25741         (make_eh_edge_update_phi): EH edges are not abnormal.
25742         * except.c: Include tree-flow.h.
25743         (list_match): New function.
25744         (eh_region_replaceable_by_p): New function.
25745         (replace_region): New function.
25746         (hash_type_list): New function.
25747         (hash_eh_region): New function.
25748         (eh_regions_equal_p): New function.
25749         (merge_peers): New function.
25750         (remove_unreachable_regions): Verify EH tree when checking;
25751         merge peers.
25752         (copy_eh_region_1): New function.
25753         (copy_eh_region): New function.
25754         (push_reachable_handler): New function.
25755         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
25756         regions without label but with live RESX.
25757         * except.h (redirect_eh_edge_to_label): New.
25758         * tree-flow.h (redirect_eh_edge): New.
25759         * coretypes.h (edge_def, edge, const_edge, basic_block_def
25760         basic_block_def, basic_block, const_basic_block): Remove.
25761         * Makefile.in (except.o): Add dependency on tree-flow.h
25762         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
25763         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
25764         Remove.
25765
25766 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
25767
25768         PR bootstrap/39645
25769         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
25770         on the destination of memcpy.
25771
25772 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
25773
25774         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
25775         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
25776         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
25777
25778 2009-04-25  Jan Hubicka  <jh@suse.cz>
25779
25780         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
25781         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
25782         to be reached by different label than left.
25783         (update_eh_edges): Update comment; remove edge_to_remove if possible
25784         and return true if suceeded.
25785         (cleanup_empty_eh): Accept sharing map; handle shared regions.
25786         (cleanup_eh): Compute sharing map.
25787         * except.c (remove_eh_handler_and_replace): Add argument if we should
25788         update regions.
25789         (remove_unreachable_regions): Update for label sharing.
25790         (label_to_region_map): Likewise.
25791         (get_next_region_sharing_label): New function.
25792         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
25793         prev_try pointers.
25794         (remove_eh_handler): Update.
25795         (remove_eh_region_and_replace_by_outer_of): New function.
25796         * except.h (struct eh_region): Add next_region_sharing_label.
25797         (remove_eh_region_and_replace_by_outer_of,
25798         get_next_region_sharing_label): Declare.
25799         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
25800
25801 2009-04-25  Jan Hubicka  <jh@suse.cz>
25802
25803         * tree-cfg.c (split_critical_edges): Split also edges where we can't
25804         insert code even if they are not critical.
25805
25806 2009-04-25  Jan Hubicka  <jh@suse.cz>
25807
25808         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25809         (gimple_can_remove_branch_p): EH edges won't remove branch by
25810         redirection.
25811         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
25812         updating of non-abnormal EH edges.
25813         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
25814         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
25815         (split_critical_edges): Split also edges where emitting code on them
25816         will lead to splitting later.
25817
25818 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
25819             H.J. Lu  <hongjiu.lu@intel.com>
25820
25821         PR target/39590
25822         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
25823         the configured assembler supports fildq and fistpq mnemonics.
25824         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
25825         * configure: Regenerated.
25826         * config.in: Ditto.
25827
25828         * config/i386/i386.c (print_operand): Handle 'Z'.
25829         ['z']: Remove handling of special fild/fist suffixes.
25830         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
25831         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
25832         suffix of fild insn.
25833         (*floatsi<mode>2_vector_mixed): Ditto.
25834         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
25835         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
25836         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
25837         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
25838         * config/i386/gas.h (GAS_MNEMONICS): Remove.
25839
25840 2009-04-25  Ben Elliston  <bje@au.ibm.com>
25841
25842         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
25843         the source of a set operation.
25844
25845 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
25846
25847         * target.h (struct gcc_target): Add case_values_threshold field.
25848         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
25849         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
25850         * targhooks.c (default_case_values_threshold): New function.
25851         * targhooks.h (default_case_values_threshold): Declare function.
25852         * stmt.c (expand_case): Use case_values_threshold target hook.
25853         * expr.h (case_values_threshold): Remove declartation.
25854         * expr.c (case_values_threshold): Remove function.
25855         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
25856
25857         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
25858         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25859         (avr_case_values_threshold): Declare as static.
25860         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
25861
25862         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
25863         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25864         (mn10300_case_values_threshold): New function.
25865
25866 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25867
25868         * ira.c (setup_cover_and_important_classes): Add enum cast.
25869
25870 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
25871
25872         * genpreds.c (write_enum_constraint_num): Output definition of
25873         CONSTRAINT_NUM_DEFINED_P macro.
25874         * ira.c (setup_cover_and_important_classes): Use
25875         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
25876
25877 2009-04-24  DJ Delorie  <dj@redhat.com>
25878
25879         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
25880         __SH2A_SINGLE_ONLY__ also.
25881
25882 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
25883
25884         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
25885         (movdf_internal): Ditto.
25886         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
25887         SFmode and DFmode constants.
25888         (ia64_print_operand): Add 'G' format for printing
25889         floating point constants.
25890
25891 2009-04-24  Richard Guenther  <rguenther@suse.de>
25892
25893         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
25894         from unsigned additions.
25895
25896 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
25897
25898         * c-typeck.c (set_init_index): Allow array designators that are
25899         not integer constant expressions with a pedwarn if pedantic.
25900
25901 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25902
25903         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
25904         zero if no overlap in nonzero bits between the operands.
25905
25906 2009-04-24  Ian Lance Taylor  <iant@google.com>
25907
25908         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
25909         (record_dead_and_set_regs): Likewise.
25910         * df.h (struct df_mw_hardreg): Change flags field to int.
25911         (struct df_base_ref): Likewise.
25912         (struct df): Change changeable_flags field to int.
25913         * df-scan.c (df_defs_record): Change clobber_flags to int.
25914         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
25915         constants rather than #define macros.
25916         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
25917         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
25918         (enum dwarf_calling_convention): Likewise.
25919         (enum dwarf_line_number_x_ops): Likewise.
25920         (enum dwarf_call_frame_info): Likewise.
25921         (enum dwarf_source_language): Likewise.
25922         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
25923         (add_calling_convention_attribute): Likewise.
25924         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
25925         (combine_comparisons): Change compcode to int.  Add cast to enum type.
25926         * genrecog.c (maybe_both_true_2): Change c to int.
25927         (write_switch): Likewise.  Add cast to enum type.
25928         * gimplify.c (gimplify_omp_for): Handle return values from
25929         gimplify_expr using MIN rather than bitwise or.
25930         (gimplify_expr): Add cast to enum type.
25931         * ipa-prop.c (update_jump_functions_after_inlining): Change
25932         IPA_BOTTOM to IPA_JF_UNKNOWN.
25933         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
25934         Add casts to enum type.
25935         (setup_cover_and_important_classes): Change cl to int.  Add casts
25936         to enum type.
25937         (setup_class_translate): Change cl and mode to int.
25938         (ira_init_once): Change mode to int.
25939         (free_register_move_costs): Likewise.
25940         (setup_prohibited_mode_move_regs): Add casts to enum type.
25941         * langhooks.c (add_builtin_function_common): Rework assertion that
25942         value fits bitfield.
25943         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
25944         * omega.c (omega_do_elimination): Avoid math on enum types.
25945         * optabs.c (expand_vec_shift_expr): Remove casts to int.
25946         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
25947         int local to handle integral_argment value.
25948         * regmove.c (try_auto_increment): Change PUT_MODE to
25949         PUT_REG_NOTE_KIND.
25950         * reload.c (push_secondary_reload): Add casts to enum type.
25951         (secondary_reload_class, find_valid_class): Likewise.
25952         * reload1.c (emit_input_reload_insns): Likewise.
25953         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
25954         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
25955         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
25956         constant.
25957         * tree.c (build_common_builtin_nodes): Add casts to enum type.
25958         * tree-complex.c (complex_lattice_t): Typedef to int rather than
25959         enum type.
25960         (expand_complex_libcall): Add casts to enum type.
25961         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
25962         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
25963         with ERROR_MARK, not NUM_TREE_CODES.
25964         (vect_create_epilog_for_reduction): Likewise.
25965         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
25966         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
25967         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
25968         enum machine_mode.
25969         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
25970         vect_unused_in_loop.  Change 0 to loop_vect.
25971         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
25972         * var-tracking.c (get_init_value): Change return type to enum
25973         var_init_status.
25974         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
25975         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
25976         arm_fp_model.
25977         (arm_override_options): Add casts to enum type.
25978         (arm_emit_tls_decoration): Likewise.
25979         * config/i386/i386.c (ix86_function_specific_restore): Add casts
25980         to enum type.
25981         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
25982         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
25983         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
25984         enum type.
25985         * config/s390/s390.c (code_for_builtin_64): Change to array of
25986         enum insn_code.
25987         (code_for_builtin_31): Likewise.
25988         (s390_expand_builtin): Change code_for_builtin to enum insn_code
25989         const *.
25990         * config/sparc/sparc.c (sparc_override_options): Change value
25991         field in struct code_model to enum cmodel.  In initializer change
25992         0 to NULL and add cast to enum type.
25993
25994         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
25995         Change all callers.  Issue a -Wc++-compat warning using
25996         lhs_origtype if necessary.
25997         (convert_for_assignment): Issue -Wc++-compat warnings about
25998         invalid conversions to enum type on assignment.
25999         * c-common.h (build_modify_expr): Update declaration.
26000
26001 2009-04-24  Nick Clifton  <nickc@redhat.com>
26002
26003         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
26004         (function_arg_advance): Likewise.
26005         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
26006         5th alternative.
26007
26008 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
26009
26010         * config/s390/constraints.md ('I', 'J'): Fix condition.
26011
26012 2009-04-24  Diego Novillo  <dnovillo@google.com>
26013
26014         * gengtype-parse.c (parse_error): Add newline after message.
26015
26016 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
26017
26018         * config/i386/sse.md (avxmodesuffixs): Removed.
26019         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
26020         (*avx_pinsr<ssevecsize>): This.
26021
26022 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
26023
26024         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
26025         follow chains of regs with a single definition, and allow expressions
26026         that are function_invariant_p.
26027         (simple_rhs_p): Allow expressions that are function_invariant_p.
26028
26029 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
26030
26031         PR middle-end/39867
26032         * fold-const.c (fold_cond_expr_with_comparison): When folding
26033         > and >= to MAX, make sure the MAX uses the same type as the
26034         comparison's operands.
26035
26036 2009-04-24  Nick Clifton  <nickc@redhat.com>
26037
26038         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
26039         addressing for DImode accesses.
26040         (frv_print_operand_address): Handle PLUS case.
26041         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
26042
26043 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
26044
26045         PR rtl-optimization/39794
26046         * alias.c (canon_true_dependence): Add x_addr argument.
26047         * rtl.h (canon_true_dependence): Adjust prototype.
26048         * cse.c (check_dependence): Adjust canon_true_dependence callers.
26049         * cselib.c (cselib_invalidate_mem): Likewise.
26050         * gcse.c (compute_transp): Likewise.
26051         * dse.c (scan_reads_nospill): Likewise.
26052         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
26053         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
26054         canon_base_addr of the group, plus optional offset.
26055         (struct group_info): Rename canon_base_mem to
26056         canon_base_addr.
26057         (get_group_info): Set canon_base_addr to canon_rtx of base, not
26058         canon_rtx of base_mem.
26059
26060 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
26061
26062         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
26063         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
26064
26065 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26066
26067         * config/spu/spu-builtins.h: Delete file.
26068
26069         * config/spu/spu.h (enum spu_builtin_type): Move here from
26070         spu-builtins.h.
26071         (struct spu_builtin_description): Likewise.  Add GTY marker.
26072         Do not use enum spu_function_code or enum insn_code.
26073         (spu_builtins): Add extern declaration.
26074
26075         * config/spu/spu.c: Do not include "spu-builtins.h".
26076         (enum spu_function_code, enum spu_builtin_type_index,
26077         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
26078         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
26079         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
26080         unsigned_V2DI_type_node): Move here from spu-builtins.h.
26081         (spu_builtin_types): Make static.  Add GTY marker.
26082         (spu_builtins): Add extern declaration with GTY marker.
26083         Include "gt-spu.h".
26084
26085         * config/spu/spu-c.c: Do not include "spu-builtins.h".
26086         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
26087         Check programmatically whether all parameters are scalar.
26088
26089         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
26090
26091 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
26092
26093         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
26094         assignment from the constructor either if the target is volatile.
26095
26096 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
26097
26098         * config/arm/arm.md (insv): Do not share operands[0].
26099
26100 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
26101
26102         * config/vxlib-tls.c (active_tls_threads): Delete.
26103         (delete_hook_installed): New.
26104         (tls_delete_hook): Don't delete the delete hook.
26105         (tls_destructor): Delete it here.
26106         (__gthread_set_specific): Adjust installing the delete hook.
26107         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
26108         __gthread_leave_tsd_dtor_context.
26109
26110 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
26111
26112         * c-format.c (gcc_tdiag_char_table): Add support for %E.
26113
26114 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
26115
26116         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
26117         enum type.
26118         (alpha_rtx_costs): Ditto.
26119         (emit_unlikely_jump): Use add_reg_note.
26120         (emit_frame_store_1): Ditto.
26121         (alpha_expand_prologue): Ditto.
26122         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26123         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
26124
26125 2009-04-23  Nick Clifton  <nickc@redhat.com>
26126
26127         * config/v850/v850.md (epilogue): Remove suppressed code.
26128         (return): Rename to return_simple and remove test of frame size.
26129         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
26130         to gen_return_simple.
26131
26132 2009-04-22  Jing Yu  <jingyu@google.com>
26133
26134         PR testsuite/39781
26135         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
26136
26137 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26138
26139         PR C/31499
26140         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
26141         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
26142         value is a VECTOR_CST, the element type is the element type of the
26143         vector.
26144
26145 2009-04-22  DJ Delorie  <dj@redhat.com>
26146
26147         * config/m32c/m32c.h: Update GTY annotations to new syntax.
26148
26149 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
26150
26151         * alias.c (find_base_term): Move around LO_SUM case, so that
26152         CONST falls through into PLUS/MINUS handling.
26153
26154         PR c/39855
26155         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
26156         into 0, use omit_one_operand.
26157
26158 2009-04-23  Ben Elliston  <bje@au.ibm.com>
26159
26160         * config/rs6000/linux-unwind.h (get_regs): Remove type
26161         puns. Change the type of `pc' to an array of unsigned ints and
26162         update all users.  Constify frame24.
26163
26164 2009-04-22  DJ Delorie  <dj@redhat.com>
26165
26166         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
26167         declarations before code.
26168         (current_function_special_page_vector): Likewise.
26169         (m32c_expand_insv): Silence a warning.
26170
26171 2009-04-21  Taras Glek  <tglek@mozilla.com>
26172
26173         * alias.c: Update GTY annotations to new syntax.
26174         * basic-block.h: Likewise.
26175         * bitmap.h: Likewise.
26176         * c-common.h: Likewise.
26177         * c-decl.c: Likewise.
26178         * c-parser.c: Likewise.
26179         * c-pragma.c: Likewise.
26180         * c-tree.h: Likewise.
26181         * cfgloop.h: Likewise.
26182         * cgraph.h: Likewise.
26183         * config/alpha/alpha.c: Likewise.
26184         * config/arm/arm.h: Likewise.
26185         * config/avr/avr.h: Likewise.
26186         * config/bfin/bfin.c: Likewise.
26187         * config/cris/cris.c: Likewise.
26188         * config/darwin.c: Likewise.
26189         * config/frv/frv.c: Likewise.
26190         * config/i386/i386.c: Likewise.
26191         * config/i386/i386.h: Likewise.
26192         * config/i386/winnt.c: Likewise.
26193         * config/ia64/ia64.h: Likewise.
26194         * config/iq2000/iq2000.c: Likewise.
26195         * config/mips/mips.c: Likewise.
26196         * config/mmix/mmix.h: Likewise.
26197         * config/pa/pa.c: Likewise.
26198         * config/pa/pa.h: Likewise.
26199         * config/rs6000/rs6000.c: Likewise.
26200         * config/s390/s390.c: Likewise.
26201         * config/sparc/sparc.c: Likewise.
26202         * config/xtensa/xtensa.c: Likewise.
26203         * cselib.h: Likewise.
26204         * dbxout.c: Likewise.
26205         * dwarf2out.c: Likewise.
26206         * except.c: Likewise.
26207         * except.h: Likewise.
26208         * fixed-value.h: Likewise.
26209         * function.c: Likewise.
26210         * function.h: Likewise.
26211         * gimple.h: Likewise.
26212         * integrate.c: Likewise.
26213         * optabs.c: Likewise.
26214         * output.h: Likewise.
26215         * real.h: Likewise.
26216         * rtl.h: Likewise.
26217         * stringpool.c: Likewise.
26218         * tree-data-ref.c: Likewise.
26219         * tree-flow.h: Likewise.
26220         * tree-scalar-evolution.c: Likewise.
26221         * tree-ssa-address.c: Likewise.
26222         * tree-ssa-alias.h: Likewise.
26223         * tree-ssa-operands.h: Likewise.
26224         * tree.c: Likewise.
26225         * tree.h: Likewise.
26226         * varasm.c: Likewise.
26227         * varray.h: Likewise.
26228         * vec.h: Likewise.
26229         * coretypes.h: Do not define GTY macro if it is already defined.
26230         * doc/gty.texi: Update GTY documentation to new syntax.
26231         * gengtype-lex.l: Enforce attribute-like syntax for GTY
26232         annotations on structs.
26233         * gengtype-parse.c: Likewise.
26234
26235 2009-04-22  Mark Heffernan  <meheff@google.com>
26236
26237         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
26238
26239 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
26240
26241         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
26242         where appropriate.
26243
26244 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
26245
26246         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
26247         the same as a PLUS without a shift.  Increase the cost of a
26248         CONST_INT in MULT.
26249
26250 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26251
26252         * Makefile.in: Update dependencies.
26253         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
26254         * errors.h: Remove bogus comment about compatibility.
26255         (warning): Update declaration.
26256         * genautomata.c: Update all calls to warning.
26257         * gimple.c: Do not include errors.h. Include toplev.h.
26258         * tree-ssa-structalias.c: Do not include errors.h.
26259         * omega.c: Likewise.
26260         * tree-ssa-reassoc.c: Likewise.
26261         * config/spu/spu-c.c: Likewise.
26262         * config/spu/t-spu-elf: Update dependencies.
26263
26264 2009-04-22  Richard Guenther  <rguenther@suse.de>
26265
26266         PR tree-optimization/39824
26267         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
26268         make sure the types are compatible.
26269
26270 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26271
26272         PR c++/14875
26273         * c-common.c (c_parse_error): Take a token_flags parameter.
26274         Use token_type for the token type instead.
26275         Pass token_flags to cpp_type2name.
26276         * c-common.h (c_parse_error): Update declaration.
26277         * c-parser.c (c_parser_error): Pass 0 as token flags.
26278
26279 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
26280
26281         PR rtl-optimization/39580
26282         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
26283
26284 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
26285
26286         * function.c (expand_function_end): Do not emit a jump to the "naked"
26287         return label for fall-through returns.
26288         * except.c (sjlj_emit_function_exit): Always place the call to the
26289         unregister function at the location installed by expand_function_end.
26290
26291 2009-04-22  Richard Guenther  <rguenther@suse.de>
26292
26293         PR tree-optimization/39845
26294         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
26295         (gen_inbound_check): Likewise.
26296
26297 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
26298
26299         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
26300         padding for PPC.
26301         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
26302         * config/vxlib.c (__gthread_once): Add race guard for PPC.
26303
26304 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
26305
26306         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
26307         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
26308         shift counts to avoid out-of-bounds array accesses.
26309
26310 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
26311
26312         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
26313         (Pmode): Move above.
26314
26315 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
26316
26317         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
26318         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
26319         GET_CODE macro.  Use IN_RANGE macro where appropriate.
26320         * config/alpha/alpha.h: Ditto.
26321         * config/alpha/alpha.md: Ditto.
26322         * config/alpha/constraints.md: Ditto.
26323         * config/alpha/predicates.md: Ditto.
26324
26325 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
26326
26327         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
26328         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26329         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26330         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26331         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26332         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26333         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26334         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26335         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26336         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26337         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26338         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26339         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26340         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26341         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26342         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26343         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26344         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26345         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26346         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26347         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26348         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26349         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26350         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26351         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26352         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26353         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
26354
26355 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
26356
26357         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
26358         references from comments.
26359         * cfgbuild.c (count_basic_blocks): Delete.
26360         (find_basic_blocks_1): Delete.
26361         (find_basic_blocks): Delete.
26362         * except.c (finish_eh_generation): Make static.  Move comment from
26363         except.h here.  Remove find_basic_blocks references from comments.
26364         * except.h (finish_eh_generation): Delete.
26365         * basic-block.h (find_basic_blocks): Delete.
26366         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
26367
26368 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
26369
26370         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
26371         (sdbout_parms):  Likewise.
26372
26373 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
26374
26375         * config/sh/sh.c (prepare_cbranch_operands): Use
26376         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
26377         (expand_cbranchdi4): Likewise.
26378         (from_compare): Add cast to enum type.
26379         (expand_cbranchsi4): Use add_reg_note.
26380         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
26381         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
26382         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
26383         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26384         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
26385         instead of CODE_FOR_nothing.
26386         (cbranchdi4): Likewise.  Fix the order of arguments for
26387         gen_rtx_fmt_ee.
26388         (push_fpscr): Use add_reg_note.
26389         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
26390         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
26391
26392 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
26393
26394         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
26395         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
26396         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
26397         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
26398         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
26399         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
26400         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
26401         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
26402         config/alpha/x-vms, config/arc/t-arc,
26403         config/arm/README-interworking, config/arm/arm-c.c,
26404         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
26405         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
26406         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
26407         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
26408         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
26409         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
26410         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
26411         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
26412         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
26413         config/cris/t-elfmulti, config/crx/t-crx,
26414         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
26415         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
26416         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
26417         config/h8300/t-h8300, config/i386/athlon.md,
26418         config/i386/darwin-libgcc.10.4.ver,
26419         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
26420         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
26421         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
26422         config/i386/t-linux64, config/i386/t-nwld,
26423         config/i386/t-rtems-i386, config/i386/t-sol2-10,
26424         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
26425         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
26426         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
26427         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
26428         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
26429         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
26430         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
26431         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
26432         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
26433         config/m68k/t-uclinux, config/mcore/t-mcore,
26434         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
26435         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
26436         config/mips/crtn.asm, config/mips/irix-crti.asm,
26437         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
26438         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
26439         config/mips/mips-fixed.md, config/mips/sb1.md,
26440         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
26441         config/mips/t-iris6, config/mips/t-isa3264,
26442         config/mips/t-libgcc-mips16, config/mips/t-linux64,
26443         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
26444         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
26445         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
26446         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
26447         config/mn10300/t-linux, config/mn10300/t-mn10300,
26448         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
26449         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
26450         config/picochip/libgccExtras/clzsi2.asm,
26451         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
26452         config/rs6000/darwin-libgcc.10.4.ver,
26453         config/rs6000/darwin-libgcc.10.5.ver,
26454         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
26455         config/rs6000/t-aix43, config/rs6000/t-aix52,
26456         config/rs6000/t-darwin, config/rs6000/t-fprules,
26457         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
26458         config/rs6000/t-lynx, config/rs6000/t-netbsd,
26459         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
26460         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
26461         config/rs6000/t-rtems, config/rs6000/t-spe,
26462         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
26463         config/score/t-score-elf, config/sh/divcost-analysis,
26464         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
26465         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
26466         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
26467         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
26468         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
26469         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
26470         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
26471         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
26472         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
26473         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
26474         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
26475         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
26476         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
26477         limitx.h, version.c, xcoff.h: Add copyright and license notices.
26478         * config/h8300/genmova.sh: Include copyright and license notices
26479         in generated output.
26480         * config/h8300/mova.md: Regenerate.
26481         * doc/install.texi2html: Include word "Copyright" in copyright
26482         notice and use name "Free Software Foundation, Inc.".
26483         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
26484         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
26485         ChangeLog-2007, ChangeLog-2008: Correct dates.
26486
26487 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
26488
26489         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
26490         NE_EXPR operations as well.
26491         * c-parser.c (c_parser_condition): Do not set location information on
26492         the condition.
26493         (c_parser_conditional_expression): Likewise.
26494         (c_parser_binary_expression): Set location information on operators.
26495         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
26496         TRUTH_NOT_EXPR has been folded.
26497         * fold-const.c (fold_truth_not_expr): Copy location information from
26498         the incoming expression to the outgoing one.
26499         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
26500         recursive calls on the LHS of the operator but pass that of the
26501         operator to recursive calls on the RHS of the operator.  Set it
26502         on the COND_EXPR.
26503         (shortcut_cond_expr): Set the locus of the operator on the second
26504         COND_EXPR and that of the expression on the first in degenerate cases.
26505         Pass the locus of the expression to calls to shortcut_cond_r.
26506         Set the locus of the 'then' block on the associated jump, if any.
26507         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
26508         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
26509         expression to call to gimplify_boolean_expr.
26510
26511 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
26512
26513         * config.gcc: Add additional configuration for
26514         i686-w64-mingw* and x86_64-w64-mingw* triplet.
26515         * config/i386/mingw-w64.h: New mingw-w64 specific header.
26516         (CPP_SPEC): Redefine for allowing -municode option.
26517         (STARTFILE_SPEC): Likewise.
26518         * config/i386/t-mingw-w64: New.
26519         * config/i386/mingw-w64.opt: New.
26520         (municode): Add new target option.
26521         * doc/invoke.texi (municode): Add documentation for new option.
26522
26523 2009-04-21  Ian Lance Taylor  <iant@google.com>
26524
26525         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26526         Correct test for number of arguments.
26527         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
26528
26529 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
26530
26531         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
26532         argument of emit_library_call.
26533
26534 2009-04-21  Richard Guenther  <rguenther@suse.de>
26535
26536         PR middle-end/39829
26537         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
26538         inside VIEW_CONVERT_EXPRs.
26539
26540 2009-04-21  Martin Jambor  <mjambor@suse.cz>
26541
26542         * tree-switch-conversion.c (build_constructors): Split a long line.
26543         (constructor_contains_same_values_p): New function.
26544         (build_one_array): Create assigns of constants if possible, do not
26545         call mark_sym_for_renaming, call update_stmt.
26546         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
26547         make_rename_temp.  Do not call mark_symbols_for_renaming, call
26548         update_stmt.
26549         (gen_def_assigns): Do not call mark_symbols_for_renaming or
26550         find_new_referenced_vars, call update_stmt.
26551         (gen_inbound_check): Use create_tmp_var and create ssa names manually
26552         instead of calling make_rename_temp.  Do not call
26553         find_new_referenced_vars or mark_symbols_for_renaming, call
26554         update_stmt.
26555
26556 2009-04-21  Richard Guenther  <rguenther@suse.de>
26557
26558         PR tree-optimization/39827
26559         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
26560         (tree_ssa_phiprop): Pass the correct array size.
26561
26562 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
26563
26564         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
26565
26566 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26567
26568         PR 16202
26569         * c-typeck.c (lvalue_p): Move declaration ...
26570         * c-common.h (lvalue_p): ... to here.
26571         * c-common.c (candidate_equal_p): New.
26572         (add_tlist): Use it.
26573         (merge_tlist): Use it.
26574         (warn_for_collisions_1): Likewise.
26575         (warning_candidate_p): Accept more candidates.
26576         (verify_tree): A warning candidate can be an expression. Use
26577         candidate_equal_p.
26578
26579 2009-04-21  Ben Elliston  <bje@au.ibm.com>
26580
26581         PR target/5267
26582         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
26583         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
26584         options.  Remove -mcall-solaris documentation.
26585
26586 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26587
26588         PR c++/13358
26589         * doc/invoke.texi (-Wlong-long): Update description.
26590         * c-lex (interpret_integer): Only warn if there was no previous
26591         overflow and -Wlong-long is enabled.
26592         * c-decl.c (declspecs_add_type): Drop redundant flags.
26593         * c.opt (Wlong-long): Init to -1.
26594         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
26595         and front-end warn_long_long. Wlong-long only depends on other
26596         flags if it is uninitialized.
26597         * c-parser.c (disable_extension_diagnostics): warn_long_long is
26598         the same for CPP and FE.
26599         (restore_extension_diagnostics): Likewise.
26600
26601 2009-04-20  Ian Lance Taylor  <iant@google.com>
26602
26603         Fix enum conversions which are invalid in C++:
26604         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
26605         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
26606         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
26607         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
26608         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
26609         (dbxout_parms): Likewise.
26610         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
26611         (df_clear_flags): Likewise.
26612         * df-problems.c (df_rd_bb_local_compute_process_def): Change
26613         top_flag parameter to int.
26614         (df_chain_create_bb_process_use): Likewise.
26615         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
26616         Remove cast.
26617         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
26618         (df_ref_create_structure, df_def_record_1): Likewise.
26619         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
26620         (df_notes_rescan): Change 0 to VOIDmode in function call.
26621         (df_get_call_refs, df_insn_refs_collect): Likewise.
26622         (df_bb_regs_collect): Likewise.
26623         (df_entry_block_defs_collect): Likewise.
26624         (df_exit_block_uses_collect): Likewise.
26625         * df.h: Update declarations.
26626         * double-int.c (double_int_divmod): Add cast to enum type.
26627         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
26628         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
26629         (based_loc_descr): Likewise.
26630         (loc_descriptor_from_tree_1): Change first_op and second_op to
26631         enum dwarf_location_atom.  Add cast to enum type.
26632         * expmed.c (init_expmed): Change 0 to SET in function call.
26633         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
26634         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
26635         (do_store_flag): Likewise.
26636         * fixed-value.h (struct fixed_value): Change mode to enum
26637         machine_mode.
26638         * function.c (assign_parms): Change 0 to VOIDmode in function call.
26639         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
26640         function call.
26641         (insert_insn_decl, insert_decl, insert_state): Likewise.
26642         (automata_list_finish): Likewise.
26643         * genrecog.c (process_define_predicate): Add cast to enum type.
26644         * gensupport.c (init_predicate_table): Add cast to enum type.
26645         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
26646         function call.
26647         (gimple_build_call_1, gimple_build_label): Likewise.
26648         (gimple_build_goto, gimple_build_asm_1): Likewise.
26649         (gimple_build_switch_1, gimple_build_cdt): Likewise.
26650         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
26651         (enum fallback): Rename from enum fallback_t.
26652         (fallback_t): Typedef as int.
26653         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
26654         GSI_SAME_STMT in function call.
26655         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
26656         enum type.
26657         (setup_reg_class_relations): Likewise.
26658         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
26659         (setup_prohibited_class_mode_regs): Add cast to enum type.
26660         (setup_prohibited_mode_move_regs): Likewise.
26661         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
26662         (record_address_regs): Change i to enum reg_class.
26663         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
26664         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
26665         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
26666         (GET_MODE_2XWIDER_MODE): Likewise.
26667         (GET_CLASS_NARROWEST_MODE): Likewise.
26668         * omp-low.c (expand_omp_for): Add cast to enum type.
26669         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
26670         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
26671         * postreload.c (reload_cse_simplify_operands): Change rclass local
26672         to enum reg_class.
26673         * predict.c (combine_predictions_for_insn): Change best_predictor
26674         and predictor to enum br_predictor.
26675         (combine_predictions_for_bb): Likewise.
26676         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
26677         use SET_PREDICT_EXPR_OUTCOME.
26678         * real.c (real_arithmetic): Change icode to code in function call.
26679         * reginfo.c (init_move_cost): Add casts to enum type.
26680         (init_reg_sets_1, init_fake_stack_mems): Likewise.
26681         * regmove.c (regclass_compatible_p): Change class0 and class1 to
26682         enum reg_class.
26683         * reload.c (find_valid_class): Add casts to enum type.
26684         (push_reload): Change 0 to NO_REGS in function call.
26685         (find_reloads): Change this_alternative to array of enum
26686         reg_class.  Remove some now-unnecessary casts.
26687         (make_memloc): Change 0 to VOIDmode in function call.
26688         * reload1.c (reload): Change 0 to VOIDmode in function call.
26689         (eliminate_regs_1, elimination_effects): Likewise.
26690         (eliminate_regs_in_insn): Likewise.
26691         (emit_input_reload_insns): Add cast to enum type.
26692         (delete_output_reload): Change 0 to VOIDmode in function call.
26693         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
26694         to enum type in function call.
26695         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
26696         (SET_PREDICT_EXPR_OUTCOME): Define.
26697         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
26698         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
26699         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
26700         (dump_function): Likewise.
26701         * tree-dump.h: Update declarations.
26702         * tree-pass.h: Update declarations.
26703         * varasm.c (assemble_integer): Change mclass to enum mode_class.
26704         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
26705         enum type.
26706         (arm_rtx_costs_1): Correct parenthesization.
26707         (arm_rtx_costs): Add casts to enum type.
26708         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
26709         (vfp_emit_fstmd): Use add_rg_note.
26710         (emit_multi_reg_push, emit_sfm): Likewise.
26711         (thumb_set_frame_pointer): Likewise.
26712         (arm_expand_prologue): Likewise.
26713         (arm_regno_class): Change return type to enum reg_class.
26714         (thumb1_expand_prologue): Use add_reg_note.
26715         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
26716         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
26717         in function call.
26718         * config/arm/gentune.sh: Add cast to enum type.
26719         * config/arm/arm-tune.md: Rebuild.
26720         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
26721         (ix86_split_fp_branch, predict_jump): Likewise.
26722         (ix86_expand_multi_arg_builtin): Change sub_code from enum
26723         insn_code to enum rtx_code.
26724         (ix86_builtin_vectorized_function): Add cast to enum type.
26725         * config/i386/i386.md (truncdfsf2): Change slot to enum
26726         ix86_stack_slot.
26727         (truncxf<mode>2, isinf<mode>2): Likewise.
26728         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
26729         enum type.
26730         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
26731         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
26732         (insert_bundle_state): Change 1 to INSERT in function call.
26733         (ia64_add_bundle_selector_before): Likewise.
26734         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
26735         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
26736         (restore_stack_nonlocal): Likewise.
26737         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
26738         function call.
26739         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
26740         function call.
26741         (mips_rtx_costs): Likewise.
26742         (mips_override_options): Add casts to enum type.
26743         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
26744         in function call.
26745         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
26746         (store_reg, set_reg_plus_d): Likewise.
26747         (hppa_expand_prologue, hppa_profile_hook): Likewise.
26748         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
26749         cast to enum type.
26750         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
26751         function call.
26752         (emit_unlikely_jump): Use add_reg_note.
26753         (rs6000_emit_allocate_stack): Likewise.
26754         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
26755         (output_toc): Change 1 to INSERT in function call.
26756         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
26757         (rs6000_initialize_trampoline): Likewise.
26758         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
26759         function call.
26760         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
26761         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
26762         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
26763         (save_gprs): Use add_reg_note.
26764         (s390_emit_prologue): Likewise.
26765         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
26766         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
26767         (sparc_fold_builtin): Add cast to enum type.
26768         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
26769         enum insn_code.
26770         (spu_expand_prologue): Use add_reg_note.
26771         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
26772
26773 2009-04-20  Ian Lance Taylor  <iant@google.com>
26774
26775         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
26776         (c_parser_postfix_expression_after_primary): Get VEC for list of
26777         arguments.  Get original types of arguments.  Call
26778         build_function_call_vec.
26779         (cached_expr_list_1, cached_expr_list_2): New static variables.
26780         (c_parser_expr_list): Change return type to VEC *.  Add
26781         p_orig_types parameter.  Change all callers.
26782         (c_parser_release_expr): New static function.
26783         (c_parser_vec_to_tree_list): New static function.
26784         * c-typeck.c (build_function_call): Rewrite to build a VEC and
26785         call build_function_call_vec.
26786         (build_function_call_vec): New function, based on old
26787         build_function_call.
26788         (convert_arguments): Remove nargs and argarray parameters.  Change
26789         values to a VEC.  Add origtypes parameter.
26790         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
26791         (convert_for_assignment): Add origtype parameter.  Change all
26792         callers.  If warn_cxx_compat, check for conversion to an enum
26793         type when calling a function.
26794         (store_init_value): Add origtype parameter.  Change all callers.
26795         (digest_init): Likewise.
26796         (struct init_node): Add origtype field.
26797         (add_pending_init): Add origtype parameter.  Change all callers.
26798         (output_init_element): Likewise.
26799         (output_pending_init_elements): Pass origtype from init_node to
26800         output_init_element.
26801         (process_init_element): Pass origtype from c_expr to
26802         output_init_element.
26803         (c_finish_return): Add origtype parameter.  Change all callers.
26804         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
26805         caller.
26806         (sync_resolve_params): Likewise.
26807         (sync_resolve_return): Change params to first_param.  Change caller.
26808         (resolve_overloaded_builtins): Change params to VEC *.  Change
26809         callers.  Save first parameter around call to build_function_call_vec.
26810         * c-decl.c (finish_decl): Add origtype parameter.  Change all
26811         callers.  Call build_function_call_vec rather than
26812         build_function_call for cleanup.
26813         * c-tree.h: Update declarations.
26814         * c-common.h: Update declarations.
26815         * stub-objc.c (objc_rewrite_function_call): Change parameter from
26816         params to first_param.
26817         * target.h (struct gcc_target): Change resolve_overloaded_builtin
26818         params parameter from tree to void *.
26819         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
26820         Change arglist parameter to have type void *, and to be a pointer
26821         to a VEC.
26822         * config/rs6000/rs6000-protos.h
26823         (altivec_resolve_overloaded_builtin): Update declaration.
26824         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
26825         fnargs parameter to have type void *, and to be a pointer to a
26826         VEC.  Call build_function_call_vec instead of
26827         build_function_call.
26828         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
26829
26830 2009-04-20  Joey Ye  <joey.ye@intel.com>
26831             Xuepeng Guo  <xuepeng.guo@intel.com>
26832             H.J. Lu  <hongjiu.lu@intel.com>
26833
26834         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
26835
26836         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
26837         (IX86_LEA_PRIORITY): Likewise.
26838         (distance_non_agu_define): New function.
26839         (distance_agu_use): Likewise.
26840         (ix86_lea_for_add_ok): Likewise.
26841         (ix86_dep_by_shift_count): Likewise.
26842
26843         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
26844         should split for LEA.
26845
26846         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
26847         function.
26848         (ix86_dep_by_shift_count): Likewise.
26849
26850 2009-04-20  Richard Guenther  <rguenther@suse.de>
26851
26852         * expr.c (handled_component_p): Move ...
26853         * tree.h (handled_component_p): ... here.
26854         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
26855         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
26856         and REALPART_EXPR to be in one group.
26857
26858 2009-04-20  Richard Guenther  <rguenther@suse.de>
26859
26860         * basic-block.h (get_all_dominated_blocks): Declare.
26861         * dominance.c (get_all_dominated_blocks): New function.
26862         * tree-cfg.c (get_all_dominated_blocks): Remove.
26863         (remove_edge_and_dominated_blocks): Adjust.
26864         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
26865         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
26866         instead of recursing.
26867
26868 2009-04-20  Doug Kwan  <dougkwan@google.com>
26869
26870         * cgraph.h (cgraph_node_ptr): New type for vector functions.
26871         (struct cgraph_node_set_def): New type.
26872         (cgraph_node_set) New type. Also declare vector functions.
26873         (struct cgraph_node_set_element_def): New type.
26874         (cgraph_node_set_element): Ditto.
26875         (cgraph_node_set_iterator): New iterator type.
26876         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
26877         cgraph_node_set_remove, dump_cgraph_node_set,
26878         debug_cgraph_node_set): New prototypes.
26879         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
26880         cgraph_node_set_size): New inlines.
26881         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
26882         including cgraph.h.
26883         (struct ipa_opt_pass): Add struct cgraph_node_set_def
26884         argument to function 'write_summary'.
26885         * ipa.c: Include ggc.h.
26886         (hash_cgraph_node_set_element,
26887         eq_cgraph_node_set_element, cgraph_node_set_new,
26888         cgraph_node_set_add, cgraph_node_set_remove,
26889         cgraph_node_set_find, dump_cgraph_node_set,
26890         debug_cgraph_node_set): New functions.
26891         * Makefile.in (ipa.o): Add dependency on GGC_H.
26892
26893 2009-04-20  Ira Rosen  <irar@il.ibm.com>
26894
26895         PR tree-optimization/39675
26896         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
26897         check of the return code of vect_schedule_slp. Check that
26898         stmt_vec_info still exists for the statement, before checking its
26899         vectorization type.
26900
26901 2009-04-20  Michael Matz  <matz@suse.de>
26902
26903         * Makefile.in (generated_files): Take out $(simple_generated_c).
26904
26905 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
26906
26907         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
26908         (UINTPTR_TYPE):  Likewise.
26909
26910 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26911
26912         PR c/37481
26913         * c-typeck.c (digest_init): Check for initializing an array with a
26914         string literal.
26915
26916 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26917
26918         PR c/19771
26919         * c-semantics.c (pop_stmt_list): Propagate
26920         STATEMENT_LIST_HAS_LABEL to parent statement list.
26921
26922 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
26923
26924         * config/mips/mips.h (mips_tune_attr): New macro.
26925         * config/mips/mips.md (cpu): Use it.
26926
26927 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26928
26929         PR c/38243
26930         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
26931         declaring a tag.
26932
26933 2009-04-19  Diego Novillo  <dnovillo@google.com>
26934
26935         * toplev.c (compile_file): Move call to coverage_finish ...
26936         * cgraphunit.c (ipa_passes): ... here.
26937         Call cgraph_process_new_functions.
26938         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
26939         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
26940
26941 2009-04-19  Jan Hubicka  <jh@suse.cz>
26942
26943         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
26944         cfun.
26945         (dump_cgraph_node): Dump can throw external flag.
26946         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
26947
26948 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26949
26950         PR c/32061
26951         PR c++/36954
26952         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
26953         * common.opt (Wlogical-op): Move from here...
26954         * c.opt (Wlogical-op): ... to here.
26955         * c-typeck.c (parser_build_binary_op): Update call to
26956         warn_logical_operator.
26957         * c-opts.c (c_common_post_options): Enable warn_logical_op with
26958         extra_warnings.
26959         * c-common.c (warn_logical_op): Update.
26960         * c-common.h (warn_logical_op): Update declaration.
26961
26962 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
26963
26964         * tree.c (protected_set_expr_location): Fix formatting.
26965
26966 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26967
26968         PR c/27676
26969         * c-typeck.c (readonly_warning): new.
26970         (build_unary_op, build_modify_expr): Use readonly_warning for
26971         storing into something readonly but not const-qualified.
26972
26973 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26974
26975         PR c/22367
26976         * c-typeck.c (build_unary_op): Check for taking address of
26977         expression of type void.
26978
26979 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26980
26981         PR c/35210
26982         * c-typeck.c (build_function_call): Check for calling a function
26983         with qualified void return types.  Call require_complete_type when
26984         generating a trap.
26985
26986 2009-04-18  Jan Hubicka  <jh@suse.cz>
26987
26988         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
26989         Set nothrow flag.
26990         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
26991         can_throw_external flag.
26992         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
26993         * ipa-pure-const.c (ignore_edge): New function.
26994         (propagate): Compute order for NOTHROW computation; set NOTHROWs
26995         only over can_throw_external edges.
26996         (local_pure_const): Add nothrow flag.
26997         * ipa-utils.c (searchc): Add ignore_edge callback.
26998         (ipa_utils_reduced_inorder): Add ignore_edge callback.
26999         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
27000         (set_nothrow_function_flags): Update cgraph.
27001         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
27002
27003 2009-04-18  Richard Guenther  <rguenther@suse.de>
27004
27005         PR middle-end/39804
27006         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
27007         (fold_stmt): ... this and ...
27008         (fold_stmt_inplace): ... this.
27009         (fold_stmt_1): Fold references in calls and asms.
27010         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
27011
27012 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
27013
27014         * tree-vrp.c (ssa_name_nonzero_p): Remove.
27015         * tree.h: Remove the prototype for ssa_name_nonzero_p.
27016
27017 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
27018
27019         * tree.c (function_args_count): Remove.
27020         * tree.h: Remove the prototype for function_args_count.
27021
27022 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
27023
27024         * tree-iterator.c (expr_only): Remove.
27025         * tree.h: Remove the prototype for expr_only.
27026
27027 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
27028
27029         * reginfo.c (cannot_change_mode_set_regs): Remove.
27030         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
27031
27032 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
27033
27034         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
27035         whether operands 0 and 1 overlaps.
27036
27037 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
27038
27039         PR middle-end/36902
27040         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
27041         pointer. Use warning_at instead of warning.
27042         (search_for_addr_array): Likewise.
27043         (check_array_bounds): Likewise.
27044         (check_all_array_refs): Check that the incoming edge is not in the
27045         list of edges to be removed.
27046         (check_all_array_refs): Avoid the temporal pointer.
27047         (vrp_visit_cond_stmt): Fix typo.
27048         (simplify_switch_using_ranges): Handle the case where the switch
27049         index is an integer constant.
27050
27051 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
27052
27053         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
27054
27055 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
27056
27057         * doc/extend.texi, doc/invoke.texi: Fix typos.
27058
27059 2009-04-17  Cary Coutant  <ccoutant@google.com>
27060
27061         * tree-flow-inline.h (get_lineno): Fix inverted test.
27062
27063 2009-04-17  Diego Novillo  <dnovillo@google.com>
27064
27065         * tree-ssa-pre.c (create_expression_by_pieces): Remove
27066         assertion for AVAIL_OUT.
27067
27068 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
27069
27070         PR target/38627
27071         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
27072         * config/sh/linux-atomic.asm: Likewise.
27073
27074 2009-04-17  Diego Novillo  <dnovillo@google.com>
27075
27076         * except.c (debug_eh_tree): New.
27077         (struct eh_region, struct eh_status): Move ...
27078         * except.h: ... here.
27079         (add_type_for_runtime): Declare extern.
27080         (lookup_type_for_runtime): Likewise.
27081         (debug_eh_tree): Declare.
27082         * Makefile.in (GTFILES): List except.h before except.c
27083
27084 2009-04-17  Diego Novillo  <dnovillo@google.com>
27085
27086         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
27087         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
27088         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
27089         (find_vars_r): ... here.
27090         * tree-flow.h (find_referenced_vars_in): Declare.
27091         * tree-ssa-pre.c (create_expression_by_pieces): Assert
27092         that AVAIL_OUT exists for BLOCK.
27093         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
27094         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
27095         (tree-parloops.o): Likewise.
27096
27097 2009-04-17  Simon Baldwin  <simonb@google.com>
27098
27099         * toplev.c (default_tree_printer): Add handling for %E format.
27100
27101 2009-04-17  Diego Novillo  <dnovillo@google.com>
27102
27103         * tree-pretty-print.c (dump_generic_node): Add break after
27104         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
27105         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
27106         FUNCTION_TYPE together.  Call print_struct_decl when printing
27107         structures and TDF_SLIM is not given.
27108         (print_struct_decl): Fix logic for detecting recursion.
27109
27110 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
27111
27112         PR 31567
27113         * gcc.c (create_at_file): New.
27114         (compile_input_file_p): New.
27115         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
27116         * main.c (main): Update call to toplev_main.
27117         * toplev.c (toplev_main): Change signature. Call expandargv.
27118         * toplev.h (toplev_main): Change signature.
27119
27120 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
27121
27122         * dwarf2out.c (field_byte_offset): Use the type size as the field size
27123         if the latter is not constant.
27124
27125 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
27126
27127         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
27128
27129 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
27130
27131         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
27132         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
27133
27134 2009-04-17  Richard Guenther  <rguenther@suse.de>
27135
27136         * tree-ssa-structalias.c (get_constraint_for_component_ref):
27137         Handle component references view-converting an invariant address.
27138
27139 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
27140
27141         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
27142         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
27143         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
27144         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
27145         Use @deftypevr rather than @deftypevar.
27146
27147 2009-04-17  Richard Guenther  <rguenther@suse.de>
27148
27149         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
27150         (get_prop_source_stmt): Likewise.
27151         (can_propagate_from): Likewise.
27152
27153 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
27154
27155         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
27156         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
27157         (--with-multilib-list): Add default value.
27158         * configure: Regenerate.
27159         * Makefile.in (TM_ENDIAN_CONFIG): Define.
27160         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
27161         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
27162         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
27163         Don't add default cpu to multilib list unnecessarily, but do enable
27164         the relevant compiler option..
27165         Add support for --with-multilib-list=<blank> and
27166         --with-multilib-list=!<somelib> to supress unwanted multilibs.
27167         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
27168         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
27169         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
27170         TM_MULTILIB_CONFIG.
27171         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
27172         (MULTILIB_OSDIRNAMES): New variable.
27173         * config/sh/t-1e: Delete file.
27174         * config/sh/t-mlib-sh1: Delete file.
27175         * config/sh/t-mlib-sh2: Delete file.
27176         * config/sh/t-mlib-sh2a: Delete file.
27177         * config/sh/t-mlib-sh2a-nofpu: Delete file.
27178         * config/sh/t-mlib-sh2a-single: Delete file.
27179         * config/sh/t-mlib-sh2a-single-only: Delete file.
27180         * config/sh/t-mlib-sh2e: Delete file.
27181         * config/sh/t-mlib-sh3e: Delete file.
27182         * config/sh/t-mlib-sh4: Delete file.
27183         * config/sh/t-mlib-sh4-nofpu: Delete file.
27184         * config/sh/t-mlib-sh4-single: Delete file.
27185         * config/sh/t-mlib-sh4-single-only: Delete file.
27186         * config/sh/t-mlib-sh4a: Delete file.
27187         * config/sh/t-mlib-sh4a-nofpu: Delete file.
27188         * config/sh/t-mlib-sh4a-single: Delete file.
27189         * config/sh/t-mlib-sh4a-single-only: Delete file.
27190         * config/sh/t-mlib-sh4al: Delete file.
27191         * config/sh/t-mlib-sh5-32media: Delete file.
27192         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
27193         * config/sh/t-mlib-sh5-64media: Delete file.
27194         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
27195         * config/sh/t-mlib-sh5-compact: Delete file.
27196         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
27197         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
27198         * doc/install.texi (Options specification): Add
27199         --with-multilib-list and --with-endian.
27200
27201 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
27202
27203         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
27204         REVISION_c.
27205         (OBJS-common): Add plugin-version.o.
27206         (plugin-version.o): New.
27207         * gcc-plugin.h (plugin_gcc_version): New.
27208         (plugin_default_version_check): New.
27209         (plugin_init_func, plugin_init): Add version argument.
27210         * plugin-version.c: New.
27211         * plugin.c (str_plugin_gcc_version_name): New.
27212         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
27213         pass it to the init function.
27214         (plugin_default_version_check): New.
27215
27216 2009-04-17  Richard Guenther  <rguenther@suse.de>
27217
27218         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
27219         for decl-vs-decl disambiguation.
27220
27221 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
27222
27223         * config/s390/s390.h (s390_tune_attr): New macro definition.
27224         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
27225
27226 2009-04-17  Richard Guenther  <rguenther@suse.de>
27227
27228         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
27229         (fold_stmt_r): Likewise.
27230         (maybe_fold_reference): New function.
27231         (fold_gimple_assign): Handle cases fold_stmt_r did.
27232         (fold_stmt): Do not use fold_stmt_r.
27233         (fold_stmt_inplace): Likewise.
27234
27235 2009-04-17  Richard Guenther  <rguenther@suse.de>
27236
27237         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
27238         (record_equivalences_from_stmt): Remove useless checks and
27239         simplifications.
27240         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
27241         the type is already suitable.
27242
27243 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
27244
27245         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
27246
27247 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
27248
27249         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
27250         (CMPtype): Define as __gcc_CMPtype.
27251
27252 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
27253
27254         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
27255         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
27256
27257 2009-04-17  Richard Guenther  <rguenther@suse.de>
27258
27259         PR tree-optimization/39746
27260         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
27261         special-casing for builtins and static variable use/def.
27262         (call_may_clobber_ref_p_1): Likewise.
27263
27264 2009-04-16  Ian Lance Taylor  <iant@google.com>
27265
27266         * df.h: Include "timevar.h".
27267         (struct df_problem): Change tv_id field to timevar_id_t.
27268         * tree-pass.h: Include "timevar.h".
27269         (struct opt_pass): Change tv_id field to timevar_id_t.
27270         * timevar.h (timevar_id_t): Define TV_NONE.
27271         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
27272         TV_NONE rather than tv_id != 0.
27273         (execute_one_pass): Likewise.
27274         * Makefile.in (DF_H): Add $(TIMEVAR_H).
27275         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
27276         dependencies to $(TREE_PASS_H).
27277         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
27278         to TV_NONE.
27279         (pass_branch_target_load_optimize2): Likewise.
27280         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
27281         (pass_outof_cfg_layout_mode): Likewise.
27282         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
27283         (pass_rebuild_cgraph_edges): Likewise.
27284         (pass_remove_cgraph_callee_edges): Likewise.
27285         * df-core.c (pass_df_initialize_opt): Likewise.
27286         (pass_df_initialize_no_opt): Likewise.
27287         (pass_df_finish): Likewise.
27288         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
27289         * except.c (pass_set_nothrow_function_flags): Likewise.
27290         (pass_convert_to_eh_region_ranges): Likewise.
27291         * final.c (pass_compute_alignments): Likewise.
27292         * function.c (pass_instantiate_virtual_regs): Likewise.
27293         (pass_init_function): Likewise.
27294         (pass_leaf_regs): Likewise.
27295         (pass_match_asm_constraints): Likewise.
27296         * gimple-low.c (pass_lower_cf): Likewise.
27297         (pass_mark_used_blocks): Likewise.
27298         * init-regs.c (pass_initialize_regs): Likewise.
27299         * integrate.c (pass_initial_value_sets): Likewise.
27300         * ira.c (pass_ira): Likewise.
27301         * jump.c (pass_cleanup_barriers): Likewise.
27302         * omp-low.c (pass_expand_omp): Likewise.
27303         (pass_lower_omp): Likewise.
27304         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
27305         * recog.c (pass_split_all_insns): Likewise.
27306         (pass_split_after_reload): Likewise.
27307         (pass_split_before_regstack): Likewise.
27308         (pass_split_before_sched2): Likewise.
27309         (pass_split_for_shorten_branches): Likewise.
27310         * reginfo.c (pass_reginfo_init): Likewise.
27311         (pass_subregs_of_mode_init): Likewise.
27312         (pass_subregs_of_mode_finish): Likewise.
27313         * passes.c (pass_postreload): Likewise.
27314         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
27315         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
27316         (pass_warn_function_return): Likewise.
27317         (pass_warn_function_noreturn): Likewise.
27318         * tree-complex.c (pass_lower_complex): Likewise.
27319         (pass_lower_complex_O0): Likewise.
27320         * tree-if-conv.c (pass_if_conversion): Likewise.
27321         * tree-into-ssa.c (pass_build_ssa): Likewise.
27322         * tree-mudflap.c (pass_mudflap_1): Likewise.
27323         (pass_mudflap_2): Likewise.
27324         * tree-nomudflap.c (pass_mudflap_1): Likewise.
27325         (pass_mudflap_2): Likewise.
27326         * tree-nrv.c (pass_return_slot): Likewise.
27327         * tree-object-size.c (pass_object_sizes): Likewise.
27328         * tree-optimize.c (pass_all_optimizations): Likewise.
27329         (pass_early_local_passes): Likewise.
27330         (pass_all_early_optimizations): Likewise.
27331         (pass_cleanup_cfg): Likewise.
27332         (pass_cleanup_cfg_post_optimizing): Likewise.
27333         (pass_free_datastructures): Likewise.
27334         (pass_free_cfg_annotations): Likewise.
27335         (pass_fixup_cfg): Likewise.
27336         (pass_init_datastructures): Likewise.
27337         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
27338         (pass_late_warn_uninitialized): Likewise.
27339         (pass_update_address_taken): Likewise.
27340         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
27341         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
27342         (pass_cse_sincos): Likewise.
27343         (pass_convert_to_rsqrt): Likewise.
27344         * tree-ssa-structalias.c (pass_build_alias): Likewise.
27345         * tree-stdarg.c (pass_stdarg): Likewise.
27346         * tree-tailcall.c (pass_tail_recursion): Likewise.
27347         (pass_tail_calls): Likewise.
27348         * tree-vect-generic.c (pass_lower_vector): Likewise.
27349         (pass_lower_vector_ssa): Likewise.
27350         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
27351
27352 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
27353
27354         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
27355         XLR entry.
27356         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
27357         Handle -march=xlr.
27358         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
27359         logical and signext.
27360
27361 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
27362
27363         PR target/39767
27364         * config/sh/predicates.md (arith_operand): Check if the operand
27365         of TRUNCATE is a REG.
27366
27367 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27368
27369         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
27370         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
27371
27372 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27373
27374         * tree-iterator.c (tsi_split_statement_list_after,
27375         tsi_split_statement_list_before): Remove.
27376         * tree-iterator.h: Remove the prototypes for
27377         tsi_split_statement_list_after and tsi_split_statement_list_before.
27378
27379 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27380
27381         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
27382         * tree-ssa-propagate.h: Remove the prototype for
27383         stmt_makes_single_load.
27384
27385 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27386
27387         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
27388         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
27389
27390 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27391
27392         * tree-iterator.c (EXPR_LAST_BODY): Remove.
27393
27394 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27395
27396         * except.c (eh_region_outer_p): Remove.
27397         * except.h: Remove the prototype for eh_region_outer_p.
27398
27399 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
27400
27401         * function.c (current_function_assembler_name): Remove.
27402         * function.h: Remove the prototype for
27403         current_function_assembler_name.
27404
27405 2009-04-16  Ian Lance Taylor  <iant@google.com>
27406
27407         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
27408         (add_reg_note): Call alloc_reg_note.
27409         * rtl.h (alloc_reg_note): Declare.
27410         * combine.c (try_combine): Use alloc_reg_note.
27411         (recog_for_combine, move_deaths): Likewise.
27412         (distribute_notes): Use alloc_reg_note and add_reg_note.
27413         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
27414         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
27415         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
27416
27417 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
27418
27419         PR rtl-optimization/39762
27420         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
27421         ira_may_move_out_cost): Add comments about way of their usage.
27422         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
27423
27424         * ira-conflicts.c (process_regs_for_copy): Use function
27425         ira_get_register_move_cost instead of global
27426         ira_register_move_cost.
27427
27428         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
27429         color_pass, move_spill_restore, update_curr_costs): Ditto.
27430
27431         * ira-lives.c (process_single_reg_class_operands): Ditto.
27432
27433         * ira-emit.c (emit_move_list): Ditto.
27434
27435         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
27436         (record_reg_classes): Ditto.  Use functions
27437         ira_get_register_move_cost and ira_get_may_move_cost instead of
27438         global vars ira_register_move_cost, ira_may_move_out_cost and
27439         ira_may_move_in_cost.
27440         (record_address_regs): Don't call ira_init_register_move_cost.
27441         Use function ira_get_may_move_cost instead of global
27442         ira_may_move_in_cost.
27443         (process_bb_node_for_hard_reg_moves): Use function
27444         ira_get_register_move_cost instead of global ira_register_move_cost.
27445         (ira_costs): Don't call ira_init_register_move_cost.
27446
27447 2009-04-16  Richard Guenther  <rguenther@suse.de>
27448
27449         * tree-cfg.c (verify_gimple_assign_binary):
27450         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
27451         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
27452         (create_general_new_stmt): Note that this function is broken.
27453
27454 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27455
27456         * common.opt (fhelp): Add Var(help_flag).
27457         * gcc-plugin.h (plugin_info): Add help.
27458         * plugin.c (plugin_name_args): Add help.
27459         (register_plugin_info): Set plugin->help.
27460         (print_help_one_plugin): New.
27461         (print_plugins_help): New.
27462         * plugin.h (print_plugins_help): New.
27463         * toplev.c (toplev_main): Call print_plugins_help if needed.
27464
27465 2009-04-16  Richard Guenther  <rguenther@suse.de>
27466
27467         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
27468         (gimple_ior_addresses_taken_1): New function.
27469         (gimple_ior_addresses_taken): Likewise.
27470         * gimple.h (struct gimple_statement_with_ops_base): Remove
27471         addresses_taken member.
27472         (gimple_ior_addresses_taken): Declare.
27473         (gimple_addresses_taken, gimple_addresses_taken_ptr,
27474         gimple_set_addresses_taken): Remove.
27475         * ipa-reference.c (mark_address): New function.
27476         (scan_stmt_for_static_refs): Use it for marking addresses taken.
27477         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
27478         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
27479         (gimple_add_to_addresses_taken): Remove.
27480         (get_tmr_operands): Call mark_address_taken.
27481         (get_asm_expr_operands): Likewise.
27482         (get_expr_operands): Likewise.
27483         (build_ssa_operands): Do not clear the addresses_taken bitmap.
27484         (free_stmt_operands): Do not free it.
27485         * tree-ssa.c (delete_tree_ssa): Likewise.
27486         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
27487
27488 2009-04-16  Richard Guenther  <rguenther@suse.de>
27489
27490         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
27491         (walk_stmt_load_store_ops): Likewise.
27492         * gimple.c (get_base_loadstore): New function.
27493         (walk_stmt_load_store_addr_ops): Likewise.
27494         (walk_stmt_load_store_ops): Likewise.
27495         * ipa-pure-const.c (check_op): Simplify.
27496         (check_load, check_store): New functions.
27497         (check_stmt): Use walk_stmt_load_store_ops.
27498         * ipa-reference.c (mark_load): Adjust signature.
27499         (mark_store): Likewise.
27500         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
27501
27502 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27503
27504         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
27505         (plugin_info): New.
27506         * opts.c (common_handle_option): Don't call print_version.
27507         * plugin.c (plugin_name_args): Add version.
27508         (register_plugin_info): New.
27509         (register_callback): Handle PLUGIN_INFO.
27510         (try_init_one_plugin): New.
27511         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
27512         if failed to init.
27513         (finalize_one_plugin): New.
27514         (finalize_plugins): New.
27515         (print_one_plugin): New.
27516         (print_plugins_versions): New.
27517         * plugin.h (print_plugins_versions): New.
27518         (finalize_plugins): New.
27519         * toplev.c (compile_file): Don't call initialize_plugins.
27520         (print_version): Call print_plugins_versions.
27521         (toplev_main): Call initialize_plugins. Print version if needed.
27522         Call finalize_plugins.
27523
27524 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
27525
27526         * common.opt (fversion): New.
27527         * gcc.c (print_version): New.
27528         (process_command): Don't print the version. Just set print_version.
27529         (main): Print version. Call subprocesses if print_version and
27530         verbose_flag are set.
27531         * opts.c (common_handle_option): Handle OPT_fversion.
27532
27533 2009-04-16  Richard Guenther  <rguenther@suse.de>
27534             Ira Rosen  <irar@il.ibm.com>
27535
27536         PR tree-optimization/39698
27537         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
27538         type of the reduction variable.  Only generate the def if
27539         it is needed.
27540
27541         * omp-low.c (expand_omp_for_generic): When converting to a pointer
27542         make sure to first convert to an integer of the same precision.
27543         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
27544         the type of the evolution correctly in computing the new
27545         induction variable base.
27546
27547 2009-04-16  Richard Guenther  <rguenther@suse.de>
27548
27549         PR middle-end/39625
27550         * tree-cfg.c (make_blocks): Split statements with to-be
27551         abnormal SSA names on the lhs.
27552
27553 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
27554
27555         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
27556         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
27557         * c-typeck.c (really_start_incremental_init): Likewise.
27558         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
27559         (TARGET_INITIALIZER): Remove it.
27560         * target.h (struct target): Remove vector_opaque_p.
27561         * tree.c (build_opaque_vector_type): New.
27562         * tree.h (TYPE_VECTOR_OPAQUE): New.
27563         (build_opaque_vector_type): Declare.
27564         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
27565         * config/rs6000/rs6000.c (build_opaque_vector_type,
27566         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
27567         (rs6000_init_builtins): Use build_opaque_vector_type for
27568         opaque_V4SI_type_node.
27569
27570 2009-04-15  Catherine Moore  <clm@codesourcery.com>
27571
27572         * debug.h (set_name):  Declare.
27573         * dwarf2out.c (dwarf2out_set_name): Declare.
27574         (dwarf2_debug_hooks): Add set_name.
27575         (find_AT_string): New.
27576         (add_AT_string): Call find_AT_string.
27577         (dwarf2out_set_name): New.
27578         * cp/decl.c (grokdeclarator): Call set_name.
27579         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
27580         * debug.c (do_nothing_debug_hooks):  Likewise.
27581         * dbxout.c (dbx_debug_hooks): Likewise.
27582         * sdbout.c (sdb_debug_hooks): Likewise.
27583
27584 2009-04-15  Michael Eager  <eager@eagercon.com>
27585
27586         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
27587         reg for single-precision FPU.
27588         * config/rs6000/rs6000.md (movsi_internal1): Only for
27589         !TARGET_SINGLE_FPU.
27590         (movsi_internal1_single): New. Add pattern to move SI values to/from
27591         single-precision FP regs.
27592
27593 2009-04-15  Richard Guenther  <rguenther@suse.de>
27594
27595         * omp-low.c (lower_rec_input_clauses): Build correct address
27596         expressions.
27597         (expand_omp_for_generic): Fix multiplication type.
27598         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
27599         (generate_memset_zero): Fix types.
27600         * tree-profile.c (prepare_instrumented_value): Correctly
27601         widen a pointer.
27602
27603 2009-04-15  Ian Lance Taylor  <iant@google.com>
27604
27605         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
27606         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
27607         for -Wall and for -Wc++-compat.
27608         (c_common_post_options): For C++, set warn_enum_compare if not
27609         already set.
27610         * c-tree.h (struct c_expr): Add field original_type.
27611         (build_external_ref): Update declaration.
27612         * c-parser.c (c_parser_braced_init): Set original_type.
27613         (c_parser_initelt): Likewise.
27614         (c_parser_expr_no_commas): Likewise.
27615         (c_parser_conditional_expression): Likewise.
27616         (c_parser_cast_expression): Likewise.
27617         (c_parser_unary_expression): Likewise.  Pull setting of
27618         original_code to top of function.
27619         (c_parser_sizeof_expression): Set original_type.
27620         (c_parser_alignof_expression): Likewise.
27621         (c_parser_postfix_expression): Likewise.  Pull setting of
27622         original_code to top of function.
27623         (c_parser_postfix_expression_after_paren_type): Set original_type.
27624         (c_parser_postfix_expression_after_primary): Likewise.
27625         (c_parser_expression): Likewise.
27626         * c-typeck.c (build_external_ref): Add type parameter.  Change all
27627         callers.
27628         (c_expr_sizeof_expr): Set original_type field.
27629         (parser_build_unary_op): Likewise.
27630         (parser_build_binary_op): Likewise.  Optionally warn about
27631         comparisons of enums of different types.
27632         (digest_init): Set original_type field.
27633         (really_start_incremental_init): Likewise.
27634         (push_init_level, pop_init_level): Likewise.
27635         * doc/invoke.texi (Warning Options): -Wenum-compare now
27636         supported in C.
27637
27638 2009-04-15  Richard Guenther  <rguenther@suse.de>
27639
27640         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
27641         out a necessary conversion.
27642         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
27643         names we didn't value number.
27644         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
27645
27646 2009-04-15  Richard Guenther  <rguenther@suse.de>
27647
27648         PR tree-optimization/39764
27649         * tree-ssa-ccp.c (get_value): Canonicalize value with
27650         canonicalize_float_value.
27651
27652 2009-04-15  Jan Hubicka  <jh@suse.cz>
27653
27654         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
27655         Wrong version of patch.
27656
27657 2009-04-15  Jan Hubicka  <jh@suse.cz>
27658
27659         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
27660
27661 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
27662
27663         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
27664         our distinct integral and vector types.
27665
27666 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
27667
27668         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
27669         * init.c (build_vtbl_address): Remove call to assemble_external.
27670
27671 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
27672
27673         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
27674         output for other floating point modes.
27675
27676 2009-04-14  Diego Novillo  <dnovillo@google.com>
27677
27678         * diagnostic.c (diagnostic_report_diagnostic): Do not
27679         warn about loaded plugins for DK_ERROR and DK_WARNING.
27680         * c-decl.c (declspecs_add_type): Move call to
27681         invoke_plugin_callbacks ...
27682         * c-parser.c (c_parser_declspecs): ... here.
27683         * plugin.c (dump_active_plugins): Tidy output.
27684
27685 2009-04-14  Diego Novillo  <dnovillo@google.com>
27686             Le-Chun Wu  <lcwu@google.com>
27687
27688         * configure.ac: Add --enable-plugin support.
27689         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
27690         * Makefile.in (PLUGIN_H): Define.
27691         Export ENABLE_PLUGIN and GMPINC to site.exp.
27692         Add PLUGINLIBS to link command.
27693         Add/modify dependencies for plugin.o and files including plugin.h.
27694         (plugin.o): New.
27695         * config.in: Regenerate.
27696
27697         * opts.c (common_handle_option): Handle OPT_fplugin_ and
27698         OPT_fplugin_arg_.
27699
27700 2009-04-14  Le-Chun Wu  <lcwu@google.com>
27701
27702         * tree-pass.h (register_one_dump_file): Add a prototype for
27703         register_one_dump_file.
27704         * toplev.c (compile_file): Call initialize_plugins.
27705         (do_compile): Call invoke_plugin_callbacks.
27706         (toplev_main): Call invoke_plugin_callbacks.
27707         * common.opt: Add -fplugin= and -fplugin-arg-.
27708         * gcc-plugin.h: New public header file for plugins to include.
27709         * plugin.c: New source file.
27710         * plugin.h: New internal header file.
27711         * passes.c (register_one_dump_file): Make it external.
27712
27713         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
27714
27715 2009-04-14  Diego Novillo  <dnovillo@google.com>
27716
27717         * doc/plugins.texi: New.
27718         * doc/gccint.texi: Add reference to Plugins chapter.
27719         * doc/invoke.texi: Document -fplugin and -fplugin-arg
27720         * diagnostic.c (diagnostic_report_diagnostic): Warn about
27721         loaded plugins, if any.
27722         * timevar.def (TV_PLUGIN_INIT): Define.
27723         (TV_PLUGIN_RUN): Define.
27724         * plugin.c: Include timevar.h
27725         (plugins_active_p): New.
27726         (dump_active_plugins): New.
27727         (debug_active_plugins): New.
27728
27729 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
27730
27731         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
27732         library paths.
27733         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
27734
27735 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
27736
27737         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
27738         the same as a minus without a shift.
27739
27740 2009-04-14  Nick Clifton  <nickc@redhat.com>
27741
27742         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
27743         comparisons with small integers will always produce a short
27744         branch.
27745
27746 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
27747
27748         Merge:
27749         2008-12-19  Diego Novillo  <dnovillo@google.com>
27750
27751         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
27752
27753 2009-04-14  Richard Guenther  <rguenther@suse.de>
27754
27755         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
27756         verification.
27757         (verify_gimple_assign_binary): Likewise.  Handle shifts and
27758         rotates correctly.
27759         (verify_gimple_phi): Print the mismatched argument position.
27760         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
27761         Fix types.
27762         (vect_update_init_of_dr): Likewise.
27763         * matrix-reorg.c (transform_access_sites): Do what the
27764         comment suggests.
27765         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
27766
27767 2009-04-13  Michael Eager  <eager@eagercon.com>
27768
27769         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
27770         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
27771         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
27772         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
27773         remove duplicate config
27774
27775 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
27776
27777         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
27778         file_name:line_number type locator of the call site.
27779
27780 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
27781
27782         * genautomata.c: Put blank after comma.
27783         (automaton_decls): New.
27784         (struct unit_usage): Add comments to member next.
27785         (store_alt_unit_usage): Keep the list ordered.
27786         (unit_present_on_list_p, equal_alternatives_p): New.
27787         (check_regexp_units_distribution): Check units distribution
27788         correctness correctly.
27789         (main): Don't write automata if error is found.  Return correct
27790         exit code.
27791
27792         * config/m68k/cf.md (cfv4_ds): Remove.
27793         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
27794         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
27795
27796         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
27797         power4-load-ext, power4-store, power4-store-update,
27798         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
27799         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
27800         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
27801         power4-sqrt, power4-isync): Modify reservation to make correct
27802         unit distribution to automata.
27803
27804         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
27805         power5-store-update, power5-two, power5-three, power5-lmul,
27806         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
27807
27808 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
27809
27810         * except.c (pass_set_nothrow_function_flags): Set name and add
27811         TODO_dump_func.
27812         (set_nothrow_function_flags): Mention in the dump file when
27813         changing a function to nothrow.
27814
27815 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
27816
27817         PR/39066
27818         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
27819         instead of unsigned long.
27820
27821 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27822
27823         * config/arm/arm.c (return_used_this_function): Remove.
27824         (arm_output_function_prologue): Remove use of
27825         return_used_this_function.
27826         (output_return_instruction): Replace use of
27827         return_used_this_function
27828         by cfun->machine->return_used_this_function.
27829         (arm_output_epilogue): Likewise.
27830         (arm_output_function_epilogue): Likewise.
27831         (thumb_unexpanded_epilogue): Likewise.
27832         * config/arm/arm.h (struct machine_function):
27833         New member return_used_this_function.
27834
27835 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
27836
27837         * doc/install.texi: Correct description of default directory for
27838         --with-gxx-include-dir.
27839
27840 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
27841
27842         * fold-const.c (build_range_check): Properly deal with enumeral and
27843         boolean base types.
27844
27845 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
27846
27847         * doc/invoke.texi (max_gcse_passes): Remove documentation.
27848         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
27849         * params.h (MAX_GCSE_PASSES): Remove.
27850         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
27851         in sequence.  Remove ability to run multiple passes.
27852         (bypass_jumps): Report run as third CPROP pass.
27853
27854 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
27855
27856         PR middle-end/39651
27857         * except.c (can_throw_external): Look at each insn in a SEQUENCE
27858         when deciding whether the whole SEQUENCE can throw.
27859
27860 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
27861
27862         PR target/39740
27863         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
27864         offseted label references.
27865
27866 2009-04-11  Jan Hubicka  <jh@suse.cz>
27867
27868         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
27869
27870 2009-04-11  Richard Guenther  <rguenther@suse.de>
27871
27872         PR middle-end/39732
27873         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
27874         return variables as TREE_ADDRESSABLE.
27875
27876 2009-04-11  Richard Guenther  <rguenther@suse.de>
27877
27878         PR tree-optimization/39713
27879         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
27880         reference trees have SSA_NAME operands.
27881
27882 2009-04-11  Richard Guenther  <rguenther@suse.de>
27883
27884         PR c/39712
27885         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
27886         address expressions.
27887
27888 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
27889
27890         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
27891         match changes in Cygwin 1.7
27892         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27893         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
27894
27895 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27896
27897         PR tree-optimization/39701
27898         * doc/invoke.texi (Optimization Options): Document change in
27899         meaning and initialization of -fdelete-null-pointer-checks.
27900
27901 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27902
27903         PR middle-end/39701
27904         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
27905
27906         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
27907         here.
27908
27909         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
27910
27911 2009-04-10  Chao-ying Fu  <fu@mips.com>
27912
27913         * doc/tm.texi (Instruction Output): Document
27914         TARGET_ASM_FINAL_POSTSCAN_INSN.
27915         * target.h (final_postscan_insn): New field in asm_out.
27916         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27917         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
27918         * final.c (final_scan_insn): Call
27919         targetm.asm_out.final_postscan_insn after outputting
27920         an asm macro and a normal instruction.
27921
27922         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
27923         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
27924         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
27925         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
27926         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27927
27928 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27929
27930         PR middle-end/39701
27931         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
27932         variables as non-NULL even with -fdelete-null-pointer-checks.
27933
27934 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27935
27936         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
27937
27938 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
27939
27940         PR target/39678
27941         * config/i386/i386.c (classify_argument): Handle SCmode with
27942         (bit_offset % 64) != 0.
27943
27944 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
27945
27946         * doc/invoke.texi (Optimize Options): Add cross-reference to
27947         -Q --help=optimizers examples.
27948
27949 2009-04-10  Ben Elliston  <bje@au.ibm.com>
27950
27951         PR target/36800
27952         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
27953         regalign for the reg == fpr and TDmode case.
27954
27955 2009-04-09  David Ayers  <ayers@fsfe.org>
27956
27957         PR objc/29200
27958         * objc/objc-act.c (warn_with_method): Remove helper function.
27959         (check_duplicates): Call warning and inform directly.
27960         (really_start_method): Likewise.
27961
27962 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27963
27964         * expmed.c (expand_divmod): Always use a comparison for a division
27965         by a large unsigned integer.
27966
27967         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
27968         for things others than variables or functions as nonzero.
27969
27970 2009-04-09  Nick Clifton  <nickc@redhat.com>
27971
27972         * unwind-compat.c: Change copyright header to refer to version
27973         3 of the GNU General Public License with version 3.1 of the
27974         GCC Runtime Library Exception and to point readers at the
27975         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
27976         * config/alpha/crtfastmath.c: Likewise.
27977         * config/alpha/linux-unwind.h: Likewise.
27978         * config/alpha/qrnnd.asm: Likewise.
27979         * config/alpha/vms-crt0-64.c: Likewise.
27980         * config/alpha/vms-crt0.c: Likewise.
27981         * config/alpha/vms-dwarf2.asm: Likewise.
27982         * config/alpha/vms-dwarf2eh.asm: Likewise.
27983         * config/alpha/vms-psxcrt0-64.c: Likewise.
27984         * config/alpha/vms-psxcrt0.c: Likewise.
27985         * config/alpha/vms_tramp.asm: Likewise.
27986         * config/arc/initfini.c: Likewise.
27987         * config/arc/lib1funcs.asm: Likewise.
27988         * config/arm/bpabi-v6m.S: Likewise.
27989         * config/arm/bpabi.S: Likewise.
27990         * config/arm/bpabi.c: Likewise.
27991         * config/arm/crti.asm: Likewise.
27992         * config/arm/crtn.asm: Likewise.
27993         * config/arm/ieee754-df.S: Likewise.
27994         * config/arm/ieee754-sf.S: Likewise.
27995         * config/arm/lib1funcs.asm: Likewise.
27996         * config/arm/libunwind.S: Likewise.
27997         * config/arm/linux-atomic.c: Likewise.
27998         * config/arm/mmintrin.h: Likewise.
27999         * config/arm/pr-support.c: Likewise.
28000         * config/arm/unaligned-funcs.c: Likewise.
28001         * config/arm/unwind-arm.c: Likewise.
28002         * config/arm/unwind-arm.h: Likewise.
28003         * config/avr/libgcc.S: Likewise.
28004         * config/bfin/crti.s: Likewise.
28005         * config/bfin/crtlibid.s: Likewise.
28006         * config/bfin/crtn.s: Likewise.
28007         * config/bfin/lib1funcs.asm: Likewise.
28008         * config/bfin/linux-unwind.h: Likewise.
28009         * config/cris/arit.c: Likewise.
28010         * config/cris/cris_abi_symbol.c: Likewise.
28011         * config/darwin-64.c: Likewise.
28012         * config/darwin-crt2.c: Likewise.
28013         * config/darwin-crt3.c: Likewise.
28014         * config/darwin.h: Likewise.
28015         * config/dbxelf.h: Likewise.
28016         * config/dfp-bit.c: Likewise.
28017         * config/dfp-bit.h: Likewise.
28018         * config/elfos.h: Likewise.
28019         * config/fixed-bit.c: Likewise.
28020         * config/fixed-bit.h: Likewise.
28021         * config/fp-bit.c: Likewise.
28022         * config/fp-bit.h: Likewise.
28023         * config/fr30/crti.asm: Likewise.
28024         * config/fr30/crtn.asm: Likewise.
28025         * config/fr30/lib1funcs.asm: Likewise.
28026         * config/freebsd-spec.h: Likewise.
28027         * config/frv/cmovd.c: Likewise.
28028         * config/frv/cmovh.c: Likewise.
28029         * config/frv/cmovw.c: Likewise.
28030         * config/frv/frvbegin.c: Likewise.
28031         * config/frv/frvend.c: Likewise.
28032         * config/frv/lib1funcs.asm: Likewise.
28033         * config/glibc-stdint.h: Likewise.
28034         * config/h8300/clzhi2.c: Likewise.
28035         * config/h8300/crti.asm: Likewise.
28036         * config/h8300/crtn.asm: Likewise.
28037         * config/h8300/ctzhi2.c: Likewise.
28038         * config/h8300/fixunssfsi.c: Likewise.
28039         * config/h8300/lib1funcs.asm: Likewise.
28040         * config/h8300/parityhi2.c: Likewise.
28041         * config/h8300/popcounthi2.c: Likewise.
28042         * config/i386/ammintrin.h: Likewise.
28043         * config/i386/att.h: Likewise.
28044         * config/i386/avxintrin.h: Likewise.
28045         * config/i386/biarch64.h: Likewise.
28046         * config/i386/bmmintrin.h: Likewise.
28047         * config/i386/cpuid.h: Likewise.
28048         * config/i386/cross-stdarg.h: Likewise.
28049         * config/i386/crtfastmath.c: Likewise.
28050         * config/i386/crtprec.c: Likewise.
28051         * config/i386/cygming-crtbegin.c: Likewise.
28052         * config/i386/cygming-crtend.c: Likewise.
28053         * config/i386/cygwin.asm: Likewise.
28054         * config/i386/emmintrin.h: Likewise.
28055         * config/i386/gmm_malloc.h: Likewise.
28056         * config/i386/gthr-win32.c: Likewise.
28057         * config/i386/i386.h: Likewise.
28058         * config/i386/immintrin.h: Likewise.
28059         * config/i386/linux-unwind.h: Likewise.
28060         * config/i386/linux64.h: Likewise.
28061         * config/i386/mm3dnow.h: Likewise.
28062         * config/i386/mmintrin-common.h: Likewise.
28063         * config/i386/mmintrin.h: Likewise.
28064         * config/i386/nmmintrin.h: Likewise.
28065         * config/i386/pmm_malloc.h: Likewise.
28066         * config/i386/pmmintrin.h: Likewise.
28067         * config/i386/smmintrin.h: Likewise.
28068         * config/i386/sol2-c1.asm: Likewise.
28069         * config/i386/sol2-ci.asm: Likewise.
28070         * config/i386/sol2-cn.asm: Likewise.
28071         * config/i386/sol2-gc1.asm: Likewise.
28072         * config/i386/tmmintrin.h: Likewise.
28073         * config/i386/unix.h: Likewise.
28074         * config/i386/w32-unwind.h: Likewise.
28075         * config/i386/wmmintrin.h: Likewise.
28076         * config/i386/x86-64.h: Likewise.
28077         * config/i386/x86intrin.h: Likewise.
28078         * config/i386/xmmintrin.h: Likewise.
28079         * config/ia64/crtbegin.asm: Likewise.
28080         * config/ia64/crtend.asm: Likewise.
28081         * config/ia64/crtfastmath.c: Likewise.
28082         * config/ia64/crti.asm: Likewise.
28083         * config/ia64/crtn.asm: Likewise.
28084         * config/ia64/fde-glibc.c: Likewise.
28085         * config/ia64/lib1funcs.asm: Likewise.
28086         * config/ia64/linux-unwind.h: Likewise.
28087         * config/ia64/quadlib.c: Likewise.
28088         * config/ia64/unwind-ia64.c: Likewise.
28089         * config/linux.h: Likewise.
28090         * config/m32c/m32c-lib1.S: Likewise.
28091         * config/m32c/m32c-lib2-trapv.c: Likewise.
28092         * config/m32c/m32c-lib2.c: Likewise.
28093         * config/m32r/initfini.c: Likewise.
28094         * config/m68hc11/larith.asm: Likewise.
28095         * config/m68hc11/m68hc11-crt0.S: Likewise.
28096         * config/m68k/cf.md: Likewise.
28097         * config/m68k/crti.s: Likewise.
28098         * config/m68k/crtn.s: Likewise.
28099         * config/m68k/lb1sf68.asm: Likewise.
28100         * config/m68k/linux-unwind.h: Likewise.
28101         * config/mcore/crti.asm: Likewise.
28102         * config/mcore/crtn.asm: Likewise.
28103         * config/mcore/lib1.asm: Likewise.
28104         * config/mips/linux-unwind.h: Likewise.
28105         * config/mips/loongson.h: Likewise.
28106         * config/mips/mips16.S: Likewise.
28107         * config/mmix/crti.asm: Likewise.
28108         * config/mmix/crtn.asm: Likewise.
28109         * config/pa/fptr.c: Likewise.
28110         * config/pa/hpux-unwind.h: Likewise.
28111         * config/pa/lib2funcs.asm: Likewise.
28112         * config/pa/linux-atomic.c: Likewise.
28113         * config/pa/linux-unwind.h: Likewise.
28114         * config/pa/milli64.S: Likewise.
28115         * config/pa/quadlib.c: Likewise.
28116         * config/pa/stublib.c: Likewise.
28117         * config/picochip/libgccExtras/adddi3.asm: Likewise.
28118         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
28119         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
28120         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
28121         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
28122         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
28123         * config/picochip/libgccExtras/divmod15.asm: Likewise.
28124         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
28125         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
28126         * config/picochip/libgccExtras/longjmp.asm: Likewise.
28127         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
28128         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
28129         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
28130         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
28131         * config/picochip/libgccExtras/setjmp.asm: Likewise.
28132         * config/picochip/libgccExtras/subdi3.asm: Likewise.
28133         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
28134         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
28135         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
28136         * config/rs6000/750cl.h: Likewise.
28137         * config/rs6000/altivec.h: Likewise.
28138         * config/rs6000/biarch64.h: Likewise.
28139         * config/rs6000/crtresfpr.asm: Likewise.
28140         * config/rs6000/crtresgpr.asm: Likewise.
28141         * config/rs6000/crtresxfpr.asm: Likewise.
28142         * config/rs6000/crtresxgpr.asm: Likewise.
28143         * config/rs6000/crtsavfpr.asm: Likewise.
28144         * config/rs6000/crtsavgpr.asm: Likewise.
28145         * config/rs6000/darwin-asm.h: Likewise.
28146         * config/rs6000/darwin-fallback.c: Likewise.
28147         * config/rs6000/darwin-fpsave.asm: Likewise.
28148         * config/rs6000/darwin-ldouble.c: Likewise.
28149         * config/rs6000/darwin-tramp.asm: Likewise.
28150         * config/rs6000/darwin-unwind.h: Likewise.
28151         * config/rs6000/darwin-vecsave.asm: Likewise.
28152         * config/rs6000/darwin-world.asm: Likewise.
28153         * config/rs6000/e500crtres32gpr.asm: Likewise.
28154         * config/rs6000/e500crtres64gpr.asm: Likewise.
28155         * config/rs6000/e500crtres64gprctr.asm: Likewise.
28156         * config/rs6000/e500crtrest32gpr.asm: Likewise.
28157         * config/rs6000/e500crtrest64gpr.asm: Likewise.
28158         * config/rs6000/e500crtresx32gpr.asm: Likewise.
28159         * config/rs6000/e500crtresx64gpr.asm: Likewise.
28160         * config/rs6000/e500crtsav32gpr.asm: Likewise.
28161         * config/rs6000/e500crtsav64gpr.asm: Likewise.
28162         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
28163         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
28164         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
28165         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
28166         * config/rs6000/eabi-ci.asm: Likewise.
28167         * config/rs6000/eabi-cn.asm: Likewise.
28168         * config/rs6000/eabi.asm: Likewise.
28169         * config/rs6000/linux-unwind.h: Likewise.
28170         * config/rs6000/linux64.h: Likewise.
28171         * config/rs6000/paired.h: Likewise.
28172         * config/rs6000/paired.md: Likewise.
28173         * config/rs6000/ppc64-fp.c: Likewise.
28174         * config/rs6000/ppu_intrinsics.h: Likewise.
28175         * config/rs6000/rs6000.h: Likewise.
28176         * config/rs6000/si2vmx.h: Likewise.
28177         * config/rs6000/sol-ci.asm: Likewise.
28178         * config/rs6000/sol-cn.asm: Likewise.
28179         * config/rs6000/spe.h: Likewise.
28180         * config/rs6000/spu2vmx.h: Likewise.
28181         * config/rs6000/sysv4.h: Likewise.
28182         * config/rs6000/tramp.asm: Likewise.
28183         * config/rs6000/vec_types.h: Likewise.
28184         * config/s390/linux-unwind.h: Likewise.
28185         * config/s390/tpf-unwind.h: Likewise.
28186         * config/score/crti.asm: Likewise.
28187         * config/score/crtn.asm: Likewise.
28188         * config/sh/crt1.asm: Likewise.
28189         * config/sh/crti.asm: Likewise.
28190         * config/sh/crtn.asm: Likewise.
28191         * config/sh/divtab-sh4-300.c: Likewise.
28192         * config/sh/divtab-sh4.c: Likewise.
28193         * config/sh/divtab.c: Likewise.
28194         * config/sh/lib1funcs-4-300.asm: Likewise.
28195         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
28196         * config/sh/lib1funcs.asm: Likewise.
28197         * config/sh/lib1funcs.h: Likewise.
28198         * config/sh/linux-atomic.asm: Likewise.
28199         * config/sh/linux-unwind.h: Likewise.
28200         * config/sh/shmedia.h: Likewise.
28201         * config/sh/sshmedia.h: Likewise.
28202         * config/sh/ushmedia.h: Likewise.
28203         * config/sparc/crtfastmath.c: Likewise.
28204         * config/sparc/linux-unwind.h: Likewise.
28205         * config/sparc/sol2-c1.asm: Likewise.
28206         * config/sparc/sol2-ci.asm: Likewise.
28207         * config/sparc/sol2-cn.asm: Likewise.
28208         * config/spu/divmodti4.c: Likewise.
28209         * config/spu/divv2df3.c: Likewise.
28210         * config/spu/float_disf.c: Likewise.
28211         * config/spu/float_unsdidf.c: Likewise.
28212         * config/spu/float_unsdisf.c: Likewise.
28213         * config/spu/float_unssidf.c: Likewise.
28214         * config/spu/mfc_multi_tag_release.c: Likewise.
28215         * config/spu/mfc_multi_tag_reserve.c: Likewise.
28216         * config/spu/mfc_tag_release.c: Likewise.
28217         * config/spu/mfc_tag_reserve.c: Likewise.
28218         * config/spu/mfc_tag_table.c: Likewise.
28219         * config/spu/multi3.c: Likewise.
28220         * config/spu/spu_internals.h: Likewise.
28221         * config/spu/spu_intrinsics.h: Likewise.
28222         * config/spu/spu_mfcio.h: Likewise.
28223         * config/spu/vec_types.h: Likewise.
28224         * config/spu/vmx2spu.h: Likewise.
28225         * config/stormy16/stormy16-lib2.c: Likewise.
28226         * config/svr4.h: Likewise.
28227         * config/sync.c: Likewise.
28228         * config/v850/lib1funcs.asm: Likewise.
28229         * config/vxlib-tls.c: Likewise.
28230         * config/vxlib.c: Likewise.
28231         * config/vxworks-dummy.h: Likewise.
28232         * config/xtensa/crti.asm: Likewise.
28233         * config/xtensa/crtn.asm: Likewise.
28234         * config/xtensa/ieee754-df.S: Likewise.
28235         * config/xtensa/ieee754-sf.S: Likewise.
28236         * config/xtensa/lib1funcs.asm: Likewise.
28237         * config/xtensa/lib2funcs.S: Likewise.
28238         * config/xtensa/linux-unwind.h: Likewise.
28239         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
28240         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
28241         * coretypes.h: Likewise.
28242         * crtstuff.c: Likewise.
28243         * defaults.h: Likewise.
28244         * dwarf2.h: Likewise.
28245         * emutls.c: Likewise.
28246         * gbl-ctors.h: Likewise.
28247         * gcov-io.h: Likewise.
28248         * ginclude/float.h: Likewise.
28249         * ginclude/iso646.h: Likewise.
28250         * ginclude/stdarg.h: Likewise.
28251         * ginclude/stdbool.h: Likewise.
28252         * ginclude/stddef.h: Likewise.
28253         * ginclude/stdfix.h: Likewise.
28254         * ginclude/stdint-gcc.h: Likewise.
28255         * ginclude/tgmath.h: Likewise.
28256         * gthr-aix.h: Likewise.
28257         * gthr-dce.h: Likewise.
28258         * gthr-gnat.c: Likewise.
28259         * gthr-gnat.h: Likewise.
28260         * gthr-lynx.h: Likewise.
28261         * gthr-mipssde.h: Likewise.
28262         * gthr-nks.h: Likewise.
28263         * gthr-posix.c: Likewise.
28264         * gthr-posix.h: Likewise.
28265         * gthr-posix95.h: Likewise.
28266         * gthr-rtems.h: Likewise.
28267         * gthr-single.h: Likewise.
28268         * gthr-solaris.h: Likewise.
28269         * gthr-tpf.h: Likewise.
28270         * gthr-vxworks.h: Likewise.
28271         * gthr-win32.h: Likewise.
28272         * gthr.h: Likewise.
28273         * libgcc2.c: Likewise.
28274         * libgcc2.h: Likewise.
28275         * libgcov.c: Likewise.
28276         * tsystem.h: Likewise.
28277         * typeclass.h: Likewise.
28278         * unwind-c.c: Likewise.
28279         * unwind-compat.h: Likewise.
28280         * unwind-dw2-fde-compat.c: Likewise.
28281         * unwind-dw2-fde-darwin.c: Likewise.
28282         * unwind-dw2-fde-glibc.c: Likewise.
28283         * unwind-dw2-fde.c: Likewise.
28284         * unwind-dw2-fde.h: Likewise.
28285         * unwind-dw2.c: Likewise.
28286         * unwind-dw2.h: Likewise.
28287         * unwind-generic.h: Likewise.
28288         * unwind-pe.h: Likewise.
28289         * unwind-sjlj.c: Likewise.
28290         * unwind.inc: Likewise.
28291         * config/arm/neon-gen.ml: Change generated copyright header to
28292         refer to version 3 of the GNU General Public License with
28293         version 3.1 of the GCC Runtime Library Exception and to point
28294         readers at the COPYING3 and COPYING3.RUNTIME files and the
28295         FSF's license web page.
28296         * config/arm/arm_neon.h: Regenerate.
28297
28298 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
28299
28300         * config/cris/cris.md: Change copyright header to refer to version
28301         3 of the GNU General Public License.
28302         * doc/install.texi2html: Change copyright header to refer to version
28303         3 of the GNU General Public License and to point readers at the
28304         COPYING3 file and the FSF's license web page.
28305         * config/vax/linux.h: Likewise.
28306
28307 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
28308
28309         * config/i386/i386.md (cmpcc): New.
28310         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
28311         (sync_compare_and_swap_cc*): Delete.
28312
28313         * config/s390/s390.c (s390_compare_emitted): Remove.
28314         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
28315         s390_compare_emitted used to be handled.  Assert that modes match.
28316         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
28317         refer to sync_compare_and_swap_ccsi.
28318         * config/s390/s390.h (s390_compare_emitted): Remove.
28319         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
28320         instead of s390_compare_emitted.
28321         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
28322         instead of s390_compare_emitted.
28323         * config/s390/s390.md (cmpcc): New.
28324         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
28325         CC_REGNUM, do not pretend it's set.
28326         (sync_compare_and_swap_cc*): Delete.
28327         * config/s390/predicates.md (cc_reg_operand): New.
28328
28329         * expr.c (sync_compare_and_swap_cc): Delete.
28330         * optabs.h (sync_compare_and_swap_cc): Delete.
28331         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
28332         is being used with can_compare_p.
28333         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
28334         (find_cc_set): New.
28335         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
28336         look for a MODE_CC set instead.  Use emit_store_flag.
28337         (expand_compare_and_swap_loop): Likewise, with some additional
28338         complication to avoid a force_reg when useless.  Use
28339         emit_cmp_and_jump_insns.
28340         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
28341         * doc/md.texi (sync_compare_and_swap_cc): Merge with
28342         sync_compare_and_swap documentation.
28343
28344 2009-04-09  Jan Hubicka  <jh@suse.cz>
28345
28346         * except.c (find_prev_try): Break out from ....
28347         (duplicate_eh_regions): ... here; properly update prev_try pointers
28348         when duplication part of tree.
28349         (dump_eh_tree): Improve dumping.
28350         (verify_eh_region): New.
28351         (verify_eh_tree): Use it.
28352
28353 2009-04-06  Richard Guenther  <rguenther@suse.de>
28354
28355         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
28356         &ARRAY addresses by adjusting their types and prepending
28357         a conversion.
28358         * tree-cfg.c (verify_gimple_assign_single): Verify that
28359         addresses are correct.
28360
28361 2009-04-09  Richard Guenther  <rguenther@suse.de>
28362
28363         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
28364         indices into an array reference if possible.
28365         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
28366         Fold POINTER_PLUS_EXPR statements with invariant address.
28367
28368 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
28369
28370         PR target/39634
28371         * config.gcc (powerpc64-*-linux*): Always build biarch.
28372
28373 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
28374
28375         PR c/39613
28376         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
28377         it and pedwarn if this results in an INTEGER_CST.
28378
28379 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
28380
28381         * doc/install.texi: Update minimum GMP version.  Remove obsolete
28382         text in MPFR section.
28383
28384 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
28385
28386         * dwarf2out.c (class_scope_p): New static inline.
28387         (class_or_namespace_scope_p): Use it.
28388         (gen_variable_die): Use DW_TAG_member tag for static data member
28389         declarations instead of DW_TAG_variable.
28390
28391         PR middle-end/39573
28392         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
28393         variables.
28394
28395 2009-04-08  Richard Guenther  <rguenther@suse.de>
28396
28397         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
28398         valueize random data.
28399
28400 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
28401
28402         * config.gcc (aix tm_file):  Add aix-stdint.h.
28403         (aix tm clause use_gcc_stdint):  Set to wrap.
28404         * config/rs6000/aix-stdint.h:  New file.
28405
28406 2009-04-08  Richard Guenther  <rguenther@suse.de>
28407
28408         PR middle-end/36291
28409         * tree-dfa.c (add_referenced_var): Do not recurse into
28410         global initializers.
28411         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
28412         exposed variables.
28413         (fold_const_aggregate_ref): Likewise.
28414
28415 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
28416
28417         * recog.c (ordered_comparison_operator): New.
28418         * gensupport.c (std_preds): Add it.
28419         * doc/md.texi (Machine-Independent Predicates): Document it.
28420
28421 2009-04-08  Jan Hubicka  <jh@suse.cz>
28422
28423         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
28424         * function.h (rtl_eh): Remove exception_handler_label_map.
28425         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
28426         remove_exception_handler_label, for_each_eh_label_1): Remove.
28427         (rtl_remove_unreachable_regions): Remove.
28428         (convert_from_eh_region_ranges): Do not remove unreachable regions.
28429         (find_exception_handler_labels): Don't build the hashtable.
28430         (maybe_remove_eh_handler): Remove.
28431         (for_each_eh_label): Rewrite to walk the tree.
28432         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
28433         * except.h (maybe_remove_eh_handler): Remove.
28434         * passes.c (init_optimization_passes): Schedule second EH cleanup
28435         before out-of-ssa.
28436         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
28437         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
28438
28439 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
28440
28441         * genoutput.c (validate_optab_operands): New.
28442         (gen_insn, gen_expand): Call it.
28443
28444         * genflags.c (gen_insn): Detect misused iterators.
28445         (main): Pass line_no to gen_insn, exit with status 1 on error.
28446
28447         * genextract.c (line_no): Make global.
28448         (VEC_safe_set_locstr): Change assertion to error message.
28449         (main): Exit with status 1 on error.
28450
28451 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
28452
28453         PR c/39614
28454         PR c/39673
28455         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
28456         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
28457         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
28458         * c-convert.c (convert): Do not call fold on results of conversion
28459         functions when the result is a C_MAYBE_CONST_EXPR.
28460         * c-parser.c (c_parser_postfix_expression): Do not fold condition
28461         of __builtin_choose_expr.
28462         * c-typeck.c (remove_c_maybe_const_expr): New.
28463         (build_unary_op, build_conditional_expr, build_compound_expr,
28464         build_binary_op, c_objc_common_truthvalue_conversion): Call
28465         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
28466         integer operands.
28467
28468 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
28469
28470         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
28471         CODE to produce a new one. Add a prototype to use fold_convert_const
28472
28473 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
28474
28475         PR bootstrap/39660
28476         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
28477         mix declarations and code.
28478
28479 2009-04-08  Ben Elliston  <bje@au.ibm.com>
28480
28481         * gcc.c: Replace `CC' with `GCC' throughout.
28482
28483 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
28484
28485         * doc/invoke.texi: Document Atom support.
28486
28487 2009-04-07  Jason Merrill  <jason@redhat.com>
28488
28489         PR c++/25185
28490         * c-common.h, c-common.c: Add flag_pretty_templates.
28491         * c-opts.c (c_common_handle_option): Set it.
28492         * c.opt: Add -fno-pretty-templates.
28493         * doc/invoke.texi (C++ Dialect Options): Likewise.
28494
28495 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
28496
28497         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
28498         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
28499         (ia64_expand_builtin): Likewise.
28500
28501 2009-04-07  Martin Jambor  <mjambor@suse.cz>
28502
28503         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
28504         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
28505         ADDR_EXPRS are include too.
28506
28507 2009-04-07  Richard Guenther  <rguenther@suse.de>
28508
28509         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
28510         decls are only used if passes as parameters or if they are
28511         local statics and the call is not to a builtin.
28512         (call_may_clobber_ref_p_1): Likewise.
28513
28514 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28515
28516         * expr.c (do_store_flag): Remove last argument.  Simplify code
28517         to avoid duplication of tests already done by can_compare_p.
28518         (expand_expr_real_1): Adjust caller.
28519
28520 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28521
28522         * optabs.c (can_compare_p): Test the predicate of a
28523         cbranch and cstore pattern.
28524
28525 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28526
28527         * expr.c (convert_move): Use emit_store_flag instead of
28528         "emulating" it.
28529
28530 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
28531
28532         * config/i386/i386.c (ix86_compare_emitted): Remove.
28533         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
28534         ix86_compare_op0 like ix86_compare_emitted used to be handled.
28535         * config/i386/i386.h (ix86_compare_emitted): Remove.
28536         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
28537         instead of ix86_compare_emitted.
28538         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
28539
28540 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
28541
28542         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
28543         Add t-sysroot-suffix to tmake_file.
28544         * config/print-sysroot-suffix.sh: New file.
28545         * config/t-sysroot-suffix: New file.
28546
28547 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28548
28549         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
28550         as the latter produces a warning when the target does not support
28551         infinity.
28552
28553 2009-04-07  Ben Elliston  <bje@au.ibm.com>
28554
28555         * dfp.c: Replace type punning assignments with memcpy throughout.
28556         * Makefile.in (dfp.o-warn): Remove.
28557
28558 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
28559
28560         PR target/39634
28561         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
28562         Include soft-fp/t-softfp after rs6000/t-linux64.
28563
28564 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
28565
28566         * stor-layout.c (set_sizetype): Use the full precision of their
28567         machine mode for bitsize types.
28568
28569 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
28570
28571         * config/i386/i386.md: Revert 2 accidental checkins.
28572
28573 2009-04-06  Joey Ye  <joey.ye@intel.com>
28574             Xuepeng Guo  <xuepeng.guo@intel.com>
28575             H.J. Lu  <hongjiu.lu@intel.com>
28576
28577         Atom pipeline model, tuning and insn selection.
28578         * config.gcc (atom): Add atom config options and target.
28579
28580         * config/i386/atom.md: New.
28581
28582         * config/i386/i386.c (atom_cost): New cost.
28583         (m_ATOM): New macro flag.
28584         (initial_ix86_tune_features): Set m_ATOM.
28585         (x86_accumulate_outgoing_args): Likewise.
28586         (x86_arch_always_fancy_math_387): Likewise.
28587         (processor_target): Add Atom cost.
28588         (cpu_names): Add Atom cpu name.
28589         (override_options): Set Atom ISA.
28590         (ix86_issue_rate): New case PROCESSOR_ATOM.
28591         (ix86_adjust_cost): Likewise.
28592
28593         * config/i386/i386.h (TARGET_ATOM): New target macro.
28594         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
28595         (TARGET_OPT_AGU): New target option.
28596         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
28597         (processor_type): Add PROCESSOR_ATOM.
28598
28599         * config/i386/i386.md (cpu): Add new value "atom".
28600         (use_carry, movu): New attr.
28601         (atom.md): Include atom.md.
28602         (adddi3_carry_rex64): Set attr "use_carry".
28603         (addqi3_carry): Likewise.
28604         (addhi3_carry): Likewise.
28605         (addsi3_carry): Likewise.
28606         (*addsi3_carry_zext): Likewise.
28607         (subdi3_carry_rex64): Likewise.
28608         (subqi3_carry): Likewise.
28609         (subhi3_carry): Likewise.
28610         (subsi3_carry): Likewise.
28611         (x86_movdicc_0_m1_rex64): Likewise.
28612         (*x86_movdicc_0_m1_se): Likewise.
28613         (x86_movsicc_0_m1): Likewise.
28614         (*x86_movsicc_0_m1_se): Likewise.
28615         (*adddi_1_rex64): Emit add insn as much as possible.
28616         (*addsi_1): Likewise.
28617         (return_internal): Set atom_unit.
28618         (return_internal_long): Likewise.
28619         (return_pop_internal): Likewise.
28620         (*rcpsf2_sse): Set atom_sse_attr attr.
28621         (*qrt<mode>2_sse): Likewise.
28622         (*prefetch_sse): Likewise.
28623
28624         * config/i386/i386-c.c (ix86_target_macros_internal): New case
28625         PROCESSOR_ATOM.
28626         (ix86_target_macros_internal): Likewise.
28627
28628         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
28629         (*prefetch_sse_rex): Likewise.
28630         (sse_rcpv4sf2): Likewise.
28631         (sse_vmrcpv4sf2): Likewise.
28632         (sse_sqrtv4sf2): Likewise.
28633         (<sse>_vmsqrt<mode>2): Likewise.
28634         (sse_ldmxcsr): Likewise.
28635         (sse_stmxcsr): Likewise.
28636         (*sse_sfence): Likewise.
28637         (sse2_clflush): Likewise.
28638         (*sse2_mfence): Likewise.
28639         (*sse2_lfence): Likewise.
28640         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
28641         (<sse>_movup<ssemodesuffixf2c>): Likewise.
28642         (avx_movdqu<avxmodesuffix>): Likewise.
28643         (avx_lddqu<avxmodesuffix>): Likewise.
28644         (sse2_movntv2di): Change attr "type" to "ssemov".
28645         (sse2_movntsi): Likewise.
28646         (rsqrtv8sf2): Change attr "type" to "sseadd".
28647         (sse3_addsubv2df3): Set attr "atom_unit".
28648         (sse3_h<plusminus_insn>v4sf3): Likewise.
28649         (*sse2_pmaddwd): Likewise.
28650         (*vec_extractv2di_1_rex64): Likewise.
28651         (*vec_extractv2di_1_avx): Likewise.
28652         (sse2_psadbw): Likewise.
28653         (ssse3_phaddwv8hi3): Likewise.
28654         (ssse3_phaddwv4hi3): Likewise.
28655         (ssse3_phadddv4si3): Likewise.
28656         (ssse3_phadddv2si3): Likewise.
28657         (ssse3_phaddswv8hi3): Likewise.
28658         (ssse3_phaddswv4hi3): Likewise.
28659         (ssse3_phsubwv8hi3): Likewise.
28660         (ssse3_phsubwv4hi3): Likewise.
28661         (ssse3_phsubdv4si3): Likewise.
28662         (ssse3_phsubdv2si3): Likewise.
28663         (ssse3_phsubswv8hi3): Likewise.
28664         (ssse3_phsubswv4hi3): Likewise.
28665         (ssse3_pmaddubsw128): Likewise.
28666         (sse3_pmaddubsw: Likewise.
28667         (ssse3_palignrti): Likewise.
28668         (ssse3_palignrdi): Likewise.
28669
28670 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
28671
28672         * doc/install.texi (Specific): Fix two cross-references to MinGW.
28673
28674 2009-04-06  Richard Guenther  <rguenther@suse.de>
28675
28676         PR tree-optimization/28868
28677         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
28678         of which PHI results we inserted.
28679         (insert_into_preds_of_block): Record inserted PHIs.
28680         (eliminate): Eliminate redundant PHI nodes.
28681         (init_pre): Init inserted_phi_names.
28682
28683 2009-04-06  Richard Guenther  <rguenther@suse.de>
28684
28685         PR tree-optimization/39643
28686         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
28687         IMAGPART_EXPRs of complex constants.
28688         (execute_fold_all_builtins): If we folded a call queue
28689         TODO_update_address_taken.
28690
28691 2009-04-06  Jan Hubicka  <jh@suse.cz>
28692
28693         PR middle-end/39659
28694         * except.c (remove_unreachable_regions): Propagate may_contain_throw
28695         flag.
28696
28697 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
28698
28699         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
28700         delay slot.
28701         (ic_invalidate_array): Likewise.
28702
28703 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
28704
28705         * calls.c (emit_library_call_value_1): Fix a problem with parameter
28706         alignment for library calls.
28707
28708 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
28709
28710         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
28711         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
28712         * config/i386/mingw-stdint.h:  New file.
28713
28714 2009-04-05  Richard Guenther  <rguenther@suse.de>
28715
28716         PR tree-optimization/39648
28717         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
28718         our &A vs. &A[0] IL deficiencies.
28719
28720 2009-04-04  Jan Hubicka  <jh@suse.cz>
28721
28722         * except.c (sjlj_find_directly_reachable_regions): Be ready for
28723         removed toplevel regions.
28724         (sjlj_mark_call_sites): Likewise.
28725
28726 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
28727
28728         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
28729         (cygwin tm clause use_gcc_stdint):  Set to wrap.
28730         * config/i386/cygwin-stdint.h:  New file.
28731
28732 2009-04-04  Richard Guenther  <rguenther@suse.de>
28733
28734         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
28735         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
28736         single-argument PHIs if we are in loop-closed SSA form.
28737         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
28738         for the pre-condition.
28739         (slpeel_tree_peel_loop_to_edge): Likewise.
28740         (vect_build_loop_niters): Take an optional sequence to append stmts.
28741         (vect_generate_tmps_on_preheader): Likewise.
28742         (vect_do_peeling_for_loop_bound): Take extra guards for the
28743         pre-condition.
28744         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
28745         the cost model check.
28746         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
28747         guards if we are going to peel.  Do not apply versioning in that case.
28748         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
28749         (vect_do_peeling_for_loop_bound): Likewise.
28750         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
28751         loop bound only record extra pre-conditions, do not apply loop
28752         versioning.
28753
28754 2009-04-04  Richard Guenther  <rguenther@suse.de>
28755
28756         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
28757         renaming code.
28758
28759 2009-04-04  Jan Hubicka  <jh@suse.cz>
28760
28761         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
28762         last_basic_block for size of bb->index indexed array.
28763         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
28764         compute_out, link_btr_uses, build_btr_def_use_webs,
28765         build_btr_def_use_webs, migrate_btr_defs): Likewise.
28766
28767 2009-04-04  Jan Hubicka  <jh@suse.cz>
28768
28769         * except.c (remove_eh_handler_and_replace): Break out from ...
28770         (remove_eh_handler): ... here.
28771         (bring_to_root): New function.
28772         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
28773         handled ones, bring others to root of tree.
28774
28775 2009-04-04  Jan Hubicka  <jh@suse.cz>
28776
28777         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
28778         (all_phis_safe_to_merge): New function.
28779         (update_info): New structure.
28780         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
28781         (cleanup_empty_eh): Update SSA if possible.
28782
28783 2009-04-04  Richard Guenther  <rguenther@suse.de>
28784
28785         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
28786         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
28787         (append_vuse): Likewise.
28788
28789 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
28790
28791         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
28792         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
28793         instead of REG_UNSAVED for DW_CFA_undefined.
28794         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
28795         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
28796         outermost frame.
28797
28798 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
28799
28800         PR target/39501
28801         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
28802
28803 2009-04-04  Richard Guenther  <rguenther@suse.de>
28804
28805         PR tree-optimization/8781
28806         PR tree-optimization/37892
28807         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
28808         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
28809         (valueize_refs): Call it for *& valueizations.
28810         (shared_reference_ops_from_ref): Rename to ...
28811         (valueize_shared_reference_ops_from_ref): ... this and valueize.
28812         (shared_reference_ops_from_call): Rename to ...
28813         (valueize_shared_reference_ops_from_call): ... this and valueize.
28814         (vn_reference_lookup): Update.
28815         (visit_reference_op_call): Likewise.
28816         * tree-ssa-pre.c (phi_translate_1): Fold *&.
28817         (eliminate): Value-replace the call address in call statements.
28818
28819 2009-04-04  Richard Guenther  <rguenther@suse.de>
28820
28821         PR tree-optimization/39636
28822         * tree-ssa-forwprop.c
28823         (forward_propagate_addr_into_variable_array_index): Check for
28824         GIMPLE_ASSIGN before accessing the rhs code.
28825
28826 2009-04-03  Jason Merrill  <jason@redhat.com>
28827
28828         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
28829
28830 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
28831
28832         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
28833         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
28834         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
28835         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
28836         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
28837         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
28838         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
28839         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
28840         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
28841         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
28842         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
28843         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
28844         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
28845         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
28846         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
28847         Use fr_reg_or_fp01_operand instead of fr_register_operand
28848
28849         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
28850         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
28851         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
28852
28853 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
28854
28855         PR rtl-optimization/39607
28856         PR rtl-optimization/39631
28857
28858         Revert:
28859
28860         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28861         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28862         instead of DF_LR_OUT.
28863         * ira-lives.c (process_bb_node_lives): Ditto.
28864         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28865         instead of DF_LR_{OUT,IN}.
28866         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28867         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28868
28869 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
28870
28871         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
28872         (execute_lower_omp): Always run but take the short way out if -fopenmp
28873         is not given.
28874         (gate_lower_omp): Remove, forcing the pass manager to always run the
28875         pass and always set PROP_gimple_lomp.
28876         (pass_lower_omp): Remove gate function.
28877         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
28878         PROP_trees.  Instead, require it.
28879         * ipa-cp.c (pass_ipa_cp): Likewise.
28880         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
28881         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
28882         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
28883         and PROP_gimple_leh.
28884
28885 2009-04-03  Richard Guenther  <rguenther@suse.de>
28886
28887         PR middle-end/13146
28888         PR tree-optimization/23940
28889         PR tree-optimization/33237
28890         PR middle-end/33974
28891         PR middle-end/34093
28892         PR tree-optimization/36201
28893         PR tree-optimization/36230
28894         PR tree-optimization/38049
28895         PR tree-optimization/38207
28896         PR tree-optimization/38230
28897         PR tree-optimization/38301
28898         PR tree-optimization/38585
28899         PR middle-end/38895
28900         PR tree-optimization/38985
28901         PR tree-optimization/39299
28902         * tree-ssa-structalias.h: Remove.
28903         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
28904         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
28905         (struct vuse_element_d): Remove.
28906         (struct vuse_vec_d): Likewise.
28907         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
28908         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
28909         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
28910         VUSE_ELEMENT_VAR): Likewise.
28911         (struct voptype_d): Likewise.
28912         (NUM_VOP_FREE_BUCKETS): Likewise.
28913         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
28914         (struct stmt_operands_d): Remove.
28915         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
28916         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
28917         VDEF_NUM, VDEF_VECT): Likewise.
28918         (copy_virtual_operands): Remove.
28919         (operand_build_cmp): Likewise.
28920         (create_ssa_artificial_load_stmt): Likewise.
28921         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
28922         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
28923         vuse_index and mayuse_index members.  Pack and move done and iter_type
28924         members to the front.
28925         (SSA_OP_VMAYUSE): Remove.
28926         (SSA_OP_VIRTUAL_USES): Adjust.
28927         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
28928         (unlink_stmt_vdef): Declare.
28929         (add_to_addressable_set): Remove.
28930         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
28931         (vrp_visit_stmt): Likewise.
28932         * doc/tree-ssa.texi (Alias analysis): Update.
28933         * doc/invoke.texi (max-aliased-vops): Remove docs.
28934         (avg-aliased-vops): Likewise.
28935         * tree-into-ssa.c (syms_to_rename): Remove.
28936         (need_to_update_vops_p): Likewise.
28937         (need_to_initialize_update_ssa_p): Rename to ...
28938         (update_ssa_initialized_fn): ... this.  Track function we are
28939         initialized for.
28940         (symbol_marked_for_renaming): Simplify.
28941         (add_new_name_mapping): Do not set need_to_update_vops_p.
28942         (dump_currdefs): Use SYMS_TO_RENAME.
28943         (rewrite_update_stmt): Always walk all uses/defs.
28944         (dump_update_ssa): Adjust.
28945         (init_update_ssa): Take function argument.  Track what we are
28946         initialized for.
28947         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
28948         (create_new_def_for): Initialize for cfun, assert we are initialized
28949         for cfun.
28950         (mark_sym_for_renaming): Simplify.
28951         (mark_set_for_renaming): Do not initialize update-ssa.
28952         (need_ssa_update_p): Simplify.  Take function argument.
28953         (name_mappings_registered_p): Assert we ask for the correct function.
28954         (name_registered_for_update_p): Likewise.
28955         (ssa_names_to_replace): Likewise.
28956         (release_ssa_name_after_update_ssa): Likewise.
28957         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
28958         (dump_decl_set): Do not print a newline.
28959         (debug_decl_set): Do it here.
28960         (dump_update_ssa): And here.
28961         * tree-ssa-loop-im.c (move_computations): Adjust.
28962         (movement_possibility): Likewise.
28963         (determine_max_movement): Likewise.
28964         (gather_mem_refs_stmt): Likewise.
28965         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
28966         or NAME_MEMORY_TAG.
28967         * tree-complex.c (update_all_vops): Remove.
28968         (expand_complex_move): Adjust.
28969         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
28970         Simplify test for memory referencing statement.  Exclude
28971         non-invariant ADDR_EXPRs.
28972         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
28973         * tree-loop-distribution.c (generate_memset_zero): Adjust.
28974         (rdg_flag_uses): Likewise.
28975         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
28976         related code.
28977         (tree_optimize_tail_calls_1): Also split the
28978         edge from the entry block if we have degenerate PHI nodes in
28979         the first basic block.
28980         * tree.c (init_ttree): Remove memory-tag related code.
28981         (tree_code_size): Likewise.
28982         (tree_node_structure): Likewise.
28983         (build7_stat): Re-write to be build6_stat.
28984         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
28985         (SSA_VAR_P): Adjust.
28986         (struct tree_memory_tag): Remove.
28987         (struct tree_memory_partition_tag): Likewise.
28988         (union tree_node): Adjust.
28989         (build7): Re-write to be build6.
28990         * tree-pass.h (pass_reset_cc_flags): Remove.
28991         (TODO_update_address_taken): New flag.
28992         (pass_simple_dse): Remove.
28993         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
28994         * params.h (MAX_ALIASED_VOPS): Remove.
28995         (AVG_ALIASED_VOPS): Likewise.
28996         * omp-low.c (expand_omp_taskreg): Update SSA form.
28997         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
28998         aliases the lhs in a copy stmt.
28999         * tree-ssa-dse.c (struct address_walk_data): Remove.
29000         (memory_ssa_name_same): Likewise.
29001         (memory_address_same): Likewise.
29002         (get_kill_of_stmt_lhs): Likewise.
29003         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
29004         unused stores.  Look through PHI nodes into post-dominated regions.
29005         (dse_optimize_stmt): Simplify.  Properly remove stores.
29006         (tree_ssa_dse): Compute dominators.
29007         (execute_simple_dse): Remove.
29008         (pass_simple_dse): Likewise.
29009         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
29010         gimple_loaded_syms and gimple_stored_syms computation.
29011         * toplev.c (dump_memory_report): Dump alias and pta stats.
29012         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
29013         (vn_reference_eq): Likewise.
29014         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
29015         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
29016         valueize_vuses): Remove.
29017         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
29018         (get_def_ref_stmt_vuse): ... this.
29019         (vn_reference_lookup_2): New function.
29020         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
29021         walking equivalent vuses.  Simplify.
29022         (vn_reference_lookup): Likewise.
29023         (vn_reference_insert): Likewise.
29024         (vn_reference_insert_pieces): Likewise.
29025         (visit_reference_op_call): Simplify.
29026         (visit_reference_op_load): Likewise.
29027         (visit_reference_op_store): Likewise.
29028         (init_scc_vn): Remove shared_lookup_vuses initialization.
29029         (free_scc_vn): Remove shared_lookup_vuses freeing.
29030         (sort_vuses, sort_vuses_heap): Remove.
29031         (get_ref_from_reference_ops): Export.
29032         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
29033         vector with single vuse pointer.
29034         (vn_reference_lookup_pieces, vn_reference_lookup,
29035         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
29036         (shared_vuses_from_stmt): Remove.
29037         (get_ref_from_reference_ops): Declare.
29038         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
29039         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
29040         memory-tag related code.
29041         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
29042         (likely_value): Add comment, skip static-chain of call statements.
29043         (surely_varying_stmt_p): Adjust.
29044         (gimplify_and_update_call_from_tree): Likewise.
29045         (execute_fold_all_builtins): Do not rebuild alias info.
29046         (gimplify_and_update_call_from_tree): Properly update VOPs.
29047         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
29048         (copy_ref_info): Remove memory-tag related code.
29049         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
29050         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
29051         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
29052         computation.
29053         * tree-ssa-dom.c (gimple_p): Remove typedef.
29054         (eliminate_redundant_computations): Adjust.
29055         (record_equivalences_from_stmt): Likewise.
29056         (avail_expr_hash): Likewise.
29057         (avail_expr_eq): Likewise.
29058         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
29059         (stmt_makes_single_load): Likewise.
29060         (stmt_makes_single_store): Likewise.
29061         * tree-ssa-alias.c: Rewrite completely.
29062         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
29063         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
29064         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
29065         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
29066         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
29067         Remove public functions.
29068         (pass_reset_cc_flags): Remove.
29069         (pass_build_alias): Move ...
29070         * tree-ssa-structalias.c (pass_build_alias): ... here.
29071         * tree-ssa-alias.c (may_be_aliased): Move ...
29072         * tree-flow-inline.h (may_be_aliased): ... here.
29073         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
29074         count_uses_and_derefs): Move ...
29075         * gimple.c: ... here.
29076         * gimple.h (count_uses_and_derefs): Declare.
29077         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
29078         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
29079         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
29080         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
29081         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
29082         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
29083         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
29084         New functions.
29085         * tree-dfa.c (refs_may_alias_p): Move ...
29086         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
29087         * tree-ssa-alias.h: New file.
29088         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
29089         (statement_sink_location): Likewise.
29090         * opts.c (decode_options): Do not adjust max-aliased-vops or
29091         avg-aliased-vops values.
29092         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
29093         (TV_CALL_CLOBBER): Likewise.
29094         (TV_FLOW_SENSITIVE): Likewise.
29095         (TV_FLOW_INSENSITIVE): Likewise.
29096         (TV_MEMORY_PARTITIONING): Likewise.
29097         (TV_ALIAS_STMT_WALK): New timevar.
29098         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
29099         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
29100         (get_address_description): Remove memory-tag related code.
29101         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
29102         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
29103         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
29104         and immediate uses in statements.  Document.
29105         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
29106         (dump_symbols): Remove.
29107         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
29108         * alias.c (get_deref_alias_set): New function split out from ...
29109         (get_alias_set): ... here.
29110         * alias.h (get_deref_alias_set): Declare.
29111         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
29112         type parameter.  Remove restrict pointer handling.  Create a
29113         ref-all pointer in case type-based alias sets do not conflict.
29114         (vect_analyze_data_refs): Remove SMT related code.
29115         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
29116         (vectorizable_load): Likewise.
29117         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
29118         (DR_SYMBOL_TAG, DR_VOPS): Remove.
29119         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
29120         Ignore vops and SMTs.
29121         (dr_analyze_alias): Likewise..
29122         (free_data_ref): Likewise.
29123         (create_data_ref): Likewise.
29124         (analyze_all_data_dependences): Likewise.
29125         (get_references_in_stmt): Adjust.
29126         * tree-flow-inline.h (gimple_aliases_computed_p,
29127         gimple_addressable_vars, gimple_call_clobbered_vars,
29128         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
29129         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
29130         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
29131         gimple_mem_ref_stats): Remove.
29132         (gimple_vop): New function.
29133         (op_iter_next_use): Remove vuses and mayuses cases.
29134         (op_iter_next_def): Remove vdefs case.
29135         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
29136         (clear_and_done_ssa_iter): Do not set removed fields.
29137         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
29138         Assert we are not iterating over vuses or vdefs if not also
29139         iterating over uses or defs.
29140         (op_iter_init_use): Likewise.
29141         (op_iter_init_def): Likewise.
29142         (op_iter_next_vdef): Remove.
29143         (op_iter_next_mustdef): Likewise.
29144         (op_iter_init_vdef): Likewise.
29145         (compare_ssa_operands_equal): Likewise.
29146         (link_use_stmts_after): Handle vuse operand.
29147         (is_call_used): Use is_call_clobbered.
29148         (is_call_clobbered): Global variables are always call clobbered,
29149         query the call-clobbers bitmap.
29150         (mark_call_clobbered): Ignore global variables.
29151         (clear_call_clobbered): Likewise.
29152         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
29153         virtual operands sanity check.
29154         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
29155         Remove.
29156         (TARGET_MEM_REF): Remove TMR_TAG operand.
29157         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
29158         Remove call-clobber related code.
29159         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
29160         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
29161         partitions or escape reason.
29162         (get_single_def_stmt, get_single_def_stmt_from_phi,
29163         get_single_def_stmt_with_phi): Remove.
29164         (dump_referenced_vars): Tidy.
29165         (get_ref_base_and_extent): Allow bare decls.
29166         (collect_dfa_stats): Adjust.
29167         * graphite.c (rename_variables_in_stmt): Adjust.
29168         (graphite_copy_stmts_from_block): Likewise.
29169         (translate_clast): Likewise.
29170         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
29171         (EXPR_DIES): New.
29172         (translate_vuse_through_block): Use the oracle.
29173         (phi_translate_1): Adjust.
29174         (value_dies_in_block_x): Use the oracle.  Cache the outcome
29175         in EXPR_DIES.
29176         (valid_in_sets): Check if the VUSE for
29177         a REFERENCE is available.
29178         (eliminate): Do not remove stmts during elimination,
29179         instead queue and remove them afterwards.
29180         (do_pre): Do not rebuild alias info.
29181         (pass_pre): Run TODO_rebuild_alias before PRE.
29182         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
29183         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
29184         (mark_all_v_defs_stmt): Remove.
29185         (mark_all_v_defs_seq): Adjust.
29186         (sra_replace): Likewise.
29187         (scalarize_use): Likewise.
29188         (scalarize_copy): Likewise.
29189         (scalarize_init): Likewise.
29190         (scalarize_ldst): Likewise.
29191         (todoflags): Remove.
29192         (tree_sra): Do not rebuild alias info.
29193         (tree_sra_early): Adjust.
29194         (pass_sra): Run TODO_update_address_taken before SRA.
29195         * tree-predcom.c (set_alias_info): Remove.
29196         (prepare_initializers_chain): Do not call it.
29197         (mark_virtual_ops_for_renaming): Adjust.
29198         (mark_virtual_ops_for_renaming_list): Remove.
29199         (initialize_root_vars): Adjust.
29200         (initialize_root_vars_lm): Likewise.
29201         (prepare_initializers_chain): Likewise.
29202         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
29203         (may_propagate_copy_into_stmt): Likewise.
29204         (merge_alias_info): Do nothing for now.
29205         (propagate_tree_value_into_stmt): Adjust.
29206         (stmt_may_generate_copy): Likewise.
29207         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
29208         not mark symbols for renaming.
29209         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
29210         with the same statement, make sure to update the new pointed-to one.
29211         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
29212         call statements, do not mark symbols for renaming.
29213         (mark_operand_necessary): Dump something.
29214         (ref_may_be_aliased): New function.
29215         (mark_aliased_reaching_defs_necessary_1): New helper function.
29216         (mark_aliased_reaching_defs_necessary): Likewise.
29217         (mark_all_reaching_defs_necessary_1): Likewise.
29218         (mark_all_reaching_defs_necessary): Likewise.
29219         (propagate_necessity): Do not process virtual PHIs.  For
29220         non-aliased loads mark all reaching definitions as necessary.
29221         For aliased loads and stores mark the immediate dominating
29222         aliased clobbers as necessary.
29223         (visited): New global static.
29224         (perform_tree_ssa_dce): Free visited bitmap after propagating
29225         necessity.
29226         (remove_dead_phis): Perform simple dead virtual PHI removal.
29227         (remove_dead_stmt): Properly unlink virtual operands when
29228         removing stores.
29229         (eliminate_unnecessary_stmts): Schedule PHI removal after
29230         stmt removal.
29231         * tree-ssa-ter.c (is_replaceable_p): Adjust.
29232         (process_replaceable): Likewise.
29233         (find_replaceable_in_bb): Likewise.
29234         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
29235         based on the single gimple vop.
29236         (verify_flow_insensitive_alias_info): Remove.
29237         (verify_flow_sensitive_alias_info): Likewise.
29238         (verify_call_clobbering): Likewise.
29239         (verify_memory_partitions): Likewise.
29240         (verify_alias_info): Likewise.
29241         (verify_ssa): Adjust..
29242         (execute_update_addresses_taken): Export.  Update SSA
29243         manually.  Optimize only when optimizing.  Use a local bitmap.
29244         (pass_update_address_taken): Remove TODO_update_ssa, add
29245         TODO_dump_func.
29246         (pass_update_address_taken): Just use TODO_update_address_taken.
29247         (init_tree_ssa): Do not initialize addressable_vars.
29248         (verify_ssa): Verify new VUSE / VDEF properties.
29249         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
29250         Do not call verify_alias_info.
29251         (delete_tree_ssa): Clear the VUSE, VDEF operands.
29252         Do not free the loaded and stored syms bitmaps.  Reset the escaped
29253         and callused solutions.  Do not free addressable_vars.
29254         Remove memory-tag related code.
29255         (warn_uninitialized_var): Aliases are always available.
29256         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
29257         * lambda-code.c (can_put_in_inner_loop): Adjust.
29258         (can_put_after_inner_loop): Likewise.
29259         (perfect_nestify): Likewise.
29260         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
29261         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
29262         (vectorizable_conversion): Do not mark symbols for renaming.
29263         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
29264         (expand_call_inline): Unlink the calls virtual operands before
29265         replacing it.
29266         (tree_function_versioning): Do not call update_ssa if we are not
29267         updating clones.  Simplify.
29268         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
29269         (propagate_with_phi): Likewise..
29270         * tree-outof-ssa.c (create_temp): Remove memory tag and call
29271         clobber code.  Assert we are not aliased or global.
29272         * tree-flow.h: Include tree-ssa-alias.h
29273         (enum escape_type): Remove.
29274         (struct mem_sym_stats_d): Likewise.
29275         (struct mem_ref_stats_d): Likewise.
29276         (struct gimple_df): Add vop member.  Remove global_var,
29277         call_clobbered_vars, call_used_vars, addressable_vars,
29278         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
29279         escaped and callused members.
29280         (struct ptr_info_def): Remove all members, add points-to solution
29281         member pt.
29282         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
29283         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
29284         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
29285         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
29286         (tree-ssa-alias.o): Likewise.
29287         (toplev.o): Add tree-ssa-alias.h
29288         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
29289         * gimple.c (gimple_set_bb): Fix off-by-one error.
29290         (is_gimple_reg): Do not handle memory tags.
29291         (gimple_copy): Also copy virtual operands.
29292         Delay updating the statement.  Do not reset loaded and stored syms.
29293         (gimple_set_stored_syms): Remove.
29294         (gimple_set_loaded_syms): Likewise.
29295         (gimple_call_copy_skip_args): Copy the virtual operands
29296         and mark the new statement modified.
29297         * tree-ssa-structalias.c (may_alias_p): Remove.
29298         (set_uids_in_ptset): Take the alias set to prune with as
29299         parameter.  Fold in the alias test of may_alias_p.
29300         (compute_points_to_sets): Compute whether a ptr is dereferenced
29301         in a local sbitmap.
29302         (process_constraint): Deal with &ANYTHING on the lhs, reject all
29303         other ADDRESSOF constraints on the lhs.
29304         (get_constraint_for_component_ref): Assert that we don't get
29305         ADDRESSOF constraints from the base of the reference.
29306         Properly generate UNKNOWN_OFFSET for DEREF if needed.
29307         (struct variable_info): Remove collapsed_to member.
29308         (get_varinfo_fc): Remove.
29309         (new_var_info): Do not set collapsed_to.
29310         (dump_constraint): Do not follow cycles.
29311         (dump_constraint_graph): Likewise.
29312         (build_pred_graph): Likewise.
29313         (build_succ_graph): Likewise.
29314         (rewrite_constraints): Likewise.
29315         (do_simple_structure_copy): Remove.
29316         (do_rhs_deref_structure_copy): Remove.
29317         (do_lhs_deref_structure_copy): Remove.
29318         (collapse_rest_of_var): Remove.
29319         (do_structure_copy): Re-implement.
29320         (pta_stats): New global variable.
29321         (dump_pta_stats): New function.
29322         (struct constraint_expr): Make offset signed.
29323         (UNKNOWN_OFFSET): Define special value.
29324         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
29325         (solution_set_expand): New helper function split out from ...
29326         (do_sd_constraint): ... here.
29327         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
29328         (do_ds_constraint): Likewise.
29329         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
29330         and CALLUSED = *CALLUSED.
29331         (set_union_with_increment): Make inc argument signed.
29332         (type_safe): Remove.
29333         (get_constraint_for_ptr_offset): Handle unknown and negative
29334         constant offsets.
29335         (first_vi_for_offset): Handle offsets before start.  Bail
29336         out early for offsets beyond the variable extent.
29337         (first_or_preceding_vi_for_offset): New function.
29338         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
29339         Together with ESCAPED = *ESCAPED this properly computes reachability.
29340         (find_what_var_points_to): New function.
29341         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
29342         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
29343         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
29344         pt_solutions_intersect): New functions.
29345         (compute_call_used_vars): Remove.
29346         (compute_may_aliases): New main entry into PTA computation.
29347         * gimple.h (gimple_p): New typedef.
29348         (struct gimple_statement_base): Remove references_memory_p.
29349         (struct gimple_statement_with_memory_ops_base): Remove
29350         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
29351         members.
29352         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
29353         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
29354         gimple_set_references_memory): Remove.
29355         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
29356         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
29357         New functions.
29358         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
29359         (verify_expr): Allow RESULT_DECL.
29360         (gimple_duplicate_bb): Do not copy virtual operands.
29361         (gimple_duplicate_sese_region): Adjust.
29362         (gimple_duplicate_sese_tail): Likewise.
29363         (mark_virtual_ops_in_region): Remove.
29364         (move_sese_region_to_fn): Do not call it.
29365         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
29366         and pass_simple_dse.
29367         (execute_function_todo): Handle TODO_update_address_taken,
29368         call execute_update_addresses_taken for TODO_rebuild_alias.
29369         (execute_todo): Adjust.
29370         (execute_one_pass): Init dump files early.
29371         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
29372         call-clobbered.
29373         (create_general_new_stmt): Clear vops.
29374         * tree-ssa-reassoc.c (get_rank): Adjust.
29375         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
29376         symbols for renaming.
29377         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
29378         (PARAM_AVG_ALIASED_VOPS): Likewise.
29379         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
29380         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
29381         * tree-ssa-operands.c: Simplify for new virtual operand representation.
29382         (operand_build_cmp, copy_virtual_operands,
29383         create_ssa_artificial_load_stmt, add_to_addressable_set,
29384         gimple_add_to_addresses_taken): Remove public functions.
29385         (unlink_stmt_vdef): New function.
29386
29387 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
29388
29389         * config.gcc (powerpc-*-linux*): Merge variants.
29390
29391 2009-04-02  Chao-ying Fu  <fu@mips.com>
29392             James Grosbach  <james.grosbach@microchip.com>
29393
29394         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
29395         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
29396         cop0_sp_offset.
29397         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
29398         keep_interrupts_masked_p, use_debug_exception_return_p.
29399         (mips_attribute_table): Add interrupt, use_shadow_register_set,
29400         keep_interrupts_masked, use_debug_exception_return.
29401         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
29402         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
29403         New functions.
29404         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
29405         (mips_print_operand): Process COP0 registers to print $0 .. $31
29406         correctly for GAS to process.
29407         (mips_interrupt_extra_call_saved_reg_p): New function.
29408         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
29409         extra registers.
29410         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
29411         (mips_compute_frame_info): Add supports for interrupt context that
29412         includes doubleword accumulators and COP0 registers.
29413         (mips_for_each_saved_acc): New function.
29414         (mips_for_each_saved_gpr_and_fpr): Change the function name from
29415         mips_for_each_saved_reg.
29416         (mips_save_reg): Save accumulators.
29417         (mips_kernel_reg_p): A new for_each_rtx callback.
29418         (mips_expand_prologue): Support interrupt handlers.
29419         (mips_restore_reg): Restore accumulators.
29420         (mips_expand_epilogue): Support interrupt handlers.
29421         (mips_can_use_return_insn): Return false for interrupt handlers.
29422         (mips_epilogue_uses): New function.
29423         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
29424         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
29425         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
29426         cop0_move): New instructions.
29427         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
29428         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
29429         defines.
29430         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
29431         New defines.
29432         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
29433         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
29434         interrupt handlers, we use K0 as the temporary register.
29435         (EPILOGUE_USES): Change to a function call.
29436         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
29437         handlers, we use K0 as the temporary register.
29438
29439         * doc/extend.texi (Function Attributes): Document interrupt,
29440         use_shadow_register_set, keep_interrupts_masked,
29441         use_debug_exception_return for MIPS attributes.
29442
29443 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
29444
29445         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
29446         Remove a number of t-files from tmake_file.
29447         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
29448         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
29449         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
29450         target_prototype, not TARGET_PROTOTYPE.
29451         (LINK_OS_GNU_SPEC): Define.
29452         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
29453         and darwin-ldoubdle.c.
29454
29455 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
29456
29457         PR driver/39293
29458         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
29459         (cpp_options): Ditto.
29460         (default_compilers): Ditto.
29461         (display_help): Ditto.
29462         (process_command): Ditto.
29463         (do_spec_1): Ditto.
29464         (set_input): Use lbasename instead of duplicate code.
29465         (save_temps_prefix): New static for -save-temps=obj.
29466         (save_temps_length): Ditto.
29467
29468         * doc/invoke.texi (-save-temps=obj): Document new variant to
29469         -save-temps switch.
29470
29471 2009-04-02  Jeff Law  <law@redhat.com>
29472
29473         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
29474         variable.
29475
29476 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
29477
29478         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
29479         * configure: Regenerated.
29480
29481 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29482
29483         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
29484         share the argument list.
29485
29486 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29487
29488         Merge
29489
29490         2009-02-12  Diego Novillo  <dnovillo@google.com>
29491
29492         * varpool.c (debug_varpool): New.
29493         * cgraph.h (debug_varpool): Declare.
29494
29495 2009-04-02  Jan Hubicka  <jh@suse.cz>
29496
29497         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
29498         pass.
29499
29500 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
29501
29502         * config/i386/i386.c (ix86_abi): Move initialization to ...
29503         (override_options): Here.
29504
29505 2009-04-02  Christian Bruel  <christian.bruel@st.com>
29506
29507         * config/sh/sh.c (sh_dwarf_register_span): New function.
29508         (TARGET_DWARF_REGISTER_SPAN): Define.
29509         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
29510
29511 2009-04-02  Ira Rosen  <irar@il.ibm.com>
29512
29513         PR tree-optimization/39595
29514         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
29515         interleaved loads group is not  greater than the SLP group size.
29516
29517 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
29518
29519         * builtins.c (is_builtin_name): New.
29520         (called_as_built_in): Use is_builtin_name.
29521         * tree.h (is_builtin_name): New.
29522         * varasm.c (incorporeal_function_p): Use is_builtin_name
29523
29524 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
29525
29526         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
29527
29528 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
29529
29530         PR c++/26693
29531         * c-decl.c (clone_underlying_type): Move this ...
29532         * c-common.c (set_underlying_type): ... here.
29533         Also, make sure the function properly sets TYPE_STUB_DECL() on
29534         the newly created typedef variant type.
29535         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
29536         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
29537         points.
29538
29539 2009-04-02  Richard Guenther  <rguenther@suse.de>
29540
29541         PR tree-optimization/37221
29542         * tree-flow.h (degenerate_phi_result): Declare.
29543         * tree-ssa-dom.c (degenerate_phi_result): Export.
29544         * tree-scalar-evolution.c (analyze_initial_condition): If
29545         the initial condition is defined by a degenerate PHI node
29546         use the degenerate value.
29547
29548 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
29549
29550         PR rtl-optimization/39588
29551         * combine.c (merge_outer_ops): Do not set the constant when this
29552         is not necessary.
29553         (simplify_shift_const_1): Do not modify it either in this case.
29554
29555 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
29556
29557         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
29558         tuning is deprecated if -mtune value is set to an Itanium1 variant.
29559
29560 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
29561
29562         PR c/29027
29563         * c-lex.c (interpret_float): Default (no suffix) is double.
29564
29565 2009-04-1  Xinliang David Li  <davidxl@google.com>
29566
29567         * config/i386/i386.c (legitimate_constant_p): Recognize
29568         all one vector constant.
29569
29570 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29571
29572         * config/vax/vax.c: Add #includes to silence warnings.
29573         Change #include order to silence two warnings.
29574
29575 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29576
29577         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
29578         (ASM_SPEC): Pass -k to the assembler for PIC code.
29579
29580 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29581
29582         * config.gcc: Add vax-*-linux* to the switch.
29583         * config/vax/linux.h: New file. (TARGET_VERSION,
29584         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
29585
29586 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29587
29588         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
29589         Use predicate macros instead of GET_CODE() == foo.
29590         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
29591         ashlsi3, rotrsi3, <unnamed>): Likewise.
29592
29593 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29594
29595         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
29596         jbbccihi, jbbccisi): Remova trailing whitespace.
29597         * config/vax/constraints.md: Likewise.
29598         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
29599         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
29600         * config/vax/predicates.md: Likewise.
29601         * config/vax/vax.c (print_operand_address, vax_output_int_move,
29602         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
29603         * config/vax/vax.h: Likewise.
29604         * config/vax/vax.md (nonlocal_goto): Likewise.
29605
29606 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29607
29608         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
29609         (indirectable_address_p, adjacent_operands_p): Add spaces around
29610         braces.
29611         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
29612
29613 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29614
29615         * config/vax/vax.c (legitimate_constant_address_p,
29616         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
29617         index_term_p, reg_plus_index_p, legitimate_address_p,
29618         vax_mode_dependent_address_p): Update comments to match functions
29619         modified by the recent int->bool conversion.
29620
29621 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29622
29623         * config/vax/builtins.md: Update copyright message.
29624         * config/vax/constraints.md: Likewise.
29625         * config/vax/netbsd-elf.h: Likewise.
29626         * config/vax/predicates.md: Likewise.
29627         * config/vax/vax-protos.h: Likewise.
29628         * config/vax/vax.c: Likewise.
29629         * config/vax/vax.h: Likewise.
29630         * config/vax/vax.md: Likewise.
29631         * config/vax/vax.opt: Likewise.
29632
29633 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
29634
29635         * config/vax/builtins.md (ffssi2, ffssi2_internal,
29636         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
29637         * config/vax/constraints.md (B, R): Likewise.
29638         * config/vax/predicates.md (external_memory_operand,
29639         nonimmediate_addsub_di_operand): Likewise.
29640         * config/vax/vax.c (vax_output_int_add): Likewise.
29641         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
29642         untyped_call): Likewise.
29643
29644 2009-04-01  Matt Thomas  <matt@3am-software.com>
29645
29646         * config/vax/predicates.md: New file.
29647         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
29648         external_const_operand, nonsymbolic_operand, external_memory_operand,
29649         indirect_memory_operand, indexed_memory_operand,
29650         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
29651         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
29652         predicate.
29653         * config/vax/constraints.md: New file.
29654         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
29655         New constraint.
29656         * config/vax/builtins.md: New file.
29657         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
29658         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
29659         jbbccisi): Define.
29660         * config/vax/vax.opt (mqmath): Add option.
29661         * config/vax/vax.md (isfx): Extend with DI.
29662         (VAXintQH, VAXintQHSD): Define.
29663         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
29664         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
29665         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
29666         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
29667         (movdi): Update constraints and use vax_output_int_move().
29668         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
29669         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
29670         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
29671         nonlocal_goto): New.
29672         (mov<mode>): Extend accepted operand types.
29673         (subdi3_old): Rename from subdi3, change update constraints and use
29674         a new implementation.
29675         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
29676         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
29677         MOVE_RATIO, CLEAR_RATIO): Define.
29678         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
29679         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
29680         (PRINT_OPERAND): Redefine using a function instead of inlined code.
29681         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
29682         (split_quadword_operands): Make static and really allow variable
29683         splitting.
29684         (print_operand_address): Update for PIC generation.
29685         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
29686         indexable_address_p, fixup_mathdi_operand,
29687         vax_expand_addsub_di_operands, adjacent_operands_p): New.
29688         (vax_float_literal, legitimate_constant_p,
29689         indirectable_constant_address_p, index_term_p,
29690         reg_plus_index_p): Return bool instead of int.
29691         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
29692         where needed.
29693         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
29694         generation.
29695         (vax_output_conditional_branch): Indent.
29696         (legitimate_constant_address_p, indirectable_constant_address_p,
29697         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
29698         vax_mode_dependent_address_p): Return bool instead of int, update for
29699         PIC generation.
29700         * config/vax/vax-protos.h (legitimate_constant_address_p,
29701         legitimate_constant_p, legitimate_address_p,
29702         vax_mode_dependent_address_p): Change declaration to bool.
29703         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
29704         vax_expand_addsub_di_operands, vax_output_int_subtract,
29705         vax_output_movmemsi): Declare.
29706         (split_quadword_operands, vax_float_literal): Delete declaration.
29707         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
29708         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
29709         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
29710         ASM_OUTPUT_DWARF_PCREL): Define.
29711         (ASM_SPEC): Change definition to allow PIC generation.
29712
29713 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
29714
29715         * doc/sourcebuild.texi: Update front-end requirements.
29716
29717 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29718
29719         PR target/39226
29720         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
29721         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
29722         (booldi3_internal3): Use boolean_or_operator instead of
29723         boolean_operator.
29724
29725 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
29726
29727         PR c/39605
29728         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
29729         declarator whose size is not an integer constant expression but
29730         folds to an integer constant, then treat it as a constant
29731         subsequently.
29732
29733 2009-04-01  Richard Guenther  <rguenther@suse.de>
29734
29735         * fold-const.c (fold_plusminus_mult_expr): Do not fold
29736         i * 4 + 2 to (i * 2 + 1) * 2.
29737
29738 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29739
29740         PR c/37772
29741         * c-parser.c (c_parser_asm_statement): Skip until close paren and
29742         return if c_parser_asm_string_literal returned NULL.
29743
29744 2009-04-01  Nick Clifton  <nickc@redhat.com>
29745
29746         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
29747         already defined.
29748         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
29749         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
29750         other typedefs to avoid conflicts with libgcc2.c.  Define labels
29751         to gain 16-bit bit-manipulation functions from libgcc2.c and then
29752         include it.
29753         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
29754         to gain 16-bit trapping arithmetic functions from libgcc2.c and
29755         then include it.
29756
29757 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
29758
29759         * varasm.c (default_function_rodata_section): Declare DOT as
29760         const char*.
29761
29762 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
29763             Andrey Galkin  <agalkin@hypercom.com>
29764
29765         PR/39492
29766         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
29767         Make object_name unique for each process.
29768
29769 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
29770
29771         PR other/39591
29772         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
29773         addressable variables in the parallel that could go out of scope while
29774         running queued tasks.
29775
29776 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
29777
29778         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
29779         (CASE_VALUES_THRESHOLD): Redefine.
29780         * config/avr/avr.c (avr_override_options): Remove initialization of
29781         avr_case_values_threshold variable.
29782         (avr_case_values_threshold): Remove variable. Add new function.
29783         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
29784         * config/avr/avr.opt (mno-tablejump): Remove option.
29785         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
29786
29787 2009-04-01  DJ Delorie  <dj@redhat.com>
29788
29789         * varasm.c (default_function_rodata_section): Don't assume
29790         anything about where the first '.' in the section name is.
29791
29792 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
29793
29794         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
29795         rs6000_emit_stack_tie.
29796
29797 2009-03-31  Ian Lance Taylor  <iant@google.com>
29798
29799         * tree-eh.c (tree_remove_unreachable_handlers): Compare
29800         gimple_code with GIMPLE_RESX, not RESX.
29801
29802 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29803
29804         * c-common.c (c_get_ident): New.
29805         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
29806
29807 2009-04-01  Ben Elliston  <bje@au.ibm.com>
29808
29809         * config/rs6000/sysv4.opt (msdata): Improve option description.
29810
29811 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
29812
29813         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
29814         (divdf3_internal_lat): Remove.
29815         (divxf3_internal_lat): Remove.
29816         (divxf3_internal_thr): Remove.
29817         (divxf): Use divxf3_internal.
29818         * config/ia64/div.md (divsf3_internal_lat): New.
29819         (divdf3_internal_lat): New.
29820         (divxf3_internal): New.
29821
29822 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29823
29824         PR c/448
29825         * Makefile.in (USE_GCC_STDINT): Define.
29826         (stmp-int-hdrs): Install stdint.h if applicable.
29827         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
29828         if known.
29829         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
29830         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
29831         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29832         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29833         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29834         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29835         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29836         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29837         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29838         (c_common_nodes_and_builtins): Initialize
29839         underlying_wchar_type_node.  Do not initialize
29840         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
29841         nodes for new types.
29842         (c_stddef_cpp_builtins): Define macros for new types.
29843         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
29844         Remove.
29845         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
29846         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
29847         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
29848         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
29849         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
29850         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
29851         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
29852         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
29853         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
29854         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
29855         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
29856         int16_type_node, int32_type_node, int64_type_node,
29857         uint8_type_node, uint16_type_node, c_uint32_type_node,
29858         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
29859         int_least32_type_node, int_least64_type_node,
29860         uint_least8_type_node, uint_least16_type_node,
29861         uint_least32_type_node, uint_least64_type_node,
29862         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
29863         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
29864         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
29865         uintptr_type_node): Define.
29866         * c-cppbuiltin.c (builtin_define_constants,
29867         builtin_define_type_minmax): New.
29868         (builtin_define_stdint_macros): Define more macros.
29869         (c_cpp_builtins): Define more limit macros.
29870         (type_suffix): New.
29871         (builtin_define_type_max): Define in terms of
29872         builtin_define_type_minmax.  Remove is_long parameter.  All
29873         callers changed.
29874         * config.gcc (use_gcc_stdint): Define.
29875         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
29876         Add newlib-stdint.h for generic targets.
29877         * config/glibc-stdint.h, config/newlib-stdint.h,
29878         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
29879         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
29880         * config/score/score.h (UINTPTR_TYPE): Define.
29881         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
29882         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
29883         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29884         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29885         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29886         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29887         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29888         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29889         * config/spu/spu.h (STDINT_LONG32): Define.
29890         * configure.ac (use_gcc_stdint): Substitute.
29891         * configure: Regenerate.
29892         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
29893         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
29894         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
29895         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
29896         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
29897         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
29898         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
29899         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
29900         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
29901         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
29902         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
29903         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
29904         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
29905         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
29906         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
29907         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
29908         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
29909         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
29910         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
29911         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
29912         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
29913         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
29914         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29915         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29916         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29917         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29918         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29919         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29920         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
29921
29922 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
29923
29924         * loop-iv.c (suitable_set_for_replacement): Renamed from
29925         simplify_using_assignment; changed to return bool and to accept new
29926         args DEST and SRC.  Return true iff we find a source/destination pair
29927         that can be used to make a replacement, and fill SRC and DEST if so.
29928         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
29929         changed.
29930         (simplify_using_initial_values): Deal with altered regs here and track
29931         more precisely the effect they have on the validity of our expression.
29932
29933         * loop-iv.c (simplify_using_condition): A condition of the form
29934         (EQ REG CONST) can be used to simply make a substitution.
29935         (simplify_using_initial_values): Keep track of conditions we have seen
29936         and keep using them to simplify new expressions, while applying the
29937         same substitutions to them as to the expression.
29938
29939         * simplify-rtx.c (simplify_relational_operation_1): Simplify
29940         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
29941         GEU/LTU reversed.
29942
29943         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
29944         changed.  Use this when trying to improve the upper bound.
29945         Generate the comparison by using simplify_gen_relational.
29946
29947         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
29948
29949         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
29950         functions.
29951         (simplify_using_assignment, simplify_using_initial_values): Call
29952         replace_in_expr to make replacements.  Call replace_single_def_regs
29953         once on the initial version of the expression.
29954
29955 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29956
29957         PR target/27237
29958         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
29959
29960 2009-03-31  Richard Guenther  <rguenther@suse.de>
29961
29962         PR middle-end/31029
29963         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
29964         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
29965
29966 2009-03-31  Richard Guenther  <rguenther@suse.de>
29967
29968         * tree.h (div_if_zero_remainder): Declare.
29969         * fold-const.c (div_if_zero_remainder): Export.
29970         * tree-ssa-forwprop.c
29971         (forward_propagate_addr_into_variable_array_index): Handle
29972         constant array index addition outside of the variable index.
29973
29974 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29975
29976         PR target/39592
29977         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
29978         define_splits, floatunssi<mode>2): Require x87 conversions from
29979         DImode to be permitted.
29980
29981 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29982
29983         PR preprocessor/15638
29984         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
29985
29986 2009-03-31  Richard Guenther  <rguenther@suse.de>
29987
29988         PR middle-end/23401
29989         PR middle-end/27810
29990         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
29991         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
29992         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
29993         a separate statement.
29994         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
29995         (lookup_tmp_var): Likewise.
29996         (is_gimple_formal_tmp_or_call_rhs): Remove.
29997         (is_gimple_reg_or_call_rhs): Rename to ...
29998         (is_gimple_reg_rhs_or_call): ... this.
29999         (is_gimple_mem_or_call_rhs): Rename to ...
30000         (is_gimple_mem_rhs_or_call): ... this.
30001         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
30002         DECL_GIMPLE_REG_P only if is_formal is true.
30003         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
30004         for non-proper post-modify expression gimplification.
30005         (gimplify_self_mod_expr): For post-modify expressions gimplify
30006         the lvalue to a minimal lvalue.
30007         (rhs_predicate_for): Remove formal temp case.
30008         (gimplify_modify_expr_rhs): Likewise.
30009         (gimplify_addr_expr): Use is_gimple_reg.
30010         (gimplify_expr): Remove formal temp cases.
30011         (gimple_regimplify_operands): Likewise.
30012         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
30013         and FILTER_EXPR like constants.
30014         * gimple.c (walk_gimple_op): Fix val_only initialization, use
30015         is_gimple_reg.
30016         (is_gimple_formal_tmp_rhs): Remove.
30017         (is_gimple_reg_rhs): Remove special casing.
30018         (is_gimple_mem_rhs): Fix.
30019         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
30020         (is_gimple_formal_tmp_var): Remove.
30021         (is_gimple_formal_tmp_reg): Likewise.
30022         (is_gimple_min_lval): Allow invariant component ref parts.
30023         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
30024         is_gimple_formal_tmp_reg): Remove declarations.
30025         * tree-cfg.c (verify_expr): Verify that variables with address
30026         taken do not have DECL_GIMPLE_REG_P set.
30027         * tree-mudflap.c (mf_build_check_statement_for): Use
30028         force_gimple_operand instead of gimplify_expr.
30029
30030 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
30031
30032         * modulo-sched.c (sms_schedule_by_order): Pass the actual
30033         schedulable rows to compute_split_row.
30034
30035 2009-03-31  Ben Elliston  <bje@au.ibm.com>
30036
30037         PR target/31635
30038         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
30039         OPT_mvrsave.
30040
30041 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
30042
30043         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
30044         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
30045         * configure: Regenerate.
30046         * config.in: Regenerate.
30047         * config/rs6000/rs6000.opt (mtls-markers): Add.
30048         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
30049         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
30050         (tls_ld_aix, tls_ld_sysv): Likewise.
30051         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
30052         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
30053
30054 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
30055
30056         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
30057
30058 2009-03-30  Jan Hubicka  <jh@suse.cz>
30059
30060         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
30061         out of RESX.
30062         (tree_remove_unreachable_handlers): Cleanup EH predecestor
30063         detection and label handling.
30064
30065 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
30066
30067         * ira-int.h (ira_allocno): Rename left_conflicts_num to
30068         left_conflicts_size.
30069         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
30070         ALLOCNO_LEFT_CONFLICTS_SIZE.
30071
30072         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
30073         remove_allocno_from_bucket_and_push,
30074         allocno_spill_priority_compare, push_allocnos_to_stack,
30075         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
30076         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
30077         (setup_allocno_left_conflicts_num): Ditto.  Rename to
30078         setup_allocno_left_conflicts_size.
30079         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
30080         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
30081         setup_allocno_left_conflicts_size instead of
30082         setup_allocno_left_conflicts_num.
30083
30084         * ira-build.c (ira_create_allocno): Use
30085         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
30086         ALLOCNO_LEFT_CONFLICTS_NUM.
30087
30088 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
30089
30090         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
30091         instead of DF_LR_OUT.
30092
30093         * ira-lives.c (process_bb_node_lives): Ditto.
30094
30095         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
30096         instead of DF_LR_{OUT,IN}.
30097
30098         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
30099
30100         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
30101
30102 2009-03-30  Jan Hubicka  <jh@suse.cz>
30103
30104         * except.c (label_to_region_map): Fix thinko.
30105
30106 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
30107
30108         PR middle-end/38237
30109         * tree.h (tree_find_value): New declaration.
30110         * tree.c (tree_find_value): New function.
30111         * varasm.c (assemble_external): Avoid duplicate entries on lists.
30112
30113 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
30114
30115         PR debug/39563
30116         * c-decl.c (struct c_binding): Add locus field.
30117         (bind): Add locus argument, set locus field from it.
30118         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
30119         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
30120         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
30121         implicitly_declare, undeclared_variable, lookup_label,
30122         declare_label, c_make_fname_decl, c_builtin_function,
30123         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
30124         bind callers.
30125
30126 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
30127
30128         PR target/38781
30129         * config/i386/i386.c (classify_argument): Check total size of
30130         structure.
30131
30132 2009-03-30  Martin Jambor  <mjambor@suse.cz>
30133
30134         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
30135         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
30136         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
30137         respectively.
30138
30139         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
30140         seen_variable_array_ref while also traversing a union.
30141
30142         * tree-inline.c (optimize_inline_calls): Do not call
30143         cgraph_node_remove_callees.
30144         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
30145         (pass_remove_cgraph_callee_edges): New variable.
30146         * passes.c (init_optimization_passes): Add
30147         pass_remove_cgraph_callee_edges after early inlining and before all
30148         late intraprocedural passes.
30149
30150         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
30151
30152 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30153
30154         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
30155         Fix typos in names.
30156
30157 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30158
30159         * combine.c (simplify_comparison): Use have_insn_for.
30160         * dojump.c (do_jump): Likewise.
30161
30162 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30163
30164         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
30165         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
30166         sparc_compare_op0 like sparc_compare_emitted used to be handled.
30167         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
30168         instead of sparc_compare_emitted.
30169         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
30170         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
30171         instead of sparc_compare_emitted.
30172
30173 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30174
30175         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
30176         enter/exit cfglayout mode.
30177         (pass_partition_block): Require it.
30178         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
30179         (combine_instructions): Track basic blocks instead of labels.
30180         (update_cfg_for_uncondjump): New.
30181         (try_combine): Use it.  Update jumps after rescanning.
30182         (pass_combine): Require PROP_cfglayout.
30183         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
30184
30185 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30186
30187         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
30188         Provide/destroy PROP_cfglayout respectively.
30189         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
30190         * tree-pass.h (PROP_cfglayout): New.
30191
30192 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
30193
30194         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
30195         fold_convert_const_fixed_from_fixed,
30196         fold_convert_const_fixed_from_int,
30197         fold_convert_const_fixed_from_real, fold_negate_const): Do not
30198         set TREE_CONSTANT_OVERFLOW.
30199         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
30200         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
30201
30202 2009-03-30  Ira Rosen  <irar@il.ibm.com>
30203
30204         * tree-vect-loop-manip.c: New file.
30205         * tree-vectorizer.c: Update documentation and included files.
30206         (vect_loop_location): Make extern.
30207         (rename_use_op): Move to tree-vect-loop-manip.c
30208         (rename_variables_in_bb, rename_variables_in_loop,
30209         slpeel_update_phis_for_duplicate_loop,
30210         slpeel_update_phi_nodes_for_guard1,
30211         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
30212         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
30213         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
30214         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
30215         find_loop_location): Likewise.
30216         (new_stmt_vec_info): Move to tree-vect-stmts.c.
30217         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
30218         get_vectype_for_scalar_type, vect_is_simple_use,
30219         supportable_widening_operation, supportable_narrowing_operation):
30220         Likewise.
30221         (bb_in_loop_p): Move to tree-vect-loop.c.
30222         (new_loop_vec_info, destroy_loop_vec_info,
30223         reduction_code_for_scalar_code, report_vect_op,
30224         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
30225         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
30226         (vect_supportable_dr_alignment): Likewise.
30227         * tree-vectorizer.h (tree-data-ref.h): Include.
30228         (vect_loop_location): Declare.
30229         Reorganize function declarations according to the new file structure.
30230         * tree-vect-loop.c: New file.
30231         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
30232         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
30233         * tree-vect-data-refs.c: New file.
30234         * tree-vect-patterns.c (timevar.h): Don't include.
30235         * tree-vect-stmts.c: New file.
30236         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
30237         tree-vect-slp.c, tree-vect-loop.c.
30238         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
30239         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
30240         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
30241         (tree-vect-analyze.o): Remove.
30242         (tree-vect-transform.o): Likewise.
30243         (tree-vect-data-refs.o): Add rule.
30244         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
30245         tree-vect-slp.o): Likewise.
30246         (tree-vect-patterns.o): Remove redundant dependencies.
30247         (tree-vectorizer.o): Likewise.
30248         * tree-vect-slp.c: New file.
30249
30250 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30251
30252         * optc-gen.awk: Warn if an option flag has multiple different
30253         help strings.
30254
30255 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
30256
30257         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
30258         -floop-block): Document dependences on PPL, CLooG and Graphite.
30259
30260 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
30261
30262         PR rtl-optimization/323
30263         * c-common.c (c_fully_fold, convert_and_check,
30264         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
30265         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
30266         * c-common.def (EXCESS_PRECISION_EXPR): New.
30267         * c-cppbuiltin.c (builtin_define_float_constants): Define
30268         constants with enough digits for long double.
30269         * c-lex.c (interpret_float): Interpret constant with excess
30270         precision where appropriate.
30271         * c-opts.c (c_common_post_options): Set
30272         flag_excess_precision_cmdline.  Give an error for
30273         -fexcess-precision=standard for C++ for processors where the
30274         option is significant.
30275         * c-parser.c (c_parser_conditional_expression): Handle excess
30276         precision in condition.
30277         * c-typeck.c (convert_arguments): Handle arguments with excess
30278         precision.
30279         (build_unary_op): Move excess precision outside operation.
30280         (build_conditional_expr): Likewise.
30281         (build_compound_expr): Likewise.
30282         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
30283         (build_modify_expr): Handle excess precision in RHS.
30284         (convert_for_assignment): Handle excess precision in converted
30285         value.
30286         (digest_init, output_init_element, process_init_element): Handle
30287         excess precision in initializer.
30288         (c_finish_return): Handle excess precision in return value.
30289         (build_binary_op): Handle excess precision in operands and add
30290         excess precision as needed for operation.
30291         * common.opt (-fexcess-precision=): New option.
30292         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
30293         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
30294         For standard excess precision, output explicit conversion to and
30295         truncation from XFmode.
30296         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
30297         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
30298         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
30299         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
30300         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
30301         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
30302         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
30303         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
30304         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
30305         define_splits, sqrt<mode>2): Disable where appropriate for
30306         standard excess precision.
30307         * convert.c (convert_to_real): Do not shorten arithmetic to type
30308         for which excess precision would be used.
30309         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
30310         * doc/invoke.texi (-fexcess-precision=): Document option.
30311         (-mfpmath=): Correct index entry.
30312         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
30313         flag_excess_precision): New.
30314         * langhooks.c (lhd_post_options): Set
30315         flag_excess_precision_cmdline.
30316         * opts.c (common_handle_option): Handle -fexcess-precision=.
30317         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
30318         init_excess_precision): New.
30319         (lang_dependent_init_target): Call init_excess_precision.
30320         * tree.c (excess_precision_type): New.
30321         * tree.h (excess_precision_type): Declare.
30322
30323 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
30324
30325         PR c/35235
30326         * c-typeck.c (build_component_ref): Do not copy qualifiers from
30327         non-lvalue to component.
30328
30329 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
30330
30331         PR preprocessor/34695
30332         * Makefile.in (c-opts.o): Depend on c-tree.h.
30333         * c-common.c: Move down include of diagnostic.h.
30334         (done_lexing, c_cpp_error): New.
30335         * c-common.h (done_lexing): Declare.
30336         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
30337         (parse_in).
30338         * c-opts.c: Include c-tree.h.
30339         (c_common_init_options): Set preprocessor error callback.
30340         (c_common_handle_option): Do not set preprocessor
30341         inhibit_warnings, warnings_are_errors, warn_system_headers,
30342         pedantic_errors or inhibit_warnings flags.
30343         (c_common_post_options): Do not check cpp_errors (parse_in).
30344         (c_common_finish): Do not output dependencies if there were
30345         errors.  Do not check return value of cpp_finish.
30346         * c-ppoutput.c (pp_file_change): Set input_location.
30347         * c-tree.h (c_cpp_error): Declare.
30348         * diagnostic.c (diagnostic_set_info_translated): Also initialize
30349         override_column.
30350         (diagnostic_build_prefix): Check override_column.
30351         * diagnostic.h (diagnostic_info): Add override_column field.
30352         (diagnostic_override_column): Define.
30353
30354 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
30355
30356         * c-common.c (c_expand_expr, c_staticp): Remove.
30357         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
30358         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
30359         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
30360         * c-gimplify.c (gimplify_compound_literal_expr,
30361         optimize_compound_literals_in_ctor): Remove.
30362         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
30363         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
30364         * c-semantics.c (emit_local_var): Remove.
30365
30366         * langhooks-def.h (lhd_expand_expr): Remove.
30367         * langhooks.c (lhd_expand_expr): Remove.
30368         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
30369
30370         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
30371         handling from c-semantics.c; don't call into langhook.
30372         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
30373         * gimplify.c (gimplify_compound_literal_expr,
30374         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
30375         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
30376         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
30377         as was done in c-gimplify.c.
30378         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
30379         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
30380         Move from c-common.h.
30381         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
30382
30383         * tree.c (staticp): Do not call langhook.
30384         * langhooks.c (lhd_staticp): Delete.
30385         * langhooks-def.h (lhd_staticp): Delete prototype.
30386         (LANG_HOOKS_STATICP): Delete.
30387         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
30388
30389         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
30390         instead of DECL_STMTs.
30391
30392 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
30393
30394         PR c/456
30395         PR c/5675
30396         PR c/19976
30397         PR c/29116
30398         PR c/31871
30399         PR c/35198
30400         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
30401         void_type_node.
30402         (fold_call_expr): Return a NOP_EXPR from folding rather than the
30403         contained expression.
30404         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
30405         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
30406         conditional expressions for C.
30407         (decl_constant_value_for_optimization): Move from
30408         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
30409         whether optimizing and that the expression is a VAR_DECL not of
30410         array type instead of doing such checks in the caller.  Do not
30411         check pedantic.  Call gcc_unreachable for C++.
30412         * c-common.def (C_MAYBE_CONST_EXPR): New.
30413         * c-common.h (c_fully_fold, c_save_expr,
30414         decl_constant_value_for_optimization): New prototypes.
30415         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
30416         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
30417         EXPR_INT_CONST_OPERANDS): Define.
30418         * c-convert.c (convert): Strip nops from expression.
30419         * c-decl.c (groktypename): Take extra parameters expr and
30420         expr_const_operands.  Update call to grokdeclarator.
30421         (start_decl): Update call to grokdeclarator.  Add statement for
30422         expressions used in type of decl.
30423         (grokparm): Update call to grokdeclarator.
30424         (push_parm_decl): Update call to grokdeclarator.
30425         (build_compound_literal): Add parameter non_const and build a
30426         C_MAYBE_COSNT_EXPR if applicable.
30427         (grokdeclarator): Take extra parameters expr and
30428         expr_const_operands.  Track expressions used in declaration
30429         specifiers and declarators.  Fold array sizes and track whether
30430         they are constant expressions and whether they are integer
30431         constant expressions.
30432         (parser_xref_tag): Set expr and expr_const_operands fields in
30433         return value.
30434         (grokfield): Update call to grokdeclarator.
30435         (start_function): Update call to grokdeclarator.
30436         (build_null_declspecs): Set expr and expr_const_operands fields in
30437         return value.
30438         (declspecs_add_type): Handle expressions in typeof specifiers.
30439         * c-parser.c (c_parser_declspecs): Set expr and
30440         expr_const_operands fields for declaration specifiers.
30441         (c_parser_enum_specifier): Likewise.
30442         (c_parser_struct_or_union_specifier): Likewise.
30443         (c_parser_typeof_specifier): Likewise.  Update call to
30444         groktypename.  Fold expression as needed.  Return expressions with
30445         type instead of adding statements.
30446         (c_parser_attributes): Update calls to c_parser_expr_list.
30447         (c_parser_statement_after_labels): Fold expression before passing
30448         to objc_build_throw_stmt.
30449         (c_parser_condition): Fold expression.
30450         (c_parser_asm_operands): Fold expression.
30451         (c_parser_conditional_expression): Use c_save_expr.  Update call
30452         to build_conditional_expr.
30453         (c_parser_alignof_expression): Update call to groktypename.
30454         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
30455         original_code.  Fold expression argument of va_arg.  Create
30456         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
30457         argument to va_arg.  Update calls to groktypename.  Fold array
30458         index for offsetof.  Verify that first argument to
30459         __builtin_choose_expr has integer type.
30460         (c_parser_postfix_expression_after_paren_type): Update calls to
30461         groktypename and build_compound_literal.  Handle expressions with
30462         side effects in type name.
30463         (c_parser_postfix_expression_after_primary): Update call to
30464         c_parser_expr_list.  Set original_code for calls to
30465         __builtin_constant_p.
30466         (c_parser_expr_list): Take extra parameter fold_p.  Fold
30467         expressions if requested.
30468         (c_parser_objc_type_name): Update call to groktypename.
30469         (c_parser_objc_synchronized_statement): Fold expression.
30470         (c_parser_objc_receiver): Fold expression.
30471         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
30472         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
30473         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
30474         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
30475         (struct c_typespec): Add elements expr and expr_const_operands.
30476         (struct c_declspecs): Add elements expr and expr_const_operands.
30477         (groktypename, build_conditional_expr, build_compound_literal):
30478         Update prototypes.
30479         (in_late_binary_op): Declare.
30480         * c-typeck.c (note_integer_operands): New function.
30481         (in_late_binary_op): New variable.
30482         (decl_constant_value_for_broken_optimization): Move to c-common.c
30483         and rename to decl_constant_value_for_optimization.
30484         (default_function_array_conversion): Do not strip nops.
30485         (default_conversion): Do not call
30486         decl_constant_value_for_broken_optimization.
30487         (build_array_ref): Do not fold result.
30488         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
30489         result when operand is a VLA.
30490         (c_expr_sizeof_type): Update call to groktypename.  Handle
30491         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
30492         result when operand names a VLA type.
30493         (build_function_call): Update call to build_compound_literal.
30494         Only fold result for calls to __builtin_* functions.  Strip
30495         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
30496         the function designator.
30497         (convert_arguments): Fold arguments.  Update call to
30498         convert_for_assignment.
30499         (build_unary_op): Handle increment and decrement of
30500         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
30501         decrement earlier.  Fold operand of increment and decrement.
30502         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
30503         built for integer operand.  Wrap returns that are INTEGER_CSTs
30504         without being integer constant expressions or that have integer
30505         constant operands without being INTEGER_CSTs.
30506         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
30507         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
30508         result is an integer constant expression or can be used in
30509         unevaluated parts of one and avoid folding and wrap as
30510         appropriate.  Fold operands before possibly doing -Wsign-compare
30511         warnings.
30512         (build_compound_expr): Wrap result for C99 if operands can be used
30513         in integer constant expressions.
30514         (build_c_cast): Update call to digest_init.  Do not ignore
30515         overflow from casting floating-point constants to integers.  Wrap
30516         results that could be confused with integer constant expressions,
30517         null pointer constants or floating-point constants.
30518         (c_cast_expr): Update call to groktypename.  Handle expressions
30519         included in type name.
30520         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
30521         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
30522         Update calls to convert_for_assignment.
30523         (convert_for_assignment): Take new parameter
30524         null_pointer_constant.  Do not strip nops or call
30525         decl_constant_value_for_broken_optimization.  Set
30526         in_late_binary_op for conversions to boolean.
30527         (store_init_value): Update call to digest_init.
30528         (digest_init): Take new parameter null_pointer_constant.  Do not
30529         call decl_constant_value_for_broken_optimization.  pedwarn for
30530         initializers not constant expressions.  Update calls to
30531         convert_for_assignment.
30532         (constructor_nonconst): New.
30533         (struct constructor_stack): Add nonconst element.
30534         (really_start_incremental_init, push_init_level, pop_init_level):
30535         Handle constructor_nonconst and nonconst element.
30536         (set_init_index): Call constant_expression_warning for array
30537         designators.
30538         (output_init_element): Fold value.  Set constructor_nonconst as
30539         applicable.  pedwarn for initializers not constant expressions.
30540         Update call to digest_init.  Call constant_expression_warning
30541         where constant initializers are required.
30542         (process_init_element): Use c_save_expr.
30543         (c_finish_goto_ptr): Fold expression.
30544         (c_finish_return): Fold return value.  Update call to
30545         convert_for_assignment.
30546         (c_start_case): Fold switch expression.
30547         (c_process_expr_stmt): Fold expression.
30548         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
30549         ensure statement expression is not evaluated in constant expression.
30550         (build_binary_op): Track whether results are integer constant
30551         expressions or may occur in such, disable folding and wrap results
30552         as applicable.  Fold operands for -Wsign-compare warnings unless
30553         in_late_binary_op.
30554         (c_objc_common_truthvalue_conversion): Handle results folded to
30555         integer constants that are not integer constant expressions.
30556         * doc/extend.texi: Document when typeof operands are evaluated,
30557         that condition of __builtin_choose_expr is an integer constant
30558         expression, and more about use of __builtin_constant_p in
30559         initializers.
30560
30561 2009-03-29  Richard Guenther  <rguenther@suse.de>
30562
30563         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
30564         propagate addresses of array references.
30565
30566 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
30567
30568         * regmove.c (perhaps_ends_bb_p): Remove.
30569         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
30570         from INSN and check that the main loop stays within that basic block.
30571         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
30572         (regmove_forward_pass): Split out from regmove_optimize.  Use
30573         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
30574         (regmove_backward_pass): Split out from regmove_optimize.  Use
30575         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
30576         (regmove_optimize): Simplify.
30577
30578 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30579
30580         PR target/39545
30581         * config/i386/i386.c (classify_argument): Ignore flexible array
30582         member in struct and warn ABI change.
30583
30584 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
30585
30586         * config/i386/i386-protos.h (ix86_agi_dependent): New.
30587
30588         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
30589         (ix86_adjust_cost): Updated.
30590
30591 2009-03-29  Jan Hubicka  <jh@suse.cz>
30592
30593         PR middle-end/28850
30594         * tree-pass.h (pass_cleanup_eh): New function.
30595         (remove_unreachable_regions): Break code handling RTL
30596         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
30597         that can not be reached by runtime.
30598         (can_be_reached_by_runtime): New function.
30599         (label_to_region_map): New function.
30600         (num_eh_regions): New function.
30601         (rtl_remove_unreachable_regions): New function.
30602         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
30603         (remove_eh_region): New function.
30604         * except.h: Include sbitmap and vecprim.
30605         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
30606         num_eh_regions): Declare.
30607         * passes.c (init_optimization_passes): Schedule cleanup_eh.
30608         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
30609         * tree-eh.c (tree_remove_unreachable_handlers): New function.
30610         (tree_empty_eh_handler_p): New function.
30611         (cleanup_empty_eh): New function.
30612         (cleanup_eh): New function.
30613         (pass_cleanup_eh): New function.
30614
30615 2009-03-29  Jan Hubicka  <jh@suse.cz>
30616
30617         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
30618         for removed regions.
30619
30620 2009-03-29  Jan Hubicka  <jh@suse.cz>
30621
30622         * except.c (dump_eh_tree): Dump all datastructures.
30623
30624 2009-03-29  Jan Hubicka  <jh@suse.cz>
30625
30626         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
30627         (duplicate_eh_regions_1): Likewise.
30628         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
30629         vector; call EH verification.
30630         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30631         Be ready for region being removed.
30632
30633 2009-03-29  Jan Hubicka  <jh@suse.cz>
30634
30635         * bitmap.c (bitmap_last_set_bit): New function.
30636         * bitmap.h (bitmap_last_set_bit): Declare.
30637
30638 2009-03-29  David Ayers  <ayers@fsfe.org>
30639
30640         PR objc/27377
30641         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
30642         by calling objc_compare_types and surpress warnings about
30643         incompatible C pointers that are compatible ObjC pointers.
30644
30645 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
30646
30647         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
30648         call initialize_inline_failed.
30649         (initialize_inline_failed): Move it from here ...
30650         * cgraph.c (initialize_inline_failed): ... to here.
30651         (cgraph_create_edge): Call initialize_inline_failed rather than
30652         setting inline_failed directly.
30653
30654 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30655
30656         PR target/32542
30657         * sysv4.opt (msdata): Improve comment.
30658         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
30659         * sysv4.h (SVR4_ASM_SPEC): Likewise.
30660
30661 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30662
30663         PR target/30451
30664         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
30665         load and store attributes.
30666
30667 2009-03-29  Ben Elliston  <bje@au.ibm.com>
30668
30669         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
30670         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
30671         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
30672         * doc/extend.texi (X86 Built-in Functions): Add index entries for
30673         __builtin_infq and __builtin_huge_valq.
30674
30675 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
30676
30677         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
30678         atmega8m1 devices.
30679         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
30680         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
30681
30682 2009-03-28  Xinliang David Li  <davidxl@google.com>
30683
30684         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
30685         (do_dbg_cnt): New function.
30686
30687 2009-03-28  Jan Hubicka  <jh@suse.cz>
30688
30689         Merge from pretty-ipa:
30690
30691         2009-03-27  Jan Hubicka  <jh@suse.cz>
30692
30693         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30694         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
30695         * passes.c (function_called_by_processed_nodes_p): New.
30696         * ipa-pure-const.c (check_call): Fix handling of operands.
30697         (analyze_function): Dump debug output for skipped bodies.
30698         (local_pure_const): Use function_called_by_processed_nodes_p.
30699         * dwarf2out.c (reference_to_unused): Use output.
30700         * passes.c (do_per_function_toporder): Likewise.
30701
30702         2008-11-12  Jan Hubicka  <jh@suse.cz>
30703
30704         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
30705         * ipa-pure-const.c (funct_state_d): Add can throw field; make
30706         state_set_in_source enum
30707         (check_decl): Ignore memory tags; do not set fake looping flags;
30708         dump diagnostics.
30709         (check_operand, check_tree, check_rhs_var, check_lhs_var,
30710         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
30711         (check_call, analyze_function): Rewrite.
30712         (check_stmt): New.
30713         (add_new_function): Update call of analyze_function.
30714         (generate_summary): Add call of analyze_function.
30715         (propagate): Propagate can_throw; handle state_set_in_source correctly.
30716         (local_pure_const): New function.
30717         (pass_local_pure_const): New pass.
30718         * ipa-inline.c (inline_transform): Set after_inlining.
30719         * tree-eh.c (stmt_can_throw_external): New.
30720         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
30721         work with aliasing built.
30722         * tree-flow.h (stmt_can_throw_external): New.
30723         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
30724         and local pure/const pass in early and late optimization queue.
30725
30726 2009-03-28  Martin Jambor  <mjambor@suse.cz>
30727
30728         * fold-const.c (get_pointer_modulus_and_residue): New parameter
30729         allow_func_align.
30730         (fold_binary): Allow function decl aligment consideration is the
30731         second argument is integer constant one.
30732         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
30733         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
30734         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
30735
30736 2009-03-28  Jan Hubicka  <jh@suse.cz>
30737
30738         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
30739         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
30740         * function.h (rtl_data): Add nothrow flag.
30741         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
30742         set DECL_NOTHROW for AVAILABLE functions.
30743
30744 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
30745
30746         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
30747         following vector keyword has expansion starting with pixel or bool
30748         keyword, expand vector to __vector and pixel or bool to __pixel or
30749         __bool.
30750
30751         PR c++/39554
30752         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
30753         warn_if_disallowed_function_p): Removed.
30754         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
30755         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
30756         warning_if_disallowed_function_p.
30757         * flags.h (warn_if_disallowed_function_p,
30758         warn_disallowed_functions): Removed.
30759         * common.opt (Wdisallowed-function-list=): Removed.
30760         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
30761
30762 2009-03-28  Richard Guenther  <rguenther@suse.de>
30763
30764         PR tree-optimization/38723
30765         * tree-ssa-pre.c (compute_avail): Add all default definitions to
30766         the entry block.
30767
30768 2009-03-28  Jan Hubicka  <jh@suse.cz>
30769
30770         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
30771         test introduced by my previous patch.
30772
30773 2009-03-28  Richard Guenther  <rguenther@suse.de>
30774
30775         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
30776         the PHIs value undefined.
30777
30778 2009-03-28  Jan Hubicka  <jh@suse.cz>
30779
30780         * tree-pass.h (pass_fixup_cfg): New pass.
30781         * ipa-inline.c (inline_transform): Set
30782         always_inline_functions_inlined/after_inlining.
30783         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
30784         (pass_fixup_cfg): New pass.
30785         * passes.c (init_optimization_passes): Add fixup_cfg.
30786
30787 2009-03-28  Richard Guenther  <rguenther@suse.de>
30788
30789         PR tree-optimization/38458
30790         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
30791         argument use the arguments copy-of value.
30792
30793 2009-03-28  Richard Guenther  <rguenther@suse.de>
30794
30795         PR tree-optimization/38180
30796         * tree-ssa-ccp.c (get_default_value): Simplify.
30797         (likely_value): Likewise.
30798         (surely_varying_stmt_p): Properly handle VOP case.
30799         (ccp_initialize): Likewise.
30800         (ccp_fold): Handle propagating through *&.
30801         (fold_const_aggregate_ref): Also handle decls.
30802
30803 2009-03-28  Jan Hubicka  <jh@suse.cz>
30804
30805         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
30806         * cgraph.h (cgraph_node): Likewise.
30807         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
30808         (cgraph_reset_node): Use process flag.
30809         (cgraph_mark_functions_to_output): Likewise.
30810         (cgraph_expand_function): Likewise.
30811         (cgraph_expand_all_functions): Likewise.
30812         (cgraph_output_in_order): Likewise.
30813         * dwarf2out.c (reference_to_unused): Likewise.
30814         * passes.c do_per_function_toporder): Likewise.
30815
30816 2009-03-28  Jan Hubicka  <jh@suse.cz>
30817
30818         Bring from lto-branch:
30819
30820         2008-09-03  Doug Kwan  <dougkwan@google.com>
30821
30822         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
30823         enums instead of reason strings.
30824         * cgraph.c (cgraph_create_edge): Same.
30825         (cgraph_inline_failed_string): New function.
30826         * cgraph.h (cgraph_inline_failed_t): New enum type.
30827         (cgraph_inline_failed_string): New prototype.
30828         (struct cgraph_edge): Change type of INLINED_FAILED from constant
30829         char pointer to cgraph_inline_failed_t.
30830         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
30831         (cgraph_default_inline_p): Ditto.
30832         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
30833         to cgraph_inline_failed_t pointer.
30834         * cif-code.def: New file.
30835         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
30836         reason string.
30837         (cgraph_check_inline_limits): Change type of REASON to pointer to
30838         cgraph_inline_failed_t.  Replace reason strings with enums.
30839         (cgraph_default_inline_p): Ditto.
30840         (cgraph_recursive_inlining_p): Ditto.
30841         (update_caller_keys): Change type of FAILED_REASON to
30842         cgraph_inline_failed_t.
30843         (cgraph_set_inline_failed): Change type of REASON to pointer to
30844         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
30845         convert enums to strings for text output.
30846         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
30847         to be of type cgraph_inline_failed_t.  Replace reason strings with
30848         enums.  Call cgraph_inline_failed_string to covert enums
30849         to strings for text output.
30850         (cgraph_decide_inlining): Replace reason strings with enums.
30851         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
30852         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
30853         for text output.
30854         * tree-inline.c (expand_call_inline): Change type of REASON
30855         to cgraph_inline_failed_t.  Replace reason strings with enums.
30856         Call cgraph_inline_failed_string for text output.
30857         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
30858         (cgraph.o): Ditto.
30859
30860 2009-03-28  Jan Hubicka  <jh@suse.cz>
30861
30862         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
30863         cgraph_clone_node): Remove master clone handling.
30864         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30865         * cgraph.h (master_clone): Remove.
30866         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30867         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
30868         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
30869
30870 2009-03-28  Jan Hubicka  <jh@suse.cz>
30871
30872         * cgraph.c (cgraph_function_body_availability): Functions declared
30873         inline are always safe to assume that it is not going to be replaced.
30874
30875 2009-03-28  Richard Guenther  <rguenther@suse.de>
30876
30877         PR tree-optimization/38513
30878         * tree-ssa-pre.c (eliminate): Remove redundant stores.
30879         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
30880         EXC_PTR_EXPR and FILTER_EXPR.
30881         (get_ref_from_reference_ops): Likewise.
30882
30883 2009-03-28  Richard Guenther  <rguenther@suse.de>
30884
30885         PR tree-optimization/38968
30886         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
30887         Use FLOOR_MOD_EXPR to compute misalignment.
30888
30889 2009-03-28  Richard Guenther  <rguenther@suse.de>
30890
30891         PR tree-optimization/37795
30892         * tree.h (combine_comparisons): Declare.
30893         * fold-const.c (combine_comparisons): Export.
30894         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
30895         comparisons.
30896         (ifcombine_iforif): Use combine_comparisons.
30897
30898 2009-03-28  Jan Hubicka  <jh@suse.cz>
30899
30900         * tree-eh.c (inlinable_call_p): New function.
30901         (make_eh_edges): Use it.
30902         (verify_eh_edges): Use it.
30903         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
30904         * except.c (reachable_next_level): Add inlinable_function argument
30905         (sjlj_find_directly_reachable_regions): Update.
30906         (add_reachable_handler): Do not set saw_any_handlers.
30907         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
30908         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30909         Add new inlinable call parameter.
30910         (can_throw_internal, can_throw_external): Update.
30911         * except.h (can_throw_internal_1, can_throw_external_1,
30912         foreach_reachable_handler): Update declaration.
30913
30914 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
30915
30916         * config/arm/t-arm-coff, config/h8300/coff.h,
30917         config/i386/i386-aout.h, config/i386/i386-coff.h,
30918         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
30919         config/pdp11/2bsd.h, config/rs6000/aix41.h,
30920         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
30921         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
30922         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
30923         sys-types.h: Remove.
30924         * Makefile.in: Remove protoize and fixproto support and references
30925         in comments.
30926         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
30927         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
30928         Remove.
30929         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
30930         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
30931         unprotoize$(exeext).
30932         (rest.encap): Don't depend on $(STMP_FIXPROTO)
30933         (.PHONY): Don't depend on proto.
30934         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
30935         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
30936         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
30937         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
30938         build/gen-protos.o, build/scan.o, xsys-protos.h,
30939         build/fix-header$(build_exeext), build/fix-header.o,
30940         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
30941         stmp-install-fixproto): Remove.
30942         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
30943         SYSCALLS.c or fixproto files.
30944         (install-common): Don't install protoize.
30945         (install-headers-tar, install-headers-cpio, install-headers-cp):
30946         Don't depend on $(STMP_FIXPROTO).
30947         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
30948         install fixproto files or write out fixproto settings.
30949         (uninstall): Don't uninstall protoize.
30950         * config.gcc (use_fixproto): Remove.
30951         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
30952         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
30953         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
30954         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
30955         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
30956         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
30957         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
30958         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
30959         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
30960         * config/t-vxworks (STMP_FIXPROTO): Remove.
30961         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
30962         STMP_FIXPROTO): Remove.
30963         * config.in, configure: Regenerate.
30964         * crtstuff.c (gid_t, uid_t): Don't undefine.
30965         * doc/install.texi: Change m68k-coff to m68k-elf in example.
30966         (arm-*-coff, arm-*-aout: Remove target entries.
30967         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
30968         Remove mention of AIX 4.1.
30969         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
30970         * doc/invoke.texi (Running Protoize): Remove.
30971         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
30972         (Protoize Caveats): Remove.
30973         * tsystem.h: Update comments on headers assumed to exist.
30974
30975 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
30976
30977         * genautomata.c: Add a new year to the copyright.  Add a new
30978         reference.
30979         (struct insn_reserv_decl): Add comments for member bypass_list.
30980         (find_bypass): Remove.
30981         (insert_bypass): New.
30982         (process_decls): Use insert_bypass.
30983         (output_internal_insn_latency_func): Output all bypasses with the
30984         same input insn in one switch case.
30985
30986         * rtl.def (define_bypass): Describe bypass choice.
30987         * doc/md.texi (define_bypass): Ditto.
30988
30989 2009-03-27  Richard Guenther  <rguenther@suse.de>
30990
30991         * gimplify.c (mark_addressable): Export.
30992         * tree-flow.h (mark_addressable): Declare.
30993         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
30994         * tree-ssa.c (verify_phi_args): Verify that address taken
30995         variables have TREE_ADDRESSABLE set.
30996
30997 2009-03-27  Richard Guenther  <rguenther@suse.de>
30998
30999         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
31000         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
31001         Do not mark decls TREE_ADDRESSABLE.
31002         (build_fold_addr_expr): Adjust.
31003         (fold_addr_expr): Remove.
31004         (fold_unary): Use build_fold_addr_expr.
31005         (fold_comparison): Likewise.
31006         (split_address_to_core_and_offset): Likewise.
31007         * coverage.c (tree_coverage_counter_addr): Mark the array decl
31008         TREE_ADDRESSABLE.
31009         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
31010         (gimplify_modify_expr_to_memcpy): Mark source and destination
31011         addressable.
31012         * omp-low.c (create_omp_child_function): Mark the object decl
31013         TREE_ADDRESSABLE.
31014         (lower_rec_input_clauses): Mark the var we take the address of
31015         TREE_ADDRESSABLE.
31016         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
31017
31018 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31019
31020         PR middle-end/39315
31021         * cfgexpand.c (expand_one_stack_var_at): Change alignment
31022         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
31023
31024 2009-03-27  Richard Guenther  <rguenther@suse.de>
31025
31026         PR tree-optimization/39120
31027         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
31028         constraints.
31029         (handle_lhs_call): Process return constraints.  Add escape
31030         constraints if necessary.
31031         (handle_const_call): Fill out return constraints.  Make nested
31032         case more precise.  Avoid consttmp if possible.
31033         (handle_pure_call): Fill out return constraints.  Avoid
31034         callused if possible.
31035         (find_func_aliases): Simplify call handling.
31036
31037 2009-03-27  Richard Guenther  <rguenther@suse.de>
31038
31039         PR tree-optimization/39120
31040         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
31041         as a representative.
31042         (solve_graph): Do propagate CALLUSED.
31043         (handle_pure_call): Use a scalar constraint from CALLUSED for
31044         the return value.
31045         (find_what_p_points_to): CALLUSED shall not appear in poins-to
31046         solutions.
31047
31048 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31049
31050         PR c/39323
31051         * c-common.c (handle_aligned_attribute): Properly check alignment
31052         overflow.  Use (1U << i) instead of (1 << i).
31053
31054         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
31055
31056         * expr.h (get_mem_align_offset): Updated.
31057
31058         * tree.h (tree_decl_common): Change align to "unsigned int" and
31059         move it before pointer_alias_set.
31060
31061 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31062             Jakub Jelinek  <jakub@redhat.com>
31063
31064         PR target/38034
31065         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
31066         gr_register_operand with gr_reg_or_0_operand.
31067         (cmpxchg_rel_di): Likewise.
31068         (sync_lock_test_and_set<mode>): Likewise.
31069
31070 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31071
31072         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
31073         (true_regnum): Likewise.
31074
31075         * rtlanal.c (subreg_info): Moved to ...
31076         * rtl.h (subreg_info): Here.  New.
31077         (subreg_get_info): New.
31078
31079         * rtlanal.c (subreg_get_info): Make it extern.
31080
31081 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31082
31083         PR target/39472
31084         * config/i386/i386.c (ix86_abi): New.
31085         (override_options): Handle -mabi=.
31086         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
31087         (ix86_call_abi_override): Likewise.
31088         (init_cumulative_args): Likewise.
31089         (function_arg_advance): Likewise.
31090         (function_arg_64): Likewise.
31091         (function_arg): Likewise.
31092         (ix86_pass_by_reference): Likewise.
31093         (ix86_function_value_regno_p): Likewise.
31094         (ix86_build_builtin_va_list_abi): Likewise.
31095         (setup_incoming_varargs_64): Likewise.
31096         (is_va_list_char_pointer): Likewise.
31097         (ix86_init_machine_status): Likewise.
31098         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
31099         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
31100         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
31101         (ix86_function_abi): Make it static and return enum calling_abi.
31102         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
31103         with ix86_abi.
31104         (ix86_fn_abi_va_list): Updated.
31105
31106         * config/i386/i386.h (ix86_abi): New.
31107         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
31108         (CONDITIONAL_REGISTER_USAGE): Likewise.
31109         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
31110         (machine_function): Likewise.
31111
31112         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
31113         with ix86_abi.
31114         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
31115         (STACK_BOUNDARY): Likewise.
31116         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
31117
31118         * config/i386/i386.opt (mabi=): New.
31119
31120         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
31121         return enum calling_abi.
31122         (ix86_function_type_abi): Likewise.
31123         (ix86_function_abi): Removed.
31124
31125         * doc/invoke.texi: Document -mabi= option for x86.
31126
31127 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
31128
31129         * builtins.c (real_dconstp): Delete.
31130         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
31131
31132 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
31133             Jakub Jelinek  <jakub@redhat.com>
31134
31135         PR debug/37959
31136         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
31137         (gen_subprogram_die): When a function is explicit, generate the
31138         DW_AT_explicit attribute.
31139         * langhooks.h (struct lang_hooks_for_decls): Add
31140         function_decl_explicit_p langhook.
31141         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
31142         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
31143
31144 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
31145
31146         * builtins.c (fold_builtin_memory_op): Optimize memmove
31147         into memcpy if we can prove source and destination don't overlap.
31148
31149         * tree-inline.c: Include gt-tree-inline.h.
31150         (clone_fn_id_num): New variable.
31151         (clone_function_name): New function.
31152         (tree_function_versioning): Use it.
31153         * Makefile.in (GTFILES): Add tree-inline.c.
31154
31155 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
31156
31157         * BASE-VER: Change to 4.5.0.
31158
31159 2009-03-27  Xinliang David Li  <davidxl@google.com>
31160
31161         PR tree-optimization/39557
31162         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
31163
31164 2009-03-27  Xinliang David Li  <davidxl@google.com>
31165
31166         PR tree-optimization/39548
31167         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
31168         candidate check.
31169
31170 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31171
31172         * c-common.c (pointer_int_sum): Use %wd on return from
31173         tree_low_cst.
31174
31175 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
31176
31177         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
31178         on return from tree_low_cst.
31179
31180 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31181
31182         PR c++/36799
31183         * ginclude/stdarg.h (va_copy): Define also for
31184         __GXX_EXPERIMENTAL_CXX0X__.
31185
31186 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
31187
31188         PR c++/35652
31189         * builtins.h (c_strlen): Do not warn here.
31190         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
31191         * c-common.c (pointer_int_sum): Take an explicit location.
31192         Warn about offsets out of bounds.
31193         * c-common.h (pointer_int_sum): Adjust declaration.
31194
31195 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31196
31197         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
31198         markup glitch.
31199
31200 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
31201
31202         PR c++/39554
31203         * opts.c (warn_if_disallowed_function_p): Don't assume
31204         get_callee_fndecl must return non-NULL.
31205
31206 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
31207
31208         PR rtl-optimization/39522
31209         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
31210         when reg_reloaded_valid is set.
31211
31212 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31213
31214         * config/spu/divv2df3.c: New file.
31215         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
31216         (DPBIT_FUNCS): Filter out _div_df.
31217
31218 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
31219
31220         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
31221         a jump insn, count that jump in the distance to the loop start.
31222
31223 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
31224
31225         PR target/39523
31226         * config/sh/sh.c (calc_live_regs): Fix condition for global
31227         registers except PIC_OFFSET_TABLE_REGNUM.
31228
31229 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
31230
31231         PR/39518
31232         * doc/invoke.texi (-mconsole): New.
31233         (-mcygwin): New.
31234         (-mno-cygwin): New.
31235         (-mdll): New.
31236         (-mnop-fun-dllimport): New.
31237         (-mthread): New.
31238         (-mwin32): New.
31239         (-mwindows): New.
31240         (sub section "i386 and x86-64 Windows Options"): New.
31241
31242 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
31243
31244         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
31245         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
31246
31247 2009-03-25  Richard Guenther  <rguenther@suse.de>
31248
31249         PR middle-end/39497
31250         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
31251         of -Wno-error.
31252
31253 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
31254
31255         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
31256         neither of haifa/selective schedulers are working.
31257
31258 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31259
31260         * doc/invoke.texi (Debugging Options): Fix description of
31261         -fno-merge-debug-strings.
31262
31263 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
31264
31265         * config/cris/libgcc.ver: New version-script.
31266         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
31267
31268         * configure.ac <GAS features, nop mnemonic>: Add pattern
31269         crisv32-*-* for "nop".
31270         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
31271         * configure: Regenerate.
31272
31273 2009-03-24  Ira Rosen  <irar@il.ibm.com>
31274
31275         PR tree-optimization/39529
31276         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
31277         mark_sym_for_renaming for the tag copied to the new vector
31278         pointer.
31279
31280 2009-03-24  Arthur Loiret  <aloiret@debian.org>
31281
31282         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
31283         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
31284         EXTRA_SPEC_FUNCTIONS.
31285         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
31286         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
31287         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
31288         -march and -mtune options.
31289
31290 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
31291
31292         * config/m68k/t-rtems: Add m5329 multilib.
31293
31294 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
31295             Jakub Jelinek  <jakub@redhat.com>
31296
31297         PR debug/39524
31298         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
31299         nodes.
31300
31301 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
31302
31303         PR c/39495
31304         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
31305         instead of c_parser_expression_conv, if original_code isn't one of the
31306         4 allowed comparison codes, fail.
31307
31308 2009-03-23  Richard Guenther  <rguenther@suse.de>
31309
31310         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
31311         * tree.h (struct tree_type): Likewise.
31312         * reload.h (struct insn_chain): Likewise.
31313         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
31314         * function.h (struct function): Likewise.
31315         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
31316
31317 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
31318
31319         PR tree-optimization/39516
31320         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
31321
31322 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
31323
31324         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
31325         should be set true if BITS_PER_WORD of target is bigger than 32
31326
31327 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
31328
31329         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
31330         Translate -B-options to -rpath-link.  Correct existing
31331         rpath-link and conditionalize on !nostdlib.
31332
31333 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31334
31335         * doc/extend.texi (Function Attributes, Variable Attributes):
31336         Fix typos.
31337         * doc/invoke.texi (Debugging Options, Optimize Options)
31338         (i386 and x86-64 Options, MCore Options): Likewise.
31339
31340 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
31341
31342         PR debug/37890
31343         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
31344         it for block local namespace aliases.
31345         (gen_decl_die): Pass context_die to gen_namespace_die.
31346
31347 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
31348
31349         PR c/39495
31350         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
31351         minimum or maximum value.
31352
31353 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
31354
31355         * reginfo.c (globalize_reg): Recompute derived reg sets.
31356
31357 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
31358
31359         PR target/39063
31360         * libgcc2.c (mprotect): Do not use signed arguments for
31361         VirtualProtect, use DWORD arguments.  Also fix the 'may
31362         be used uninitialized' warning for the np variable.
31363
31364 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
31365
31366         PR target/39496
31367         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
31368         functions using regparm calling conventions when not optimizing.
31369         (ix86_function_sseregparm): Similarly for sseregparm calling
31370         conventions.
31371
31372 2009-03-19  Li Feng  <nemokingdom@gmail.com>
31373
31374         PR middle-end/39500
31375         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
31376         dependence if the first conflict is after niter iterations.
31377
31378 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
31379
31380         PR middle-end/38609
31381         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
31382         functions with dynamic stack-pointer adjustments.
31383
31384 2009-03-19  Ben Elliston  <bje@au.ibm.com>
31385
31386         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
31387         option; change to -msdata=data.
31388
31389 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31390
31391         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
31392         and -fopenmp.
31393
31394 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
31395
31396         PR target/35180
31397         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
31398
31399 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
31400
31401         * doc/invoke.texi (Code Gen Options): Expand discussion of
31402         -fno-common.
31403
31404 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
31405
31406         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
31407         * matrix-reorg.c (struct matrix_info): Likewise.
31408         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
31409         * rtl.h (struct mem_attrs): Likewise.
31410         * df.h (struct df): Likewise.
31411         * tree-data-ref.h (struct data_dependence_relation): Likewise.
31412         * ira-int.h (struct ira_allocno): Likewise.
31413         * df-scan.c (struct df_collection_rec): Likewise.
31414         * ira.c (struct equivalence): Likewise.
31415         * function.c (struct temp_slot): Likewise.
31416         * cfgloop.h (struct loop): Likewise.
31417
31418         PR debug/39485
31419         * function.c (use_register_for_decl): When not optimizing, disregard
31420         register keyword for variables with types containing methods.
31421
31422 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
31423
31424         PR middle-end/39447
31425         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
31426         (is_simple_operand): Call contains_component_ref_p before calling data
31427         reference analysis that would fail on COMPONENT_REFs.
31428
31429         * tree-vrp.c (search_for_addr_array): Fix formatting.
31430
31431 2009-03-18  Richard Guenther  <rguenther@suse.de>
31432
31433         * tree-vect-transform.c (vect_loop_versioning): Fold the
31434         generated comparisons.
31435         * tree-vectorizer.c (set_prologue_iterations): Likewise.
31436         (slpeel_tree_peel_loop_to_edge): Likewise.
31437
31438 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31439
31440         PR middle-end/37805
31441         * opts.c (print_specific_help): In addition to `undocumented',
31442         accept `separate' and `joined' flags if passed alone.  Describe
31443         output by the first matched one of those.
31444         (common_handle_option): Skip over empty strings.
31445         * gcc.c (display_help): Fix help string for `--help='.
31446         * doc/invoke.texi (Option Summary, Overall Options): With
31447         `--help=', classes and qualifiers can both be repeated, but
31448         only the latter can be negated.  One should not pass only
31449         negated qualifiers.  Fix markup and examples.
31450
31451         Revert
31452         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
31453         PR middle-end/37805
31454         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
31455         and -fhelp=separate.
31456
31457 2009-03-17  Jing Yu  <jingyu@google.com>
31458
31459         PR middle-end/39378
31460         * function.h (struct rtl_data): Move is_thunk from here...
31461         (struct function): ...to here.
31462         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
31463         * varasm.c (assemble_start_function): Change is_thunk from crtl to
31464         cfun.
31465         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
31466         cfun.
31467         (alpha_does_function_need_gp, alpha_start_function): Likewise.
31468         (alpha_output_function_end_prologue): Likewise.
31469         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
31470         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
31471         (rs6000_output_function_epilogue): Likewise.
31472         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
31473
31474 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
31475
31476         PR target/39482
31477         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
31478         from different units in a single alternative.
31479         (*truncdfsf_i387): Ditto.
31480         (*truncxfsf2_mixed): Ditto.
31481         (*truncxfdf2_mixed): Ditto.
31482
31483 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
31484
31485         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
31486         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
31487
31488         PR debug/39474
31489         * tree-ssa-live.c (remove_unused_locals): Don't remove local
31490         unused non-artificial variables when not optimizing.
31491
31492         PR debug/39471
31493         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
31494         DW_TAG_imported_module even if decl is IMPORTED_DECL with
31495         NAMESPACE_DECL in its DECL_INITIAL.
31496
31497         PR middle-end/39443
31498         * optabs.c (set_user_assembler_libfunc): New function.
31499         * expr.h (set_user_assembler_libfunc): New prototype.
31500         * c-common.c: Include libfuncs.h.
31501         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
31502         for memcmp, memset, memcpy, memmove and abort.
31503         * Makefile.in (c-common.o): Depend on libfuncs.h.
31504
31505         PR debug/39412
31506         * dwarf2out.c (gen_inlined_enumeration_type_die,
31507         gen_inlined_structure_type_die, gen_inlined_union_type_die,
31508         gen_tagged_type_instantiation_die): Removed.
31509         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
31510         do nothing.
31511
31512 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
31513
31514         PR testsuite/38526
31515         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
31516         its use.
31517         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
31518         (check-parallel-%): Ditto.
31519         (check-consistency): Ditto.
31520
31521 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
31522
31523         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
31524         local variable rhs by NULL_TREE.
31525
31526 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31527
31528         PR target/39477
31529         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
31530
31531 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31532
31533         PR target/39476
31534         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
31535
31536 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
31537
31538         PR target/39473
31539         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
31540         for ms->sysv ABI calls only in 64bit mode.
31541
31542         * config/i386/i386.md (untyped_call): Support 32bit.
31543
31544 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
31545
31546         * doc/extend.texi: Replace x86_65 with x86_64.
31547
31548 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
31549
31550         PR tree-optimization/39455
31551         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
31552         mismatches for POINTER_TYPE_P (type).
31553         (number_of_iterations_le): Likewise.
31554
31555 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31556
31557         * config/picochip/picochip.c: Removed profiling support.
31558         * config/picochip/picochip.md: Removed profiling instruction.
31559         * config/picochip/picochip.h: Removed profiling builtin.
31560
31561 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
31562
31563         * doc/install.texi (--with-host-libstdcxx): Document.
31564
31565 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
31566
31567         PR target/34299
31568         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
31569         generate a warning if the function name does not begin with
31570         "__vector" and the function has either the 'signal' or 'interrupt'
31571         attribute, from here to ...
31572         (avr_declare_function_name): ...here. New function.
31573         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
31574         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
31575
31576 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
31577
31578         PR bootstrap/39454
31579         * cse.c (fold_rtx): Don't modify original const_arg1 when
31580         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
31581         separate variable instead.
31582         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
31583         from out of range shift counts.
31584         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
31585
31586 2009-03-13  Catherine Moore  <clm@codesourcery.com>
31587
31588         * config/i386/x-mingw32 (host-mingw32.o): Replace
31589         diagnostic.h with $(DIAGNOSTIC_H).
31590
31591 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
31592
31593         PR target/39431
31594         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
31595         predicate.
31596         * config/i386/sync.md (sync_compare_and_swap<mode>,
31597         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
31598         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
31599         into a register.
31600         (sync_double_compare_and_swapdi_pic,
31601         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
31602         cmpxchg8b_pic_memory_operand instead of just memory_operand.
31603
31604 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31605
31606         PR target/39445
31607         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
31608
31609 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31610
31611         PR target/39327
31612         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31613         (avx_addsubv4df3): Likewise.
31614         (*avx_addsubv4sf3): Likewise.
31615         (sse3_addsubv4sf3): Likewise.
31616
31617 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
31618
31619         PR target/38824
31620         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
31621
31622 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
31623
31624         PR debug/39432
31625         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
31626         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
31627         registers for allocnos created from user-defined variables.
31628
31629 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31630
31631         PR target/39181
31632         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
31633         of non-integer mode as well.
31634
31635 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
31636
31637         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
31638         for functions for which the parameter types are unknown.
31639
31640 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
31641
31642         PR target/39137
31643         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
31644         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
31645         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
31646         * config/i386/i386.c (ix86_local_alignment): For
31647         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
31648         long long variables on the stack to avoid dynamic realignment.
31649         Allow the first argument to be a decl rather than type.
31650         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
31651
31652 2009-03-11  Nick Clifton  <nickc@redhat.com>
31653
31654         PR target/5362
31655         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
31656         options.
31657         Add description to mno-lsim option.
31658         * config/mcore/mcore.h: Remove comment about deprecated m4align
31659         option.
31660         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
31661         * doc/invoke.texi: Add description of mno-lsim and
31662         mstack-increment options.
31663
31664         * config/fr30/fr30.opt: Document the -mno-lsim option.
31665         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
31666         and -mno-lsim options.
31667
31668 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31669
31670         * fold-const.c (fold_comparison): Only call fold_inf_compare
31671         if the mode supports infinities.
31672
31673 2009-03-11  Jason Merrill  <jason@redhat.com>
31674
31675         PR debug/39086
31676         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
31677         end already did.  Notice GIMPLE_CALL modifications of the result.
31678         Don't copy debug information from an ignored decl or a decl from
31679         another function.
31680
31681 2009-03-10  Richard Guenther  <rguenther@suse.de>
31682             Nathan Froyd  <froydnj@codesourcery.com>
31683
31684         PR middle-end/37850
31685         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
31686         (__divMODE3): Likewise.
31687
31688 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
31689
31690         PR tree-optimization/39394
31691         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
31692         DECL_SIZE_UNIT of variable length FIELD_DECLs.
31693
31694 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31695
31696         * recog.c (verfiy_changes): Disallow renaming of hard regs in
31697         inline asms for register asm ("") declarations.
31698
31699 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
31700
31701         * fold-const.c (fold_unary): Fix comment.
31702
31703 2009-03-07  Jan Hubicka  <jh@suse.cz>
31704
31705         PR target/39361
31706         * tree-inline.c (setup_one_parameter): Do replacement of const
31707         argument by constant in SSA form.
31708
31709 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31710
31711         PR middle-end/38028
31712         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
31713         determine alignment passed to assign_stack_local.
31714         (assign_parms_unsplit_complex): Likewise.
31715         * except.c (sjlj_build_landing_pads): Likewise.
31716
31717 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31718
31719         PR middle-end/39360
31720         * tree-flow.h (add_referenced_var): Return bool instead of void.
31721         * tree-dfa.c (add_referenced_var): Return result of
31722         referenced_var_check_and_insert call.
31723         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
31724         of referenced_var_check_and_insert.
31725
31726         PR debug/39372
31727         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
31728         (gen_variable_die): Emit DW_AT_location on abstract static variable's
31729         DIE, don't emit it if abstract origin already has it.
31730         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
31731         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
31732
31733 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
31734
31735         * genpreds.c (needs_variable): Fix parentheses at variable name
31736         detection.
31737         (write_tm_constrs_h): Indent generated code.
31738
31739 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
31740
31741         * doc/extend.texi (Function Attributes): Add documentation
31742         for isr attributes.
31743
31744 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
31745
31746         PR debug/39387
31747         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
31748         take locus from its DECL_SOURCE_LOCATION instead of input_location.
31749
31750 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
31751
31752         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
31753         the loop as bad.
31754
31755 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
31756
31757         PR debug/39379
31758         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
31759         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
31760
31761 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
31762
31763         * config/i386/i386.md (R8_REG, R9_REG): New constants.
31764         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
31765         constants instead of magic numbers.
31766         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
31767         (QI_REG_P): Ditto.
31768         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
31769         (x86_64_ms_abi_int_parameter_registers): Ditto.
31770         (x86_64_int_return_registers): Ditto.
31771         (ix86_maybe_switch_abi): Ditto.
31772         (ix86_expand_call): Ditto for clobbered_registers array.
31773         (ix86_hard_regno_mode_ok): Ditto.
31774         (x86_extended_QIreg_mentioned_p): Ditto.
31775
31776 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
31777
31778         PR tree-optimization/39349
31779         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
31780
31781         * combine.c (gen_lowpart_for_combine): Use omode when generating
31782         clobber.
31783
31784 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
31785
31786         PR rtl-optimization/39235
31787         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
31788
31789 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31790
31791         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
31792
31793 2009-03-04  Richard Guenther  <rguenther@suse.de>
31794
31795         PR tree-optimization/39362
31796         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
31797         that occur in abnormal PHIs should be varying.
31798
31799 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
31800
31801         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
31802         Extend comments.
31803         (simple_iv):  Take loop as an argument instead of statement.
31804         * tree-scalar-evolution.h (simple_iv): Declaration changed.
31805         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
31806         to simple_iv.
31807         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
31808         Ditto.
31809         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
31810         * matrix-reorg.c (analyze_transpose): Ditto.
31811         * tree-data-ref.c (dr_analyze_innermost): Ditto.
31812         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
31813         * tree-predcom.c (ref_at_iteration): Ditto.
31814         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
31815
31816 2009-03-04  Richard Guenther  <rguenther@suse.de>
31817
31818         PR tree-optimization/39358
31819         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
31820         escaped_id and callused_id.
31821         (solve_graph): Likewise.
31822
31823 2009-03-04  Richard Guenther  <rguenther@suse.de>
31824
31825         PR tree-optimization/39339
31826         * tree-sra.c (try_instantiate_multiple_fields): Make it
31827         no longer ICE on the above.
31828
31829 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
31830
31831         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
31832         that fits within Pmode.
31833
31834 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31835
31836         PR middle-end/10109
31837         * tm.texi (LIBCALL_VALUE): Update description.
31838
31839 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31840
31841         PR middle-end/34443
31842         * doc/extend.texi (section): Update description.
31843
31844 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
31845
31846         PR middle-end/39345
31847         * tree-inline.c (remapped_type): New.
31848         (can_be_nonlocal): Call remapped_type instead of remap_type.
31849
31850 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31851
31852         PR fortran/39354
31853         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
31854         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
31855
31856 2009-03-03  Richard Guenther  <rguenther@suse.de>
31857
31858         PR middle-end/39272
31859         * tree.c (tree_nonartificial_location): New function.
31860         * tree.h (tree_nonartificial_location): Declare.
31861         * builtins.c (expand_builtin_memory_chk): Provide location
31862         of the call location for artificial function pieces.
31863         (maybe_emit_chk_warning): Likewise.
31864         (maybe_emit_sprintf_chk_warning): Likewise.
31865         (maybe_emit_free_warning): Likewise.
31866         * expr.c (expand_expr_real_1): Likewise.
31867
31868 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31869
31870         PR tree-optimization/39343
31871         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
31872         COMPONENT_REF t has ARRAY_TYPE.
31873
31874 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
31875
31876         PR middle-end/39335
31877         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
31878         when the type precision of the induction variable should be
31879         larger than the type precision of nit.
31880         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
31881         * graphite.c (graphite_loop_normal_form): Same.
31882         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
31883
31884 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31885
31886         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
31887         (*call_1_rex64_ms_sysv): Use named constants instead of magic
31888         numbers to describe clobbered registers.
31889         (*call_value_0_rex64_ms_sysv): Ditto.
31890         * config/i386/mmx.md (mmx_emms): Ditto.
31891         (mmx_femms): Ditto.
31892
31893 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
31894
31895         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
31896         of ABI_64.
31897
31898 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31899
31900         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
31901         (spu_section_type_flags): New function.
31902
31903 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31904
31905         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
31906         reg_class_contents of FLOAT_REGS into a temporary.
31907
31908 2009-03-02  Richard Guenther  <rguenther@suse.de>
31909             Ira Rosen  <irar@il.ibm.com>
31910
31911         PR tree-optimization/39318
31912         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
31913         information to the vectorized statement.
31914
31915 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
31916
31917         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
31918         variable.  Use defined names instead of magic constants for REX SSE
31919         registers.
31920
31921 2009-03-01  Richard Guenther  <rguenther@suse.de>
31922
31923         PR tree-optimization/39331
31924         * omp-low.c (lower_send_shared_vars): Do not receive new
31925         values for the reference of DECL_BY_REFERENCE parms or results.
31926
31927 2009-03-01  Jan Hubicka  <jh@suse.cz>
31928
31929         PR debug/39267
31930         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
31931         BLOCK_NONLOCALIZED_VAR): New macros.
31932         (tree_block): Add nonlocalized_vars.
31933         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
31934         gen_decl_die): Add origin argument.  Allow generation of die with
31935         origin at hand only.
31936         (gen_member_die, gen_type_die_with_usage, force_decl_die,
31937         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
31938         of gen_*.
31939         (gen_block_die): Fix checking for unused blocks.
31940         (process_scope_var): Break out from .... ; work with origins only.
31941         (decls_for_scope) ... here; process nonlocalized list.
31942         (dwarf2out_ignore_block): Look for nonlocalized vars.
31943         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
31944         vars.
31945         (dump_scope_block): Dump them.
31946         * tree-inline.c (remap_decls): Handle nonlocalized vars.
31947         (remap_block): Likewise.
31948         (can_be_nonlocal): New predicate.
31949         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
31950
31951 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31952
31953         * configure: Regenerate.
31954
31955 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31956
31957         * optc-gen.awk: No need to duplicate option flags twice.
31958         Reuse help texts for duplicate options which do not have any.
31959
31960         * gcc.c (display_help): Document --version.
31961
31962         * gcc.c (main): If print_help_list and verbose_flag, ensure
31963         driver output comes before subprocess output.
31964
31965         * optc-gen.awk: Assign all remaining fields to help string,
31966         space-separated, for multi-line help in *.opt.
31967
31968         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
31969         -Wno-pedantic-ms-format is for MinGW targets only.
31970
31971         * doc/options.texi (Option file format): Fix bad indentation,
31972         restoring dropped sentence.
31973
31974 2009-02-28  Jan Hubicka  <jh@suse.cz>
31975
31976         * tree-inline.c (tree_function_versioning): Output debug info.
31977
31978 2009-02-28  Jan Hubicka  <jh@suse.cz>
31979
31980         PR debug/39267
31981         * tree-inline.c (setup_one_parameter): Do not copy propagate
31982         arguments when not optimizing.
31983
31984 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
31985
31986         PR target/39327
31987         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31988         (avx_addsubv4df3): Likewise.
31989         (*avx_addsubv4sf3): Likewise.
31990         (sse3_addsubv4sf3): Likewise.
31991         (*avx_addsubv2df3): Likewise.
31992         (sse3_addsubv2df3): Likewise.
31993         (avx_unpckhps256): Correct item selectors.
31994         (avx_unpcklps256): Likewise.
31995         (avx_unpckhpd256): Likewise.
31996         (avx_unpcklpd256): Likewise.
31997
31998 2009-02-28  Jan Hubicka  <jh@suse.cz>
31999
32000         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
32001         static vars.
32002         (copy_arguments_for_versioning): If var is declared don't declare it.
32003         (tree_function_versioning): First setup substitutions and then copy
32004         args.
32005
32006 2009-02-27  Jan Hubicka  <jh@suse.cz>
32007
32008         PR debug/39267
32009         * cgraph.h (varpool_output_debug_info): Remove.
32010         * cgraphunit.c (varpool_output_debug_info): Remove.
32011         * dwarf2out.c (deferred_locations_struct): New struct
32012         (deferred_locations): New type.
32013         (deferred_locations_list): New static var.
32014         (deffer_location): New function.
32015         (gen_variable_die): Use it.
32016         (decls_for_scope): Output info on local static vars.
32017         (dwarf2out_finish): Process deferred locations.
32018         * varpool.c (varpool_output_debug_info): Remove.
32019
32020 2009-02-27  Jan Hubicka  <jh@suse.cz>
32021
32022         PR debug/39267
32023         * tree.h (TREE_PROTECTED): Fix comment.
32024         (BLOCK_HANDLER_BLOCK): Remove.
32025         (struct tree_block): Remove handler_block add body_block.
32026         (inlined_function_outer_scope_p): New.
32027         (is_body_block): Remove.
32028         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
32029         * dwarf2out.c (is_inlined_entry_point): Remove.
32030         (add_high_low_attributes): Use inlined_function_outer_scope_p.
32031         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
32032         code.
32033         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
32034         * gimplify.c (gimplify_expr): Gimplify body blocks.
32035         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
32036         block with multiple subblocks.
32037         (dump_scope_block): Prettier output; dump more flags and info.
32038         (dump_scope_blocks): New.
32039         (remove_unused_locals): Use dump_scope_blocks.
32040         * tree-flow.h (dump_scope_blocks): Declare.
32041         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
32042         * stmt.c (is_body_block): Remove.
32043         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
32044         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
32045
32046 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
32047
32048         PR middle-end/39308
32049         * graphite.c (graphite_loop_normal_form): Do not call
32050         number_of_iterations_exit from a gcc_assert.
32051
32052 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
32053
32054         * config/s390/s390.c (s390_swap_cmp): Look for conditional
32055         jumps if COND is NULL.
32056         (find_cond_jump): New function.
32057         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
32058         * config/s390/s390.md: Remove z10_cobra attribute value.
32059
32060 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
32061
32062         * config/alpha/alpha.h (alpha_expand_mov): Return false if
32063         force_const_mem returns NULL_RTX.
32064
32065 2009-02-26  Jan Hubicka  <jh@suse.cz>
32066
32067         PR debug/39267
32068         * cgraph.h (varpool_output_debug_info): Remove.
32069         * cgraphunit.c (varpool_output_debug_info): Remove.
32070         * dwarf2out.c (deferred_locations_struct): New struct
32071         (deferred_locations): New type.
32072         (deferred_locations_list): New static var.
32073         (deffer_location): New function.
32074         (gen_variable_die): Use it.
32075         (decls_for_scope): Output info on local static vars.
32076         (dwarf2out_finish): Process deferred locations.
32077         * varpool.c (varpool_output_debug_info): Remove.
32078
32079 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
32080
32081         PR rtl-optimization/39241
32082         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
32083         to subreg_offset_representable_p.
32084
32085 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
32086
32087         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
32088         execute function prototype.  Get f and nregs from max_reg_num
32089         and get_insns.  Remove the first backward pass as it's dead,
32090         guard the forward pass by flag_expensive_optimizations.
32091         (rest_of_handle_regmove): Delete.
32092         (pass_regmove): Replace it with regmove_optimize.
32093
32094 2009-02-25  Martin Jambor  <mjambor@suse.cz>
32095
32096         PR tree-optimization/39259
32097         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
32098         calls_alloca function flags.
32099         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
32100         calls are detected.
32101
32102 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
32103
32104         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
32105         flags_set_1_rtx, flags_set_1_set): Delete.
32106         (regmove_optimize): Do not call mark_flags_life_zones.
32107
32108 2009-02-24  Julian Brown  <julian@codesourcery.com>
32109
32110         PR target/35965
32111         * config/arm/arm.c (require_pic_register): Only set
32112         cfun->machine->pic_reg once per function.
32113
32114 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
32115
32116         * doc/invoke.texi (Link Options): Document an easier way to pass
32117         options that take arguments to the GNU linker using -Xlinker and -Wl.
32118
32119 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
32120
32121         PR target/33785
32122         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
32123
32124 2009-02-24  Richard Guenther  <rguenther@suse.de>
32125
32126         PR debug/39285
32127         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
32128
32129 2009-02-24  Richard Guenther  <rguenther@suse.de>
32130             Zdenek Dvorak  <ook@ucw.cz>
32131
32132         PR tree-optimization/39233
32133         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
32134         from converting them to a generic type.
32135
32136 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
32137
32138         PR tree-optimization/39260
32139         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
32140         contains a condition with a real type.
32141         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
32142
32143 2009-02-23  Jason Merrill  <jason@redhat.com>
32144
32145         PR c++/38880
32146         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
32147         narrowing_initializer_constant_valid_p.
32148         (narrowing_initializer_constant_valid_p): Don't return
32149         null_pointer_node for adding a pointer to itself.
32150
32151 2009-02-23  Jan Hubicka  <jh@suse.cz>
32152
32153         PR c/12245
32154         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
32155         resizing.
32156
32157 2009-02-23  Jan Hubicka  <jh@suse.cz>
32158
32159         PR tree-optimization/37709
32160         * tree.c (block_ultimate_origin): Move here from dwarf2out.
32161         * tree.h (block_ultimate_origin): Declare.
32162         * dwarf2out.c (block_ultimate_origin): Move to tree.c
32163         * tree-ssa-live.c (remove_unused_scope_block_p):
32164         Eliminate blocks containig no instructions nor live variables nor
32165         nested blocks.
32166         (dump_scope_block): New function.
32167         (remove_unused_locals): Enable removal of dead blocks by default;
32168         enable dumping at TDF_DETAILS.
32169
32170 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
32171
32172         * config/i386/i386.c (classify_argument): Don't allow COImode
32173         and OImode.
32174         (function_arg_advance_32): Don't allow OImode.
32175         (function_arg_32): Likewise.
32176         (function_value_32): Likewise.
32177         (return_in_memory_32): Likewise.
32178         (function_arg_64): Remove OImode comment.
32179
32180 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
32181
32182         PR target/39261
32183         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
32184         ix86_expand_vector_set for V4DImode in 64bit mode only.
32185         (ix86_expand_vector_init_one_var): Likewise.
32186
32187 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
32188
32189         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
32190
32191 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
32192
32193         PR bootstrap/39257
32194         * loop-iv.c: Revert last change.
32195         * emit-rtl.c: Likewise.
32196
32197 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
32198
32199         PR target/39256
32200         * config/i386/i386.c (type_natural_mode): Remove an extra
32201         space in the warning message.
32202         (function_value_32): Handle 32-byte vector modes.
32203         (return_in_memory_32): Likewise.
32204
32205 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
32206
32207         * loop-iv.c (truncate_value): New function.
32208         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
32209         of lowpart_subreg.
32210         (lowpart_subreg): Move to...
32211         * emit-rtl.c: ...here.
32212
32213 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
32214
32215         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
32216         accidental and undocumented change at revision 140860.
32217
32218 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
32219
32220         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
32221         take gimple_seq * arguments.
32222         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
32223         types_compatible_p langhook.
32224
32225 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
32226             Joseph Myers  <joseph@codesourcery.com>
32227
32228         * config/arm/arm.c (arm_builtin_va_list): New function.
32229         (arm_expand_builtin_va_start): Likewise.
32230         (arm_gimplify_va_arg_expr): Likewise.
32231         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
32232         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
32233         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
32234         (va_list_type): New variable.
32235         (arm_mangle_type): Mangle va_list_type appropriately.
32236
32237 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
32238
32239         PR middle-end/39157
32240         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
32241         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
32242         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
32243         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
32244         parameter to 1000 for -O1 by default.
32245         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
32246         parameter.
32247         * loop-invariant.c: Include params.h.
32248         (move_loop_invariants): Don't call move_single_loop_invariants on
32249         very large loops.
32250
32251 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
32252
32253         * calls.c (emit_library_call_value_1): Use slot_offset instead of
32254         offset when calculating bounds for indexing stack_usage_map.  Fixes
32255         a buffer overflow with certain target setups.
32256
32257 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
32258
32259         PR target/39240
32260         * calls.c (expand_call): Clear try_tail_call if caller and callee
32261         disagree in promotion of function return value.
32262
32263 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
32264
32265         PR target/39175
32266         * c-common.c (c_determine_visibility): If visibility changed and
32267         DECL_RTL has been already set, call make_decl_rtl to update symbol
32268         flags.
32269
32270 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
32271
32272         PR c++/39188
32273         * varasm.c (assemble_variable): Don't check DECL_NAME when
32274         globalizing a variable.
32275
32276 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
32277
32278         PR c/38483
32279         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
32280         expression before any __builtin_trap call.
32281         * c-typeck.c (build_function_call): Convert and check function
32282         arguments before generating a call to a trap.  Evaluate the
32283         function arguments before the trap.
32284
32285 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
32286
32287         PR target/39228
32288         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
32289         (UNSPEC_FXAM_MEM): New unspec.
32290         (fxam<mode>2_i387_with_temp): New insn and split pattern.
32291         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
32292         memory using fxam<mode>2_i387_with_temp to remove excess precision.
32293
32294 2009-02-19  Richard Guenther  <rguenther@suse.de>
32295
32296         PR tree-optimization/39207
32297         PR tree-optimization/39074
32298         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
32299         storedanything_tree): New.
32300         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
32301         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
32302         (build_succ_graph): Add edges from STOREDANYTHING to all
32303         non-direct nodes.
32304         (init_base_vars): Initialize STOREDANYTHING.
32305         (compute_points_to_sets): Free substitution info after
32306         building the succ graph.
32307         (ipa_pta_execute): Likewise.
32308
32309         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
32310         field.
32311         (do_ds_constraint): Do not add to special var or non-pointer
32312         field solutions.
32313         (type_could_have_pointers): Split out from ...
32314         (could_have_pointers): ... here.  For arrays use the element type.
32315         (create_variable_info_for): Initialize may_have_pointers.
32316         (new_var_info): Likewise.
32317         (handle_lhs_call): Make the HEAP variable unknown-sized.
32318         (intra_create_variable_infos): Use a type with pointers for
32319         PARM_NOALIAS, make it unknown-sized.
32320
32321 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
32322
32323         PR target/39224
32324         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
32325
32326 2009-02-18  Jason Merrill  <jason@redhat.com>
32327
32328         PR target/39179
32329         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
32330         value if DECL_EXTERNAL.
32331         * tree-sra.c (sra_walk_gimple_assign): Likewise.
32332         * target.h (gcc_target::binds_local_p): Clarify "module".
32333         * tree.h (TREE_PUBLIC): Clarify "module".
32334
32335 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
32336
32337         PR target/38891
32338         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
32339         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
32340
32341 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
32342
32343         PR target/39082
32344         * c.opt (Wabi): Support C and ObjC.
32345         (Wpsabi): New.
32346
32347         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
32348
32349         * config/i386/i386.c (classify_argument): Warn once about the ABI
32350         change when passing union with long double.
32351
32352         * doc/invoke.texi: Update -Wabi for warning psABI changes.
32353
32354 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
32355
32356         PR c/35447
32357         * c-parser.c (c_parser_compound_statement): Always enter and leave
32358         a scope.
32359
32360 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32361
32362         PR target/34587
32363         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
32364
32365 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
32366
32367         PR tree-optimization/36922
32368         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
32369         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
32370         Likewise.
32371
32372 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
32373
32374         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
32375         to 0 for EABI64.
32376
32377 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
32378
32379         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
32380
32381 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
32382
32383         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
32384         tree sharing.
32385
32386 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
32387             Richard Sandiford  <rdsandiford@googlemail.com>
32388
32389         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
32390         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
32391         (loongson_biadd): ...this.
32392
32393 2009-02-17  Richard Guenther  <rguenther@suse.de>
32394
32395         PR tree-optimization/39202
32396         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
32397         a var make sure to follow existing collapses.
32398
32399 2009-02-17  Richard Guenther  <rguenther@suse.de>
32400
32401         PR middle-end/39214
32402         * langhooks.c (lhd_print_error_function): Check for NULL block.
32403
32404 2009-02-17  Richard Guenther  <rguenther@suse.de>
32405
32406         PR tree-optimization/39204
32407         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
32408         of the PHI arg.
32409
32410 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
32411
32412         * config/soft-fp/double.h: Update from glibc CVS.
32413
32414 2009-02-17  Richard Guenther  <rguenther@suse.de>
32415
32416         PR tree-optimization/39207
32417         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
32418         strict-aliasing warnings for pointers pointing to NULL.
32419
32420 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
32421
32422         PR c/35446
32423         * c-parser.c (c_parser_braced_init): Call pop_init_level when
32424         skipping until next close brace.
32425
32426 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
32427
32428         PR target/37049
32429         * config/i386/i386.c (ix86_expand_push): Set memory alignment
32430         to function argument boundary.
32431
32432 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32433
32434         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
32435         in the lea_add. Reload eventually constraints it properly.
32436         * config/picochip/constraints.md: Remove the target constraint
32437         "b", since it is not needed anymore.
32438
32439 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
32440
32441         * gthr-dce.h: Uglify function parameter and local variable names.
32442         * gthr-gnat.h: Likewise.
32443         * gthr-mipssde.h: Likewise.
32444         * gthr-nks.h: Likewise.
32445         * gthr-posix95.h: Likewise.
32446         * gthr-posix.h: Likewise.
32447         * gthr-rtems.h: Likewise.
32448         * gthr-single.h: Likewise.
32449         * gthr-solaris.h: Likewise.
32450         * gthr-tpf.h: Likewise.
32451         * gthr-vxworks.h: Likewise.
32452         * gthr-win32.h: Likewise.
32453
32454 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
32455
32456         PR target/39196
32457         * config/i386/i386.md: Restrict the new peephole2 to move
32458         between MMX/SSE registers.
32459
32460 2009-02-15  Richard Guenther  <rguenther@suse.de>
32461
32462         Revert
32463         2009-02-13  Richard Guenther  <rguenther@suse.de>
32464
32465         * configure.ac: Enable LFS.
32466         * configure: Re-generate.
32467         * config.in: Likewise.
32468
32469 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32470
32471         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
32472         spu_srqwbyte, spu_srqwbytebc): Define.
32473         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
32474         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
32475         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
32476         "shrqby_<mode>"): New insn-and-split patterns.
32477         * config/spu/spu.c (expand_builtin_args): Determine and return
32478         number of operands using spu_builtin_description data.
32479         (spu_expand_builtin_1): Use it.
32480
32481 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
32482
32483         PR target/38056
32484         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
32485         TARGET_CONST_GP.
32486
32487 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32488
32489         PR target/39149
32490         * config/i386/i386.c (override_options): Correct warning
32491         messages for -malign-loops, -malign-jumps and -malign-functions.
32492
32493 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32494
32495         PR target/39152
32496         * config/i386/i386.md: Restrict the new peephole2 to move
32497         between the general purpose registers.
32498
32499 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
32500
32501         PR target/39162
32502         * config/i386/i386.c (type_natural_mode): Add a new argument.
32503         Return the original mode and warn ABI change if vector size is 32byte.
32504         (function_arg_advance): Updated.
32505         (function_arg): Likewise.
32506         (ix86_function_value): Likewise.
32507         (ix86_return_in_memory): Likewise.
32508         (ix86_sol10_return_in_memory): Likewise.
32509         (ix86_gimplify_va_arg): Likewise.
32510         (function_arg_32): Don't warn ABX ABI change here.
32511         (function_arg_64): Likewise.
32512
32513 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
32514
32515         * loop-iv.c (implies_p): In the final case, test that operands 0
32516         of the two comparisons match.
32517
32518         * config/bfin/bfin.c (find_prev_insn_start): New function.
32519         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
32520         (find_next_insn_start): Move.
32521
32522 2009-02-13  Richard Guenther  <rguenther@suse.de>
32523
32524         * configure.ac: Enable LFS.
32525         * configure: Re-generate.
32526         * config.in: Likewise.
32527
32528 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
32529
32530         PR c/35444
32531         * c-parser.c (c_parser_parms_list_declarator): Discard pending
32532         sizes on syntax error after some arguments have been parsed.
32533
32534 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32535
32536         * doc/invoke.texi (-fira): Remove.
32537
32538 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32539
32540         * caller-save.c: Replace regclass.c with reginfo.c in comments.
32541         * recog.c: Likewise.
32542         * rtl.h: Likewise.
32543
32544 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
32545
32546         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
32547         (umul_ppmm): Likewise.
32548         (count_leading_zeros): Likewise.
32549         (count_trailing_zeros): Likewise.
32550         (UMUL_TIME): Likewise.
32551
32552 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32553
32554         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
32555         soft-fp/t-softfp to tmake_file.
32556
32557         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
32558         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
32559         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
32560         IA64_BUILTIN_INFQ]: New.
32561         (ia64_init_builtins): Initialize __builtin_infq,
32562         __builtin_fabsq and __builtin_copysignq if not HPUX.
32563         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
32564         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
32565
32566         * config/ia64/lib1funcs.asm (__divtf3): Define only if
32567         SHARED is defined.
32568         (__fixtfti): Likewise.
32569         (__fixunstfti): Likewise.
32570         (__floattitf): Likewise.
32571
32572         * config/ia64/libgcc-glibc.ver: New.
32573         * config/ia64/t-fprules-softfp: Likewise.
32574         * config/ia64/sfp-machine.h: Likewise.
32575
32576         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
32577         (LIBGCC2_TF_CEXT): Likewise.
32578         (TF_SIZE): Likewise.
32579         (TARGET_INIT_LIBFUNCS): Likewise.
32580
32581         * config/ia64/t-glibc (SHLINB_MAPFILES):
32582         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
32583
32584 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
32585
32586         * config/i386/i386.c (construct_container): Rewrite processing
32587         BLKmode with X86_64_SSE_CLASS.
32588
32589 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
32590
32591         PR target/39152
32592         * config/i386/i386.md: Replace simplify_replace_rtx with
32593         replace_rtx in the new peephole2.
32594
32595 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
32596
32597         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
32598         loop unrolling do not happen at -O2.
32599
32600 2009-02-12  Michael Matz  <matz@suse.de>
32601
32602         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
32603
32604 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
32605
32606         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
32607         for -g3.
32608
32609 2009-02-12  Ben Elliston  <bje@au.ibm.com>
32610
32611         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
32612         patterns when updating the back chain.  Missed in the 2009-02-10
32613         change.
32614
32615 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
32616
32617         * doc/extend.texi (Decimal Floating Types): Update identifier of
32618         draft TR and list of missing support.
32619
32620 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
32621
32622         PR middle-end/39154
32623         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
32624         bit to variable length decl's flags, add it also to its
32625         pointer replacement variable.
32626
32627 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
32628             Jakub Jelinek  <jakub@redhat.com>
32629
32630         PR target/39118
32631         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
32632         (memory_blockage): New expander.
32633         (*memory_blockage): New insn pattern.
32634         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
32635         instead of general blockage at the end of function prologue when
32636         frame pointer is used to access red zone area.  Do not emit blockage
32637         when profiling, it is emitted in generic code.
32638         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
32639         function epilogue when frame pointer is used to access red zone area.
32640
32641 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
32642
32643         PR target/38824
32644         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
32645         by arithmetic with memory operands.
32646         * config/i386/predicates.md (commutative_operator): New.
32647
32648 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
32649
32650         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
32651         bulleted lists.
32652
32653 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
32654
32655         * alias.h (record_alias_subset): Declare.
32656         * alias.c (record_alias_subset): Make global.
32657
32658 2009-02-10  Nick Clifton  <nickc@redhat.com>
32659
32660         * tree-parloops.c: Change license to GPLv3.
32661         * ipa-struct-reorg.c: Change license to GPLv3.
32662         * ipa-struct-reorg.h: Change license to GPLv3.
32663
32664 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
32665
32666         PR c/39084
32667         * c-decl.c (start_struct): Return NULL on error.
32668
32669 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
32670
32671         PR middle-end/39124
32672         * cfgloopmanip.c (remove_path): Call remove_bbs after
32673         cancel_loop_tree, not before it.
32674
32675         PR target/39139
32676         * function.h (struct function): Add has_local_explicit_reg_vars bit.
32677         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
32678         VAR_DECLs were seen.
32679         * tree-ssa-live.c (remove_unused_locals): Recompute
32680         cfun->has_local_explicit_reg_vars.
32681         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
32682         copies or clearings if cfun->has_local_explicit_reg_vars.
32683
32684 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
32685
32686         PR target/39118
32687         * config/i386/i386.c (expand_prologue): Emit blockage at the end
32688         of function prologue when frame pointer is used to access
32689         red zone area.
32690
32691 2009-02-10  Richard Guenther  <rguenther@suse.de>
32692
32693         PR middle-end/39127
32694         * gimplify.c (gimple_regimplify_operands): Always look if
32695         we need to create a temporary.
32696
32697 2009-02-10  Richard Guenther  <rguenther@suse.de>
32698
32699         PR tree-optimization/39132
32700         * tree-loop-distribution.c (todo): New global var.
32701         (generate_memset_zero): Trigger TODO_rebuild_alias.
32702         (tree_loop_distribution): Return todo.
32703
32704 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
32705
32706         PR target/39119
32707         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
32708         (x86_64_reg_class_name): Removed.
32709         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
32710         first one isn't X86_64_SSE_CLASS or any other ones aren't
32711         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
32712         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
32713         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
32714         and 3 X86_64_SSEUP_CLASS.
32715         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
32716         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
32717
32718 2009-02-10  Ben Elliston  <bje@au.ibm.com>
32719
32720         * config/rs6000/rs6000.md (allocate_stack): Always use an update
32721         form instruction to update the stack back chain word, even if the
32722         user has disabled the generation of update instructions.
32723         (movdi_<mode>_update_stack): New.
32724         (movsi_update_stack): Likewise.
32725         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
32726         always use an update form instruction to update the stack back
32727         chain word.
32728
32729 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
32730
32731         PR middle-end/38953
32732         * graphite.c (if_region_set_false_region): After moving a region in
32733         the false branch of a condition, remove the empty dummy basic block.
32734         (gloog): Remove wrong fix for PR38953.
32735
32736 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
32737
32738         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
32739         generation due to implicit sign extension.
32740
32741 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
32742
32743         PR middle-end/38981
32744         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
32745         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
32746
32747 2009-02-09  Richard Guenther  <rguenther@suse.de>
32748
32749         PR middle-end/35202
32750         * convert.c (convert_to_real): Disable (float)fn((double)x)
32751         to fnf(x) conversion if errno differences may occur and
32752         -fmath-errno is set.
32753
32754 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
32755
32756         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
32757         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
32758         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
32759
32760 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32761
32762         PR c/35434
32763         * c-common.c (handle_alias_attribute): Disallow attribute for
32764         anything not a FUNCTION_DECL or VAR_DECL.
32765
32766 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
32767
32768         PR c/39035
32769         * real.c (do_compare): Special-case compare of zero against
32770         decimal float value.
32771
32772 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
32773
32774         PR c/36432
32775         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
32776         as indicating flexible array members unless the field itself is
32777         being declarared as the incomplete array.
32778
32779 2009-02-06  Jan Hubicka  <jh@suse.cz>
32780
32781         PR tree-optimization/38844
32782         * ipa-inline.c (try_inline): Stop inlining recursion when edge
32783         is already inlined.
32784
32785 2009-02-06  Richard Guenther  <rguenther@suse.de>
32786
32787         PR middle-end/38977
32788         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
32789         fork because we may expand it as __gcov_fork.
32790
32791 2009-02-06  Nick Clifton  <nickc@redhat.com>
32792
32793         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
32794
32795 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
32796
32797         PR tree-optimization/35659
32798         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
32799         vn_phi_eq): Shortcut if hashcode does not match.
32800         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
32801         NULL operands.
32802         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
32803         and avoid iterative_hash_expr.
32804         (FOR_EACH_VALUE_ID_IN_SET): New.
32805         (value_id_compare): Remove.
32806         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
32807         sort expressions by value id.
32808
32809 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
32810
32811         PR target/38991
32812         * config/sh/predicates.md (general_movsrc_operand): Don't check
32813         the subreg of system registers here.
32814
32815 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
32816
32817         PR c++/39106
32818         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
32819         on the copied decl.
32820
32821 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
32822
32823         PR rtl-optimization/39110
32824         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
32825         addresses, not aligned ones.
32826
32827 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
32828             Richard Guenther  <rguenther@suse.de>
32829
32830         PR tree-optimization/39100
32831         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
32832         comment says and add edges.
32833
32834 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
32835
32836         PR c/35435
32837         * c-common.c (handle_tls_model_attribute): Ignore attribute for
32838         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
32839
32840 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
32841
32842         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
32843         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
32844         register_bb_in_sese, new_sese, free_sese): Moved.
32845         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
32846         outermost_loop_in_scop, build_scop_iteration_domain,
32847         expand_scalar_variables_ssa_name, get_vdef_before_scop,
32848         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
32849         Use loop_in_sese_p instead of loop_in_scop_p.
32850         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
32851         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
32852         (scopdet_basic_block_info): Fix bug in scop detection.
32853         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
32854         eq_loop_to_cloog_loop): Remove.
32855         (nb_loops_around_loop_in_scop, nb_loop
32856         ref_nb_loops): Moved here...
32857         * graphite.h (ref_nb_loops): ... from here.
32858         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
32859         (loop_domain_dim, loop_iteration_vector_dim): Remove.
32860         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
32861
32862 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
32863             Hans-Peter Nilsson  <hp@axis.com>
32864
32865         PR rtl-optimization/37889
32866         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
32867         Move offset handling from PLUS to before the switch.  Use new
32868         arguments when considering SYMBOL_REFs too.
32869         (rtx_addr_can_trap_p): Pass dummy offset and size.
32870         (enum may_trap_p_flags): Remove.
32871         (may_trap_p_1): Pass size from MEM_SIZE.
32872
32873         PR rtl-optimization/38921
32874         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
32875         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
32876         * rtlanal.c (may_trap_after_code_motion_p): Delete.
32877         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
32878
32879 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
32880
32881         AVX Programming Reference (January, 2009)
32882         * config/i386/sse.md (*vpclmulqdq): New.
32883
32884 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
32885
32886         PR tree-optimization/38977
32887         PR gcov-profile/38292
32888         * calls.c (special_function_p): Disregard __builtin_ prefix.
32889
32890 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
32891
32892         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
32893         non-indexable addresses even before reload.
32894
32895 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32896
32897         PR c/29129
32898         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
32899         as having variable size.  Do not give an error for unnamed
32900         parameters with [*] declarators.  Give a warning for type names
32901         with [*] declarators and mark them as variable size.
32902         * c-parser.c (c_parser_sizeof_expression): Do not give an error
32903         for sizeof applied to [*] type names.
32904
32905 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32906
32907         PR C++/36607
32908         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
32909
32910 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32911
32912         * gcc.c (process_command): Update copyright notice dates.
32913         * gcov.c (print_version): Likewise.
32914         * gcov-dump.c (print_version): Likewise.
32915         * mips-tfile.c (main): Likewise.
32916         * mips-tdump.c (main): Likewise.
32917
32918 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32919
32920         PR c/35433
32921         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
32922         for composite type involving a zero-length array type.
32923
32924 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32925
32926         PR target/35318
32927         * function.c (match_asm_constraints_1): Skip over
32928         initial optional % in the constraint.
32929
32930         PR inline-asm/39059
32931         * c-parser.c (c_parser_postfix_expression): If fixed point is not
32932         supported, don't accept FIXED_CSTs.
32933         * c-decl.c (finish_declspecs): Error if fixed point is not supported
32934         and _Sat is used without _Fract/_Accum.  Set specs->type to
32935         integer_type_node for cts_fract/cts_accum if fixed point is not
32936         supported.
32937
32938 2009-02-02  Catherine Moore  <clm@codesourcery.com>
32939
32940         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
32941
32942 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
32943
32944         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
32945         (ABI_HAS_64BIT_SYMBOLS): Use it.
32946         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
32947
32948 2009-02-02  Paul Brook  <paul@codesourcery.com>
32949
32950         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
32951
32952 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
32953
32954         PR inline-asm/39058
32955         * recog.h (asm_operand_ok): Add constraints argument.
32956         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
32957         recurse on matching constraint.
32958         (check_asm_operands): Pass constraints as 3rd argument to
32959         asm_operand_ok.  Don't look up matching constraint here.
32960         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
32961         to asm_operand_ok.
32962
32963 2009-02-02  Ben Elliston  <bje@au.ibm.com>
32964
32965         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
32966         TARGET_NARROW_VOLATILE_BITFIELD macro names.
32967
32968 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32969
32970         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
32971         information.  Remove some obsolete information.  Reorganize.
32972
32973         * config/pa/fptr.c: Revert license to GPL 2.
32974         * config/pa/milli64.S: Likewise.
32975
32976 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32977
32978         PR target/38904
32979         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
32980         LIBRARY name in, instead of hard-coding it.
32981         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
32982         extra target make frag to tmake_files according to EH model.
32983         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
32984         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
32985         frags that define makefile variable EH_MODEL appropriately.
32986         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
32987         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
32988         to "-sjlj" according to type of EH configured.
32989         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32990         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
32991         to "_sjlj" according to type of EH configured.
32992         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32993         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
32994         (SHLIB_LINK):  Add missing semicolon to if-else construct.
32995         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32996         string value of "pe_dll" command-line option.
32997         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
32998         (SHLIB_SONAME):  Use it when overriding t-cygming default.
32999         (SHLIB_IMPLIB):  Override t-cygming default.
33000         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
33001         string value of "pe_dll" command-line option.
33002
33003 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
33004
33005         PR target/38952
33006         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
33007         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
33008
33009 2009-01-31  Richard Guenther  <rguenther@suse.de>
33010
33011         PR tree-optimization/38937
33012         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
33013         computing the transitive closure.
33014
33015 2009-01-30  Richard Guenther  <rguenther@suse.de>
33016
33017         PR tree-optimization/39041
33018         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
33019         Propagate variable indices only if the types match for this stmt.
33020
33021 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
33022
33023         PR target/39013
33024         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
33025         inline but never defined.
33026
33027 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
33028
33029         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
33030         (*insv_h_di_reg_extimm): New insn.
33031         (*insv_l<mode>_reg_extimm): New insn.
33032
33033 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
33034
33035         * config/picochip/picochip.c (flag_conserve_stack): set
33036         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
33037         fconserve-stack. Reduce call-overhead used by inliner.
33038
33039 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
33040
33041         PR/38157
33042         * common.opt (flag_conserve_stack): Initialised to zero.
33043
33044 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
33045
33046         PR/39002
33047         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
33048         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
33049         method.
33050
33051 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
33052
33053         * ira-color.c (allocno_reload_assign): Update comments.
33054         * regmove.c (regmove_optimize): Likewise.
33055
33056         * ra.h: Removed.
33057
33058 2009-01-29  Robert Millan  <rmh@aybabtu.com>
33059
33060         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
33061         * config/i386/kopensolaris-gnu.h: New file.  Undefine
33062         `MD_UNWIND_SUPPORT'.
33063         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
33064
33065 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
33066
33067         PR tree-optimization/39007
33068         * tree-loop-distribution.c (generate_builtin): Use
33069         recompute_dominator to compute the immediate dominator of the
33070         basic block just after the loop.
33071
33072 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
33073
33074         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
33075         (ASM_OUTPUT_DWARF_PCREL): Define.
33076
33077 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
33078
33079         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
33080         * doc/passes.texi: Remove entries about regclass, local-alloc, and
33081         global.  Modify entries about regmove and IRA.
33082
33083         * ra-conflict.c: Remove the file.
33084
33085         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
33086
33087         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
33088         (pass_regclass_init): Rename to pass_reginfo_init.
33089
33090         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
33091
33092         * toplev.h (flag_ira): Remove.
33093
33094         * caller-save.c (setup_save_areas): Remove flag_ira.
33095
33096         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
33097
33098         * global.c: Remove the file.
33099
33100         * opts.c (decode_options): Remove flag_ira.
33101
33102         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
33103
33104         * regmove.c: Modify file description.
33105         (find_use_as_address, try_auto_increment): Define them only if
33106         AUTO_INC_DEC is defined.
33107         (replacement_quality, replace_in_call_usage, fixup_match_1,
33108         stable_and_no_regs_but_for_p): Remove.
33109         (reg_set_in_bb): Make it static.
33110         (regmove_optimize): Remove flag_ira and code which worked for
33111         !flag_ira.
33112
33113         * local-alloc.c: Remove the file.
33114
33115         * common.opt (fira): Remove.
33116
33117         * ira.c: Include except.h.
33118         (eliminable_regset): Move from global.c.
33119         (mark_elimination): Ditto.  Remove flag_ira.
33120         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
33121         equiv_mem_modified, validate_equiv_mem_from_store,
33122         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
33123         contains_replace_regs, memref_referenced_p, memref_used_between_p,
33124         no_equiv, recorded_label_ref): Move from local-alloc.c.
33125         (update_equiv_regs): Ditto.  Make it static.
33126         (print_insn_chain, print_insn_chains): Move it from global.c.
33127         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
33128         (build_insn_chain): Ditto.  Make it static.
33129         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
33130         Rename to init_live_subregs.
33131         (gate_ira): Remove flag_ira.
33132
33133         * regclass.c: Rename reginfo.c.  Change file description.
33134         (FORBIDDEN_INC_DEC_CLASSES): Remove.
33135         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
33136         (init_reg_sets_1): Remove code for evaluation of
33137         reg_class_superclasses and losing_caller_save_reg_set.
33138         (init_regs): Remove init_reg_autoinc.
33139         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
33140         ok_for_base_p_nonstrict): Remove.
33141         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
33142         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
33143         corresponding entries.
33144         (dump_regclass, record_operand_costs, scan_one_insn,
33145         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
33146         record_address_regs, auto_inc_dec_reg_p): Remove.
33147         (gt-regclass.h): Rename to gt-reginfo.h.
33148
33149         * rtl.h (dump_global_regs, retry_global_alloc,
33150         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
33151
33152         * Makefile.in (RA_H): Remove.
33153         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
33154         Rename regclass.o to reginfo.o.
33155         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
33156         gt-reginfo.h.
33157         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
33158         (GTFILES): Rename regclass.c to reginfo.c.
33159
33160         * passes.c (init_optimization_passes): Remove pass_local_alloc and
33161         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
33162
33163         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
33164         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
33165         Remove flag_ira.
33166         (finish_spills): Ditto.  Remove code for !flag_ira.
33167
33168 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
33169
33170         PR middle-end/35854
33171         * doc/invoke.texi (rtl debug options): Complete rewrite.
33172         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
33173         to auto_inc_dec".
33174         * mode-switching.c (pass_mode_switching): Rename pass from
33175         "mode-sw" to "mode_sw".
33176         * except.c (pass_convert_to_eh_ranges): Rename pass from
33177         "eh-ranges" to "eh_ranges".
33178         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
33179         to "subreg1".
33180
33181
33182 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
33183             Alexander Monakov  <amonakov@ispras.ru>
33184
33185         PR middle-end/38857
33186         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
33187         register.
33188         (move_exprs_to_boundary): Change return type and pass through
33189         should_move from move_op.  Relax assert.  Update usage ...
33190         (schedule_expr_on_boundary): ... here.  Use should_move instead of
33191         cant_move.
33192         (move_op_orig_expr_found): Indicate that insn was disconnected from
33193         stream.
33194         (code_motion_process_successors): Do not call after_merge_succs
33195         callback if original expression was not found when traversing any of
33196         the branches.
33197         (code_motion_path_driver): Change return type.  Update prototype.
33198         (move_op): Update comment.  Add a new parameter (should_move).  Update
33199         prototype.  Set *should_move based on indication provided by
33200         move_op_orig_expr_found.
33201
33202 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
33203
33204         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
33205         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
33206         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
33207         * config/rs6000/rs6000.c (rs6000_override_options): Default
33208         avoid-indexed-addresses on for Power6, off for everything else.
33209         (avoiding_indexed_address_p): New function.
33210         (rs6000_legitimize_address): Use it.
33211         (rs6000_legitimate_address): Likewise.
33212         * config/rs6000/rs6000.md (movXX_updateX): Likewise
33213
33214 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
33215
33216         PR tree-optimization/38997
33217         * tree-loop-distribution.c (generate_memset_zero): Use
33218         POINTER_PLUS_EXPR for a pointer addition.
33219
33220 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
33221
33222         * config/s390/s390.md (bswap<mode>2): New pattern added.
33223
33224 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
33225
33226         * config/s390/s390.md (*tls_load_31): Added type attribute.
33227
33228 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
33229
33230         * config/s390/s390.md: Fix a few comments.
33231
33232 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
33233
33234         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
33235         (*tm<mode>_full): Fixed z10prop attribute.
33236         (*tst<mode>_extimm): Fixed z10prop attribute.
33237         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
33238         (*tstqiCCT_cconly): Fixed z10prop attribute.
33239         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
33240         (*movsi_larl): Fixed z10prop attribute.
33241         (*movsi_zarch): Fixed z10prop attribute.
33242         (*movsi_eas): Fixed z10prop attribute.
33243         (*movhi): Fixed z10prop attribute.
33244         (*movqi): Fixed z10prop attribute.
33245         (*movstrictqi): Fixed z10prop attribute.
33246         (*mov<mode>): Fixed z10prop attribute.
33247         (*movcc): Fixed z10prop attribute.
33248         (*sethighpartdi_64): Fixed z10prop attribute.
33249         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
33250         (*negdi2_sign_cc): Fixed z10prop attribute.
33251         (*negdi2_sign): Fixed z10prop attribute.
33252         (*absdi2_sign_cc): Fixed z10prop attribute.
33253         (*absdi2_sign): Fixed z10prop attribute.
33254         (*negabsdi2_sign_cc): Fixed z10prop attribute.
33255         (*negabsdi2_sign): Fixed z10prop attribute.
33256         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
33257         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
33258         (doloop_si64): Fixed z10prop attribute.
33259         (doloop_si31): Fixed z10prop attribute.
33260         (doloop_long): Fixed z10prop attribute.
33261         (indirect_jump): Fixed z10prop attribute.
33262         (nop): Fixed z10prop attribute.
33263         (main_base_64): Fixed z10prop attribute.
33264         (reload_base_64): Fixed z10prop attribute.
33265
33266 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
33267
33268         PR rtl-optimization/38740
33269         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
33270         if !optimize.
33271         * config/mips/mips.c (mips_reorg): Likewise.
33272
33273 2009-01-28  Richard Guenther  <rguenther@suse.de>
33274
33275         PR tree-optimization/38926
33276         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
33277         with the correct value id to a value.
33278         (do_regular_insertion): Use the value number of edoubleprime
33279         for the value number of the expr.
33280
33281         Revert
33282         2008-08-21  Richard Guenther  <rguenther@suse.de>
33283
33284         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
33285         a PHI ask VN if it is already available.
33286         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
33287         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
33288
33289 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
33290
33291         PR middle-end/38934
33292         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
33293         set to varying whenever max has TREE_OVERFLOW set, similarly
33294         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
33295
33296 2009-01-28  Richard Guenther  <rguenther@suse.de>
33297
33298         PR middle-end/38908
33299         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
33300         uninitialized aggregate uses in call arguments.
33301
33302 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
33303
33304         PR tree-optimization/38984
33305         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
33306         the nothing_id variable if -fno-delete-null-pointer-checks.
33307
33308 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
33309
33310         PR target/38988
33311         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
33312         (set_got_offset_rex64): Ditto.
33313
33314 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
33315
33316         PR target/38941
33317         * doc/extend.texi: Improve local variable with asm reg.
33318
33319 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
33320
33321         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
33322         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
33323         was not supplied then set warn_packed_bitfield_compat to the
33324         default value of 1.
33325         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
33326         against 1.
33327
33328 2009-01-27  Richard Guenther  <rguenther@suse.de>
33329
33330         PR tree-optimization/38503
33331         * cfgexpand.c (expand_gimple_basic_block): Ignore
33332         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
33333         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
33334         variables that cannot have TBAA applied.
33335         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
33336         statements.
33337
33338 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
33339
33340         PR middle-end/38969
33341         * calls.c (initialize_argument_information): Do not wrap complex
33342         arguments in SAVE_EXPR.
33343
33344 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
33345
33346         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
33347         (INSTALL_LIBGCC): Revert typo commit.
33348
33349 2009-01-26  Richard Guenther  <rguenther@suse.de>
33350
33351         PR tree-optimization/38745
33352         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
33353         from special handling.
33354
33355 2009-01-26  Richard Guenther  <rguenther@suse.de>
33356
33357         PR tree-optimization/38745
33358         * tree-ssa.c (execute_update_addresses_taken): Do not include
33359         variables that cannot possibly be a register in not_reg_needs.
33360         Do not clear TREE_ADDRESSABLE on vars that may not become
33361         registers.
33362         * tree-ssa.c (update_alias_info_1): Include those in the set
33363         of addressable vars.
33364
33365 2009-01-26  Richard Guenther  <rguenther@suse.de>
33366
33367         PR middle-end/38851
33368         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
33369         * tree-ssa-dse.c: Include langhooks.h
33370         (execute_simple_dse): Remove stores with zero size.
33371
33372 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
33373
33374         PR c/38957
33375         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
33376         as PLUS_EXPR.
33377
33378 2009-01-24  Julian Brown  <julian@codesourcery.com>
33379
33380         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
33381         config/arm/linux-atomic.c.
33382         * config/arm/linux-atomic.c: New.
33383
33384 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
33385
33386         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
33387         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
33388         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
33389
33390 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
33391
33392         PR c/38938
33393         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
33394         properly.
33395
33396 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
33397
33398         PR tree-optimization/38953
33399         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
33400         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
33401         (gloog): Split the exit of the scop when the scop exit is a loop exit.
33402         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
33403         changed the CFG.
33404
33405 2009-01-24  Paul Brook  <paul@codesourcery.com>
33406
33407         * config/arm/neon.md (neon_type): Move to arm.md.
33408         (neon_mov<VSTRUCT>): Add neon_type attribute.
33409         * config/arm/arm.md (neon_type): Move to here.
33410         (conds): Add "unconditioal" and use as default for NEON insns.
33411
33412 2009-01-24  Ben Elliston  <bje@au.ibm.com>
33413
33414         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
33415         void *' warning from -Wc++-compat.
33416         * Makefile.in (dominance.o-warn): Remove.
33417
33418 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
33419
33420         PR tree-optimization/38932
33421         * fold-const.c (fold_unary_ignore_overflow): New.
33422         * tree.h (fold_unary_ignore_overflow): Declare.
33423         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
33424         * tree-ssa-sccvn.c (visit_reference_op_load,
33425         simplify_unary_expression): Likewise.
33426
33427 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
33428
33429         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
33430         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
33431         regardless of their type.
33432         * c-common.c (handle_packed_attribute): Don't ignore packed on
33433         bitfields.
33434         * c.opt (Wpacked-bitfield-compat): New warning option.
33435         * stor-layout.c (place_field): Warn if offset of a field changed.
33436         * doc/extend.texi (packed): Mention the ABI change.
33437         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
33438         (Warning Options): Add it to the list.
33439
33440 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
33441
33442         * c-opts.c (c_common_post_options): Fix a typo in comments.
33443
33444 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
33445
33446         PR middle-end/38615
33447         * gimplify.c (gimplify_init_constructor): Fix promotion of const
33448         variables to static.
33449         * doc/invoke.texi (-fmerge-all-constants): Update description.
33450
33451 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
33452
33453         PR target/38931
33454         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
33455         (*movdi_1_rex64): Use type "mmx" for alternative 5.
33456
33457 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
33458
33459         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
33460         a word boundary.
33461         (LOCAL_ALIGNMENT): Similarly.
33462
33463 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
33464             Joseph Myers  <joseph@codesourcery.com>
33465
33466         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
33467         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
33468         * config/arm/arm-tune.md: Regenerate.
33469         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
33470         -march=iwmmxt2.
33471
33472 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
33473
33474         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
33475         version number to five.
33476
33477 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
33478
33479         PR c++/38930
33480         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
33481         * c-common.c (set_underlying_type): Likewise.
33482         (is_typedef_decl ): Likewise
33483         * tree.h: Likewise
33484         (set_underlying_type): Likewise.
33485         (is_typedef_type): Likewise.
33486
33487 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
33488
33489         PR middle-end/38587
33490         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
33491         crossing setjmps.
33492
33493 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
33494
33495         PR bootstrap/37660
33496         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
33497         (LIBGCC_SPEC):  Don't define.
33498         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
33499
33500 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
33501
33502         PR rtl-optimization/38879
33503         * alias.c (base_alias_check): Unaligned access via AND address can
33504         alias all surrounding object types except those with sizes equal
33505         or wider than the size of unaligned access.
33506
33507 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
33508
33509         PR c++/26693
33510         * c-decl.c (clone_underlying_type): Move this ...
33511         * c-common.c (set_underlying_type): ... here.
33512         Also, make sure the function properly sets TYPE_STUB_DECL() on
33513         the newly created typedef variant type.
33514         (is_typedef_decl ): New entry point.
33515         * tree.h: Added a new member member_types_needing_access_check to
33516         struct tree_decl_non_common.
33517         (set_underlying_type): New entry point.
33518         (is_typedef_type): Likewise.
33519
33520 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
33521
33522         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
33523         Check whether two instructions have memory references that
33524         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
33525         are helper functions for traversing.
33526         * alias.h (insn_alias_sets_confilict_p): New prototypes.
33527         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
33528         not to draw dependency edge for instructions with non-conflicting
33529         alias sets.
33530
33531 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
33532
33533         PR other/38758
33534         * longlong.h: Update copyright years.  Use soft-fp license notice.
33535         Sync __clz_tab declaration with glibc.
33536
33537 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
33538
33539         PR target/30687
33540         * doc/extend.texi (syscall_linkage): New.
33541         (version_id): Modify.
33542
33543 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33544             Richard Guenther  <rguenther@suse.de>
33545
33546         PR tree-optimization/38747
33547         PR tree-optimization/38748
33548         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
33549         conversion if the base address is an indirect reference and the
33550         aliasing sets could cause issues.
33551
33552 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33553
33554         * common.opt (fgraphite, fgraphite-identity): Add comment for
33555         explaining why these options are not documented.
33556
33557 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
33558
33559         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
33560         gimple_call_lhs is NULL.
33561
33562 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
33563
33564         PR target/38868
33565         * emit-rtl.c (adjust_address_1): Make sure memref is never
33566         overwritten.
33567
33568 2009-01-20  Ben Elliston  <bje@au.ibm.com>
33569
33570         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33571         const qualifier from arg parameter. Remove unnecessary cast to char *.
33572         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
33573         const qualifier from arg 2.
33574
33575 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
33576
33577         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
33578
33579 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
33580
33581         PR c/38869
33582         * rtl.h (reinit_regs): New prototype.
33583         * regclass.c: Include ira.h.
33584         (reinit_regs): New.
33585         * Makefile.in (regclass.o): Add ira.h.
33586         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
33587
33588 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
33589
33590         PR target/38736
33591         * c-common.c (handle_aligned_attribute): Use
33592         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
33593         default alignment value.
33594
33595         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
33596
33597         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
33598         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
33599
33600         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
33601         __BIGGEST_ALIGNMENT__.
33602
33603         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
33604
33605 2009-01-18  Richard Guenther  <rguenther@suse.de>
33606
33607         PR tree-optimization/38819
33608         * tree-flow.h (operation_could_trap_helper_p): Declare.
33609         * tree-eh.c (operation_could_trap_helper_p): Export.
33610         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
33611         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
33612         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
33613         are about to insert a possibly trapping instruction and fail
33614         in this case.
33615
33616 2009-01-18  Andreas Schwab  <schwab@suse.de>
33617
33618         * doc/install.texi (Configuration): Remove obsolete paragraph
33619         about use of --with-gnu-ld with --with-gnu-as.
33620
33621 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
33622
33623         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
33624         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
33625         Follow spelling conventions.
33626
33627 2009-01-18  Ben Elliston  <bje@au.ibm.com>
33628
33629         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
33630         C++ warning about implicit conversion from void * to struct
33631         bitmap_head_def *.
33632         (bitmap_obstack_free): Likewise for bitmap_element *.
33633         * Makefile.in (bitmap.o-warn): Remove.
33634
33635 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
33636
33637         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
33638
33639 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
33640             Tobias Grosser  <tobi.grosser@amd.com>
33641
33642         * graphite.c (graphite_trans_scop_block): Do not block single
33643         nested loops.
33644
33645 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
33646
33647         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
33648         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
33649         test with assertion.
33650
33651 2009-01-16  Richard Guenther  <rguenther@suse.de>
33652
33653         PR tree-optimization/38835
33654         PR middle-end/36227
33655         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
33656         and INT + PTR -> (INT)(PTR p+ INT) folding.
33657         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
33658
33659 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
33660
33661         PR target/38554
33662         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
33663         the subreg from a lowpart subreg if it is also casting the value.
33664
33665 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33666             Tobias Grosser  <tobi.grosser@amd.com>
33667
33668         * graphite.c (compare_prefix_loops): New.
33669         (build_scop_canonical_schedules): Rewritten.
33670         (graphite_transform_loops): Move build_scop_canonical_schedules
33671         after build_scop_iteration_domain.
33672
33673 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
33674             Tobias Grosser  <tobi.grosser@amd.com>
33675
33676         * graphite.c (add_conditions_to_domain): Add the loops to
33677         the dimension of the iteration domain.  Do copy the domain
33678         only when it exists.
33679         (build_scop_conditions_1): Do not call add_conditions_to_domain.
33680         (add_conditions_to_constraints): New.
33681         (can_generate_code_stmt, can_generate_code): Removed.
33682         (gloog): Do not call can_generate_code.
33683         (graphite_transform_loops): Call add_conditions_to_constraints
33684         after building the iteration domain.
33685
33686 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
33687
33688         PR tree-optimization/38789
33689         * tree-ssa-threadedge.c
33690         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
33691         __builtin_constant_p.
33692
33693 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
33694
33695         * dce.c (delete_unmarked_insns): Reversed the order that insns are
33696         examined before deleting them.
33697
33698 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
33699
33700         * function.c (aggregate_value_p): Correctly extract the function
33701         type from CALL_EXPR_FN lookup.
33702
33703 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
33704
33705         * config/picochip/picochip.c (picochip_override_options): Revert
33706         CFI asm flag disable commited previously.
33707
33708 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
33709             Tobias Grosser  <tobi.grosser@amd.com>
33710             Jan Sjodin  <jan.sjodin@amd.com>
33711
33712         * graphite.c (scan_tree_for_params): On substractions negate
33713         all the coefficients of the term.
33714         (clast_to_gcc_expression_red): New.  Handle reduction expressions
33715         of more than two operands.
33716         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
33717         (get_vdef_before_scop): Handle also the case of default definitions.
33718
33719 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
33720
33721         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
33722         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
33723         Also use them when walking CALL_INSN_FUNCTION_USAGE.
33724
33725 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
33726             Joey Ye  <joey.ye@intel.com>
33727
33728         PR middle-end/37843
33729         * cfgexpand.c (expand_stack_alignment): Don't update stack
33730         boundary nor check incoming stack boundary here.
33731         (gimple_expand_cfg): Update stack boundary and check incoming
33732         stack boundary here.
33733
33734 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
33735
33736         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
33737
33738 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
33739
33740         PR rtl-optimization/38245
33741         * calls.c (expand_call): Add stack arguments to
33742         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33743         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
33744         in regs and partially in memory or BLKmode arguments.
33745         (emit_library_call_value_1): Add stack arguments to
33746         CALL_INSN_FUNCTION_USAGE even for pure calls (when
33747         ACCUMULATE_OUTGOING_ARGS).
33748         * dce.c: Include tm_p.h.
33749         (find_call_stack_args): New function.
33750         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
33751         argument.
33752         (mark_insn): Call find_call_stack_args for CALL_Ps.
33753         (prescan_insns_for_dce): Walk insns backwards in bb rather than
33754         forwards.  Allocate and free arg_stores bitmap if needed, pass it
33755         down to deletable_insn_p, don't mark stores set in arg_stores
33756         bitmap, clear the bitmap at the beginning of each bb.
33757         * Makefile.in (dce.o): Depend on $(TM_P_H).
33758
33759 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
33760
33761         PR target/22599
33762         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
33763         to make sure the insn is a conditional test (bug 22599).  Reformat a
33764         few long lines.
33765
33766 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
33767
33768         PR middle-end/38431
33769         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
33770         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
33771         (gloog): Do not call cleanup_tree_cfg.
33772         (graphite_transform_loops): Call cleanup_tree_cfg after all
33773         scops have been code generated.
33774
33775 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
33776         * doc/gty.texi (Invoking the garbage collector): Added new node
33777         and section documenting ggc_collect.
33778
33779 2009-01-14  Richard Guenther  <rguenther@suse.de>
33780
33781         PR tree-optimization/38826
33782         PR middle-end/38477
33783         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
33784         initialization notes only if we actually emitted a warning.
33785         (intra_create_variable_infos): Add constraints for a result decl
33786         that is passed by hidden reference.
33787         (build_pred_graph): Mark all related variables non-direct on
33788         address-taking.
33789
33790 2009-01-14  Nick Clifton  <nickc@redhat.com>
33791
33792         * ira-conflicts.c: Include addresses.h for the definition of
33793         base_reg_class.
33794         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
33795         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
33796
33797 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
33798
33799         PR target/38811
33800         * Makefile.in (ira-lives.o): Add except.h.
33801
33802         * ira-lives.c: Include except.h.
33803         (process_bb_node_lives): Process can_throw_internal.
33804
33805 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
33806
33807         PR rtl-optimization/38774
33808         * combine.c (simplify_set): When undoing cc_use change, don't do
33809         PUT_CODE on the newly created comparison, but instead put back the
33810         old comparison.
33811
33812 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
33813
33814         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
33815         values.  Remove duplicate arm8 entry.
33816
33817 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33818
33819         PR tree-optimization/38786
33820         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
33821         the SSA_NAME case of expand_scalar_variables_expr.
33822         Set the type of an expression to the type of its assign statement.
33823         (expand_scalar_variables_expr): Also gather the scalar computation
33824         used to index the memory access.  Do not pass loop_p.
33825         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
33826         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
33827         the gimple_stmt_iterator where it inserts new code.
33828         Do not pass loop_p.
33829         (copy_bb_and_scalar_dependences): Do not pass loop_p.
33830         (translate_clast): Update call to copy_bb_and_scalar_dependences.
33831
33832 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
33833
33834         * graphite.h (debug_value): Removed.
33835         * graphite.c (debug_value): Removed.
33836
33837 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33838
33839         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
33840         ldrd/strd with two 32-bit instructions.
33841
33842 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33843
33844         * config/arm/arm.c (struct processors): Pass for speed down into
33845         cost helper functions.
33846         (const_ok_for_op): Handle COMPARE and inequality nodes.
33847         (arm_rtx_costs_1): Rewrite.
33848         (arm_size_rtx_costs): Update prototype.
33849         (arm_rtx_costs): Pass speed down to helper functions.
33850         (arm_slowmul_rtx_costs): Rework cost calculations.
33851         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
33852         (arm_9e_rtx_costs): Likewise.
33853
33854 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
33855
33856         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
33857         relocations of local symbols wider than UNITS_PER_WORD are not valid.
33858         (alpha_legitimize_address): Do not split local symbols wider than
33859         UNITS_PER_WORD into HIGH/LO_SUM parts.
33860
33861 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
33862
33863         PR bootstrap/38580
33864         * gcc.c (process_command): Replace call to execvp with calls
33865         to pex_one and exit.
33866
33867 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
33868
33869         PR target/29141
33870         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
33871         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
33872         variant for devices with 3-byte PC.
33873         (__tablejump_elpm__): New.
33874
33875 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33876
33877         PR c/32041
33878         * c-parser.c (c_parser_postfix_expression): Allow `->' in
33879         offsetof member-designator, handle it as `[0].'.
33880
33881 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33882
33883         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
33884         function when not using named sections on targets with named sections
33885         if branch distance is less than 262132.
33886
33887 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
33888
33889         * combine.c (combine_instructions):  Recompute
33890         optimize_this_for_speed_p  for each BB in the main combine loop.
33891
33892 2009-01-12  Tomas Bily  <tbily@suse.cz>
33893
33894         PR middlend/38385
33895         * tree-loop-distribution.c (prop_phis): New function.
33896         (generate_builtin): Call prop_phis.
33897
33898 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33899
33900         PR tree-optimization/38807
33901         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
33902         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
33903
33904 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
33905
33906         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
33907         subreg of op0 to the original op0.
33908
33909 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
33910
33911         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
33912
33913 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
33914
33915         PR debug/7055
33916         * mips-tfile.c (parse_def): Fix parsing of def strings
33917         starting with digits.
33918
33919 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
33920
33921         PR target/38695
33922         * config/arm/arm.c (arm_is_long_call_p): Don't call
33923         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
33924
33925 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
33926
33927         * regrename.c (regrename_optimize): Fix dumping.
33928         (find_oldest_value_reg): Preserve REG_POINTER.
33929         (copy_hardreg_forward_1): Likewise.
33930
33931 2009-01-09  Diego Novillo  <dnovillo@google.com>
33932
33933         * gimple.h (struct gimple_statement_base) <uid>: Document
33934         the restrictions on its use.
33935         (gimple_uid): Tidy.
33936         (gimple_set_uid): Tidy.
33937
33938 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33939
33940         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
33941         zero guard even if align_bytes != 0 and count is smaller than
33942         size_needed.
33943
33944 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
33945
33946         PR rtl-optimization/38495
33947         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
33948         (add_range_and_copies_from_move_list): Print all added ranges.
33949         Add ranges to memory optimized destination.
33950
33951 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33952
33953         PR target/38686
33954         PR target/38708
33955         * config/i386/i386.c (override_options): Reject
33956         -mstringop-strategy=rep_8byte with -m32.
33957         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
33958         to 1.  Do count comparison against epilogue_size_needed at compile
33959         time even when count_exp was constant forced into register.  For
33960         size_needed don't jump to epilogue, instead just avoid aligning
33961         and invoke the body algorithm.  If need_zero_guard, add zero guard
33962         even if count is non-zero, but smaller than size_needed + number of
33963         bytes that could be stored for alignment.
33964         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
33965         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
33966         but smaller than size_needed + number of bytes that could be stored
33967         for alignment.  Compare size_needed with epilogue_size_needed instead
33968         of desired_align - align, don't adjust size_needed, pass
33969         epilogue_size_needed to the epilogue expanders.
33970
33971         PR c/35742
33972         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
33973
33974 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33975
33976         * pa.c (last_address): Change to unsigned.
33977         (update_total_code_bytes): Change argument to unsigned.  Don't
33978         check if insn addresses are set.
33979         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
33980         addresses are not set.
33981         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
33982
33983 2009-01-09  Nick Clifton  <nickc@redhat.com>
33984
33985         * config/sh/symbian.c: Replace uses of DECL_INLINE with
33986         DECL_DECLARED_INLINE_P.
33987
33988 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33989
33990         PR middle-end/38347
33991         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
33992         GET_MODE (op0) in operand_subword_force calls.
33993
33994         PR middle-end/38771
33995         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
33996         fold_convert arg0 operands to TREE_TYPE (op0) first.
33997
33998 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
33999
34000         * params.def (ira-max-conflict-table-size): Decrease default value
34001         to 1000.
34002
34003 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
34004
34005         PR tree-optimization/37031
34006         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
34007         on parameter_set.
34008         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
34009         allocate it using gc instead of heap, use VEC_quick_push instead of
34010         VEC_safe_push.
34011         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
34012         instead of heap, use VEC_quick_push instead of VEC_safe_push.
34013         * tree-data-ref.h (struct access_matrix): Change matrix to gc
34014         allocated vector from heap allocated.
34015         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
34016         * tree-loop-linear.c (linear_transform_loops): Allocate nest
34017         vector only after perfect_loop_nest_depth call.
34018
34019 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
34020             Jan Sjodin  <jan.sjodin@amd.com>
34021
34022         PR tree-optimization/38559
34023         * graphite.c (debug_value, copy_constraint,
34024         swap_constraint_variables, scale_constraint_variable, ): New.
34025         (get_lower_bound, get_upper_bound): Removed.
34026         (graphite_trans_bb_strip_mine): Clean up this code that works
34027         only for constant number of iterations.  Fully copy upper and
34028         lower bound constraints, not only the constant part of them.
34029         * graphite.h (debug_value): Declared.
34030
34031 2009-01-08  Ira Rosen  <irar@il.ibm.com>
34032
34033         PR tree-optimization/37194
34034         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
34035         Don't add the cost of cost model guard in prologue to scalar
34036         outside cost in case of known number of iterations.
34037
34038 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
34039             Alan Modra  <amodra@bigpond.net.au>
34040
34041         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
34042         non-word-aligned REG+CONST addressing.
34043
34044 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
34045
34046         PR target/38706
34047         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
34048         free_after_compilation when outputting a thunk.
34049         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
34050         Do not call free_after_compilation here.
34051
34052 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
34053
34054         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
34055         (ix86_valid_target_attribute_inner_p): Ditto.
34056
34057 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
34058
34059         PR tree-optimization/38492
34060         PR tree-optimization/38498
34061         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
34062         * tree-chrec.h (scev_is_linear_expression): Declared.
34063         * graphite.c (graphite_cannot_represent_loop_niter): New.
34064         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
34065         (graphite_loop_normal_form): Use gcc_assert.
34066         (scan_tree_for_params): Use CASE_CONVERT.
34067         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
34068         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
34069         Use gcc_assert.  Discard scops that contain unhandled cases.
34070         (build_scop_conditions): Return a boolean status for unhandled cases.
34071         (strip_mine_profitable_p): Print the loop number, not its depth.
34072         (is_interchange_valid): Pass the depth of the loop nest, don't
34073         recompute it wrongly.
34074         (graphite_trans_bb_block): Same.
34075         (graphite_trans_bb_block): Print tentative of loop blocking.
34076         (graphite_trans_scop_block): Do not print that the loop has been
34077         blocked.
34078         (graphite_transform_loops): Do not handle scops that contain condition
34079         scalar phi nodes.
34080
34081 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
34082
34083         AVX Programming Reference (December, 2008)
34084         * config/i386/avxintrin.h (_mm256_stream_si256): New.
34085         (_mm256_stream_pd): Likewise.
34086         (_mm256_stream_ps): Likewise.
34087
34088         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
34089         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
34090         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
34091         (bdesc_special_args): Add __builtin_ia32_movntdq256,
34092         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
34093         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
34094         (ix86_expand_special_args_builtin): Likewise.
34095
34096         * config/i386/sse.md (AVXMODEDI): New.
34097         (avx_movnt<mode>): Likewise.
34098         (avx_movnt<mode>): Likewise.
34099         (<sse>_movnt<mode>): Remove AVX support.
34100         (sse2_movntv2di): Likewise.
34101
34102 2009-01-07  Richard Guenther  <rguenther@suse.de>
34103
34104         PR middle-end/38751
34105         * fold-const.c (extract_muldiv): Remove obsolete comment.
34106         (fold_plusminus_mult_expr): Undo MINUS_EXPR
34107         to PLUS_EXPR canonicalization for the canonicalization.
34108
34109 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
34110
34111         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
34112         hosted cross-compilers generating less efficient code.
34113
34114 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
34115
34116         * function.h (rtl_data): Add a dbr_scheduled_p field.
34117         * reorg.c (dbr_schedule): Set it.
34118         (gate_handle_delay_slots): Check it.
34119         * config/mips/mips.c (mips_base_delayed_branch): Delete.
34120         (mips_reorg): Check flag_delayed_branch instead of
34121         mips_base_delayed_branch.
34122         (mips_override_options): Don't set mips_base_delayed_branch
34123         or flag_delayed_branch.
34124
34125 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
34126
34127         PR rtl-optimization/38426.
34128         * ira.c (ira): Set current_function_is_leaf earlier.
34129
34130 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
34131
34132         PR rtl-optimization/38722
34133         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
34134         too early, only set a flag and modify after last possible
34135         undo_all point.
34136
34137 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
34138
34139         PR c/34252
34140         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
34141         * real.c (decimal_single_format): Correct values of emin and emax.
34142         (decimal_double_format): Ditto.
34143         (decimal_quad_format): Ditto.
34144         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
34145         computation of DECnn_MIN and DECnn_MAX for corrected values of
34146         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
34147         __DECnn_MIN__, and adjust its computation for the corrected value
34148         of emin.
34149
34150 2009-01-06  Jan Hubicka  <jh@suse.cz>
34151
34152         PR target/38744
34153         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
34154
34155 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
34156
34157         * doc/contrib.texi (Contributors): Slightly adjust the end note.
34158         Add Robert Clark to the list of testers.
34159
34160 2009-01-06  Jan Hubicka  <jh@suse.cz>
34161             Kai Tietz  <kai.tietz@onevision.com>
34162
34163         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
34164         * config/i386/i386.c (ix86_expand_call): Add clobbers.
34165
34166 2009-01-06  Jan Hubicka  <jh@suse.cz>
34167             Kai Tietz  <kai.tietz@onevision.com>
34168
34169         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
34170         for w64 ABI.
34171         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
34172         (ix86_nsaved_regs): Count only general purpose regs.
34173         (ix86_nsaved_sseregs): New.
34174         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
34175         to 16 for w64; compute padding and size of sse reg save area.
34176         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
34177         general purpose regs.
34178         (ix86_emit_save_sse_regs_using_mov): New.
34179         (ix86_expand_prologue): Save SSE regs if needed.
34180         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
34181         (ix86_emit_restore_sse_regs_using_mov): New.
34182         (ix86_expand_epilogue): Save SSE regs if needed.
34183
34184 2009-01-06  Jan Hubicka  <jh@suse.cz>
34185             Kai Tietz  <kai.tietz@onevision.com>
34186
34187         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
34188         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
34189         functions when accumulate outgoing args is off.
34190
34191 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
34192
34193         PR bootstrap/38742
34194         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
34195         before using pseudos_have_intersected_live_ranges_p.
34196
34197         * ira-int.h (ira_assert): Always define.
34198
34199 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
34200
34201         AVX Programming Reference (December, 2008)
34202         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
34203         (_mm256_permute2_pd): Likewise.
34204         (_mm_permute2_ps): Likewise.
34205         (_mm256_permute2_ps): Likewise.
34206         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
34207         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
34208
34209         * config/i386/i386.c (ix86_builtins): Remove
34210         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
34211         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
34212         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
34213         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
34214         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
34215         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
34216         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
34217         __builtin_ia32_vpermil2ps256.
34218         (ix86_init_mmx_sse_builtins): Updated.
34219         (ix86_expand_args_builtin): Likewise.
34220
34221 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
34222
34223         * pa.c (output_call): Relocate non-jump insns in the delay slot of
34224         long absolute calls when generating PA 2.0 code.
34225
34226 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
34227
34228         PR rtl-optimization/38583
34229         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
34230
34231         * params.def (ira-max-conflict-table-size): New.
34232
34233         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
34234
34235         * ira.h (ira_conflicts_p): New external definition.
34236
34237         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
34238         table.  Report this.  Return result of building.
34239         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
34240         building conflict table.
34241
34242         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
34243         (ira_color): Use ira_conflicts_p.
34244
34245         * global.c: Include ira.h.
34246         (pseudo_for_reload_consideration_p, build_insn_chain): Use
34247         ira_conflicts_p.
34248
34249         * Makefile.in (global.o): Add ira.h.
34250
34251         * ira-build.c (mark_all_loops_for_removal,
34252         propagate_some_info_from_allocno): New.
34253         (remove_unnecessary_allocnos): Call
34254         propagate_some_info_from_allocno.
34255         (remove_low_level_allocnos): New.
34256         (remove_unnecessary_regions): Add parameter.  Call
34257         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
34258         parameter to remove_unnecessary_regions.
34259         (ira_build): Remove all regions but root if the conflict table was
34260         not built.  Update conflict hard regs for allocnos crossing calls.
34261
34262         * ira.c (ira_conflicts_p): New global.
34263         (ira): Define and use ira_conflicts_p.
34264
34265         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
34266         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
34267         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
34268
34269 2009-01-06  Ben Elliston  <bje@au.ibm.com>
34270
34271         * gengtype-lex.l (YY_NO_INPUT): Define.
34272
34273 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
34274
34275         PR c/34911
34276         * c-common.c (handle_vector_size_attribute): Also reject
34277         BOOLEAN_TYPE types.
34278
34279 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
34280
34281         PR tree-optimization/38492
34282         * graphite.c (rename_map_elt, debug_rename_elt,
34283         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
34284         rename_map_elt_info, eq_rename_map_elts,
34285         get_new_name_from_old_name, bb_in_sese_p): Moved around.
34286         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
34287         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
34288         (sese_build_livein_liveouts): New.
34289         (new_sese, free_sese): New.
34290         (new_scop): Call new_sese.
34291         (free_scop): Call free_sese.
34292         (rename_variables_from_edge, rename_phis_end_scop): Removed.
34293         (register_old_new_names): Renamed register_old_and_new_names.
34294         (register_scop_liveout_renames, add_loop_exit_phis,
34295         insert_loop_close_phis, struct igp,
34296         default_liveout_before_guard, add_guard_exit_phis,
34297         insert_guard_phis, copy_renames): New.
34298         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
34299         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
34300         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
34301         (scop_adjust_phis_for_liveouts): New.
34302         (gloog): Call scop_adjust_phis_for_liveouts.
34303
34304         * graphite.h (struct sese): Documented.  Added fields liveout,
34305         num_ver and livein.
34306         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
34307         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
34308         (struct scop): Added field liveout_renames.
34309         (SCOP_LIVEOUT_RENAMES): New.
34310
34311 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
34312
34313         PR tree-optimization/38510
34314         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
34315         (translate_clast): Call recompute_all_dominators before
34316         graphite_verify.
34317         (gloog): Call recompute_all_dominators before graphite_verify.
34318
34319 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
34320             Jan Sjodin  <jan.sjodin@amd.com>
34321
34322         PR tree-optimization/38500
34323         * graphite.c (create_sese_edges): Call fix_loop_structure after
34324         splitting blocks.
34325
34326 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
34327
34328         * config.gcc: Add m32r*-*-rtems*.
34329         * config/m32r/rtems.h: New file.
34330
34331 2009-01-05  Ben Elliston  <bje@au.ibm.com>
34332
34333         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
34334         (.po.pox): Likewise.
34335         (po/gcc.pot): Likewise.
34336
34337 2009-01-04  David S. Miller  <davem@davemloft.net>
34338
34339         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
34340         (STARTING_FRAME_OFFSET): Always set to zero.
34341
34342 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
34343
34344         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
34345         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
34346         fixed-point types, and vectors of the same.
34347
34348 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
34349
34350         * config/mips/sync.md (*mb_barrier): Rename to...
34351         (*memory_barrier): ...this.
34352
34353 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
34354
34355         * doc/extend.texi (Function Attributes): Move @cindex after @item
34356         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
34357         and put in alphabetical order. Fix 'target' name and put in order.
34358         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
34359         typos.
34360
34361 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
34362
34363         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
34364         (memory_barrier): Expand as unspec instead of unspec_volatile.
34365         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34366         (*memory_barrier): Define as unspec instead of unspec_volatile.
34367         Use (match_dup 0) as input operand.
34368
34369         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
34370         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
34371         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
34372         scratch register.  Remove operand 1.
34373         (*stbar): Define as unspec instead of unspec_volatile.
34374         Use (match_dup 0) as input operand, remove (const_int 8).
34375         (*membar): Define as unspec instead of unspec_volatile.
34376         Use (match_dup 0) as input operand, remove input operand 2.
34377
34378         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
34379         (memory_barrier): Expand as unspec instead of unspec_volatile.
34380         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34381         (*memory_barrier): Define as unspec instead of unspec_volatile.
34382         Use (match_dup 0) as input operand.
34383
34384         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
34385         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34386         Set volatile flag on operand 0.
34387         (*memory_barrier): New insn pattern.
34388
34389         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
34390         insn operands.
34391         (*memory_barrier): Use (match_dup 0) as input operand.
34392
34393         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
34394         Remove mem:BLK from insn operands.  Use Pmode scratch register.
34395         Set volatile flag on operand 0.
34396         (*mb_internal): New insn pattern.
34397
34398         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
34399
34400 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
34401
34402         PR middle-end/38586
34403         * function.c (struct temp_slot): Move to the section of the file
34404         that deals with temp slots.  Remove field 'address'.
34405         (temp_slot_address_table): New hash table of address -> temp slot.
34406         (struct temp_slot_address_entry): New struct, items for the table.
34407         (temp_slot_address_compute_hash, temp_slot_address_hash,
34408         temp_slot_address_eq, insert_temp_slot_address): Support functions
34409         for the new table.
34410         (find_temp_slot_from_address): Rewrite to use the new hash table.
34411         (remove_unused_temp_slot_addresses): Remove addresses of temp
34412         slots that have been made available.
34413         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
34414         worker function for remove_unused_temp_slot_addresses.
34415         (assign_stack_temp_for_type): Don't clear the temp slot address list.
34416         Add the temp slot address to the address -> temp slot map.
34417         (update_temp_slot_address): Update via insert_temp_slot_address.
34418         (free_temp_slots): Call remove_unused_temp_slot_addresses.
34419         (pop_temp_slots): Likewise.
34420         (init_temp_slots): Allocate the address -> temp slot map, or empty
34421         the map if it is already allocated.
34422         (prepare_function_start): Initialize temp slot processing.
34423
34424 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
34425
34426         PR middle-end/38584
34427         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
34428         Calculate the size of all stack vars assuming no packing of stack
34429         vars will happen, replacing a quadratic algorithm with a linear one.
34430
34431 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
34432
34433         PR target/38707
34434         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
34435         can't be used.
34436
34437 2009-01-03  Diego Novillo  <dnovillo@google.com>
34438
34439         * doc/contrib.texi: Update contributions.
34440
34441 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
34442
34443         PR c++/38705
34444         * builtins.c (fold_builtin_memory_op): Give up if either operand
34445         is volatile.  Set srctype or desttype to non-qualified version
34446         of the other type.
34447
34448         PR c/38700
34449         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
34450         and FUNCTION_DECLs.
34451
34452 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
34453
34454         PR rtl-optimization/35805
34455         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
34456         problem if fast dce is able to remove any instructions.
34457         * dce.c (dce_process_block): Fix dump message.
34458
34459 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
34460
34461         PR 33649
34462         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
34463
34464 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
34465
34466         PR middle-end/38690
34467         * tree-flow.h (op_code_prio, op_prio): New prototypes.
34468         * tree-pretty-print.c (op_code_prio): New function.
34469         (op_prio): No longer static.  Use op_code_prio.
34470         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
34471         Use op_prio and op_code_prio to determine if () should be
34472         printed around operand(s) or not.
34473
34474         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
34475         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
34476         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
34477         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
34478         pp_character instead of pp_string for single letter printing.
34479
34480 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
34481
34482         * doc/extend.texi: Fix '#pragma GCC option' typo.
34483
34484 2009-01-02  Richard Guenther  <rguenther@suse.de>
34485
34486         * doc/install.texi (--enable-checking): Mention different
34487         default for stage1.
34488         (--enable-stage1-checking): Document.
34489
34490 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
34491
34492         PR middle-end/30142
34493         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
34494         case to be an error.
34495
34496 2009-01-02  Ben Elliston  <bje@au.ibm.com>
34497
34498         * config/fp-bit.h (pack_d): Constify argument.
34499         * config/fp-bit.c (makenan): Constify return type. Remove casts.
34500         (isnan): Constify argument.
34501         (isinf): Likewise.
34502         (iszero): Likewise.
34503         (pack_d): Likewise.
34504         (_fpadd_parts): Constify return type.
34505         (_fpmul_parts): Likewise.
34506         (_fpdiv_parts): Likewise.
34507
34508 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
34509
34510         PR c/36489
34511         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
34512         warn about overwriting initializer with side-effects or
34513         -Woverride-init if !IMPLICIT.
34514         (output_init_element): Likewise.  Pass IMPLICIT down to
34515         add_pending_init.
34516         (process_init_element): Add IMPLICIT argument.  Pass it down
34517         to output_init_element.
34518         (push_init_element, pop_init_level, set_designator): Adjust
34519         process_init_element callers.
34520         (set_nonincremental_init, set_nonincremental_init_from_string):
34521         Adjust add_pending_init callers.
34522         (output_pending_init_elements): Adjust output_init_element callers.
34523         * c-tree.h (process_init_element): Adjust prototype.
34524         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
34525         process_init_element callers.
34526
34527 \f
34528 Copyright (C) 2009 Free Software Foundation, Inc.
34529
34530 Copying and distribution of this file, with or without modification,
34531 are permitted in any medium without royalty provided the copyright
34532 notice and this notice are preserved.