OSDN Git Service

2009-06-03 Shujing Zhao <pearly.zhao@oracle.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
2
3         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
4         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
5         JUMP_TABLE_DATA_P where applicable.
6         * config/sh/sh.c: Ditto.
7         * config/sh/sh.h: Ditto.
8         * config/sh/sh.md: Ditto.
9         * config/sh/symbian.c: Ditto.
10
11 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
12
13         * config/i386/driver-i386.c (describe_cache): Optimize
14         concatenation of strings.  Use snprintf instead of sprintf.
15         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
16         target when not compiling with GCC.
17
18 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
19
20         * config/sh/sh.c: Revert last change.
21         (sh_expand_epilogue): Emit a blockage insn before the frame
22         pointer adjustment unconditionally.
23
24 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
25
26         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
27         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
28         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
29         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
30         to COLLECT_GCC_OPTIONS.
31
32 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
33
34         * collect2.c (target_system_root): New variable.
35         (main): Handle --sysroot=.
36         (ignore_library): Strip the sysroot from the library path.
37
38 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
39
40         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
41         (collect2.o): Depend on collect2-aix.h.
42         (collect2-aix.o): New rule.
43         * collect2-aix.h: New file.
44         * collect2-aix.c: Likewise.
45         * collect2.c: Include collect2-aix.h.  Don't undefine
46         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
47         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
48         Use TARGET_AIX_VERSION instead of _AIX51.
49         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
50         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
51         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
52         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
53         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
54
55 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
56
57         * collect2.c (ignore_library): Avoid premature post-increment
58         and null deference.
59
60 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
61
62         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
63         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
64         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
65         CROSS_DIRECTORY_STRUCTURE too.
66         (LINK_LIBG_SPEC): Likewise.
67         (LIB_SPEC): Add %R to sysroot paths.
68         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
69         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
70         * config/rs6000/aix51.h: As for aix43.h.
71         * config/rs6000/aix52.h: Likewise.
72         * config/rs6000/aix53.h: Likewise.
73         * config/rs6000/aix61.h: Likewise.
74         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
75         to the beginning of sysroot paths.
76
77 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
78
79         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
80         INSN_LISTs that are out of the REG_NOTE range.
81
82 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
83
84         * loop-unroll.c (struct iv_to_split): Add pointer to next.
85         (struct var_to_expand): Likewise.
86         (struct opt_info): Add head and tail for linked lists of the above.
87         (analyze_insn_to_expand_var): Initialize next.
88         (analyze_iv_to_split_insn): Likewise.
89         (analyze_insns_in_loop): Create linked lists.
90         (allocate_basic_variable): Simplify for use without hash table.
91         (insert_var_expansion_initialization): Likewise, make it type-safer.
92         (combine_var_copies_in_loop_exit): Likewise.
93         (apply_opt_in_copies): Walk lists rather than hash tables.
94         (release_var_copies): Simplified and inlined by hand into...
95         (free_opt_info): ... this function.
96
97 2009-06-02  Richard Guenther  <rguenther@suse.de>
98
99         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
100         for field decls.
101
102 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
103
104         * cfgexpand.c (gimple_expand_cfg): Discard the source location
105         only for builtins that are not overridden.
106
107 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
108
109         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
110         label string.
111
112 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
113
114         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
115
116 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
117
118         * combine.c (move_deaths): Compare LUIDs within the same BB only.
119
120 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
121
122         * common.opt (fdump-unnumbered-links): New.
123         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
124         * print-rtl.c (flag_dump_unnumbered_links): New.
125         (print_rtx): Test it.
126
127 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
128
129         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
130         push/pop multiple to 8-byte alignment.
131         
132 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
133
134         * config/i386/i386.c (queued_cfa_restores): New static variable.
135         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
136         functions.
137         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
138         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
139         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
140         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
141         note unconditionally.
142         (ix86_emit_restore_regs_using_mov): Likewise.
143         (ix86_emit_restore_sse_regs_using_mov): Likewise.
144         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
145         it through to ix86_emit_restore_reg_using_pop.
146         (ix86_emit_leave): Add RED_OFFSET argument.  Call
147         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
148         instead of adding REG_CFA_OFFSET note unconditionally.
149         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
150         the above functions.  Call ix86_add_queued_cfa_restore_notes when
151         needed.
152
153         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
154         force output of the label even for dwarf2out_do_cfi_asm.
155         (add_fde_cfi): If -g2 and above and cfi might change CFA,
156         force creation of CFI label and chain DW_CFA_set_loc jumping to it
157         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
158         caller.
159         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
160         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
161         dwarf2out_cfi_label callers.
162         * tree.h (dwarf2out_cfi_label): Adjust prototype.
163         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
164         Adjust dwarf2out_cfi_label callers.
165         * config/vax/vax.c (vax_output_function_prologue): Likewise.
166
167         * config/i386/i386.h (struct machine_cfa_state,
168         struct machine_function): Guard with ifndef USED_FOR_TARGET
169         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
170
171         PR other/40024
172         * emutls.c (__emutls_get_address): Change arr->size to mean number
173         of allocated arr->data entries instead of # of slots + 1.
174
175         PR middle-end/40316
176         * recog.c (peep2_reinit_state): New function.
177         (peephole2_init_state): Use it at the end of a basic block and also
178         when seeing a RTX_FRAME_RELATED_P insn.
179
180 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
181
182         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
183         fixuns_truncrfdi2): New.
184         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
185         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
186         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
187         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
188         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
189         *recip_approx): Remove.
190         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
191         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
192         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
193         move to div.md.
194         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
195         setf_exp_rf): New.
196
197 2009-06-01  Ian Lance Taylor  <iant@google.com>
198
199         * attribs.c (register_attribute): Use CONST_CAST.
200         * collect2.c (main): Use CONST_CAST2.
201         (scan_prog_file): Likewise.
202         * gcc.c (process_command, main): Likewise.
203         * toplev.c (toplev_main): Likewise.
204
205         * c-typeck.c (handle_warn_cast_qual): New static function,
206         partially broken out of build_c_cast.
207         (build_c_cast): Call handle_warn_cast_qual.
208         * doc/invoke.texi (Warning Options): Document new effect of
209         -Wcast-qual.
210
211 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
212
213         * diagnostic.c (diagnostic_build_prefix): Always print columns.
214         (diagnostic_report_current_module): Print columns.
215         * common.opt (flag_show_column): Enable by default.
216
217 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
218
219         * alias.c (find_base_term): Check for NULL term before returning.
220
221 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
222
223         Revert due to PR40320:
224         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
225         * calls.c (emit_library_call_value_1): Don't force_operand for move
226         and push insns.
227
228 2009-06-01  Olivier Hainque  <hainque@adacore.com>
229             Eric Botcazou  <ebotcazou@adacore.com>
230
231         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
232         to be processed as a bitfield for constructor output purposes.
233         * output.h (initializer_constant_valid_for_bitfield_p): Declare
234         new function.
235         * varasm.c (oc_local_state): New type, output_constructor
236         local state to support communication with helpers.
237         (oc_outer_state): New type, output_constructor outer state of
238         relevance in recursive calls.
239         (output_constructor_array_range): New output_constructor helper,
240         extracted code for an array range element.
241         (output_constructor_regular_field): New output_constructor helper,
242         extracted code for an element that is not a bitfield.
243         (output_constructor_bitfield): New output_constructor helper,
244         extracted code for a bitfield element.  Accept an OUTER state
245         argument for recursive processing.  Recurse on record or array
246         CONSTRUCTOR values, possibly past noop conversions.
247         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
248         VALUE is a valid constant-valued expression for use in a static
249         bit-field initializer.
250         (output_constructor): Rework to use helpers.  Accept and honor an
251         OUTER state argument for recursive calls.  Return total size.  Be
252         prepared for nested constructors initializing bitfields.
253         (output_constant): Feed OUTER in calls to output_constructor.
254
255 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
256
257         * calls.c (emit_library_call_value_1): Don't force_operand for move
258         and push insns.
259
260 2009-06-01  Nick Clifton  <nickc@redhat.com>
261
262         * doc/invoke.texi (IA-64 Options): Fix typo.
263
264 2009-06-01  Ira Rosen  <irar@il.ibm.com>
265
266         PR tree-optimization/39129
267         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
268         printed message.
269         (vect_do_peeling_for_loop_bound): Use 
270         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
271         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
272         (vect_loop_versioning): Likewise.
273         (vect_create_cond_for_alias_checks): Fix indentation.
274         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
275         macros.
276         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
277         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
278         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
279         "control flow in loop".
280         (vect_estimate_min_profitable_iters): Use 
281         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
282         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
283         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
284         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
285         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
286         statement belongs to a group of strided accesses with the exact code 
287         check.
288         (vectorizable_load): Likewise.
289         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
290         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
291
292 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
293
294         * config/freebsd-stdint.h: New file.
295         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
296         Add freebsd-stdint.h to tm_file.
297
298 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
299
300         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
301         (thumb2_extendhidi2): Likewise.
302
303 2009-05-31  Ian Lance Taylor  <iant@google.com>
304
305         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
306
307 2009-05-31  Ian Lance Taylor  <iant@google.com>
308
309         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
310         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
311         (ipa-reference.o): Depend upon gt-ipa-reference.h.
312
313 2009-05-31  Jason Merrill  <jason@redhat.com>
314
315         * tree-pretty-print.c (print_call_name): Take the callee, not the
316         call itself.  Make non-static.  Use dump_function_name for functions.
317         (dump_generic_node): Adjust.
318         * diagnostic.h: Declare print_call_name.
319         * gimple-pretty-print.c (dump_gimple_call): Use it.
320
321 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
322
323         * config/sh/sh.md (ashldi3_std): New define_expand.
324         (ashldi3): Use it.
325
326 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
327
328         PR target/40313
329         * config/sh/sh.c: Include debug.h.
330         (sh_expand_epilogue): Emit a blockage insn before the frame
331         pointer adjustment also when dwarf2out_do_frame returns true.
332
333 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
334
335         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
336         (thumb2_extendqidi2): New pattern.
337
338 2009-05-31  Ira Rosen  <irar@il.ibm.com>
339
340         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
341         mark phis for renaming.
342         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
343         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
344         Call mark_sym_for_renaming.
345         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
346         * tree-vect-loop.c (vect_transform_loop): Remove
347         vect_memsyms_to_rename initialization and a call to
348         mark_set_for_renaming.
349
350 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
351
352         PR middle-end/40304
353         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
354         frame related even if !set_cfa && style < 0.
355
356 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
357
358         * config/i386/mingw-tls.c: New file.
359         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
360         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
361         defining _WIN32 but not __CYGWIN__.
362
363 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
364
365         * configure.ac: Add MPC support.
366         
367         * config.in, configure: Regenerate.     
368
369 2009-05-29  Richard Henderson  <rth@redhat.com>
370
371         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
372         NOTE_INSN_BASIC_BLOCK.
373         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
374         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
375         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
376         to be deleted.
377         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
378         add in_use field.
379         (add_cfi): Disable check redefining cfa away from drap.
380         (lookup_cfa_1): Add remember argument; handle remember/restore.
381         (lookup_cfa): Pass remember argument.
382         (cfa_remember): New.
383         (compute_barrier_args_size_1): Remove sibcall check.
384         (dwarf2out_frame_debug_def_cfa): New.
385         (dwarf2out_frame_debug_adjust_cfa): New.
386         (dwarf2out_frame_debug_cfa_offset): New.
387         (dwarf2out_frame_debug_cfa_register): New.
388         (dwarf2out_frame_debug_cfa_restore): New.
389         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
390         (dwarf2out_begin_epilogue): New.
391         (dwarf2out_frame_debug_restore_state): New.
392         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
393         DW_CFA_restore_state.
394         (output_cfi_directive): Likewise.
395         (convert_cfa_to_fb_loc_list): Likewise.
396         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
397         * dwarf2out.h: Update.
398         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
399         (copy_insn_1): Early out for null.
400         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
401         and dwarf2out_frame_debug_restore_state.
402         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
403         (prologue_insn_hash, epilogue_insn_hash): New.
404         (free_after_compilation): Adjust freeing accordingly.
405         (record_insns): Create hash table if needed; push insns into
406         hash instead of array.
407         (maybe_copy_epilogue_insn): New.
408         (contains): Search hash table instead of array.
409         (sibcall_epilogue_contains): Remove.
410         (thread_prologue_and_epilogue_insns): Split eh_return insns
411         and mark them as epilogues.
412         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
413         scanning in terms of basic blocks.
414         * insn-notes.def (CFA_RESTORE_STATE): New.
415         * jump.c (returnjump_p_1): Accept EH_RETURN.
416         (eh_returnjump_p_1, eh_returnjump_p): New.
417         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
418         CFA_REGISTER, CFA_RESTORE): New.
419         * rtl.def (EH_RETURN): New.
420         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
421
422         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
423         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
424
425         * config/i386/i386.c (gen_push): Update cfa state.
426         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
427         add a CFA_ADJUST_CFA note.
428         (ix86_dwarf_handle_frame_unspec): Remove.
429         (ix86_expand_prologue): Update cfa state.
430         (ix86_emit_restore_reg_using_pop): New.
431         (ix86_emit_restore_regs_using_pop): New.
432         (ix86_emit_leave): New.
433         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
434         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
435         * config/i386/i386.h (struct machine_cfa_state): New.
436         (ix86_cfa_state): New.
437         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
438         (eh_return_internal): Merge from eh_return_<mode>,
439         use eh_return rtx, split w/ epilogue.
440
441 2009-05-29  Ian Lance Taylor  <iant@google.com>
442
443         * builtins.c (validate_gimple_arglist): Don't use va_arg with
444         enum type.
445         * calls.c (emit_library_call_value_1): Likewise.
446
447         * c-typeck.c (c_build_va_arg): New function.
448         * c-tree.h (c_build_va_arg): Declare.
449         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
450         instead of build_va_arg.
451
452 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
453
454         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
455         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
456         (ptr_difference_cost): Use affine combinations to compute it.
457         (difference_cost): Likewise.
458         (get_computation_cost_at): Compute more accurate cost for addresses
459         if the ratio is a multiplier allowed in addresses.
460         For non-addresses, consider that an additional offset or symbol is
461         added only once.
462
463 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
464
465         * config/i386/i386.c (ix86_decompose_address): Avoid useless
466         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
467
468         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
469         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
470         (prefix_rex): For UNIT_MMX don't imply the prefix by default
471         if MODE_DI.
472         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
473         to 1 for TYPE_SSE{IADD1,CVT1}.
474         (prefix_vex_imm8): Removed.
475         (length_vex): Only pass 1 as second argument to
476         ix86_attr_length_vex_default if prefix_extra is 0.
477         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
478         (length): For prefix vex computation use length_immediate
479         attribute instead of prefix_vex_imm8.
480         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
481         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
482         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
483         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
484         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
485         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
486         a space in between the operands.
487         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
488         if one operand is 0xff and the other one si, di, bp or sp.
489         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
490         other one si, di, bp or sp.
491         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
492         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
493         type and mode attributes.
494         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
495         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
496         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
497         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
498         prefix_data16 attribute iff MODE_DF.
499         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
500         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
501         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
502         constm128_operand in length_immediate computation.
503         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
504         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
505         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
506         length_immediate attribute to 1.
507         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
508         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
509         for certain alternatives.
510         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
511         prefix_data16 attribute if MODE_V1DF.
512         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
513         length_immediate to 1.
514         (set_got_rex64, set_rip_rex64): Remove length attribute, set
515         length_address to 4, set mode attribute to MODE_DI.
516         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
517         (fxam<mode>2_i387): Set length attribute to 4.
518         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
519         *prefetch_3dnow_rex): Override length_address attribute.
520         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
521         attributes.
522         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
523         (constm128_operand): Removed.
524         * config/i386/i386.c (memory_address_length): For
525         disp && !index && !base in 64-bit mode account for SIB byte if
526         print_operand_address can't optimize disp32 into disp32(%rip)
527         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
528         for fs: or gs: segment.
529         (ix86_attr_length_immediate_default): When checking if shortform
530         is possible, truncate immediate to the length of the non-shortened
531         immediate.
532         (ix86_attr_length_address_default): Ignore MEM_P operands
533         with X constraint.
534         (ix86_attr_length_vex_default): Only check for DImode on
535         GENERAL_REG_P operands.
536         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
537         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
538         (sse_cvttps2pi): Clear prefix_rep attribute.
539         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
540         attribute.
541         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
542         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
543         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
544         iff operand 2 is const_int_operand.
545         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
546         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
547         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
548         instead of vex.
549         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
550         prefix_data16.
551         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
552         prefix_data16 attribute for movlpd and movhpd instructions.
553         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
554         length_immediate for shufpd instruction.
555         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
556         (avx_cmpp<avxmodesuffixf2c><mode>3,
557         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
558         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
559         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
560         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
561         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
562         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
563         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
564         prefix_data16 attribute for the first alternative to 1.
565         (*avx_loadlps): Override length_immediate for the first alternative.
566         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
567         attributes for second alternative.
568         (*vec_concatv2sf_sse4_1): Override length_immediate and
569         prefix_data16 attributes for second alternative.
570         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
571         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
572         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
573         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
574         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
575         prefix_data16 and length_immediate to 1.
576         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
577         to 1.
578         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
579         prefix_extra attribute for variants that don't have 0f prefix alone.
580         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
581         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
582         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
583         *sse4_1_pextrd): Set length_immediate to 1.
584         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
585         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
586         to 1.
587         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
588         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
589         length_immediate to 1 for second alternative.
590         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
591         prefix_extra and length_immediate attributes for the first
592         alternative.
593         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
594         first alternative.
595         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
596         to 1 for the first and third alternative.
597         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
598         alternative.
599         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
600         attribute.
601         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
602         attribute to 0.
603         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
604         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
605         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
606         *avx_psign<mode>3): Set prefix_extra attribute to 1.
607         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
608         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
609         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
610         ssse3_psign<mode>3): Override prefix_rex attribute.
611         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
612         (ssse3_palignrti): Override length_immediate to 1.
613         (ssse3_palignrdi): Override length_immediate to 1, override
614         prefix_rex attribute.
615         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
616         (sse4a_extrqi): Override length_immediate to 2.
617         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
618         (sse4a_insertq): Override prefix_data16 to 0.
619         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
620         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
621         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
622         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
623         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
624         and length_immediate to 1.
625         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
626         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
627         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
628         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
629         and length_immediate to 1.
630         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
631         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
632         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
633         avx_ptest256): Override prefix_extra to 1.
634         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
635         Override prefix_data16 and length_immediate to 1.
636         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
637         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
638         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
639         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
640         prefix_data16 to 0 and prefix_extra to 2.
641         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
642         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
643         attribute.
644         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
645         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
646         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
647         and prefix_extra to 2.
648         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
649         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
650         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
651         avx_vpermilvar<mode>3,
652         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
653         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
654         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
655         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
656         Override prefix_extra to 1.
657         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
658         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
659         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
660         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
661         prefix_extra and length_immediate to 1.
662         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
663         modrm to 0.
664         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
665         to 1 for the first alternative.
666         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
667         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
668         cases.
669         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
670         *movv2sf_internal_avx, *movv2sf_internal): Override
671         prefix_rep attribute for certain alternatives.
672         (*mov<mode>_internal): Override prefix_rep or prefix_data16
673         attributes for certain alternatives.
674         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
675         attributes for certain alternatives.
676         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
677         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
678         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
679         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
680         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
681         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
682         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
683         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
684         length_immediate to 1 if operand 2 is const_int_operand.
685         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
686         *vec_extractv2si_1): Set length_immediate attribute to 1.
687         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
688         using old 3DNOW insn rather than SSE/3DNOW_A.
689         (mmx_emms, mmx_femms): Clear modrm attribute.
690
691 2009-05-29  Martin Jambor  <mjambor@suse.cz>
692
693         * tree-sra.c:  New implementation of SRA.
694
695         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
696         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
697         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
698         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
699         (SRA_MAX_STRUCTURE_COUNT): Removed.
700         (SRA_FIELD_STRUCTURE_RATIO): Removed.
701         * doc/invoke.texi (sra-max-structure-size): Removed.
702         (sra-field-structure-ratio): Removed.
703
704 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
705
706         PR middle-end/40291
707         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
708         before expansion.
709
710 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
711
712         PR rtl-optimization/40101
713         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
714         seqno.  Adjust comment.
715         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
716         inserting bookkeeping before a jump, the jump is not scheduled.
717         When no positive seqno found, provide a value.  Add comment.
718
719 2009-05-29  Richard Guenther  <rguenther@suse.de>
720
721         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
722         short-cutting on the first component.
723
724 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
725
726         PR middle-end/39958
727         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
728         for trees other than decls/types.
729
730 2009-05-29  Richard Guenther  <rguenther@suse.de>
731
732         * tree-ssa-operands.c (get_expr_operands): Do not handle
733         INDIRECT_REFs in the handled-component case.  Remove
734         unused get_ref_base_and_extent case.
735         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
736         tree_low_cst and host_integerp where possible.
737         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
738         codes for equivalence.
739         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
740
741 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
742
743         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
744         to tmake_file for i[34567]86-*-cygwin*. 
745
746 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
747
748         PR target/40017
749         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
750         (altivec_categorize_keyword, init_vector_keywords,
751         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
752         similar to bool.
753
754 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
755
756         * tree.c (handle_dll_attribute): Check if node is
757         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
758
759 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
760
761         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
762         component.
763         (thumb2_zero_extendqidi2): Likewise.
764
765 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
766
767         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
768         instead of gen_movrt.
769         * config/sh/sh.md (movrt): Remove.
770
771 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
772
773         * doc/invoke.texi (IA-64 Options):
774         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
775         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
776         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
777         -msched-prefer-non-control-spec-insns,
778         -msched-stop-bits-after-every-cycle,
779         -msched-count-spec-in-critical-path,
780         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
781         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
782         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
783         and -msched-spec-verbose.
784
785 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
786
787         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
788         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
789         error if used.
790         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
791
792 2009-05-28  Richard Guenther  <rguenther@suse.de>
793
794         * tree-ssa-alias.c (ao_ref_init): New function.
795         (ao_ref_base): Likewise.
796         (ao_ref_base_alias_set): Likewise.
797         (ao_ref_alias_set): Likewise.
798         (refs_may_alias_p_1): Change signature.
799         (refs_may_alias_p): Adjust.
800         (refs_anti_dependent_p): Likewise.
801         (refs_output_dependent_p): Likewise.
802         (call_may_clobber_ref_p_1): Change signature.
803         (call_may_clobber_ref_p): Adjust.
804         (stmt_may_clobber_ref_p_1): New function split out from ...
805         (stmt_may_clobber_ref_p): ... here.
806         (maybe_skip_until): Adjust signature.
807         (get_continuation_for_phi): Likewise.
808         (walk_non_aliased_vuses): Likewise.
809         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
810         (ao_ref_init): Declare.
811         (ao_ref_base): Likewise.
812         (ao_ref_alias_set): Likewise.
813         (stmt_may_clobber_ref_p_1): Likewise.
814         (walk_non_aliased_vuses): Adjust.
815         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
816         (get_ref_from_reference_ops): remove.
817         (vn_reference_lookup_2): Adjust signature.
818         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
819         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
820         (vn_reference_lookup): Adjust.
821         (vn_reference_insert): Likewise.
822         (vn_reference_insert_pieces): Adjust signature.
823         (visit_reference_op_call): Adjust.
824         * tree-ssa-pre.c (get_expr_type): Simplify.
825         (phi_translate_1): Adjust.
826         (compute_avail): Likewise.
827         (translate_vuse_through_block): Do not re-build trees.
828         (value_dies_in_block_x): Likewise.
829         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
830         fields.
831         (vn_reference_lookup_pieces): Adjust declaration.
832         (vn_reference_insert_pieces): Likewise.
833
834 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
835
836         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
837         with checking disabled.
838
839 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
840
841         PR target/37216
842
843         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
844         macro definition for support of three-operand format aligned
845         .comm directive in assembler on cygwin/pe/mingw target OS.
846         * configure:  Regenerate.
847         * config.h:  Regenerate.
848
849         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
850         aligned form of .comm directive if -mpe-aligned-commons is in effect.
851         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
852
853         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
854         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
855
856 2009-05-28  Ira Rosen  <irar@il.ibm.com>
857
858         PR tree-optimization/40254
859         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
860         in analysis of basic blocks.
861
862 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
863
864         PR middle-end/33699
865         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
866         * target-def.h (TARGET_CONST_ANCHOR): New macro.
867         (TARGET_INITIALIZER): Use it.
868         * cse.c (CHEAPER): Move it up to the other macros.
869         (insert): Rename this ...
870         (insert_with_costs): ... to this.  Add cost parameters.  Update
871         function comment.
872         (insert): New function.  Call insert_with_costs.
873         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
874         find_reg_offset_for_const, try_const_anchors): New functions.
875         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
876         when using a const-anchor.  Call insert_const_anchors.
877         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
878         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
879
880 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
881
882         * tree-inline.c (remap_decls): Enable nonlocalized variables
883         when not optimizing.
884
885 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
886
887         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
888         Simplify other tests involving optimize.
889
890 2009-05-27  Tom Tromey  <tromey@redhat.com>
891
892         * unwind-dw2.c (_Unwind_DebugHook): New function.
893         (uw_install_context): Call _Unwind_DebugHook.
894
895 2009-05-27  Tom Tromey  <tromey@redhat.com>
896
897         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
898
899 2009-05-27  Ian Lance Taylor  <iant@google.com>
900
901         * Makefile.in (LINKER, LINKER_FLAGS): Define.
902         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
903         (ALL_LINKERFLAGS): Define.
904         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
905         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
906         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
907         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
908         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
909         $(LINKER_FOR_BUILD).
910         (build/gcov-iov$(build_exeext)): Likewise.
911
912 2009-05-27  Julian Brown  <julian@codesourcery.com>
913
914         * gcse.c (target.h): Include.
915         (can_assign_to_reg_without_clobbers_p): Check that the target allows
916         copy of argument to a pseudo register.
917
918 2009-05-27  Diego Novillo  <dnovillo@google.com>
919
920         * tree-ssa-live.c (dump_scope_block): Document arguments.
921         (dump_scope_blocks): Document.
922         (debug_scope_blocks): New.
923         * tree-flow.h (debug_scope_blocks): Declare.
924
925 2009-05-21  Denis Chertykov  <denisc@overta.ru>
926
927         * doc/contrib.texi (Contributors): Add myself to the list.
928
929 2009-05-27  Olivier Hainque  <hainque@adacore.com>
930
931         * expr.c (target_align): New function.  Alignment the TARGET of an
932         assignment may be assume to have.
933         (highest_pow2_factor_for_target): Use it instead of relying on
934         immediate tree attributes of TARGET, not necessarily honored when
935         intermediate bitfields are involved.
936         
937 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
938
939         PR target/40266
940         * config/i386/driver-i386.c (host_detect_local_cpu): Support
941         AVX, SSE4, AES, PCLMUL and POPCNT.
942
943 2009-05-27  Diego Novillo  <dnovillo@google.com>
944
945         * tree-pretty-print.c (dump_location): New.
946         (dump_generic_node): Call it.
947         Factor code to handle BLOCK nodes ...
948         (dump_block_node): ... here.
949
950 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
951
952         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
953         with it.
954         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
955         included.
956         * gcc-plugin.h: Include config.h and system.h.
957         (IN_GCC): Define if not defined.
958
959 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
960
961         PR middle-end/40249
962         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
963         with -fno-inline.
964
965 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
966
967         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
968         applicable.
969         * config/m32r/m32r.h: Ditto.
970         * config/m32r/m32r.md: Ditto.
971         * config/m32r/predicates.md: Ditto.
972
973 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
974
975         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
976
977 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
978
979         * doc/plugins.texi
980         (Loading plugins): typo.
981         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
982         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
983         (Interacting with the GCC Garbage Collector): Added new section.
984         (Giving information about a plugin): Added new section for
985         PLUGIN_INFO.
986         * ggc.h (ggc_register_root_tab): Added declaration.
987         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
988         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
989         (register_callback): Improved comment in declaration.
990         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
991         (extra_root_vec) Added static variable for dynamic roots registration.
992         (ggc_register_root_tab) Added new routine.
993         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
994         PLUGIN_GGC_MARKING event.
995         * ggc-zone.c: Include plugin.h.
996         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
997         * ggc-page.c: Include plugin.h.
998         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
999         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1000         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1001         (register_callback): check lack of callbacks for
1002         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1003         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1004         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1005         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1006         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1007         dependency on plugin.h.
1008         (plugin.o): Added dependency on ggc.h...
1009
1010 2009-05-26  Richard Guenther  <rguenther@suse.de>
1011
1012         PR middle-end/40248
1013         Revert
1014         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1015         with mismatched comparison modes.
1016
1017         * expr.c (expand_expr_real_1): Expand the operand of a
1018         VIEW_CONVERT_EXPR in its natural mode.
1019
1020 2009-05-26  Ian Lance Taylor  <iant@google.com>
1021
1022         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1023         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1024         (ALL_COMPILERFLAGS): Define.
1025         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1026         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1027         (collect2$(exeext), collect2.o): Likewise.
1028         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1029         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1030         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1031         (libbackend.o, intl.o, cppdefault.o): Likewise.
1032         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1033         (build/%.o): Use $(COMPILER_FOR_BUILD).
1034         (build/gen%$(build_exeext)): Likewise.
1035         (build/gcov-iov$(build_exeext)): LIkewise.
1036         * config/t-darwin (darwin.o): Use $(COMPILER).
1037         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1038         * config/t-sol2 (sol2-c.o): Likewise.
1039         (sol2.o): Likewise.
1040         * config/t-vxworks (vxworks.o): Likewise.
1041         * config/x-darwin (host-darwin.o): Likewise.
1042         * config/x-hpux (host-hpux.o): Likewise.
1043         * config/x-linux (host-linux.o): Likewise.
1044         * config/x-solaris (host-solaris.o): Likewise.
1045         * config/alpha/x-alpha (driver-alpha.o): Likewise.
1046         * config/arm/t-arm (arm-c.o): Likewise.
1047         * config/arm/t-pe (pe.o): Likewise.
1048         * config/arm/t-wince-pe (pe.o): Likewise.
1049         * config/i386/t-cygming (winnt.o): Likewise.
1050         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1051         * config/i386/t-cygwin (cygwin1.o): Likewise.
1052         (cygwin2.o): Likewise.
1053         * config/i386/t-i386 (i386-c.o): Likewise.
1054         * config/i386/t-interix (winnt.o): Likewise.
1055         * config/i386/t-netware (netware.o): Likewise.
1056         * config/i386/t-nwld (nwld.o): Likewise.
1057         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1058         * config/i386/x-i386 (driver-i386.o): Likewise.
1059         * config/i386/x-cygwin (host-cygwin.o): Likewise.
1060         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1061         * config/ia64/t-ia64 (ia64-c.o): Likewise.
1062         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1063         * config/mips/x-native (driver-native.o): Likewise.
1064         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1065         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1066         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1067         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1068         * config/score/t-score-elf (score7.o): Likewise.
1069         (score3.o): Likewise.
1070         * config/sh/t-sh (sh-c.o): Likewise.
1071         * config/sh/t-symbian (sh-c.o): Likewise.
1072         (symbian.o): Likewise.
1073         * config/spu/t-spu-elf (spu-c.o): Likewise.
1074         * config/v850/t-v850 (v850-c.o): Likewise.
1075         * config/v850/t-v850e (v850-c.o): Likewise.
1076
1077 2009-05-26  Richard Guenther  <rguenther@suse.de>
1078
1079         PR tree-optimization/40122
1080         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1081         VECTOR_CSTs if possible.
1082         (fold_gimple_assign): Likewise.
1083
1084 2009-05-26  Richard Guenther  <rguenther@suse.de>
1085
1086         PR middle-end/40252
1087         * fold-const.c (fold_binary): Use the correct types for building
1088         rotates.
1089
1090 2009-05-26  Richard Guenther  <rguenther@suse.de>
1091
1092         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1093         redundant calls to merge_alias_info.
1094         (bump_vector_ptr): Likewise.
1095         * tree-ssa-copy.c (merge_alias_info): Remove.
1096         (replace_exp_1): Remove call to merge_alias_info.
1097         (propagate_tree_value): Likewise.
1098         (fini_copy_prop): Propagate points-to info.
1099         * tree-flow.h (merge_alias_info): Remove.
1100
1101 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1102
1103         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1104
1105 2009-05-25  Jan Hubicka  <jh@suse.cz>
1106
1107         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1108         * cgraph.h (struct inline_summary): New filed self_wize,
1109         size_inlining_benefit, self_time and time_inlining_benefit.
1110         (struct cgraph_global_info): Replace insns by time ans size fields.
1111         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1112         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1113         (ipcp_update_callgraph): Do not touch function bodies.
1114         * ipa-inline.c: Include except.h
1115         (MAX_TIME): New constant.
1116         (overall_insns): Remove.
1117         (leaf_node_p): New.
1118         (overall_size, max_benefit): New static variables.
1119         (cgraph_estimate_time_after_inlining): New function.
1120         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1121         (cgraph_clone_inlined_nodes): Update size.
1122         (cgraph_mark_inline_edge): Update size.
1123         (cgraph_estimate_growth): Use size info.
1124         (cgraph_check_inline_limits): Check size.
1125         (cgraph_default_inline_p): Likewise.
1126         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1127         (cgraph_decide_recursive_inlining): Check size.
1128         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1129         and times.
1130         (cgraph_decide_inlining): Likewise.
1131         (cgraph_decide_inlining_incrementally): Likewise; honor
1132         PARAM_EARLY_INLINING_INSNS.
1133         (likely_eliminated_by_inlining_p): New predicate.
1134         (estimate_function_body_sizes): New function.
1135         (compute_inline_parameters): Use it.
1136         * except.c (must_not_throw_labels): New function.
1137         * except.h (must_not_throw_labels): Declare.
1138         * tree-inline.c (init_inline_once): Kill inlining_weigths
1139         * tree-ssa-structalias.c: Avoid uninitialized warning.
1140         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1141         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1142         (PARAM_INLINE_CALL_COST): Remove.
1143         (PARAM_EARLY_INLINING_INSNS): New.
1144
1145 2009-05-25  Richard Guenther  <rguenther@suse.de>
1146
1147         PR tree-optimization/36327
1148         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1149         callback for reference translation or lookup at the point of may-defs.
1150         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1151         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1152         for union COMPONENT_REFs.
1153         (vn_reference_lookup_3): New callback.  Lookup from memset
1154         and CONSTRUCTOR assignment, translate through struct copies.
1155         (vn_reference_lookup_pieces): Make sure to not free the
1156         passed operands array.  Adjust walk_non_aliased_vuses call.
1157         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1158         make sure we do not leak memory.
1159
1160 2009-05-25  Richard Guenther  <rguenther@suse.de>
1161
1162         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1163         * tree-inline.c (expand_call_inline): Reset the escaped and
1164         callused solutions.
1165         * tree-ssa-structalias.c (pass_build_ealias): New.
1166         * tree-pass.h (pass_build_ealias): Declare.
1167         * passes.c (init_optimization_passes): Add PTA during 
1168         early optimizations.
1169         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1170         and CALLUSED solutions.
1171         (dump_points_to_solution): New function, split out from ...
1172         (dump_points_to_info_for): ... here.
1173         * tree-parloops.c (parallelize_loops): Reset the escaped and
1174         callused solutions.
1175
1176 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1177
1178         PR bootstrap/40027
1179         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1180         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1181
1182 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1183
1184         PR tree-optimization/40238
1185         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1186         statements after basic block's labels.
1187         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1188         to free the allocated memory.
1189
1190 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1191
1192         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1193         return address with a USE.
1194
1195 2009-05-24  Richard Guenther  <rguenther@suse.de>
1196
1197         PR middle-end/40233
1198         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1199         array type from the main variant of the inner type.
1200
1201 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1202
1203         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1204         definition to bool (from int) to un-break build.
1205         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1206
1207 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1208
1209         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1210         discard_stmt_changes): Delete.
1211         * tree-ssa-operands.c (scb_stack): Delete.
1212         (init_ssa_operands): Do not initialize it.
1213         (fini_ssa_operands): Do not free it.
1214         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1215
1216         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1217         update_stmt, remove the others.  Fix comments.
1218         * tree-dfa.c (optimize_stack_restore): Likewise.
1219         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1220         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1221         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1222         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1223         Likewise.
1224         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1225         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1226         (dom_opt_finalize_block): Likewise, adjusting access to
1227         stmts_to_rescan.
1228         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1229         (stmts_to_rescan): Change item type to gimple.
1230         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1231
1232 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1233
1234         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1235         * tree-pass.h (pass_slp_vectorize): New pass.
1236         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1237         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1238         * tree-vectorizer.c (timevar.h): Include.
1239         (user_vect_verbosity_level): Declare.
1240         (vect_location): Fix comment.
1241         (vect_set_verbosity_level): Update user_vect_verbosity_level
1242         instead of vect_verbosity_level.
1243         (vect_set_dump_settings): Add an argument. Ignore user defined
1244         verbosity if dump flags require higher level of verbosity. Print to
1245         stderr only for loop vectorization.
1246         (vectorize_loops): Update call to vect_set_dump_settings.
1247         (execute_vect_slp): New function.
1248         (gate_vect_slp): Likewise.
1249         (struct gimple_opt_pass pass_slp_vectorize): New.
1250         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1251         access its members.
1252         (vec_info_for_bb): New function.
1253         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1254         (VECTORIZATION_ENABLED): New macro.
1255         (SLP_ENABLED, SLP_DISABLED): Likewise.
1256         (vect_is_simple_use): Add bb_vec_info argument.
1257         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1258         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1259         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1260         vect_schedule_slp, vect_analyze_slp): Likewise.
1261         (vect_analyze_stmt): Add slp_tree argument.
1262         (find_bb_location): Declare.
1263         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1264         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1265         (vect_analyze_loop_operations, vect_analyze_loop,
1266         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1267         vect_finalize_reduction, vectorizable_reduction,
1268         vectorizable_live_operation, vect_transform_loop): Likewise.
1269         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1270         skip evolution analysis if analyzing a basic block.
1271         (dr_analyze_indices): Likewise.
1272         (initialize_data_dependence_relation): Skip the test whether the
1273         object is invariant for basic blocks.
1274         (compute_all_dependences): Skip dependence analysis for data
1275         references in basic blocks.
1276         (find_data_references_in_stmt): Don't fail in case of invariant
1277         access in basic block.
1278         (find_data_references_in_bb): New function.
1279         (find_data_references_in_loop): Move code to
1280         find_data_references_in_bb and add a call to it.
1281         (compute_data_dependences_for_bb): New function.
1282         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1283         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1284         that STEP is 0.
1285         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1286         unknown dependence in basic block and fail in case of dependence in
1287         basic block.
1288         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1289         dependence instances from either loop or basic block vectorization
1290         info.
1291         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1292         before calling nested_in_vect_loop_p.
1293         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1294         dependence instances from either loop or basic block vectorization
1295         info.
1296         (vect_verify_datarefs_alignment): Likewise.
1297         (vect_enhance_data_refs_alignment): Adjust function calls.
1298         (vect_analyze_data_refs_alignment): Likewise.
1299         (vect_analyze_group_access): Fix printing. Skip different checks if
1300         DR_STEP is 0. Keep strided stores either in loop or basic block
1301         vectorization data structure. Fix indentation.
1302         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1303         basic blocks.
1304         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1305         dependence instances from either loop or basic block vectorization
1306         info.
1307         (vect_analyze_data_refs): Update comment. Call
1308         compute_data_dependences_for_bb to analyze basic blocks.
1309         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1310         case of loop vectorization. In case of basic block vectorization use
1311         data-ref itself as a base.
1312         (vect_create_data_ref_ptr): In case of basic block vectorization:
1313         don't advance the pointer, add new statements before the current
1314         statement.  Adjust function calls.
1315         (vect_supportable_dr_alignment): Support only aligned accesses in
1316         basic block vectorization.
1317         * common.opt (ftree-slp-vectorize): New flag.
1318         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1319         (vect_pattern_recog_1): Likewise.
1320         * tree-vect-stmts.c (process_use): Likewise.
1321         (vect_init_vector): Add new statements in the beginning of the basic
1322         block in case of basic block SLP.
1323         (vect_get_vec_def_for_operand): Adjust function calls.
1324         (vect_finish_stmt_generation): Likewise.
1325         (vectorizable_call): Add assert that it is loop vectorization, adjust
1326         function calls.
1327         (vectorizable_conversion, vectorizable_assignment): Likewise.
1328         (vectorizable_operation): In case of basic block SLP, take
1329         vectorization factor from statement's type and skip the relevance
1330         check. Adjust function calls.
1331         (vectorizable_type_demotion): Add assert that it is loop
1332         vectorization, adjust function calls.
1333         (vectorizable_type_promotion): Likewise.
1334         (vectorizable_store): Check for outer loop only in case of loop
1335         vectorization. Adjust function calls. For basic blocks, skip the
1336         relevance check and don't advance pointers.
1337         (vectorizable_load): Likewise.
1338         (vectorizable_condition): Add assert that it is loop vectorization,
1339         adjust function calls.
1340         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1341         that it is not reduction, get vector type, call only supported
1342         functions, skip loop specific parts.
1343         (vect_transform_stmt): Check for outer loop only in case of loop
1344         vectorization.
1345         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1346         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1347         for external definition.
1348         * passes.c (pass_slp_vectorize): New pass.
1349         * tree-vect-slp.c (find_bb_location): New function.
1350         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1351         check for patterns only in loops.
1352         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1353         case of multiple types in basic block SLP.
1354         (vect_mark_slp_stmts_relevant): New function.
1355         (vect_supported_load_permutation_p): Fix comment.
1356         (vect_analyze_slp_instance): Add argument. In case of basic block
1357         SLP, take vectorization factor from statement's type, check that
1358         unrolling factor is 1. Adjust function call. Save SLP instance in
1359         either loop or basic block vectorization structure. Return FALSE,
1360         if SLP failed.
1361         (vect_analyze_slp): Add argument. Get strided stores groups from
1362         either loop or basic block vectorization structure. Return FALSE
1363         if basic block SLP failed.
1364         (new_bb_vec_info): New function.
1365         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1366         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1367         (vect_schedule_slp): Add argument. Get SLP instances from either
1368         loop or basic block vectorization structure. Set vectorization factor
1369         to be 1 for basic block SLP.
1370         (vect_slp_transform_bb): New function.
1371         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1372
1373 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1374
1375         * final.c (shorten_branches): Do not align labels for jump tables.
1376         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1377
1378 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1379
1380         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1381         Remove outdated reference to flow.c and fix nits.
1382         * doc/gccint.texi: Tweak RTL description.
1383         * doc/rtl.texi: Likewise.
1384
1385 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1386
1387         * config/avr/avr.c: Change my email address.
1388         * config/avr/avr.h: Likewise.
1389         * config/avr/avr.md: Likewise.
1390         * config/avr/avr-protos.h: Likewise.
1391         * config/avr/libgcc.S: Likewise.
1392
1393 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1394
1395         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1396         (spu_split_load, spu_split_store): Change return type to int.
1397         (spu_split_convert): Declare.
1398         * config/spu/predicates.md (spu_mem_operand): Remove.
1399         (spu_mov_operand): Update.
1400         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1401         * config/spu/spu.c (regno_aligned_for_load): Remove.
1402         (reg_aligned_for_addr, spu_expand_load): Define.
1403         (spu_expand_extv): Reimplement and handle MEM.
1404         (spu_expand_insv): Handle MEM.
1405         (spu_sched_reorder): Handle insn's with length 0.
1406         (spu_legitimate_address_p): Reimplement.
1407         (store_with_one_insn_p): Return TRUE for any mode with size
1408         larger than 16 bytes.
1409         (address_needs_split): Define.
1410         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1411         operands.
1412         (spu_convert_move): Define.
1413         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1414         (spu_split_store): Change all MEM's to TImode.
1415         (spu_init_expanders): Preallocate registers that correspond to
1416         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1417         mark_reg_pointer.
1418         (spu_split_convert): Define.
1419         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1420         (_move<mode>, _movdi, _movti): Update predicate and condition.
1421         (load, store): Change to define_split.
1422         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1423         extend<mode>ti2.
1424         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1425         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1426         define_insn_and_split of lshr<mode>3.
1427         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1428         (<v>ashr<mode>3_imm): Define.
1429         (extv, extzv, insv): Allow MEM operands.
1430         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1431         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1432         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1433         (_spu_convert2): Change to define_insn_and_split and remove the
1434         corresponding define_peephole2.
1435         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1436         Change predicates to memory_operand.
1437
1438 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1439
1440         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1441
1442 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1443
1444         PR tree-optimization/40219
1445         * tree.c (iterative_hash_expr): Make sure the builtin function is
1446         a normal builtin function and not a front end or back end builtin
1447         before indexing into the built_in_decls array.
1448
1449 2009-05-22  Richard Guenther  <rguenther@suse.de>
1450
1451         PR middle-end/38964
1452         * alias.c (write_dependence_p): Do not use TBAA for answering
1453         anti-dependence or output-dependence.
1454         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1455         (emit_pointer_definition): Remove.
1456         (emit_alias_warning): Likewise.
1457         (find_what_var_points_to): Remove TBAA pruning code.
1458         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1459         violations.
1460         (compute_points_to_sets): Remove code computing the set of
1461         dereferenced pointers.
1462         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1463         oracle for querying anti and output dependencies.
1464         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1465         if TBAA may be applied.
1466         (refs_anti_dependent_p): New function.
1467         (refs_output_dependent_p): Likewise.
1468         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1469         (refs_output_dependent_p): Likewise.
1470         * doc/tree-ssa.texi (Memory model): New section.
1471         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1472         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1473         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1474         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1475         * expr.c (expand_expr_real_1): Likewise.
1476         * gimple-low.c (lower_stmt): Likewise.
1477         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1478         (dump_gimple_cdt): Remove.
1479         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1480         (gimple_size): Likewise.
1481         (walk_gimple_op): Likewise.
1482         (is_gimple_stmt): Likewise.
1483         (walk_stmt_load_store_addr_ops): Likewise.
1484         (gimple_build_cdt): Remove.
1485         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1486         * gimple.h (gimple_cdt_new_type): Remove.
1487         (gimple_cdt_new_type_ptr): Likewise.
1488         (gimple_cdt_set_new_type): Likewise.
1489         (gimple_cdt_location): Likewise.
1490         (gimple_cdt_location_ptr): Likewise.
1491         (gimple_cdt_set_location): Likewise.
1492         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1493         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1494         GIMPLE_CHANGE_DYNAMIC_TYPE.
1495         (verify_types_in_gimple_stmt): Likewise.
1496         * tree-inline.c (estimate_num_insns): Likewise.
1497         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1498         (copy_decl_to_var): Likewise.
1499         (copy_result_decl_to_var): Likewise.
1500         * tree-pretty-print.c (dump_generic_node): Do not handle
1501         CHANGE_DYNAMIC_TYPE_EXPR.
1502         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1503         * tree-ssa-operands.c (get_expr_operands): Likewise.
1504         * tree-ssa-structalias.c (struct variable_info): Remove
1505         no_tbaa_pruning member.
1506         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1507         (unify_nodes): Do not copy it.
1508         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1509         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1510         (set_uids_in_ptset): Do not check it.
1511         (find_what_var_points_to): Likewise.
1512         (compute_tbaa_pruning): Remove.
1513         (compute_points_to_sets): Do not call it.
1514         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1515         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1516         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1517         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1518         (DECL_NO_TBAA_P): Likewise.
1519         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1520         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1521         (expand_omp_atomic_pipeline): Do not set it.
1522         * print-tree.c (print_node): Do not dump it.
1523         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1524         redundant check.
1525
1526 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1527
1528         PR target/39856
1529         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1530         for clobber.
1531
1532 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1533
1534         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1535         non-external.
1536
1537 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1538
1539         * Makefile.in (bversion.h, s-bversion): New targets.
1540         (TOPLEV_H): Add bversion.h.
1541         * toplev.h: Include "bversion.h".
1542         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1543         the __format__ attribute only if compiling with the same version
1544         of GCC as the sources (the "build version").
1545
1546 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1547
1548         * c-format.c (handle_format_attribute): Fix comment typo.
1549
1550 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1551
1552         PR target/37846
1553         * config/ia64/ia64.opt (mfused-madd): New.
1554         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1555         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1556         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1557         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1558         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1559         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1560         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1561         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1562         instruction if !TARGET_FUSED_MADD.
1563         (fpma, fpms): Remove colon from name.
1564
1565 2009-05-22  Richard Guenther  <rguenther@suse.de>
1566
1567         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1568         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1569         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1570         TARGET_MEM_REF.
1571         (create_expression_by_pieces): Only convert if necessary.
1572         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1573         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1574
1575 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1576
1577         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1578         regular pattern from a template and rename it ...
1579         (*extzv_truncsi_exts): ... to this.
1580
1581 2009-05-21  Richard Guenther  <rguenther@suse.de>
1582
1583         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1584         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1585         (cgraph_default_inline_p): Likewise.
1586         (cgraph_decide_inlining_incrementally): Likewise.
1587
1588 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1589             Uros Bizjak  <ubizjak@gmail.com>
1590
1591         * config/i386/cpuid.h (bit_MOVBE): New.
1592
1593         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1594
1595         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1596         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1597         (ix86_handle_option): Handle OPT_mmovbe.
1598         (ix86_target_string): Add -mmovbe.
1599         (pta_flags): Add PTA_MOVBE.
1600         (processor_alias_table): Add PTA_MOVBE to "atom".
1601         (override_options): Handle PTA_MOVBE.
1602
1603         * config/i386/i386.h (TARGET_MOVBE): New.
1604
1605         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1606         (*bswapsi_movbe): New.
1607         (*bswapdi_movbe): Likewise.
1608         (bswapdi2): Renamed to ...
1609         (*bswapdi_1): This.
1610         (bswapdi2): New expander.
1611
1612         * config/i386/i386.opt (mmovbe): New.
1613
1614         * doc/invoke.texi: Document -mmovbe.
1615
1616 2009-05-21  Taras Glek  <tglek@mozilla.com>
1617
1618         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1619         * gcc-plugin.h (plugin_init): Updated signature.
1620         * gcc-plugin.h (plugin_name_args): Moved to this header.
1621         * doc/plugins.texi (plugin_init): Updated documention to reflect
1622         API change.
1623         * doc/plugins.texi (plugin_name_args): Added to documention.
1624
1625 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1626
1627         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1628         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1629
1630 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1631
1632         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1633         JUMP_TABLE_DATA_P predicates where applicable.
1634         * config/i386/predicates.md: Ditto.
1635         * config/i386/sse.md: Ditto.
1636
1637 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1638
1639         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1640         operand2 -128 override length_immediate attribute to 1.
1641         * config/i386/predicates.md (constm128_operand): New predicate.
1642
1643         * config/i386/i386.c (memory_address_length): Handle %r12
1644         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1645         also check REGNO.
1646         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1647         mode look through optional ZERO_EXTEND and SUBREG.
1648         * config/i386/i386.md (R12_REG): New define_constant.
1649         (prefix_data16): For sse unit set also for MODE_TI insns.
1650         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1651         insns set if operand 1 is ext_QIreg_operand.
1652         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1653         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1654         immediate.
1655         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1656         mode from MODE_DI to MODE_SI.
1657         (movdi_1_rex64): Override modrm and length_immediate attributes
1658         only for movabs (TYPE_IMOV, alternative 2).
1659         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1660         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1661         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1662         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1663         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1664         prefix_rex attribute if DImode.
1665         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1666         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1667         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1668         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1669         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1670         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1671         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1672         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1673         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1674         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1675         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1676         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1677         or one operand TYPE_ISHIFT.
1678         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1679         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1680         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1681         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1682         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1683         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1684         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1685         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1686         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1687         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1688         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1689         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1690         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1691         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1692         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1693         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1694         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1695         set mode attribute, don't override length attribute.
1696         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1697         to 1.
1698         (return_internal_long): Set length attribute to 2 instead of 1.
1699         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1700         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1701         prefix_rex attribute.
1702         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1703         New predicates.
1704         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1705
1706 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1707
1708         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1709
1710 2009-05-20  Ian Lance Taylor  <iant@google.com>
1711
1712         * tree.c (build_tree_list_vec_stat): New function.
1713         (ctor_to_vec): New function.
1714         (build_nt_call_vec): New function.
1715         (build_call_array): Change args to be a const pointer.
1716         (build_call_vec): New function.
1717         * tree.h (build_nt_call_vec): Declare.
1718         (build_tree_list_vec_stat): Declare.
1719         (build_tree_list_vec): Define.
1720         (build_call_array): Update declaration.
1721         (build_call_vec): Declare.
1722         (ctor_to_vec): Declare.
1723         * c-common.c (tree_vector_cache): New static variable.
1724         (make_tree_vector): New function.
1725         (release_tree_vector): New function.
1726         (make_tree_vector_single): New function.
1727         (make_tree_vector_copy): New function.
1728         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1729         (make_tree_vector_single, make_tree_vector_copy): Declare.
1730         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1731         (c_parser_expr_list): Don't manage cache here, instead call
1732         make_tree_vector.
1733         (c_parser_release_expr_list): Remove static function.
1734         (c_parser_vec_to_tree_list): Remove static function.
1735         (c_parser_attributes): Call build_tree_list_vec instead of
1736         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1737         c_parser_release_expr_list.
1738         (c_parser_postfix_expression_after_primary): Likewise.
1739         (c_parser_objc_keywordexpr): Likewise.
1740
1741 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1742
1743         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1744         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1745         TARGET_CONVERT_TO_TYPE.
1746         * hooks.c (hook_tree_const_tree_null): Define.
1747         * hooks.h (hook_tree_const_tree_null): Declare.
1748         * target.h (struct gcc_target):  Add invalid_parameter_type,
1749         invalid_return_type, promoted_type, and convert_to_type fields.
1750         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1751         (TARGET_INVALID_RETURN_TYPE): Define.
1752         (TARGET_PROMOTED_TYPE): Define.
1753         (TARGET_CONVERT_TO_TYPE): Define.
1754         (TARGET_INITIALIZER): Update for new fields.
1755         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1756         (grokparms): Check targetm.invalid_parameter_type.
1757         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1758         * c-convert.c (convert): Check targetm.convert_to_type.
1759
1760 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1761
1762         * config/mips/mips.md (*extenddi_truncate<mode>,
1763         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1764         defintions.
1765         (*extendhi_truncateqi): New define_insn_and_sptit.
1766
1767 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1768
1769         PR middle-end/40204
1770         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1771         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1772
1773 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1774
1775         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1776         the operand of VIEW_CONVERT_EXPR.
1777
1778 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1779
1780         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1781         extended family and model for Intel processors.  Support Intel Atom.
1782
1783 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1784
1785         * gstab.h (stab_code_type): Define, to be used instead of the
1786         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1787         notice.
1788         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1789         occurrences by stab_code_type.
1790         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1791
1792 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1793
1794         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1795         (sra_insert_before): Likewise.
1796         (sra_insert_after): Likewise.
1797         (sra_init_cache): Likewise.
1798         (sra_type_can_be_decomposed_p): Likewise.
1799         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1800         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1801         (sra_insert_before): Likewise.
1802         (sra_insert_after): Likewise.
1803         (sra_init_cache): Likewise.
1804         (insert_edge_copies_seq): Made static and moved upwards.
1805
1806         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1807         case.
1808
1809         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1810
1811         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1812         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1813         simple copies.
1814
1815 2009-05-20  Richard Guenther  <rguenther@suse.de>
1816
1817         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1818         with mismatched comparison modes.
1819
1820 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1821
1822         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1823         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1824         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1825         with shifts for Thumb2.
1826         (orsi_notsi): New for orn.
1827         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1828         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1829         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1830         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1831         Don't invert remainder for IOR.
1832         
1833 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1834
1835         PR tree-optimization/40087
1836         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1837         number_of_iterations_ne): Rename never_infinite argument.
1838         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1839         number_of_iterations_le): Handle pointer-type ivs when
1840         exit_must_be_taken is false.
1841         (number_of_iterations_cond):  Do not always assume that
1842         exit_must_be_taken if the control variable is a pointer.
1843
1844 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1845
1846         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1847         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1848
1849 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1850
1851         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1852         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1853
1854 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1855
1856         PR c/40172
1857         * c.opt (Wlogical-op): Disabled by default.
1858         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1859         Wextra.
1860         * doc/invoke.texi (Wlogical-op): Likewise.
1861         
1862 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1863
1864         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1865         into CASE_CONVERT.
1866         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1867         Propagate the type of the first operand.
1868         <ASSERT_EXPR>: Simplify.
1869         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1870         Rewrite using the RHS code as discriminant.
1871         <NOP_EXPR>: Turn into CASE_CONVERT.
1872         <PLUS_EXPR>: Propagate the type of the first operand.
1873
1874 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1875
1876         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1877         (ia64_dconst_0_375): New.
1878         * config/ia64/ia64.c (ia64_override_options): Remove
1879         -minline-sqrt-min-latency warning.
1880         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1881         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1882         * config/ia64/ia64.md (*sqrt_approx): Remove.
1883         (sqrtsf2): Remove #if 0.
1884         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1885         (sqrtdf): Remove assert.
1886         (sqrtdf2_internal_thr): Rewrite and move to div.md.
1887         (sqrtxf2): Remove #if 0.
1888         (sqrtxf2_internal_thr): Rewrite and move to div.md.
1889         * div.md (sqrt_approx_rf): New.
1890         (sqrtsf2_internal_thr): New implementation.
1891         (sqrtsf2_internal_lat): New.
1892         (sqrtdf2_internal_thr: New implementation.
1893         (sqrtxf2_internal): New implementation.
1894
1895 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1896             Hans-Peter Nilsson  <hp@axis.com>
1897
1898         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1899         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1900         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1901         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1902         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1903         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1904         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1905         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1906         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1907         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1908         * c-common.c: ...from here.
1909
1910 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1911
1912         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
1913
1914 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1915
1916         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1917
1918 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1919
1920         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1921         assignments with memcpy calls.
1922         (add_fdes): Likewise.
1923         (binary_search_unencoded_fdes): Likewise.
1924         (linear_search_fdes): Eliminate type puns.
1925         
1926 2009-05-19  Richard Guenther  <rguenther@suse.de>
1927
1928         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1929         not falsely claim to have propagated into all uses.
1930
1931 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1932
1933         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1934         version to v3.0.
1935
1936 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1937
1938         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1939         * config/sh/sh.c (sh_legitimate_address_p): Make static.
1940         (TARGET_LEGITIMATE_ADDRESS_P): New.
1941         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1942         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1943         
1944 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
1945
1946         PR debug/40109
1947         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1948         child of the containing namespace's DIE.
1949
1950 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
1951
1952         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1953         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
1954         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1955         extend patterns.
1956
1957 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1958
1959         PR target/39942
1960         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1961         gen_align with gen_pad.
1962         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1963         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1964
1965         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1966         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1967
1968         * config/i386/i386.md (align): Renamed to ...
1969         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1970         ASM_OUTPUT_MAX_SKIP_PAD.
1971
1972 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
1973
1974         * config.gcc: Fix variable syntax.
1975
1976         PR target/39531
1977         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1978         before calling exact_log2.
1979         (output_iorsi3): Likewise.
1980         (output_xorsi3): Likewise.
1981
1982 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1983
1984         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1985         for the none zero constant operand except for EQ and NE
1986         comprisons even when the first operand is R0.
1987
1988 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
1989
1990         * config/s390/2064.md: Remove trailing whitespaces.
1991         * config/s390/2084.md: Likewise.
1992         * config/s390/constraints.md: Likewise.
1993         * config/s390/fixdfdi.h: Likewise.
1994         * config/s390/libgcc-glibc.ver: Likewise.
1995         * config/s390/s390-modes.def: Likewise.
1996         * config/s390/s390-protos.h: Likewise.
1997         * config/s390/s390.c: Likewise.
1998         * config/s390/s390.h: Likewise.
1999         * config/s390/s390.md: Likewise.
2000         * config/s390/tpf-unwind.h: Likewise.
2001
2002 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2003
2004         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2005
2006 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2007
2008         M68K TLS support.
2009         * configure.ac (m68k-*-*): Check if binutils support TLS.
2010         * configure: Regenerate.
2011         * config/m68k/predicates.md (symbolic_operand): Extend comment.
2012         * config/m68k/constraints.md (Cu): New constraint.
2013         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2014         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2015         (movsi): Handle TLS symbols.
2016         (addsi3_5200): Handle XTLS symbols, indent.
2017         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2018         (m68k_tls_reference_p): Declare.
2019         (m68k_legitimize_address): Declare.
2020         (m68k_unwrap_symbol): Declare.
2021         * config/m68k/m68k.opt (mxtls): New option.
2022         * config/m68k/m68k.c (ggc.h): Include.
2023         (m68k_output_dwarf_dtprel): Implement hook.
2024         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2025         (m68k_expand_prologue): Load GOT pointer when function needs it.
2026         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2027         (m68k_legitimate_constant_address_p): Same.
2028         (m68k_decompose_address): Handle TLS references.
2029         (m68k_get_gp): New static function.
2030         (enum m68k_reloc): New contants.
2031         (TLS_RELOC_P): New macro.
2032         (m68k_wrap_symbol): New static function.
2033         (m68k_unwrap_symbol): New function.
2034         (m68k_final_prescan_insn_1): New static function.
2035         (m68k_final_prescan_insn): New function.
2036         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2037         functions.
2038         (legitimize_pic_address): Handle TLS references..
2039         (m68k_tls_get_addr, m68k_get_tls_get_addr)
2040         (m68k_libcall_value_in_a0_p)
2041         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2042         (m68k_call_m68k_read_tp): Helper variables and functions for ...
2043         (m68k_legitimize_tls_address): Handle TLS references.
2044         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2045         New functions.
2046         (m68k_legitimize_address): Handle TLS symbols.
2047         (m68k_get_reloc_decoration): New static function.
2048         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2049         UNSPEC_RELOC32.
2050         (m68k_output_dwarf_dtprel): Implement hook.
2051         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2052         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2053         m68k_call_* routines.
2054         (sched_attr_op_type): Handle TLS symbols.
2055         (gt-m68k.h): Include.
2056         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2057         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2058
2059 2009-05-18  Martin Jambor  <mjambor@suse.cz>
2060
2061         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2062         (visit_store_addr_for_mod_analysis): New function.
2063         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2064         (determine_cst_member_ptr): Use gimple_assign_single_p.
2065         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2066         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2067         operands.  Don't check number of operands of a NOP_EXPR.
2068
2069 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2070
2071         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2072
2073 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2074
2075         PR c/40172
2076         * c-common.c (warn_logical_operator): Don't warn if one of
2077         expression isn't always true or false.
2078
2079 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2080
2081         * config/i386/biarch32.h: New file.
2082         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2083
2084 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2085
2086         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2087         *zero_extend<mode>_truncqi): Merge these into ...
2088         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2089         Name the pattern following this as *zero_extendhi_truncqi.
2090
2091 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2092
2093         PR middle-end/39301
2094         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2095         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2096         (output_info): Make field HOST_WIDEST_INT.
2097         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2098         (dump_bitmat_statistics): Same.
2099
2100 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2101
2102         * config.gcc (use_gcc_stdint):  Set to wrap.
2103         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2104         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2105         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2106         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2107         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2108         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2109         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2110         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2111
2112 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2113
2114         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2115         tune_64.
2116         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2117         Move definitions earlier.
2118         (OPT_ARCH64, OPT_ARCH32): Define.
2119         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2120         and tune_64.
2121
2122 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2123
2124         PR target/40153
2125         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2126         implies.
2127
2128 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2129
2130         * arm.md (movdi2): Copy non-reg values to DImode registers.
2131
2132 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2133
2134         PR target/39942
2135         * final.c (label_to_max_skip): New function.
2136         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2137         CODE_LABEL_NUMBER <= max_labelno.
2138         * output.h (label_to_max_skip): New prototype.
2139         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2140         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2141         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2142         Handle CODE_LABELs with >= 16 byte alignment or with
2143         max_skip == (1 << align) - 1.
2144         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2145         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2146
2147         PR target/39942
2148         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2149         .p2align 3 if MAX_SKIP is smaller than 7.
2150         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2151
2152 2009-05-15  Ian Lance Taylor  <iant@google.com>
2153
2154         * alias.c (struct alias_set_entry_d): Rename from struct
2155         alias_set_entry.  Change all uses.
2156         * except.c (struct call_site_record_d): Rename from struct
2157         call_site_record.  Change all uses.
2158         * except.h (struct eh_region_d): Rename from struct eh_region.
2159         Change all uses.
2160         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2161         Change all uses.
2162         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2163         ivtype_map_elt.  Change all uses.
2164         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2165         Change all uses.
2166         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2167         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2168         Change all uses.
2169         (struct sese_d): Rename from struct sese.  Change all uses.
2170         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2171         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2172         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2173         uses.
2174         (struct convert_optab_d): Rename from struct convert_optab.
2175         Change all uses.
2176         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2177         ipa_opt_pass.  Change all uses.
2178         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2179         all uses.
2180
2181         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2182         defined as a typedef.
2183         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2184         defined as a tag.
2185
2186 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2187
2188         PR 16302
2189         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2190         declaration to...
2191         (merge_ranges): Returns bool. 
2192         * tree.h (make_range): .. to here.
2193         (build_range_check): Likewise.
2194         (merge_ranges): Likewise. Renamed from merge_ranges.
2195         * c-typeck.c (parser_build_binary_op): Update calls to
2196         warn_logical_operator.
2197         * c-common.c (warn_logical_operator): Add new warning.
2198         * c-common.h (warn_logical_operator): Update declaration.
2199         
2200 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2201
2202         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2203         
2204 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2205
2206         * doc/install.texi: Document MPC requirements, flags etc.
2207
2208         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2209         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2210         Evaluate constant arguments.
2211         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2212         (fold_builtin_1): Likewise, also evaluate constant arguments.
2213         Remove superfluous break.
2214         (do_mpc_ckconv): New.
2215         * real.h: Include mpc.h.
2216         * toplev.c (print_version): Output MPC version info if available.
2217
2218 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2219
2220         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2221
2222 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2223
2224         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2225         only once.
2226
2227 2009-05-15  Jan Hubicka  <jh@suse.cz>
2228
2229         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2230         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2231         (try_inline): Fix return value.
2232         (cgraph_decide_inlining_incrementally): Honor new value.
2233         (cgraph_early_inlining): Handle indirect inlining.
2234         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2235
2236 2009-05-15  Jan Hubicka  <jh@suse.cz>
2237
2238         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2239         * cgraphunit.c (cgraph_finalize_function): Set it.
2240         (cgraph_expand_function): Use it.
2241
2242 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2243
2244         * real.c (encode_ieee_half): Define.
2245         (decode_ieee_half): Define.
2246         (ieee_half_format): Define.
2247         (arm_half_format): Define.
2248         * real.h (ieee_half_format): Declare.
2249         (arm_half_format): Declare.
2250
2251 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2252
2253         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2254         swapped, and reversed optabs exist before trying to use them.
2255
2256 2009-05-15  Paul Brook  <paul@codesourcery.com>
2257             Sandra Loosemore  <sandra@codesourcery.com>
2258
2259         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2260         loads.  Allow PRE_DEC.
2261         (output_move_neon): Handle PRE_DEC.
2262         (arm_print_operand): Add 'A' for neon structure loads.
2263         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2264         * config/arm/neon.md (neon_mov): Update comment.
2265         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2266         calls.
2267         (Um): New constraint.
2268
2269 2009-05-15  Jan Hubicka  <jh@suse.cz>
2270
2271         Revert the following patch until testsuite fallout is fixed:
2272         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2273         * cgraph.h (struct inline_summary): New filed self_wize,
2274         size_inlining_benefit, self_time and time_inlining_benefit.
2275         (struct cgraph_global_info): Replace insns by time ans size fields.
2276         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2277         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2278         (ipcp_update_callgraph): Do not touch function bodies.
2279         * ipa-inline.c: Include except.h
2280         (MAX_TIME): New constant.
2281         (overall_insns): Remove
2282         (overall_size, max_benefit): New static variables.
2283         (cgraph_estimate_time_after_inlining): New function.
2284         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2285         (cgraph_clone_inlined_nodes): Update size.
2286         (cgraph_mark_inline_edge): Update size.
2287         (cgraph_estimate_growth): Use size info.
2288         (cgraph_check_inline_limits): Check size.
2289         (cgraph_default_inline_p): Likewise.
2290         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2291         (cgraph_decide_recursive_inlining): Check size.
2292         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2293         and times.
2294         (cgraph_decide_inlining): Likewise.
2295         (cgraph_decide_inlining_incrementally): Likewise; honor
2296         PARAM_EARLY_INLINING_INSNS.
2297         (likely_eliminated_by_inlining_p): New predicate.
2298         (estimate_function_body_sizes): New function.
2299         (compute_inline_parameters): Use it.
2300         * except.c (must_not_throw_labels): New function.
2301         * except.h (must_not_throw_labels): Declare.
2302         * tree-inline.c (init_inline_once): Kill inlining_weigths
2303         * tree-ssa-structalias.c: Avoid uninitialized warning.
2304         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2305         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2306         (PARAM_INLINE_CALL_COST): Remove.
2307         (PARAM_EARLY_INLINING_INSNS): New.
2308
2309 2009-05-15  Richard Guenther  <rguenther@suse.de>
2310
2311         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2312         not TODO_update_ssa.
2313
2314 2009-05-15  Richard Guenther  <rguenther@suse.de>
2315
2316         PR tree-optimization/39999
2317         * gimple.h (gimple_expr_type): Use the expression type looking
2318         through useless conversions.
2319         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2320         (vn_nary_op_insert_stmt): Likewise.
2321         (simplify_binary_expression): Likewise.
2322
2323 2009-05-15  Richard Guenther  <rguenther@suse.de>
2324
2325         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2326         New options, enabled by default.
2327         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2328         Document.
2329         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2330         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2331         * tree-ssa-structalias.c (gate_tree_pta): New function.
2332         (pass_build_alias): Use it.
2333
2334 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2335
2336         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2337         recurse on an invariant address if a conversion from a pointer
2338         type to a wider integer type is involved.
2339
2340 2009-05-15  Jan Hubicka  <jh@suse.cz>
2341
2342         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2343         * cgraph.h (struct inline_summary): New filed self_wize,
2344         size_inlining_benefit, self_time and time_inlining_benefit.
2345         (struct cgraph_global_info): Replace insns by time ans size fields.
2346         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2347         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2348         (ipcp_update_callgraph): Do not touch function bodies.
2349         * ipa-inline.c: Include except.h
2350         (MAX_TIME): New constant.
2351         (overall_insns): Remove
2352         (overall_size, max_benefit): New static variables.
2353         (cgraph_estimate_time_after_inlining): New function.
2354         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2355         (cgraph_clone_inlined_nodes): Update size.
2356         (cgraph_mark_inline_edge): Update size.
2357         (cgraph_estimate_growth): Use size info.
2358         (cgraph_check_inline_limits): Check size.
2359         (cgraph_default_inline_p): Likewise.
2360         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2361         (cgraph_decide_recursive_inlining): Check size.
2362         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2363         and times.
2364         (cgraph_decide_inlining): Likewise.
2365         (cgraph_decide_inlining_incrementally): Likewise; honor
2366         PARAM_EARLY_INLINING_INSNS.
2367         (likely_eliminated_by_inlining_p): New predicate.
2368         (estimate_function_body_sizes): New function.
2369         (compute_inline_parameters): Use it.
2370         * except.c (must_not_throw_labels): New function.
2371         * except.h (must_not_throw_labels): Declare.
2372         * tree-inline.c (init_inline_once): Kill inlining_weigths
2373         * tree-ssa-structalias.c: Avoid uninitialized warning.
2374         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2375         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2376         (PARAM_INLINE_CALL_COST): Remove.
2377         (PARAM_EARLY_INLINING_INSNS): New.
2378         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2379         (inline-call-cost): Remove.
2380         (early-inlining-insns): New.
2381
2382 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2383
2384         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2385         for bounds.
2386         (print_int_cst_bounds_in_octal_p): Likewise.
2387         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2388         with subtypes.
2389         * dwarf2out.c (base_type_die): Likewise.
2390         (is_subrange_type): Delete.
2391         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2392         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2393         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
2394         if the destination type is boolean.
2395         (build_range_check): Do not special-case subtypes.
2396         (fold_sign_changed_comparison): Likewise.
2397         (fold_unary): Likewise.
2398         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2399         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2400         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2401         * tree.c (subrange_type_for_debug_p): New predicate based on the
2402         former is_subrange_type.
2403         * tree.h (subrange_type_for_debug_p): Declare.
2404         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2405         (convert_affine_scev): Remove call to above function.
2406         (chrec_convert_aggressive): Likewise.
2407         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2408         false for conversions involving subtypes.
2409         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2410         (vrp_val_min): Likewise.
2411         (needs_overflow_infinity): Likewise.
2412         (extract_range_from_unary_expr): Likewise.
2413
2414 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2415
2416         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2417         * config/frv/frv.c: Likewise.
2418         * config/s390/s390.c: Likewise.
2419         * config/sparc/sparc.h: Likewise.
2420         * config/i386/i386.h: Likewise.
2421         * config/i386/i386.c: Likewise.
2422         * config/crx/crx.c: Likewise.
2423         * config/m68hc11/m68hc11.h: Likewise.
2424         * config/iq2000/iq2000.c: Likewise.
2425         * config/mn10300/mn10300.h: Likewise.
2426         * config/mn10300/mn10300.c: Likewise.
2427         * config/m68k/m68k.c: Likewise.
2428         * config/rs6000/rs6000.c: Likewise.
2429         * config/rs6000/xcoff.h: Likewise.
2430         * config/rs6000/linux64.h: Likewise.
2431         * config/rs6000/sysv4.h: Likewise.
2432         * config/score/score3.c: Likewise.
2433         * config/score/score7.c: Likewise.
2434         * config/score/score.c: Likewise.
2435         * config/arm/arm.md: Likewise.
2436         * config/mips/mips.c: Likewise.
2437         * config/mips/mips.md: Likewise.
2438         * config/bfin/bfin.h: Likewise.
2439         * config/pa/pa.c: Likewise.
2440         * config/pa/constraints.md: Likewise.
2441
2442         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2443         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2444         * config/pdp11/pdp11.h: Use memory_address_p instead.
2445
2446 2009-05-14  Ian Lance Taylor  <iant@google.com>
2447
2448         * passes.c (finish_optimization_passes): Change i to int.
2449         * plugin.c (plugins_active_p): Change event to int.
2450         (dump_active_plugins): Likewise.
2451         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2452         Add cast.
2453         * tree.c (tree_range_check_failed): Change c to unsigned int.
2454         (omp_clause_range_check_failed): Likewise.
2455         (build_common_builtin_nodes): Change mode to int.  Add cast.
2456         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2457         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2458
2459         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2460         ++ or -- with a variable of enum type.
2461
2462 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2463
2464         PR driver/40144
2465         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2466
2467 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2468
2469         * store-motion.c: Do not include params.h
2470         * Makefile.in: Fix dependencies for various files.
2471
2472 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2473
2474         * auto-inc-dec.c: Fix pass description, remove apparent
2475         accidental duplication.
2476
2477 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2478
2479         PR middle-end/40147
2480         * ipa-utils.h (memory_identifier_string): Moved to ...
2481         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2482
2483 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2484
2485         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2486         in the former documentation of...
2487         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2488         * ira-conflicts.c (get_dup_num): Use address_operand.
2489         * targhooks.c (default_legitimate_address_p): New.
2490         * targhooks.h (default_legitimate_address_p): New.
2491         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2492         Call hook.
2493         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2494         * target.h (struct target): Add legitimate_address_p.
2495         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2496         (TARGET_INITIALIZER): Include it.
2497
2498         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2499         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2500         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2501         (TARGET_LEGITIMATE_ADDRESS_P): New.
2502
2503         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2504         (REG_OK_STRICT_P): Delete.
2505         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2506         (frv_legitimate_address_p_1): ... this.
2507         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2508         (frv_legitimate_address_p_1): ... the renamed old
2509         frv_legitimate_address_p.
2510         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2511         (TARGET_LEGITIMATE_ADDRESS_P): New.
2512
2513         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2514         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2515         * config/s390/s390.c (legitimate_address_p): Rename to...
2516         (s390_legitimate_address_p): ... this, make static.
2517         (legitimize_address): Adjust call.
2518         (TARGET_LEGITIMATE_ADDRESS_P): New.
2519         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2520
2521         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2522         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2523         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2524         (TARGET_LEGITIMATE_ADDRESS_P): New.
2525
2526         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2527         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2528         * config/spu/spu.c (spu_legitimate_address): Rename to...
2529         (spu_legitimate_address_p): ... this, make static.
2530         (TARGET_LEGITIMATE_ADDRESS_P): New.
2531
2532         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2533         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2534         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2535         (sparc_legitimate_address_p): ... this, make static and return bool.
2536         (legitimize_address): Adjust call.
2537         (TARGET_LEGITIMATE_ADDRESS_P): New.
2538
2539         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2540         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2541         * config/i386/i386.c (legitimate_address_p): Rename to...
2542         (ix86_legitimate_address_p): ... this, make static.
2543         (constant_address_p): Move after it, adjust call.
2544         (TARGET_LEGITIMATE_ADDRESS_P): New.
2545
2546         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2547         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2548         * config/avr/avr.c (legitimate_address_p): Rename to...
2549         (avr_legitimate_address_p): ... this, make static.
2550         (legitimize_address): Adjust call.
2551         (TARGET_LEGITIMATE_ADDRESS_P): New.
2552
2553         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2554         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2555         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2556         (TARGET_LEGITIMATE_ADDRESS_P): New.
2557
2558         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2559         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2560         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2561         (TARGET_LEGITIMATE_ADDRESS_P): New.
2562
2563         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2564         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2565         Remove.
2566         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2567         Make static.
2568         (TARGET_LEGITIMATE_ADDRESS_P): New.
2569
2570         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2571         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2572         Remove.
2573         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2574         Rename to...
2575         (m68hc11_legitimate_address_p): ... this, make static.
2576         (go_if_legitimate_address_internal): Rename to...
2577         (m68hc11_legitimate_address_p_1): ... this.
2578         (legitimize_address): Adjust call.
2579         (TARGET_LEGITIMATE_ADDRESS_P): New.
2580
2581         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2582         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2583         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2584         (TARGET_LEGITIMATE_ADDRESS_P): New.
2585
2586         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2587         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2588         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2589         (mn10300_legitimate_address_p): ... this, make static.
2590         (TARGET_LEGITIMATE_ADDRESS_P): New.
2591
2592         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2593         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2594         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2595         (TARGET_LEGITIMATE_ADDRESS_P): New.
2596
2597         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2598         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2599         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2600         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2601         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2602         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2603         (rs6000_legitimate_address_p): ... this, make static.
2604         (TARGET_LEGITIMATE_ADDRESS_P): New.
2605         (REG_MODE_OK_FOR_BASE_P): Delete.
2606         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2607
2608         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2609         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2610         Delete.
2611         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2612         static, adjust types.
2613         (TARGET_LEGITIMATE_ADDRESS_P): New.
2614
2615         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2616         * config/score/score.c (score_address_p): Rename to...
2617         (score_legitimate_address_p): ... this.
2618         (TARGET_LEGITIMATE_ADDRESS_P): New.
2619         * config/score/score3.c (score3_address_p): Rename to...
2620         (score3_legitimate_address_p): ... this.
2621         * config/score/score7.c (score7_address_p): Rename to...
2622         (score7_legitimate_address_p): ... this.
2623
2624         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2625         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2626         GO_IF_LEGITIMATE_ADDRESS): Delete.
2627         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2628         thumb2_legitimate_address_p): Delete.
2629         (arm_legitimate_address_p): Rename to...
2630         (arm_legitimate_address_outer_p): ... this.
2631         * config/arm/constraints.md ("Uq"): Adjust call.
2632         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2633         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
2634         to...
2635         (arm_legitimate_address_outer_p): ... this.
2636         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
2637         static.
2638         (TARGET_LEGITIMATE_ADDRESS_P): New.
2639
2640         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2641         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2642         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2643         (TARGET_LEGITIMATE_ADDRESS_P): New.
2644
2645         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2646         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2647         * config/vax/vax.c (legitimate_address_p): Rename to...
2648         (vax_legitimate_address_p): ... this, make static.
2649         (TARGET_LEGITIMATE_ADDRESS_P): New.
2650
2651         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2652         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2653         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2654         (TARGET_LEGITIMATE_ADDRESS_P): New.
2655
2656         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2657         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2658         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2659         (mmix_legitimate_address_p): ... this, make static.
2660         (TARGET_LEGITIMATE_ADDRESS_P): New.
2661
2662         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2663         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2664         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2665         (TARGET_LEGITIMATE_ADDRESS_P): New.
2666
2667 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2668
2669         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2670         of MODE_COMPLEX_INT.
2671
2672 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2673
2674         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2675         LCT_NORMAL in function call.
2676         * mips-tdump.c (print_file_desc): Add cast to enum type.
2677         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2678         (mark_stabs): Add casts to enum types.
2679         (parse_stabs_common): Add casts to enum types.
2680
2681 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2682
2683         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2684         Check for invalid values of LETTER.
2685
2686 2009-05-13  Taras Glek  <tglek@mozilla.com>
2687
2688         * attribs.c (register_attribute): moved out attribute registration
2689         into register_attribute.
2690         * doc/plugins.texi: Documented register_attribute and
2691         PLUGIN_ATTRIBUTES.
2692         * gcc-plugin.h: Added forward decl for register_attribute.
2693         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2694         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2695         PLUGIN_ATTRIBUTES boilerplate.
2696
2697 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2698
2699         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2700         values even in sentinel and empty entries.
2701         (ms_printf_flag_specs):  Likewise.
2702         (ms_scanf_flag_specs):  Likewise.
2703         (ms_strftime_flag_specs):  Likewise.
2704         (ms_print_char_table):  Likewise.
2705         (ms_scan_char_table):  Likewise.
2706         (ms_time_char_table):  Likewise.
2707
2708 2009-05-13  Doug Kwan  <dougkwan@google.com>
2709
2710         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2711
2712 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2713
2714         * config/mips/mips.md (store): Add attributes for QI and HI.
2715         Update comment.
2716         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2717         (truncdi<mode>2): ... this new pattern.
2718
2719 2009-05-13  Brad Hards  <bradh@kde.org>
2720
2721         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2722
2723 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2724             Ben Elliston <bje@au.ibm.com>
2725
2726         PR middle-end/40035
2727         * dse.c (check_mem_read_rtx): Guard against width == -1.
2728
2729 2009-05-13  Michael Matz  <matz@suse.de>
2730
2731         PR middle-end/39976
2732         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2733         (trivially_conflicts_p): New function.
2734         (insert_backedge_copies): Use it.
2735
2736 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2737
2738         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2739         (handle_stdc_pragma): Use new enum constant names.
2740         (handle_pragma_float_const_decimal64): Ditto.
2741
2742 2009-05-13  Ian Lance Taylor  <iant@google.com>
2743
2744         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2745         tree.def.
2746
2747 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2748
2749         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2750         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2751         multilibs.
2752         * config/m68k/m68k.h (FL_UCLINUX): Define.
2753
2754 2009-05-13  Jan Hubicka  <jh@suse.cz>
2755
2756         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2757
2758 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2759
2760         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2761         unless -fschedule-insns is specified.
2762
2763 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2764
2765         PR target/39561
2766         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2767         TARGET_EXPAND_CBRANCHDI4.
2768         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2769         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2770         (cmpeqdi): Fix comment.
2771
2772 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2773
2774         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2775         (sh_legitimate_address_p): Likewise.
2776         * config/sh/sh.c (sh_legitimate_index_p): New.
2777         (sh_legitimate_address_p): Likewise.
2778         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2779         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2780         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2781         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2782         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2783         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2784         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2785         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2786         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2787
2788 2009-05-12  Jan Hubicka  <jh@suse.cz>
2789
2790         * tree-inline.c (estimate_operator_cost): Add operands;
2791         when division happens by constant, it is cheap.
2792         (estimate_num_insns): Loads and stores are not having cost of 0;
2793         EH magic stuff is cheap; when computing runtime cost of switch,
2794         use log2 base of amount of its cases; builtin_expect has cost of 0;
2795         compute cost for moving return value of call.
2796         (init_inline_once): Initialize time_based flags.
2797         * tree-inline.h (eni_weights_d): Add time_based flag.
2798
2799 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2800
2801         * df-core.c: Update head documentation.
2802
2803 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2804
2805         PR bootstrap/40118
2806         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2807         shadowing exisiting variable op1.
2808
2809 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2810
2811         PR target/37179
2812         * config/i386/driver-i386.c (processor_signatures): New enum.
2813         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2814         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2815         processor signature to detect geode processor.
2816
2817 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2818
2819         Revert:
2820
2821         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2822
2823         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2824         causes spurious differences between trunk and cond-optab branch.
2825
2826 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2827
2828         * dojump.c (compare_from_rtx): Delete.
2829         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2830         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2831         if the comparison does not satisfy the predicate; test predicates for
2832         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2833         further if one existing pattern fails.
2834         * expr.h (compare_from_rtx): Delete.
2835         (prepare_operand): Declare it.
2836         * optabs.c: Change "lib call" to "libcall" throughout.
2837         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2838         HAVE_conditional_trap, emit_cmp_insn): Delete.
2839         (can_compare_p): Delete cmp_optab case.
2840         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2841         Accept other parameters by value.
2842         (prepare_operand): Make non-static.
2843         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2844         other parameters by value.  Try to widen operands here based on
2845         an optab_methods argument and looking at cbranch_optab.
2846         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2847         loop.  Use cbranch_optab directly.
2848         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2849         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2850         assertion.
2851         (emit_conditional_move, emit_conditional_add): Inline what's needed
2852         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2853         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2854         with COMPARE.  Move cmov_optab and cstore_optab above
2855         with cbranch_optab, move cmp_optab down with ucmp_optab,
2856         remove tst_otpab.  Do not initialize trap_rtx.
2857         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2858         for trap code.  Do not check HAVE_conditional_trap.  Use
2859         prepare_cmp_insn.  Accept no predicate for operand 3.
2860         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2861         (OTI_ctrap, ctrap_optab): New.
2862         (tst_optab): Delete.
2863         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2864         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2865         with lookup of ctrap_optab.
2866         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
2867         Delete.
2868         (ctrap_optab): New.
2869
2870         * combine.c (combine_simplify_rtx, simplify_set): Do not
2871         special case comparing against zero for cc0 machines.
2872         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2873         COMPARE on cc0 machines.
2874         (simplify_relational_operation): Return a new expression when
2875         a COMPARE could be removed.
2876         * final.c (final_scan_insn): Compare cc_status values
2877         against LHS of a (compare FOO (const_int 0)) cc0 source.
2878         Also check if cc_status.value is the full compare.
2879
2880         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2881         (cstoreMM4): Document.
2882         (conditional_trap): Document ctrapMM4 instead.
2883         (sync_compare_and_swapMM): Refer to cbranchcc4.
2884         (Dependent Patterns): Eliminate obsolete information referring to
2885         the old jump optimization phase.
2886         (Canonicalization): Include cbranchcc4 case, omit canonicalization
2887         of compares with 0 on cc0 machines.
2888         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2889         avoiding references to cc0.  Remove text about storing operands
2890         in cmpMM.
2891         * doc/tm.texi (Condition Codes): Include blurb on different
2892         condition code representations, separate into subsections for
2893         CC0, MODE_CC and conditional execution.
2894
2895         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2896         alpha_emit_setcc): Accept operands and a machine mode.
2897         * config/alpha/alpha.c (alpha_emit_conditional_branch):
2898         Get code/op0/op1 from operands, use machine mode argument
2899         instead of alpha_compare.fp_p.  Emit the branch here.
2900         (alpha_emit_setcc): Likewise, and return boolean.
2901         (alpha_emit_conditional_move): Likewise.  Assert that
2902         cmp_op_mode == cmp_mode, and simplify accordingly.
2903         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2904         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2905         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2906         Delete.
2907         (stack probe test): Use cbranchdi4.
2908         * config/alpha/predicates.md (alpha_cbranch_operator): New.
2909
2910         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
2911         * config/arc/arc.h (movsicc, movsfcc): Use it.
2912         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2913         (cbranchsi4, cstoresi4): New.
2914         (cmpsi, bCC and sCC expanders): Remove. 
2915
2916         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2917         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2918         * config/arm/predicates.md (arm_comparison_operator): Only include
2919         floating-point operators if there is a hardware floating-point unit.
2920         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2921         deferring to cbranch_cc and cstore_cc respectively.
2922         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2923         cbranch_cc, cstore_cc): New.
2924         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2925         arm_compare_op1.
2926         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2927
2928         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2929         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2930         as an argument.
2931         (adjust_insn_length): Adjust calls.
2932         (avr_reorg): Handle (compare (foo) (const_int 0)).
2933         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2934         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2935         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2936         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2937         (bCC): Remove.
2938         (cbranchqi4, cbranchhi4, cbranchsi4): New.
2939         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2940
2941         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2942         (cbranchsi4, cstorebi4, cstoresi4): New.
2943         (movbisi): This insn is duplicate, split it to zero_extend.
2944         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2945         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
2946         (bfin_optimize_loop): Use cbranch expander.
2947         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2948         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2949         (bfin_bimode_comparison_operator): ... this.
2950         (bfin_direct_comparison_operator): New.
2951  
2952         * config/cris/cris.c (cris_normal_notice_update_cc): Look
2953         inside (compare FOO (const_int 0)).
2954         (cris_rtx_costs): Handle ZERO_EXTRACT.
2955         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2956         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2957         (*tstdi_v32): Delete.
2958         (*cmpdi_non_v32): Add M alternative for operand 1.
2959         (cmpsi, cmp<mode>): Make private.
2960         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2961         with COMPARE.
2962         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2963
2964         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2965         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2966         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2967         (cc_reg_operand): New.
2968         (any_cond): Delete.
2969         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2970         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2971         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2972         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2973         crx_expand_scond): Delete.
2974
2975         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2976         (cbranchsi4): New.
2977         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2978         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2979
2980         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2981         cstoresi4, cstoresf4, cstoredf4): New.
2982         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2983         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2984         Receive the entire operands array.
2985         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2986         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2987         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2988         Get test/op0/op1 from the operands array.
2989         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2990
2991         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2992         (h8300_expand_store): New.
2993         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2994         (const_int 0)).
2995         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
2996         (h8300_expand_store): New.
2997         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2998         or do not try to produce (set (cc0) REG).
2999         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
3000         change a compare into a move to a scratch register.  Disable some
3001         peepholes when comparing with zero.
3002         (tstsi, tsthi, tstsi, cmpqi): Make private.
3003         (cmphi): Delete.
3004         (bCC, sCC): Delete.
3005         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
3006         cstoresi4): New.
3007
3008         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
3009         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
3010         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
3011         (ix86_emit_i387_log1p): Use cbranchxf2.
3012         (ix86_expand_setcc): Return void.
3013         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
3014         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
3015         cmp<MODEF>, cmpcc): Remove.
3016         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
3017         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
3018         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
3019         (sCC and bCC expanders): Remove.
3020         (stack_protect_test): Use cbranchcc4.
3021
3022         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
3023         Delete.
3024         (ia64_expand_compare): Accept three rtx by reference and return void.
3025         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
3026         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
3027         from *expr.  Update *expr with the BImode comparison to do.
3028         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
3029         cmptf, bCC, sCC, conditional_trap): Delete.
3030         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
3031         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
3032         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
3033         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
3034         * config/ia64/predicates.md (ia64_cbranch_operator): New.
3035
3036         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
3037         type of last argument.
3038         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
3039         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
3040         use machine mode argument instead of branch_type.  Remove dead
3041         code for floating-point comparisons.
3042         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
3043         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
3044         Remove.
3045         (cbranchsi4, cstoresi4): New.
3046         * config/iq2000/predicates.md (reg_or_const_operand): New.
3047
3048         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
3049         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
3050         (b<code>_op): Rewrite to...
3051         (bcc_op): ... this, using match_operator.
3052         (s<code>_op): Rewrite to...
3053         (scc_op): ... this, using match_operator.
3054         (s<code>_24_op): Rewrite to...
3055         (scc_op_24): ... this, using match_operator.
3056         (s<code>_<mode>): Rewrite to...
3057         (cstore<mode>4): ... this, using match_operator.
3058         (s<code>_<mode>_24): Rewrite to...
3059         (cstore<mode>4_24): ... this, using match_operator.
3060         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
3061         m32c_unpend_compare, m32c_expand_scc): Delete.
3062         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
3063         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
3064         (m32c_expand_movcc): Change NE to EQ if necessary.
3065         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
3066
3067         * config/m32r/m32r-protos.h (gen_cond_store): New.
3068         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
3069         (gen_cond_store): New, from sCC patterns.
3070         (m32r_expand_block_move): Use cbranchsi4.
3071         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
3072         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
3073         (cbranchsi4, cstoresi4): New.
3074         
3075         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
3076         Delete.
3077         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
3078         (m68hc11_notice_update_cc): Look into a compare with 0.
3079         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
3080         Delete.
3081         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
3082         cmphi, cmpqi, bCC): Delete.
3083         (cbranchsi4, cbranchhi4, cbranchqi4): New.
3084         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
3085         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
3086         sets with COMPARE.
3087
3088         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
3089         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
3090         * config/m68k/constraints.md (H): New.
3091         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3092         the define_insn below.
3093         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3094         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3095         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3096         patterns): Wrap RHS with COMPARE.
3097         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3098         (*cmpdi_internal): Name this pattern.
3099         (cmpdi): Change to define_insn.
3100         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3101         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3102         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3103         predicate.
3104         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3105         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3106         (conditional_trap): Change to...
3107         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3108         (*conditional_trap): Use the ordered_comparison_operator and
3109         const1_operand predicates.
3110         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3111         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3112         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3113         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3114
3115         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3116         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3117         (mcore_gen_compare): New. 
3118         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3119         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3120         (mcore_gen_compare): ... this.
3121         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3122         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3123         (stack probe pattern): Use cbranchsi4.
3124
3125         * config/mips/predicates.md (mips_cstore_operator): New.
3126         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3127         * config/mips/mips.md (any_cond): Delete.
3128         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
3129         always succeed.
3130         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3131         fixuns_truncsfdi2): Use cbranch patterns.
3132         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
3133         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3134         Adjust call to mips_expand_conditional_branch.
3135         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3136         cstore<GPR:mode>4.
3137         * config/mips/mips-protos.h (mips_expand_conditional_branch,
3138         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3139         * config/mips/mips.c (cmp_operands): Delete.
3140         (mips_emit_compare): Get comparison operands from *op0/*op1.
3141         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
3142         that it succeeds.  Use op0/op1 instead of cmp_operands.
3143         (mips_expand_conditional_branch, mips_expand_conditional_move,
3144         mips_expand_conditional_trap): Likewise.
3145         (mips_block_move_loop): Use cbranch patterns. 
3146         * config/mips/mips.h (cmp_operands): Delete.
3147
3148         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3149         (mmix_gen_compare_reg): Just return a register in the right CC mode.
3150         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3151         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3152         (*cmpcc_folded): Rename to...
3153         (*cmpdi_folded): this.
3154         (*cmpcc): Rename to...
3155         (*cmps): ... this.
3156         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3157         (bCC): Remove.
3158         (cbranchdi4): New.
3159         (cbranchdf4): New.  Handle invalid comparisons here.
3160         * config/mmix/predicates.md (float_comparison_operator): New.
3161
3162         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3163         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3164         * config/mn10300/mn10300.md (tst): Delete.
3165         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3166         Name these patterns and wrap RHS in a compare.
3167         (*cmpsi): Make this pattern private.  Include tst.
3168         (*cmpsf): Make this pattern private.
3169         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3170         (compare with zero peepholes): Likewise.
3171         (bCC): Remove.
3172         (cbranchsi4, cbranchsf4): New.
3173         (casesi): Use cbranchsi4.
3174
3175         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3176         hppa_branch_type): Delete.
3177         (return_addr_rtx): Use cbranchsi4.
3178         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
3179         Emit CCFPmode comparison here.
3180         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3181         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3182         hppa_branch_type): Delete.
3183         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3184         (movsicc, movdicc): Remove references to hppa_compare_op0,
3185         hppa_compare_op1 and compare_from_rtx.
3186         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3187         (casesi): Use cbranchsi4.
3188
3189         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3190         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3191         * config/pdp11/pdp11.md (register_or_const0_operand): New.
3192         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
3193         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3194         (bCC): Delete.
3195         (cbranchdf4, cbranchhi4, cbranchqi4): New.
3196         (*branch, *branch_inverted): New.
3197
3198         * config/picochip/picochip.md (cbranchhi4): Use
3199         ordered_comparison_operator.
3200         (cmphi, bCC): Remove.
3201
3202         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3203         (trap_comparison_operator): Delete.
3204         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3205         rs6000_emit_cbranch): Accept mode and operands.
3206         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3207         rs6000_compare_fp_p): Delete.   
3208         (rs6000_generate_compare): Accept mode and comparison.  Extract code
3209         and op0/op1 from there.  Replace references to rs6000_compare_op0
3210         and rs6000_compare_op1.
3211         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3212         extract result from passed operands.
3213         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3214         extract loc from passed operands.
3215         (rs6000_emit_cmove): Likewise.
3216         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3217         rs6000_compare_fp_p): Delete.
3218         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3219         (cbranch<GPR>4, cbranch<FP>4): New.
3220         (cstore<mode>4): New.  Consolidate here all choices about when to use
3221         portable or specialized sCC sequences.
3222         (stack_protect_test): Use cbranchsi4.
3223         (conditional_trap): Replace with ctrap<GPR>4.
3224         (conditional trap insn): Replace trap_comparison_operator with
3225         ordered_comparison_operator. 
3226
3227         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3228         (s390_emit_prologue): Use ctrap.
3229         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3230         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3231         New predicates replacing...
3232         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3233         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3234         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3235         (add<mode>cc): Do not use s390_compare_op0/op1.
3236         (s<code>): Change to...
3237         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3238         (seq): Change to...
3239         (cstorecc4): ... this.  Handle EQ or NE equally.
3240         (*sne): Un-privatize for use in cstorecc4.
3241         (b<code>): Change to...
3242         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3243         (conditional_trap): Replace with...
3244         (ctrap<GPR>4, ctrap<FP>4): ... these.
3245         (stack_protect): Use cbranchcc4.
3246
3247         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3248         * config/score/score-protos.h (score_gen_cmp): Delete.
3249         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3250         (score_block_move-loop): Use cbranchsi4.
3251         * config/score/score.md (cbranchsi4): New.
3252         (cmpsi, bCC): Delete.
3253         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3254         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3255         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3256         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3257         * config/score/score3.h (score3_gen_cmp): Delete.
3258         * config/score/score7.h (score7_gen_cmp): Delete.
3259
3260         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3261         (sh_emit_scc_to_t): ... this.  Return void.
3262         (from_compare): Rename to...
3263         (sh_emit_compare_and_branch): ... this.
3264         (sh_emit_compare_and_set): New.
3265         (sh_expand_t_scc): Accept operands.
3266         * config/sh/predicates.md (sh_float_comparison_operator): New.
3267         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3268         (prepare_scc_operands): Rename to...
3269         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
3270         arguments.
3271         (sh_emit_cheap_store_flag): New.
3272         (sh_emit_set_t_insn): New.
3273         (from_compare): Rename to...
3274         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
3275         handling of TARGET_SH2E floating point to avoid recursive call.
3276         Generate branch here.
3277         (sh_emit_compare_and_set): New.
3278         (sh_expand_t_scc): Get op0/op1 from arguments.
3279         (sh_emit_cheap_store_flag): New.
3280         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3281         cases.
3282         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3283         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3284         (movsicc, movdicc): Do nothing when it recreated operands from
3285         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3286         prepare_scc_operands (now sh_emit_scc_to_t).
3287         (udivdi3): Use cstoresi4.
3288         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3289         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3290         (cbranchint4_media, cbranchfp4_media): New.
3291         (casesi): Use cbranchdi4.
3292         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3293         Delete.
3294         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3295         (movnegt): Remove second operand.
3296         (cbranchsf4, cbranchdf4): New.
3297         (stack_protect): Use cbranchdi4/cbranchsi4.
3298
3299         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3300         (gen_compare_reg): Accept comparison, extract part of it to...
3301         (gen_compare_reg_1): ... this. 
3302         (gen_compare_operator): Delete.
3303         (gen_v9_scc): Accept separate destination, comparison code and arms.
3304         Do not use sparc_compare_op0/sparc_compare_op1.
3305         (emit_scc_insn, emit_conditional_branch_insn): New.
3306         (emit_v9_brxx): Make static.  Remove useless assertion.
3307         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3308         emit_cmp_insn.
3309         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3310         * config/sparc/sparc-protos.h (gen_compare_reg,
3311         sparc_emit_float_lib_cmp): Adjust prototype.
3312         (emit_scc_insn, emit_conditional_branch_insn): New.
3313         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3314         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3315         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3316         iterators to the top.
3317         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3318         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3319         snedi_special_trunc): Delete.
3320         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3321         and snedi_special_trunc.
3322         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3323         cbranchdi4, cbranch<F:mode>4): New.
3324         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3325         here.  Use gen_compare_reg instead of gen_compare_operator.
3326         (conditional_trap): Replace with...
3327         (ctrapsi4, ctrapdi4): ... this.
3328         (stack_protect_test): Use cbranchcc4.
3329
3330         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3331         argument to rtx.
3332         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3333         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3334         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3335         from operands[0] or operands[3] depending on is_set.
3336         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3337         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3338         cmpdf, bCC), sCC: Remove.
3339         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3340         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3341         cstoredf4): New.
3342         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3343         spu_emit_branch_or_set.
3344
3345         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3346         Add two arguments.
3347         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3348         xstormy16_compare_op1): Delete.
3349         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3350         xstormy16_compare_op1): Delete. 
3351         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3352         Adjust calls.
3353         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3354         (cmphi, cmpsi, bCC): Remove.
3355
3356         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3357         (*cmpsi): ... this one.
3358         (cbranchsi4, cstoresi4): New.
3359         (bCC expanders): Delete.
3360         (sCC insns): Fold into...
3361         (*setcc): ... this one.
3362         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3363         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3364         (movsicc): Simplify.
3365         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3366
3367         * config/vax/vax-protos.h (cond_name): New.
3368         (vax_output_conditional_branch): Remove.
3369         * config/vax/vax.c (cond_name): New.
3370         (vax_output_conditional_branch): Remove.
3371         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3372         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3373         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3374         (bit<VAXint>): Wrap source with (compare).
3375         (b<code> and following unnamed pattern): Rename to *branch and
3376         *branch_reversed.  Change macroization to match_operator.
3377         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3378
3379         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3380         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3381         Change last argument to machine_mode.
3382         (xtensa_expand_scc): Add machine_mode argument.
3383         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3384         (gen_conditional_move, xtensa_expand_conditional_branch,
3385         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3386         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3387         Adjust operand numbers.
3388         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3389         Delete.
3390         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3391         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3392         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3393
3394 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3395
3396         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3397         causes spurious differences between trunk and cond-optab branch.
3398
3399 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3400
3401         PR target/37137
3402         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3403
3404 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3405
3406         * tree.c (iterative_hash_pointer): Delete.
3407         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3408         Hash UIDs and versions of SSA names.  Don't special-case built-in
3409         function declarations.
3410
3411 2009-05-11  Ian Lance Taylor  <iant@google.com>
3412
3413         PR bootstrap/40103
3414         * graphite.c: Force -Wc++-compat to only be a warning before
3415         #including "cloog/cloog.h".
3416
3417 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3418
3419         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3420         
3421 2009-05-11  Jan Hubicka  <jh@suse.cz>
3422
3423         * tree-ssa-loop-ivcanon.c: Include target.h
3424         (struct loop_size): new structure.
3425         (constant_after_peeling): New predicate.
3426         (tree_estimate_loop_size): New function.
3427         (estimated_unrolled_size): Rewrite for new estimates.
3428         (try_unroll_loop_completely): Use new estimates.
3429         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3430
3431 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3432
3433         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3434         libcpp interface change.
3435         (spu_macro_to_expand): Likewise.
3436
3437 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3438
3439         PR tree-optimization/40026
3440         * gimplify.c (gimplify_init_constructor): Change initial conditional
3441         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3442         optimize_compound_literals_in_ctor.
3443
3444 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3445
3446         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3447         New devices.
3448         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3449
3450 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3451
3452         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3453         HOST_WIDE_INT for gap.
3454
3455 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3456
3457         PR tree-optimization/40074
3458         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3459         account in group size and step comparison.
3460
3461 2009-05-11  Richard Guenther  <rguenther@suse.de>
3462
3463         * passes.c (init_optimization_passes): Strip now incorrect comment.
3464         (execute_function_todo): Do not set PROP_alias.
3465         * tree-pass.h (PROP_alias): Remove.
3466         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3467         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3468         * tree-nrv.c (pass_return_slot): Likewise.
3469         * tree-object-size.c (pass_object_sizes): Likewise.
3470         * tree-ssa-dom.c (pass_dominator): Likewise.
3471         (pass_phi_only_cprop): Likewise.
3472         * tree-ssa-dse.c (pass_dse): Likewise.
3473         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3474         (pass_cselim): Likewise.
3475         * tree-ssa-pre.c (pass_pre): Likewise.
3476         (pass_fre): Likewise.
3477         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3478         * tree-ssa-sink.c (pass_sink_code): Likewise.
3479         * tree-stdarg.c (pass_stdarg): Likewise.
3480         * tree-tailcall.c (pass_tail_calls): Likewise.
3481         * tree-vrp.c (pass_vrp): Likewise.
3482
3483 2009-05-10  Ian Lance Taylor  <iant@google.com>
3484
3485         * basic-block.h (enum profile_status): Break out of struct
3486         control_flow_graph.
3487         * cgraph.h (struct inline_summary): Break out of struct
3488         cgraph_local_info.
3489         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3490         of struct cgraph_order_sort.
3491         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3492         * cse.c (struct branch_path): Break out of struct
3493         cse_basic_block_data.
3494         * except.h (enum eh_region_type): Break out of struct eh_region.
3495         * gcc.c (enum add_del): Break out of struct modify_target.
3496         * genrecog.c (enum decision_type): Break out of struct decision_test.
3497         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3498         ggc_pch_data.
3499         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3500         * regmove.c (enum match_use): New enum, broken out of struct match.
3501         * sched-int.h (enum post_call_group): New enum, broken out of
3502         struct deps.
3503         (struct deps_reg): Break out of struct deps.
3504         * target.h (struct asm_int_op): Break out of struct gcc_target.
3505         * tree-eh.c (struct goto_queue_node): Break out of struct
3506         leh_tf_state.
3507         * tree-inline.h (enum copy_body_cge_which): Break out of
3508         copy_body_data.
3509         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3510
3511         * c-decl.c (in_struct, struct_types): New static variables.
3512         (pushtag): Add loc parameter.  Change all callers.
3513         (lookup_tag): Add ploc parameter.  Change all callers.
3514         (check_compound_literal_type): New function.
3515         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3516         -Wc++-compat, warn about struct/union/enum types defined within a
3517         struct or union.
3518         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3519         and loc parameters.  Change all callers.  Change error calls to
3520         error_at, using loc.  For a redefinition, if the location of the
3521         original definition is known, report it.  Set in_struct and
3522         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3523         (finish_struct): Add new parameters enclosing_in_struct and
3524         enclosing_struct_types.  Change all callers.  Set
3525         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3526         in the struct.  If in a struct, add this struct to struct_types.
3527         (start_enum): Add loc parameter.  Change all callers.  Use
3528         error_at for errors, using loc.  For a redefinition, if the
3529         location of the original definition is known, report it.  If in a
3530         struct, add this enum type to struct_types.  If -Wc++-compat warn
3531         if in sizeof, typeof, or alignof.
3532         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3533         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3534         (c_parser_enum_specifier): Get enum location for start_enum.
3535         (c_parser_struct_or_union_specifier): Get struct location for
3536         start_struct.  Save in_struct and struct_types status between
3537         start_struct and finish_struct.
3538         (c_parser_cast_expression): Get location of cast.
3539         (c_parser_alignof_expression): Get location of type.
3540         (c_parser_postfix_expression): Likewise.
3541         (c_parser_postfix_expression_after_paren_type): Add type_loc
3542         parameter.  Change all callers.  Call check_compound_literal_type.
3543         Use type_loc for error about variable size type.
3544         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3545         of an enum constant from an enum type defined in a struct or union.
3546         (c_cast_expr): Add loc parameter.  Change all callers.  If
3547         -Wc++-compat, warn about defining a type in a cast.
3548         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3549         (start_enum, start_struct, finish_struct): Update declarations.
3550         (parser_xref_tag, c_cast_expr): Update declarations.
3551         (check_compound_literal_type): Declare.
3552
3553 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3554
3555         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3556         for recent libcpp interface change.
3557         (rs6000_macro_to_expand): Likewise.
3558
3559 2009-05-10  Michael Matz  <matz@suse.de>
3560
3561         PR target/40031
3562         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3563         not at entry of function.
3564
3565 2009-05-10  Richard Guenther  <rguenther@suse.de>
3566
3567         PR tree-optimization/40081
3568         Revert
3569         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3570         using the main variant of the element type.  Do not fiddle with
3571         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3572
3573         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3574         structs with volatile fields.
3575
3576 2009-05-10  Jan Hubicka  <jh@suse.cz>
3577
3578         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3579         (estimate_move_cost): Assert that it does not get called for
3580         VOID_TYPE_P.
3581         (estimate_num_insns): Skip VOID types in argument handling.
3582         (optimize_inline_calls): Delete unreachable blocks and verify that
3583         callgraph is valid.
3584
3585 2009-05-10  Jan Hubicka  <jh@suse.cz>
3586
3587         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3588         * cgraph.c (cgraph_mark_address_taken_node): New function.
3589         (dump_cgraph_node): Dump new flag.
3590         * cgraph.h (struct cgraph_node): Add address_taken.
3591         (cgraph_mark_address_taken_node): New function.
3592         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3593         since new direct calls can be born.
3594
3595 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3596
3597         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3598         tok->val.node.node.
3599
3600 2009-05-10  Jan Hubicka  <jh@suse.cz>
3601
3602         PR middle-end/40084
3603         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3604         argument; rewrite.
3605         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3606         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3607         * tree-inline.c (copy_bb): Set frequency correctly.
3608         (fold_marked_statements): Update call to
3609         cgraph_update_edges_for_call_stmt.
3610
3611 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3612
3613         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3614         identifiers in diagnostics.
3615         * config/arm/arm.c (arm_handle_fndecl_attribute,
3616         arm_handle_isr_attribute): Likewise.
3617         * config/avr/avr.c (avr_handle_progmem_attribute,
3618         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3619         * config/bfin/bfin.c (handle_int_attribute,
3620         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3621         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3622         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3623         Likewise.
3624         * config/darwin.c (darwin_handle_kext_attribute,
3625         darwin_handle_weak_import_attribute): Likewise.
3626         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3627         h8300_handle_eightbit_data_attribute,
3628         h8300_handle_tiny_data_attribute): Likewise.
3629         * config/i386/i386.c (ix86_handle_cconv_attribute,
3630         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3631         * config/i386/winnt.c (ix86_handle_shared_attribute,
3632         ix86_handle_selectany_attribute): Likewise.
3633         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3634         * config/m32c/m32c.c (function_vector_handler): Likewise.
3635         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3636         m68hc11_handle_fntype_attribute): Likewise.
3637         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3638         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3639         * config/mips/mips.c (mips_insert_attributes,
3640         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3641         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3642         rs6000_handle_struct_attribute): Likewise.
3643         * config/sh/sh.c (sh_insert_attributes,
3644         sh_handle_resbank_handler_attribute,
3645         sh_handle_interrupt_handler_attribute,
3646         sh2a_handle_function_vector_handler_attribute,
3647         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3648         Likewise.
3649         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3650         * config/spu/spu.c (spu_handle_fndecl_attribute,
3651         spu_handle_vector_attribute): Likewise.
3652         * config/stormy16/stormy16.c
3653         (xstormy16_handle_interrupt_attribute): Likewise.
3654         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3655         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3656
3657 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3658
3659         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3660         (pp_translate_identifiers): New.
3661         (pp_identifier): Only conditionally translate identifier to locale
3662         character set.
3663         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3664         (pp_base_tree_identifier): Only conditionally translate identifier
3665         to locale character set.
3666         * c-pretty-print.c (M_): Define.
3667         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3668         fragments for conditional translation with M_.
3669         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3670         identifier translation.
3671
3672 2009-05-10  Richard Guenther  <rguenther@suse.de>
3673
3674         PR tree-optimization/40081
3675         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3676         using the main variant of the element type.  Do not fiddle with
3677         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3678
3679 2009-05-09  Jan Hubicka  <jh@suse.cz>
3680
3681         PR middle-end/40080
3682         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3683         indirect calls; verify cgraph afterwards.
3684
3685 2009-05-09  Jan Hubicka  <jh@suse.cz>
3686
3687         PR bootstrap/40082
3688         * ipa.c (update_inlined_to_pointer): New function.
3689         (cgraph_remove_unreachable_nodes): Use it.
3690
3691 2009-05-09  Jan Hubicka  <jh@suse.cz>
3692
3693         * tree-eh.c (struct leh_state): Remove prev_try.
3694         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3695         not track prev_try.
3696         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3697         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3698         remove_eh_handler_and_replace, foreach_reachable_handler,
3699         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3700         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3701         (gen_eh_region_cleanup): Update prototype.
3702
3703 2009-05-09  Jan Hubicka  <jh@suse.cz>
3704
3705         PR middle-end/40043
3706         * except.c (copy_eh_region): Always set prev_try.
3707         (redirect_eh_edge_to_label): Find outer try.
3708         (foreach_reachable_handler): When looking for prev try
3709         handle case where previous try is not going to be taken.
3710
3711 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3712
3713         PR tree-optimization/40049
3714         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3715         only vector/vector shifts, convert the type of the constant to the
3716         appropriate type to avoid building incorrect trees, which
3717         eventually have problems with garbage collection.
3718
3719 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3720
3721         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3722         -1 for complex floating-point types if honoring signed zeros.
3723
3724 2009-05-08  Jan Hubicka  <jh@suse.cz>
3725
3726         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3727         argument; handle correctly when profile is absent.
3728         (build_cgraph_edges): Update.
3729         (rebuild_cgraph_edges): Update.
3730         * cgraph.c: Do not include varray.h.
3731         (cgraph_set_call_stmt_including_clones): New function.
3732         (cgraph_create_edge_including_clones): Likewise
3733         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3734         (cgraph_update_edges_for_call_stmt): Handle clones.
3735         (cgraph_remove_node): Handle clone tree.
3736         (cgraph_remove_node_and_inline_clones): New function.
3737         (dump_cgraph_node): Dump clone tree.
3738         (cgraph_clone_node): Handle clone tree.
3739         (clone_function_name): Bring here from tree-inline.c.
3740         (cgraph_create_virtual_clone): New function.
3741         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3742         (cgraph_clone_info): New function.
3743         (strut cgraph_node): Add clone_info and new clone tree pointers.
3744         (cgraph_remove_node_and_inline_clones,
3745         cgraph_set_call_stmt_including_clones,
3746         cgraph_create_edge_including_clones,
3747         cgraph_create_virtual_clone): Declare.
3748         (cgraph_function_versioning): Use VEC argument.
3749         (compute_call_stmt_bb_frequency): Update prototype.
3750         (cgraph_materialize_all_clones): New function.
3751         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3752         (ipcp_create_replace_map): Update to VECtors.
3753         (ipcp_update_callgraph): Use virtual clones.
3754         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3755         (ipcp_update_profiling): Do not update local profiling.
3756         (ipcp_insert_stage): Use VECtors and virtual clones.
3757         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3758         (clone_of_p): New function.
3759         (cgraph_preserve_function_body_p): Use clone tree.
3760         (cgraph_optimize): Materialize clones.
3761         (cgraph_function_versioning): Update for VECtors.
3762         (save_inline_function_body): Use clone tree.
3763         (cgraph_materialize_clone): New function.
3764         (cgraph_materialize_all_clones): Likewise.
3765         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3766         * ipa.c: Include gimple.h.
3767         (cgraph_remove_unreachable_nodes): Use clone tree.
3768         * ipa-prop.c (ipa_note_param_call): Update call to
3769         compute_call_stmt_bb_frequencycall.
3770         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3771         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3772         (copy_bb): Handle updating of clone tree; add new edge when new call
3773         appears.
3774         (expand_call_inline): Be strict about every call having edge.
3775         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3776         (delete_unreachable_blocks_update_callgraph): New function.
3777         (tree_function_versioning): Use VECtors; always remove unreachable
3778         blocks and fold conditionals.
3779         * tree-inline.h: Do not include varray.h.
3780         (tree_function_versioning): Remove.
3781         * Makefile.in (GTFILES): Remove tree-inline.c
3782         * passes.c (do_per_function): Do only functions having body.
3783         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3784         tree.
3785
3786 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
3787             Andrew Morrow  <acm@google.com>
3788
3789         PR c/36892
3790         * c-common.c (c_common_attribute_table): Permit deprecated
3791         attribute to take an optional argument.
3792         (handle_deprecated_attribute): If the optional argument to
3793         __attribute__((deprecated)) is not a string ignore the attribute
3794         and emit a warning.
3795
3796         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3797         * c-typeck.c (build_component_ref): Likewise.
3798         (build_external_ref): Likewise.
3799
3800         * toplev.c (warn_deprecated_use): Add an attribute argument.
3801         Emit the message associated with __attribute__((deprecated)).
3802
3803         * toplev.h (warn_deprecated_use): Updated.
3804
3805         * doc/extend.texi: Document new optional parameter to
3806         __attribute__((deprecated))
3807
3808 2009-05-08  Michael Eager <eager@eagercon.com>
3809
3810         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3811         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3812
3813 2009-05-08  Richard Guenther  <rguenther@suse.de>
3814
3815         PR tree-optimization/40062
3816         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3817         Avoid exponential behavior.
3818
3819 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3820
3821         PR rtl-optimization/33928
3822         PR 26854
3823         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3824         process_uses, build_single_def_use_links): New.
3825         (update_df): Update use_def_ref.
3826         (forward_propagate_into): Use get_def_for_use instead of use-def
3827         chains.
3828         (fwprop_init): Call build_single_def_use_links and let it initialize
3829         dataflow.
3830         (fwprop_done): Free use_def_ref.
3831         (fwprop_addr): Eliminate duplicate call to df_set_flags.
3832         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
3833         df_rd_simulate_one_insn): New.
3834         (df_rd_bb_local_compute_process_def): Update head comment.
3835         (df_chain_create_bb): Use the new RD simulation functions.
3836         * df.h (df_rd_simulate_artificial_defs_at_top, 
3837         df_rd_simulate_one_insn): New.
3838         * opts.c (decode_options): Enable fwprop at -O1.
3839         * doc/invoke.texi (-fforward-propagate): Document this.
3840
3841 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3842
3843         PR c/24581
3844         * c-typeck.c (build_binary_op): Handle arithmetic between one real
3845         and one complex operand specially.
3846         * tree-complex.c (some_nonzerop): Do not identify a real value as
3847         zero if flag_signed_zeros.
3848
3849 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3850
3851         PR rtl-optimization/33928
3852         * loop-invariant.c (record_use): Fix && vs. || mishap.
3853
3854 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3855
3856         PR rtl-optimization/33928
3857         * loop-invariant.c (struct use): Add addr_use_p.
3858         (struct def): Add n_addr_uses.
3859         (struct invariant): Add cheap_address.
3860         (create_new_invariant): Set cheap_address.
3861         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
3862         (record_uses): Pass df_ref to record_use.
3863         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3864         used only as such.
3865
3866 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3867
3868         * config/sh/sh.c: Do not include c-pragma.h.
3869
3870 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3871
3872         * config/spu/spu.c: Remove include of c-common.h.
3873
3874 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
3875
3876         PR c/39037
3877         * c-common.h (mark_valid_location_for_stdc_pragma,
3878         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3879         clear_float_const_decimal64, float_const_decimal64_p): New.
3880         * c.opt (Wunsuffixed-float-constants): New.
3881         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3882         unsuffixed float constant, handle new warning.
3883         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3884         * c-decl.c (c_scope): New flag float_const_decimal64.
3885         (set_float_const_decimal64, clear_float_const_decimal64,
3886         float_const_decimal64_p): New.
3887         (push_scope): Set new flag.
3888         * c-parser.c (c_parser_translation_unit): Mark when it's valid
3889         to use STDC pragmas.
3890         (c_parser_external_declaration): Ditto.
3891         (c_parser_compound_statement_nostart): Ditto.
3892         * c-pragma.c (valid_location_for_stdc_pragma,
3893         mark_valid_location_for_stdc_pragma,
3894         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
3895         handle_pragma_float_const_decimal64): New.
3896         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
3897         * cp/semantics.c (valid_location_for_stdc_pragma_p,
3898         set_float_const_decimal64, clear_float_const_decimal64,
3899         float_const_decimal64_p): New dummy functions.
3900         * doc/extend.texi (Decimal Float): Remove statement that the
3901         pragma, and suffix for double constants, are not supported.
3902         * doc/invoke.texi (Warning Options): List new option.
3903         (-Wunsuffixed-float-constants): New.
3904
3905 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
3906
3907         * config/i386/i386.c: Do not include c-common.h.
3908
3909 2009-05-07  Mark Heffernan  <meheff@google.com>
3910
3911         * doc/invoke.texi (Debugging Options): Document change of debugging
3912         dump location.
3913         * opts.c (decode_options): Make dump_base_name relative to
3914         aux_base_name directory.
3915
3916 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
3917
3918         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
3919         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
3920
3921 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
3922
3923         * Makefile.in (install-plugin): Simplify a bit.
3924
3925 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
3926
3927         * Makefile.in (OBJS-common): Add regcprop.o.
3928         (regcprop.o): New.
3929         * timevar.def (TV_CPROP_REGISTERS): New.
3930         * regrename.c (regrename_optimize): Return 0.
3931         (rest_of_handle_regrename): Delete.
3932         (pass_rename_registers): Point to regrename_optimize.
3933         (struct value_data_entry, struct value_data, 
3934         kill_value_one_regno, kill_value_regno, kill_value,
3935         set_value_regno, init_value_data, kill_clobbered_value,
3936         kill_set_value, kill_autoinc_value, copy_value,
3937         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
3938         replace_oldest_value_reg, replace_oldest_value_addr,
3939         replace_oldest_value_mem, copyprop_hardreg_forward_1,
3940         debug_value_data, validate_value_data): Move...
3941         * regcprop.c: ... here.
3942         (rest_of_handle_cprop): Delete.
3943         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
3944
3945 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
3946
3947         PR middle-end/40057
3948         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
3949         GEN_INT for 1 << bitnum.
3950         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
3951         build_int_cst_type.
3952
3953 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
3954
3955         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
3956         Remove wrong description of "nand" operation.
3957
3958 2009-05-06  Richard Guenther  <rguenther@suse.de>
3959             Adam Nemet  <anemet@caviumnetworks.com>
3960
3961         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
3962         comment.  Add that if LHS is not a gimple register, then RHS1 has
3963         to be a single object (GIMPLE_SINGLE_RHS).
3964
3965 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
3966
3967         * expr.c (get_def_for_expr): Move it up in the file.
3968         (store_field): When expanding a bit-field store, look at the
3969         defining gimple stmt for the masking conversion.
3970
3971 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
3972
3973         PR middle-end/39986
3974         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
3975         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
3976         32-bit memcpy into long.
3977
3978 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
3979
3980         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
3981         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
3982         new_reg_loc_descr.
3983         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
3984         instead of appending DW_OP_deref*.
3985
3986 2009-05-06  Michael Matz  <matz@suse.de>
3987
3988         PR middle-end/40021
3989         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
3990         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
3991
3992 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
3993
3994         * Makefile.in (install-plugin): Fix srcdir handling.
3995
3996 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
3997
3998         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
3999         when processing for not_regs_needed bitmap.
4000         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
4001         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
4002         handling it for rhs. 
4003
4004 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4005
4006         * config/i386/i386.md (unnamed inc/dec peephole): Use
4007         optimize_insn_for_size_p instead of optimize_size.
4008         * config/i386/predicates.md (incdec_operand): Likewise.
4009         (aligned_operand): Likewise.
4010         * config/i386/sse.md (divv8sf3): Likewise.
4011         (sqrtv8sf2): Likewise.
4012
4013 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4014
4015         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
4016
4017         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
4018
4019 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4020
4021         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
4022         ssemodesuffixf2c with avxmodesuffixf2c.
4023
4024 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
4025
4026         PR c/40032
4027         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
4028
4029 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
4030
4031         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
4032         (struct tree_base): Adjust spacing for 8 bit boundaries.
4033         (struct tree_decl_common): Add decl_by_reference_flag bit.
4034         (DECL_BY_REFERENCE): Adjust.
4035         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
4036         print DECL_BY_REFERENCE bit.
4037         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
4038         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
4039         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
4040         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
4041         unconditionally.
4042
4043         PR middle-end/39666
4044         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
4045         range of the type, but default label is missing, add it with one
4046         of the existing labels instead of adding a new label for it.
4047
4048 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
4049
4050         * dwarf.h: Remove.
4051
4052 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
4053
4054         * Makefile.in (enable_plugin, plugin_includedir): New.
4055         (install): Depend on install-plugin.
4056         (PLUGIN_HEADERS): New.
4057         (install-plugin): New.
4058         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
4059
4060 2009-05-05  Richard Guenther  <rguenther@suse.de>
4061
4062         PR tree-optimization/40022
4063         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
4064         the only vuse.
4065         (phivn_valid_p): Fix tuplification error, simplify.
4066         (phiprop_insert_phi): Add dumps.
4067         (propagate_with_phi): Simplify.
4068
4069 2009-05-05  Richard Guenther  <rguenther@suse.de>
4070
4071         PR middle-end/40023
4072         * builtins.c (gimplify_va_arg_expr): Properly build the address.
4073
4074 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
4075
4076         * tree.h (strip_float_extensions): Remove duplicate declaration.
4077         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
4078         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
4079         block_ultimate_origin): Rearrange the declarations line to match the
4080         comment that indicates the .c file which the functions are defined.
4081         (dwarf2out_*, set_decl_rtl): Add comment.
4082         (get_base_address): Adjust comment.
4083         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
4084         declarations line and add comment.
4085         (is_builtin_name): Add blank after function name, for clarity.
4086
4087 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4088
4089         * attribs.c (decl_attributes): Use %qE for identifiers in
4090         diagnostics.
4091         * cgraphunit.c (verify_cgraph_node): Translate function names to
4092         locale character set in diagnostics.
4093         * coverage.c (get_coverage_counts): Use %qE for identifiers in
4094         diagnostics.
4095         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
4096         Document that functions are named in UTF-8.
4097         * expr.c (expand_expr_real_1): Translate function names to locale
4098         character set in diagnostics.
4099         * gimplify.c (omp_notice_variable, omp_is_private,
4100         gimplify_scan_omp_clauses): Use %qE for identifiers in
4101         diagnostics.
4102         * langhooks.c (lhd_print_error_function): Translate function names
4103         to locale character set.
4104         * langhooks.h (decl_printable_name): Document that return value is
4105         in internal character set.
4106         * stmt.c: Include pretty-print.h
4107         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
4108         diagnostics.
4109         (resolve_operand_name_1): Translate named operand name to locale
4110         character set.
4111         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
4112         diagnostics.
4113         * toplev.c (announce_function): Translate function names to locale
4114         character set.
4115         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
4116         (default_tree_printer): Use pp_identifier or translate identifiers
4117         to locale character set.  Mark "<anonymous>" for translation.
4118         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
4119         for identifiers in diagnostics.
4120         * tree.c (handle_dll_attribute): Use %qE for identifiers in
4121         diagnostics.
4122         * varasm.c (output_constructor): Use %qE for identifiers in
4123         diagnostics.
4124
4125 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
4126
4127         * configure.ac: use ` ` instead of $()
4128         * configure: Regenerate.
4129
4130 2009-05-05  Ben Elliston  <bje@au.ibm.com>
4131
4132         * config/pa/linux-atomic.c: Eliminate conditional include of
4133         errno.h on non-LP64 systems to simplify build requirements.
4134
4135 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4136
4137         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
4138         diagnostics.
4139         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
4140         and pass value to identifier_to_locale.
4141         (warn_variable_length_array): Make name a tree.
4142         (grokdeclarator): Separate diagnostic texts for named and unnamed
4143         declarators.  Use %qE for named declarators.
4144         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
4145         diagnostics.
4146         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
4147         identifiers in diagnostics.
4148         * c-typeck.c (push_member_name, start_init): Pass identifiers to
4149         identifier_to_locale.  Mark "anonymous" strings for translation.
4150
4151 2009-05-04  Michael Eager <eager@eagercon.com>
4152
4153         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
4154         address for DImode/DFmode only if double-precision FP regs.
4155
4156 2009-05-04  Michael Eager <eager@eagercon.com>
4157
4158         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
4159         TARGET_SINGLE_FLOAT check.
4160
4161 2009-05-04  Michael Eager <eager@eagercon.com>
4162
4163         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
4164
4165 2009-05-04  Michael Eager <eager@eagercon.com>
4166
4167         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
4168         * config/rs6000/t-xilinx: New
4169
4170 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
4171
4172         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
4173         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
4174         * gcc/explow.c (memory_address): Use target hook.
4175         * gcc/targhooks.c (default_legitimize_address): New.
4176         * gcc/targhooks.h (default_legitimize_address): New.
4177         * gcc/target.h (legitimize_address): New.
4178         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
4179         (TARGET_INITIALIZER): Include it.
4180         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
4181
4182         * config/bfin/bfin-protos.h (legitimize_address): Remove.
4183         * config/bfin/bfin.c (legitimize_address): Remove.
4184         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
4185         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
4186         Remove.
4187         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
4188         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
4189
4190         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
4191         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
4192         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
4193         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
4194         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
4195         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
4196         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
4197         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
4198         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
4199         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
4200         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
4201         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
4202         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
4203         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
4204         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
4205         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
4206         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
4207         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
4208         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
4209         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
4210         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
4211         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
4212         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
4213
4214         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
4215         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
4216         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
4217         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
4218         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
4219         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
4220         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
4221         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
4222         (thumb_legitimize_address): Delete.
4223         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
4224         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
4225         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
4226         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
4227         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
4228         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
4229         Delete.
4230         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
4231         Delete.
4232
4233         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
4234         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
4235         * config/m32r/m32r.c (m32r_legitimize_address): New.
4236         * config/m68k/m68k.c (m68k_legitimize_address): New.
4237         * config/score/score.c (score_legitimize_address): Standardize.
4238         * config/score/score3.c (score3_legitimize_address): Standardize.
4239         * config/score/score3.h (score3_legitimize_address): Adjust.
4240         * config/score/score7.c (score7_legitimize_address): Standardize.
4241         * config/score/score7.h (score7_legitimize_address): Adjust.
4242         * config/sh/sh.c (sh_legitimize_address): New.
4243         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
4244
4245         * gcc/config/s390/s390.c (legitimize_address): Rename to...
4246         (s390_legitimize_address): ... this.
4247         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
4248         (sparc_legitimize_address): ... this.
4249         * gcc/config/i386/i386.c (legitimize_address): Rename to...
4250         (ix86_legitimize_address): ... this.
4251         * gcc/config/avr/avr.c (legitimize_address): Rename to...
4252         (avr_legitimize_address): ... this.
4253         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
4254         (mn10300_legitimize_address): ... this.
4255         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
4256         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
4257         (alpha_expand_mov): Adjust call.
4258
4259         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
4260         * config/spu/spu.c (spu_legitimize_address): Likewise.
4261         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
4262         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
4263
4264 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4265
4266         * intl.c (locale_encoding, locale_utf8): New.
4267         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
4268         * intl.h (locale_encoding, locale_utf8): Declare.
4269         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
4270         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
4271         New.
4272         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
4273         argument.
4274         (pp_tree_identifier): Define to call pp_base_tree_identifier.
4275         (pp_base_tree_identifier): Declare as function.
4276         (identifier_to_locale): Declare.
4277         * Makefile.in (pretty-print.o): Update dependencies.
4278         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
4279
4280 2009-05-04  Richard Guenther  <rguenther@suse.de>
4281
4282         PR middle-end/40015
4283         * builtins.c (fold_builtin_memory_op): Do not decay to element
4284         type if the size matches the whole array.
4285
4286 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4287
4288         * expmed.c (synth_mult): When trying out a shift, pass the result
4289         of a signed shift.
4290
4291 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4292
4293         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
4294         (shiftsub1_cost): New.
4295         (init_expmed): Compute shiftsub1_cost.
4296         (synth_mult): Optimize multiplications by constants of the form
4297         -(2^^m-1) for some constant positive integer m.
4298
4299 2009-05-03  Richard Guenther  <rguenther@suse.de>
4300
4301         PR c/39983
4302         * c-typeck.c (array_to_pointer_conversion): Do not built
4303         ADDR_EXPRs of arrays of pointer-to-element type.
4304         * c-gimplify.c (c_gimplify_expr): Revert change fixing
4305         up wrong ADDR_EXPRs after-the-fact.
4306         * c-common.c (strict_aliasing_warning): Strip pointer
4307         conversions for obtaining the original type.
4308         * builtins.c (fold_builtin_memset): Handle array types.
4309         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
4310         and array types
4311
4312 2009-05-03  Richard Guenther  <rguenther@suse.de>
4313
4314         PR middle-end/23329
4315         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
4316         Do not lose casts from array types with unknown extent to array
4317         types with known extent.
4318         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
4319         alias set compatibility.
4320
4321 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
4322
4323         * flags.h (extra_warnings): Delete.
4324         * toplev.c (process_options): Handle Wuninitialized here.
4325         * opts.c (extra_warnings): Delete.
4326         (set_Wextra): Delete.
4327         (common_handle_option): -Wextra can be handled automatically.
4328         * c-opts.c (c_common_handle_option): Delete obsolete code.
4329         (c_common_post_options): Simplify comment.
4330         * common.opt (W): Add Var.
4331         (Wextra): Add Var.
4332         (Wuninitialized): Initialize to -1.
4333
4334 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
4335             Richard Guenther  <rguenther@suse.de>
4336
4337         * expr.c (get_def_for_expr): New function.
4338         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
4339         SSA rather than trees.
4340         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
4341         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
4342         
4343 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
4344
4345         * c-common.c (reswords): Add _Imaginary.
4346         * c-common.c (enum rid): Add RID_IMAGINARY.
4347
4348 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
4349
4350         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
4351         Patch by Richard Guenther.
4352
4353 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
4354
4355         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
4356         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
4357         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
4358         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
4359         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
4360         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
4361         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
4362         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
4363         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
4364         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
4365         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
4366         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
4367         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
4368         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
4369         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
4370         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
4371         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
4372         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
4373
4374 2009-05-02  Richard Guenther  <rguenther@suse.de>
4375
4376         PR tree-optimization/39940
4377         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
4378         doing so.
4379
4380 2009-05-02  Richard Guenther  <rguenther@suse.de>
4381
4382         PR middle-end/40001
4383         * tree-ssa.c (execute_update_addresses_taken): Properly check
4384         if we can mark a variable DECL_GIMPLE_REG_P.
4385         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
4386         back to the end of the function.
4387         (is_gimple_reg_type): Remove complex type special casing.
4388         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
4389         if not optimizing.
4390
4391 2009-05-02  Ben Elliston  <bje@au.ibm.com>
4392
4393         * doc/collect2.texi (Collect2): Document search path behaviour
4394         when configured with --with-ld.
4395
4396 2009-05-02  Jan Hubicka  <jh@suse.cz>
4397
4398         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
4399         parameter; update callers.
4400         (coalesce_cost_edge): EH edges are costier because they needs
4401         splitting even if not critical and even more costier when there are
4402         multiple EH predecestors.
4403
4404 2009-05-02  Jan Hubicka  <jh@suse.cz>
4405
4406         * except.c (remove_eh_handler_and_replace): Handle updating after
4407         removing TRY blocks.
4408
4409 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
4410
4411         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
4412
4413 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
4414
4415         * varasm.c: Do not include c-pragma.h.
4416         * attribs.c: Do not incude c-common.h.
4417
4418 2009-05-01  Michael Matz  <matz@suse.de>
4419
4420         * calls.c (initialize_argument_information): Handle SSA names like
4421         decls with a non MEM_P DECL_RTL.
4422
4423 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4424
4425         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
4426         * ipa-utils.c: Likewise.
4427         * ipa-type-escape.c: Likewise.
4428         * cgraphunit.c Do not include c-common.h.
4429         * ipa-pure-const.c: Likewise.
4430         * tree-if-conv.c: Likewise.
4431         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
4432         * ipa-struct-reorg.c: Likewise.
4433         * tree-nomudflap.c: Likewise.
4434         * tree-ssa-structalias.c: Likewise.
4435
4436 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4437
4438         * store-motion.c: Many cleanups to make this pass a first-class
4439         citizen instead of an appendix to gcse load motion.  Add TODO list
4440         to make this pass faster/cleaner/better.
4441
4442         (struct ls_expr): Post gcse.c-split cleanups.
4443         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
4444         "stores" field to "avail_stores".
4445         (pre_ldst_mems): Rename to store_motion_mems.
4446         (pre_ldst_table): Rename to store_motion_mems_table.
4447         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
4448         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
4449         (ldst_entry): Rename to st_expr_entry, update users.
4450         (free_ldst_entry): Rename to free_st_expr_entry, update users.
4451         (free_ldst_mems): Rename to free_store_motion_mems, update users.
4452         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
4453         update caller.
4454         (first_ls_expr): Rename to first_st_expr, update users.
4455         (next_ls_expr): Rename to next_st_expr, update users.
4456         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
4457         fields properly for store motion instead of names inherited from load
4458         motion in gcse.c.
4459         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
4460         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
4461         are done with it.
4462
4463         (ae_kill): Rename to st_kill, update users.
4464         (ae_gen): Rename to st_avloc, update users.
4465         (transp): Rename to st_transp, update users.
4466         (pre_insert_map): Rename to st_insert_map, update users.
4467         (pre_delete_map): Rename to st_delete_map, update users.
4468         (insert_store, build_store_vectors, free_store_memory,
4469         one_store_motion_pass): Update for abovementioned changes.
4470
4471         (gcse_subst_count, gcse_create_count): Remove.
4472         (one_store_motion_pass): New statistics counters "n_stores_deleted"
4473         and "n_stores_created", local variables.
4474
4475         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
4476         use for_each_rtx.
4477
4478         (regvec, compute_store_table_current_insn): Remove.
4479         (reg_set_info, reg_clear_last_set): Remove.
4480         (compute_store_table): Use DF caches instead of local dataflow
4481         solvers.
4482
4483 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
4484
4485         * c-objc-common.c (c_tree_printer): Print identifiers with
4486         pp_identifier, not pp_string.  Mark "({anonymous})" for
4487         translation.
4488         * c-pretty-print.c (pp_c_ws_string): New.
4489         (pp_c_cv_qualifier, pp_c_type_specifier,
4490         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
4491         pp_c_storage_class_specifier, pp_c_function_specifier,
4492         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
4493         pp_c_primary_expression, pp_c_postfix_expression,
4494         pp_c_unary_expression, pp_c_shift_expression,
4495         pp_c_relational_expression, pp_c_equality_expression,
4496         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
4497         use pp_string and pp_c_ws_string in place of pp_identifier and
4498         pp_c_identifier for non-identifiers.  Mark English strings for
4499         translation.
4500         * c-pretty-print.h (pp_c_ws_string): Declare.
4501
4502 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
4503             Roland McGrath <roland@redhat.com>
4504
4505         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
4506         (ENABLE_LD_BUILDID): New configuration option.
4507         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
4508         (LINK_BUILDID_SPEC): New macro.
4509         (init_spec): If defined, prepend it between LINK_EH_SPEC and
4510         link_spec.
4511         * doc/install.texi: Document --enable-linker-build-id option.
4512         * configure: Rebuild.
4513         * config.in: Rebuild.
4514
4515 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
4516
4517         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
4518         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
4519         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
4520         MIPS_GP_SAVE_AREA_SIZE.
4521         * config/mips/mips.c (struct mips_frame_info): Update comment
4522         before arg_pointer_offset and hard_frame_pointer_offset.
4523         (mips_compute_frame_info): Update diagram before function: to
4524         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
4525         indicate the position of frame_pointer_rtx with -fstack-protector and
4526         to show args_size.  Don't allocate cprestore area for leaf functions
4527         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
4528         cprestore_size.
4529         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
4530
4531 2009-04-30  Michael Matz  <matz@suse.de>
4532
4533         PR tree-optimization/39955
4534         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
4535
4536 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
4537
4538         * ira.c (setup_cover_and_important_classes):  Use safe macro
4539         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
4540         directly.
4541         * genpreds.c (write_tm_preds_h):  Output suitable definition of
4542         REG_CLASS_FOR_CONSTRAINT.
4543
4544 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4545
4546         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
4547         instead of an int.
4548         * bitmap.c (bitmap_descriptor): Likewise.
4549         * ggc-common.c (loc_descriptor): Likewise.
4550         * varray.c (varray_descriptor): Likewise.
4551         * vec.c (vec_descriptor): Likewise.
4552
4553 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
4554
4555         * Makefile.in (dce.o): Add $(EXCEPT_H).
4556         * dce.c: Include except.h and delete redundant vector definitions.
4557         (deletable_insn_p): Return false for non-call insns that can throw
4558         if DF is running.
4559
4560 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
4561
4562         * gcse.c (ae_gen): Remove.
4563         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
4564         and make non-static function to make it available in store-motion.c.
4565         Update call sites with search-and-replace.
4566         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
4567         extract_mentioned_regs, extract_mentioned_regs_helper,
4568         find_moveable_store, compute_store_table, load_kills_store, find_loads,
4569         store_killed_in_insn, store_killed_after, store_killed_before,
4570         build_store_vectors, insert_insn_start_basic_block, insert-store,
4571         remove_reachable_equiv_notes, replace_store_insn, delete_store,
4572         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
4573         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
4574         * store-motion.c: ...new file.  Also copy data structures from gcse.c
4575         and clean up to remove parts not used by store motion.
4576         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
4577         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
4578
4579 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4580
4581         PR target/38571
4582         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
4583         when optimizing for size.
4584
4585 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
4586
4587         * gcse.c (gcse_constant_p): Fix typo in last change.
4588
4589 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4590
4591         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
4592
4593 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
4594
4595         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
4596
4597 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
4598
4599         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
4600         CONST_HIGH_PART result.
4601
4602 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
4603
4604         * config/avr/avr.c (initial_elimination_offset): Rename to
4605         avr_initial_elimination_offset.
4606         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
4607         change return type to bool.
4608         (avr_can_eliminate): New function.
4609         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
4610         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
4611         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
4612         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
4613         avr_initial_elimination_offset.
4614         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
4615         (avr_initial_elimination_offset): Define.
4616
4617 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
4618             Steven Bosscher  <steven@gcc.gnu.org>
4619
4620         PR rtl-optimization/39938
4621         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
4622         * cfgrtl.c: Include insn-attr.h.
4623         (rest_of_pass_free_cfg): New function.
4624         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
4625         * resource.c (init_resource_info): Remove call to df_analyze.
4626
4627 2009-04-29  Richard Guenther  <rguenther@suse.de>
4628
4629         PR target/39943
4630         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
4631         allow conversion to signed integers.
4632
4633 2009-04-29  Richard Guenther  <rguenther@suse.de>
4634
4635         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
4636         shifts of floating point vectors if the shift amount is
4637         a constant multiple of the element size.
4638
4639 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4640             Michael Matz  <matz@suse.de>
4641
4642         PR middle-end/39927
4643         PR bootstrap/39929
4644         * tree-outof-ssa.c (emit_partition_copy): New function.
4645         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
4646         insert_part_to_rtx_on_edge): Perform the partition base var
4647         copy using emit_partition_copy.
4648         (insert_value_copy_on_edge): Convert constants to the right mode.
4649         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
4650         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
4651
4652 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4653
4654         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
4655         scan backwards to try to find a constant to initialize it.
4656
4657         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
4658         insn before the loop_end instruction, don't look past labels.
4659
4660 2009-04-29  Richard Guenther  <rguenther@suse.de>
4661
4662         PR middle-end/39937
4663         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4664         loose type conversions.
4665         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
4666         stmts only if there are no uses of its definition.
4667
4668 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4669
4670         * config/bfin/bfin.h (splitting_loops): Declare.
4671         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
4672         Reorder bit definitions to be ascending.
4673         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
4674         * config/bfin/bfin.c (splitting_loops): New variable.
4675         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
4676         (struct loop_info): Remove members INIT and LOOP_INIT.
4677         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
4678         the LSETUP sequence.  Allow LC to be loaded from any register, but
4679         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
4680         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
4681         set to 1.
4682         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
4683         of reload_completed.
4684
4685         From Jie Zhang:
4686         * config/bfin/bfin.md (movsi_insn): Refine constraints.
4687
4688 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
4689
4690         * Makefile.in (PLUGIN_VERSION_H): New.
4691         (OBJS-common): Remove plugin-version.o.
4692         (plugin.o): Depend on (PLUGIN_VERSION_H).
4693         (plugin-version.o): Remove.
4694         * configure: Regenerate
4695         * configure.ac: Create plugin-version.h.
4696         * gcc-plugin.h (plugin_gcc_version): Remove.
4697         (plugin_default_version_check): Change signature.
4698         * plugin-version.c: Remove.
4699         * plugin.c: Include plugin-version.h.
4700         (str_plugin_gcc_version_name): Remove.
4701         (try_init_one_plugin): Pass gcc version to plugin_init.
4702         (plugin_default_version_check): Both gcc and plugin versions are now
4703         arguments.
4704
4705 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4706         
4707         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
4708         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
4709         Remove special case testing for last insn of inner loops. Don't fail
4710         if the loop ends with a jump, emit an extra nop instead.
4711
4712         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
4713         DREGS rather than comparing directly.  Remove code that tries to
4714         account for latencies.
4715
4716 2009-04-29  Richard Guenther  <rguenther@suse.de>
4717
4718         PR tree-optimization/39941
4719         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
4720         eliminating an indirect call.
4721
4722 2009-04-29  Richard Guenther  <rguenther@suse.de>
4723
4724         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
4725         parameter.  Allow invariants as base if !require_lvalue.
4726         (verify_gimple_assign_single): Adjust.
4727
4728 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4729
4730         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
4731         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
4732         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
4733         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
4734         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
4735         a VEC_SELECT.
4736         * config/bfin/bfin.c (bfin_expand_builtin,
4737         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
4738
4739 2009-04-28  Richard Guenther  <rguenther@suse.de>
4740
4741         * tree-vect-loop.c (get_initial_def_for_induction): Use
4742         correct types for pointer increment.
4743
4744 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4745
4746         * toplev.c (print_version): Update GMP version string calculation.
4747
4748 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
4749
4750         PR rtl-optimization/39938
4751         * resource.c (init_resource_info): Add call to df_analyze.
4752
4753 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4754
4755         * config/alpha/alpha.md (usegp): Cast the result of
4756         alpha_find_lo_sum_using_gp to enum attr_usegp.
4757         * config/alpha/alpha.c (override_options): Remove end-of-structure
4758         marker element from cpu_table.  Use array size of cpu_table to handle
4759         -mcpu and -mtune options.
4760         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
4761
4762 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
4763
4764         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
4765         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
4766         tune_32 and tune_64.
4767         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
4768         support on PowerPC.
4769         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
4770         * config/rs6000/option-defaults.h: ... here.  New file.
4771         (OPT_64, OPT_32): Define.
4772         (MASK_64BIT): Define to 0 if not already defined.
4773         (OPT_ARCH64, OPT_ARCH32): Define.
4774         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
4775         and tune_64.
4776
4777 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4778
4779         * config/arm/arm.c (arm_override_options): Emit error on using
4780         fpa with AAPCS.
4781
4782 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4783
4784         PR rtl-optimization/39914
4785         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
4786         registers for allocnos created from user-defined variables only
4787         when not optimizing.
4788
4789 2009-04-28  Richard Guenther  <rguenther@suse.de>
4790
4791         PR middle-end/39937
4792         * fold-const.c (fold_binary): Use distribute_real_division only
4793         on float types.
4794
4795 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
4796
4797         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
4798         add hpux-stdint.h to tm_file.
4799         (hppa[12]*-*-hpux11*): Ditto.
4800         (ia64*-*-hpux*): Ditto.
4801         * config/hpux-stdint.h: New.
4802         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
4803         __STDC_EXT__ for all compiles.
4804         * config/pa/pa-hpux.h: Ditto.
4805         * config/pa/pa-hpux10.h: Ditto.
4806         * config/pa/pa-hpux11.h: Ditto.
4807
4808 2009-04-28  Catherine Moore  <clm@codesourcery.com>
4809
4810         * debug.h (set_name): Add comment.
4811
4812 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
4813
4814         PR target/39929
4815         * config/darwin.c (machopic_gen_offset): Check
4816         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
4817         * config/arm/arm.c (require_pic_register): Likewise.
4818
4819 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
4820
4821         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
4822         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
4823         m32c_promote_prototypes): Delete.
4824
4825 2009-04-28  Michael Matz  <matz@suse.de>
4826
4827         PR middle-end/39922
4828         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
4829         constants.
4830
4831 2009-04-28  Richard Guenther  <rguenther@suse.de>
4832
4833         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
4834
4835 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4836
4837         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
4838         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
4839         * config/arm/arm-tune.md: Regenerate.
4840
4841 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
4842
4843         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
4844         block if there are complex incoming edges.
4845         (sel_merge_blocks): Remove useless assert.
4846         (sel_redirect_edge_and_branch): Check that edge was redirected.
4847         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
4848         (sel_find_rgns): Delete declaration.
4849         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
4850         the region when it is not a preheader.
4851
4852 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4853
4854         PR c/39323
4855         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
4856
4857 2009-04-28  Richard Guenther  <rguenther@suse.de>
4858
4859         * tree.h (SSA_NAME_VALUE): Remove.
4860         (struct tree_ssa_name): Remove value_handle member.
4861         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
4862         array for jump threading.
4863         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
4864         SSA_NAME_VALUEs.
4865         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
4866         * tree-flow.h (threadedge_initialize_values): Declare.
4867         (threadedge_finalize_values): Likewise.
4868         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
4869         (SSA_NAME_VALUE): Define.
4870         (threadedge_initialize_values): New function.
4871         (threadedge_finalize_values): Likewise.
4872         * tree-ssa-dom.c (ssa_name_values): New global variable.
4873         (SSA_NAME_VALUE): Define.
4874         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
4875
4876 2009-04-28  Ira Rosen  <irar@il.ibm.com>
4877
4878         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
4879         Use REPORT_VECTORIZED_LOCATIONS instead 
4880         REPORT_VECTORIZED_LOOPS.
4881         * tree-vectorizer.c (vect_verbosity_level): Make static.
4882         (vect_loop_location): Rename to vect_location.
4883         (vect_set_verbosity_level): Update comment.
4884         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
4885         and vect_location.
4886         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
4887         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
4888         instead REPORT_UNVECTORIZED_LOOPS.
4889         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
4890         and vect_loop_def to vect_external_def and vect_internal_def.
4891         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
4892         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
4893         REPORT_UNVECTORIZED_LOCATIONS.
4894         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
4895         and vect_used_in_loop and to vect_unused_in_scope and 
4896         vect_used_in_scope.
4897         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
4898         (vect_verbosity_level): Remove declaration.
4899         (vect_analyze_operations): Likewise.
4900         (vect_analyze_stmt): Declare.
4901         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
4902         REPORT_UNVECTORIZED_LOCATIONS.
4903         (vect_get_loop_niters): Fix indentation.
4904         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
4905         (vect_analyze_loop_operations): New function.
4906         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
4907         vect_analyze_operations.
4908         (vect_is_simple_reduction): Use new names.
4909         (vectorizable_live_operation, vect_transform_loop): Likewise.
4910         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
4911         to specify whether the data references can be a part of interleaving
4912         chain.
4913         (vect_analyze_data_ref_dependence): Use new names.
4914         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
4915         (vect_create_addr_base_for_vector_ref): Remove redundant code.
4916         * tree-vect-patterns.c (widened_name_p): Use new names.
4917         (vect_recog_dot_prod_pattern): Likewise.
4918         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
4919         (process_use, vect_mark_stmts_to_be_vectorized, 
4920         vect_model_simple_cost, vect_model_store_cost,
4921         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
4922         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
4923         vectorizable_operation, vectorizable_type_demotion,
4924         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
4925         vectorizable_condition): Likewise.
4926         (vect_analyze_operations): Split into vect_analyze_loop_operations
4927         and ...
4928         (vect_analyze_stmt): ... new function.
4929         (new_stmt_vec_info): Use new names.
4930         (vect_is_simple_use): Use new names and fix comment.
4931         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
4932         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
4933
4934 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4935
4936         PR target/39911
4937         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
4938         and integer modes for x87 operands.  Do not ICE for unsupported size,
4939         generate error instead.  Generate error for unsupported operand types.
4940         ['z']: Do not handle HImode memory operands specially.  Warning
4941         for floating-point operands.  Fallthru to 'Z' for unsupported operand
4942         types.  Do not ICE for unsupported size, generate error instead.
4943         (output_387_binary_op): Use %Z to output operands.
4944         (output_fp_compare): Ditto.
4945         (output_387_reg_move): Ditto.
4946
4947 2009-04-28  Ben Elliston  <bje@au.ibm.com>
4948
4949         PR c++/35652
4950         Revert:
4951
4952         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4953
4954         * builtins.c (c_strlen): Do not warn here.
4955         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
4956         * c-common.c (pointer_int_sum): Take an explicit location.
4957         Warn about offsets out of bounds.
4958         * c-common.h (pointer_int_sum): Adjust declaration.
4959
4960 2009-04-27  Ian Lance Taylor  <iant@google.com>
4961
4962         * collect2.c (is_ctor_dtor): Change type of ret field in struct
4963         names to symkind.
4964         * dce.c (run_fast_df_dce): Change type of old_flags to int.
4965         * df-core.c (df_set_flags): Change return type to int.  Change
4966         type of old_flags to int.
4967         (df_clear_flags): Likewise.
4968         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
4969         (df_get_conditional_uses): Likewise.
4970         * df.h (df_set_flags, df_clear_flags): Update declarations.
4971         * dwarf2out.c (struct indirect_string_node): Change type of form
4972         field to enum dwarf_form.
4973         (AT_string_form): Change return type to enum dwarf_form.
4974         * fixed-value.c (fixed_compare): Add cast to enum type.
4975         * fwprop.c (update_df): Change 0 to VOIDmode.
4976         * gensupport.c: Change 0 to UNKNOWN.
4977         * gimple.h (gimple_cond_code): Add cast to enum type.
4978         * haifa-sched.c (reemit_notes): Add cast to enum type.
4979         * hooks.c (hook_int_void_no_regs): Remove function.
4980         * hooks.h (hook_int_void_no_regs): Remove declaration.
4981         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
4982         * predict.c (combine_predictions_for_insn): Add casts to enum type.
4983         * real.c (real_arithmetic): Add cast to enum type.
4984         (real_compare): Likewise.
4985         * target.h (struct gcc_target): Change return type of
4986         branch_target_register_class to enum reg_class.
4987         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
4988         default_branch_target_register_class.
4989         * targhooks.c (default_branch_target_register_class): New function.
4990         * targhooks.h (default_branch_target_register_class): Declare.
4991         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
4992         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
4993         cast to int.
4994         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
4995         ERROR_MARK.
4996         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
4997         vect_uninitialized_def.  Change 0 to ERROR_MARK.
4998         * tree-vect-stmts.c (supportable_widening_operation): Don't
4999         initialize icode1 and icode2.
5000         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
5001         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
5002         and to STD_C89.
5003         (cmn_err_flag_specs): Change 0 to STD_C89.
5004         (cmn_err_char_table): Likewise.
5005         * config/arm/arm.c (get_arm_condition_code): Change type of code
5006         to enum arm_cond_code.
5007         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
5008         (IWMMXT_BUILTIN2): Likewise.
5009         (neon_builtin_type_bits): Don't define typedef.
5010         (neon_builtin_datum): Change type of bits field to int.
5011         (arm_expand_neon_args): Add cast to enum type.
5012         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
5013         TLS_MODEL_NONE.
5014         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
5015         casts to enum type.
5016         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
5017         MIPS_FP_COND_f.
5018         * config/mips/mips.md (jal_macro): Return enum constant.
5019         (single_insn): Likewise.
5020         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
5021         CODE_FOR_nothing.
5022         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
5023         casts to enum type.
5024         * config/s390/s390.c (s390_tune_flags): Change type to int.
5025         (s390_arch_flags): Likewise.
5026         (s390_handle_arch_option): Change flags field of struct pta to int.
5027         * config/s390/s390.h (s390_tune_flags): Update declaration.
5028         (s390_arch_flags): Likewise.
5029         * config/sh/sh.c (prepare_move_operands): Compare
5030         tls_symbolic_operand result with enum constant.
5031         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
5032         (sh_expand_prologue): Add cast to enum type.
5033         (sh_expand_epilogue): Likewise.
5034         (tls_symbolic_operand): Change return type to enum tls_model.
5035         (fpscr_set_from_mem): Add cast to enum type.
5036         (legitimize_pic_address): Compare tls_symbolic_operand result with
5037         enum constant.
5038         (sh_target_reg_class): Change return type to enum reg_class.
5039         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
5040         PROCESSOR_xxx.
5041         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
5042         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
5043         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
5044         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
5045         (delayed_branch, tls_call_delay): Likewise.
5046         (eligible_for_sibcall_delay): Likewise.
5047         (eligible_for_return_delay): Likewise. 
5048         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
5049         (spu_expand_builtin_1): Likewise.
5050
5051         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
5052         for all types of conversions.
5053         (output_init_element): Issue -Wc++-compat warning if needed when
5054         initializing a bitfield with enum type.
5055         * c-parser.c (c_parser_expression): Set original_type to
5056         original_type of right hand operand of comman operator.
5057
5058 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5059
5060         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
5061         grammar nits.
5062         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
5063         * doc/cpp.texi (Standard Predefined Macros)
5064         (Implementation-defined behavior): Likewise.
5065         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
5066         * doc/gimple.texi (GIMPLE Exception Handling)
5067         (@code{GIMPLE_ASSIGN}): Likewise.
5068         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
5069         * doc/invoke.texi (Warning Options, Optimize Options)
5070         (AVR Options, Darwin Options): Likewise.
5071         (Optimize Options): Reformulate -fwhole-program description.
5072         * doc/loop.texi (Lambda): Likewise.
5073         * doc/md.texi (Output Template, Define Constraints)
5074         (Standard Names, Insn Splitting): Likewise.
5075         * doc/options.texi (Option properties): Likewise.
5076         * doc/passes.texi (Tree-SSA passes): Likewise.
5077         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
5078         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
5079         (File Names and DBX): Likewise.
5080         * doc/trouble.texi (Incompatibilities): Likewise.
5081
5082 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5083
5084         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
5085         instruction is correct.
5086
5087 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5088
5089         Allow non-constant arguments to conversion intrinsics.
5090         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
5091         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
5092         * spu.c (print_operand): Handle 'v' and 'w'.
5093         (exp2_immediate_p, spu_gen_exp2): Define.
5094         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
5095         spu_convtf_1): Update parameter descriptions.
5096         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
5097         * constraints.md ('v', 'w'): New.
5098         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
5099         Remove.
5100         (i2f, I2F): New define_mode_attr.
5101         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
5102         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
5103         fixuns_truncv4sfv4si2):  Update to use mode attribute.
5104         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
5105         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
5106         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
5107         patterns for combine.
5108
5109 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
5110
5111         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
5112         (cprop, hoist, pre, store_motion): New debug counters.
5113         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
5114         is not an RTL pass anymore.
5115         (pass_profiling): Remove extern decl for pass removed in 2005.
5116         (pass_gcse, pass_jump_bypass): Remove.
5117         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
5118         to 0 for clean state.
5119         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
5120         * cse.c (gate_handle_cse_after_global_opts,
5121         rest_of_handle_cse_after_global_opts): New functions.
5122         (pass_cse_after_global_opts): New pass, does local CSE.
5123         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
5124         (TV_CPROP): New timevar.
5125         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
5126         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
5127         (gcse_main, recompute_all_luids): Remove.
5128         (compute_hash_table_work): Call max_reg_num instead of reading
5129         max_gcse_regno.
5130         (cprop_jump): Don't set run_jump_opt_after_gcse.
5131         (constprop_register): Always allow to alter jumps.
5132         (cprop_insn): Likewise.
5133         (do_local_cprop): Likewise.
5134         (local_cprop_pass): Likewise.  Return non-zero if something changed.
5135         (cprop): Remove function, fold interesting bits into one_cprop_pass.
5136         (find_implicit_sets): Add note about missed optimization opportunity.
5137         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
5138         pass_rtl_cprop execute function.
5139         Don't bother tracking the pass number, each pass gets its own dumpfile
5140         now anyway.
5141         Always allow to alter jumpsand bypass jumps.
5142         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
5143         will just find no suitable set.
5144         (pre_edge_insert): Fix dumping, this function is for PRE only.
5145         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
5146         pass_rtl_pre execute function.
5147         (hoist_code): Return non-zero if something changed.  Keep track of
5148         substitutions and insertions for statistics gathering similar to PRE.
5149         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
5150         called from the pass_rtl_hoist execute function.  Show pass statistics.
5151         (compute_store_table): Use max_reg_num directly instead of using the
5152         formerly global max_gcse_regno.
5153         (build_store_vectors): Likewise.
5154         (replace_store_insn): Fix dumping.
5155         (store_motion): Rename to ...
5156         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
5157         pass, called from the pass_rtl_store_motion execute function.  Keep
5158         track of substitutions and insertions for statistics gathering similar
5159         to PRE.
5160         (bypass_jumps): Remove, fold interesting bits into ...
5161         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
5162         from the pass_rtl_cprop execute function.
5163         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
5164         pass_jump_bypass): Remove.
5165         (gate_handle_gcse, rest_of_handle_gcse): Remove.
5166         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
5167         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
5168         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
5169         (gate_rtl_store_motion, execute_rtl_store_motion,
5170         pass_rtl_store_motion): New.
5171         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
5172         make it clear that -fcse-skip-blocks is a no-op for backward compat.
5173         * passes.c (init_optimization_passes): Remove pass_gcse and
5174         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
5175         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
5176         instead of pass_jump_bypass.
5177
5178 2009-04-27  Richard Guenther  <rguenther@suse.de>
5179
5180         PR middle-end/39928
5181         * gimplify.c (gimplify_expr): If we are required to create
5182         a temporary make sure it ends up as register.
5183
5184 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
5185
5186         PR target/39903
5187         * config/i386/i386.c (construct_container): Don't call
5188         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
5189         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
5190
5191 2009-04-27  Michael Matz  <matz@suse.de>
5192
5193         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
5194         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
5195         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
5196         (dump_replaceable_exprs): Take a bitmap.
5197         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
5198         array.
5199         (expand_gimple_basic_block): Likewise.
5200         * tree-ssa-ter.c (struct temp_expr_table_d): Make
5201         replaceable_expressions member a bitmap.
5202         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
5203         (mark_replaceable): Likewise.
5204         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
5205         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
5206
5207 2009-04-27  Richard Guenther  <rguenther@suse.de>
5208
5209         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
5210         (verify_stmts): Dispatch to gimple/type verification code.
5211         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
5212         issue with call argument types.
5213
5214 2009-04-27  Michael Matz  <matz@suse.de>
5215
5216         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
5217         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
5218         to above.
5219
5220 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
5221             Eric Botcazou  <ebotcazou@adacore.com>
5222
5223         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
5224         a label's basic block.
5225         (mark_target_live_regs): Tidy and rework obsolete comments.
5226         Change back DF problem to LIVE.  If a label starts a basic block,
5227         assume that all registers that used to be live then still are.
5228         (init_resource_info): If a label starts a basic block, set its
5229         BLOCK_FOR_INSN accordingly.
5230         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
5231
5232 2009-04-27  Richard Guenther  <rguenther@suse.de>
5233
5234         * tree-flow-inline.h (function_ann): Remove.
5235         (get_function_ann): Likewise.
5236         * tree-dfa.c (create_function_ann): Remove.
5237         * tree-flow.h (struct static_var_ann_d): Remove.
5238         (struct function_ann_d): Likewise.
5239         (union tree_ann_d): Remove fdecl member.
5240         (function_ann_t): Remove.
5241         (function_ann, get_function_ann, create_function_ann): Remove
5242         declarations.
5243
5244 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
5245
5246         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
5247
5248 2009-04-27  Jan Hubicka  <jh@suse.cz>
5249
5250         * ipa-pure-const.c (struct funct_state_d): New fields
5251         state_previously_known, looping_previously_known; remove
5252         state_set_in_source.
5253         (analyze_function): Use new fields.
5254         (propagate): Avoid assumption that state_set_in_source imply
5255         nonlooping.
5256
5257         * tree-ssa-loop-niter.c (finite_loop_p): New function.
5258         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
5259         * cfgloop.h (finite_loop_p): Declare.
5260
5261 2009-04-26  Michael Matz  <matz@suse.de>
5262
5263         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
5264
5265 2009-04-26  Michael Matz  <matz@suse.de>
5266
5267         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
5268         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
5269         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
5270         pass_mark_used_blocks): Remove.
5271         * tree-optimize.c (pass_free_datastructures,
5272         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
5273         * passes.c (init_optimization_passes): Don't call
5274         pass_mark_used_blocks, remove dead code.
5275
5276 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
5277
5278         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
5279         * tree-ssa-live.h (register_ssa_partition): Likewise.
5280
5281 2009-04-26  Michael Matz  <matz@suse.de>
5282
5283         Expand from SSA.
5284         * builtins.c (fold_builtin_next_arg): Handle SSA names.
5285         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
5286         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
5287         SSA names. 
5288         (compare_pairs): Swap cost comparison.
5289         (coalesce_ssa_name): Don't use change_partition_var.
5290         * tree-nrv.c (struct nrv_data): Add modified member.
5291         (finalize_nrv_r): Set it.
5292         (tree_nrv): Use it to update statements.
5293         (pass_nrv): Require PROP_ssa.
5294         * tree-mudflap.c (mf_decl_cache_locals,
5295         mf_build_check_statement_for): Use make_rename_temp.
5296         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
5297         * alias.c (find_base_decl): Handle SSA names.
5298         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
5299         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
5300         * rtl.h (set_reg_attrs_for_parm): Declare.
5301         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
5302         to "optimized", remove unused locals at finish.
5303         (execute_free_datastructures): Make global, call
5304         delete_tree_cfg_annotations.
5305         (execute_free_cfg_annotations): Don't call
5306         delete_tree_cfg_annotations.
5307
5308         * ssaexpand.h: New file.
5309         * expr.c (toplevel): Include ssaexpand.h.
5310         (expand_assignment): Handle SSA names the same as register variables.
5311         (expand_expr_real_1): Expand SSA names.
5312         * cfgexpand.c (toplevel): Include ssaexpand.h.
5313         (SA): New global variable.
5314         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
5315         (SSAVAR): New macro.
5316         (set_rtl): New helper function.
5317         (add_stack_var): Deal with SSA names, use set_rtl.
5318         (expand_one_stack_var_at): Likewise.
5319         (expand_one_stack_var): Deal with SSA names.
5320         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
5321         before unique numbers.
5322         (expand_stack_vars): Use set_rtl.
5323         (expand_one_var): Accept SSA names, add asserts for them, feed them
5324         to above subroutines.
5325         (expand_used_vars): Expand all partitions (without default defs),
5326         then only the local decls (ignoring those expanded already).
5327         (expand_gimple_cond): Remove edges when jumpif() expands an
5328         unconditional jump.
5329         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
5330         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
5331         SSA name.
5332         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
5333         members of SA; deal with PARM_DECL partitions here; expand
5334         all PHI nodes, free tree datastructures and SA.  Commit instructions
5335         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
5336         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
5337         info and statements at start, collect garbage at finish.
5338         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
5339         (VAR_ANN_PARTITION) Remove.
5340         (change_partition_var): Don't declare.
5341         (partition_to_var): Always return SSA names.
5342         (var_to_partition): Only accept SSA names.
5343         (register_ssa_partition): Only check argument.
5344         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
5345         member.
5346         (delete_var_map): Don't free it.
5347         (var_union): Only accept SSA names, simplify.
5348         (partition_view_init): Mark only useful SSA names as used.
5349         (partition_view_fini): Only deal with SSA names.
5350         (change_partition_var): Remove.
5351         (dump_var_map): Use ssa_name instead of partition_to_var member.
5352         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
5353         basic blocks.
5354         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
5355         (struct _elim_graph): New member const_dests; nodes member vector of
5356         ints.
5357         (set_location_for_edge): New static helper.
5358         (create_temp): Remove.
5359         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
5360         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
5361         (new_elim_graph): Allocate const_dests member.
5362         (clean_elim_graph): Truncate const_dests member.
5363         (delete_elim_graph): Free const_dests member.
5364         (elim_graph_size): Adapt to new type of nodes member.
5365         (elim_graph_add_node): Likewise.
5366         (eliminate_name): Likewise.
5367         (eliminate_build): Don't take basic block argument, deal only with
5368         partition numbers, not variables.
5369         (get_temp_reg): New static helper.
5370         (elim_create): Use it, deal with RTL temporaries instead of trees.
5371         (eliminate_phi): Adjust all calls to new signature.
5372         (assign_vars, replace_use_variable, replace_def_variable): Remove.
5373         (rewrite_trees): Only do checking.
5374         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
5375         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
5376         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
5377         contains_tree_r, MAX_STMTS_IN_LATCH,
5378         process_single_block_loop_latch, analyze_edges_for_bb,
5379         perform_edge_inserts): Remove.
5380         (expand_phi_nodes): New global function.
5381         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
5382         functions, initialize new parameter, remember partitions having a
5383         default def.
5384         (finish_out_of_ssa): New global function.
5385         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
5386         don't reset in_ssa_p here, don't disable TER when mudflap.
5387         (pass_del_ssa): Remove.
5388         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
5389         partition members.
5390         (execute_free_datastructures): Declare.
5391         * Makefile.in (SSAEXPAND_H): New variable.
5392         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
5393         * basic-block.h (commit_one_edge_insertion): Declare.
5394         * passes.c (init_optimization_passes): Move pass_nrv and
5395         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
5396         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
5397         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
5398         (redirect_branch_edge): Deal with super block when expanding, split
5399         out jump patching itself into ...
5400         (patch_jump_insn): ... here, new static helper.
5401
5402 2009-04-26  Michael Matz  <matz@suse.de>
5403
5404         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
5405         beyond num_ssa_names.
5406         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
5407         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
5408
5409 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5410
5411         PR inline-asm/39543
5412         * fwprop.c (forward_propagate_asm): New function.
5413         (forward_propagate_and_simplify): Propagate also into __asm, if it
5414         doesn't increase the number of referenced registers.
5415
5416         PR c/39889
5417         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
5418
5419 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5420
5421         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
5422         note_nonlocal_vla_type for nonlocal VLAs.
5423         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
5424         contains_remapped_vars, remap_vla_decls): New functions.
5425         (convert_nonlocal_reference_stmt): If not optimizing, call
5426         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
5427         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
5428         if it wasn't found in var_map.
5429         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
5430         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
5431         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
5432         declare_vars.
5433         * gimplify.c (nonlocal_vlas): New variable.
5434         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
5435         referenced VLAs.
5436         (gimplify_body): Create and destroy nonlocal_vlas.
5437
5438         * dwarf2out.c (loc_descr_plus_const): New function.
5439         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
5440         mem_loc_descriptor, loc_descriptor_from_tree_1,
5441         descr_info_loc, gen_variable_die): Use it.
5442
5443         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
5444         !TREE_STATIC VAR_DECLs.
5445         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
5446         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
5447         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
5448         DECL_BY_REFERENCE is valid.
5449         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
5450         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
5451         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
5452         Copy DECL_BY_REFERENCE.
5453         (struct nesting_copy_body_data): New type.
5454         (nesting_copy_decl): New function.
5455         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
5456         if they have variable length.
5457
5458 2009-04-26  Michael Matz  <matz@suse.de>
5459
5460         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
5461         mark new temporaries for renaming.
5462
5463 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5464
5465         PR c/39581
5466         * c-decl.c (global_bindings_p): Return negative value.
5467         (c_variable_size): New.  Based on variable_size from
5468         stor-layout.c.
5469         (grokdeclarator): Call c_variable_size not variable_size.
5470
5471 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
5472
5473         * config/i386/i386.c (print_operand) ['z']: Fix typo.
5474
5475 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
5476
5477         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
5478         Redefine it to just use mingw/include.
5479         (ASM_SPEC): Rules for -m32 and -m64.
5480         (LINK_SPEC): Use Likewise.
5481         (SPEC_32): New define.
5482         (SPEC_64): Likewise.
5483         (SUB_LINK_SPEC): Likewise.
5484         (MULTILIB_DEFAULTS): New define.
5485         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
5486         Add multilib options.
5487         (MULTILIB_DIRNAMES): Likewise.
5488         (MULTILIB_OSDIRNAMES): Likewise.
5489         (LIBGCC): Likewise.
5490         (INSTALL_LIBGCC): Likewise.
5491
5492 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5493
5494         PR c/39556
5495         * c-tree.h (enum c_inline_static_type): New.
5496         (record_inline_static): Declare.
5497         * c-decl.c (struct c_inline_static, c_inline_statics,
5498         record_inline_static, check_inline_statics): New.
5499         (pop_file_scope): Call check_inline_statics.
5500         (start_decl): Call record_inline_static instead of pedwarning
5501         directly for static in inline function.
5502         * c-typeck.c (build_external_ref): Call record_inline_static
5503         instead of pedwarning directly for static referenced in inline
5504         function.
5505
5506 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
5507
5508         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
5509         not new but only being rescanned.
5510         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
5511         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
5512         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
5513         record_set_info, compute_set, grealloc): Remove.
5514         (recompute_all_luids): New function.
5515         (gcse_main): Don't compute sets, and don't do related memory
5516         allocations/free-ing.  If something changed before the end of the
5517         pass, update LUIDs using recompute_all_luids.
5518         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
5519         (free_gcse_mem): Don't free it either.
5520         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
5521         Use the df insn LUIDs.
5522         (load_killed_in_block): Likewise.
5523         (compute_hash_table_work): Don't compute reg_set_in_block.
5524         (compute_transp): Use DF_REG_DEF_CHAINs.
5525         (local_cprop_pass): Don't use compute_sets and related functions.
5526         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
5527         Use get_max_uid() instead of max_cuid.
5528         (insert_insn_end_basic_block, pre_insert_copy_insn,
5529         update_ld_motion_stores): Don't try to
5530         keep reg_set tables up to date.
5531         (pre_insert_copies): Use df insn LUIDs.
5532         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
5533         (reg_set_info): Don't use extra bitmap argument.
5534         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
5535         information to compute regs_set_in_block.
5536         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
5537         (bypass_jumps): Don't use compute_sets and friends.
5538
5539 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5540
5541         PR testsuite/39710
5542         * opts.c (undocumented_msg): Do not leave blank even with
5543         ENABLE_CHECKING.
5544
5545 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5546
5547         * c-decl.c (build_enumerator): Allow values folding to integer
5548         constants but not integer constant expressions with a pedwarn if
5549         pedantic.
5550
5551 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5552
5553         PR c/39582
5554         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
5555         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
5556         type is an integer constant.
5557
5558 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5559
5560         PR target/39897
5561         * config/i386/i386.c (print_operand) ['z']: Revert handling of
5562         HImode operands.
5563
5564 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5565
5566         PR c/39564
5567         * c-decl.c (grokdeclarator): Diagnose declarations of functions
5568         with variably modified return type and no storage class
5569         specifiers, except for the case of nested functions.  Distinguish
5570         extern declarations of functions with variably modified return
5571         types from those of objects with variably modified types.
5572
5573 2009-04-25  Jan Hubicka  <jh@suse.cz>
5574
5575         * tree.c (list_equal_p): New function.
5576         * tree.h (list_equal_p): Declare.
5577         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5578         basic_block_def, basic_block, const_basic_block): New.
5579         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
5580         (redirect_eh_edge): New function.
5581         (make_eh_edge_update_phi): EH edges are not abnormal.
5582         * except.c: Include tree-flow.h.
5583         (list_match): New function.
5584         (eh_region_replaceable_by_p): New function.
5585         (replace_region): New function.
5586         (hash_type_list): New function.
5587         (hash_eh_region): New function.
5588         (eh_regions_equal_p): New function.
5589         (merge_peers): New function.
5590         (remove_unreachable_regions): Verify EH tree when checking;
5591         merge peers.
5592         (copy_eh_region_1): New function.
5593         (copy_eh_region): New function.
5594         (push_reachable_handler): New function.
5595         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
5596         regions without label but with live RESX.
5597         * except.h (redirect_eh_edge_to_label): New.
5598         * tree-flow.h (redirect_eh_edge): New.
5599         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5600         basic_block_def, basic_block, const_basic_block): Remove.
5601         * Makefile.in (except.o): Add dependency on tree-flow.h
5602         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
5603         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
5604         Remove.
5605
5606 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
5607
5608         PR bootstrap/39645
5609         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
5610         on the destination of memcpy.
5611
5612 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
5613
5614         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
5615         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
5616         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
5617
5618 2009-04-25  Jan Hubicka  <jh@suse.cz>
5619
5620         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
5621         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
5622         to be reached by different label than left.
5623         (update_eh_edges): Update comment; remove edge_to_remove if possible
5624         and return true if suceeded.
5625         (cleanup_empty_eh): Accept sharing map; handle shared regions.
5626         (cleanup_eh): Compute sharing map.
5627         * except.c (remove_eh_handler_and_replace): Add argument if we should
5628         update regions.
5629         (remove_unreachable_regions): Update for label sharing.
5630         (label_to_region_map): Likewise.
5631         (get_next_region_sharing_label): New function.
5632         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
5633         prev_try pointers.
5634         (remove_eh_handler): Update.
5635         (remove_eh_region_and_replace_by_outer_of): New function.
5636         * except.h (struct eh_region): Add next_region_sharing_label.
5637         (remove_eh_region_and_replace_by_outer_of,
5638         get_next_region_sharing_label): Declare.
5639         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
5640
5641 2009-04-25  Jan Hubicka  <jh@suse.cz>
5642
5643         * tree-cfg.c (split_critical_edges): Split also edges where we can't
5644         insert code even if they are not critical.
5645
5646 2009-04-25  Jan Hubicka  <jh@suse.cz>
5647
5648         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5649         (gimple_can_remove_branch_p): EH edges won't remove branch by
5650         redirection.
5651         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
5652         updating of non-abnormal EH edges.
5653         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5654         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
5655         (split_critical_edges): Split also edges where emitting code on them
5656         will lead to splitting later.
5657
5658 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5659             H.J. Lu  <hongjiu.lu@intel.com>
5660
5661         PR target/39590
5662         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
5663         the configured assembler supports fildq and fistpq mnemonics.
5664         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
5665         * configure: Regenerated.
5666         * config.in: Ditto.
5667
5668         * config/i386/i386.c (print_operand): Handle 'Z'.
5669         ['z']: Remove handling of special fild/fist suffixes.
5670         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
5671         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
5672         suffix of fild insn.
5673         (*floatsi<mode>2_vector_mixed): Ditto.
5674         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
5675         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
5676         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
5677         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
5678         * config/i386/gas.h (GAS_MNEMONICS): Remove.
5679
5680 2009-04-25  Ben Elliston  <bje@au.ibm.com>
5681  
5682         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
5683         the source of a set operation.
5684
5685 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
5686
5687         * target.h (struct gcc_target): Add case_values_threshold field.
5688         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
5689         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
5690         * targhooks.c (default_case_values_threshold): New function.
5691         * targhooks.h (default_case_values_threshold): Declare function.
5692         * stmt.c (expand_case): Use case_values_threshold target hook.
5693         * expr.h (case_values_threshold): Remove declartation.
5694         * expr.c (case_values_threshold): Remove function.
5695         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
5696
5697         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
5698         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5699         (avr_case_values_threshold): Declare as static.
5700         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
5701
5702         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
5703         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5704         (mn10300_case_values_threshold): New function.
5705
5706 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5707
5708         * ira.c (setup_cover_and_important_classes): Add enum cast.
5709
5710 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
5711
5712         * genpreds.c (write_enum_constraint_num): Output definition of
5713         CONSTRAINT_NUM_DEFINED_P macro.
5714         * ira.c (setup_cover_and_important_classes): Use
5715         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
5716         
5717 2009-04-24  DJ Delorie  <dj@redhat.com>
5718
5719         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
5720         __SH2A_SINGLE_ONLY__ also.
5721
5722 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
5723
5724         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
5725         (movdf_internal): Ditto.
5726         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
5727         SFmode and DFmode constants.
5728         (ia64_print_operand): Add 'G' format for printing
5729         floating point constants.
5730
5731 2009-04-24  Richard Guenther  <rguenther@suse.de>
5732
5733         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
5734         from unsigned additions.
5735
5736 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
5737
5738         * c-typeck.c (set_init_index): Allow array designators that are
5739         not integer constant expressions with a pedwarn if pedantic.
5740
5741 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5742
5743         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
5744         zero if no overlap in nonzero bits between the operands.
5745
5746 2009-04-24  Ian Lance Taylor  <iant@google.com>
5747
5748         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
5749         (record_dead_and_set_regs): Likewise.
5750         * df.h (struct df_mw_hardreg): Change flags field to int.
5751         (struct df_base_ref): Likewise.
5752         (struct df): Change changeable_flags field to int.
5753         * df-scan.c (df_defs_record): Change clobber_flags to int.
5754         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
5755         constants rather than #define macros.
5756         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
5757         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
5758         (enum dwarf_calling_convention): Likewise.
5759         (enum dwarf_line_number_x_ops): Likewise.
5760         (enum dwarf_call_frame_info): Likewise.
5761         (enum dwarf_source_language): Likewise.
5762         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
5763         (add_calling_convention_attribute): Likewise.
5764         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
5765         (combine_comparisons): Change compcode to int.  Add cast to enum type.
5766         * genrecog.c (maybe_both_true_2): Change c to int.
5767         (write_switch): Likewise.  Add cast to enum type.
5768         * gimplify.c (gimplify_omp_for): Handle return values from
5769         gimplify_expr using MIN rather than bitwise or.
5770         (gimplify_expr): Add cast to enum type.
5771         * ipa-prop.c (update_jump_functions_after_inlining): Change
5772         IPA_BOTTOM to IPA_JF_UNKNOWN.
5773         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
5774         Add casts to enum type.
5775         (setup_cover_and_important_classes): Change cl to int.  Add casts
5776         to enum type.
5777         (setup_class_translate): Change cl and mode to int.
5778         (ira_init_once): Change mode to int.
5779         (free_register_move_costs): Likewise.
5780         (setup_prohibited_mode_move_regs): Add casts to enum type.
5781         * langhooks.c (add_builtin_function_common): Rework assertion that
5782         value fits bitfield.
5783         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
5784         * omega.c (omega_do_elimination): Avoid math on enum types.
5785         * optabs.c (expand_vec_shift_expr): Remove casts to int.
5786         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
5787         int local to handle integral_argment value.
5788         * regmove.c (try_auto_increment): Change PUT_MODE to
5789         PUT_REG_NOTE_KIND.
5790         * reload.c (push_secondary_reload): Add casts to enum type.
5791         (secondary_reload_class, find_valid_class): Likewise.
5792         * reload1.c (emit_input_reload_insns): Likewise.
5793         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
5794         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
5795         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
5796         constant.
5797         * tree.c (build_common_builtin_nodes): Add casts to enum type.
5798         * tree-complex.c (complex_lattice_t): Typedef to int rather than
5799         enum type.
5800         (expand_complex_libcall): Add casts to enum type.
5801         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
5802         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
5803         with ERROR_MARK, not NUM_TREE_CODES.
5804         (vect_create_epilog_for_reduction): Likewise.
5805         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
5806         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
5807         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
5808         enum machine_mode.
5809         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
5810         vect_unused_in_loop.  Change 0 to loop_vect.
5811         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
5812         * var-tracking.c (get_init_value): Change return type to enum
5813         var_init_status.
5814         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
5815         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
5816         arm_fp_model.
5817         (arm_override_options): Add casts to enum type.
5818         (arm_emit_tls_decoration): Likewise.
5819         * config/i386/i386.c (ix86_function_specific_restore): Add casts
5820         to enum type.
5821         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
5822         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
5823         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
5824         enum type.
5825         * config/s390/s390.c (code_for_builtin_64): Change to array of
5826         enum insn_code.
5827         (code_for_builtin_31): Likewise.
5828         (s390_expand_builtin): Change code_for_builtin to enum insn_code
5829         const *.
5830         * config/sparc/sparc.c (sparc_override_options): Change value
5831         field in struct code_model to enum cmodel.  In initializer change
5832         0 to NULL and add cast to enum type.
5833
5834         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
5835         Change all callers.  Issue a -Wc++-compat warning using
5836         lhs_origtype if necessary.
5837         (convert_for_assignment): Issue -Wc++-compat warnings about
5838         invalid conversions to enum type on assignment.
5839         * c-common.h (build_modify_expr): Update declaration.
5840
5841 2009-04-24  Nick Clifton  <nickc@redhat.com>
5842
5843         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
5844         (function_arg_advance): Likewise.
5845         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
5846         5th alternative.
5847
5848 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5849
5850         * config/s390/constraints.md ('I', 'J'): Fix condition.
5851
5852 2009-04-24  Diego Novillo  <dnovillo@google.com>
5853
5854         * gengtype-parse.c (parse_error): Add newline after message.
5855
5856 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5857
5858         * config/i386/sse.md (avxmodesuffixs): Removed.
5859         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
5860         (*avx_pinsr<ssevecsize>): This.
5861
5862 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5863
5864         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
5865         follow chains of regs with a single definition, and allow expressions
5866         that are function_invariant_p.
5867         (simple_rhs_p): Allow expressions that are function_invariant_p.
5868
5869 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
5870
5871         PR middle-end/39867
5872         * fold-const.c (fold_cond_expr_with_comparison): When folding
5873         > and >= to MAX, make sure the MAX uses the same type as the
5874         comparison's operands.
5875
5876 2009-04-24  Nick Clifton  <nickc@redhat.com>
5877
5878         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
5879         addressing for DImode accesses.
5880         (frv_print_operand_address): Handle PLUS case.
5881         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
5882
5883 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
5884
5885         PR rtl-optimization/39794
5886         * alias.c (canon_true_dependence): Add x_addr argument.
5887         * rtl.h (canon_true_dependence): Adjust prototype.
5888         * cse.c (check_dependence): Adjust canon_true_dependence callers.
5889         * cselib.c (cselib_invalidate_mem): Likewise.
5890         * gcse.c (compute_transp): Likewise.
5891         * dse.c (scan_reads_nospill): Likewise.
5892         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
5893         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
5894         canon_base_addr of the group, plus optional offset.
5895         (struct group_info): Rename canon_base_mem to
5896         canon_base_addr.
5897         (get_group_info): Set canon_base_addr to canon_rtx of base, not
5898         canon_rtx of base_mem.
5899
5900 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
5901
5902         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
5903         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
5904
5905 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5906
5907         * config/spu/spu-builtins.h: Delete file.
5908
5909         * config/spu/spu.h (enum spu_builtin_type): Move here from
5910         spu-builtins.h.
5911         (struct spu_builtin_description): Likewise.  Add GTY marker.
5912         Do not use enum spu_function_code or enum insn_code.
5913         (spu_builtins): Add extern declaration.
5914
5915         * config/spu/spu.c: Do not include "spu-builtins.h".
5916         (enum spu_function_code, enum spu_builtin_type_index,
5917         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
5918         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
5919         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
5920         unsigned_V2DI_type_node): Move here from spu-builtins.h.
5921         (spu_builtin_types): Make static.  Add GTY marker.
5922         (spu_builtins): Add extern declaration with GTY marker.
5923         Include "gt-spu.h".
5924
5925         * config/spu/spu-c.c: Do not include "spu-builtins.h".
5926         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
5927         Check programmatically whether all parameters are scalar.
5928
5929         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
5930
5931 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
5932
5933         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
5934         assignment from the constructor either if the target is volatile.
5935
5936 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
5937
5938         * config/arm/arm.md (insv): Do not share operands[0].
5939
5940 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
5941
5942         * config/vxlib-tls.c (active_tls_threads): Delete.
5943         (delete_hook_installed): New.
5944         (tls_delete_hook): Don't delete the delete hook.
5945         (tls_destructor): Delete it here.
5946         (__gthread_set_specific): Adjust installing the delete hook.
5947         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
5948         __gthread_leave_tsd_dtor_context.
5949
5950 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
5951
5952         * c-format.c (gcc_tdiag_char_table): Add support for %E.
5953
5954 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
5955
5956         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
5957         enum type.
5958         (alpha_rtx_costs): Ditto.
5959         (emit_unlikely_jump): Use add_reg_note.
5960         (emit_frame_store_1): Ditto.
5961         (alpha_expand_prologue): Ditto.
5962         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5963         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
5964
5965 2009-04-23  Nick Clifton  <nickc@redhat.com>
5966
5967         * config/v850/v850.md (epilogue): Remove suppressed code.
5968         (return): Rename to return_simple and remove test of frame size.
5969         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
5970         to gen_return_simple.
5971
5972 2009-04-22  Jing Yu  <jingyu@google.com>
5973
5974         PR testsuite/39781
5975         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
5976
5977 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5978
5979         PR C/31499
5980         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
5981         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
5982         value is a VECTOR_CST, the element type is the element type of the
5983         vector.
5984
5985 2009-04-22  DJ Delorie  <dj@redhat.com>
5986
5987         * config/m32c/m32c.h: Update GTY annotations to new syntax.
5988
5989 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
5990
5991         * alias.c (find_base_term): Move around LO_SUM case, so that
5992         CONST falls through into PLUS/MINUS handling.
5993
5994         PR c/39855
5995         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
5996         into 0, use omit_one_operand.
5997
5998 2009-04-23  Ben Elliston  <bje@au.ibm.com>
5999
6000         * config/rs6000/linux-unwind.h (get_regs): Remove type
6001         puns. Change the type of `pc' to an array of unsigned ints and
6002         update all users.  Constify frame24.
6003
6004 2009-04-22  DJ Delorie  <dj@redhat.com>
6005
6006         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
6007         declarations before code.
6008         (current_function_special_page_vector): Likewise.
6009         (m32c_expand_insv): Silence a warning.
6010
6011 2009-04-21  Taras Glek  <tglek@mozilla.com>
6012
6013         * alias.c: Update GTY annotations to new syntax.
6014         * basic-block.h: Likewise.
6015         * bitmap.h: Likewise.
6016         * c-common.h: Likewise.
6017         * c-decl.c: Likewise.
6018         * c-parser.c: Likewise.
6019         * c-pragma.c: Likewise.
6020         * c-tree.h: Likewise.
6021         * cfgloop.h: Likewise.
6022         * cgraph.h: Likewise.
6023         * config/alpha/alpha.c: Likewise.
6024         * config/arm/arm.h: Likewise.
6025         * config/avr/avr.h: Likewise.
6026         * config/bfin/bfin.c: Likewise.
6027         * config/cris/cris.c: Likewise.
6028         * config/darwin.c: Likewise.
6029         * config/frv/frv.c: Likewise.
6030         * config/i386/i386.c: Likewise.
6031         * config/i386/i386.h: Likewise.
6032         * config/i386/winnt.c: Likewise.
6033         * config/ia64/ia64.h: Likewise.
6034         * config/iq2000/iq2000.c: Likewise.
6035         * config/mips/mips.c: Likewise.
6036         * config/mmix/mmix.h: Likewise.
6037         * config/pa/pa.c: Likewise.
6038         * config/pa/pa.h: Likewise.
6039         * config/rs6000/rs6000.c: Likewise.
6040         * config/s390/s390.c: Likewise.
6041         * config/sparc/sparc.c: Likewise.
6042         * config/xtensa/xtensa.c: Likewise.
6043         * cselib.h: Likewise.
6044         * dbxout.c: Likewise.
6045         * dwarf2out.c: Likewise.
6046         * except.c: Likewise.
6047         * except.h: Likewise.
6048         * fixed-value.h: Likewise.
6049         * function.c: Likewise.
6050         * function.h: Likewise.
6051         * gimple.h: Likewise.
6052         * integrate.c: Likewise.
6053         * optabs.c: Likewise.
6054         * output.h: Likewise.
6055         * real.h: Likewise.
6056         * rtl.h: Likewise.
6057         * stringpool.c: Likewise.
6058         * tree-data-ref.c: Likewise.
6059         * tree-flow.h: Likewise.
6060         * tree-scalar-evolution.c: Likewise.
6061         * tree-ssa-address.c: Likewise.
6062         * tree-ssa-alias.h: Likewise.
6063         * tree-ssa-operands.h: Likewise.
6064         * tree.c: Likewise.
6065         * tree.h: Likewise.
6066         * varasm.c: Likewise.
6067         * varray.h: Likewise.
6068         * vec.h: Likewise.
6069         * coretypes.h: Do not define GTY macro if it is already defined.
6070         * doc/gty.texi: Update GTY documentation to new syntax.
6071         * gengtype-lex.l: Enforce attribute-like syntax for GTY
6072         annotations on structs.
6073         * gengtype-parse.c: Likewise.
6074
6075 2009-04-22  Mark Heffernan  <meheff@google.com>
6076
6077         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
6078
6079 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
6080
6081         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
6082         where appropriate.
6083
6084 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
6085
6086         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
6087         the same as a PLUS without a shift.  Increase the cost of a
6088         CONST_INT in MULT.
6089
6090 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6091
6092         * Makefile.in: Update dependencies.
6093         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
6094         * errors.h: Remove bogus comment about compatibility.
6095         (warning): Update declaration.
6096         * genautomata.c: Update all calls to warning.
6097         * gimple.c: Do not include errors.h. Include toplev.h.
6098         * tree-ssa-structalias.c: Do not include errors.h.
6099         * omega.c: Likewise.
6100         * tree-ssa-reassoc.c: Likewise.
6101         * config/spu/spu-c.c: Likewise.
6102         * config/spu/t-spu-elf: Update dependencies.
6103
6104 2009-04-22  Richard Guenther  <rguenther@suse.de>
6105
6106         PR tree-optimization/39824
6107         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
6108         make sure the types are compatible.
6109
6110 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6111
6112         PR c++/14875
6113         * c-common.c (c_parse_error): Take a token_flags parameter.
6114         Use token_type for the token type instead.
6115         Pass token_flags to cpp_type2name.
6116         * c-common.h (c_parse_error): Update declaration.
6117         * c-parser.c (c_parser_error): Pass 0 as token flags.
6118
6119 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
6120
6121         PR rtl-optimization/39580
6122         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
6123         
6124 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6125
6126         * function.c (expand_function_end): Do not emit a jump to the "naked"
6127         return label for fall-through returns.
6128         * except.c (sjlj_emit_function_exit): Always place the call to the
6129         unregister function at the location installed by expand_function_end.
6130
6131 2009-04-22  Richard Guenther  <rguenther@suse.de>
6132
6133         PR tree-optimization/39845
6134         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
6135         (gen_inbound_check): Likewise.
6136
6137 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
6138
6139         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
6140         padding for PPC.
6141         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
6142         * config/vxlib.c (__gthread_once): Add race guard for PPC.
6143
6144 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6145
6146         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
6147         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
6148         shift counts to avoid out-of-bounds array accesses.
6149
6150 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6151
6152         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
6153         (Pmode): Move above.
6154
6155 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
6156
6157         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
6158         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
6159         GET_CODE macro.  Use IN_RANGE macro where appropriate.
6160         * config/alpha/alpha.h: Ditto.
6161         * config/alpha/alpha.md: Ditto.
6162         * config/alpha/constraints.md: Ditto.
6163         * config/alpha/predicates.md: Ditto.
6164         
6165 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6166
6167         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
6168         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6169         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6170         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6171         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6172         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6173         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6174         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6175         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6176         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6177         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6178         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6179         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6180         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6181         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6182         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6183         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6184         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6185         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6186         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6187         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6188         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6189         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6190         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6191         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6192         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6193         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6194
6195 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6196
6197         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
6198         references from comments.
6199         * cfgbuild.c: (count_basic_blocks): Delete.
6200         (find_basic_blocks_1): Delete.
6201         (find_basic_blocks): Delete.
6202         * except.c (finish_eh_generation): Make static.  Move comment from
6203         except.h here.  Remove find_basic_blocks references from comments.
6204         * except.h (finish_eh_generation): Delete.
6205         * basic-block.h (find_basic_blocks): Delete.
6206         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
6207
6208 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6209
6210         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
6211         (sdbout_parms):  Likewise.
6212
6213 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6214
6215         * config/sh/sh.c (prepare_cbranch_operands): Use
6216         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
6217         (expand_cbranchdi4): Likewise.
6218         (from_compare): Add cast to enum type.
6219         (expand_cbranchsi4): Use add_reg_note.
6220         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
6221         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
6222         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
6223         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6224         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
6225         instead of CODE_FOR_nothing.
6226         (cbranchdi4): Likewise.  Fix the order of arguments for
6227         gen_rtx_fmt_ee.
6228         (push_fpscr): Use add_reg_note.
6229         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
6230         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
6231         
6232 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
6233
6234         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
6235         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6236         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6237         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
6238         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
6239         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
6240         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
6241         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
6242         config/alpha/x-vms, config/arc/t-arc,
6243         config/arm/README-interworking, config/arm/arm-c.c,
6244         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
6245         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
6246         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
6247         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
6248         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
6249         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
6250         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
6251         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
6252         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
6253         config/cris/t-elfmulti, config/crx/t-crx,
6254         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
6255         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
6256         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
6257         config/h8300/t-h8300, config/i386/athlon.md,
6258         config/i386/darwin-libgcc.10.4.ver,
6259         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
6260         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
6261         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
6262         config/i386/t-linux64, config/i386/t-nwld,
6263         config/i386/t-rtems-i386, config/i386/t-sol2-10,
6264         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
6265         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
6266         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
6267         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
6268         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
6269         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
6270         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
6271         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
6272         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
6273         config/m68k/t-uclinux, config/mcore/t-mcore,
6274         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
6275         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
6276         config/mips/crtn.asm, config/mips/irix-crti.asm,
6277         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
6278         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
6279         config/mips/mips-fixed.md, config/mips/sb1.md,
6280         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
6281         config/mips/t-iris6, config/mips/t-isa3264,
6282         config/mips/t-libgcc-mips16, config/mips/t-linux64,
6283         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
6284         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
6285         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
6286         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
6287         config/mn10300/t-linux, config/mn10300/t-mn10300,
6288         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
6289         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
6290         config/picochip/libgccExtras/clzsi2.asm,
6291         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
6292         config/rs6000/darwin-libgcc.10.4.ver,
6293         config/rs6000/darwin-libgcc.10.5.ver,
6294         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
6295         config/rs6000/t-aix43, config/rs6000/t-aix52,
6296         config/rs6000/t-darwin, config/rs6000/t-fprules,
6297         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
6298         config/rs6000/t-lynx, config/rs6000/t-netbsd,
6299         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
6300         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
6301         config/rs6000/t-rtems, config/rs6000/t-spe,
6302         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
6303         config/score/t-score-elf, config/sh/divcost-analysis,
6304         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
6305         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
6306         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
6307         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
6308         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
6309         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
6310         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
6311         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
6312         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
6313         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
6314         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
6315         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
6316         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
6317         limitx.h, version.c, xcoff.h: Add copyright and license notices.
6318         * config/h8300/genmova.sh: Include copyright and license notices
6319         in generated output.
6320         * config/h8300/mova.md: Regenerate.
6321         * doc/install.texi2html: Include word "Copyright" in copyright
6322         notice and use name "Free Software Foundation, Inc.".
6323         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6324         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6325         ChangeLog-2007, ChangeLog-2008: Correct dates.
6326
6327 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
6328
6329         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
6330         NE_EXPR operations as well.
6331         * c-parser.c (c_parser_condition): Do not set location information on
6332         the condition.
6333         (c_parser_conditional_expression): Likewise.
6334         (c_parser_binary_expression): Set location information on operators.
6335         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
6336         TRUTH_NOT_EXPR has been folded.
6337         * fold-const.c (fold_truth_not_expr): Copy location information from
6338         the incoming expression to the outgoing one.
6339         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
6340         recursive calls on the LHS of the operator but pass that of the
6341         operator to recursive calls on the RHS of the operator.  Set it
6342         on the COND_EXPR.
6343         (shortcut_cond_expr): Set the locus of the operator on the second
6344         COND_EXPR and that of the expression on the first in degenerate cases.
6345         Pass the locus of the expression to calls to shortcut_cond_r.
6346         Set the locus of the 'then' block on the associated jump, if any.
6347         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
6348         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
6349         expression to call to gimplify_boolean_expr.
6350
6351 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
6352
6353         * config.gcc: Add additional configuration for
6354         i686-w64-mingw* and x86_64-w64-mingw* triplet.
6355         * config/i386/mingw-w64.h: New mingw-w64 specific header.
6356         (CPP_SPEC): Redefine for allowing -municode option.
6357         (STARTFILE_SPEC): Likewise.
6358         * config/i386/t-mingw-w64: New.
6359         * config/i386/mingw-w64.opt: New.
6360         (municode): Add new target option.
6361         * doc/invoke.texi (municode): Add documentation for new option.
6362
6363 2009-04-21  Ian Lance Taylor  <iant@google.com>
6364
6365         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6366         Correct test for number of arguments.
6367         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
6368
6369 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
6370
6371         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
6372         argument of emit_library_call.
6373
6374 2009-04-21  Richard Guenther  <rguenther@suse.de>
6375
6376         PR middle-end/39829
6377         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
6378         inside VIEW_CONVERT_EXPRs.
6379
6380 2009-04-21  Martin Jambor  <mjambor@suse.cz>
6381
6382         * tree-switch-conversion.c (build_constructors): Split a long line.
6383         (constructor_contains_same_values_p): New function.
6384         (build_one_array): Create assigns of constants if possible, do not
6385         call mark_sym_for_renaming, call update_stmt.
6386         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
6387         make_rename_temp.  Do not call mark_symbols_for_renaming, call
6388         update_stmt.
6389         (gen_def_assigns): Do not call mark_symbols_for_renaming or
6390         find_new_referenced_vars, call update_stmt.
6391         (gen_inbound_check): Use create_tmp_var and create ssa names manually
6392         instead of calling make_rename_temp.  Do not call
6393         find_new_referenced_vars or mark_symbols_for_renaming, call
6394         update_stmt.
6395
6396 2009-04-21  Richard Guenther  <rguenther@suse.de>
6397
6398         PR tree-optimization/39827
6399         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
6400         (tree_ssa_phiprop): Pass the correct array size.
6401
6402 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
6403
6404         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
6405
6406 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6407
6408         PR 16202
6409         * c-typeck.c (lvalue_p): Move declaration ...
6410         * c-common.h (lvalue_p): ... to here.
6411         * c-common.c (candidate_equal_p): New.
6412         (add_tlist): Use it.
6413         (merge_tlist): Use it.
6414         (warn_for_collisions_1): Likewise.
6415         (warning_candidate_p): Accept more candidates.
6416         (verify_tree): A warning candidate can be an expression. Use
6417         candidate_equal_p.
6418
6419 2009-04-21  Ben Elliston  <bje@au.ibm.com>
6420
6421         PR target/5267
6422         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
6423         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
6424         options.  Remove -mcall-solaris documentation.
6425
6426 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6427
6428         PR c++/13358
6429         * doc/invoke.texi (-Wlong-long): Update description.
6430         * c-lex (interpret_integer): Only warn if there was no previous
6431         overflow and -Wlong-long is enabled.
6432         * c-decl.c (declspecs_add_type): Drop redundant flags.
6433         * c.opt (Wlong-long): Init to -1.
6434         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
6435         and front-end warn_long_long. Wlong-long only depends on other
6436         flags if it is uninitialized.
6437         * c-parser.c (disable_extension_diagnostics): warn_long_long is
6438         the same for CPP and FE.
6439         (restore_extension_diagnostics): Likewise.
6440
6441 2009-04-20  Ian Lance Taylor  <iant@google.com>
6442
6443         Fix enum conversions which are invalid in C++:
6444         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
6445         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
6446         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
6447         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
6448         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
6449         (dbxout_parms): Likewise.
6450         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
6451         (df_clear_flags): Likewise.
6452         * df-problems.c (df_rd_bb_local_compute_process_def): Change
6453         top_flag parameter to int.
6454         (df_chain_create_bb_process_use): Likewise.
6455         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
6456         Remove cast.
6457         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
6458         (df_ref_create_structure, df_def_record_1): Likewise.
6459         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
6460         (df_notes_rescan): Change 0 to VOIDmode in function call.
6461         (df_get_call_refs, df_insn_refs_collect): Likewise.
6462         (df_bb_regs_collect): Likewise.
6463         (df_entry_block_defs_collect): Likewise.
6464         (df_exit_block_uses_collect): Likewise.
6465         * df.h: Update declarations.
6466         * double-int.c (double_int_divmod): Add cast to enum type.
6467         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
6468         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
6469         (based_loc_descr): Likewise.
6470         (loc_descriptor_from_tree_1): Change first_op and second_op to
6471         enum dwarf_location_atom.  Add cast to enum type.
6472         * expmed.c (init_expmed): Change 0 to SET in function call.
6473         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
6474         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
6475         (do_store_flag): Likewise.
6476         * fixed-value.h (struct fixed_value): Change mode to enum
6477         machine_mode.
6478         * function.c (assign_parms): Change 0 to VOIDmode in function call.
6479         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
6480         function call.
6481         (insert_insn_decl, insert_decl, insert_state): Likewise.
6482         (automata_list_finish): Likewise.
6483         * genrecog.c (process_define_predicate): Add cast to enum type.
6484         * gensupport.c (init_predicate_table): Add cast to enum type.
6485         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
6486         function call.
6487         (gimple_build_call_1, gimple_build_label): Likewise.
6488         (gimple_build_goto, gimple_build_asm_1): Likewise.
6489         (gimple_build_switch_1, gimple_build_cdt): Likewise.
6490         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
6491         (enum fallback): Rename from enum fallback_t.
6492         (fallback_t): Typedef as int.
6493         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
6494         GSI_SAME_STMT in function call.
6495         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
6496         enum type.
6497         (setup_reg_class_relations): Likewise.
6498         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
6499         (setup_prohibited_class_mode_regs): Add cast to enum type.
6500         (setup_prohibited_mode_move_regs): Likewise.
6501         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
6502         (record_address_regs): Change i to enum reg_class.
6503         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
6504         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
6505         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
6506         (GET_MODE_2XWIDER_MODE): Likewise.
6507         (GET_CLASS_NARROWEST_MODE): Likewise.
6508         * omp-low.c (expand_omp_for): Add cast to enum type.
6509         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
6510         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
6511         * postreload.c (reload_cse_simplify_operands): Change rclass local
6512         to enum reg_class.
6513         * predict.c (combine_predictions_for_insn): Change best_predictor
6514         and predictor to enum br_predictor.
6515         (combine_predictions_for_bb): Likewise.
6516         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
6517         use SET_PREDICT_EXPR_OUTCOME.
6518         * real.c (real_arithmetic): Change icode to code in function call.
6519         * reginfo.c (init_move_cost): Add casts to enum type.
6520         (init_reg_sets_1, init_fake_stack_mems): Likewise.
6521         * regmove.c (regclass_compatible_p): Change class0 and class1 to
6522         enum reg_class.
6523         * reload.c (find_valid_class): Add casts to enum type.
6524         (push_reload): Change 0 to NO_REGS in function call.
6525         (find_reloads): Change this_alternative to array of enum
6526         reg_class.  Remove some now-unnecessary casts.
6527         (make_memloc): Change 0 to VOIDmode in function call.
6528         * reload1.c (reload): Change 0 to VOIDmode in function call.
6529         (eliminate_regs_1, elimination_effects): Likewise.
6530         (eliminate_regs_in_insn): Likewise.
6531         (emit_input_reload_insns): Add cast to enum type.
6532         (delete_output_reload): Change 0 to VOIDmode in function call.
6533         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
6534         to enum type in function call.
6535         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
6536         (SET_PREDICT_EXPR_OUTCOME): Define.
6537         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
6538         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
6539         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
6540         (dump_function): Likewise.
6541         * tree-dump.h: Update declarations.
6542         * tree-pass.h: Update declarations.
6543         * varasm.c (assemble_integer): Change mclass to enum mode_class.
6544         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
6545         enum type.
6546         (arm_rtx_costs_1): Correct parenthesization.
6547         (arm_rtx_costs): Add casts to enum type.
6548         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
6549         (vfp_emit_fstmd): Use add_rg_note.
6550         (emit_multi_reg_push, emit_sfm): Likewise.
6551         (thumb_set_frame_pointer): Likewise.
6552         (arm_expand_prologue): Likewise.
6553         (arm_regno_class): Change return type to enum reg_class.
6554         (thumb1_expand_prologue): Use add_reg_note.
6555         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
6556         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
6557         in function call.
6558         * config/arm/gentune.sh: Add cast to enum type.
6559         * config/arm/arm-tune.md: Rebuild.
6560         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
6561         (ix86_split_fp_branch, predict_jump): Likewise.
6562         (ix86_expand_multi_arg_builtin): Change sub_code from enum
6563         insn_code to enum rtx_code.
6564         (ix86_builtin_vectorized_function): Add cast to enum type.
6565         * config/i386/i386.md (truncdfsf2): Change slot to enum
6566         ix86_stack_slot.
6567         (truncxf<mode>2, isinf<mode>2): Likewise.
6568         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
6569         enum type.
6570         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
6571         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
6572         (insert_bundle_state): Change 1 to INSERT in function call.
6573         (ia64_add_bundle_selector_before): Likewise.
6574         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
6575         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
6576         (restore_stack_nonlocal): Likewise.
6577         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
6578         function call.
6579         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
6580         function call.
6581         (mips_rtx_costs): Likewise.
6582         (mips_override_options): Add casts to enum type.
6583         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
6584         in function call.
6585         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
6586         (store_reg, set_reg_plus_d): Likewise.
6587         (hppa_expand_prologue, hppa_profile_hook): Likewise.
6588         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
6589         cast to enum type.
6590         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
6591         function call.
6592         (emit_unlikely_jump): Use add_reg_note.
6593         (rs6000_emit_allocate_stack): Likewise.
6594         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
6595         (output_toc): Change 1 to INSERT in function call.
6596         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
6597         (rs6000_initialize_trampoline): Likewise.
6598         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
6599         function call.
6600         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
6601         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
6602         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
6603         (save_gprs): Use add_reg_note.
6604         (s390_emit_prologue): Likewise.
6605         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6606         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
6607         (sparc_fold_builtin): Add cast to enum type.
6608         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
6609         enum insn_code.
6610         (spu_expand_prologue): Use add_reg_note.
6611         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
6612
6613 2009-04-20  Ian Lance Taylor  <iant@google.com>
6614
6615         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
6616         (c_parser_postfix_expression_after_primary): Get VEC for list of
6617         arguments.  Get original types of arguments.  Call
6618         build_function_call_vec.
6619         (cached_expr_list_1, cached_expr_list_2): New static variables.
6620         (c_parser_expr_list): Change return type to VEC *.  Add
6621         p_orig_types parameter.  Change all callers.
6622         (c_parser_release_expr): New static function.
6623         (c_parser_vec_to_tree_list): New static function.
6624         * c-typeck.c (build_function_call): Rewrite to build a VEC and
6625         call build_function_call_vec.
6626         (build_function_call_vec): New function, based on old
6627         build_function_call.
6628         (convert_arguments): Remove nargs and argarray parameters.  Change
6629         values to a VEC.  Add origtypes parameter.
6630         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
6631         (convert_for_assignment): Add origtype parameter.  Change all
6632         callers.  If warn_cxx_compat, check for conversion to an enum
6633         type when calling a function.
6634         (store_init_value): Add origtype parameter.  Change all callers.
6635         (digest_init): Likewise.
6636         (struct init_node): Add origtype field.
6637         (add_pending_init): Add origtype parameter.  Change all callers.
6638         (output_init_element): Likewise.
6639         (output_pending_init_elements): Pass origtype from init_node to
6640         output_init_element.
6641         (process_init_element): Pass origtype from c_expr to
6642         output_init_element.
6643         (c_finish_return): Add origtype parameter.  Change all callers.
6644         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
6645         caller.
6646         (sync_resolve_params): Likewise.
6647         (sync_resolve_return): Change params to first_param.  Change caller.
6648         (resolve_overloaded_builtins): Change params to VEC *.  Change
6649         callers.  Save first parameter around call to build_function_call_vec.
6650         * c-decl.c (finish_decl): Add origtype parameter.  Change all
6651         callers.  Call build_function_call_vec rather than
6652         build_function_call for cleanup.
6653         * c-tree.h: Update declarations.
6654         * c-common.h: Update declarations.
6655         * stub-objc.c (objc_rewrite_function_call): Change parameter from
6656         params to first_param.
6657         * target.h (struct gcc_target): Change resolve_overloaded_builtin
6658         params parameter from tree to void *.
6659         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6660         Change arglist parameter to have type void *, and to be a pointer
6661         to a VEC.
6662         * config/rs6000/rs6000-protos.h
6663         (altivec_resolve_overloaded_builtin): Update declaration.
6664         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
6665         fnargs parameter to have type void *, and to be a pointer to a
6666         VEC.  Call build_function_call_vec instead of
6667         build_function_call.
6668         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
6669
6670 2009-04-20  Joey Ye  <joey.ye@intel.com>
6671             Xuepeng Guo  <xuepeng.guo@intel.com>
6672             H.J. Lu  <hongjiu.lu@intel.com>
6673
6674         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
6675
6676         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
6677         (IX86_LEA_PRIORITY): Likewise.
6678         (distance_non_agu_define): New function.
6679         (distance_agu_use): Likewise.
6680         (ix86_lea_for_add_ok): Likewise.
6681         (ix86_dep_by_shift_count): Likewise.
6682
6683         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
6684         should split for LEA.
6685
6686         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
6687         function.
6688         (ix86_dep_by_shift_count): Likewise.
6689
6690 2009-04-20  Richard Guenther  <rguenther@suse.de>
6691
6692         * expr.c (handled_component_p): Move ...
6693         * tree.h (handled_component_p): ... here.
6694         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
6695         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
6696         and REALPART_EXPR to be in one group.
6697
6698 2009-04-20  Richard Guenther  <rguenther@suse.de>
6699
6700         * basic-block.h (get_all_dominated_blocks): Declare.
6701         * dominance.c (get_all_dominated_blocks): New function.
6702         * tree-cfg.c (get_all_dominated_blocks): Remove.
6703         (remove_edge_and_dominated_blocks): Adjust.
6704         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
6705         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
6706         instead of recursing.
6707
6708 2009-04-20  Doug Kwan  <dougkwan@google.com>
6709
6710         * cgraph.h (cgraph_node_ptr): New type for vector functions.
6711         (struct cgraph_node_set_def): New type.
6712         (cgraph_node_set) New type. Also declare vector functions.
6713         (struct cgraph_node_set_element_def): New type.
6714         (cgraph_node_set_element): Ditto.
6715         (cgraph_node_set_iterator): New iterator type.
6716         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
6717         cgraph_node_set_remove, dump_cgraph_node_set,
6718         debug_cgraph_node_set): New prototypes.
6719         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
6720         cgraph_node_set_size): New inlines.
6721         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
6722         including cgraph.h.
6723         (struct ipa_opt_pass): Add struct cgraph_node_set_def
6724         argument to function 'write_summary'.
6725         * ipa.c: Include ggc.h.
6726         (hash_cgraph_node_set_element,
6727         eq_cgraph_node_set_element, cgraph_node_set_new,
6728         cgraph_node_set_add, cgraph_node_set_remove,
6729         cgraph_node_set_find, dump_cgraph_node_set,
6730         debug_cgraph_node_set): New functions.
6731         * Makefile.in (ipa.o): Add dependency on GGC_H.
6732
6733 2009-04-20  Ira Rosen  <irar@il.ibm.com>
6734
6735         PR tree-optimization/39675
6736         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
6737         check of the return code of vect_schedule_slp. Check that
6738         stmt_vec_info still exists for the statement, before checking its
6739         vectorization type.
6740
6741 2009-04-20  Michael Matz  <matz@suse.de>
6742
6743         * Makefile.in (generated_files): Take out $(simple_generated_c).
6744
6745 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
6746
6747         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
6748         (UINTPTR_TYPE):  Likewise.
6749
6750 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6751
6752         PR c/37481
6753         * c-typeck.c (digest_init): Check for initializing an array with a
6754         string literal.
6755
6756 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6757
6758         PR c/19771
6759         * c-semantics.c (pop_stmt_list): Propagate
6760         STATEMENT_LIST_HAS_LABEL to parent statement list.
6761
6762 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
6763
6764         * config/mips/mips.h (mips_tune_attr): New macro.
6765         * config/mips/mips.md (cpu): Use it.
6766
6767 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6768
6769         PR c/38243
6770         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
6771         declaring a tag.
6772
6773 2009-04-19  Diego Novillo  <dnovillo@google.com>
6774
6775         * toplev.c (compile_file): Move call to coverage_finish ...
6776         * cgraphunit.c (ipa_passes): ... here.
6777         Call cgraph_process_new_functions.
6778         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
6779         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
6780
6781 2009-04-19  Jan Hubicka  <jh@suse.cz>
6782
6783         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
6784         cfun.
6785         (dump_cgraph_node): Dump can throw external flag.
6786         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
6787
6788 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6789
6790         PR c/32061
6791         PR c++/36954
6792         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
6793         * common.opt (Wlogical-op): Move from here...
6794         * c.opt (Wlogical-op): ... to here.
6795         * c-typeck.c (parser_build_binary_op): Update call to
6796         warn_logical_operator.
6797         * c-opts.c (c_common_post_options): Enable warn_logical_op with
6798         extra_warnings.
6799         * c-common.c (warn_logical_op): Update.
6800         * c-common.h (warn_logical_op): Update declaration.
6801
6802 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
6803
6804         * tree.c (protected_set_expr_location): Fix formatting.
6805
6806 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6807
6808         PR c/27676
6809         * c-typeck.c (readonly_warning): new.
6810         (build_unary_op, build_modify_expr): Use readonly_warning for
6811         storing into something readonly but not const-qualified.
6812
6813 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6814
6815         PR c/22367
6816         * c-typeck.c (build_unary_op): Check for taking address of
6817         expression of type void.
6818
6819 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6820
6821         PR c/35210
6822         * c-typeck.c (build_function_call): Check for calling a function
6823         with qualified void return types.  Call require_complete_type when
6824         generating a trap.
6825
6826 2009-04-18  Jan Hubicka  <jh@suse.cz>
6827
6828         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
6829         Set nothrow flag.
6830         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
6831         can_throw_external flag.
6832         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
6833         * ipa-pure-const.c (ignore_edge): New function.
6834         (propagate): Compute order for NOTHROW computation; set NOTHROWs
6835         only over can_throw_external edges.
6836         (local_pure_const): Add nothrow flag.
6837         * ipa-utils.c (searchc): Add ignore_edge callback.
6838         (ipa_utils_reduced_inorder): Add ignore_edge callback.
6839         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
6840         (set_nothrow_function_flags): Update cgraph.
6841         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
6842
6843 2009-04-18  Richard Guenther  <rguenther@suse.de>
6844
6845         PR middle-end/39804
6846         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
6847         (fold_stmt): ... this and ...
6848         (fold_stmt_inplace): ... this.
6849         (fold_stmt_1): Fold references in calls and asms.
6850         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
6851
6852 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6853
6854         * tree-vrp.c (ssa_name_nonzero_p): Remove.
6855         * tree.h: Remove the prototype for ssa_name_nonzero_p.
6856
6857 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6858
6859         * tree.c (function_args_count): Remove.
6860         * tree.h: Remove the prototype for function_args_count.
6861
6862 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6863
6864         * tree-iterator.c (expr_only): Remove.
6865         * tree.h: Remove the prototype for expr_only.
6866
6867 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6868
6869         * reginfo.c (cannot_change_mode_set_regs): Remove.
6870         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
6871
6872 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
6873
6874         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
6875         whether operands 0 and 1 overlaps.
6876
6877 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6878
6879         PR middle-end/36902
6880         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
6881         pointer. Use warning_at instead of warning.
6882         (search_for_addr_array): Likewise.
6883         (check_array_bounds): Likewise.
6884         (check_all_array_refs): Check that the incoming edge is not in the
6885         list of edges to be removed.
6886         (check_all_array_refs): Avoid the temporal pointer.
6887         (vrp_visit_cond_stmt): Fix typo.
6888         (simplify_switch_using_ranges): Handle the case where the switch
6889         index is an integer constant.
6890
6891 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
6892
6893         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
6894
6895 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6896
6897         * doc/extend.texi, doc/invoke.texi: Fix typos.
6898
6899 2009-04-17  Cary Coutant  <ccoutant@google.com>
6900
6901         * tree-flow-inline.h (get_lineno): Fix inverted test.
6902
6903 2009-04-17  Diego Novillo  <dnovillo@google.com>
6904
6905         * tree-ssa-pre.c (create_expression_by_pieces): Remove
6906         assertion for AVAIL_OUT.
6907
6908 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
6909
6910         PR target/38627
6911         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
6912         * config/sh/linux-atomic.asm: Likewise.
6913
6914 2009-04-17  Diego Novillo  <dnovillo@google.com>
6915
6916         * except.c (debug_eh_tree): New.
6917         (struct eh_region, struct eh_status): Move ...
6918         * except.h: ... here.
6919         (add_type_for_runtime): Declare extern.
6920         (lookup_type_for_runtime): Likewise.
6921         (debug_eh_tree): Declare.
6922         * Makefile.in (GTFILES): List except.h before except.c
6923
6924 2009-04-17  Diego Novillo  <dnovillo@google.com>
6925
6926         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
6927         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
6928         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
6929         (find_vars_r): ... here.
6930         * tree-flow.h (find_referenced_vars_in): Declare.
6931         * tree-ssa-pre.c (create_expression_by_pieces): Assert
6932         that AVAIL_OUT exists for BLOCK.
6933         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
6934         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
6935         (tree-parloops.o): Likewise.
6936
6937 2009-04-17  Simon Baldwin  <simonb@google.com>
6938
6939         * toplev.c (default_tree_printer): Add handling for %E format.
6940
6941 2009-04-17  Diego Novillo  <dnovillo@google.com>
6942
6943         * tree-pretty-print.c (dump_generic_node): Add break after
6944         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
6945         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
6946         FUNCTION_TYPE together.  Call print_struct_decl when printing
6947         structures and TDF_SLIM is not given.
6948         (print_struct_decl): Fix logic for detecting recursion.
6949
6950 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6951
6952         PR 31567
6953         * gcc.c (create_at_file): New.
6954         (compile_input_file_p): New.
6955         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
6956         * main.c (main): Update call to toplev_main.
6957         * toplev.c (toplev_main): Change signature. Call expandargv.
6958         * toplev.h (toplev_main): Change signature.
6959
6960 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6961
6962         * dwarf2out.c (field_byte_offset): Use the type size as the field size
6963         if the latter is not constant.
6964
6965 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
6966
6967         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
6968
6969 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6970
6971         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
6972         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
6973
6974 2009-04-17  Richard Guenther  <rguenther@suse.de>
6975
6976         * tree-ssa-structalias.c (get_constraint_for_component_ref):
6977         Handle component references view-converting an invariant address.
6978
6979 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
6980
6981         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
6982         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
6983         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
6984         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
6985         Use @deftypevr rather than @deftypevar.
6986
6987 2009-04-17  Richard Guenther  <rguenther@suse.de>
6988
6989         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
6990         (get_prop_source_stmt): Likewise.
6991         (can_propagate_from): Likewise.
6992
6993 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
6994
6995         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
6996         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
6997         (--with-multilib-list): Add default value.
6998         * configure: Regenerate.
6999         * Makefile.in (TM_ENDIAN_CONFIG): Define.
7000         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
7001         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
7002         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
7003         Don't add default cpu to multilib list unnecessarily, but do enable
7004         the relevant compiler option..
7005         Add support for --with-multilib-list=<blank> and
7006         --with-multilib-list=!<somelib> to supress unwanted multilibs.
7007         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
7008         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
7009         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
7010         TM_MULTILIB_CONFIG.
7011         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
7012         (MULTILIB_OSDIRNAMES): New variable.
7013         * config/sh/t-1e: Delete file.
7014         * config/sh/t-mlib-sh1: Delete file.
7015         * config/sh/t-mlib-sh2: Delete file.
7016         * config/sh/t-mlib-sh2a: Delete file.
7017         * config/sh/t-mlib-sh2a-nofpu: Delete file.
7018         * config/sh/t-mlib-sh2a-single: Delete file.
7019         * config/sh/t-mlib-sh2a-single-only: Delete file.
7020         * config/sh/t-mlib-sh2e: Delete file.
7021         * config/sh/t-mlib-sh3e: Delete file.
7022         * config/sh/t-mlib-sh4: Delete file.
7023         * config/sh/t-mlib-sh4-nofpu: Delete file.
7024         * config/sh/t-mlib-sh4-single: Delete file.
7025         * config/sh/t-mlib-sh4-single-only: Delete file.
7026         * config/sh/t-mlib-sh4a: Delete file.
7027         * config/sh/t-mlib-sh4a-nofpu: Delete file.
7028         * config/sh/t-mlib-sh4a-single: Delete file.
7029         * config/sh/t-mlib-sh4a-single-only: Delete file.
7030         * config/sh/t-mlib-sh4al: Delete file.
7031         * config/sh/t-mlib-sh5-32media: Delete file.
7032         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
7033         * config/sh/t-mlib-sh5-64media: Delete file.
7034         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
7035         * config/sh/t-mlib-sh5-compact: Delete file.
7036         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
7037         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
7038         * doc/install.texi (Options specification): Add
7039         --with-multilib-list and --with-endian.
7040
7041 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
7042
7043         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
7044         REVISION_c.
7045         (OBJS-common): Add plugin-version.o.
7046         (plugin-version.o): New.
7047         * gcc-plugin.h (plugin_gcc_version): New.
7048         (plugin_default_version_check): New.
7049         (plugin_init_func, plugin_init): Add version argument.
7050         * plugin-version.c: New.
7051         * plugin.c (str_plugin_gcc_version_name): New.
7052         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
7053         pass it to the init function.
7054         (plugin_default_version_check): New.
7055
7056 2009-04-17  Richard Guenther  <rguenther@suse.de>
7057
7058         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
7059         for decl-vs-decl disambiguation.
7060
7061 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
7062
7063         * config/s390/s390.h (s390_tune_attr): New macro definition.
7064         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
7065
7066 2009-04-17  Richard Guenther  <rguenther@suse.de>
7067
7068         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
7069         (fold_stmt_r): Likewise.
7070         (maybe_fold_reference): New function.
7071         (fold_gimple_assign): Handle cases fold_stmt_r did.
7072         (fold_stmt): Do not use fold_stmt_r.
7073         (fold_stmt_inplace): Likewise.
7074
7075 2009-04-17  Richard Guenther  <rguenther@suse.de>
7076
7077         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
7078         (record_equivalences_from_stmt): Remove useless checks and
7079         simplifications.
7080         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
7081         the type is already suitable.
7082
7083 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
7084
7085         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
7086
7087 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
7088
7089         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
7090         (CMPtype): Define as __gcc_CMPtype.
7091
7092 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
7093
7094         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
7095         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
7096
7097 2009-04-17  Richard Guenther  <rguenther@suse.de>
7098
7099         PR tree-optimization/39746
7100         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
7101         special-casing for builtins and static variable use/def.
7102         (call_may_clobber_ref_p_1): Likewise.
7103
7104 2009-04-16  Ian Lance Taylor  <iant@google.com>
7105
7106         * df.h: Include "timevar.h".
7107         (struct df_problem): Change tv_id field to timevar_id_t.
7108         * tree-pass.h: Include "timevar.h".
7109         (struct opt_pass): Change tv_id field to timevar_id_t.
7110         * timevar.h (timevar_id_t): Define TV_NONE.
7111         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
7112         TV_NONE rather than tv_id != 0.
7113         (execute_one_pass): Likewise.
7114         * Makefile.in (DF_H): Add $(TIMEVAR_H).
7115         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
7116         dependencies to $(TREE_PASS_H).
7117         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
7118         to TV_NONE.
7119         (pass_branch_target_load_optimize2): Likewise.
7120         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
7121         (pass_outof_cfg_layout_mode): Likewise.
7122         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
7123         (pass_rebuild_cgraph_edges): Likewise.
7124         (pass_remove_cgraph_callee_edges): Likewise.
7125         * df-core.c (pass_df_initialize_opt): Likewise.
7126         (pass_df_initialize_no_opt): Likewise.
7127         (pass_df_finish): Likewise.
7128         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
7129         * except.c (pass_set_nothrow_function_flags): Likewise.
7130         (pass_convert_to_eh_region_ranges): Likewise.
7131         * final.c (pass_compute_alignments): Likewise.
7132         * function.c (pass_instantiate_virtual_regs): Likewise.
7133         (pass_init_function): Likewise.
7134         (pass_leaf_regs): Likewise.
7135         (pass_match_asm_constraints): Likewise.
7136         * gimple-low.c (pass_lower_cf): Likewise.
7137         (pass_mark_used_blocks): Likewise.
7138         * init-regs.c (pass_initialize_regs): Likewise.
7139         * integrate.c (pass_initial_value_sets): Likewise.
7140         * ira.c (pass_ira): Likewise.
7141         * jump.c (pass_cleanup_barriers): Likewise.
7142         * omp-low.c (pass_expand_omp): Likewise.
7143         (pass_lower_omp): Likewise.
7144         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
7145         * recog.c (pass_split_all_insns): Likewise.
7146         (pass_split_after_reload): Likewise.
7147         (pass_split_before_regstack): Likewise.
7148         (pass_split_before_sched2): Likewise.
7149         (pass_split_for_shorten_branches): Likewise.
7150         * reginfo.c (pass_reginfo_init): Likewise.
7151         (pass_subregs_of_mode_init): Likewise.
7152         (pass_subregs_of_mode_finish): Likewise.
7153         * passes.c (pass_postreload): Likewise.
7154         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
7155         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
7156         (pass_warn_function_return): Likewise.
7157         (pass_warn_function_noreturn): Likewise.
7158         * tree-complex.c (pass_lower_complex): Likewise.
7159         (pass_lower_complex_O0): Likewise.
7160         * tree-if-conv.c (pass_if_conversion): Likewise.
7161         * tree-into-ssa.c (pass_build_ssa): Likewise.
7162         * tree-mudflap.c (pass_mudflap_1): Likewise.
7163         (pass_mudflap_2): Likewise.
7164         * tree-nomudflap.c (pass_mudflap_1): Likewise.
7165         (pass_mudflap_2): Likewise.
7166         * tree-nrv.c (pass_return_slot): Likewise.
7167         * tree-object-size.c (pass_object_sizes): Likewise.
7168         * tree-optimize.c (pass_all_optimizations): Likewise.
7169         (pass_early_local_passes): Likewise.
7170         (pass_all_early_optimizations): Likewise.
7171         (pass_cleanup_cfg): Likewise.
7172         (pass_cleanup_cfg_post_optimizing): Likewise.
7173         (pass_free_datastructures): Likewise.
7174         (pass_free_cfg_annotations): Likewise.
7175         (pass_fixup_cfg): Likewise.
7176         (pass_init_datastructures): Likewise.
7177         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
7178         (pass_late_warn_uninitialized): Likewise.
7179         (pass_update_address_taken): Likewise.
7180         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
7181         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
7182         (pass_cse_sincos): Likewise.
7183         (pass_convert_to_rsqrt): Likewise.
7184         * tree-ssa-structalias.c (pass_build_alias): Likewise.
7185         * tree-stdarg.c (pass_stdarg): Likewise.
7186         * tree-tailcall.c (pass_tail_recursion): Likewise.
7187         (pass_tail_calls): Likewise.
7188         * tree-vect-generic.c (pass_lower_vector): Likewise.
7189         (pass_lower_vector_ssa): Likewise.
7190         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
7191
7192 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
7193
7194         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
7195         XLR entry.
7196         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
7197         Handle -march=xlr.
7198         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
7199         logical and signext.
7200
7201 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
7202
7203         PR target/39767
7204         * config/sh/predicates.md (arith_operand): Check if the operand
7205         of TRUNCATE is a REG.
7206
7207 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7208
7209         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
7210         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
7211
7212 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7213
7214         * tree-iterator.c (tsi_split_statement_list_after,
7215         tsi_split_statement_list_before): Remove.
7216         * tree-iterator.h: Remove the prototypes for
7217         tsi_split_statement_list_after and tsi_split_statement_list_before.
7218
7219 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7220
7221         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
7222         * tree-ssa-propagate.h: Remove the prototype for
7223         stmt_makes_single_load.
7224
7225 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7226
7227         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
7228         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
7229
7230 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7231
7232         * tree-iterator.c (EXPR_LAST_BODY): Remove.
7233
7234 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7235
7236         * except.c (eh_region_outer_p): Remove.
7237         * except.h: Remove the prototype for eh_region_outer_p.
7238
7239 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7240
7241         * function.c (current_function_assembler_name): Remove.
7242         * function.h: Remove the prototype for
7243         current_function_assembler_name.
7244
7245 2009-04-16  Ian Lance Taylor  <iant@google.com>
7246
7247         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
7248         (add_reg_note): Call alloc_reg_note.
7249         * rtl.h (alloc_reg_note): Declare.
7250         * combine.c (try_combine): Use alloc_reg_note.
7251         (recog_for_combine, move_deaths): Likewise.
7252         (distribute_notes): Use alloc_reg_note and add_reg_note.
7253         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
7254         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
7255         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
7256
7257 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
7258
7259         PR rtl-optimization/39762
7260         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
7261         ira_may_move_out_cost): Add comments about way of their usage.
7262         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
7263
7264         * ira-conflicts.c (process_regs_for_copy): Use function
7265         ira_get_register_move_cost instead of global
7266         ira_register_move_cost.
7267
7268         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
7269         color_pass, move_spill_restore, update_curr_costs): Ditto.
7270
7271         * ira-lives.c (process_single_reg_class_operands): Ditto.
7272
7273         * ira-emit.c (emit_move_list): Ditto.
7274
7275         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
7276         (record_reg_classes): Ditto.  Use functions
7277         ira_get_register_move_cost and ira_get_may_move_cost instead of
7278         global vars ira_register_move_cost, ira_may_move_out_cost and
7279         ira_may_move_in_cost.
7280         (record_address_regs): Don't call ira_init_register_move_cost.
7281         Use function ira_get_may_move_cost instead of global
7282         ira_may_move_in_cost.
7283         (process_bb_node_for_hard_reg_moves): Use function
7284         ira_get_register_move_cost instead of global ira_register_move_cost.
7285         (ira_costs): Don't call ira_init_register_move_cost.
7286
7287 2009-04-16  Richard Guenther  <rguenther@suse.de>
7288
7289         * tree-cfg.c (verify_gimple_assign_binary):
7290         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
7291         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
7292         (create_general_new_stmt): Note that this function is broken.
7293
7294 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7295
7296         * common.opt (fhelp): Add Var(help_flag).
7297         * gcc-plugin.h (plugin_info): Add help.
7298         * plugin.c (plugin_name_args): Add help.
7299         (register_plugin_info): Set plugin->help.
7300         (print_help_one_plugin): New.
7301         (print_plugins_help): New.
7302         * plugin.h (print_plugins_help): New.
7303         * toplev.c (toplev_main): Call print_plugins_help if needed.
7304
7305 2009-04-16  Richard Guenther  <rguenther@suse.de>
7306
7307         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
7308         (gimple_ior_addresses_taken_1): New function.
7309         (gimple_ior_addresses_taken): Likewise.
7310         * gimple.h (struct gimple_statement_with_ops_base): Remove
7311         addresses_taken member.
7312         (gimple_ior_addresses_taken): Declare.
7313         (gimple_addresses_taken, gimple_addresses_taken_ptr,
7314         gimple_set_addresses_taken): Remove.
7315         * ipa-reference.c (mark_address): New function.
7316         (scan_stmt_for_static_refs): Use it for marking addresses taken.
7317         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
7318         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
7319         (gimple_add_to_addresses_taken): Remove.
7320         (get_tmr_operands): Call mark_address_taken.
7321         (get_asm_expr_operands): Likewise.
7322         (get_expr_operands): Likewise.
7323         (build_ssa_operands): Do not clear the addresses_taken bitmap.
7324         (free_stmt_operands): Do not free it.
7325         * tree-ssa.c (delete_tree_ssa): Likewise.
7326         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
7327
7328 2009-04-16  Richard Guenther  <rguenther@suse.de>
7329
7330         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
7331         (walk_stmt_load_store_ops): Likewise.
7332         * gimple.c (get_base_loadstore): New function.
7333         (walk_stmt_load_store_addr_ops): Likewise.
7334         (walk_stmt_load_store_ops): Likewise.
7335         * ipa-pure-const.c (check_op): Simplify.
7336         (check_load, check_store): New functions.
7337         (check_stmt): Use walk_stmt_load_store_ops.
7338         * ipa-reference.c (mark_load): Adjust signature.
7339         (mark_store): Likewise.
7340         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
7341
7342 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7343
7344         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
7345         (plugin_info): New.
7346         * opts.c (common_handle_option): Don't call print_version.
7347         * plugin.c (plugin_name_args): Add version.
7348         (register_plugin_info): New.
7349         (register_callback): Handle PLUGIN_INFO.
7350         (try_init_one_plugin): New.
7351         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
7352         if failed to init.
7353         (finalize_one_plugin): New.
7354         (finalize_plugins): New.
7355         (print_one_plugin): New.
7356         (print_plugins_versions): New.
7357         * plugin.h (print_plugins_versions): New.
7358         (finalize_plugins): New.
7359         * toplev.c (compile_file): Don't call initialize_plugins.
7360         (print_version): Call print_plugins_versions.
7361         (toplev_main): Call initialize_plugins. Print version if needed.
7362         Call finalize_plugins.
7363
7364 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7365
7366         * common.opt (fversion): New.
7367         * gcc.c (print_version): New.
7368         (process_command): Don't print the version. Just set print_version.
7369         (main): Print version. Call subprocesses if print_version and
7370         verbose_flag are set.
7371         * opts.c (common_handle_option): Handle OPT_fversion.
7372
7373 2009-04-16  Richard Guenther  <rguenther@suse.de>
7374             Ira Rosen  <irar@il.ibm.com>
7375
7376         PR tree-optimization/39698
7377         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
7378         type of the reduction variable.  Only generate the def if
7379         it is needed.
7380
7381         * omp-low.c (expand_omp_for_generic): When converting to a pointer
7382         make sure to first convert to an integer of the same precision.
7383         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
7384         the type of the evolution correctly in computing the new
7385         induction variable base.
7386
7387 2009-04-16  Richard Guenther  <rguenther@suse.de>
7388
7389         PR middle-end/39625
7390         * tree-cfg.c (make_blocks): Split statements with to-be
7391         abnormal SSA names on the lhs.
7392
7393 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
7394
7395         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
7396         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
7397         * c-typeck.c (really_start_incremental_init): Likewise.
7398         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
7399         (TARGET_INITIALIZER): Remove it.
7400         * target.h (struct target): Remove vector_opaque_p.
7401         * tree.c (build_opaque_vector_type): New.
7402         * tree.h (TYPE_VECTOR_OPAQUE): New.
7403         (build_opaque_vector_type): Declare.
7404         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
7405         * config/rs6000/rs6000.c (build_opaque_vector_type,
7406         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
7407         (rs6000_init_builtins): Use build_opaque_vector_type for
7408         opaque_V4SI_type_node.
7409
7410 2009-04-15  Catherine Moore  <clm@codesourcery.com>
7411
7412         * debug.h (set_name):  Declare.
7413         * dwarf2out.c (dwarf2out_set_name): Declare.
7414         (dwarf2_debug_hooks): Add set_name.
7415         (find_AT_string): New.
7416         (add_AT_string): Call find_AT_string.
7417         (dwarf2out_set_name): New.
7418         * cp/decl.c (grokdeclarator): Call set_name.
7419         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
7420         * debug.c (do_nothing_debug_hooks):  Likewise.
7421         * dbxout.c (dbx_debug_hooks): Likewise.
7422         * sdbout.c (sdb_debug_hooks): Likewise.
7423
7424 2009-04-15  Michael Eager  <eager@eagercon.com>
7425
7426         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
7427         reg for single-precision FPU.
7428         * config/rs6000/rs6000.md (movsi_internal1): Only for
7429         !TARGET_SINGLE_FPU.
7430         (movsi_internal1_single): New. Add pattern to move SI values to/from
7431         single-precision FP regs.
7432
7433 2009-04-15  Richard Guenther  <rguenther@suse.de>
7434
7435         * omp-low.c (lower_rec_input_clauses): Build correct address
7436         expressions.
7437         (expand_omp_for_generic): Fix multiplication type.
7438         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
7439         (generate_memset_zero): Fix types.
7440         * tree-profile.c (prepare_instrumented_value): Correctly
7441         widen a pointer.
7442
7443 2009-04-15  Ian Lance Taylor  <iant@google.com>
7444
7445         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
7446         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
7447         for -Wall and for -Wc++-compat.
7448         (c_common_post_options): For C++, set warn_enum_compare if not
7449         already set.
7450         * c-tree.h (struct c_expr): Add field original_type.
7451         (build_external_ref): Update declaration.
7452         * c-parser.c (c_parser_braced_init): Set original_type.
7453         (c_parser_initelt): Likewise.
7454         (c_parser_expr_no_commas): Likewise.
7455         (c_parser_conditional_expression): Likewise.
7456         (c_parser_cast_expression): Likewise.
7457         (c_parser_unary_expression): Likewise.  Pull setting of
7458         original_code to top of function.
7459         (c_parser_sizeof_expression): Set original_type.
7460         (c_parser_alignof_expression): Likewise.
7461         (c_parser_postfix_expression): Likewise.  Pull setting of
7462         original_code to top of function.
7463         (c_parser_postfix_expression_after_paren_type): Set original_type.
7464         (c_parser_postfix_expression_after_primary): Likewise.
7465         (c_parser_expression): Likewise.
7466         * c-typeck.c (build_external_ref): Add type parameter.  Change all
7467         callers.
7468         (c_expr_sizeof_expr): Set original_type field.
7469         (parser_build_unary_op): Likewise.
7470         (parser_build_binary_op): Likewise.  Optionally warn about
7471         comparisons of enums of different types.
7472         (digest_init): Set original_type field.
7473         (really_start_incremental_init): Likewise.
7474         (push_init_level, pop_init_level): Likewise.
7475         * doc/invoke.texi (Warning Options): -Wenum-compare now
7476         supported in C.
7477
7478 2009-04-15  Richard Guenther  <rguenther@suse.de>
7479
7480         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
7481         out a necessary conversion.
7482         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
7483         names we didn't value number.
7484         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
7485
7486 2009-04-15  Richard Guenther  <rguenther@suse.de>
7487
7488         PR tree-optimization/39764
7489         * tree-ssa-ccp.c (get_value): Canonicalize value with
7490         canonicalize_float_value.
7491
7492 2009-04-15  Jan Hubicka  <jh@suse.cz>
7493
7494         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
7495         Wrong version of patch.
7496
7497 2009-04-15  Jan Hubicka  <jh@suse.cz>
7498
7499         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
7500
7501 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
7502
7503         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
7504         our distinct integral and vector types.
7505
7506 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
7507
7508         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
7509         * init.c (build_vtbl_address): Remove call to assemble_external.
7510
7511 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
7512
7513         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
7514         output for other floating point modes.
7515
7516 2009-04-14  Diego Novillo  <dnovillo@google.com>
7517
7518         * diagnostic.c (diagnostic_report_diagnostic): Do not
7519         warn about loaded plugins for DK_ERROR and DK_WARNING.
7520         * c-decl.c (declspecs_add_type): Move call to
7521         invoke_plugin_callbacks ...
7522         * c-parser.c (c_parser_declspecs): ... here.
7523         * plugin.c (dump_active_plugins): Tidy output.
7524
7525 2009-04-14  Diego Novillo  <dnovillo@google.com>
7526             Le-Chun Wu  <lcwu@google.com>
7527
7528         * configure.ac: Add --enable-plugin support.
7529         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
7530         * Makefile.in (PLUGIN_H): Define.
7531         Export ENABLE_PLUGIN and GMPINC to site.exp.
7532         Add PLUGINLIBS to link command.
7533         Add/modify dependencies for plugin.o and files including plugin.h.
7534         (plugin.o): New.
7535         * config.in: Regenerate.
7536
7537         * opts.c (common_handle_option): Handle OPT_fplugin_ and
7538         OPT_fplugin_arg_.
7539
7540 2009-04-14  Le-Chun Wu  <lcwu@google.com>
7541
7542         * tree-pass.h (register_one_dump_file): Add a prototype for
7543         register_one_dump_file.
7544         * toplev.c (compile_file): Call initialize_plugins.
7545         (do_compile): Call invoke_plugin_callbacks.
7546         (toplev_main): Call invoke_plugin_callbacks.
7547         * common.opt: Add -fplugin= and -fplugin-arg-.
7548         * gcc-plugin.h: New public header file for plugins to include.
7549         * plugin.c: New source file.
7550         * plugin.h: New internal header file.
7551         * passes.c (register_one_dump_file): Make it external.
7552
7553         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
7554
7555 2009-04-14  Diego Novillo  <dnovillo@google.com>
7556
7557         * doc/plugins.texi: New.
7558         * doc/gccint.texi: Add reference to Plugins chapter.
7559         * doc/invoke.texi: Document -fplugin and -fplugin-arg
7560         * diagnostic.c (diagnostic_report_diagnostic): Warn about
7561         loaded plugins, if any.
7562         * timevar.def (TV_PLUGIN_INIT): Define.
7563         (TV_PLUGIN_RUN): Define.
7564         * plugin.c: Include timevar.h
7565         (plugins_active_p): New.
7566         (dump_active_plugins): New.
7567         (debug_active_plugins): New.
7568
7569 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
7570
7571         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
7572         library paths.
7573         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
7574
7575 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
7576
7577         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
7578         the same as a minus without a shift.
7579
7580 2009-04-14  Nick Clifton  <nickc@redhat.com>
7581
7582         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
7583         comparisons with small integers will always produce a short
7584         branch.
7585
7586 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
7587
7588         Merge:
7589         2008-12-19  Diego Novillo  <dnovillo@google.com>
7590
7591         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
7592
7593 2009-04-14  Richard Guenther  <rguenther@suse.de>
7594
7595         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
7596         verification.
7597         (verify_gimple_assign_binary): Likewise.  Handle shifts and
7598         rotates correctly.
7599         (verify_gimple_phi): Print the mismatched argument position.
7600         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
7601         Fix types.
7602         (vect_update_init_of_dr): Likewise.
7603         * matrix-reorg.c (transform_access_sites): Do what the
7604         comment suggests.
7605         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
7606
7607 2009-04-13  Michael Eager  <eager@eagercon.com>
7608
7609         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
7610         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
7611         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
7612         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
7613         remove duplicate config
7614
7615 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7616
7617         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
7618         file_name:line_number type locator of the call site.
7619
7620 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7621
7622         * genautomata.c: Put blank after comma.
7623         (automaton_decls): New.
7624         (struct unit_usage): Add comments to member next.
7625         (store_alt_unit_usage): Keep the list ordered.
7626         (unit_present_on_list_p, equal_alternatives_p): New.
7627         (check_regexp_units_distribution): Check units distribution
7628         correctness correctly.
7629         (main): Don't write automata if error is found.  Return correct
7630         exit code.
7631
7632         * config/m68k/cf.md (cfv4_ds): Remove.
7633         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
7634         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
7635
7636         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
7637         power4-load-ext, power4-store, power4-store-update,
7638         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
7639         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
7640         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
7641         power4-sqrt, power4-isync): Modify reservation to make correct
7642         unit distribution to automata.
7643
7644         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
7645         power5-store-update, power5-two, power5-three, power5-lmul,
7646         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
7647
7648 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
7649
7650         * except.c (pass_set_nothrow_function_flags): Set name and add
7651         TODO_dump_func.
7652         (set_nothrow_function_flags): Mention in the dump file when
7653         changing a function to nothrow.
7654
7655 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
7656
7657         PR/39066
7658         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
7659         instead of unsigned long.
7660
7661 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7662
7663         * config/arm/arm.c (return_used_this_function): Remove.
7664         (arm_output_function_prologue): Remove use of
7665         return_used_this_function.
7666         (output_return_instruction): Replace use of
7667         return_used_this_function
7668         by cfun->machine->return_used_this_function.
7669         (arm_output_epilogue): Likewise.
7670         (arm_output_function_epilogue): Likewise.
7671         (thumb_unexpanded_epilogue): Likewise.
7672         * config/arm/arm.h (struct machine_function):
7673         New member return_used_this_function.
7674
7675 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
7676
7677         * doc/install.texi: Correct description of default directory for
7678         --with-gxx-include-dir.
7679
7680 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7681
7682         * fold-const.c (build_range_check): Properly deal with enumeral and
7683         boolean base types.
7684
7685 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
7686
7687         * doc/invoke.texi (max_gcse_passes): Remove documentation.
7688         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
7689         * params.h (MAX_GCSE_PASSES): Remove.
7690         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
7691         in sequence.  Remove ability to run multiple passes.
7692         (bypass_jumps): Report run as third CPROP pass.
7693
7694 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
7695
7696         PR middle-end/39651
7697         * except.c (can_throw_external): Look at each insn in a SEQUENCE
7698         when deciding whether the whole SEQUENCE can throw.
7699
7700 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
7701
7702         PR target/39740
7703         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
7704         offseted label references.
7705
7706 2009-04-11  Jan Hubicka  <jh@suse.cz>
7707
7708         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
7709
7710 2009-04-11  Richard Guenther  <rguenther@suse.de>
7711
7712         PR middle-end/39732
7713         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
7714         return variables as TREE_ADDRESSABLE.
7715
7716 2009-04-11  Richard Guenther  <rguenther@suse.de>
7717
7718         PR tree-optimization/39713
7719         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
7720         reference trees have SSA_NAME operands.
7721
7722 2009-04-11  Richard Guenther  <rguenther@suse.de>
7723
7724         PR c/39712
7725         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
7726         address expressions.
7727
7728 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
7729
7730         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
7731         match changes in Cygwin 1.7
7732         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
7733         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
7734
7735 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7736
7737         PR tree-optimization/39701
7738         * doc/invoke.texi (Optimization Options): Document change in
7739         meaning and initialization of -fdelete-null-pointer-checks.
7740
7741 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7742
7743         PR middle-end/39701
7744         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
7745
7746         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
7747         here.
7748
7749         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
7750
7751 2009-04-10  Chao-ying Fu  <fu@mips.com>
7752
7753         * doc/tm.texi (Instruction Output): Document
7754         TARGET_ASM_FINAL_POSTSCAN_INSN.
7755         * target.h (final_postscan_insn): New field in asm_out.
7756         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7757         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
7758         * final.c (final_scan_insn): Call
7759         targetm.asm_out.final_postscan_insn after outputting
7760         an asm macro and a normal instruction.
7761
7762         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
7763         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
7764         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
7765         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
7766         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7767
7768 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7769
7770         PR middle-end/39701
7771         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
7772         variables as non-NULL even with -fdelete-null-pointer-checks.
7773
7774 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7775
7776         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
7777
7778 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7779
7780         PR target/39678
7781         * config/i386/i386.c (classify_argument): Handle SCmode with
7782         (bit_offset % 64) != 0.
7783
7784 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
7785
7786         * doc/invoke.texi (Optimize Options): Add cross-reference to
7787         -Q --help=optimizers examples.
7788
7789 2009-04-10  Ben Elliston  <bje@au.ibm.com>
7790
7791         PR target/36800
7792         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
7793         regalign for the reg == fpr and TDmode case.
7794
7795 2009-04-09  David Ayers  <ayers@fsfe.org>
7796
7797         PR objc/29200
7798         * objc/objc-act.c (warn_with_method): Remove helper function.
7799         (check_duplicates): Call warning and inform directly.
7800         (really_start_method): Likewise.
7801
7802 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7803
7804         * expmed.c (expand_divmod): Always use a comparison for a division
7805         by a large unsigned integer.
7806
7807         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
7808         for things others than variables or functions as nonzero.
7809
7810 2009-04-09  Nick Clifton  <nickc@redhat.com>
7811
7812         * unwind-compat.c: Change copyright header to refer to version
7813         3 of the GNU General Public License with version 3.1 of the
7814         GCC Runtime Library Exception and to point readers at the
7815         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
7816         * config/alpha/crtfastmath.c: Likewise.
7817         * config/alpha/linux-unwind.h: Likewise.
7818         * config/alpha/qrnnd.asm: Likewise.
7819         * config/alpha/vms-crt0-64.c: Likewise.
7820         * config/alpha/vms-crt0.c: Likewise.
7821         * config/alpha/vms-dwarf2.asm: Likewise.
7822         * config/alpha/vms-dwarf2eh.asm: Likewise.
7823         * config/alpha/vms-psxcrt0-64.c: Likewise.
7824         * config/alpha/vms-psxcrt0.c: Likewise.
7825         * config/alpha/vms_tramp.asm: Likewise.
7826         * config/arc/initfini.c: Likewise.
7827         * config/arc/lib1funcs.asm: Likewise.
7828         * config/arm/bpabi-v6m.S: Likewise.
7829         * config/arm/bpabi.S: Likewise.
7830         * config/arm/bpabi.c: Likewise.
7831         * config/arm/crti.asm: Likewise.
7832         * config/arm/crtn.asm: Likewise.
7833         * config/arm/ieee754-df.S: Likewise.
7834         * config/arm/ieee754-sf.S: Likewise.
7835         * config/arm/lib1funcs.asm: Likewise.
7836         * config/arm/libunwind.S: Likewise.
7837         * config/arm/linux-atomic.c: Likewise.
7838         * config/arm/mmintrin.h: Likewise.
7839         * config/arm/pr-support.c: Likewise.
7840         * config/arm/unaligned-funcs.c: Likewise.
7841         * config/arm/unwind-arm.c: Likewise.
7842         * config/arm/unwind-arm.h: Likewise.
7843         * config/avr/libgcc.S: Likewise.
7844         * config/bfin/crti.s: Likewise.
7845         * config/bfin/crtlibid.s: Likewise.
7846         * config/bfin/crtn.s: Likewise.
7847         * config/bfin/lib1funcs.asm: Likewise.
7848         * config/bfin/linux-unwind.h: Likewise.
7849         * config/cris/arit.c: Likewise.
7850         * config/cris/cris_abi_symbol.c: Likewise.
7851         * config/darwin-64.c: Likewise.
7852         * config/darwin-crt2.c: Likewise.
7853         * config/darwin-crt3.c: Likewise.
7854         * config/darwin.h: Likewise.
7855         * config/dbxelf.h: Likewise.
7856         * config/dfp-bit.c: Likewise.
7857         * config/dfp-bit.h: Likewise.
7858         * config/elfos.h: Likewise.
7859         * config/fixed-bit.c: Likewise.
7860         * config/fixed-bit.h: Likewise.
7861         * config/fp-bit.c: Likewise.
7862         * config/fp-bit.h: Likewise.
7863         * config/fr30/crti.asm: Likewise.
7864         * config/fr30/crtn.asm: Likewise.
7865         * config/fr30/lib1funcs.asm: Likewise.
7866         * config/freebsd-spec.h: Likewise.
7867         * config/frv/cmovd.c: Likewise.
7868         * config/frv/cmovh.c: Likewise.
7869         * config/frv/cmovw.c: Likewise.
7870         * config/frv/frvbegin.c: Likewise.
7871         * config/frv/frvend.c: Likewise.
7872         * config/frv/lib1funcs.asm: Likewise.
7873         * config/glibc-stdint.h: Likewise.
7874         * config/h8300/clzhi2.c: Likewise.
7875         * config/h8300/crti.asm: Likewise.
7876         * config/h8300/crtn.asm: Likewise.
7877         * config/h8300/ctzhi2.c: Likewise.
7878         * config/h8300/fixunssfsi.c: Likewise.
7879         * config/h8300/lib1funcs.asm: Likewise.
7880         * config/h8300/parityhi2.c: Likewise.
7881         * config/h8300/popcounthi2.c: Likewise.
7882         * config/i386/ammintrin.h: Likewise.
7883         * config/i386/att.h: Likewise.
7884         * config/i386/avxintrin.h: Likewise.
7885         * config/i386/biarch64.h: Likewise.
7886         * config/i386/bmmintrin.h: Likewise.
7887         * config/i386/cpuid.h: Likewise.
7888         * config/i386/cross-stdarg.h: Likewise.
7889         * config/i386/crtfastmath.c: Likewise.
7890         * config/i386/crtprec.c: Likewise.
7891         * config/i386/cygming-crtbegin.c: Likewise.
7892         * config/i386/cygming-crtend.c: Likewise.
7893         * config/i386/cygwin.asm: Likewise.
7894         * config/i386/emmintrin.h: Likewise.
7895         * config/i386/gmm_malloc.h: Likewise.
7896         * config/i386/gthr-win32.c: Likewise.
7897         * config/i386/i386.h: Likewise.
7898         * config/i386/immintrin.h: Likewise.
7899         * config/i386/linux-unwind.h: Likewise.
7900         * config/i386/linux64.h: Likewise.
7901         * config/i386/mm3dnow.h: Likewise.
7902         * config/i386/mmintrin-common.h: Likewise.
7903         * config/i386/mmintrin.h: Likewise.
7904         * config/i386/nmmintrin.h: Likewise.
7905         * config/i386/pmm_malloc.h: Likewise.
7906         * config/i386/pmmintrin.h: Likewise.
7907         * config/i386/smmintrin.h: Likewise.
7908         * config/i386/sol2-c1.asm: Likewise.
7909         * config/i386/sol2-ci.asm: Likewise.
7910         * config/i386/sol2-cn.asm: Likewise.
7911         * config/i386/sol2-gc1.asm: Likewise.
7912         * config/i386/tmmintrin.h: Likewise.
7913         * config/i386/unix.h: Likewise.
7914         * config/i386/w32-unwind.h: Likewise.
7915         * config/i386/wmmintrin.h: Likewise.
7916         * config/i386/x86-64.h: Likewise.
7917         * config/i386/x86intrin.h: Likewise.
7918         * config/i386/xmmintrin.h: Likewise.
7919         * config/ia64/crtbegin.asm: Likewise.
7920         * config/ia64/crtend.asm: Likewise.
7921         * config/ia64/crtfastmath.c: Likewise.
7922         * config/ia64/crti.asm: Likewise.
7923         * config/ia64/crtn.asm: Likewise.
7924         * config/ia64/fde-glibc.c: Likewise.
7925         * config/ia64/lib1funcs.asm: Likewise.
7926         * config/ia64/linux-unwind.h: Likewise.
7927         * config/ia64/quadlib.c: Likewise.
7928         * config/ia64/unwind-ia64.c: Likewise.
7929         * config/linux.h: Likewise.
7930         * config/m32c/m32c-lib1.S: Likewise.
7931         * config/m32c/m32c-lib2-trapv.c: Likewise.
7932         * config/m32c/m32c-lib2.c: Likewise.
7933         * config/m32r/initfini.c: Likewise.
7934         * config/m68hc11/larith.asm: Likewise.
7935         * config/m68hc11/m68hc11-crt0.S: Likewise.
7936         * config/m68k/cf.md: Likewise.
7937         * config/m68k/crti.s: Likewise.
7938         * config/m68k/crtn.s: Likewise.
7939         * config/m68k/lb1sf68.asm: Likewise.
7940         * config/m68k/linux-unwind.h: Likewise.
7941         * config/mcore/crti.asm: Likewise.
7942         * config/mcore/crtn.asm: Likewise.
7943         * config/mcore/lib1.asm: Likewise.
7944         * config/mips/linux-unwind.h: Likewise.
7945         * config/mips/loongson.h: Likewise.
7946         * config/mips/mips16.S: Likewise.
7947         * config/mmix/crti.asm: Likewise.
7948         * config/mmix/crtn.asm: Likewise.
7949         * config/pa/fptr.c: Likewise.
7950         * config/pa/hpux-unwind.h: Likewise.
7951         * config/pa/lib2funcs.asm: Likewise.
7952         * config/pa/linux-atomic.c: Likewise.
7953         * config/pa/linux-unwind.h: Likewise.
7954         * config/pa/milli64.S: Likewise.
7955         * config/pa/quadlib.c: Likewise.
7956         * config/pa/stublib.c: Likewise.
7957         * config/picochip/libgccExtras/adddi3.asm: Likewise.
7958         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
7959         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
7960         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
7961         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
7962         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
7963         * config/picochip/libgccExtras/divmod15.asm: Likewise.
7964         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
7965         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
7966         * config/picochip/libgccExtras/longjmp.asm: Likewise.
7967         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
7968         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
7969         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
7970         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
7971         * config/picochip/libgccExtras/setjmp.asm: Likewise.
7972         * config/picochip/libgccExtras/subdi3.asm: Likewise.
7973         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
7974         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
7975         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
7976         * config/rs6000/750cl.h: Likewise.
7977         * config/rs6000/altivec.h: Likewise.
7978         * config/rs6000/biarch64.h: Likewise.
7979         * config/rs6000/crtresfpr.asm: Likewise.
7980         * config/rs6000/crtresgpr.asm: Likewise.
7981         * config/rs6000/crtresxfpr.asm: Likewise.
7982         * config/rs6000/crtresxgpr.asm: Likewise.
7983         * config/rs6000/crtsavfpr.asm: Likewise.
7984         * config/rs6000/crtsavgpr.asm: Likewise.
7985         * config/rs6000/darwin-asm.h: Likewise.
7986         * config/rs6000/darwin-fallback.c: Likewise.
7987         * config/rs6000/darwin-fpsave.asm: Likewise.
7988         * config/rs6000/darwin-ldouble.c: Likewise.
7989         * config/rs6000/darwin-tramp.asm: Likewise.
7990         * config/rs6000/darwin-unwind.h: Likewise.
7991         * config/rs6000/darwin-vecsave.asm: Likewise.
7992         * config/rs6000/darwin-world.asm: Likewise.
7993         * config/rs6000/e500crtres32gpr.asm: Likewise.
7994         * config/rs6000/e500crtres64gpr.asm: Likewise.
7995         * config/rs6000/e500crtres64gprctr.asm: Likewise.
7996         * config/rs6000/e500crtrest32gpr.asm: Likewise.
7997         * config/rs6000/e500crtrest64gpr.asm: Likewise.
7998         * config/rs6000/e500crtresx32gpr.asm: Likewise.
7999         * config/rs6000/e500crtresx64gpr.asm: Likewise.
8000         * config/rs6000/e500crtsav32gpr.asm: Likewise.
8001         * config/rs6000/e500crtsav64gpr.asm: Likewise.
8002         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
8003         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
8004         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
8005         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
8006         * config/rs6000/eabi-ci.asm: Likewise.
8007         * config/rs6000/eabi-cn.asm: Likewise.
8008         * config/rs6000/eabi.asm: Likewise.
8009         * config/rs6000/linux-unwind.h: Likewise.
8010         * config/rs6000/linux64.h: Likewise.
8011         * config/rs6000/paired.h: Likewise.
8012         * config/rs6000/paired.md: Likewise.
8013         * config/rs6000/ppc64-fp.c: Likewise.
8014         * config/rs6000/ppu_intrinsics.h: Likewise.
8015         * config/rs6000/rs6000.h: Likewise.
8016         * config/rs6000/si2vmx.h: Likewise.
8017         * config/rs6000/sol-ci.asm: Likewise.
8018         * config/rs6000/sol-cn.asm: Likewise.
8019         * config/rs6000/spe.h: Likewise.
8020         * config/rs6000/spu2vmx.h: Likewise.
8021         * config/rs6000/sysv4.h: Likewise.
8022         * config/rs6000/tramp.asm: Likewise.
8023         * config/rs6000/vec_types.h: Likewise.
8024         * config/s390/linux-unwind.h: Likewise.
8025         * config/s390/tpf-unwind.h: Likewise.
8026         * config/score/crti.asm: Likewise.
8027         * config/score/crtn.asm: Likewise.
8028         * config/sh/crt1.asm: Likewise.
8029         * config/sh/crti.asm: Likewise.
8030         * config/sh/crtn.asm: Likewise.
8031         * config/sh/divtab-sh4-300.c: Likewise.
8032         * config/sh/divtab-sh4.c: Likewise.
8033         * config/sh/divtab.c: Likewise.
8034         * config/sh/lib1funcs-4-300.asm: Likewise.
8035         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
8036         * config/sh/lib1funcs.asm: Likewise.
8037         * config/sh/lib1funcs.h: Likewise.
8038         * config/sh/linux-atomic.asm: Likewise.
8039         * config/sh/linux-unwind.h: Likewise.
8040         * config/sh/shmedia.h: Likewise.
8041         * config/sh/sshmedia.h: Likewise.
8042         * config/sh/ushmedia.h: Likewise.
8043         * config/sparc/crtfastmath.c: Likewise.
8044         * config/sparc/linux-unwind.h: Likewise.
8045         * config/sparc/sol2-c1.asm: Likewise.
8046         * config/sparc/sol2-ci.asm: Likewise.
8047         * config/sparc/sol2-cn.asm: Likewise.
8048         * config/spu/divmodti4.c: Likewise.
8049         * config/spu/divv2df3.c: Likewise.
8050         * config/spu/float_disf.c: Likewise.
8051         * config/spu/float_unsdidf.c: Likewise.
8052         * config/spu/float_unsdisf.c: Likewise.
8053         * config/spu/float_unssidf.c: Likewise.
8054         * config/spu/mfc_multi_tag_release.c: Likewise.
8055         * config/spu/mfc_multi_tag_reserve.c: Likewise.
8056         * config/spu/mfc_tag_release.c: Likewise.
8057         * config/spu/mfc_tag_reserve.c: Likewise.
8058         * config/spu/mfc_tag_table.c: Likewise.
8059         * config/spu/multi3.c: Likewise.
8060         * config/spu/spu_internals.h: Likewise.
8061         * config/spu/spu_intrinsics.h: Likewise.
8062         * config/spu/spu_mfcio.h: Likewise.
8063         * config/spu/vec_types.h: Likewise.
8064         * config/spu/vmx2spu.h: Likewise.
8065         * config/stormy16/stormy16-lib2.c: Likewise.
8066         * config/svr4.h: Likewise.
8067         * config/sync.c: Likewise.
8068         * config/v850/lib1funcs.asm: Likewise.
8069         * config/vxlib-tls.c: Likewise.
8070         * config/vxlib.c: Likewise.
8071         * config/vxworks-dummy.h: Likewise.
8072         * config/xtensa/crti.asm: Likewise.
8073         * config/xtensa/crtn.asm: Likewise.
8074         * config/xtensa/ieee754-df.S: Likewise.
8075         * config/xtensa/ieee754-sf.S: Likewise.
8076         * config/xtensa/lib1funcs.asm: Likewise.
8077         * config/xtensa/lib2funcs.S: Likewise.
8078         * config/xtensa/linux-unwind.h: Likewise.
8079         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
8080         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
8081         * coretypes.h: Likewise.
8082         * crtstuff.c: Likewise.
8083         * defaults.h: Likewise.
8084         * dwarf2.h: Likewise.
8085         * emutls.c: Likewise.
8086         * gbl-ctors.h: Likewise.
8087         * gcov-io.h: Likewise.
8088         * ginclude/float.h: Likewise.
8089         * ginclude/iso646.h: Likewise.
8090         * ginclude/stdarg.h: Likewise.
8091         * ginclude/stdbool.h: Likewise.
8092         * ginclude/stddef.h: Likewise.
8093         * ginclude/stdfix.h: Likewise.
8094         * ginclude/stdint-gcc.h: Likewise.
8095         * ginclude/tgmath.h: Likewise.
8096         * gthr-aix.h: Likewise.
8097         * gthr-dce.h: Likewise.
8098         * gthr-gnat.c: Likewise.
8099         * gthr-gnat.h: Likewise.
8100         * gthr-lynx.h: Likewise.
8101         * gthr-mipssde.h: Likewise.
8102         * gthr-nks.h: Likewise.
8103         * gthr-posix.c: Likewise.
8104         * gthr-posix.h: Likewise.
8105         * gthr-posix95.h: Likewise.
8106         * gthr-rtems.h: Likewise.
8107         * gthr-single.h: Likewise.
8108         * gthr-solaris.h: Likewise.
8109         * gthr-tpf.h: Likewise.
8110         * gthr-vxworks.h: Likewise.
8111         * gthr-win32.h: Likewise.
8112         * gthr.h: Likewise.
8113         * libgcc2.c: Likewise.
8114         * libgcc2.h: Likewise.
8115         * libgcov.c: Likewise.
8116         * tsystem.h: Likewise.
8117         * typeclass.h: Likewise.
8118         * unwind-c.c: Likewise.
8119         * unwind-compat.h: Likewise.
8120         * unwind-dw2-fde-compat.c: Likewise.
8121         * unwind-dw2-fde-darwin.c: Likewise.
8122         * unwind-dw2-fde-glibc.c: Likewise.
8123         * unwind-dw2-fde.c: Likewise.
8124         * unwind-dw2-fde.h: Likewise.
8125         * unwind-dw2.c: Likewise.
8126         * unwind-dw2.h: Likewise.
8127         * unwind-generic.h: Likewise.
8128         * unwind-pe.h: Likewise.
8129         * unwind-sjlj.c: Likewise.
8130         * unwind.inc: Likewise.
8131         * config/arm/neon-gen.ml: Change generated copyright header to
8132         refer to version 3 of the GNU General Public License with
8133         version 3.1 of the GCC Runtime Library Exception and to point
8134         readers at the COPYING3 and COPYING3.RUNTIME files and the
8135         FSF's license web page.
8136         * config/arm/arm_neon.h: Regenerate.
8137
8138 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
8139
8140         * config/cris/cris.md: Change copyright header to refer to version
8141         3 of the GNU General Public License.
8142         * doc/install.texi2html: Change copyright header to refer to version
8143         3 of the GNU General Public License and to point readers at the
8144         COPYING3 file and the FSF's license web page.
8145         * config/vax/linux.h: Likewise.
8146
8147 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
8148
8149         * config/i386/i386.md (cmpcc): New.
8150         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
8151         (sync_compare_and_swap_cc*): Delete.
8152
8153         * config/s390/s390.c (s390_compare_emitted): Remove.
8154         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
8155         s390_compare_emitted used to be handled.  Assert that modes match.
8156         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
8157         refer to sync_compare_and_swap_ccsi.
8158         * config/s390/s390.h (s390_compare_emitted): Remove.
8159         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
8160         instead of s390_compare_emitted.
8161         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
8162         instead of s390_compare_emitted.
8163         * config/s390/s390.md (cmpcc): New.
8164         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
8165         CC_REGNUM, do not pretend it's set.
8166         (sync_compare_and_swap_cc*): Delete.
8167         * config/s390/predicates.md (cc_reg_operand): New.
8168
8169         * expr.c (sync_compare_and_swap_cc): Delete.
8170         * optabs.h (sync_compare_and_swap_cc): Delete.
8171         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
8172         is being used with can_compare_p.
8173         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
8174         (find_cc_set): New.
8175         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
8176         look for a MODE_CC set instead.  Use emit_store_flag.
8177         (expand_compare_and_swap_loop): Likewise, with some additional
8178         complication to avoid a force_reg when useless.  Use
8179         emit_cmp_and_jump_insns.
8180         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
8181         * doc/md.texi (sync_compare_and_swap_cc): Merge with
8182         sync_compare_and_swap documentation.
8183
8184 2009-04-09  Jan Hubicka  <jh@suse.cz>
8185
8186         * except.c (find_prev_try): Break out from ....
8187         (duplicate_eh_regions): ... here; properly update prev_try pointers
8188         when duplication part of tree.
8189         (dump_eh_tree): Improve dumping.
8190         (verify_eh_region): New.
8191         (verify_eh_tree): Use it.
8192
8193 2009-04-06  Richard Guenther  <rguenther@suse.de>
8194
8195         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
8196         &ARRAY addresses by adjusting their types and prepending
8197         a conversion.
8198         * tree-cfg.c (verify_gimple_assign_single): Verify that
8199         addresses are correct.
8200
8201 2009-04-09  Richard Guenther  <rguenther@suse.de>
8202
8203         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
8204         indices into an array reference if possible.
8205         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
8206         Fold POINTER_PLUS_EXPR statements with invariant address.
8207
8208 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
8209
8210         PR target/39634
8211         * config.gcc (powerpc64-*-linux*): Always build biarch.
8212
8213 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
8214
8215         PR c/39613
8216         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
8217         it and pedwarn if this results in an INTEGER_CST.
8218
8219 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8220
8221         * doc/install.texi: Update minimum GMP version.  Remove obsolete
8222         text in MPFR section.
8223
8224 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
8225
8226         * dwarf2out.c (class_scope_p): New static inline.
8227         (class_or_namespace_scope_p): Use it.
8228         (gen_variable_die): Use DW_TAG_member tag for static data member
8229         declarations instead of DW_TAG_variable.
8230
8231         PR middle-end/39573
8232         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
8233         variables.
8234
8235 2009-04-08  Richard Guenther  <rguenther@suse.de>
8236
8237         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
8238         valueize random data.
8239
8240 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
8241
8242         * config.gcc (aix tm_file):  Add aix-stdint.h.
8243         (aix tm clause use_gcc_stdint):  Set to wrap.
8244         * config/rs6000/aix-stdint.h:  New file.
8245
8246 2009-04-08  Richard Guenther  <rguenther@suse.de>
8247
8248         PR middle-end/36291
8249         * tree-dfa.c (add_referenced_var): Do not recurse into
8250         global initializers.
8251         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
8252         exposed variables.
8253         (fold_const_aggregate_ref): Likewise.
8254
8255 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8256
8257         * recog.c (ordered_comparison_operator): New.
8258         * gensupport.c (std_preds): Add it.
8259         * doc/md.texi (Machine-Independent Predicates): Document it.
8260
8261 2009-04-08  Jan Hubicka  <jh@suse.cz>
8262
8263         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
8264         * function.h (rtl_eh): Remove exception_handler_label_map.
8265         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
8266         remove_exception_handler_label, for_each_eh_label_1): Remove.
8267         (rtl_remove_unreachable_regions): Remove.
8268         (convert_from_eh_region_ranges): Do not remove unreachable regions.
8269         (find_exception_handler_labels): Don't build the hashtable.
8270         (maybe_remove_eh_handler): Remove.
8271         (for_each_eh_label): Rewrite to walk the tree.
8272         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
8273         * except.h (maybe_remove_eh_handler): Remove.
8274         * passes.c (init_optimization_passes): Schedule second EH cleanup
8275         before out-of-ssa.
8276         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
8277         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
8278
8279 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8280
8281         * genoutput.c (validate_optab_operands): New.
8282         (gen_insn, gen_expand): Call it.
8283
8284         * genflags.c (gen_insn): Detect misused iterators.
8285         (main): Pass line_no to gen_insn, exit with status 1 on error.
8286
8287         * genextract.c (line_no): Make global.
8288         (VEC_safe_set_locstr): Change assertion to error message.
8289         (main): Exit with status 1 on error.
8290
8291 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
8292
8293         PR c/39614
8294         PR c/39673
8295         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
8296         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
8297         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
8298         * c-convert.c (convert): Do not call fold on results of conversion
8299         functions when the result is a C_MAYBE_CONST_EXPR.
8300         * c-parser.c (c_parser_postfix_expression): Do not fold condition
8301         of __builtin_choose_expr.
8302         * c-typeck.c (remove_c_maybe_const_expr): New.
8303         (build_unary_op, build_conditional_expr, build_compound_expr,
8304         build_binary_op, c_objc_common_truthvalue_conversion): Call
8305         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
8306         integer operands.
8307
8308 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
8309
8310         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
8311         CODE to produce a new one. Add a prototype to use fold_convert_const
8312
8313 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
8314
8315         PR bootstrap/39660
8316         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
8317         mix declarations and code.
8318
8319 2009-04-08  Ben Elliston  <bje@au.ibm.com>
8320
8321         * gcc.c: Replace `CC' with `GCC' throughout.
8322
8323 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8324
8325         * doc/invoke.texi: Document Atom support.
8326
8327 2009-04-07  Jason Merrill  <jason@redhat.com>
8328
8329         PR c++/25185
8330         * c-common.h, c-common.c: Add flag_pretty_templates.
8331         * c-opts.c (c_common_handle_option): Set it.
8332         * c.opt: Add -fno-pretty-templates.
8333         * doc/invoke.texi (C++ Dialect Options): Likewise.
8334
8335 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
8336
8337         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
8338         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
8339         (ia64_expand_builtin): Likewise.
8340
8341 2009-04-07  Martin Jambor  <mjambor@suse.cz>
8342
8343         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
8344         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
8345         ADDR_EXPRS are include too.
8346
8347 2009-04-07  Richard Guenther  <rguenther@suse.de>
8348
8349         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
8350         decls are only used if passes as parameters or if they are
8351         local statics and the call is not to a builtin.
8352         (call_may_clobber_ref_p_1): Likewise.
8353
8354 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8355
8356         * expr.c (do_store_flag): Remove last argument.  Simplify code
8357         to avoid duplication of tests already done by can_compare_p.
8358         (expand_expr_real_1): Adjust caller.
8359
8360 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8361
8362         * optabs.c (can_compare_p): Test the predicate of a
8363         cbranch and cstore pattern.
8364
8365 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8366
8367         * expr.c (convert_move): Use emit_store_flag instead of
8368         "emulating" it.
8369
8370 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8371
8372         * config/i386/i386.c (ix86_compare_emitted): Remove.
8373         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
8374         ix86_compare_op0 like ix86_compare_emitted used to be handled.
8375         * config/i386/i386.h (ix86_compare_emitted): Remove.
8376         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
8377         instead of ix86_compare_emitted.
8378         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
8379
8380 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
8381
8382         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
8383         Add t-sysroot-suffix to tmake_file.
8384         * config/print-sysroot-suffix.sh: New file.
8385         * config/t-sysroot-suffix: New file.
8386
8387 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8388
8389         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
8390         as the latter produces a warning when the target does not support
8391         infinity.
8392
8393 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8394
8395         * dfp.c: Replace type punning assignments with memcpy throughout.
8396         * Makefile.in (dfp.o-warn): Remove.
8397
8398 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
8399
8400         PR target/39634
8401         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
8402         Include soft-fp/t-softfp after rs6000/t-linux64.
8403
8404 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8405
8406         * stor-layout.c (set_sizetype): Use the full precision of their
8407         machine mode for bitsize types.
8408
8409 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
8410
8411         * config/i386/i386.md: Revert 2 accidental checkins.
8412
8413 2009-04-06  Joey Ye  <joey.ye@intel.com>
8414             Xuepeng Guo  <xuepeng.guo@intel.com>
8415             H.J. Lu  <hongjiu.lu@intel.com>
8416
8417         Atom pipeline model, tuning and insn selection.
8418         * config.gcc (atom): Add atom config options and target.
8419
8420         * config/i386/atom.md: New.
8421
8422         * config/i386/i386.c (atom_cost): New cost.
8423         (m_ATOM): New macro flag.
8424         (initial_ix86_tune_features): Set m_ATOM.
8425         (x86_accumulate_outgoing_args): Likewise.
8426         (x86_arch_always_fancy_math_387): Likewise.
8427         (processor_target): Add Atom cost.
8428         (cpu_names): Add Atom cpu name.
8429         (override_options): Set Atom ISA.
8430         (ix86_issue_rate): New case PROCESSOR_ATOM.
8431         (ix86_adjust_cost): Likewise.
8432
8433         * config/i386/i386.h (TARGET_ATOM): New target macro.
8434         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
8435         (TARGET_OPT_AGU): New target option.
8436         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
8437         (processor_type): Add PROCESSOR_ATOM.
8438
8439         * config/i386/i386.md (cpu): Add new value "atom".
8440         (use_carry, movu): New attr.
8441         (atom.md): Include atom.md.
8442         (adddi3_carry_rex64): Set attr "use_carry".
8443         (addqi3_carry): Likewise.
8444         (addhi3_carry): Likewise.
8445         (addsi3_carry): Likewise.
8446         (*addsi3_carry_zext): Likewise.
8447         (subdi3_carry_rex64): Likewise.
8448         (subqi3_carry): Likewise.
8449         (subhi3_carry): Likewise.
8450         (subsi3_carry): Likewise.
8451         (x86_movdicc_0_m1_rex64): Likewise.
8452         (*x86_movdicc_0_m1_se): Likewise.
8453         (x86_movsicc_0_m1): Likewise.
8454         (*x86_movsicc_0_m1_se): Likewise.
8455         (*adddi_1_rex64): Emit add insn as much as possible.
8456         (*addsi_1): Likewise.
8457         (return_internal): Set atom_unit.
8458         (return_internal_long): Likewise.
8459         (return_pop_internal): Likewise.
8460         (*rcpsf2_sse): Set atom_sse_attr attr.
8461         (*qrt<mode>2_sse): Likewise.
8462         (*prefetch_sse): Likewise.
8463
8464         * config/i386/i386-c.c (ix86_target_macros_internal): New case
8465         PROCESSOR_ATOM.
8466         (ix86_target_macros_internal): Likewise.
8467
8468         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
8469         (*prefetch_sse_rex): Likewise.
8470         (sse_rcpv4sf2): Likewise.
8471         (sse_vmrcpv4sf2): Likewise.
8472         (sse_sqrtv4sf2): Likewise.
8473         (<sse>_vmsqrt<mode>2): Likewise.
8474         (sse_ldmxcsr): Likewise.
8475         (sse_stmxcsr): Likewise.
8476         (*sse_sfence): Likewise.
8477         (sse2_clflush): Likewise.
8478         (*sse2_mfence): Likewise.
8479         (*sse2_lfence): Likewise.
8480         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
8481         (<sse>_movup<ssemodesuffixf2c>): Likewise.
8482         (avx_movdqu<avxmodesuffix>): Likewise.
8483         (avx_lddqu<avxmodesuffix>): Likewise.
8484         (sse2_movntv2di): Change attr "type" to "ssemov".
8485         (sse2_movntsi): Likewise.
8486         (rsqrtv8sf2): Change attr "type" to "sseadd".
8487         (sse3_addsubv2df3): Set attr "atom_unit".
8488         (sse3_h<plusminus_insn>v4sf3): Likewise.
8489         (*sse2_pmaddwd): Likewise.
8490         (*vec_extractv2di_1_rex64): Likewise.
8491         (*vec_extractv2di_1_avx): Likewise.
8492         (sse2_psadbw): Likewise.
8493         (ssse3_phaddwv8hi3): Likewise.
8494         (ssse3_phaddwv4hi3): Likewise.
8495         (ssse3_phadddv4si3): Likewise.
8496         (ssse3_phadddv2si3): Likewise.
8497         (ssse3_phaddswv8hi3): Likewise.
8498         (ssse3_phaddswv4hi3): Likewise.
8499         (ssse3_phsubwv8hi3): Likewise.
8500         (ssse3_phsubwv4hi3): Likewise.
8501         (ssse3_phsubdv4si3): Likewise.
8502         (ssse3_phsubdv2si3): Likewise.
8503         (ssse3_phsubswv8hi3): Likewise.
8504         (ssse3_phsubswv4hi3): Likewise.
8505         (ssse3_pmaddubsw128): Likewise.
8506         (sse3_pmaddubsw: Likewise.
8507         (ssse3_palignrti): Likewise.
8508         (ssse3_palignrdi): Likewise.
8509
8510 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
8511
8512         * doc/install.texi (Specific): Fix two cross-references to MinGW.
8513
8514 2009-04-06  Richard Guenther  <rguenther@suse.de>
8515
8516         PR tree-optimization/28868
8517         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
8518         of which PHI results we inserted.
8519         (insert_into_preds_of_block): Record inserted PHIs.
8520         (eliminate): Eliminate redundant PHI nodes.
8521         (init_pre): Init inserted_phi_names.
8522
8523 2009-04-06  Richard Guenther  <rguenther@suse.de>
8524
8525         PR tree-optimization/39643
8526         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
8527         IMAGPART_EXPRs of complex constants.
8528         (execute_fold_all_builtins): If we folded a call queue
8529         TODO_update_address_taken.
8530
8531 2009-04-06  Jan Hubicka  <jh@suse.cz>
8532
8533         PR middle-end/39659
8534         * except.c (remove_unreachable_regions): Propagate may_contain_throw
8535         flag.
8536
8537 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
8538
8539         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
8540         delay slot.
8541         (ic_invalidate_array): Likewise.
8542
8543 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
8544
8545         * calls.c (emit_library_call_value_1): Fix a problem with parameter
8546         alignment for library calls.
8547
8548 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
8549
8550         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
8551         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
8552         * config/i386/mingw-stdint.h:  New file.
8553
8554 2009-04-05  Richard Guenther  <rguenther@suse.de>
8555
8556         PR tree-optimization/39648
8557         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
8558         our &A vs. &A[0] IL deficiencies.
8559
8560 2009-04-04  Jan Hubicka  <jh@suse.cz>
8561
8562         * except.c (sjlj_find_directly_reachable_regions): Be ready for
8563         removed toplevel regions.
8564         (sjlj_mark_call_sites): Likewise.
8565
8566 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
8567
8568         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
8569         (cygwin tm clause use_gcc_stdint):  Set to wrap.
8570         * config/i386/cygwin-stdint.h:  New file.
8571
8572 2009-04-04  Richard Guenther  <rguenther@suse.de>
8573
8574         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
8575         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
8576         single-argument PHIs if we are in loop-closed SSA form.
8577         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
8578         for the pre-condition.
8579         (slpeel_tree_peel_loop_to_edge): Likewise.
8580         (vect_build_loop_niters): Take an optional sequence to append stmts.
8581         (vect_generate_tmps_on_preheader): Likewise.
8582         (vect_do_peeling_for_loop_bound): Take extra guards for the
8583         pre-condition.
8584         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
8585         the cost model check.
8586         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
8587         guards if we are going to peel.  Do not apply versioning in that case.
8588         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
8589         (vect_do_peeling_for_loop_bound): Likewise.
8590         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
8591         loop bound only record extra pre-conditions, do not apply loop
8592         versioning.
8593
8594 2009-04-04  Richard Guenther  <rguenther@suse.de>
8595
8596         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
8597         renaming code.
8598
8599 2009-04-04  Jan Hubicka  <jh@suse.cz>
8600
8601         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
8602         last_basic_block for size of bb->index indexed array.
8603         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
8604         compute_out, link_btr_uses, build_btr_def_use_webs,
8605         build_btr_def_use_webs, migrate_btr_defs): Likewise.
8606
8607 2009-04-04  Jan Hubicka  <jh@suse.cz>
8608
8609         * except.c (remove_eh_handler_and_replace): Break out from ...
8610         (remove_eh_handler): ... here.
8611         (bring_to_root): New function.
8612         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
8613         handled ones, bring others to root of tree.
8614
8615 2009-04-04  Jan Hubicka  <jh@suse.cz>
8616
8617         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
8618         (all_phis_safe_to_merge): New function.
8619         (update_info): New structure.
8620         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
8621         (cleanup_empty_eh): Update SSA if possible.
8622
8623 2009-04-04  Richard Guenther  <rguenther@suse.de>
8624
8625         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
8626         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
8627         (append_vuse): Likewise.
8628
8629 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
8630
8631         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
8632         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
8633         instead of REG_UNSAVED for DW_CFA_undefined.
8634         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
8635         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
8636         outermost frame.
8637
8638 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
8639
8640         PR target/39501
8641         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
8642         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
8643         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
8644
8645 2009-04-04  Richard Guenther  <rguenther@suse.de>
8646
8647         PR tree-optimization/8781
8648         PR tree-optimization/37892
8649         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
8650         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
8651         (valueize_refs): Call it for *& valueizations.
8652         (shared_reference_ops_from_ref): Rename to ...
8653         (valueize_shared_reference_ops_from_ref): ... this and valueize.
8654         (shared_reference_ops_from_call): Rename to ...
8655         (valueize_shared_reference_ops_from_call): ... this and valueize.
8656         (vn_reference_lookup): Update.
8657         (visit_reference_op_call): Likewise.
8658         * tree-ssa-pre.c (phi_translate_1): Fold *&.
8659         (eliminate): Value-replace the call address in call statements.
8660
8661 2009-04-04  Richard Guenther  <rguenther@suse.de>
8662
8663         PR tree-optimization/39636
8664         * tree-ssa-forwprop.c
8665         (forward_propagate_addr_into_variable_array_index): Check for
8666         GIMPLE_ASSIGN before accessing the rhs code.
8667
8668 2009-04-03  Jason Merrill  <jason@redhat.com>
8669
8670         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
8671
8672 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
8673
8674         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
8675         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
8676         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
8677         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
8678         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
8679         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
8680         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
8681         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
8682         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
8683         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
8684         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
8685         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
8686         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
8687         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
8688         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
8689         Use fr_reg_or_fp01_operand instead of fr_register_operand
8690
8691         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
8692         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
8693         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
8694
8695 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
8696
8697         PR rtl-optimization/39607
8698         PR rtl-optimization/39631
8699
8700         Revert:
8701
8702         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
8703         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
8704         instead of DF_LR_OUT.
8705         * ira-lives.c (process_bb_node_lives): Ditto.
8706         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
8707         instead of DF_LR_{OUT,IN}.
8708         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
8709         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
8710
8711 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
8712
8713         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
8714         (execute_lower_omp): Always run but take the short way out if -fopenmp
8715         is not given.
8716         (gate_lower_omp): Remove, forcing the pass manager to always run the
8717         pass and always set PROP_gimple_lomp.
8718         (pass_lower_omp): Remove gate function.
8719         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
8720         PROP_trees.  Instead, require it.
8721         * ipa-cp.c (pass_ipa_cp): Likewise.
8722         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
8723         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
8724         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
8725         and PROP_gimple_leh.
8726
8727 2009-04-03  Richard Guenther  <rguenther@suse.de>
8728
8729         PR middle-end/13146
8730         PR tree-optimization/23940
8731         PR tree-optimization/33237
8732         PR middle-end/33974
8733         PR middle-end/34093
8734         PR tree-optimization/36201
8735         PR tree-optimization/36230
8736         PR tree-optimization/38049
8737         PR tree-optimization/38207
8738         PR tree-optimization/38230
8739         PR tree-optimization/38301
8740         PR tree-optimization/38585
8741         PR middle-end/38895
8742         PR tree-optimization/38985
8743         PR tree-optimization/39299
8744         * tree-ssa-structalias.h: Remove.
8745         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
8746         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
8747         (struct vuse_element_d): Remove.
8748         (struct vuse_vec_d): Likewise.
8749         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
8750         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
8751         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
8752         VUSE_ELEMENT_VAR): Likewise.
8753         (struct voptype_d): Likewise.
8754         (NUM_VOP_FREE_BUCKETS): Likewise.
8755         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
8756         (struct stmt_operands_d): Remove.
8757         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
8758         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
8759         VDEF_NUM, VDEF_VECT): Likewise.
8760         (copy_virtual_operands): Remove.
8761         (operand_build_cmp): Likewise.
8762         (create_ssa_artificial_load_stmt): Likewise.
8763         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
8764         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
8765         vuse_index and mayuse_index members.  Pack and move done and iter_type
8766         members to the front.
8767         (SSA_OP_VMAYUSE): Remove.
8768         (SSA_OP_VIRTUAL_USES): Adjust.
8769         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
8770         (unlink_stmt_vdef): Declare.
8771         (add_to_addressable_set): Remove.
8772         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
8773         (vrp_visit_stmt): Likewise.
8774         * doc/tree-ssa.texi (Alias analysis): Update.
8775         * doc/invoke.texi (max-aliased-vops): Remove docs.
8776         (avg-aliased-vops): Likewise.
8777         * tree-into-ssa.c (syms_to_rename): Remove.
8778         (need_to_update_vops_p): Likewise.
8779         (need_to_initialize_update_ssa_p): Rename to ...
8780         (update_ssa_initialized_fn): ... this.  Track function we are
8781         initialized for.
8782         (symbol_marked_for_renaming): Simplify.
8783         (add_new_name_mapping): Do not set need_to_update_vops_p.
8784         (dump_currdefs): Use SYMS_TO_RENAME.
8785         (rewrite_update_stmt): Always walk all uses/defs.
8786         (dump_update_ssa): Adjust.
8787         (init_update_ssa): Take function argument.  Track what we are
8788         initialized for.
8789         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
8790         (create_new_def_for): Initialize for cfun, assert we are initialized
8791         for cfun.
8792         (mark_sym_for_renaming): Simplify.
8793         (mark_set_for_renaming): Do not initialize update-ssa.
8794         (need_ssa_update_p): Simplify.  Take function argument.
8795         (name_mappings_registered_p): Assert we ask for the correct function.
8796         (name_registered_for_update_p): Likewise.
8797         (ssa_names_to_replace): Likewise.
8798         (release_ssa_name_after_update_ssa): Likewise.
8799         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
8800         (dump_decl_set): Do not print a newline.
8801         (debug_decl_set): Do it here.
8802         (dump_update_ssa): And here.
8803         * tree-ssa-loop-im.c (move_computations): Adjust.
8804         (movement_possibility): Likewise.
8805         (determine_max_movement): Likewise.
8806         (gather_mem_refs_stmt): Likewise.
8807         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
8808         or NAME_MEMORY_TAG.
8809         * tree-complex.c (update_all_vops): Remove.
8810         (expand_complex_move): Adjust.
8811         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
8812         Simplify test for memory referencing statement.  Exclude
8813         non-invariant ADDR_EXPRs.
8814         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
8815         * tree-loop-distribution.c (generate_memset_zero): Adjust.
8816         (rdg_flag_uses): Likewise.
8817         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
8818         related code.
8819         (tree_optimize_tail_calls_1): Also split the
8820         edge from the entry block if we have degenerate PHI nodes in
8821         the first basic block.
8822         * tree.c (init_ttree): Remove memory-tag related code.
8823         (tree_code_size): Likewise.
8824         (tree_node_structure): Likewise.
8825         (build7_stat): Re-write to be build6_stat.
8826         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
8827         (SSA_VAR_P): Adjust.
8828         (struct tree_memory_tag): Remove.
8829         (struct tree_memory_partition_tag): Likewise.
8830         (union tree_node): Adjust.
8831         (build7): Re-write to be build6.
8832         * tree-pass.h (pass_reset_cc_flags): Remove.
8833         (TODO_update_address_taken): New flag.
8834         (pass_simple_dse): Remove.
8835         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
8836         * params.h (MAX_ALIASED_VOPS): Remove.
8837         (AVG_ALIASED_VOPS): Likewise.
8838         * omp-low.c (expand_omp_taskreg): Update SSA form.
8839         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
8840         aliases the lhs in a copy stmt.
8841         * tree-ssa-dse.c (struct address_walk_data): Remove.
8842         (memory_ssa_name_same): Likewise.
8843         (memory_address_same): Likewise.
8844         (get_kill_of_stmt_lhs): Likewise.
8845         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
8846         unused stores.  Look through PHI nodes into post-dominated regions.
8847         (dse_optimize_stmt): Simplify.  Properly remove stores.
8848         (tree_ssa_dse): Compute dominators.
8849         (execute_simple_dse): Remove.
8850         (pass_simple_dse): Likewise.
8851         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
8852         gimple_loaded_syms and gimple_stored_syms computation.
8853         * toplev.c (dump_memory_report): Dump alias and pta stats.
8854         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
8855         (vn_reference_eq): Likewise.
8856         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
8857         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
8858         valueize_vuses): Remove.
8859         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
8860         (get_def_ref_stmt_vuse): ... this.
8861         (vn_reference_lookup_2): New function.
8862         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
8863         walking equivalent vuses.  Simplify.
8864         (vn_reference_lookup): Likewise.
8865         (vn_reference_insert): Likewise.
8866         (vn_reference_insert_pieces): Likewise.
8867         (visit_reference_op_call): Simplify.
8868         (visit_reference_op_load): Likewise.
8869         (visit_reference_op_store): Likewise.
8870         (init_scc_vn): Remove shared_lookup_vuses initialization.
8871         (free_scc_vn): Remove shared_lookup_vuses freeing.
8872         (sort_vuses, sort_vuses_heap): Remove.
8873         (get_ref_from_reference_ops): Export.
8874         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
8875         vector with single vuse pointer.
8876         (vn_reference_lookup_pieces, vn_reference_lookup,
8877         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
8878         (shared_vuses_from_stmt): Remove.
8879         (get_ref_from_reference_ops): Declare.
8880         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
8881         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8882         memory-tag related code.
8883         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
8884         (likely_value): Add comment, skip static-chain of call statements.
8885         (surely_varying_stmt_p): Adjust.
8886         (gimplify_and_update_call_from_tree): Likewise.
8887         (execute_fold_all_builtins): Do not rebuild alias info.
8888         (gimplify_and_update_call_from_tree): Properly update VOPs.
8889         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
8890         (copy_ref_info): Remove memory-tag related code.
8891         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
8892         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
8893         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
8894         computation.
8895         * tree-ssa-dom.c (gimple_p): Remove typedef.
8896         (eliminate_redundant_computations): Adjust.
8897         (record_equivalences_from_stmt): Likewise.
8898         (avail_expr_hash): Likewise.
8899         (avail_expr_eq): Likewise.
8900         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
8901         (stmt_makes_single_load): Likewise.
8902         (stmt_makes_single_store): Likewise.
8903         * tree-ssa-alias.c: Rewrite completely.
8904         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
8905         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
8906         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
8907         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
8908         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
8909         Remove public functions.
8910         (pass_reset_cc_flags): Remove.
8911         (pass_build_alias): Move ...
8912         * tree-ssa-structalias.c (pass_build_alias): ... here.
8913         * tree-ssa-alias.c (may_be_aliased): Move ...
8914         * tree-flow-inline.h (may_be_aliased): ... here.
8915         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
8916         count_uses_and_derefs): Move ...
8917         * gimple.c: ... here.
8918         * gimple.h (count_uses_and_derefs): Declare.
8919         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
8920         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
8921         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
8922         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
8923         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
8924         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
8925         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
8926         New functions.
8927         * tree-dfa.c (refs_may_alias_p): Move ...
8928         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
8929         * tree-ssa-alias.h: New file.
8930         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
8931         (statement_sink_location): Likewise.
8932         * opts.c (decode_options): Do not adjust max-aliased-vops or
8933         avg-aliased-vops values.
8934         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
8935         (TV_CALL_CLOBBER): Likewise.
8936         (TV_FLOW_SENSITIVE): Likewise.
8937         (TV_FLOW_INSENSITIVE): Likewise.
8938         (TV_MEMORY_PARTITIONING): Likewise.
8939         (TV_ALIAS_STMT_WALK): New timevar.
8940         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
8941         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
8942         (get_address_description): Remove memory-tag related code.
8943         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
8944         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
8945         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
8946         and immediate uses in statements.  Document.
8947         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
8948         (dump_symbols): Remove.
8949         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
8950         * alias.c (get_deref_alias_set): New function split out from ...
8951         (get_alias_set): ... here.
8952         * alias.h (get_deref_alias_set): Declare.
8953         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
8954         type parameter.  Remove restrict pointer handling.  Create a
8955         ref-all pointer in case type-based alias sets do not conflict.
8956         (vect_analyze_data_refs): Remove SMT related code.
8957         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
8958         (vectorizable_load): Likewise.
8959         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
8960         (DR_SYMBOL_TAG, DR_VOPS): Remove.
8961         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
8962         Ignore vops and SMTs.
8963         (dr_analyze_alias): Likewise..
8964         (free_data_ref): Likewise.
8965         (create_data_ref): Likewise.
8966         (analyze_all_data_dependences): Likewise.
8967         (get_references_in_stmt): Adjust.
8968         * tree-flow-inline.h (gimple_aliases_computed_p,
8969         gimple_addressable_vars, gimple_call_clobbered_vars,
8970         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
8971         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
8972         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
8973         gimple_mem_ref_stats): Remove.
8974         (gimple_vop): New function.
8975         (op_iter_next_use): Remove vuses and mayuses cases.
8976         (op_iter_next_def): Remove vdefs case.
8977         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
8978         (clear_and_done_ssa_iter): Do not set removed fields.
8979         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
8980         Assert we are not iterating over vuses or vdefs if not also
8981         iterating over uses or defs.
8982         (op_iter_init_use): Likewise.
8983         (op_iter_init_def): Likewise.
8984         (op_iter_next_vdef): Remove.
8985         (op_iter_next_mustdef): Likewise.
8986         (op_iter_init_vdef): Likewise.
8987         (compare_ssa_operands_equal): Likewise.
8988         (link_use_stmts_after): Handle vuse operand.
8989         (is_call_used): Use is_call_clobbered.
8990         (is_call_clobbered): Global variables are always call clobbered,
8991         query the call-clobbers bitmap.
8992         (mark_call_clobbered): Ignore global variables.
8993         (clear_call_clobbered): Likewise.
8994         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
8995         virtual operands sanity check.
8996         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
8997         Remove.
8998         (TARGET_MEM_REF): Remove TMR_TAG operand.
8999         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
9000         Remove call-clobber related code.
9001         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
9002         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
9003         partitions or escape reason.
9004         (get_single_def_stmt, get_single_def_stmt_from_phi,
9005         get_single_def_stmt_with_phi): Remove.
9006         (dump_referenced_vars): Tidy.
9007         (get_ref_base_and_extent): Allow bare decls.
9008         (collect_dfa_stats): Adjust.
9009         * graphite.c (rename_variables_in_stmt): Adjust.
9010         (graphite_copy_stmts_from_block): Likewise.
9011         (translate_clast): Likewise.
9012         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
9013         (EXPR_DIES): New.
9014         (translate_vuse_through_block): Use the oracle.
9015         (phi_translate_1): Adjust.
9016         (value_dies_in_block_x): Use the oracle.  Cache the outcome
9017         in EXPR_DIES.
9018         (valid_in_sets): Check if the VUSE for
9019         a REFERENCE is available.
9020         (eliminate): Do not remove stmts during elimination,
9021         instead queue and remove them afterwards.
9022         (do_pre): Do not rebuild alias info.
9023         (pass_pre): Run TODO_rebuild_alias before PRE.
9024         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
9025         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
9026         (mark_all_v_defs_stmt): Remove.
9027         (mark_all_v_defs_seq): Adjust.
9028         (sra_replace): Likewise.
9029         (scalarize_use): Likewise.
9030         (scalarize_copy): Likewise.
9031         (scalarize_init): Likewise.
9032         (scalarize_ldst): Likewise.
9033         (todoflags): Remove.
9034         (tree_sra): Do not rebuild alias info.
9035         (tree_sra_early): Adjust.
9036         (pass_sra): Run TODO_update_address_taken before SRA.
9037         * tree-predcom.c (set_alias_info): Remove.
9038         (prepare_initializers_chain): Do not call it.
9039         (mark_virtual_ops_for_renaming): Adjust.
9040         (mark_virtual_ops_for_renaming_list): Remove.
9041         (initialize_root_vars): Adjust.
9042         (initialize_root_vars_lm): Likewise.
9043         (prepare_initializers_chain): Likewise.
9044         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
9045         (may_propagate_copy_into_stmt): Likewise.
9046         (merge_alias_info): Do nothing for now.
9047         (propagate_tree_value_into_stmt): Adjust.
9048         (stmt_may_generate_copy): Likewise.
9049         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
9050         not mark symbols for renaming.
9051         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
9052         with the same statement, make sure to update the new pointed-to one.
9053         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
9054         call statements, do not mark symbols for renaming.
9055         (mark_operand_necessary): Dump something.
9056         (ref_may_be_aliased): New function.
9057         (mark_aliased_reaching_defs_necessary_1): New helper function.
9058         (mark_aliased_reaching_defs_necessary): Likewise.
9059         (mark_all_reaching_defs_necessary_1): Likewise.
9060         (mark_all_reaching_defs_necessary): Likewise.
9061         (propagate_necessity): Do not process virtual PHIs.  For
9062         non-aliased loads mark all reaching definitions as necessary.
9063         For aliased loads and stores mark the immediate dominating
9064         aliased clobbers as necessary.
9065         (visited): New global static.
9066         (perform_tree_ssa_dce): Free visited bitmap after propagating
9067         necessity.
9068         (remove_dead_phis): Perform simple dead virtual PHI removal.
9069         (remove_dead_stmt): Properly unlink virtual operands when
9070         removing stores.
9071         (eliminate_unnecessary_stmts): Schedule PHI removal after
9072         stmt removal.
9073         * tree-ssa-ter.c (is_replaceable_p): Adjust.
9074         (process_replaceable): Likewise.
9075         (find_replaceable_in_bb): Likewise.
9076         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
9077         based on the single gimple vop.
9078         (verify_flow_insensitive_alias_info): Remove.
9079         (verify_flow_sensitive_alias_info): Likewise.
9080         (verify_call_clobbering): Likewise.
9081         (verify_memory_partitions): Likewise.
9082         (verify_alias_info): Likewise.
9083         (verify_ssa): Adjust..
9084         (execute_update_addresses_taken): Export.  Update SSA
9085         manually.  Optimize only when optimizing.  Use a local bitmap.
9086         (pass_update_address_taken): Remove TODO_update_ssa, add
9087         TODO_dump_func.
9088         (pass_update_address_taken): Just use TODO_update_address_taken.
9089         (init_tree_ssa): Do not initialize addressable_vars.
9090         (verify_ssa): Verify new VUSE / VDEF properties.
9091         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
9092         Do not call verify_alias_info.
9093         (delete_tree_ssa): Clear the VUSE, VDEF operands.
9094         Do not free the loaded and stored syms bitmaps.  Reset the escaped
9095         and callused solutions.  Do not free addressable_vars.
9096         Remove memory-tag related code.
9097         (warn_uninitialized_var): Aliases are always available.
9098         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
9099         * lambda-code.c (can_put_in_inner_loop): Adjust.
9100         (can_put_after_inner_loop): Likewise.
9101         (perfect_nestify): Likewise.
9102         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
9103         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
9104         (vectorizable_conversion): Do not mark symbols for renaming.
9105         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
9106         (expand_call_inline): Unlink the calls virtual operands before
9107         replacing it.
9108         (tree_function_versioning): Do not call update_ssa if we are not
9109         updating clones.  Simplify.
9110         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
9111         (propagate_with_phi): Likewise..
9112         * tree-outof-ssa.c (create_temp): Remove memory tag and call
9113         clobber code.  Assert we are not aliased or global.
9114         * tree-flow.h: Include tree-ssa-alias.h
9115         (enum escape_type): Remove.
9116         (struct mem_sym_stats_d): Likewise.
9117         (struct mem_ref_stats_d): Likewise.
9118         (struct gimple_df): Add vop member.  Remove global_var,
9119         call_clobbered_vars, call_used_vars, addressable_vars,
9120         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
9121         escaped and callused members.
9122         (struct ptr_info_def): Remove all members, add points-to solution
9123         member pt.
9124         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
9125         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
9126         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
9127         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
9128         (tree-ssa-alias.o): Likewise.
9129         (toplev.o): Add tree-ssa-alias.h
9130         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
9131         * gimple.c (gimple_set_bb): Fix off-by-one error.
9132         (is_gimple_reg): Do not handle memory tags.
9133         (gimple_copy): Also copy virtual operands.
9134         Delay updating the statement.  Do not reset loaded and stored syms.
9135         (gimple_set_stored_syms): Remove.
9136         (gimple_set_loaded_syms): Likewise.
9137         (gimple_call_copy_skip_args): Copy the virtual operands
9138         and mark the new statement modified.
9139         * tree-ssa-structalias.c (may_alias_p): Remove.
9140         (set_uids_in_ptset): Take the alias set to prune with as
9141         parameter.  Fold in the alias test of may_alias_p.
9142         (compute_points_to_sets): Compute whether a ptr is dereferenced
9143         in a local sbitmap.
9144         (process_constraint): Deal with &ANYTHING on the lhs, reject all
9145         other ADDRESSOF constraints on the lhs.
9146         (get_constraint_for_component_ref): Assert that we don't get
9147         ADDRESSOF constraints from the base of the reference.
9148         Properly generate UNKNOWN_OFFSET for DEREF if needed.
9149         (struct variable_info): Remove collapsed_to member.
9150         (get_varinfo_fc): Remove.
9151         (new_var_info): Do not set collapsed_to.
9152         (dump_constraint): Do not follow cycles.
9153         (dump_constraint_graph): Likewise.
9154         (build_pred_graph): Likewise.
9155         (build_succ_graph): Likewise.
9156         (rewrite_constraints): Likewise.
9157         (do_simple_structure_copy): Remove.
9158         (do_rhs_deref_structure_copy): Remove.
9159         (do_lhs_deref_structure_copy): Remove.
9160         (collapse_rest_of_var): Remove.
9161         (do_structure_copy): Re-implement.
9162         (pta_stats): New global variable.
9163         (dump_pta_stats): New function.
9164         (struct constraint_expr): Make offset signed.
9165         (UNKNOWN_OFFSET): Define special value.
9166         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
9167         (solution_set_expand): New helper function split out from ...
9168         (do_sd_constraint): ... here.
9169         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
9170         (do_ds_constraint): Likewise.
9171         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
9172         and CALLUSED = *CALLUSED.
9173         (set_union_with_increment): Make inc argument signed.
9174         (type_safe): Remove.
9175         (get_constraint_for_ptr_offset): Handle unknown and negative
9176         constant offsets.
9177         (first_vi_for_offset): Handle offsets before start.  Bail
9178         out early for offsets beyond the variable extent.
9179         (first_or_preceding_vi_for_offset): New function.
9180         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
9181         Together with ESCAPED = *ESCAPED this properly computes reachability.
9182         (find_what_var_points_to): New function.
9183         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
9184         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
9185         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
9186         pt_solutions_intersect): New functions.
9187         (compute_call_used_vars): Remove.
9188         (compute_may_aliases): New main entry into PTA computation.
9189         * gimple.h (gimple_p): New typedef.
9190         (struct gimple_statement_base): Remove references_memory_p.
9191         (struct gimple_statement_with_memory_ops_base): Remove
9192         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
9193         members.
9194         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
9195         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
9196         gimple_set_references_memory): Remove.
9197         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
9198         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
9199         New functions.
9200         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
9201         (verify_expr): Allow RESULT_DECL.
9202         (gimple_duplicate_bb): Do not copy virtual operands.
9203         (gimple_duplicate_sese_region): Adjust.
9204         (gimple_duplicate_sese_tail): Likewise.
9205         (mark_virtual_ops_in_region): Remove.
9206         (move_sese_region_to_fn): Do not call it.
9207         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
9208         and pass_simple_dse.
9209         (execute_function_todo): Handle TODO_update_address_taken,
9210         call execute_update_addresses_taken for TODO_rebuild_alias.
9211         (execute_todo): Adjust.
9212         (execute_one_pass): Init dump files early.
9213         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
9214         call-clobbered.
9215         (create_general_new_stmt): Clear vops.
9216         * tree-ssa-reassoc.c (get_rank): Adjust.
9217         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
9218         symbols for renaming.
9219         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
9220         (PARAM_AVG_ALIASED_VOPS): Likewise.
9221         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
9222         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
9223         * tree-ssa-operands.c: Simplify for new virtual operand representation.
9224         (operand_build_cmp, copy_virtual_operands,
9225         create_ssa_artificial_load_stmt, add_to_addressable_set,
9226         gimple_add_to_addresses_taken): Remove public functions.
9227         (unlink_stmt_vdef): New function.
9228
9229 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9230
9231         * config.gcc (powerpc-*-linux*): Merge variants.
9232
9233 2009-04-02  Chao-ying Fu  <fu@mips.com>
9234             James Grosbach  <james.grosbach@microchip.com>
9235
9236         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
9237         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
9238         cop0_sp_offset.
9239         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
9240         keep_interrupts_masked_p, use_debug_exception_return_p.
9241         (mips_attribute_table): Add interrupt, use_shadow_register_set,
9242         keep_interrupts_masked, use_debug_exception_return.
9243         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
9244         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
9245         New functions.
9246         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
9247         (mips_print_operand): Process COP0 registers to print $0 .. $31
9248         correctly for GAS to process.
9249         (mips_interrupt_extra_call_saved_reg_p): New function.
9250         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
9251         extra registers.
9252         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
9253         (mips_compute_frame_info): Add supports for interrupt context that
9254         includes doubleword accumulators and COP0 registers.
9255         (mips_for_each_saved_acc): New function.
9256         (mips_for_each_saved_gpr_and_fpr): Change the function name from
9257         mips_for_each_saved_reg.
9258         (mips_save_reg): Save accumulators.
9259         (mips_kernel_reg_p): A new for_each_rtx callback.
9260         (mips_expand_prologue): Support interrupt handlers.
9261         (mips_restore_reg): Restore accumulators.
9262         (mips_expand_epilogue): Support interrupt handlers.
9263         (mips_can_use_return_insn): Return false for interrupt handlers.
9264         (mips_epilogue_uses): New function.
9265         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
9266         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
9267         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
9268         cop0_move): New instructions.
9269         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
9270         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
9271         defines.
9272         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
9273         New defines.
9274         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
9275         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
9276         interrupt handlers, we use K0 as the temporary register.
9277         (EPILOGUE_USES): Change to a function call.
9278         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
9279         handlers, we use K0 as the temporary register.
9280
9281         * doc/extend.texi (Function Attributes): Document interrupt,
9282         use_shadow_register_set, keep_interrupts_masked,
9283         use_debug_exception_return for MIPS attributes.
9284
9285 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9286
9287         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
9288         Remove a number of t-files from tmake_file.
9289         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
9290         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
9291         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
9292         target_prototype, not TARGET_PROTOTYPE.
9293         (LINK_OS_GNU_SPEC): Define.
9294         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
9295         and darwin-ldoubdle.c.
9296
9297 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
9298
9299         PR driver/39293
9300         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
9301         (cpp_options): Ditto.
9302         (default_compilers): Ditto.
9303         (display_help): Ditto.
9304         (process_command): Ditto.
9305         (do_spec_1): Ditto.
9306         (set_input): Use lbasename instead of duplicate code.
9307         (save_temps_prefix): New static for -save-temps=obj.
9308         (save_temps_length): Ditto.
9309
9310         * doc/invoke.texi (-save-temps=obj): Document new variant to
9311         -save-temps switch.
9312
9313 2009-04-02  Jeff Law  <law@redhat.com>
9314
9315         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
9316         variable.
9317
9318 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9319
9320         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
9321         * configure: Regenerated.
9322
9323 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9324
9325         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
9326         share the argument list.
9327
9328 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9329
9330         Merge
9331
9332         2009-02-12  Diego Novillo  <dnovillo@google.com>
9333
9334         * varpool.c (debug_varpool): New.
9335         * cgraph.h (debug_varpool): Declare.
9336
9337 2009-04-02  Jan Hubicka  <jh@suse.cz>
9338
9339         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
9340         pass.
9341
9342 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9343
9344         * config/i386/i386.c (ix86_abi): Move initialization to ...
9345         (override_options): Here.
9346
9347 2009-04-02  Christian Bruel  <christian.bruel@st.com>
9348
9349         * config/sh/sh.c (sh_dwarf_register_span): New function.
9350         (TARGET_DWARF_REGISTER_SPAN): Define.
9351         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
9352
9353 2009-04-02  Ira Rosen  <irar@il.ibm.com>
9354
9355         PR tree-optimization/39595
9356         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
9357         interleaved loads group is not  greater than the SLP group size.
9358
9359 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9360
9361         * builtins.c (is_builtin_name): New.
9362         (called_as_built_in): Use is_builtin_name.
9363         * tree.h (is_builtin_name): New.
9364         * varasm.c (incorporeal_function_p): Use is_builtin_name
9365
9366 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
9367
9368         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
9369
9370 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
9371
9372         PR c++/26693
9373         * c-decl.c (clone_underlying_type): Move this ...
9374         * c-common.c (set_underlying_type): ... here.
9375         Also, make sure the function properly sets TYPE_STUB_DECL() on
9376         the newly created typedef variant type.
9377         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
9378         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
9379         points.
9380
9381 2009-04-02  Richard Guenther  <rguenther@suse.de>
9382
9383         PR tree-optimization/37221
9384         * tree-flow.h (degenerate_phi_result): Declare.
9385         * tree-ssa-dom.c (degenerate_phi_result): Export.
9386         * tree-scalar-evolution.c (analyze_initial_condition): If
9387         the initial condition is defined by a degenerate PHI node
9388         use the degenerate value.
9389
9390 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
9391
9392         PR rtl-optimization/39588
9393         * combine.c (merge_outer_ops): Do not set the constant when this
9394         is not necessary.
9395         (simplify_shift_const_1): Do not modify it either in this case.
9396
9397 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9398
9399         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
9400         tuning is deprecated if -mtune value is set to an Itanium1 variant.
9401
9402 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
9403
9404         PR c/29027
9405         * c-lex.c (interpret_float): Default (no suffix) is double.
9406
9407 2009-04-1  Xinliang David Li  <davidxl@google.com>
9408
9409         * config/i386/i386.c (legitimate_constant_p): Recognize
9410         all one vector constant.
9411
9412 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9413
9414         * config/vax/vax.c: Add #includes to silence warnings.
9415         Change #include order to silence two warnings.
9416
9417 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9418
9419         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
9420         (ASM_SPEC): Pass -k to the assembler for PIC code.
9421
9422 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9423
9424         * config.gcc: Add vax-*-linux* to the switch.
9425         * config/vax/linux.h: New file. (TARGET_VERSION,
9426         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
9427
9428 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9429
9430         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
9431         Use predicate macros instead of GET_CODE() == foo.
9432         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
9433         ashlsi3, rotrsi3, <unnamed>): Likewise.
9434
9435 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9436
9437         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
9438         jbbccihi, jbbccisi): Remova trailing whitespace.
9439         * config/vax/constraints.md: Likewise.
9440         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
9441         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
9442         * config/vax/predicates.md: Likewise.
9443         * config/vax/vax.c (print_operand_address, vax_output_int_move,
9444         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
9445         * config/vax/vax.h: Likewise.
9446         * config/vax/vax.md (nonlocal_goto): Likewise.
9447
9448 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9449
9450         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
9451         (indirectable_address_p, adjacent_operands_p): Add spaces around
9452         braces.
9453         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
9454
9455 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9456
9457         * config/vax/vax.c (legitimate_constant_address_p,
9458         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
9459         index_term_p, reg_plus_index_p, legitimate_address_p,
9460         vax_mode_dependent_address_p): Update comments to match functions
9461         modified by the recent int->bool conversion.
9462
9463 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9464
9465         * config/vax/builtins.md: Update copyright message.
9466         * config/vax/constraints.md: Likewise.
9467         * config/vax/netbsd-elf.h: Likewise.
9468         * config/vax/predicates.md: Likewise.
9469         * config/vax/vax-protos.h: Likewise.
9470         * config/vax/vax.c: Likewise.
9471         * config/vax/vax.h: Likewise.
9472         * config/vax/vax.md: Likewise.
9473         * config/vax/vax.opt: Likewise.
9474
9475 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9476
9477         * config/vax/builtins.md (ffssi2, ffssi2_internal,
9478         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
9479         * config/vax/constraints.md (B, R): Likewise.
9480         * config/vax/predicates.md (external_memory_operand,
9481         nonimmediate_addsub_di_operand): Likewise.
9482         * config/vax/vax.c (vax_output_int_add): Likewise.
9483         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
9484         untyped_call): Likewise.
9485
9486 2009-04-01  Matt Thomas  <matt@3am-software.com>
9487
9488         * config/vax/predicates.md: New file.
9489         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
9490         external_const_operand, nonsymbolic_operand, external_memory_operand,
9491         indirect_memory_operand, indexed_memory_operand,
9492         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
9493         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
9494         predicate.
9495         * config/vax/constraints.md: New file.
9496         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
9497         New constraint.
9498         * config/vax/builtins.md: New file.
9499         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
9500         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
9501         jbbccisi): Define.
9502         * config/vax/vax.opt (mqmath): Add option.
9503         * config/vax/vax.md (isfx): Extend with DI.
9504         (VAXintQH, VAXintQHSD): Define.
9505         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
9506         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
9507         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
9508         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
9509         (movdi): Update constraints and use vax_output_int_move().
9510         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
9511         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
9512         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
9513         nonlocal_goto): New.
9514         (mov<mode>): Extend accepted operand types.
9515         (subdi3_old): Rename from subdi3, change update constraints and use
9516         a new implementation.
9517         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
9518         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
9519         MOVE_RATIO, CLEAR_RATIO): Define.
9520         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
9521         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
9522         (PRINT_OPERAND): Redefine using a function instead of inlined code.
9523         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
9524         (split_quadword_operands): Make static and really allow variable
9525         splitting.
9526         (print_operand_address): Update for PIC generation.
9527         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
9528         indexable_address_p, fixup_mathdi_operand,
9529         vax_expand_addsub_di_operands, adjacent_operands_p): New.
9530         (vax_float_literal, legitimate_constant_p,
9531         indirectable_constant_address_p, index_term_p,
9532         reg_plus_index_p): Return bool instead of int.
9533         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
9534         where needed.
9535         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
9536         generation.
9537         (vax_output_conditional_branch): Indent.
9538         (legitimate_constant_address_p, indirectable_constant_address_p,
9539         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
9540         vax_mode_dependent_address_p): Return bool instead of int, update for
9541         PIC generation.
9542         * config/vax/vax-protos.h (legitimate_constant_address_p,
9543         legitimate_constant_p, legitimate_address_p,
9544         vax_mode_dependent_address_p): Change declaration to bool.
9545         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
9546         vax_expand_addsub_di_operands, vax_output_int_subtract,
9547         vax_output_movmemsi): Declare.
9548         (split_quadword_operands, vax_float_literal): Delete declaration.
9549         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
9550         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
9551         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
9552         ASM_OUTPUT_DWARF_PCREL): Define.
9553         (ASM_SPEC): Change definition to allow PIC generation.
9554
9555 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
9556
9557         * doc/sourcebuild.texi: Update front-end requirements.
9558
9559 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9560
9561         PR target/39226
9562         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
9563         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
9564         (booldi3_internal3): Use boolean_or_operator instead of
9565         boolean_operator.
9566
9567 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
9568
9569         PR c/39605
9570         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
9571         declarator whose size is not an integer constant expression but
9572         folds to an integer constant, then treat it as a constant
9573         subsequently.
9574
9575 2009-04-01  Richard Guenther  <rguenther@suse.de>
9576
9577         * fold-const.c (fold_plusminus_mult_expr): Do not fold
9578         i * 4 + 2 to (i * 2 + 1) * 2.
9579
9580 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9581
9582         PR c/37772
9583         * c-parser.c (c_parser_asm_statement): Skip until close paren and
9584         return if c_parser_asm_string_literal returned NULL.
9585
9586 2009-04-01  Nick Clifton  <nickc@redhat.com>
9587
9588         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
9589         already defined.
9590         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
9591         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
9592         other typedefs to avoid conflicts with libgcc2.c.  Define labels
9593         to gain 16-bit bit-manipulation functions from libgcc2.c and then
9594         include it.
9595         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
9596         to gain 16-bit trapping arithmetic functions from libgcc2.c and
9597         then include it.
9598
9599 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
9600
9601         * varasm.c (default_function_rodata_section): Declare DOT as
9602         const char*.
9603
9604 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
9605             Andrey Galkin  <agalkin@hypercom.com>
9606
9607         PR/39492
9608         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
9609         Make object_name unique for each process.
9610
9611 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9612
9613         PR other/39591
9614         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
9615         addressable variables in the parallel that could go out of scope while
9616         running queued tasks.
9617
9618 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
9619
9620         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
9621         (CASE_VALUES_THRESHOLD): Redefine.
9622         * config/avr/avr.c (avr_override_options): Remove initialization of
9623         avr_case_values_threshold variable.
9624         (avr_case_values_threshold): Remove variable. Add new function.
9625         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
9626         * config/avr/avr.opt (mno-tablejump): Remove option.
9627         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
9628
9629 2009-04-01  DJ Delorie  <dj@redhat.com>
9630
9631         * varasm.c (default_function_rodata_section): Don't assume
9632         anything about where the first '.' in the section name is.
9633
9634 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
9635
9636         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
9637         rs6000_emit_stack_tie.
9638
9639 2009-03-31  Ian Lance Taylor  <iant@google.com>
9640
9641         * tree-eh.c (tree_remove_unreachable_handlers): Compare
9642         gimple_code with GIMPLE_RESX, not RESX.
9643
9644 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9645
9646         * c-common.c (c_get_ident): New.
9647         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
9648
9649 2009-04-01  Ben Elliston  <bje@au.ibm.com>
9650
9651         * config/rs6000/sysv4.opt (msdata): Improve option description.
9652
9653 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
9654
9655         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
9656         (divdf3_internal_lat): Remove.
9657         (divxf3_internal_lat): Remove.
9658         (divxf3_internal_thr): Remove.
9659         (divxf): Use divxf3_internal.
9660         * config/ia64/div.md (divsf3_internal_lat): New.
9661         (divdf3_internal_lat): New.
9662         (divxf3_internal): New.
9663
9664 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9665
9666         PR c/448
9667         * Makefile.in (USE_GCC_STDINT): Define.
9668         (stmp-int-hdrs): Install stdint.h if applicable.
9669         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
9670         if known.
9671         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
9672         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
9673         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9674         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9675         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9676         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9677         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9678         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9679         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9680         (c_common_nodes_and_builtins): Initialize
9681         underlying_wchar_type_node.  Do not initialize
9682         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
9683         nodes for new types.
9684         (c_stddef_cpp_builtins): Define macros for new types.
9685         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
9686         Remove.
9687         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
9688         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
9689         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
9690         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
9691         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
9692         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
9693         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
9694         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
9695         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
9696         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
9697         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
9698         int16_type_node, int32_type_node, int64_type_node,
9699         uint8_type_node, uint16_type_node, c_uint32_type_node,
9700         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
9701         int_least32_type_node, int_least64_type_node,
9702         uint_least8_type_node, uint_least16_type_node,
9703         uint_least32_type_node, uint_least64_type_node,
9704         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
9705         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
9706         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
9707         uintptr_type_node): Define.
9708         * c-cppbuiltin.c (builtin_define_constants,
9709         builtin_define_type_minmax): New.
9710         (builtin_define_stdint_macros): Define more macros.
9711         (c_cpp_builtins): Define more limit macros.
9712         (type_suffix): New.
9713         (builtin_define_type_max): Define in terms of
9714         builtin_define_type_minmax.  Remove is_long parameter.  All
9715         callers changed.
9716         * config.gcc (use_gcc_stdint): Define.
9717         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
9718         Add newlib-stdint.h for generic targets.
9719         * config/glibc-stdint.h, config/newlib-stdint.h,
9720         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
9721         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
9722         * config/score/score.h (UINTPTR_TYPE): Define.
9723         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
9724         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
9725         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9726         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9727         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9728         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9729         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9730         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9731         * config/spu/spu.h (STDINT_LONG32): Define.
9732         * configure.ac (use_gcc_stdint): Substitute.
9733         * configure: Regenerate.
9734         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
9735         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
9736         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
9737         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
9738         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
9739         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
9740         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
9741         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
9742         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
9743         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
9744         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
9745         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
9746         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
9747         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
9748         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
9749         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
9750         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
9751         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
9752         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
9753         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
9754         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
9755         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
9756         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9757         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9758         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9759         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9760         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9761         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9762         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
9763
9764 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9765
9766         * loop-iv.c (suitable_set_for_replacement): Renamed from
9767         simplify_using_assignment; changed to return bool and to accept new
9768         args DEST and SRC.  Return true iff we find a source/destination pair
9769         that can be used to make a replacement, and fill SRC and DEST if so.
9770         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
9771         changed.
9772         (simplify_using_initial_values): Deal with altered regs here and track
9773         more precisely the effect they have on the validity of our expression.
9774
9775         * loop-iv.c (simplify_using_condition): A condition of the form
9776         (EQ REG CONST) can be used to simply make a substitution.
9777         (simplify_using_initial_values): Keep track of conditions we have seen
9778         and keep using them to simplify new expressions, while applying the
9779         same substitutions to them as to the expression.
9780
9781         * simplify-rtx.c (simplify_relational_operation_1): Simplify
9782         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
9783         GEU/LTU reversed.
9784
9785         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
9786         changed.  Use this when trying to improve the upper bound.
9787         Generate the comparison by using simplify_gen_relational.
9788
9789         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
9790
9791         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
9792         functions.
9793         (simplify_using_assignment, simplify_using_initial_values): Call
9794         replace_in_expr to make replacements.  Call replace_single_def_regs
9795         once on the initial version of the expression.
9796
9797 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9798
9799         PR target/27237
9800         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
9801
9802 2009-03-31  Richard Guenther  <rguenther@suse.de>
9803
9804         PR middle-end/31029
9805         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
9806         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
9807
9808 2009-03-31  Richard Guenther  <rguenther@suse.de>
9809
9810         * tree.h (div_if_zero_remainder): Declare.
9811         * fold-const.c (div_if_zero_remainder): Export.
9812         * tree-ssa-forwprop.c
9813         (forward_propagate_addr_into_variable_array_index): Handle
9814         constant array index addition outside of the variable index.
9815
9816 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9817
9818         PR target/39592
9819         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
9820         define_splits, floatunssi<mode>2): Require x87 conversions from
9821         DImode to be permitted.
9822
9823 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9824
9825         PR preprocessor/15638
9826         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
9827
9828 2009-03-31  Richard Guenther  <rguenther@suse.de>
9829
9830         PR middle-end/23401
9831         PR middle-end/27810
9832         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
9833         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
9834         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
9835         a separate statement.
9836         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
9837         (lookup_tmp_var): Likewise.
9838         (is_gimple_formal_tmp_or_call_rhs): Remove.
9839         (is_gimple_reg_or_call_rhs): Rename to ...
9840         (is_gimple_reg_rhs_or_call): ... this.
9841         (is_gimple_mem_or_call_rhs): Rename to ...
9842         (is_gimple_mem_rhs_or_call): ... this.
9843         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
9844         DECL_GIMPLE_REG_P only if is_formal is true.
9845         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
9846         for non-proper post-modify expression gimplification.
9847         (gimplify_self_mod_expr): For post-modify expressions gimplify
9848         the lvalue to a minimal lvalue.
9849         (rhs_predicate_for): Remove formal temp case.
9850         (gimplify_modify_expr_rhs): Likewise.
9851         (gimplify_addr_expr): Use is_gimple_reg.
9852         (gimplify_expr): Remove formal temp cases.
9853         (gimple_regimplify_operands): Likewise.
9854         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
9855         and FILTER_EXPR like constants.
9856         * gimple.c (walk_gimple_op): Fix val_only initialization, use
9857         is_gimple_reg.
9858         (is_gimple_formal_tmp_rhs): Remove.
9859         (is_gimple_reg_rhs): Remove special casing.
9860         (is_gimple_mem_rhs): Fix.
9861         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
9862         (is_gimple_formal_tmp_var): Remove.
9863         (is_gimple_formal_tmp_reg): Likewise.
9864         (is_gimple_min_lval): Allow invariant component ref parts.
9865         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
9866         is_gimple_formal_tmp_reg): Remove declarations.
9867         * tree-cfg.c (verify_expr): Verify that variables with address
9868         taken do not have DECL_GIMPLE_REG_P set.
9869         * tree-mudflap.c (mf_build_check_statement_for): Use
9870         force_gimple_operand instead of gimplify_expr.
9871
9872 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
9873
9874         * modulo-sched.c (sms_schedule_by_order): Pass the actual
9875         schedulable rows to compute_split_row.
9876
9877 2009-03-31  Ben Elliston  <bje@au.ibm.com>
9878
9879         PR target/31635
9880         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
9881         OPT_mvrsave.
9882
9883 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9884
9885         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
9886         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
9887         * configure: Regenerate.
9888         * config.in: Regenerate.
9889         * config/rs6000/rs6000.opt (mtls-markers): Add.
9890         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
9891         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
9892         (tls_ld_aix, tls_ld_sysv): Likewise.
9893         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
9894         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
9895
9896 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9897
9898         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
9899
9900 2009-03-30  Jan Hubicka  <jh@suse.cz>
9901
9902         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
9903         out of RESX.
9904         (tree_remove_unreachable_handlers): Cleanup EH predecestor
9905         detection and label handling.
9906
9907 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9908
9909         * ira-int.h (ira_allocno): Rename left_conflicts_num to
9910         left_conflicts_size.
9911         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
9912         ALLOCNO_LEFT_CONFLICTS_SIZE.
9913
9914         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
9915         remove_allocno_from_bucket_and_push,
9916         allocno_spill_priority_compare, push_allocnos_to_stack,
9917         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9918         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
9919         (setup_allocno_left_conflicts_num): Ditto.  Rename to
9920         setup_allocno_left_conflicts_size.
9921         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9922         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
9923         setup_allocno_left_conflicts_size instead of
9924         setup_allocno_left_conflicts_num.
9925
9926         * ira-build.c (ira_create_allocno): Use
9927         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
9928         ALLOCNO_LEFT_CONFLICTS_NUM.
9929
9930 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9931
9932         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
9933         instead of DF_LR_OUT.
9934
9935         * ira-lives.c (process_bb_node_lives): Ditto.
9936
9937         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
9938         instead of DF_LR_{OUT,IN}.
9939
9940         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
9941
9942         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
9943
9944 2009-03-30  Jan Hubicka  <jh@suse.cz>
9945
9946         * except.c (label_to_region_map): Fix thinko.
9947
9948 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
9949
9950         PR middle-end/38237
9951         * tree.h (tree_find_value): New declaration.
9952         * tree.c (tree_find_value): New function.
9953         * varasm.c (assemble_external): Avoid duplicate entries on lists.
9954
9955 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
9956
9957         PR debug/39563
9958         * c-decl.c (struct c_binding): Add locus field.
9959         (bind): Add locus argument, set locus field from it.
9960         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
9961         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
9962         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
9963         implicitly_declare, undeclared_variable, lookup_label,
9964         declare_label, c_make_fname_decl, c_builtin_function,
9965         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
9966         bind callers.
9967
9968 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
9969
9970         PR target/38781
9971         * config/i386/i386.c (classify_argument): Check total size of
9972         structure.
9973
9974 2009-03-30  Martin Jambor  <mjambor@suse.cz>
9975
9976         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
9977         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
9978         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
9979         respectively.
9980
9981         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
9982         seen_variable_array_ref while also traversing a union.
9983
9984         * tree-inline.c (optimize_inline_calls): Do not call
9985         cgraph_node_remove_callees.
9986         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
9987         (pass_remove_cgraph_callee_edges): New variable.
9988         * passes.c (init_optimization_passes): Add
9989         pass_remove_cgraph_callee_edges after early inlining and before all
9990         late intraprocedural passes.
9991
9992         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
9993
9994 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9995
9996         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
9997         Fix typos in names.
9998
9999 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10000
10001         * combine.c (simplify_comparison): Use have_insn_for.
10002         * dojump.c (do_jump): Likewise.
10003
10004 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10005
10006         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
10007         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
10008         sparc_compare_op0 like sparc_compare_emitted used to be handled.
10009         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
10010         instead of sparc_compare_emitted.
10011         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
10012         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
10013         instead of sparc_compare_emitted.
10014
10015 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10016
10017         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
10018         enter/exit cfglayout mode.
10019         (pass_partition_block): Require it.
10020         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
10021         (combine_instructions): Track basic blocks instead of labels.
10022         (update_cfg_for_uncondjump): New.
10023         (try_combine): Use it.  Update jumps after rescanning.
10024         (pass_combine): Require PROP_cfglayout.
10025         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
10026
10027 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10028
10029         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
10030         Provide/destroy PROP_cfglayout respectively.
10031         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
10032         * tree-pass.h (PROP_cfglayout): New.
10033
10034 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10035
10036         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
10037         fold_convert_const_fixed_from_fixed,
10038         fold_convert_const_fixed_from_int,
10039         fold_convert_const_fixed_from_real, fold_negate_const): Do not
10040         set TREE_CONSTANT_OVERFLOW.
10041         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
10042         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
10043
10044 2009-03-30  Ira Rosen  <irar@il.ibm.com>
10045
10046         * tree-vect-loop-manip.c: New file.
10047         * tree-vectorizer.c: Update documentation and included files.
10048         (vect_loop_location): Make extern.
10049         (rename_use_op): Move to tree-vect-loop-manip.c
10050         (rename_variables_in_bb, rename_variables_in_loop,
10051         slpeel_update_phis_for_duplicate_loop,
10052         slpeel_update_phi_nodes_for_guard1,
10053         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
10054         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
10055         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
10056         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
10057         find_loop_location): Likewise.
10058         (new_stmt_vec_info): Move to tree-vect-stmts.c.
10059         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
10060         get_vectype_for_scalar_type, vect_is_simple_use,
10061         supportable_widening_operation, supportable_narrowing_operation):
10062         Likewise.
10063         (bb_in_loop_p): Move to tree-vect-loop.c.
10064         (new_loop_vec_info, destroy_loop_vec_info,
10065         reduction_code_for_scalar_code, report_vect_op,
10066         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
10067         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
10068         (vect_supportable_dr_alignment): Likewise.
10069         * tree-vectorizer.h (tree-data-ref.h): Include.
10070         (vect_loop_location): Declare.
10071         Reorganize function declarations according to the new file structure.
10072         * tree-vect-loop.c: New file.
10073         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
10074         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
10075         * tree-vect-data-refs.c: New file.
10076         * tree-vect-patterns.c (timevar.h): Don't include.
10077         * tree-vect-stmts.c: New file.
10078         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
10079         tree-vect-slp.c, tree-vect-loop.c.
10080         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
10081         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
10082         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
10083         (tree-vect-analyze.o): Remove.
10084         (tree-vect-transform.o): Likewise.
10085         (tree-vect-data-refs.o): Add rule.
10086         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
10087         tree-vect-slp.o): Likewise.
10088         (tree-vect-patterns.o): Remove redundant dependencies.
10089         (tree-vectorizer.o): Likewise.
10090         * tree-vect-slp.c: New file.
10091
10092 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10093
10094         * optc-gen.awk: Warn if an option flag has multiple different
10095         help strings.
10096
10097 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
10098
10099         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
10100         -floop-block): Document dependences on PPL, CLooG and Graphite.
10101
10102 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
10103
10104         PR rtl-optimization/323
10105         * c-common.c (c_fully_fold, convert_and_check,
10106         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
10107         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
10108         * c-common.def (EXCESS_PRECISION_EXPR): New.
10109         * c-cppbuiltin.c (builtin_define_float_constants): Define
10110         constants with enough digits for long double.
10111         * c-lex.c (interpret_float): Interpret constant with excess
10112         precision where appropriate.
10113         * c-opts.c (c_common_post_options): Set
10114         flag_excess_precision_cmdline.  Give an error for
10115         -fexcess-precision=standard for C++ for processors where the
10116         option is significant.
10117         * c-parser.c (c_parser_conditional_expression): Handle excess
10118         precision in condition.
10119         * c-typeck.c (convert_arguments): Handle arguments with excess
10120         precision.
10121         (build_unary_op): Move excess precision outside operation.
10122         (build_conditional_expr): Likewise.
10123         (build_compound_expr): Likewise.
10124         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
10125         (build_modify_expr): Handle excess precision in RHS.
10126         (convert_for_assignment): Handle excess precision in converted
10127         value.
10128         (digest_init, output_init_element, process_init_element): Handle
10129         excess precision in initializer.
10130         (c_finish_return): Handle excess precision in return value.
10131         (build_binary_op): Handle excess precision in operands and add
10132         excess precision as needed for operation.
10133         * common.opt (-fexcess-precision=): New option.
10134         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
10135         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
10136         For standard excess precision, output explicit conversion to and
10137         truncation from XFmode.
10138         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
10139         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
10140         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
10141         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
10142         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
10143         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
10144         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
10145         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
10146         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
10147         define_splits, sqrt<mode>2): Disable where appropriate for
10148         standard excess precision.
10149         * convert.c (convert_to_real): Do not shorten arithmetic to type
10150         for which excess precision would be used.
10151         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
10152         * doc/invoke.texi (-fexcess-precision=): Document option.
10153         (-mfpmath=): Correct index entry.
10154         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
10155         flag_excess_precision): New.
10156         * langhooks.c (lhd_post_options): Set
10157         flag_excess_precision_cmdline.
10158         * opts.c (common_handle_option): Handle -fexcess-precision=.
10159         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
10160         init_excess_precision): New.
10161         (lang_dependent_init_target): Call init_excess_precision.
10162         * tree.c (excess_precision_type): New.
10163         * tree.h (excess_precision_type): Declare.
10164
10165 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
10166
10167         PR c/35235
10168         * c-typeck.c (build_component_ref): Do not copy qualifiers from
10169         non-lvalue to component.
10170
10171 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
10172
10173         PR preprocessor/34695
10174         * Makefile.in (c-opts.o): Depend on c-tree.h.
10175         * c-common.c: Move down include of diagnostic.h.
10176         (done_lexing, c_cpp_error): New.
10177         * c-common.h (done_lexing): Declare.
10178         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
10179         (parse_in).
10180         * c-opts.c: Include c-tree.h.
10181         (c_common_init_options): Set preprocessor error callback.
10182         (c_common_handle_option): Do not set preprocessor
10183         inhibit_warnings, warnings_are_errors, warn_system_headers,
10184         pedantic_errors or inhibit_warnings flags.
10185         (c_common_post_options): Do not check cpp_errors (parse_in).
10186         (c_common_finish): Do not output dependencies if there were
10187         errors.  Do not check return value of cpp_finish.
10188         * c-ppoutput.c (pp_file_change): Set input_location.
10189         * c-tree.h (c_cpp_error): Declare.
10190         * diagnostic.c (diagnostic_set_info_translated): Also initialize
10191         override_column.
10192         (diagnostic_build_prefix): Check override_column.
10193         * diagnostic.h (diagnostic_info): Add override_column field.
10194         (diagnostic_override_column): Define.
10195
10196 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
10197
10198         * c-common.c (c_expand_expr, c_staticp): Remove.
10199         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
10200         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
10201         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
10202         * c-gimplify.c (gimplify_compound_literal_expr,
10203         optimize_compound_literals_in_ctor): Remove.
10204         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
10205         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
10206         * c-semantics.c (emit_local_var): Remove.
10207
10208         * langhooks-def.h (lhd_expand_expr): Remove.
10209         * langhooks.c (lhd_expand_expr): Remove.
10210         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
10211
10212         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
10213         handling from c-semantics.c; don't call into langhook.
10214         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
10215         * gimplify.c (gimplify_compound_literal_expr,
10216         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
10217         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
10218         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
10219         as was done in c-gimplify.c.
10220         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
10221         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
10222         Move from c-common.h.
10223         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
10224
10225         * tree.c (staticp): Do not call langhook.
10226         * langhooks.c (lhd_staticp): Delete.
10227         * langhooks-def.h (lhd_staticp): Delete prototype.
10228         (LANG_HOOKS_STATICP): Delete.
10229         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
10230
10231         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
10232         instead of DECL_STMTs.
10233
10234 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
10235
10236         PR c/456
10237         PR c/5675
10238         PR c/19976
10239         PR c/29116
10240         PR c/31871
10241         PR c/35198
10242         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
10243         void_type_node.
10244         (fold_call_expr): Return a NOP_EXPR from folding rather than the
10245         contained expression.
10246         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
10247         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
10248         conditional expressions for C.
10249         (decl_constant_value_for_optimization): Move from
10250         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
10251         whether optimizing and that the expression is a VAR_DECL not of
10252         array type instead of doing such checks in the caller.  Do not
10253         check pedantic.  Call gcc_unreachable for C++.
10254         * c-common.def (C_MAYBE_CONST_EXPR): New.
10255         * c-common.h (c_fully_fold, c_save_expr,
10256         decl_constant_value_for_optimization): New prototypes.
10257         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
10258         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
10259         EXPR_INT_CONST_OPERANDS): Define.
10260         * c-convert.c (convert): Strip nops from expression.
10261         * c-decl.c (groktypename): Take extra parameters expr and
10262         expr_const_operands.  Update call to grokdeclarator.
10263         (start_decl): Update call to grokdeclarator.  Add statement for
10264         expressions used in type of decl.
10265         (grokparm): Update call to grokdeclarator.
10266         (push_parm_decl): Update call to grokdeclarator.
10267         (build_compound_literal): Add parameter non_const and build a
10268         C_MAYBE_COSNT_EXPR if applicable.
10269         (grokdeclarator): Take extra parameters expr and
10270         expr_const_operands.  Track expressions used in declaration
10271         specifiers and declarators.  Fold array sizes and track whether
10272         they are constant expressions and whether they are integer
10273         constant expressions.
10274         (parser_xref_tag): Set expr and expr_const_operands fields in
10275         return value.
10276         (grokfield): Update call to grokdeclarator.
10277         (start_function): Update call to grokdeclarator.
10278         (build_null_declspecs): Set expr and expr_const_operands fields in
10279         return value.
10280         (declspecs_add_type): Handle expressions in typeof specifiers.
10281         * c-parser.c (c_parser_declspecs): Set expr and
10282         expr_const_operands fields for declaration specifiers.
10283         (c_parser_enum_specifier): Likewise.
10284         (c_parser_struct_or_union_specifier): Likewise.
10285         (c_parser_typeof_specifier): Likewise.  Update call to
10286         groktypename.  Fold expression as needed.  Return expressions with
10287         type instead of adding statements.
10288         (c_parser_attributes): Update calls to c_parser_expr_list.
10289         (c_parser_statement_after_labels): Fold expression before passing
10290         to objc_build_throw_stmt.
10291         (c_parser_condition): Fold expression.
10292         (c_parser_asm_operands): Fold expression.
10293         (c_parser_conditional_expression): Use c_save_expr.  Update call
10294         to build_conditional_expr.
10295         (c_parser_alignof_expression): Update call to groktypename.
10296         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
10297         original_code.  Fold expression argument of va_arg.  Create
10298         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
10299         argument to va_arg.  Update calls to groktypename.  Fold array
10300         index for offsetof.  Verify that first argument to
10301         __builtin_choose_expr has integer type.
10302         (c_parser_postfix_expression_after_paren_type): Update calls to
10303         groktypename and build_compound_literal.  Handle expressions with
10304         side effects in type name.
10305         (c_parser_postfix_expression_after_primary): Update call to
10306         c_parser_expr_list.  Set original_code for calls to
10307         __builtin_constant_p.
10308         (c_parser_expr_list): Take extra parameter fold_p.  Fold
10309         expressions if requested.
10310         (c_parser_objc_type_name): Update call to groktypename.
10311         (c_parser_objc_synchronized_statement): Fold expression.
10312         (c_parser_objc_receiver): Fold expression.
10313         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
10314         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
10315         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
10316         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
10317         (struct c_typespec): Add elements expr and expr_const_operands.
10318         (struct c_declspecs): Add elements expr and expr_const_operands.
10319         (groktypename, build_conditional_expr, build_compound_literal):
10320         Update prototypes.
10321         (in_late_binary_op): Declare.
10322         * c-typeck.c (note_integer_operands): New function.
10323         (in_late_binary_op): New variable.
10324         (decl_constant_value_for_broken_optimization): Move to c-common.c
10325         and rename to decl_constant_value_for_optimization.
10326         (default_function_array_conversion): Do not strip nops.
10327         (default_conversion): Do not call
10328         decl_constant_value_for_broken_optimization.
10329         (build_array_ref): Do not fold result.
10330         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
10331         result when operand is a VLA.
10332         (c_expr_sizeof_type): Update call to groktypename.  Handle
10333         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
10334         result when operand names a VLA type.
10335         (build_function_call): Update call to build_compound_literal.
10336         Only fold result for calls to __builtin_* functions.  Strip
10337         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
10338         the function designator.
10339         (convert_arguments): Fold arguments.  Update call to
10340         convert_for_assignment.
10341         (build_unary_op): Handle increment and decrement of
10342         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
10343         decrement earlier.  Fold operand of increment and decrement.
10344         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
10345         built for integer operand.  Wrap returns that are INTEGER_CSTs
10346         without being integer constant expressions or that have integer
10347         constant operands without being INTEGER_CSTs.
10348         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
10349         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
10350         result is an integer constant expression or can be used in
10351         unevaluated parts of one and avoid folding and wrap as
10352         appropriate.  Fold operands before possibly doing -Wsign-compare
10353         warnings.
10354         (build_compound_expr): Wrap result for C99 if operands can be used
10355         in integer constant expressions.
10356         (build_c_cast): Update call to digest_init.  Do not ignore
10357         overflow from casting floating-point constants to integers.  Wrap
10358         results that could be confused with integer constant expressions,
10359         null pointer constants or floating-point constants.
10360         (c_cast_expr): Update call to groktypename.  Handle expressions
10361         included in type name.
10362         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
10363         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
10364         Update calls to convert_for_assignment.
10365         (convert_for_assignment): Take new parameter
10366         null_pointer_constant.  Do not strip nops or call
10367         decl_constant_value_for_broken_optimization.  Set
10368         in_late_binary_op for conversions to boolean.
10369         (store_init_value): Update call to digest_init.
10370         (digest_init): Take new parameter null_pointer_constant.  Do not
10371         call decl_constant_value_for_broken_optimization.  pedwarn for
10372         initializers not constant expressions.  Update calls to
10373         convert_for_assignment.
10374         (constructor_nonconst): New.
10375         (struct constructor_stack): Add nonconst element.
10376         (really_start_incremental_init, push_init_level, pop_init_level):
10377         Handle constructor_nonconst and nonconst element.
10378         (set_init_index): Call constant_expression_warning for array
10379         designators.
10380         (output_init_element): Fold value.  Set constructor_nonconst as
10381         applicable.  pedwarn for initializers not constant expressions.
10382         Update call to digest_init.  Call constant_expression_warning
10383         where constant initializers are required.
10384         (process_init_element): Use c_save_expr.
10385         (c_finish_goto_ptr): Fold expression.
10386         (c_finish_return): Fold return value.  Update call to
10387         convert_for_assignment.
10388         (c_start_case): Fold switch expression.
10389         (c_process_expr_stmt): Fold expression.
10390         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
10391         ensure statement expression is not evaluated in constant expression.
10392         (build_binary_op): Track whether results are integer constant
10393         expressions or may occur in such, disable folding and wrap results
10394         as applicable.  Fold operands for -Wsign-compare warnings unless
10395         in_late_binary_op.
10396         (c_objc_common_truthvalue_conversion): Handle results folded to
10397         integer constants that are not integer constant expressions.
10398         * doc/extend.texi: Document when typeof operands are evaluated,
10399         that condition of __builtin_choose_expr is an integer constant
10400         expression, and more about use of __builtin_constant_p in
10401         initializers.
10402
10403 2009-03-29  Richard Guenther  <rguenther@suse.de>
10404
10405         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
10406         propagate addresses of array references.
10407
10408 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
10409
10410         * regmove.c (perhaps_ends_bb_p): Remove.
10411         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
10412         from INSN and check that the main loop stays within that basic block.
10413         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
10414         (regmove_forward_pass): Split out from regmove_optimize.  Use
10415         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
10416         (regmove_backward_pass): Split out from regmove_optimize.  Use
10417         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
10418         (regmove_optimize): Simplify.
10419
10420 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10421
10422         PR target/39545
10423         * config/i386/i386.c (classify_argument): Ignore flexible array
10424         member in struct and warn ABI change.
10425
10426 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10427
10428         * config/i386/i386-protos.h (ix86_agi_dependent): New.
10429
10430         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
10431         (ix86_adjust_cost): Updated.
10432
10433 2009-03-29  Jan Hubicka  <jh@suse.cz>
10434
10435         PR middle-end/28850
10436         * tree-pass.h (pass_cleanup_eh): New function.
10437         (remove_unreachable_regions): Break code handling RTL
10438         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
10439         that can not be reached by runtime.
10440         (can_be_reached_by_runtime): New function.
10441         (label_to_region_map): New function.
10442         (num_eh_regions): New function.
10443         (rtl_remove_unreachable_regions): New function.
10444         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
10445         (remove_eh_region): New function.
10446         * except.h: Include sbitmap and vecprim.
10447         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
10448         num_eh_regions): Declare.
10449         * passes.c (init_optimization_passes): Schedule cleanup_eh.
10450         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
10451         * tree-eh.c (tree_remove_unreachable_handlers): New function.
10452         (tree_empty_eh_handler_p): New function.
10453         (cleanup_empty_eh): New function.
10454         (cleanup_eh): New function.
10455         (pass_cleanup_eh): New function.
10456
10457 2009-03-29  Jan Hubicka  <jh@suse.cz>
10458
10459         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
10460         for removed regions.
10461
10462 2009-03-29  Jan Hubicka  <jh@suse.cz>
10463
10464         * except.c (dump_eh_tree): Dump all datastructures.
10465
10466 2009-03-29  Jan Hubicka  <jh@suse.cz>
10467
10468         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
10469         (duplicate_eh_regions_1): Likewise.
10470         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
10471         vector; call EH verification.
10472         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10473         Be ready for region being removed.
10474
10475 2009-03-29  Jan Hubicka  <jh@suse.cz>
10476
10477         * bitmap.c (bitmap_last_set_bit): New function.
10478         * bitmap.h (bitmap_last_set_bit): Declare.
10479
10480 2009-03-29  David Ayers  <ayers@fsfe.org>
10481
10482         PR objc/27377
10483         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
10484         by calling objc_compare_types and surpress warnings about
10485         incompatible C pointers that are compatible ObjC pointers.
10486
10487 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
10488
10489         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
10490         call initialize_inline_failed.
10491         (initialize_inline_failed): Move it from here ...
10492         * cgraph.c (initialize_inline_failed): ... to here.
10493         (cgraph_create_edge): Call initialize_inline_failed rather than
10494         setting inline_failed directly.
10495
10496 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10497
10498         PR target/32542
10499         * sysv4.opt (msdata): Improve comment.
10500         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
10501         * sysv4.h (SVR4_ASM_SPEC): Likewise.
10502
10503 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10504
10505         PR target/30451
10506         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
10507         load and store attributes.
10508
10509 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10510
10511         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
10512         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
10513         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
10514         * doc/extend.texi (X86 Built-in Functions): Add index entries for
10515         __builtin_infq and __builtin_huge_valq.
10516
10517 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
10518
10519         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
10520         atmega8m1 devices.
10521         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10522         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
10523
10524 2009-03-28  Xinliang David Li  <davidxl@google.com>
10525
10526         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
10527         (do_dbg_cnt): New function.
10528
10529 2009-03-28  Jan Hubicka  <jh@suse.cz>
10530
10531         Merge from pretty-ipa:
10532
10533         2009-03-27  Jan Hubicka  <jh@suse.cz>
10534
10535         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10536         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
10537         * passes.c (function_called_by_processed_nodes_p): New.
10538         * ipa-pure-const.c (check_call): Fix handling of operands.
10539         (analyze_function): Dump debug output for skipped bodies.
10540         (local_pure_const): Use function_called_by_processed_nodes_p.
10541         * dwarf2out.c (reference_to_unused): Use output.
10542         * passes.c (do_per_function_toporder): Likewise.
10543
10544         2008-11-12  Jan Hubicka  <jh@suse.cz>
10545
10546         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
10547         * ipa-pure-const.c (funct_state_d): Add can throw field; make
10548         state_set_in_source enum
10549         (check_decl): Ignore memory tags; do not set fake looping flags;
10550         dump diagnostics.
10551         (check_operand, check_tree, check_rhs_var, check_lhs_var,
10552         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
10553         (check_call, analyze_function): Rewrite.
10554         (check_stmt): New.
10555         (add_new_function): Update call of analyze_function.
10556         (generate_summary): Add call of analyze_function.
10557         (propagate): Propagate can_throw; handle state_set_in_source correctly.
10558         (local_pure_const): New function.
10559         (pass_local_pure_const): New pass.
10560         * ipa-inline.c (inline_transform): Set after_inlining.
10561         * tree-eh.c (stmt_can_throw_external): New.
10562         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
10563         work with aliasing built.
10564         * tree-flow.h (stmt_can_throw_external): New.
10565         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
10566         and local pure/const pass in early and late optimization queue.
10567
10568 2009-03-28  Martin Jambor  <mjambor@suse.cz>
10569
10570         * fold-const.c (get_pointer_modulus_and_residue): New parameter
10571         allow_func_align.
10572         (fold_binary): Allow function decl aligment consideration is the
10573         second argument is integer constant one.
10574         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
10575         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
10576         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
10577
10578 2009-03-28  Jan Hubicka  <jh@suse.cz>
10579
10580         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
10581         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
10582         * function.h (rtl_data): Add nothrow flag.
10583         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
10584         set DECL_NOTHROW for AVAILABLE functions.
10585
10586 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
10587
10588         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
10589         following vector keyword has expansion starting with pixel or bool
10590         keyword, expand vector to __vector and pixel or bool to __pixel or
10591         __bool.
10592
10593         PR c++/39554
10594         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
10595         warn_if_disallowed_function_p): Removed.
10596         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
10597         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
10598         warning_if_disallowed_function_p.
10599         * flags.h (warn_if_disallowed_function_p,
10600         warn_disallowed_functions): Removed.
10601         * common.opt (Wdisallowed-function-list=): Removed.
10602         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
10603
10604 2009-03-28  Richard Guenther  <rguenther@suse.de>
10605
10606         PR tree-optimization/38723
10607         * tree-ssa-pre.c (compute_avail): Add all default definitions to
10608         the entry block.
10609
10610 2009-03-28  Jan Hubicka  <jh@suse.cz>
10611
10612         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
10613         test introduced by my previous patch.
10614
10615 2009-03-28  Richard Guenther  <rguenther@suse.de>
10616
10617         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
10618         the PHIs value undefined.
10619
10620 2009-03-28  Jan Hubicka  <jh@suse.cz>
10621
10622         * tree-pass.h (pass_fixup_cfg): New pass.
10623         * ipa-inline.c (inline_transform): Set
10624         always_inline_functions_inlined/after_inlining.
10625         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
10626         (pass_fixup_cfg): New pass.
10627         * passes.c (init_optimization_passes): Add fixup_cfg.
10628
10629 2009-03-28  Richard Guenther  <rguenther@suse.de>
10630
10631         PR tree-optimization/38458
10632         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
10633         argument use the arguments copy-of value.
10634
10635 2009-03-28  Richard Guenther  <rguenther@suse.de>
10636
10637         PR tree-optimization/38180
10638         * tree-ssa-ccp.c (get_default_value): Simplify.
10639         (likely_value): Likewise.
10640         (surely_varying_stmt_p): Properly handle VOP case.
10641         (ccp_initialize): Likewise.
10642         (ccp_fold): Handle propagating through *&.
10643         (fold_const_aggregate_ref): Also handle decls.
10644
10645 2009-03-28  Jan Hubicka  <jh@suse.cz>
10646
10647         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10648         * cgraph.h (cgraph_node): Likewise.
10649         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
10650         (cgraph_reset_node): Use process flag.
10651         (cgraph_mark_functions_to_output): Likewise.
10652         (cgraph_expand_function): Likewise.
10653         (cgraph_expand_all_functions): Likewise.
10654         (cgraph_output_in_order): Likewise.
10655         * dwarf2out.c (reference_to_unused): Likewise.
10656         * passes.c do_per_function_toporder): Likewise.
10657
10658 2009-03-28  Jan Hubicka  <jh@suse.cz>
10659
10660         Bring from lto-branch:
10661
10662         2008-09-03  Doug Kwan  <dougkwan@google.com>
10663
10664         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
10665         enums instead of reason strings.
10666         * cgraph.c (cgraph_create_edge): Same.
10667         (cgraph_inline_failed_string): New function.
10668         * cgraph.h (cgraph_inline_failed_t): New enum type.
10669         (cgraph_inline_failed_string): New prototype.
10670         (struct cgraph_edge): Change type of INLINED_FAILED from constant
10671         char pointer to cgraph_inline_failed_t.
10672         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
10673         (cgraph_default_inline_p): Ditto.
10674         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
10675         to cgraph_inline_failed_t pointer.
10676         * cif-code.def: New file.
10677         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
10678         reason string.
10679         (cgraph_check_inline_limits): Change type of REASON to pointer to
10680         cgraph_inline_failed_t.  Replace reason strings with enums.
10681         (cgraph_default_inline_p): Ditto.
10682         (cgraph_recursive_inlining_p): Ditto.
10683         (update_caller_keys): Change type of FAILED_REASON to
10684         cgraph_inline_failed_t.
10685         (cgraph_set_inline_failed): Change type of REASON to pointer to
10686         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
10687         convert enums to strings for text output.
10688         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
10689         to be of type cgraph_inline_failed_t.  Replace reason strings with
10690         enums.  Call cgraph_inline_failed_string to covert enums
10691         to strings for text output.
10692         (cgraph_decide_inlining): Replace reason strings with enums.
10693         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
10694         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
10695         for text output.
10696         * tree-inline.c (expand_call_inline): Change type of REASON
10697         to cgraph_inline_failed_t.  Replace reason strings with enums.
10698         Call cgraph_inline_failed_string for text output.
10699         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
10700         (cgraph.o): Ditto.
10701
10702 2009-03-28  Jan Hubicka  <jh@suse.cz>
10703
10704         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
10705         cgraph_clone_node): Remove master clone handling.
10706         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10707         * cgraph.h (master_clone): Remove.
10708         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10709         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
10710         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
10711
10712 2009-03-28  Jan Hubicka  <jh@suse.cz>
10713
10714         * cgraph.c (cgraph_function_body_availability): Functions declared
10715         inline are always safe to assume that it is not going to be replaced.
10716
10717 2009-03-28  Richard Guenther  <rguenther@suse.de>
10718
10719         PR tree-optimization/38513
10720         * tree-ssa-pre.c (eliminate): Remove redundant stores.
10721         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
10722         EXC_PTR_EXPR and FILTER_EXPR.
10723         (get_ref_from_reference_ops): Likewise.
10724
10725 2009-03-28  Richard Guenther  <rguenther@suse.de>
10726
10727         PR tree-optimization/38968
10728         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
10729         Use FLOOR_MOD_EXPR to compute misalignment.
10730
10731 2009-03-28  Richard Guenther  <rguenther@suse.de>
10732
10733         PR tree-optimization/37795
10734         * tree.h (combine_comparisons): Declare.
10735         * fold-const.c (combine_comparisons): Export.
10736         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
10737         comparisons.
10738         (ifcombine_iforif): Use combine_comparisons.
10739
10740 2009-03-28  Jan Hubicka  <jh@suse.cz>
10741
10742         * tree-eh.c (inlinable_call_p): New function.
10743         (make_eh_edges): Use it.
10744         (verify_eh_edges): Use it.
10745         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
10746         * except.c (reachable_next_level): Add inlinable_function argument
10747         (sjlj_find_directly_reachable_regions): Update.
10748         (add_reachable_handler): Do not set saw_any_handlers.
10749         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
10750         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10751         Add new inlinable call parameter.
10752         (can_throw_internal, can_throw_external): Update.
10753         * except.h (can_throw_internal_1, can_throw_external_1,
10754         foreach_reachable_handler): Update declaration.
10755
10756 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
10757
10758         * config/arm/t-arm-coff, config/h8300/coff.h,
10759         config/i386/i386-aout.h, config/i386/i386-coff.h,
10760         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
10761         config/pdp11/2bsd.h, config/rs6000/aix41.h,
10762         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
10763         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
10764         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
10765         sys-types.h: Remove.
10766         * Makefile.in: Remove protoize and fixproto support and references
10767         in comments.
10768         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
10769         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
10770         Remove.
10771         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
10772         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
10773         unprotoize$(exeext).
10774         (rest.encap): Don't depend on $(STMP_FIXPROTO)
10775         (.PHONY): Don't depend on proto.
10776         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
10777         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
10778         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
10779         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
10780         build/gen-protos.o, build/scan.o, xsys-protos.h,
10781         build/fix-header$(build_exeext), build/fix-header.o,
10782         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
10783         stmp-install-fixproto): Remove.
10784         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
10785         SYSCALLS.c or fixproto files.
10786         (install-common): Don't install protoize.
10787         (install-headers-tar, install-headers-cpio, install-headers-cp):
10788         Don't depend on $(STMP_FIXPROTO).
10789         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
10790         install fixproto files or write out fixproto settings.
10791         (uninstall): Don't uninstall protoize.
10792         * config.gcc (use_fixproto): Remove.
10793         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
10794         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
10795         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
10796         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
10797         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
10798         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
10799         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
10800         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
10801         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
10802         * config/t-vxworks (STMP_FIXPROTO): Remove.
10803         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
10804         STMP_FIXPROTO): Remove.
10805         * config.in, configure: Regenerate.
10806         * crtstuff.c (gid_t, uid_t): Don't undefine.
10807         * doc/install.texi: Change m68k-coff to m68k-elf in example.
10808         (arm-*-coff, arm-*-aout: Remove target entries.
10809         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
10810         Remove mention of AIX 4.1.
10811         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
10812         * doc/invoke.texi (Running Protoize): Remove.
10813         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
10814         (Protoize Caveats): Remove.
10815         * tsystem.h: Update comments on headers assumed to exist.
10816
10817 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
10818
10819         * genautomata.c: Add a new year to the copyright.  Add a new
10820         reference.
10821         (struct insn_reserv_decl): Add comments for member bypass_list.
10822         (find_bypass): Remove.
10823         (insert_bypass): New.
10824         (process_decls): Use insert_bypass.
10825         (output_internal_insn_latency_func): Output all bypasses with the
10826         same input insn in one switch case.
10827
10828         * rtl.def (define_bypass): Describe bypass choice.
10829         * doc/md.texi (define_bypass): Ditto.
10830
10831 2009-03-27  Richard Guenther  <rguenther@suse.de>
10832
10833         * gimplify.c (mark_addressable): Export.
10834         * tree-flow.h (mark_addressable): Declare.
10835         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
10836         * tree-ssa.c (verify_phi_args): Verify that address taken
10837         variables have TREE_ADDRESSABLE set.
10838
10839 2009-03-27  Richard Guenther  <rguenther@suse.de>
10840
10841         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
10842         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
10843         Do not mark decls TREE_ADDRESSABLE.
10844         (build_fold_addr_expr): Adjust.
10845         (fold_addr_expr): Remove.
10846         (fold_unary): Use build_fold_addr_expr.
10847         (fold_comparison): Likewise.
10848         (split_address_to_core_and_offset): Likewise.
10849         * coverage.c (tree_coverage_counter_addr): Mark the array decl
10850         TREE_ADDRESSABLE.
10851         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
10852         (gimplify_modify_expr_to_memcpy): Mark source and destination
10853         addressable.
10854         * omp-low.c (create_omp_child_function): Mark the object decl
10855         TREE_ADDRESSABLE.
10856         (lower_rec_input_clauses): Mark the var we take the address of
10857         TREE_ADDRESSABLE.
10858         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
10859
10860 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10861
10862         PR middle-end/39315
10863         * cfgexpand.c (expand_one_stack_var_at): Change alignment
10864         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
10865
10866 2009-03-27  Richard Guenther  <rguenther@suse.de>
10867
10868         PR tree-optimization/39120
10869         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
10870         constraints.
10871         (handle_lhs_call): Process return constraints.  Add escape
10872         constraints if necessary.
10873         (handle_const_call): Fill out return constraints.  Make nested
10874         case more precise.  Avoid consttmp if possible.
10875         (handle_pure_call): Fill out return constraints.  Avoid
10876         callused if possible.
10877         (find_func_aliases): Simplify call handling.
10878
10879 2009-03-27  Richard Guenther  <rguenther@suse.de>
10880
10881         PR tree-optimization/39120
10882         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
10883         as a representative.
10884         (solve_graph): Do propagate CALLUSED.
10885         (handle_pure_call): Use a scalar constraint from CALLUSED for
10886         the return value.
10887         (find_what_p_points_to): CALLUSED shall not appear in poins-to
10888         solutions.
10889
10890 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10891
10892         PR c/39323
10893         * c-common.c (handle_aligned_attribute): Properly check alignment
10894         overflow.  Use (1U << i) instead of (1 << i).
10895
10896         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
10897
10898         * expr.h (get_mem_align_offset): Updated.
10899
10900         * tree.h (tree_decl_common): Change align to "unsigned int" and
10901         move it before pointer_alias_set.
10902
10903 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10904             Jakub Jelinek  <jakub@redhat.com>
10905
10906         PR target/38034
10907         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
10908         gr_register_operand with gr_reg_or_0_operand.
10909         (cmpxchg_rel_di): Likewise.
10910         (sync_lock_test_and_set<mode>): Likewise.
10911
10912 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10913
10914         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
10915         (true_regnum): Likewise.
10916
10917         * rtlanal.c (subreg_info): Moved to ...
10918         * rtl.h (subreg_info): Here.  New.
10919         (subreg_get_info): New.
10920
10921         * rtlanal.c (subreg_get_info): Make it extern.
10922
10923 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10924
10925         PR target/39472
10926         * config/i386/i386.c (ix86_abi): New.
10927         (override_options): Handle -mabi=.
10928         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
10929         (ix86_call_abi_override): Likewise.
10930         (init_cumulative_args): Likewise.
10931         (function_arg_advance): Likewise.
10932         (function_arg_64): Likewise.
10933         (function_arg): Likewise.
10934         (ix86_pass_by_reference): Likewise.
10935         (ix86_function_value_regno_p): Likewise.
10936         (ix86_build_builtin_va_list_abi): Likewise.
10937         (setup_incoming_varargs_64): Likewise.
10938         (is_va_list_char_pointer): Likewise.
10939         (ix86_init_machine_status): Likewise.
10940         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
10941         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
10942         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
10943         (ix86_function_abi): Make it static and return enum calling_abi.
10944         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
10945         with ix86_abi.
10946         (ix86_fn_abi_va_list): Updated.
10947
10948         * config/i386/i386.h (ix86_abi): New.
10949         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
10950         (CONDITIONAL_REGISTER_USAGE): Likewise.
10951         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
10952         (machine_function): Likewise.
10953
10954         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
10955         with ix86_abi.
10956         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
10957         (STACK_BOUNDARY): Likewise.
10958         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
10959
10960         * config/i386/i386.opt (mabi=): New.
10961
10962         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
10963         return enum calling_abi.
10964         (ix86_function_type_abi): Likewise.
10965         (ix86_function_abi): Removed.
10966
10967         * doc/invoke.texi: Document -mabi= option for x86.
10968
10969 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10970
10971         * builtins.c (real_dconstp): Delete.
10972         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
10973
10974 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
10975             Jakub Jelinek  <jakub@redhat.com>
10976
10977         PR debug/37959
10978         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
10979         (gen_subprogram_die): When a function is explicit, generate the
10980         DW_AT_explicit attribute.
10981         * langhooks.h (struct lang_hooks_for_decls): Add
10982         function_decl_explicit_p langhook.
10983         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
10984         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
10985
10986 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
10987
10988         * builtins.c (fold_builtin_memory_op): Optimize memmove
10989         into memcpy if we can prove source and destination don't overlap.
10990
10991         * tree-inline.c: Include gt-tree-inline.h.
10992         (clone_fn_id_num): New variable.
10993         (clone_function_name): New function.
10994         (tree_function_versioning): Use it.
10995         * Makefile.in (GTFILES): Add tree-inline.c.
10996
10997 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
10998
10999         * BASE-VER: Change to 4.5.0.
11000
11001 2009-03-27  Xinliang David Li  <davidxl@google.com>
11002
11003         PR tree-optimization/39557
11004         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
11005
11006 2009-03-27  Xinliang David Li  <davidxl@google.com>
11007
11008         PR tree-optimization/39548
11009         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
11010         candidate check.
11011
11012 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11013
11014         * c-common.c (pointer_int_sum): Use %wd on return from
11015         tree_low_cst.
11016
11017 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11018
11019         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
11020         on return from tree_low_cst.
11021
11022 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11023
11024         PR c++/36799
11025         * ginclude/stdarg.h (va_copy): Define also for
11026         __GXX_EXPERIMENTAL_CXX0X__.
11027
11028 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11029
11030         PR c++/35652
11031         * builtins.h (c_strlen): Do not warn here.
11032         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
11033         * c-common.c (pointer_int_sum): Take an explicit location.
11034         Warn about offsets out of bounds.
11035         * c-common.h (pointer_int_sum): Adjust declaration.
11036
11037 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11038
11039         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
11040         markup glitch.
11041
11042 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
11043
11044         PR c++/39554
11045         * opts.c (warn_if_disallowed_function_p): Don't assume
11046         get_callee_fndecl must return non-NULL.
11047
11048 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
11049
11050         PR rtl-optimization/39522
11051         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
11052         when reg_reloaded_valid is set.
11053
11054 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11055
11056         * config/spu/divv2df3.c: New file.
11057         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
11058         (DPBIT_FUNCS): Filter out _div_df.
11059
11060 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
11061
11062         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
11063         a jump insn, count that jump in the distance to the loop start.
11064
11065 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
11066
11067         PR target/39523
11068         * config/sh/sh.c (calc_live_regs): Fix condition for global
11069         registers except PIC_OFFSET_TABLE_REGNUM.
11070
11071 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
11072
11073         PR/39518
11074         * doc/invoke.texi (-mconsole): New.
11075         (-mcygwin): New.
11076         (-mno-cygwin): New.
11077         (-mdll): New.
11078         (-mnop-fun-dllimport): New.
11079         (-mthread): New.
11080         (-mwin32): New.
11081         (-mwindows): New.
11082         (sub section "i386 and x86-64 Windows Options"): New.
11083
11084 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
11085
11086         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
11087         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
11088
11089 2009-03-25  Richard Guenther  <rguenther@suse.de>
11090
11091         PR middle-end/39497
11092         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
11093         of -Wno-error.
11094
11095 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
11096
11097         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
11098         neither of haifa/selective schedulers are working.
11099
11100 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11101
11102         * doc/invoke.texi (Debugging Options): Fix description of
11103         -fno-merge-debug-strings.
11104
11105 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
11106
11107         * config/cris/libgcc.ver: New version-script.
11108         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
11109
11110         * configure.ac <GAS features, nop mnemonic>: Add pattern
11111         crisv32-*-* for "nop".
11112         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
11113         * configure: Regenerate.
11114
11115 2009-03-24  Ira Rosen  <irar@il.ibm.com>
11116
11117         PR tree-optimization/39529
11118         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
11119         mark_sym_for_renaming for the tag copied to the new vector
11120         pointer.
11121
11122 2009-03-24  Arthur Loiret  <aloiret@debian.org>
11123
11124         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
11125         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
11126         EXTRA_SPEC_FUNCTIONS.
11127         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
11128         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
11129         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
11130         -march and -mtune options.
11131
11132 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
11133
11134         * config/m68k/t-rtems: Add m5329 multilib.
11135
11136 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
11137             Jakub Jelinek  <jakub@redhat.com>
11138
11139         PR debug/39524
11140         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
11141         nodes.
11142
11143 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
11144
11145         PR c/39495
11146         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
11147         instead of c_parser_expression_conv, if original_code isn't one of the
11148         4 allowed comparison codes, fail.
11149
11150 2009-03-23  Richard Guenther  <rguenther@suse.de>
11151
11152         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
11153         * tree.h (struct tree_type): Likewise.
11154         * reload.h (struct insn_chain): Likewise.
11155         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
11156         * function.h (struct function): Likewise.
11157         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
11158
11159 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
11160
11161         PR tree-optimization/39516
11162         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
11163
11164 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
11165
11166         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
11167         should be set true if BITS_PER_WORD of target is bigger than 32
11168
11169 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
11170
11171         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
11172         Translate -B-options to -rpath-link.  Correct existing
11173         rpath-link and conditionalize on !nostdlib.
11174
11175 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11176
11177         * doc/extend.texi (Function Attributes, Variable Attributes):
11178         Fix typos.
11179         * doc/invoke.texi (Debugging Options, Optimize Options)
11180         (i386 and x86-64 Options, MCore Options): Likewise.
11181
11182 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
11183
11184         PR debug/37890
11185         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
11186         it for block local namespace aliases.
11187         (gen_decl_die): Pass context_die to gen_namespace_die.
11188
11189 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
11190
11191         PR c/39495
11192         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
11193         minimum or maximum value.
11194
11195 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
11196
11197         * reginfo.c (globalize_reg): Recompute derived reg sets.
11198
11199 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
11200
11201         PR target/39063
11202         * libgcc2.c (mprotect): Do not use signed arguments for
11203         VirtualProtect, use DWORD arguments.  Also fix the 'may
11204         be used uninitialized' warning for the np variable.
11205
11206 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
11207
11208         PR target/39496
11209         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
11210         functions using regparm calling conventions when not optimizing.
11211         (ix86_function_sseregparm): Similarly for sseregparm calling
11212         conventions.
11213
11214 2009-03-19  Li Feng  <nemokingdom@gmail.com>
11215
11216         PR middle-end/39500
11217         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
11218         dependence if the first conflict is after niter iterations.
11219
11220 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
11221
11222         PR middle-end/38609
11223         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
11224         functions with dynamic stack-pointer adjustments.
11225
11226 2009-03-19  Ben Elliston  <bje@au.ibm.com>
11227
11228         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
11229         option; change to -msdata=data.
11230
11231 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11232
11233         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
11234         and -fopenmp.
11235
11236 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
11237
11238         PR target/35180
11239         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
11240
11241 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
11242
11243         * doc/invoke.texi (Code Gen Options): Expand discussion of
11244         -fno-common.
11245
11246 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
11247
11248         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
11249         * matrix-reorg.c (struct matrix_info): Likewise.
11250         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
11251         * rtl.h (struct mem_attrs): Likewise.
11252         * df.h (struct df): Likewise.
11253         * tree-data-ref.h (struct data_dependence_relation): Likewise.
11254         * ira-int.h (struct ira_allocno): Likewise.
11255         * df-scan.c (struct df_collection_rec): Likewise.
11256         * ira.c (struct equivalence): Likewise.
11257         * function.c (struct temp_slot): Likewise.
11258         * cfgloop.h (struct loop): Likewise.
11259
11260         PR debug/39485
11261         * function.c (use_register_for_decl): When not optimizing, disregard
11262         register keyword for variables with types containing methods.
11263
11264 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
11265
11266         PR middle-end/39447
11267         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
11268         (is_simple_operand): Call contains_component_ref_p before calling data
11269         reference analysis that would fail on COMPONENT_REFs.
11270
11271         * tree-vrp.c (search_for_addr_array): Fix formatting.
11272
11273 2009-03-18  Richard Guenther  <rguenther@suse.de>
11274
11275         * tree-vect-transform.c (vect_loop_versioning): Fold the
11276         generated comparisons.
11277         * tree-vectorizer.c (set_prologue_iterations): Likewise.
11278         (slpeel_tree_peel_loop_to_edge): Likewise.
11279
11280 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11281
11282         PR middle-end/37805
11283         * opts.c (print_specific_help): In addition to `undocumented',
11284         accept `separate' and `joined' flags if passed alone.  Describe
11285         output by the first matched one of those.
11286         (common_handle_option): Skip over empty strings.
11287         * gcc.c (display_help): Fix help string for `--help='.
11288         * doc/invoke.texi (Option Summary, Overall Options): With
11289         `--help=', classes and qualifiers can both be repeated, but
11290         only the latter can be negated.  One should not pass only
11291         negated qualifiers.  Fix markup and examples.
11292
11293         Revert
11294         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
11295         PR middle-end/37805
11296         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
11297         and -fhelp=separate.
11298
11299 2009-03-17  Jing Yu  <jingyu@google.com>
11300
11301         PR middle-end/39378
11302         * function.h (struct rtl_data): Move is_thunk from here...
11303         (struct function): ...to here.
11304         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
11305         * varasm.c (assemble_start_function): Change is_thunk from crtl to
11306         cfun.
11307         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
11308         cfun.
11309         (alpha_does_function_need_gp, alpha_start_function): Likewise.
11310         (alpha_output_function_end_prologue): Likewise.
11311         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
11312         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
11313         (rs6000_output_function_epilogue): Likewise.
11314         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
11315
11316 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
11317
11318         PR target/39482
11319         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
11320         from different units in a single alternative.
11321         (*truncdfsf_i387): Ditto.
11322         (*truncxfsf2_mixed): Ditto.
11323         (*truncxfdf2_mixed): Ditto.
11324
11325 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
11326
11327         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
11328         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
11329
11330         PR debug/39474
11331         * tree-ssa-live.c (remove_unused_locals): Don't remove local
11332         unused non-artificial variables when not optimizing.
11333
11334         PR debug/39471
11335         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
11336         DW_TAG_imported_module even if decl is IMPORTED_DECL with
11337         NAMESPACE_DECL in its DECL_INITIAL.
11338
11339         PR middle-end/39443
11340         * optabs.c (set_user_assembler_libfunc): New function.
11341         * expr.h (set_user_assembler_libfunc): New prototype.
11342         * c-common.c: Include libfuncs.h.
11343         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
11344         for memcmp, memset, memcpy, memmove and abort.
11345         * Makefile.in (c-common.o): Depend on libfuncs.h.
11346
11347         PR debug/39412
11348         * dwarf2out.c (gen_inlined_enumeration_type_die,
11349         gen_inlined_structure_type_die, gen_inlined_union_type_die,
11350         gen_tagged_type_instantiation_die): Removed.
11351         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
11352         do nothing.
11353
11354 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
11355
11356         PR testsuite/38526
11357         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
11358         its use.
11359         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
11360         (check-parallel-%): Ditto.
11361         (check-consistency): Ditto.
11362
11363 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
11364
11365         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
11366         local variable rhs by NULL_TREE.
11367
11368 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11369
11370         PR target/39477
11371         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
11372
11373 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11374
11375         PR target/39476
11376         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
11377
11378 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11379
11380         PR target/39473
11381         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
11382         for ms->sysv ABI calls only in 64bit mode.
11383
11384         * config/i386/i386.md (untyped_call): Support 32bit.
11385
11386 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
11387
11388         * doc/extend.texi: Replace x86_65 with x86_64.
11389
11390 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
11391
11392         PR tree-optimization/39455
11393         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
11394         mismatches for POINTER_TYPE_P (type).
11395         (number_of_iterations_le): Likewise.
11396
11397 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11398
11399         * config/picochip/picochip.c: Removed profiling support.
11400         * config/picochip/picochip.md: Removed profiling instruction.
11401         * config/picochip/picochip.h: Removed profiling builtin.
11402
11403 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
11404
11405         * doc/install.texi (--with-host-libstdcxx): Document.
11406
11407 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
11408
11409         PR target/34299
11410         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
11411         generate a warning if the function name does not begin with
11412         "__vector" and the function has either the 'signal' or 'interrupt'
11413         attribute, from here to ...
11414         (avr_declare_function_name): ...here. New function.
11415         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
11416         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
11417
11418 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
11419
11420         PR bootstrap/39454
11421         * cse.c (fold_rtx): Don't modify original const_arg1 when
11422         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
11423         separate variable instead.
11424         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
11425         from out of range shift counts.
11426         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
11427
11428 2009-03-13  Catherine Moore  <clm@codesourcery.com>
11429
11430         * config/i386/x-mingw32 (host-mingw32.o): Replace
11431         diagnostic.h with $(DIAGNOSTIC_H).
11432
11433 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
11434
11435         PR target/39431
11436         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
11437         predicate.
11438         * config/i386/sync.md (sync_compare_and_swap<mode>,
11439         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
11440         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
11441         into a register.
11442         (sync_double_compare_and_swapdi_pic,
11443         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
11444         cmpxchg8b_pic_memory_operand instead of just memory_operand.
11445
11446 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11447
11448         PR target/39445
11449         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
11450
11451 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11452
11453         PR target/39327
11454         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11455         (avx_addsubv4df3): Likewise.
11456         (*avx_addsubv4sf3): Likewise.
11457         (sse3_addsubv4sf3): Likewise.
11458
11459 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11460
11461         PR target/38824
11462         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
11463
11464 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
11465
11466         PR debug/39432
11467         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
11468         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11469         registers for allocnos created from user-defined variables.
11470
11471 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11472
11473         PR target/39181
11474         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
11475         of non-integer mode as well.
11476
11477 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
11478
11479         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
11480         for functions for which the parameter types are unknown.
11481
11482 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
11483
11484         PR target/39137
11485         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
11486         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
11487         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
11488         * config/i386/i386.c (ix86_local_alignment): For
11489         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
11490         long long variables on the stack to avoid dynamic realignment.
11491         Allow the first argument to be a decl rather than type.
11492         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
11493
11494 2009-03-11  Nick Clifton  <nickc@redhat.com>
11495
11496         PR target/5362
11497         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
11498         options.
11499         Add description to mno-lsim option.
11500         * config/mcore/mcore.h: Remove comment about deprecated m4align
11501         option.
11502         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
11503         * doc/invoke.texi: Add description of mno-lsim and
11504         mstack-increment options.
11505
11506         * config/fr30/fr30.opt: Document the -mno-lsim option.
11507         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
11508         and -mno-lsim options.
11509
11510 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11511
11512         * fold-const.c (fold_comparison): Only call fold_inf_compare
11513         if the mode supports infinities.
11514
11515 2009-03-11  Jason Merrill  <jason@redhat.com>
11516
11517         PR debug/39086
11518         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
11519         end already did.  Notice GIMPLE_CALL modifications of the result.
11520         Don't copy debug information from an ignored decl or a decl from
11521         another function.
11522
11523 2009-03-10  Richard Guenther  <rguenther@suse.de>
11524             Nathan Froyd  <froydnj@codesourcery.com>
11525
11526         PR middle-end/37850
11527         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
11528         (__divMODE3): Likewise.
11529
11530 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
11531
11532         PR tree-optimization/39394
11533         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
11534         DECL_SIZE_UNIT of variable length FIELD_DECLs.
11535
11536 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11537
11538         * recog.c (verfiy_changes): Disallow renaming of hard regs in
11539         inline asms for register asm ("") declarations.
11540
11541 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11542
11543         * fold-const.c (fold_unary): Fix comment.
11544
11545 2009-03-07  Jan Hubicka  <jh@suse.cz>
11546
11547         PR target/39361
11548         * tree-inline.c (setup_one_parameter): Do replacement of const
11549         argument by constant in SSA form.
11550
11551 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11552
11553         PR middle-end/38028
11554         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
11555         determine alignment passed to assign_stack_local.
11556         (assign_parms_unsplit_complex): Likewise.
11557         * except.c (sjlj_build_landing_pads): Likewise.
11558
11559 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11560
11561         PR middle-end/39360
11562         * tree-flow.h (add_referenced_var): Return bool instead of void.
11563         * tree-dfa.c (add_referenced_var): Return result of
11564         referenced_var_check_and_insert call.
11565         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
11566         of referenced_var_check_and_insert.
11567
11568         PR debug/39372
11569         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
11570         (gen_variable_die): Emit DW_AT_location on abstract static variable's
11571         DIE, don't emit it if abstract origin already has it.
11572         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
11573         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
11574
11575 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11576
11577         * genpreds.c (needs_variable): Fix parentheses at variable name
11578         detection.
11579         (write_tm_constrs_h): Indent generated code.
11580
11581 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11582
11583         * doc/extend.texi (Function Attributes): Add documentation
11584         for isr attributes.
11585
11586 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11587
11588         PR debug/39387
11589         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
11590         take locus from its DECL_SOURCE_LOCATION instead of input_location.
11591
11592 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11593
11594         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
11595         the loop as bad.
11596
11597 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
11598
11599         PR debug/39379
11600         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
11601         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
11602
11603 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
11604
11605         * config/i386/i386.md (R8_REG, R9_REG): New constants.
11606         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
11607         constants instead of magic numbers.
11608         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11609         (QI_REG_P): Ditto.
11610         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
11611         (x86_64_ms_abi_int_parameter_registers): Ditto.
11612         (x86_64_int_return_registers): Ditto.
11613         (ix86_maybe_switch_abi): Ditto.
11614         (ix86_expand_call): Ditto for clobbered_registers array.
11615         (ix86_hard_regno_mode_ok): Ditto.
11616         (x86_extended_QIreg_mentioned_p): Ditto.
11617
11618 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
11619
11620         PR tree-optimization/39349
11621         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
11622
11623         * combine.c (gen_lowpart_for_combine): Use omode when generating
11624         clobber.
11625
11626 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
11627
11628         PR rtl-optimization/39235
11629         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
11630
11631 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11632
11633         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
11634
11635 2009-03-04  Richard Guenther  <rguenther@suse.de>
11636
11637         PR tree-optimization/39362
11638         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
11639         that occur in abnormal PHIs should be varying.
11640
11641 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11642
11643         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
11644         Extend comments.
11645         (simple_iv):  Take loop as an argument instead of statement.
11646         * tree-scalar-evolution.h (simple_iv): Declaration changed.
11647         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
11648         to simple_iv.
11649         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
11650         Ditto.
11651         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
11652         * matrix-reorg.c (analyze_transpose): Ditto.
11653         * tree-data-ref.c (dr_analyze_innermost): Ditto.
11654         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
11655         * tree-predcom.c (ref_at_iteration): Ditto.
11656         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
11657
11658 2009-03-04  Richard Guenther  <rguenther@suse.de>
11659
11660         PR tree-optimization/39358
11661         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
11662         escaped_id and callused_id.
11663         (solve_graph): Likewise.
11664
11665 2009-03-04  Richard Guenther  <rguenther@suse.de>
11666
11667         PR tree-optimization/39339
11668         * tree-sra.c (try_instantiate_multiple_fields): Make it
11669         no longer ICE on the above.
11670
11671 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
11672
11673         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
11674         that fits within Pmode.
11675
11676 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11677
11678         PR middle-end/10109
11679         * tm.texi (LIBCALL_VALUE): Update description.
11680
11681 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11682
11683         PR middle-end/34443
11684         * doc/extend.texi (section): Update description.
11685
11686 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
11687
11688         PR middle-end/39345
11689         * tree-inline.c (remapped_type): New.
11690         (can_be_nonlocal): Call remapped_type instead of remap_type.
11691
11692 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11693
11694         PR fortran/39354
11695         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
11696         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
11697
11698 2009-03-03  Richard Guenther  <rguenther@suse.de>
11699
11700         PR middle-end/39272
11701         * tree.c (tree_nonartificial_location): New function.
11702         * tree.h (tree_nonartificial_location): Declare.
11703         * builtins.c (expand_builtin_memory_chk): Provide location
11704         of the call location for artificial function pieces.
11705         (maybe_emit_chk_warning): Likewise.
11706         (maybe_emit_sprintf_chk_warning): Likewise.
11707         (maybe_emit_free_warning): Likewise.
11708         * expr.c (expand_expr_real_1): Likewise.
11709
11710 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11711
11712         PR tree-optimization/39343
11713         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
11714         COMPONENT_REF t has ARRAY_TYPE.
11715
11716 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
11717
11718         PR middle-end/39335
11719         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
11720         when the type precision of the induction variable should be
11721         larger than the type precision of nit.
11722         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
11723         * graphite.c (graphite_loop_normal_form): Same.
11724         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
11725
11726 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11727
11728         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
11729         (*call_1_rex64_ms_sysv): Use named constants instead of magic
11730         numbers to describe clobbered registers.
11731         (*call_value_0_rex64_ms_sysv): Ditto.
11732         * config/i386/mmx.md (mmx_emms): Ditto.
11733         (mmx_femms): Ditto.
11734
11735 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
11736
11737         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
11738         of ABI_64.
11739
11740 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11741
11742         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
11743         (spu_section_type_flags): New function.
11744
11745 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11746
11747         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
11748         reg_class_contents of FLOAT_REGS into a temporary.
11749
11750 2009-03-02  Richard Guenther  <rguenther@suse.de>
11751             Ira Rosen  <irar@il.ibm.com>
11752
11753         PR tree-optimization/39318
11754         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
11755         information to the vectorized statement.
11756
11757 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
11758
11759         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
11760         variable.  Use defined names instead of magic constants for REX SSE
11761         registers.
11762
11763 2009-03-01  Richard Guenther  <rguenther@suse.de>
11764
11765         PR tree-optimization/39331
11766         * omp-low.c (lower_send_shared_vars): Do not receive new
11767         values for the reference of DECL_BY_REFERENCE parms or results.
11768
11769 2009-03-01  Jan Hubicka  <jh@suse.cz>
11770
11771         PR debug/39267
11772         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
11773         BLOCK_NONLOCALIZED_VAR): New macros.
11774         (tree_block): Add nonlocalized_vars.
11775         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
11776         gen_decl_die): Add origin argument.  Allow generation of die with
11777         origin at hand only.
11778         (gen_member_die, gen_type_die_with_usage, force_decl_die,
11779         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
11780         of gen_*.
11781         (gen_block_die): Fix checking for unused blocks.
11782         (process_scope_var): Break out from .... ; work with origins only.
11783         (decls_for_scope) ... here; process nonlocalized list.
11784         (dwarf2out_ignore_block): Look for nonlocalized vars.
11785         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
11786         vars.
11787         (dump_scope_block): Dump them.
11788         * tree-inline.c (remap_decls): Handle nonlocalized vars.
11789         (remap_block): Likewise.
11790         (can_be_nonlocal): New predicate.
11791         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
11792
11793 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11794
11795         * configure: Regenerate.
11796
11797 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11798
11799         * optc-gen.awk: No need to duplicate option flags twice.
11800         Reuse help texts for duplicate options which do not have any.
11801
11802         * gcc.c (display_help): Document --version.
11803
11804         * gcc.c (main): If print_help_list and verbose_flag, ensure
11805         driver output comes before subprocess output.
11806
11807         * optc-gen.awk: Assign all remaining fields to help string,
11808         space-separated, for multi-line help in *.opt.
11809
11810         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
11811         -Wno-pedantic-ms-format is for MinGW targets only.
11812
11813         * doc/options.texi (Option file format): Fix bad indentation,
11814         restoring dropped sentence.
11815
11816 2009-02-28  Jan Hubicka  <jh@suse.cz>
11817
11818         * tree-inline.c (tree_function_versioning): Output debug info.
11819
11820 2009-02-28  Jan Hubicka  <jh@suse.cz>
11821
11822         PR debug/39267
11823         * tree-inline.c (setup_one_parameter): Do not copy propagate
11824         arguments when not optimizing.
11825
11826 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
11827
11828         PR target/39327
11829         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11830         (avx_addsubv4df3): Likewise.
11831         (*avx_addsubv4sf3): Likewise.
11832         (sse3_addsubv4sf3): Likewise.
11833         (*avx_addsubv2df3): Likewise.
11834         (sse3_addsubv2df3): Likewise.
11835         (avx_unpckhps256): Correct item selectors.
11836         (avx_unpcklps256): Likewise.
11837         (avx_unpckhpd256): Likewise.
11838         (avx_unpcklpd256): Likewise.
11839
11840 2009-02-28  Jan Hubicka  <jh@suse.cz>
11841
11842         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
11843         static vars.
11844         (copy_arguments_for_versioning): If var is declared don't declare it.
11845         (tree_function_versioning): First setup substitutions and then copy
11846         args.
11847
11848 2009-02-27  Jan Hubicka  <jh@suse.cz>
11849
11850         PR debug/39267
11851         * cgraph.h (varpool_output_debug_info): Remove.
11852         * cgraphunit.c (varpool_output_debug_info): Remove.
11853         * dwarf2out.c (deferred_locations_struct): New struct
11854         (deferred_locations): New type.
11855         (deferred_locations_list): New static var.
11856         (deffer_location): New function.
11857         (gen_variable_die): Use it.
11858         (decls_for_scope): Output info on local static vars.
11859         (dwarf2out_finish): Process deferred locations.
11860         * varpool.c (varpool_output_debug_info): Remove.
11861
11862 2009-02-27  Jan Hubicka  <jh@suse.cz>
11863
11864         PR debug/39267
11865         * tree.h (TREE_PROTECTED): Fix comment.
11866         (BLOCK_HANDLER_BLOCK): Remove.
11867         (struct tree_block): Remove handler_block add body_block.
11868         (inlined_function_outer_scope_p): New.
11869         (is_body_block): Remove.
11870         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
11871         * dwarf2out.c (is_inlined_entry_point): Remove.
11872         (add_high_low_attributes): Use inlined_function_outer_scope_p.
11873         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
11874         code.
11875         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
11876         * gimplify.c (gimplify_expr): Gimplify body blocks.
11877         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
11878         block with multiple subblocks.
11879         (dump_scope_block): Prettier output; dump more flags and info.
11880         (dump_scope_blocks): New.
11881         (remove_unused_locals): Use dump_scope_blocks.
11882         * tree-flow.h (dump_scope_blocks): Declare.
11883         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
11884         * stmt.c (is_body_block): Remove.
11885         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
11886         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
11887
11888 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
11889
11890         PR middle-end/39308
11891         * graphite.c (graphite_loop_normal_form): Do not call
11892         number_of_iterations_exit from a gcc_assert.
11893
11894 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11895
11896         * config/s390/s390.c (s390_swap_cmp): Look for conditional
11897         jumps if COND is NULL.
11898         (find_cond_jump): New function.
11899         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
11900         * config/s390/s390.md: Remove z10_cobra attribute value.
11901
11902 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
11903
11904         * config/alpha/alpha.h (alpha_expand_mov): Return false if
11905         force_const_mem returns NULL_RTX.
11906
11907 2009-02-26  Jan Hubicka  <jh@suse.cz>
11908
11909         PR debug/39267
11910         * cgraph.h (varpool_output_debug_info): Remove.
11911         * cgraphunit.c (varpool_output_debug_info): Remove.
11912         * dwarf2out.c (deferred_locations_struct): New struct
11913         (deferred_locations): New type.
11914         (deferred_locations_list): New static var.
11915         (deffer_location): New function.
11916         (gen_variable_die): Use it.
11917         (decls_for_scope): Output info on local static vars.
11918         (dwarf2out_finish): Process deferred locations.
11919         * varpool.c (varpool_output_debug_info): Remove.
11920
11921 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
11922
11923         PR rtl-optimization/39241
11924         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
11925         to subreg_offset_representable_p.
11926
11927 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11928
11929         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
11930         execute function prototype.  Get f and nregs from max_reg_num
11931         and get_insns.  Remove the first backward pass as it's dead,
11932         guard the forward pass by flag_expensive_optimizations.
11933         (rest_of_handle_regmove): Delete.
11934         (pass_regmove): Replace it with regmove_optimize.
11935
11936 2009-02-25  Martin Jambor  <mjambor@suse.cz>
11937
11938         PR tree-optimization/39259
11939         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
11940         calls_alloca function flags.
11941         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
11942         calls are detected.
11943
11944 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11945
11946         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
11947         flags_set_1_rtx, flags_set_1_set): Delete.
11948         (regmove_optimize): Do not call mark_flags_life_zones.
11949
11950 2009-02-24  Julian Brown  <julian@codesourcery.com>
11951
11952         PR target/35965
11953         * config/arm/arm.c (require_pic_register): Only set
11954         cfun->machine->pic_reg once per function.
11955
11956 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
11957
11958         * doc/invoke.texi (Link Options): Document an easier way to pass
11959         options that take arguments to the GNU linker using -Xlinker and -Wl.
11960
11961 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
11962
11963         PR target/33785
11964         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
11965
11966 2009-02-24  Richard Guenther  <rguenther@suse.de>
11967
11968         PR debug/39285
11969         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
11970
11971 2009-02-24  Richard Guenther  <rguenther@suse.de>
11972             Zdenek Dvorak  <ook@ucw.cz>
11973
11974         PR tree-optimization/39233
11975         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
11976         from converting them to a generic type.
11977
11978 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
11979
11980         PR tree-optimization/39260
11981         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
11982         contains a condition with a real type.
11983         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
11984
11985 2009-02-23  Jason Merrill  <jason@redhat.com>
11986
11987         PR c++/38880
11988         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
11989         narrowing_initializer_constant_valid_p.
11990         (narrowing_initializer_constant_valid_p): Don't return
11991         null_pointer_node for adding a pointer to itself.
11992
11993 2009-02-23  Jan Hubicka  <jh@suse.cz>
11994
11995         PR c/12245
11996         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
11997         resizing.
11998
11999 2009-02-23  Jan Hubicka  <jh@suse.cz>
12000
12001         PR tree-optimization/37709
12002         * tree.c (block_ultimate_origin): Move here from dwarf2out.
12003         * tree.h (block_ultimate_origin): Declare.
12004         * dwarf2out.c (block_ultimate_origin): Move to tree.c
12005         * tree-ssa-live.c (remove_unused_scope_block_p):
12006         Eliminate blocks containig no instructions nor live variables nor
12007         nested blocks.
12008         (dump_scope_block): New function.
12009         (remove_unused_locals): Enable removal of dead blocks by default;
12010         enable dumping at TDF_DETAILS.
12011
12012 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12013
12014         * config/i386/i386.c (classify_argument): Don't allow COImode
12015         and OImode.
12016         (function_arg_advance_32): Don't allow OImode.
12017         (function_arg_32): Likewise.
12018         (function_value_32): Likewise.
12019         (return_in_memory_32): Likewise.
12020         (function_arg_64): Remove OImode comment.
12021
12022 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12023
12024         PR target/39261
12025         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
12026         ix86_expand_vector_set for V4DImode in 64bit mode only.
12027         (ix86_expand_vector_init_one_var): Likewise.
12028
12029 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
12030
12031         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
12032
12033 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
12034
12035         PR bootstrap/39257
12036         * loop-iv.c: Revert last change.
12037         * emit-rtl.c: Likewise.
12038
12039 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12040
12041         PR target/39256
12042         * config/i386/i386.c (type_natural_mode): Remove an extra
12043         space in the warning message.
12044         (function_value_32): Handle 32-byte vector modes.
12045         (return_in_memory_32): Likewise.
12046
12047 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
12048
12049         * loop-iv.c (truncate_value): New function.
12050         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
12051         of lowpart_subreg.
12052         (lowpart_subreg): Move to...
12053         * emit-rtl.c: ...here.
12054
12055 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
12056
12057         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
12058         accidental and undocumented change at revision 140860.
12059
12060 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
12061
12062         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
12063         take gimple_seq * arguments.
12064         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
12065         types_compatible_p langhook.
12066
12067 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
12068             Joseph Myers  <joseph@codesourcery.com>
12069
12070         * config/arm/arm.c (arm_builtin_va_list): New function.
12071         (arm_expand_builtin_va_start): Likewise.
12072         (arm_gimplify_va_arg_expr): Likewise.
12073         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
12074         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
12075         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
12076         (va_list_type): New variable.
12077         (arm_mangle_type): Mangle va_list_type appropriately.
12078
12079 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
12080
12081         PR middle-end/39157
12082         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
12083         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
12084         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
12085         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
12086         parameter to 1000 for -O1 by default.
12087         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
12088         parameter.
12089         * loop-invariant.c: Include params.h.
12090         (move_loop_invariants): Don't call move_single_loop_invariants on
12091         very large loops.
12092
12093 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
12094
12095         * calls.c (emit_library_call_value_1): Use slot_offset instead of
12096         offset when calculating bounds for indexing stack_usage_map.  Fixes
12097         a buffer overflow with certain target setups.
12098
12099 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
12100
12101         PR target/39240
12102         * calls.c (expand_call): Clear try_tail_call if caller and callee
12103         disagree in promotion of function return value.
12104
12105 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
12106
12107         PR target/39175
12108         * c-common.c (c_determine_visibility): If visibility changed and
12109         DECL_RTL has been already set, call make_decl_rtl to update symbol
12110         flags.
12111
12112 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
12113
12114         PR c++/39188
12115         * varasm.c (assemble_variable): Don't check DECL_NAME when
12116         globalizing a variable.
12117
12118 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
12119
12120         PR c/38483
12121         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
12122         expression before any __builtin_trap call.
12123         * c-typeck.c (build_function_call): Convert and check function
12124         arguments before generating a call to a trap.  Evaluate the
12125         function arguments before the trap.
12126
12127 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
12128
12129         PR target/39228
12130         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
12131         (UNSPEC_FXAM_MEM): New unspec.
12132         (fxam<mode>2_i387_with_temp): New insn and split pattern.
12133         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
12134         memory using fxam<mode>2_i387_with_temp to remove excess precision.
12135
12136 2009-02-19  Richard Guenther  <rguenther@suse.de>
12137
12138         PR tree-optimization/39207
12139         PR tree-optimization/39074
12140         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
12141         storedanything_tree): New.
12142         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
12143         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
12144         (build_succ_graph): Add edges from STOREDANYTHING to all
12145         non-direct nodes.
12146         (init_base_vars): Initialize STOREDANYTHING.
12147         (compute_points_to_sets): Free substitution info after
12148         building the succ graph.
12149         (ipa_pta_execute): Likewise.
12150
12151         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
12152         field.
12153         (do_ds_constraint): Do not add to special var or non-pointer
12154         field solutions.
12155         (type_could_have_pointers): Split out from ...
12156         (could_have_pointers): ... here.  For arrays use the element type.
12157         (create_variable_info_for): Initialize may_have_pointers.
12158         (new_var_info): Likewise.
12159         (handle_lhs_call): Make the HEAP variable unknown-sized.
12160         (intra_create_variable_infos): Use a type with pointers for
12161         PARM_NOALIAS, make it unknown-sized.
12162
12163 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
12164
12165         PR target/39224
12166         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
12167
12168 2009-02-18  Jason Merrill  <jason@redhat.com>
12169
12170         PR target/39179
12171         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
12172         value if DECL_EXTERNAL.
12173         * tree-sra.c (sra_walk_gimple_assign): Likewise.
12174         * target.h (gcc_target::binds_local_p): Clarify "module".
12175         * tree.h (TREE_PUBLIC): Clarify "module".
12176
12177 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
12178
12179         PR target/38891
12180         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
12181         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
12182
12183 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
12184
12185         PR target/39082
12186         * c.opt (Wabi): Support C and ObjC.
12187         (Wpsabi): New.
12188
12189         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
12190
12191         * config/i386/i386.c (classify_argument): Warn once about the ABI
12192         change when passing union with long double.
12193
12194         * doc/invoke.texi: Update -Wabi for warning psABI changes.
12195
12196 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
12197
12198         PR c/35447
12199         * c-parser.c (c_parser_compound_statement): Always enter and leave
12200         a scope.
12201
12202 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12203
12204         PR target/34587
12205         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
12206
12207 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
12208
12209         PR tree-optimization/36922
12210         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
12211         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
12212         Likewise.
12213
12214 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12215
12216         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
12217         to 0 for EABI64.
12218
12219 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12220
12221         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
12222
12223 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12224
12225         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
12226         tree sharing.
12227
12228 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
12229             Richard Sandiford  <rdsandiford@googlemail.com>
12230
12231         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
12232         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
12233         (loongson_biadd): ...this.
12234
12235 2009-02-17  Richard Guenther  <rguenther@suse.de>
12236
12237         PR tree-optimization/39202
12238         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
12239         a var make sure to follow existing collapses.
12240
12241 2009-02-17  Richard Guenther  <rguenther@suse.de>
12242
12243         PR middle-end/39214
12244         * langhooks.c (lhd_print_error_function): Check for NULL block.
12245
12246 2009-02-17  Richard Guenther  <rguenther@suse.de>
12247
12248         PR tree-optimization/39204
12249         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
12250         of the PHI arg.
12251
12252 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
12253
12254         * config/soft-fp/double.h: Update from glibc CVS.
12255
12256 2009-02-17  Richard Guenther  <rguenther@suse.de>
12257
12258         PR tree-optimization/39207
12259         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
12260         strict-aliasing warnings for pointers pointing to NULL.
12261
12262 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
12263
12264         PR c/35446
12265         * c-parser.c (c_parser_braced_init): Call pop_init_level when
12266         skipping until next close brace.
12267
12268 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
12269
12270         PR target/37049
12271         * config/i386/i386.c (ix86_expand_push): Set memory alignment
12272         to function argument boundary.
12273
12274 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
12275
12276         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
12277         in the lea_add. Reload eventually constraints it properly.
12278         * config/picochip/constraints.md: Remove the target constraint
12279         "b", since it is not needed anymore.
12280
12281 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
12282
12283         * gthr-dce.h: Uglify function parameter and local variable names.
12284         * gthr-gnat.h: Likewise.
12285         * gthr-mipssde.h: Likewise.
12286         * gthr-nks.h: Likewise.
12287         * gthr-posix95.h: Likewise.
12288         * gthr-posix.h: Likewise.
12289         * gthr-rtems.h: Likewise.
12290         * gthr-single.h: Likewise.
12291         * gthr-solaris.h: Likewise.
12292         * gthr-tpf.h: Likewise.
12293         * gthr-vxworks.h: Likewise.
12294         * gthr-win32.h: Likewise.
12295
12296 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
12297
12298         PR target/39196
12299         * config/i386/i386.md: Restrict the new peephole2 to move
12300         between MMX/SSE registers.
12301
12302 2009-02-15  Richard Guenther  <rguenther@suse.de>
12303
12304         Revert
12305         2009-02-13  Richard Guenther  <rguenther@suse.de>
12306
12307         * configure.ac: Enable LFS.
12308         * configure: Re-generate.
12309         * config.in: Likewise.
12310
12311 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12312
12313         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
12314         spu_srqwbyte, spu_srqwbytebc): Define.
12315         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
12316         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
12317         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
12318         "shrqby_<mode>"): New insn-and-split patterns.
12319         * config/spu/spu.c (expand_builtin_args): Determine and return
12320         number of operands using spu_builtin_description data.
12321         (spu_expand_builtin_1): Use it.
12322
12323 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
12324
12325         PR target/38056
12326         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
12327         TARGET_CONST_GP.
12328
12329 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12330
12331         PR target/39149
12332         * config/i386/i386.c (override_options): Correct warning
12333         messages for -malign-loops, -malign-jumps and -malign-functions.
12334
12335 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12336
12337         PR target/39152
12338         * config/i386/i386.md: Restrict the new peephole2 to move
12339         between the general purpose registers.
12340
12341 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12342
12343         PR target/39162
12344         * config/i386/i386.c (type_natural_mode): Add a new argument.
12345         Return the original mode and warn ABI change if vector size is 32byte.
12346         (function_arg_advance): Updated.
12347         (function_arg): Likewise.
12348         (ix86_function_value): Likewise.
12349         (ix86_return_in_memory): Likewise.
12350         (ix86_sol10_return_in_memory): Likewise.
12351         (ix86_gimplify_va_arg): Likewise.
12352         (function_arg_32): Don't warn ABX ABI change here.
12353         (function_arg_64): Likewise.
12354
12355 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
12356
12357         * loop-iv.c (implies_p): In the final case, test that operands 0
12358         of the two comparisons match.
12359
12360         * config/bfin/bfin.c (find_prev_insn_start): New function.
12361         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
12362         (find_next_insn_start): Move.
12363
12364 2009-02-13  Richard Guenther  <rguenther@suse.de>
12365
12366         * configure.ac: Enable LFS.
12367         * configure: Re-generate.
12368         * config.in: Likewise.
12369
12370 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
12371
12372         PR c/35444
12373         * c-parser.c (c_parser_parms_list_declarator): Discard pending
12374         sizes on syntax error after some arguments have been parsed.
12375
12376 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12377
12378         * doc/invoke.texi (-fira): Remove.
12379
12380 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12381
12382         * caller-save.c: Replace regclass.c with reginfo.c in comments.
12383         * recog.c: Likewise.
12384         * rtl.h: Likewise.
12385
12386 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
12387
12388         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
12389         (umul_ppmm): Likewise.
12390         (count_leading_zeros): Likewise.
12391         (count_trailing_zeros): Likewise.
12392         (UMUL_TIME): Likewise.
12393
12394 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12395
12396         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
12397         soft-fp/t-softfp to tmake_file.
12398
12399         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
12400         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
12401         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
12402         IA64_BUILTIN_INFQ]: New.
12403         (ia64_init_builtins): Initialize __builtin_infq,
12404         __builtin_fabsq and __builtin_copysignq if not HPUX.
12405         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
12406         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
12407
12408         * config/ia64/lib1funcs.asm (__divtf3): Define only if
12409         SHARED is defined.
12410         (__fixtfti): Likewise.
12411         (__fixunstfti): Likewise.
12412         (__floattitf): Likewise.
12413
12414         * config/ia64/libgcc-glibc.ver: New.
12415         * config/ia64/t-fprules-softfp: Likewise.
12416         * config/ia64/sfp-machine.h: Likewise.
12417
12418         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
12419         (LIBGCC2_TF_CEXT): Likewise.
12420         (TF_SIZE): Likewise.
12421         (TARGET_INIT_LIBFUNCS): Likewise.
12422
12423         * config/ia64/t-glibc (SHLINB_MAPFILES):
12424         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
12425
12426 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12427
12428         * config/i386/i386.c (construct_container): Rewrite processing
12429         BLKmode with X86_64_SSE_CLASS.
12430
12431 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
12432
12433         PR target/39152
12434         * config/i386/i386.md: Replace simplify_replace_rtx with
12435         replace_rtx in the new peephole2.
12436
12437 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
12438
12439         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
12440         loop unrolling do not happen at -O2.
12441
12442 2009-02-12  Michael Matz  <matz@suse.de>
12443
12444         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
12445
12446 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12447
12448         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
12449         for -g3.
12450
12451 2009-02-12  Ben Elliston  <bje@au.ibm.com>
12452
12453         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
12454         patterns when updating the back chain.  Missed in the 2009-02-10
12455         change.
12456
12457 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
12458
12459         * doc/extend.texi (Decimal Floating Types): Update identifier of
12460         draft TR and list of missing support.
12461
12462 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
12463
12464         PR middle-end/39154
12465         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
12466         bit to variable length decl's flags, add it also to its
12467         pointer replacement variable.
12468
12469 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
12470             Jakub Jelinek  <jakub@redhat.com>
12471
12472         PR target/39118
12473         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
12474         (memory_blockage): New expander.
12475         (*memory_blockage): New insn pattern.
12476         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
12477         instead of general blockage at the end of function prologue when
12478         frame pointer is used to access red zone area.  Do not emit blockage
12479         when profiling, it is emitted in generic code.
12480         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
12481         function epilogue when frame pointer is used to access red zone area.
12482
12483 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
12484
12485         PR target/38824
12486         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
12487         by arithmetic with memory operands.
12488         * config/i386/predicates.md (commutative_operator): New.
12489
12490 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
12491
12492         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
12493         bulleted lists.
12494
12495 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
12496
12497         * alias.h (record_alias_subset): Declare.
12498         * alias.c (record_alias_subset): Make global.
12499
12500 2009-02-10  Nick Clifton  <nickc@redhat.com>
12501
12502         * tree-parloops.c: Change license to GPLv3.
12503         * ipa-struct-reorg.c: Change license to GPLv3.
12504         * ipa-struct-reorg.h: Change license to GPLv3.
12505
12506 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
12507
12508         PR c/39084
12509         * c-decl.c (start_struct): Return NULL on error.
12510
12511 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
12512
12513         PR middle-end/39124
12514         * cfgloopmanip.c (remove_path): Call remove_bbs after
12515         cancel_loop_tree, not before it.
12516
12517         PR target/39139
12518         * function.h (struct function): Add has_local_explicit_reg_vars bit.
12519         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
12520         VAR_DECLs were seen.
12521         * tree-ssa-live.c (remove_unused_locals): Recompute
12522         cfun->has_local_explicit_reg_vars.
12523         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
12524         copies or clearings if cfun->has_local_explicit_reg_vars.
12525
12526 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
12527
12528         PR target/39118
12529         * config/i386/i386.c (expand_prologue): Emit blockage at the end
12530         of function prologue when frame pointer is used to access
12531         red zone area.
12532
12533 2009-02-10  Richard Guenther  <rguenther@suse.de>
12534
12535         PR middle-end/39127
12536         * gimplify.c (gimple_regimplify_operands): Always look if
12537         we need to create a temporary.
12538
12539 2009-02-10  Richard Guenther  <rguenther@suse.de>
12540
12541         PR tree-optimization/39132
12542         * tree-loop-distribution.c (todo): New global var.
12543         (generate_memset_zero): Trigger TODO_rebuild_alias.
12544         (tree_loop_distribution): Return todo.
12545
12546 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
12547
12548         PR target/39119
12549         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
12550         (x86_64_reg_class_name): Removed.
12551         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
12552         first one isn't X86_64_SSE_CLASS or any other ones aren't
12553         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
12554         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
12555         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
12556         and 3 X86_64_SSEUP_CLASS.
12557         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
12558         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
12559
12560 2009-02-10  Ben Elliston  <bje@au.ibm.com>
12561
12562         * config/rs6000/rs6000.md (allocate_stack): Always use an update
12563         form instruction to update the stack back chain word, even if the
12564         user has disabled the generation of update instructions.
12565         (movdi_<mode>_update_stack): New.
12566         (movsi_update_stack): Likewise.
12567         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
12568         always use an update form instruction to update the stack back
12569         chain word.
12570
12571 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
12572
12573         PR middle-end/38953
12574         * graphite.c (if_region_set_false_region): After moving a region in
12575         the false branch of a condition, remove the empty dummy basic block.
12576         (gloog): Remove wrong fix for PR38953.
12577
12578 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12579
12580         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
12581         generation due to implicit sign extension.
12582
12583 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12584
12585         PR middle-end/38981
12586         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
12587         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
12588
12589 2009-02-09  Richard Guenther  <rguenther@suse.de>
12590
12591         PR middle-end/35202
12592         * convert.c (convert_to_real): Disable (float)fn((double)x)
12593         to fnf(x) conversion if errno differences may occur and
12594         -fmath-errno is set.
12595
12596 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
12597
12598         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
12599         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12600         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12601
12602 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12603
12604         PR c/35434
12605         * c-common.c (handle_alias_attribute): Disallow attribute for
12606         anything not a FUNCTION_DECL or VAR_DECL.
12607
12608 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
12609
12610         PR c/39035
12611         * real.c (do_compare): Special-case compare of zero against
12612         decimal float value.
12613
12614 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12615
12616         PR c/36432
12617         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
12618         as indicating flexible array members unless the field itself is
12619         being declarared as the incomplete array.
12620
12621 2009-02-06  Jan Hubicka  <jh@suse.cz>
12622
12623         PR tree-optimization/38844
12624         * ipa-inline.c (try_inline): Stop inlining recursion when edge
12625         is already inlined.
12626
12627 2009-02-06  Richard Guenther  <rguenther@suse.de>
12628
12629         PR middle-end/38977
12630         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
12631         fork because we may expand it as __gcov_fork.
12632
12633 2009-02-06  Nick Clifton  <nickc@redhat.com>
12634
12635         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
12636
12637 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
12638
12639         PR tree-optimization/35659
12640         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
12641         vn_phi_eq): Shortcut if hashcode does not match.
12642         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
12643         NULL operands.
12644         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
12645         and avoid iterative_hash_expr.
12646         (FOR_EACH_VALUE_ID_IN_SET): New.
12647         (value_id_compare): Remove.
12648         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
12649         sort expressions by value id.
12650
12651 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
12652
12653         PR target/38991
12654         * config/sh/predicates.md (general_movsrc_operand): Don't check
12655         the subreg of system registers here.
12656
12657 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
12658
12659         PR c++/39106
12660         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
12661         on the copied decl.
12662
12663 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
12664
12665         PR rtl-optimization/39110
12666         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
12667         addresses, not aligned ones.
12668
12669 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
12670             Richard Guenther  <rguenther@suse.de>
12671
12672         PR tree-optimization/39100
12673         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
12674         comment says and add edges.
12675
12676 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
12677
12678         PR c/35435
12679         * c-common.c (handle_tls_model_attribute): Ignore attribute for
12680         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
12681
12682 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
12683
12684         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
12685         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
12686         register_bb_in_sese, new_sese, free_sese): Moved.
12687         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
12688         outermost_loop_in_scop, build_scop_iteration_domain,
12689         expand_scalar_variables_ssa_name, get_vdef_before_scop,
12690         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
12691         Use loop_in_sese_p instead of loop_in_scop_p.
12692         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
12693         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
12694         (scopdet_basic_block_info): Fix bug in scop detection.
12695         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
12696         eq_loop_to_cloog_loop): Remove.
12697         (nb_loops_around_loop_in_scop, nb_loop
12698         ref_nb_loops): Moved here...
12699         * graphite.h (ref_nb_loops): ... from here.
12700         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
12701         (loop_domain_dim, loop_iteration_vector_dim): Remove.
12702         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
12703         * testsuite/gcc.dg/graphite/scop-19.c: New
12704
12705 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
12706             Hans-Peter Nilsson  <hp@axis.com>
12707
12708         PR rtl-optimization/37889
12709         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
12710         Move offset handling from PLUS to before the switch.  Use new
12711         arguments when considering SYMBOL_REFs too.
12712         (rtx_addr_can_trap_p): Pass dummy offset and size.
12713         (enum may_trap_p_flags): Remove.
12714         (may_trap_p_1): Pass size from MEM_SIZE.
12715
12716         PR rtl-optimization/38921
12717         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
12718         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
12719         * rtlanal.c (may_trap_after_code_motion_p): Delete.
12720         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
12721
12722 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
12723
12724         AVX Programming Reference (January, 2009)
12725         * config/i386/sse.md (*vpclmulqdq): New.
12726
12727 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
12728
12729         PR tree-optimization/38977
12730         PR gcov-profile/38292
12731         * calls.c (special_function_p): Disregard __builtin_ prefix.
12732
12733 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
12734
12735         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
12736         non-indexable addresses even before reload.
12737
12738 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12739
12740         PR c/29129
12741         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
12742         as having variable size.  Do not give an error for unnamed
12743         parameters with [*] declarators.  Give a warning for type names
12744         with [*] declarators and mark them as variable size.
12745         * c-parser.c (c_parser_sizeof_expression): Do not give an error
12746         for sizeof applied to [*] type names.
12747
12748 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12749
12750         PR C++/36607
12751         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
12752
12753 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12754
12755         * gcc.c (process_command): Update copyright notice dates.
12756         * gcov.c (print_version): Likewise.
12757         * gcov-dump.c (print_version): Likewise.
12758         * mips-tfile.c (main): Likewise.
12759         * mips-tdump.c (main): Likewise.
12760
12761 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12762
12763         PR c/35433
12764         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
12765         for composite type involving a zero-length array type.
12766
12767 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12768
12769         PR target/35318
12770         * function.c (match_asm_constraints_1): Skip over
12771         initial optional % in the constraint.
12772
12773         PR inline-asm/39059
12774         * c-parser.c (c_parser_postfix_expression): If fixed point is not
12775         supported, don't accept FIXED_CSTs.
12776         * c-decl.c (finish_declspecs): Error if fixed point is not supported
12777         and _Sat is used without _Fract/_Accum.  Set specs->type to
12778         integer_type_node for cts_fract/cts_accum if fixed point is not
12779         supported.
12780
12781 2009-02-02  Catherine Moore  <clm@codesourcery.com>
12782
12783         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
12784
12785 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
12786
12787         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
12788         (ABI_HAS_64BIT_SYMBOLS): Use it.
12789         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
12790
12791 2009-02-02  Paul Brook  <paul@codesourcery.com>
12792
12793         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
12794
12795 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
12796
12797         PR inline-asm/39058
12798         * recog.h (asm_operand_ok): Add constraints argument.
12799         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
12800         recurse on matching constraint.
12801         (check_asm_operands): Pass constraints as 3rd argument to
12802         asm_operand_ok.  Don't look up matching constraint here.
12803         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
12804         to asm_operand_ok.
12805
12806 2009-02-02  Ben Elliston  <bje@au.ibm.com>
12807
12808         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
12809         TARGET_NARROW_VOLATILE_BITFIELD macro names.
12810
12811 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12812
12813         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
12814         information.  Remove some obsolete information.  Reorganize.
12815
12816         * config/pa/fptr.c: Revert license to GPL 2.
12817         * config/pa/milli64.S: Likewise.
12818
12819 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12820
12821         PR target/38904
12822         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
12823         LIBRARY name in, instead of hard-coding it.
12824         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
12825         extra target make frag to tmake_files according to EH model.
12826         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
12827         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
12828         frags that define makefile variable EH_MODEL appropriately.
12829         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
12830         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
12831         to "-sjlj" according to type of EH configured.
12832         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12833         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
12834         to "_sjlj" according to type of EH configured.
12835         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12836         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
12837         (SHLIB_LINK):  Add missing semicolon to if-else construct.
12838         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12839         string value of "pe_dll" command-line option.
12840         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
12841         (SHLIB_SONAME):  Use it when overriding t-cygming default.
12842         (SHLIB_IMPLIB):  Override t-cygming default.
12843         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12844         string value of "pe_dll" command-line option.
12845
12846 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12847
12848         PR target/38952
12849         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
12850         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
12851
12852 2009-01-31  Richard Guenther  <rguenther@suse.de>
12853
12854         PR tree-optimization/38937
12855         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
12856         computing the transitive closure.
12857
12858 2009-01-30  Richard Guenther  <rguenther@suse.de>
12859
12860         PR tree-optimization/39041
12861         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
12862         Propagate variable indices only if the types match for this stmt.
12863
12864 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
12865
12866         PR target/39013
12867         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
12868         inline but never defined.
12869
12870 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
12871
12872         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
12873         (*insv_h_di_reg_extimm): New insn.
12874         (*insv_l<mode>_reg_extimm): New insn.
12875
12876 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12877
12878         * config/picochip/picochip.c (flag_conserve_stack): set
12879         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
12880         fconserve-stack. Reduce call-overhead used by inliner.
12881
12882 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12883
12884         PR/38157
12885         * common.opt (flag_conserve_stack): Initialised to zero.
12886
12887 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
12888
12889         PR/39002
12890         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
12891         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
12892         method.
12893
12894 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
12895
12896         * ira-color.c (allocno_reload_assign): Update comments.
12897         * regmove.c (regmove_optimize): Likewise.
12898
12899         * ra.h: Removed.
12900
12901 2009-01-29  Robert Millan  <rmh@aybabtu.com>
12902
12903         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
12904         * config/i386/kopensolaris-gnu.h: New file.  Undefine
12905         `MD_UNWIND_SUPPORT'.
12906         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
12907
12908 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
12909
12910         PR tree-optimization/39007
12911         * tree-loop-distribution.c (generate_builtin): Use
12912         recompute_dominator to compute the immediate dominator of the
12913         basic block just after the loop.
12914
12915 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12916
12917         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
12918         (ASM_OUTPUT_DWARF_PCREL): Define.
12919
12920 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
12921
12922         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
12923         * doc/passes.texi: Remove entries about regclass, local-alloc, and
12924         global.  Modify entries about regmove and IRA.
12925
12926         * ra-conflict.c: Remove the file.
12927
12928         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
12929
12930         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
12931         (pass_regclass_init): Rename to pass_reginfo_init.
12932
12933         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
12934
12935         * toplev.h (flag_ira): Remove.
12936
12937         * caller-save.c (setup_save_areas): Remove flag_ira.
12938
12939         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
12940
12941         * global.c: Remove the file.
12942
12943         * opts.c (decode_options): Remove flag_ira.
12944
12945         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
12946
12947         * regmove.c: Modify file description.
12948         (find_use_as_address, try_auto_increment): Define them only if
12949         AUTO_INC_DEC is defined.
12950         (replacement_quality, replace_in_call_usage, fixup_match_1,
12951         stable_and_no_regs_but_for_p): Remove.
12952         (reg_set_in_bb): Make it static.
12953         (regmove_optimize): Remove flag_ira and code which worked for
12954         !flag_ira.
12955
12956         * local-alloc.c: Remove the file.
12957
12958         * common.opt (fira): Remove.
12959
12960         * ira.c: Include except.h.
12961         (eliminable_regset): Move from global.c.
12962         (mark_elimination): Ditto.  Remove flag_ira.
12963         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
12964         equiv_mem_modified, validate_equiv_mem_from_store,
12965         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
12966         contains_replace_regs, memref_referenced_p, memref_used_between_p,
12967         no_equiv, recorded_label_ref): Move from local-alloc.c.
12968         (update_equiv_regs): Ditto.  Make it static.
12969         (print_insn_chain, print_insn_chains): Move it from global.c.
12970         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
12971         (build_insn_chain): Ditto.  Make it static.
12972         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
12973         Rename to init_live_subregs.
12974         (gate_ira): Remove flag_ira.
12975
12976         * regclass.c: Rename reginfo.c.  Change file description.
12977         (FORBIDDEN_INC_DEC_CLASSES): Remove.
12978         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
12979         (init_reg_sets_1): Remove code for evaluation of
12980         reg_class_superclasses and losing_caller_save_reg_set.
12981         (init_regs): Remove init_reg_autoinc.
12982         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
12983         ok_for_base_p_nonstrict): Remove.
12984         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
12985         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
12986         corresponding entries.
12987         (dump_regclass, record_operand_costs, scan_one_insn,
12988         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
12989         record_address_regs, auto_inc_dec_reg_p): Remove.
12990         (gt-regclass.h): Rename to gt-reginfo.h.
12991
12992         * rtl.h (dump_global_regs, retry_global_alloc,
12993         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
12994
12995         * Makefile.in (RA_H): Remove.
12996         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
12997         Rename regclass.o to reginfo.o.
12998         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
12999         gt-reginfo.h.
13000         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
13001         (GTFILES): Rename regclass.c to reginfo.c.
13002
13003         * passes.c (init_optimization_passes): Remove pass_local_alloc and
13004         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
13005
13006         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
13007         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
13008         Remove flag_ira.
13009         (finish_spills): Ditto.  Remove code for !flag_ira.
13010
13011 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
13012
13013         PR middle-end/35854
13014         * doc/invoke.texi (rtl debug options): Complete rewrite.
13015         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
13016         to auto_inc_dec".
13017         * mode-switching.c (pass_mode_switching): Rename pass from
13018         "mode-sw" to "mode_sw".
13019         * except.c (pass_convert_to_eh_ranges): Rename pass from
13020         "eh-ranges" to "eh_ranges".
13021         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
13022         to "subreg1".
13023
13024
13025 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
13026             Alexander Monakov  <amonakov@ispras.ru>
13027
13028         PR middle-end/38857
13029         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
13030         register.
13031         (move_exprs_to_boundary): Change return type and pass through
13032         should_move from move_op.  Relax assert.  Update usage ...
13033         (schedule_expr_on_boundary): ... here.  Use should_move instead of
13034         cant_move.
13035         (move_op_orig_expr_found): Indicate that insn was disconnected from
13036         stream.
13037         (code_motion_process_successors): Do not call after_merge_succs
13038         callback if original expression was not found when traversing any of
13039         the branches.
13040         (code_motion_path_driver): Change return type.  Update prototype.
13041         (move_op): Update comment.  Add a new parameter (should_move).  Update
13042         prototype.  Set *should_move based on indication provided by
13043         move_op_orig_expr_found.
13044
13045 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
13046
13047         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
13048         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
13049         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
13050         * config/rs6000/rs6000.c (rs6000_override_options): Default
13051         avoid-indexed-addresses on for Power6, off for everything else.
13052         (avoiding_indexed_address_p): New function.
13053         (rs6000_legitimize_address): Use it.
13054         (rs6000_legitimate_address): Likewise.
13055         * config/rs6000/rs6000.md (movXX_updateX): Likewise
13056
13057 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
13058
13059         PR tree-optimization/38997
13060         * tree-loop-distribution.c (generate_memset_zero): Use
13061         POINTER_PLUS_EXPR for a pointer addition.
13062
13063 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13064
13065         * config/s390/s390.md (bswap<mode>2): New pattern added.
13066
13067 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13068
13069         * config/s390/s390.md (*tls_load_31): Added type attribute.
13070
13071 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13072
13073         * config/s390/s390.md: Fix a few comments.
13074
13075 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13076
13077         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
13078         (*tm<mode>_full): Fixed z10prop attribute.
13079         (*tst<mode>_extimm): Fixed z10prop attribute.
13080         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
13081         (*tstqiCCT_cconly): Fixed z10prop attribute.
13082         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
13083         (*movsi_larl): Fixed z10prop attribute.
13084         (*movsi_zarch): Fixed z10prop attribute.
13085         (*movsi_eas): Fixed z10prop attribute.
13086         (*movhi): Fixed z10prop attribute.
13087         (*movqi): Fixed z10prop attribute.
13088         (*movstrictqi): Fixed z10prop attribute.
13089         (*mov<mode>): Fixed z10prop attribute.
13090         (*movcc): Fixed z10prop attribute.
13091         (*sethighpartdi_64): Fixed z10prop attribute.
13092         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
13093         (*negdi2_sign_cc): Fixed z10prop attribute.
13094         (*negdi2_sign): Fixed z10prop attribute.
13095         (*absdi2_sign_cc): Fixed z10prop attribute.
13096         (*absdi2_sign): Fixed z10prop attribute.
13097         (*negabsdi2_sign_cc): Fixed z10prop attribute.
13098         (*negabsdi2_sign): Fixed z10prop attribute.
13099         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
13100         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
13101         (doloop_si64): Fixed z10prop attribute.
13102         (doloop_si31): Fixed z10prop attribute.
13103         (doloop_long): Fixed z10prop attribute.
13104         (indirect_jump): Fixed z10prop attribute.
13105         (nop): Fixed z10prop attribute.
13106         (main_base_64): Fixed z10prop attribute.
13107         (reload_base_64): Fixed z10prop attribute.
13108
13109 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
13110
13111         PR rtl-optimization/38740
13112         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
13113         if !optimize.
13114         * config/mips/mips.c (mips_reorg): Likewise.
13115
13116 2009-01-28  Richard Guenther  <rguenther@suse.de>
13117
13118         PR tree-optimization/38926
13119         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
13120         with the correct value id to a value.
13121         (do_regular_insertion): Use the value number of edoubleprime
13122         for the value number of the expr.
13123
13124         Revert
13125         2008-08-21  Richard Guenther  <rguenther@suse.de>
13126
13127         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
13128         a PHI ask VN if it is already available.
13129         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
13130         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
13131
13132 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
13133
13134         PR middle-end/38934
13135         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
13136         set to varying whenever max has TREE_OVERFLOW set, similarly
13137         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
13138
13139 2009-01-28  Richard Guenther  <rguenther@suse.de>
13140
13141         PR middle-end/38908
13142         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
13143         uninitialized aggregate uses in call arguments.
13144
13145 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
13146
13147         PR tree-optimization/38984
13148         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
13149         the nothing_id variable if -fno-delete-null-pointer-checks.
13150
13151 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
13152
13153         PR target/38988
13154         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
13155         (set_got_offset_rex64): Ditto.
13156
13157 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
13158
13159         PR target/38941
13160         * doc/extend.texi: Improve local variable with asm reg.
13161
13162 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
13163
13164         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
13165         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
13166         was not supplied then set warn_packed_bitfield_compat to the
13167         default value of 1.
13168         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
13169         against 1.
13170
13171 2009-01-27  Richard Guenther  <rguenther@suse.de>
13172
13173         PR tree-optimization/38503
13174         * cfgexpand.c (expand_gimple_basic_block): Ignore
13175         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
13176         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
13177         variables that cannot have TBAA applied.
13178         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
13179         statements.
13180
13181 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
13182
13183         PR middle-end/38969
13184         * calls.c (initialize_argument_information): Do not wrap complex
13185         arguments in SAVE_EXPR.
13186
13187 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
13188
13189         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
13190         (INSTALL_LIBGCC): Revert typo commit.
13191
13192 2009-01-26  Richard Guenther  <rguenther@suse.de>
13193
13194         PR tree-optimization/38745
13195         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
13196         from special handling.
13197
13198 2009-01-26  Richard Guenther  <rguenther@suse.de>
13199
13200         PR tree-optimization/38745
13201         * tree-ssa.c (execute_update_addresses_taken): Do not include
13202         variables that cannot possibly be a register in not_reg_needs.
13203         Do not clear TREE_ADDRESSABLE on vars that may not become
13204         registers.
13205         * tree-ssa.c (update_alias_info_1): Include those in the set
13206         of addressable vars.
13207
13208 2009-01-26  Richard Guenther  <rguenther@suse.de>
13209
13210         PR middle-end/38851
13211         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
13212         * tree-ssa-dse.c: Include langhooks.h
13213         (execute_simple_dse): Remove stores with zero size.
13214
13215 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
13216
13217         PR c/38957
13218         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
13219         as PLUS_EXPR.
13220
13221 2009-01-24  Julian Brown  <julian@codesourcery.com>
13222
13223         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
13224         config/arm/linux-atomic.c.
13225         * config/arm/linux-atomic.c: New.
13226
13227 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
13228
13229         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
13230         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
13231         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
13232
13233 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
13234
13235         PR c/38938
13236         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
13237         properly.
13238
13239 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
13240
13241         PR tree-optimization/38953
13242         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
13243         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
13244         (gloog): Split the exit of the scop when the scop exit is a loop exit.
13245         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
13246         changed the CFG.
13247
13248 2009-01-24  Paul Brook  <paul@codesourcery.com>
13249
13250         * config/arm/neon.md (neon_type): Move to arm.md.
13251         (neon_mov<VSTRUCT>): Add neon_type attribute.
13252         * config/arm/arm.md (neon_type): Move to here.
13253         (conds): Add "unconditioal" and use as default for NEON insns.
13254
13255 2009-01-24  Ben Elliston  <bje@au.ibm.com>
13256
13257         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
13258         void *' warning from -Wc++-compat.
13259         * Makefile.in (dominance.o-warn): Remove.
13260
13261 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
13262
13263         PR tree-optimization/38932
13264         * fold-const.c (fold_unary_ignore_overflow): New.
13265         * tree.h (fold_unary_ignore_overflow): Declare.
13266         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
13267         * tree-ssa-sccvn.c (visit_reference_op_load,
13268         simplify_unary_expression): Likewise.
13269
13270 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
13271
13272         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
13273         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
13274         regardless of their type.
13275         * c-common.c (handle_packed_attribute): Don't ignore packed on
13276         bitfields.
13277         * c.opt (Wpacked-bitfield-compat): New warning option.
13278         * stor-layout.c (place_field): Warn if offset of a field changed.
13279         * doc/extend.texi (packed): Mention the ABI change.
13280         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
13281         (Warning Options): Add it to the list.
13282
13283 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
13284
13285         * c-opts.c (c_common_post_options): Fix a typo in comments.
13286
13287 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
13288
13289         PR middle-end/38615
13290         * gimplify.c (gimplify_init_constructor): Fix promotion of const
13291         variables to static.
13292         * doc/invoke.texi (-fmerge-all-constants): Update description.
13293
13294 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
13295
13296         PR target/38931
13297         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
13298         (*movdi_1_rex64): Use type "mmx" for alternative 5.
13299
13300 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
13301
13302         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
13303         a word boundary.
13304         (LOCAL_ALIGNMENT): Similarly.
13305
13306 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13307             Joseph Myers  <joseph@codesourcery.com>
13308
13309         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
13310         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
13311         * config/arm/arm-tune.md: Regenerate.
13312         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
13313         -march=iwmmxt2.
13314
13315 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13316
13317         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
13318         version number to five.
13319
13320 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13321
13322         PR c++/38930
13323         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
13324         * c-common.c (set_underlying_type): Likewise.
13325         (is_typedef_decl ): Likewise
13326         * tree.h: Likewise
13327         (set_underlying_type): Likewise.
13328         (is_typedef_type): Likewise.
13329
13330 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
13331
13332         PR middle-end/38587
13333         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
13334         crossing setjmps.
13335
13336 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
13337
13338         PR bootstrap/37660
13339         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
13340         (LIBGCC_SPEC):  Don't define.
13341         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
13342
13343 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
13344
13345         PR rtl-optimization/38879
13346         * alias.c (base_alias_check): Unaligned access via AND address can
13347         alias all surrounding object types except those with sizes equal
13348         or wider than the size of unaligned access.
13349
13350 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
13351
13352         PR c++/26693
13353         * c-decl.c (clone_underlying_type): Move this ...
13354         * c-common.c (set_underlying_type): ... here.
13355         Also, make sure the function properly sets TYPE_STUB_DECL() on
13356         the newly created typedef variant type.
13357         (is_typedef_decl ): New entry point.
13358         * tree.h: Added a new member member_types_needing_access_check to
13359         struct tree_decl_non_common.
13360         (set_underlying_type): New entry point.
13361         (is_typedef_type): Likewise.
13362
13363 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
13364
13365         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
13366         Check whether two instructions have memory references that
13367         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
13368         are helper functions for traversing.
13369         * alias.h (insn_alias_sets_confilict_p): New prototypes.
13370         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
13371         not to draw dependency edge for instructions with non-conflicting
13372         alias sets.
13373
13374 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
13375
13376         PR other/38758
13377         * longlong.h: Update copyright years.  Use soft-fp license notice.
13378         Sync __clz_tab declaration with glibc.
13379
13380 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
13381
13382         PR target/30687
13383         * doc/extend.texi (syscall_linkage): New.
13384         (version_id): Modify.
13385
13386 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13387             Richard Guenther  <rguenther@suse.de>
13388
13389         PR tree-optimization/38747
13390         PR tree-optimization/38748
13391         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
13392         conversion if the base address is an indirect reference and the
13393         aliasing sets could cause issues.
13394
13395 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13396
13397         * common.opt (fgraphite, fgraphite-identity): Add comment for
13398         explaining why these options are not documented.
13399
13400 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13401
13402         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
13403         gimple_call_lhs is NULL.
13404
13405 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
13406
13407         PR target/38868
13408         * emit-rtl.c (adjust_address_1): Make sure memref is never
13409         overwritten.
13410
13411 2009-01-20  Ben Elliston  <bje@au.ibm.com>
13412
13413         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13414         const qualifier from arg parameter. Remove unnecessary cast to char *.
13415         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13416         const qualifier from arg 2.
13417
13418 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
13419
13420         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
13421
13422 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
13423
13424         PR c/38869
13425         * rtl.h (reinit_regs): New prototype.
13426         * regclass.c: Include ira.h.
13427         (reinit_regs): New.
13428         * Makefile.in (regclass.o): Add ira.h.
13429         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
13430
13431 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
13432
13433         PR target/38736
13434         * c-common.c (handle_aligned_attribute): Use
13435         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
13436         default alignment value.
13437
13438         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
13439
13440         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
13441         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
13442
13443         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
13444         __BIGGEST_ALIGNMENT__.
13445
13446         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
13447
13448 2009-01-18  Richard Guenther  <rguenther@suse.de>
13449
13450         PR tree-optimization/38819
13451         * tree-flow.h (operation_could_trap_helper_p): Declare.
13452         * tree-eh.c (operation_could_trap_helper_p): Export.
13453         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
13454         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
13455         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
13456         are about to insert a possibly trapping instruction and fail
13457         in this case.
13458
13459 2009-01-18  Andreas Schwab  <schwab@suse.de>
13460
13461         * doc/install.texi (Configuration): Remove obsolete paragraph
13462         about use of --with-gnu-ld with --with-gnu-as.
13463
13464 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
13465
13466         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
13467         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
13468         Follow spelling conventions.
13469
13470 2009-01-18  Ben Elliston  <bje@au.ibm.com>
13471
13472         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
13473         C++ warning about implicit conversion from void * to struct
13474         bitmap_head_def *.
13475         (bitmap_obstack_free): Likewise for bitmap_element *.
13476         * Makefile.in (bitmap.o-warn): Remove.
13477
13478 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
13479
13480         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
13481
13482 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
13483             Tobias Grosser  <tobi.grosser@amd.com>
13484
13485         * graphite.c (graphite_trans_scop_block): Do not block single
13486         nested loops.
13487
13488 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
13489
13490         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
13491         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
13492         test with assertion.
13493
13494 2009-01-16  Richard Guenther  <rguenther@suse.de>
13495
13496         PR tree-optimization/38835
13497         PR middle-end/36227
13498         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
13499         and INT + PTR -> (INT)(PTR p+ INT) folding.
13500         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
13501
13502 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
13503
13504         PR target/38554
13505         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
13506         the subreg from a lowpart subreg if it is also casting the value.
13507
13508 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13509             Tobias Grosser  <tobi.grosser@amd.com>
13510
13511         * graphite.c (compare_prefix_loops): New.
13512         (build_scop_canonical_schedules): Rewritten.
13513         (graphite_transform_loops): Move build_scop_canonical_schedules
13514         after build_scop_iteration_domain.
13515
13516 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13517             Tobias Grosser  <tobi.grosser@amd.com>
13518
13519         * graphite.c (add_conditions_to_domain): Add the loops to
13520         the dimension of the iteration domain.  Do copy the domain
13521         only when it exists.
13522         (build_scop_conditions_1): Do not call add_conditions_to_domain.
13523         (add_conditions_to_constraints): New.
13524         (can_generate_code_stmt, can_generate_code): Removed.
13525         (gloog): Do not call can_generate_code.
13526         (graphite_transform_loops): Call add_conditions_to_constraints
13527         after building the iteration domain.
13528
13529 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
13530
13531         PR tree-optimization/38789
13532         * tree-ssa-threadedge.c
13533         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13534         __builtin_constant_p.
13535
13536 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
13537
13538         * dce.c (delete_unmarked_insns): Reversed the order that insns are
13539         examined before deleting them.
13540
13541 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
13542
13543         * function.c (aggregate_value_p): Correctly extract the function
13544         type from CALL_EXPR_FN lookup.
13545
13546 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13547
13548         * config/picochip/picochip.c (picochip_override_options): Revert
13549         CFI asm flag disable commited previously.
13550
13551 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
13552             Tobias Grosser  <tobi.grosser@amd.com>
13553             Jan Sjodin  <jan.sjodin@amd.com>
13554
13555         * graphite.c (scan_tree_for_params): On substractions negate
13556         all the coefficients of the term.
13557         (clast_to_gcc_expression_red): New.  Handle reduction expressions
13558         of more than two operands.
13559         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
13560         (get_vdef_before_scop): Handle also the case of default definitions.
13561
13562 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
13563
13564         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
13565         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
13566         Also use them when walking CALL_INSN_FUNCTION_USAGE.
13567
13568 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
13569             Joey Ye  <joey.ye@intel.com>
13570
13571         PR middle-end/37843
13572         * cfgexpand.c (expand_stack_alignment): Don't update stack
13573         boundary nor check incoming stack boundary here.
13574         (gimple_expand_cfg): Update stack boundary and check incoming
13575         stack boundary here.
13576
13577 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
13578
13579         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
13580
13581 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
13582
13583         PR rtl-optimization/38245
13584         * calls.c (expand_call): Add stack arguments to
13585         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13586         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
13587         in regs and partially in memory or BLKmode arguments.
13588         (emit_library_call_value_1): Add stack arguments to
13589         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13590         ACCUMULATE_OUTGOING_ARGS).
13591         * dce.c: Include tm_p.h.
13592         (find_call_stack_args): New function.
13593         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
13594         argument.
13595         (mark_insn): Call find_call_stack_args for CALL_Ps.
13596         (prescan_insns_for_dce): Walk insns backwards in bb rather than
13597         forwards.  Allocate and free arg_stores bitmap if needed, pass it
13598         down to deletable_insn_p, don't mark stores set in arg_stores
13599         bitmap, clear the bitmap at the beginning of each bb.
13600         * Makefile.in (dce.o): Depend on $(TM_P_H).
13601
13602 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
13603
13604         PR target/22599
13605         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
13606         to make sure the insn is a conditional test (bug 22599).  Reformat a
13607         few long lines.
13608
13609 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
13610
13611         PR middle-end/38431
13612         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
13613         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
13614         (gloog): Do not call cleanup_tree_cfg.
13615         (graphite_transform_loops): Call cleanup_tree_cfg after all
13616         scops have been code generated.
13617
13618 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
13619         * doc/gty.texi (Invoking the garbage collector): Added new node
13620         and section documenting ggc_collect.
13621
13622 2009-01-14  Richard Guenther  <rguenther@suse.de>
13623
13624         PR tree-optimization/38826
13625         PR middle-end/38477
13626         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
13627         initialization notes only if we actually emitted a warning.
13628         (intra_create_variable_infos): Add constraints for a result decl
13629         that is passed by hidden reference.
13630         (build_pred_graph): Mark all related variables non-direct on
13631         address-taking.
13632
13633 2009-01-14  Nick Clifton  <nickc@redhat.com>
13634
13635         * ira-conflicts.c: Include addresses.h for the definition of
13636         base_reg_class.
13637         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
13638         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
13639
13640 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
13641
13642         PR target/38811
13643         * Makefile.in (ira-lives.o): Add except.h.
13644
13645         * ira-lives.c: Include except.h.
13646         (process_bb_node_lives): Process can_throw_internal.
13647
13648 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
13649
13650         PR rtl-optimization/38774
13651         * combine.c (simplify_set): When undoing cc_use change, don't do
13652         PUT_CODE on the newly created comparison, but instead put back the
13653         old comparison.
13654
13655 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
13656
13657         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
13658         values.  Remove duplicate arm8 entry.
13659
13660 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13661
13662         PR tree-optimization/38786
13663         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
13664         the SSA_NAME case of expand_scalar_variables_expr.
13665         Set the type of an expression to the type of its assign statement.
13666         (expand_scalar_variables_expr): Also gather the scalar computation
13667         used to index the memory access.  Do not pass loop_p.
13668         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
13669         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
13670         the gimple_stmt_iterator where it inserts new code.
13671         Do not pass loop_p.
13672         (copy_bb_and_scalar_dependences): Do not pass loop_p.
13673         (translate_clast): Update call to copy_bb_and_scalar_dependences.
13674
13675 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13676
13677         * graphite.h (debug_value): Removed.
13678         * graphite.c (debug_value): Removed.
13679
13680 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13681
13682         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
13683         ldrd/strd with two 32-bit instructions.
13684
13685 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13686
13687         * config/arm/arm.c (struct processors): Pass for speed down into
13688         cost helper functions.
13689         (const_ok_for_op): Handle COMPARE and inequality nodes.
13690         (arm_rtx_costs_1): Rewrite.
13691         (arm_size_rtx_costs): Update prototype.
13692         (arm_rtx_costs): Pass speed down to helper functions.
13693         (arm_slowmul_rtx_costs): Rework cost calculations.
13694         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
13695         (arm_9e_rtx_costs): Likewise.
13696
13697 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
13698
13699         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
13700         relocations of local symbols wider than UNITS_PER_WORD are not valid.
13701         (alpha_legitimize_address): Do not split local symbols wider than
13702         UNITS_PER_WORD into HIGH/LO_SUM parts.
13703
13704 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
13705
13706         PR bootstrap/38580
13707         * gcc.c (process_command): Replace call to execvp with calls
13708         to pex_one and exit.
13709
13710 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
13711
13712         PR target/29141
13713         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
13714         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
13715         variant for devices with 3-byte PC.
13716         (__tablejump_elpm__): New.
13717
13718 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13719
13720         PR c/32041
13721         * c-parser.c (c_parser_postfix_expression): Allow `->' in
13722         offsetof member-designator, handle it as `[0].'.
13723
13724 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13725
13726         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
13727         function when not using named sections on targets with named sections
13728         if branch distance is less than 262132.
13729
13730 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
13731
13732         * combine.c (combine_instructions):  Recompute
13733         optimize_this_for_speed_p  for each BB in the main combine loop.
13734
13735 2009-01-12  Tomas Bily  <tbily@suse.cz>
13736
13737         PR middlend/38385
13738         * tree-loop-distribution.c (prop_phis): New function.
13739         (generate_builtin): Call prop_phis.
13740         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
13741
13742 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13743
13744         PR tree-optimization/38807
13745         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
13746         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
13747
13748 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
13749
13750         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
13751         subreg of op0 to the original op0.
13752
13753 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
13754
13755         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
13756
13757 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
13758
13759         PR debug/7055
13760         * mips-tfile.c (parse_def): Fix parsing of def strings
13761         starting with digits.
13762
13763 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
13764
13765         PR target/38695
13766         * config/arm/arm.c (arm_is_long_call_p): Don't call
13767         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
13768
13769 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
13770
13771         * regrename.c (regrename_optimize): Fix dumping.
13772         (find_oldest_value_reg): Preserve REG_POINTER.
13773         (copy_hardreg_forward_1): Likewise.
13774
13775 2009-01-09  Diego Novillo  <dnovillo@google.com>
13776
13777         * gimple.h (struct gimple_statement_base) <uid>: Document
13778         the restrictions on its use.
13779         (gimple_uid): Tidy.
13780         (gimple_set_uid): Tidy.
13781
13782 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13783
13784         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
13785         zero guard even if align_bytes != 0 and count is smaller than
13786         size_needed.
13787
13788 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
13789
13790         PR rtl-optimization/38495
13791         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
13792         (add_range_and_copies_from_move_list): Print all added ranges.
13793         Add ranges to memory optimized destination.
13794
13795 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13796
13797         PR target/38686
13798         PR target/38708
13799         * config/i386/i386.c (override_options): Reject
13800         -mstringop-strategy=rep_8byte with -m32.
13801         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
13802         to 1.  Do count comparison against epilogue_size_needed at compile
13803         time even when count_exp was constant forced into register.  For
13804         size_needed don't jump to epilogue, instead just avoid aligning
13805         and invoke the body algorithm.  If need_zero_guard, add zero guard
13806         even if count is non-zero, but smaller than size_needed + number of
13807         bytes that could be stored for alignment.
13808         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
13809         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
13810         but smaller than size_needed + number of bytes that could be stored
13811         for alignment.  Compare size_needed with epilogue_size_needed instead
13812         of desired_align - align, don't adjust size_needed, pass
13813         epilogue_size_needed to the epilogue expanders.
13814
13815         PR c/35742
13816         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
13817
13818 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13819
13820         * pa.c (last_address): Change to unsigned.
13821         (update_total_code_bytes): Change argument to unsigned.  Don't
13822         check if insn addresses are set.
13823         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
13824         addresses are not set.
13825         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
13826
13827 2009-01-09  Nick Clifton  <nickc@redhat.com>
13828
13829         * config/sh/symbian.c: Replace uses of DECL_INLINE with
13830         DECL_DECLARED_INLINE_P.
13831
13832 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13833
13834         PR middle-end/38347
13835         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
13836         GET_MODE (op0) in operand_subword_force calls.
13837
13838         PR middle-end/38771
13839         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
13840         fold_convert arg0 operands to TREE_TYPE (op0) first.
13841
13842 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
13843
13844         * params.def (ira-max-conflict-table-size): Decrease default value
13845         to 1000.
13846
13847 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
13848
13849         PR tree-optimization/37031
13850         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
13851         on parameter_set.
13852         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
13853         allocate it using gc instead of heap, use VEC_quick_push instead of
13854         VEC_safe_push.
13855         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
13856         instead of heap, use VEC_quick_push instead of VEC_safe_push.
13857         * tree-data-ref.h (struct access_matrix): Change matrix to gc
13858         allocated vector from heap allocated.
13859         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
13860         * tree-loop-linear.c (linear_transform_loops): Allocate nest
13861         vector only after perfect_loop_nest_depth call.
13862
13863 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
13864             Jan Sjodin  <jan.sjodin@amd.com>
13865
13866         PR tree-optimization/38559
13867         * graphite.c (debug_value, copy_constraint,
13868         swap_constraint_variables, scale_constraint_variable, ): New.
13869         (get_lower_bound, get_upper_bound): Removed.
13870         (graphite_trans_bb_strip_mine): Clean up this code that works
13871         only for constant number of iterations.  Fully copy upper and
13872         lower bound constraints, not only the constant part of them.
13873         * graphite.h (debug_value): Declared.
13874
13875 2009-01-08  Ira Rosen  <irar@il.ibm.com>
13876
13877         PR tree-optimization/37194
13878         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
13879         Don't add the cost of cost model guard in prologue to scalar
13880         outside cost in case of known number of iterations.
13881
13882 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
13883             Alan Modra  <amodra@bigpond.net.au>
13884
13885         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
13886         non-word-aligned REG+CONST addressing.
13887
13888 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13889
13890         PR target/38706
13891         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
13892         free_after_compilation when outputting a thunk.
13893         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
13894         Do not call free_after_compilation here.
13895
13896 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13897
13898         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
13899         (ix86_valid_target_attribute_inner_p): Ditto.
13900
13901 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
13902
13903         PR tree-optimization/38492
13904         PR tree-optimization/38498
13905         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
13906         * tree-chrec.h (scev_is_linear_expression): Declared.
13907         * graphite.c (graphite_cannot_represent_loop_niter): New.
13908         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
13909         (graphite_loop_normal_form): Use gcc_assert.
13910         (scan_tree_for_params): Use CASE_CONVERT.
13911         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
13912         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
13913         Use gcc_assert.  Discard scops that contain unhandled cases.
13914         (build_scop_conditions): Return a boolean status for unhandled cases.
13915         (strip_mine_profitable_p): Print the loop number, not its depth.
13916         (is_interchange_valid): Pass the depth of the loop nest, don't
13917         recompute it wrongly.
13918         (graphite_trans_bb_block): Same.
13919         (graphite_trans_bb_block): Print tentative of loop blocking.
13920         (graphite_trans_scop_block): Do not print that the loop has been
13921         blocked.
13922         (graphite_transform_loops): Do not handle scops that contain condition
13923         scalar phi nodes.
13924
13925 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
13926
13927         AVX Programming Reference (December, 2008)
13928         * config/i386/avxintrin.h (_mm256_stream_si256): New.
13929         (_mm256_stream_pd): Likewise.
13930         (_mm256_stream_ps): Likewise.
13931
13932         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
13933         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
13934         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
13935         (bdesc_special_args): Add __builtin_ia32_movntdq256,
13936         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
13937         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
13938         (ix86_expand_special_args_builtin): Likewise.
13939
13940         * config/i386/sse.md (AVXMODEDI): New.
13941         (avx_movnt<mode>): Likewise.
13942         (avx_movnt<mode>): Likewise.
13943         (<sse>_movnt<mode>): Remove AVX support.
13944         (sse2_movntv2di): Likewise.
13945
13946 2009-01-07  Richard Guenther  <rguenther@suse.de>
13947
13948         PR middle-end/38751
13949         * fold-const.c (extract_muldiv): Remove obsolete comment.
13950         (fold_plusminus_mult_expr): Undo MINUS_EXPR
13951         to PLUS_EXPR canonicalization for the canonicalization.
13952
13953 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
13954
13955         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
13956         hosted cross-compilers generating less efficient code.
13957
13958 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13959
13960         * function.h (rtl_data): Add a dbr_scheduled_p field.
13961         * reorg.c (dbr_schedule): Set it.
13962         (gate_handle_delay_slots): Check it.
13963         * config/mips/mips.c (mips_base_delayed_branch): Delete.
13964         (mips_reorg): Check flag_delayed_branch instead of
13965         mips_base_delayed_branch.
13966         (mips_override_options): Don't set mips_base_delayed_branch
13967         or flag_delayed_branch.
13968
13969 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13970
13971         PR rtl-optimization/38426.
13972         * ira.c (ira): Set current_function_is_leaf earlier.
13973
13974 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
13975
13976         PR rtl-optimization/38722
13977         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
13978         too early, only set a flag and modify after last possible
13979         undo_all point.
13980
13981 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
13982
13983         PR c/34252
13984         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
13985         * real.c (decimal_single_format): Correct values of emin and emax.
13986         (decimal_double_format): Ditto.
13987         (decimal_quad_format): Ditto.
13988         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
13989         computation of DECnn_MIN and DECnn_MAX for corrected values of
13990         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
13991         __DECnn_MIN__, and adjust its computation for the corrected value
13992         of emin.
13993
13994 2009-01-06  Jan Hubicka  <jh@suse.cz>
13995
13996         PR target/38744
13997         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
13998
13999 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
14000
14001         * doc/contrib.texi (Contributors): Slightly adjust the end note.
14002         Add Robert Clark to the list of testers.
14003
14004 2009-01-06  Jan Hubicka  <jh@suse.cz>
14005             Kai Tietz  <kai.tietz@onevision.com>
14006
14007         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
14008         * config/i386/i386.c (ix86_expand_call): Add clobbers.
14009
14010 2009-01-06  Jan Hubicka  <jh@suse.cz>
14011             Kai Tietz  <kai.tietz@onevision.com>
14012
14013         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
14014         for w64 ABI.
14015         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
14016         (ix86_nsaved_regs): Count only general purpose regs.
14017         (ix86_nsaved_sseregs): New.
14018         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
14019         to 16 for w64; compute padding and size of sse reg save area.
14020         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
14021         general purpose regs.
14022         (ix86_emit_save_sse_regs_using_mov): New.
14023         (ix86_expand_prologue): Save SSE regs if needed.
14024         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
14025         (ix86_emit_restore_sse_regs_using_mov): New.
14026         (ix86_expand_epilogue): Save SSE regs if needed.
14027
14028 2009-01-06  Jan Hubicka  <jh@suse.cz>
14029             Kai Tietz  <kai.tietz@onevision.com>
14030
14031         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
14032         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
14033         functions when accumulate outgoing args is off.
14034
14035 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
14036
14037         PR bootstrap/38742
14038         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
14039         before using pseudos_have_intersected_live_ranges_p.
14040
14041         * ira-int.h (ira_assert): Always define.
14042
14043 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
14044
14045         AVX Programming Reference (December, 2008)
14046         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
14047         (_mm256_permute2_pd): Likewise.
14048         (_mm_permute2_ps): Likewise.
14049         (_mm256_permute2_ps): Likewise.
14050         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
14051         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
14052
14053         * config/i386/i386.c (ix86_builtins): Remove
14054         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
14055         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
14056         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
14057         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
14058         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
14059         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
14060         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
14061         __builtin_ia32_vpermil2ps256.
14062         (ix86_init_mmx_sse_builtins): Updated.
14063         (ix86_expand_args_builtin): Likewise.
14064
14065 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14066
14067         * pa.c (output_call): Relocate non-jump insns in the delay slot of
14068         long absolute calls when generating PA 2.0 code.
14069
14070 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
14071
14072         PR rtl-optimization/38583
14073         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
14074
14075         * params.def (ira-max-conflict-table-size): New.
14076
14077         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
14078
14079         * ira.h (ira_conflicts_p): New external definition.
14080
14081         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
14082         table.  Report this.  Return result of building.
14083         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
14084         building conflict table.
14085
14086         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
14087         (ira_color): Use ira_conflicts_p.
14088
14089         * global.c: Include ira.h.
14090         (pseudo_for_reload_consideration_p, build_insn_chain): Use
14091         ira_conflicts_p.
14092
14093         * Makefile.in (global.o): Add ira.h.
14094
14095         * ira-build.c (mark_all_loops_for_removal,
14096         propagate_some_info_from_allocno): New.
14097         (remove_unnecessary_allocnos): Call
14098         propagate_some_info_from_allocno.
14099         (remove_low_level_allocnos): New.
14100         (remove_unnecessary_regions): Add parameter.  Call
14101         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
14102         parameter to remove_unnecessary_regions.
14103         (ira_build): Remove all regions but root if the conflict table was
14104         not built.  Update conflict hard regs for allocnos crossing calls.
14105
14106         * ira.c (ira_conflicts_p): New global.
14107         (ira): Define and use ira_conflicts_p.
14108
14109         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
14110         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
14111         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
14112
14113 2009-01-06  Ben Elliston  <bje@au.ibm.com>
14114
14115         * gengtype-lex.l (YY_NO_INPUT): Define.
14116
14117 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14118
14119         PR c/34911
14120         * c-common.c (handle_vector_size_attribute): Also reject
14121         BOOLEAN_TYPE types.
14122
14123 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
14124
14125         PR tree-optimization/38492
14126         * graphite.c (rename_map_elt, debug_rename_elt,
14127         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
14128         rename_map_elt_info, eq_rename_map_elts,
14129         get_new_name_from_old_name, bb_in_sese_p): Moved around.
14130         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
14131         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
14132         (sese_build_livein_liveouts): New.
14133         (new_sese, free_sese): New.
14134         (new_scop): Call new_sese.
14135         (free_scop): Call free_sese.
14136         (rename_variables_from_edge, rename_phis_end_scop): Removed.
14137         (register_old_new_names): Renamed register_old_and_new_names.
14138         (register_scop_liveout_renames, add_loop_exit_phis,
14139         insert_loop_close_phis, struct igp,
14140         default_liveout_before_guard, add_guard_exit_phis,
14141         insert_guard_phis, copy_renames): New.
14142         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
14143         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
14144         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
14145         (scop_adjust_phis_for_liveouts): New.
14146         (gloog): Call scop_adjust_phis_for_liveouts.
14147
14148         * graphite.h (struct sese): Documented.  Added fields liveout,
14149         num_ver and livein.
14150         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
14151         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
14152         (struct scop): Added field liveout_renames.
14153         (SCOP_LIVEOUT_RENAMES): New.
14154
14155 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14156
14157         PR tree-optimization/38510
14158         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
14159         (translate_clast): Call recompute_all_dominators before
14160         graphite_verify.
14161         (gloog): Call recompute_all_dominators before graphite_verify.
14162
14163 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14164             Jan Sjodin  <jan.sjodin@amd.com>
14165
14166         PR tree-optimization/38500
14167         * graphite.c (create_sese_edges): Call fix_loop_structure after
14168         splitting blocks.
14169
14170 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
14171
14172         * config.gcc: Add m32r*-*-rtems*.
14173         * config/m32r/rtems.h: New file.
14174
14175 2009-01-05  Ben Elliston  <bje@au.ibm.com>
14176
14177         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
14178         (.po.pox): Likewise.
14179         (po/gcc.pot): Likewise.
14180
14181 2009-01-04  David S. Miller  <davem@davemloft.net>
14182
14183         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
14184         (STARTING_FRAME_OFFSET): Always set to zero.
14185
14186 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
14187
14188         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
14189         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
14190         fixed-point types, and vectors of the same.
14191
14192 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
14193
14194         * config/mips/sync.md (*mb_barrier): Rename to...
14195         (*memory_barrier): ...this.
14196
14197 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
14198
14199         * doc/extend.texi (Function Attributes): Move @cindex after @item
14200         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
14201         and put in alphabetical order. Fix 'target' name and put in order.
14202         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
14203         typos.
14204
14205 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
14206
14207         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
14208         (memory_barrier): Expand as unspec instead of unspec_volatile.
14209         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14210         (*memory_barrier): Define as unspec instead of unspec_volatile.
14211         Use (match_dup 0) as input operand.
14212
14213         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
14214         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
14215         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
14216         scratch register.  Remove operand 1.
14217         (*stbar): Define as unspec instead of unspec_volatile.
14218         Use (match_dup 0) as input operand, remove (const_int 8).
14219         (*membar): Define as unspec instead of unspec_volatile.
14220         Use (match_dup 0) as input operand, remove input operand 2.
14221
14222         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
14223         (memory_barrier): Expand as unspec instead of unspec_volatile.
14224         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14225         (*memory_barrier): Define as unspec instead of unspec_volatile.
14226         Use (match_dup 0) as input operand.
14227
14228         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
14229         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14230         Set volatile flag on operand 0.
14231         (*memory_barrier): New insn pattern.
14232
14233         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
14234         insn operands.
14235         (*memory_barrier): Use (match_dup 0) as input operand.
14236
14237         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
14238         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14239         Set volatile flag on operand 0.
14240         (*mb_internal): New insn pattern.
14241
14242         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
14243
14244 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
14245
14246         PR middle-end/38586
14247         * function.c (struct temp_slot): Move to the section of the file
14248         that deals with temp slots.  Remove field 'address'.
14249         (temp_slot_address_table): New hash table of address -> temp slot.
14250         (struct temp_slot_address_entry): New struct, items for the table.
14251         (temp_slot_address_compute_hash, temp_slot_address_hash,
14252         temp_slot_address_eq, insert_temp_slot_address): Support functions
14253         for the new table.
14254         (find_temp_slot_from_address): Rewrite to use the new hash table.
14255         (remove_unused_temp_slot_addresses): Remove addresses of temp
14256         slots that have been made available.
14257         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
14258         worker function for remove_unused_temp_slot_addresses.
14259         (assign_stack_temp_for_type): Don't clear the temp slot address list.
14260         Add the temp slot address to the address -> temp slot map.
14261         (update_temp_slot_address): Update via insert_temp_slot_address.
14262         (free_temp_slots): Call remove_unused_temp_slot_addresses.
14263         (pop_temp_slots): Likewise.
14264         (init_temp_slots): Allocate the address -> temp slot map, or empty
14265         the map if it is already allocated.
14266         (prepare_function_start): Initialize temp slot processing.
14267
14268 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
14269
14270         PR middle-end/38584
14271         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
14272         Calculate the size of all stack vars assuming no packing of stack
14273         vars will happen, replacing a quadratic algorithm with a linear one.
14274
14275 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14276
14277         PR target/38707
14278         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
14279         can't be used.
14280
14281 2009-01-03  Diego Novillo  <dnovillo@google.com>
14282
14283         * doc/contrib.texi: Update contributions.
14284
14285 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14286
14287         PR c++/38705
14288         * builtins.c (fold_builtin_memory_op): Give up if either operand
14289         is volatile.  Set srctype or desttype to non-qualified version
14290         of the other type.
14291
14292         PR c/38700
14293         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
14294         and FUNCTION_DECLs.
14295
14296 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
14297
14298         PR rtl-optimization/35805
14299         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
14300         problem if fast dce is able to remove any instructions.
14301         * dce.c (dce_process_block): Fix dump message.
14302
14303 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
14304
14305         PR 33649
14306         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
14307
14308 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
14309
14310         PR middle-end/38690
14311         * tree-flow.h (op_code_prio, op_prio): New prototypes.
14312         * tree-pretty-print.c (op_code_prio): New function.
14313         (op_prio): No longer static.  Use op_code_prio.
14314         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
14315         Use op_prio and op_code_prio to determine if () should be
14316         printed around operand(s) or not.
14317
14318         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
14319         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
14320         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
14321         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
14322         pp_character instead of pp_string for single letter printing.
14323
14324 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
14325
14326         * doc/extend.texi: Fix '#pragma GCC option' typo.
14327
14328 2009-01-02  Richard Guenther  <rguenther@suse.de>
14329
14330         * doc/install.texi (--enable-checking): Mention different
14331         default for stage1.
14332         (--enable-stage1-checking): Document.
14333
14334 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
14335
14336         PR middle-end/30142
14337         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
14338         case to be an error.
14339
14340 2009-01-02  Ben Elliston  <bje@au.ibm.com>
14341
14342         * config/fp-bit.h (pack_d): Constify argument.
14343         * config/fp-bit.c (makenan): Constify return type. Remove casts.
14344         (isnan): Constify argument.
14345         (isinf): Likewise.
14346         (iszero): Likewise.
14347         (pack_d): Likewise.
14348         (_fpadd_parts): Constify return type.
14349         (_fpmul_parts): Likewise.
14350         (_fpdiv_parts): Likewise.
14351
14352 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
14353
14354         PR c/36489
14355         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
14356         warn about overwriting initializer with side-effects or
14357         -Woverride-init if !IMPLICIT.
14358         (output_init_element): Likewise.  Pass IMPLICIT down to
14359         add_pending_init.
14360         (process_init_element): Add IMPLICIT argument.  Pass it down
14361         to output_init_element.
14362         (push_init_element, pop_init_level, set_designator): Adjust
14363         process_init_element callers.
14364         (set_nonincremental_init, set_nonincremental_init_from_string):
14365         Adjust add_pending_init callers.
14366         (output_pending_init_elements): Adjust output_init_element callers.
14367         * c-tree.h (process_init_element): Adjust prototype.
14368         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
14369         process_init_element callers.
14370
14371 \f
14372 Copyright (C) 2009 Free Software Foundation, Inc.
14373
14374 Copying and distribution of this file, with or without modification,
14375 are permitted in any medium without royalty provided the copyright
14376 notice and this notice are preserved.