OSDN Git Service

997ec4174c4b6ec53573a8aff57b0838ef87cf98
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
2
3         PR target/10242
4         * arm.md (arm_addsi3): Don't try to split an add with an
5         eliminable register until after reload has completed.
6
7 2009-06-03  Ian Lance Taylor  <iant@google.com>
8
9         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
10         * genattrtab.c (write_length_unit_log): Likewise.
11         * genchecksum.c (dosum): Likewise.
12         * gengtype.c (write_rtx_next): Likewise.
13         (finish_root_table, write_roots): Likewise.
14         * gimple.c (gimple_ops_offset_): Likewise.
15         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
16         * config/arc/arc.c (arc_attribute_table): Likewise.
17         * config/arm/arm.c (arm_attribute_table): Likewise.
18         * config/avr/avr.c (avr_attribute_table): Likewise.
19         * config/crx/crx.c (crx_attribute_table): Likewise.
20         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
21         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
22         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
23         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
24         * config/sh/sh.c (sh_attribute_table): Likewise.
25         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
26         * config/spu/spu.c (spu_attribute_table): Likewise.
27         * config/v850/v850.c (v850_attribute_table): Likewise.
28
29         * config/alpha/alpha.c (vms_attribute_table): Make static.
30         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
31         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
32         * config/mips/mips.c (mips_attribute_table): Likewise.
33
34         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
35         $(SYSTEM_H).
36         (cc1-checksum.o): Likewise.
37
38 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
39
40         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
41
42 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
43
44         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
45         insn if it is changing sp.  Use gen_add3_insn instead of
46         conditionally gen_addsi3 and gen_adddi3.
47         (offset_below_red_zone_p): New static inline function.
48         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
49         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
50         * config/rs6000/ppc-asm.h: Include auto-host.h.
51         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
52         CFI_RESTORE): Define.
53         * config/rs6000/crtresxgpr.asm: Add unwind info.
54         * config/rs6000/crtresxfpr.asm: Likewise.
55         * config/rs6000/crtresgpr.asm: Likewise.
56         * config/rs6000/crtresfpr.asm: Likewise.
57         * config/rs6000/crtsavgpr.asm: Likewise.
58         * config/rs6000/crtsavfpr.asm: Likewise.
59
60         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
61         0 to second argument of DWARF2_FRAME_REG_OUT macros.
62
63 2009-06-03  Julian Brown  <julian@codesourcery.com>
64
65         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
66         words or less (including TImode) in core registers.
67
68 2009-06-03  Richard Guenther  <rguenther@suse.de>
69
70         PR middle-end/40328
71         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
72
73 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
74
75         * statistics.c (statistics_counter_event): Do not record event 
76         in pass dump if its number == -1.
77         (curr_statistics_hash): Add assert that we never get passes 
78         with static number == -1.
79
80 2009-06-03  Richard Guenther  <rguenther@suse.de>
81             Andrey Belevantsev  <abel@ispras.ru>
82
83         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
84         non-BLKmode arrays addressable.
85
86 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
87
88         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
89         * config/m68k/m68k.h: ... here.
90         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
91         m68k and fido.
92
93 2009-06-03  Martin Jambor  <mjambor@suse.cz>
94
95         PR tree-optimization/40323
96         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
97         assignment.
98
99 2009-06-03  Richard Guenther  <rguenther@suse.de>
100
101         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
102         consistently.
103
104 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
105
106         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
107         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
108         JUMP_TABLE_DATA_P where applicable.
109         * config/sh/sh.c: Ditto.
110         * config/sh/sh.h: Ditto.
111         * config/sh/sh.md: Ditto.
112         * config/sh/symbian.c: Ditto.
113
114 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
115
116         * config/i386/driver-i386.c (describe_cache): Optimize
117         concatenation of strings.  Use snprintf instead of sprintf.
118         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
119         target when not compiling with GCC.
120
121 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
122
123         * config/sh/sh.c: Revert last change.
124         (sh_expand_epilogue): Emit a blockage insn before the frame
125         pointer adjustment unconditionally.
126
127 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
128
129         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
130         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
131         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
132         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
133         to COLLECT_GCC_OPTIONS.
134
135 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
136
137         * collect2.c (target_system_root): New variable.
138         (main): Handle --sysroot=.
139         (ignore_library): Strip the sysroot from the library path.
140
141 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
142
143         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
144         (collect2.o): Depend on collect2-aix.h.
145         (collect2-aix.o): New rule.
146         * collect2-aix.h: New file.
147         * collect2-aix.c: Likewise.
148         * collect2.c: Include collect2-aix.h.  Don't undefine
149         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
150         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
151         Use TARGET_AIX_VERSION instead of _AIX51.
152         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
153         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
154         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
155         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
156         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
157
158 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
159
160         * collect2.c (ignore_library): Avoid premature post-increment
161         and null deference.
162
163 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
164
165         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
166         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
167         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
168         CROSS_DIRECTORY_STRUCTURE too.
169         (LINK_LIBG_SPEC): Likewise.
170         (LIB_SPEC): Add %R to sysroot paths.
171         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
172         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
173         * config/rs6000/aix51.h: As for aix43.h.
174         * config/rs6000/aix52.h: Likewise.
175         * config/rs6000/aix53.h: Likewise.
176         * config/rs6000/aix61.h: Likewise.
177         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
178         to the beginning of sysroot paths.
179
180 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
181
182         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
183         INSN_LISTs that are out of the REG_NOTE range.
184
185 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
186
187         * loop-unroll.c (struct iv_to_split): Add pointer to next.
188         (struct var_to_expand): Likewise.
189         (struct opt_info): Add head and tail for linked lists of the above.
190         (analyze_insn_to_expand_var): Initialize next.
191         (analyze_iv_to_split_insn): Likewise.
192         (analyze_insns_in_loop): Create linked lists.
193         (allocate_basic_variable): Simplify for use without hash table.
194         (insert_var_expansion_initialization): Likewise, make it type-safer.
195         (combine_var_copies_in_loop_exit): Likewise.
196         (apply_opt_in_copies): Walk lists rather than hash tables.
197         (release_var_copies): Simplified and inlined by hand into...
198         (free_opt_info): ... this function.
199
200 2009-06-02  Richard Guenther  <rguenther@suse.de>
201
202         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
203         for field decls.
204
205 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
206
207         * cfgexpand.c (gimple_expand_cfg): Discard the source location
208         only for builtins that are not overridden.
209
210 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
211
212         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
213         label string.
214
215 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
216
217         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
218
219 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
220
221         * combine.c (move_deaths): Compare LUIDs within the same BB only.
222
223 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
224
225         * common.opt (fdump-unnumbered-links): New.
226         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
227         * print-rtl.c (flag_dump_unnumbered_links): New.
228         (print_rtx): Test it.
229
230 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
231
232         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
233         push/pop multiple to 8-byte alignment.
234
235 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
236
237         * config/i386/i386.c (queued_cfa_restores): New static variable.
238         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
239         functions.
240         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
241         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
242         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
243         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
244         note unconditionally.
245         (ix86_emit_restore_regs_using_mov): Likewise.
246         (ix86_emit_restore_sse_regs_using_mov): Likewise.
247         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
248         it through to ix86_emit_restore_reg_using_pop.
249         (ix86_emit_leave): Add RED_OFFSET argument.  Call
250         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
251         instead of adding REG_CFA_OFFSET note unconditionally.
252         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
253         the above functions.  Call ix86_add_queued_cfa_restore_notes when
254         needed.
255
256         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
257         force output of the label even for dwarf2out_do_cfi_asm.
258         (add_fde_cfi): If -g2 and above and cfi might change CFA,
259         force creation of CFI label and chain DW_CFA_set_loc jumping to it
260         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
261         caller.
262         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
263         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
264         dwarf2out_cfi_label callers.
265         * tree.h (dwarf2out_cfi_label): Adjust prototype.
266         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
267         Adjust dwarf2out_cfi_label callers.
268         * config/vax/vax.c (vax_output_function_prologue): Likewise.
269
270         * config/i386/i386.h (struct machine_cfa_state,
271         struct machine_function): Guard with ifndef USED_FOR_TARGET
272         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
273
274         PR other/40024
275         * emutls.c (__emutls_get_address): Change arr->size to mean number
276         of allocated arr->data entries instead of # of slots + 1.
277
278         PR middle-end/40316
279         * recog.c (peep2_reinit_state): New function.
280         (peephole2_init_state): Use it at the end of a basic block and also
281         when seeing a RTX_FRAME_RELATED_P insn.
282
283 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
284
285         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
286         fixuns_truncrfdi2): New.
287         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
288         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
289         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
290         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
291         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
292         *recip_approx): Remove.
293         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
294         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
295         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
296         move to div.md.
297         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
298         setf_exp_rf): New.
299
300 2009-06-01  Ian Lance Taylor  <iant@google.com>
301
302         * attribs.c (register_attribute): Use CONST_CAST.
303         * collect2.c (main): Use CONST_CAST2.
304         (scan_prog_file): Likewise.
305         * gcc.c (process_command, main): Likewise.
306         * toplev.c (toplev_main): Likewise.
307
308         * c-typeck.c (handle_warn_cast_qual): New static function,
309         partially broken out of build_c_cast.
310         (build_c_cast): Call handle_warn_cast_qual.
311         * doc/invoke.texi (Warning Options): Document new effect of
312         -Wcast-qual.
313
314 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
315
316         * diagnostic.c (diagnostic_build_prefix): Always print columns.
317         (diagnostic_report_current_module): Print columns.
318         * common.opt (flag_show_column): Enable by default.
319
320 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
321
322         * alias.c (find_base_term): Check for NULL term before returning.
323
324 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
325
326         Revert due to PR40320:
327         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
328         * calls.c (emit_library_call_value_1): Don't force_operand for move
329         and push insns.
330
331 2009-06-01  Olivier Hainque  <hainque@adacore.com>
332             Eric Botcazou  <ebotcazou@adacore.com>
333
334         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
335         to be processed as a bitfield for constructor output purposes.
336         * output.h (initializer_constant_valid_for_bitfield_p): Declare
337         new function.
338         * varasm.c (oc_local_state): New type, output_constructor
339         local state to support communication with helpers.
340         (oc_outer_state): New type, output_constructor outer state of
341         relevance in recursive calls.
342         (output_constructor_array_range): New output_constructor helper,
343         extracted code for an array range element.
344         (output_constructor_regular_field): New output_constructor helper,
345         extracted code for an element that is not a bitfield.
346         (output_constructor_bitfield): New output_constructor helper,
347         extracted code for a bitfield element.  Accept an OUTER state
348         argument for recursive processing.  Recurse on record or array
349         CONSTRUCTOR values, possibly past noop conversions.
350         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
351         VALUE is a valid constant-valued expression for use in a static
352         bit-field initializer.
353         (output_constructor): Rework to use helpers.  Accept and honor an
354         OUTER state argument for recursive calls.  Return total size.  Be
355         prepared for nested constructors initializing bitfields.
356         (output_constant): Feed OUTER in calls to output_constructor.
357
358 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
359
360         * calls.c (emit_library_call_value_1): Don't force_operand for move
361         and push insns.
362
363 2009-06-01  Nick Clifton  <nickc@redhat.com>
364
365         * doc/invoke.texi (IA-64 Options): Fix typo.
366
367 2009-06-01  Ira Rosen  <irar@il.ibm.com>
368
369         PR tree-optimization/39129
370         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
371         printed message.
372         (vect_do_peeling_for_loop_bound): Use 
373         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
374         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
375         (vect_loop_versioning): Likewise.
376         (vect_create_cond_for_alias_checks): Fix indentation.
377         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
378         macros.
379         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
380         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
381         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
382         "control flow in loop".
383         (vect_estimate_min_profitable_iters): Use 
384         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
385         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
386         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
387         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
388         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
389         statement belongs to a group of strided accesses with the exact code 
390         check.
391         (vectorizable_load): Likewise.
392         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
393         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
394
395 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
396
397         * config/freebsd-stdint.h: New file.
398         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
399         Add freebsd-stdint.h to tm_file.
400
401 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
402
403         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
404         (thumb2_extendhidi2): Likewise.
405
406 2009-05-31  Ian Lance Taylor  <iant@google.com>
407
408         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
409
410 2009-05-31  Ian Lance Taylor  <iant@google.com>
411
412         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
413         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
414         (ipa-reference.o): Depend upon gt-ipa-reference.h.
415
416 2009-05-31  Jason Merrill  <jason@redhat.com>
417
418         * tree-pretty-print.c (print_call_name): Take the callee, not the
419         call itself.  Make non-static.  Use dump_function_name for functions.
420         (dump_generic_node): Adjust.
421         * diagnostic.h: Declare print_call_name.
422         * gimple-pretty-print.c (dump_gimple_call): Use it.
423
424 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
425
426         * config/sh/sh.md (ashldi3_std): New define_expand.
427         (ashldi3): Use it.
428
429 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
430
431         PR target/40313
432         * config/sh/sh.c: Include debug.h.
433         (sh_expand_epilogue): Emit a blockage insn before the frame
434         pointer adjustment also when dwarf2out_do_frame returns true.
435
436 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
437
438         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
439         (thumb2_extendqidi2): New pattern.
440
441 2009-05-31  Ira Rosen  <irar@il.ibm.com>
442
443         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
444         mark phis for renaming.
445         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
446         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
447         Call mark_sym_for_renaming.
448         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
449         * tree-vect-loop.c (vect_transform_loop): Remove
450         vect_memsyms_to_rename initialization and a call to
451         mark_set_for_renaming.
452
453 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
454
455         PR middle-end/40304
456         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
457         frame related even if !set_cfa && style < 0.
458
459 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
460
461         * config/i386/mingw-tls.c: New file.
462         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
463         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
464         defining _WIN32 but not __CYGWIN__.
465
466 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
467
468         * configure.ac: Add MPC support.
469         
470         * config.in, configure: Regenerate.     
471
472 2009-05-29  Richard Henderson  <rth@redhat.com>
473
474         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
475         NOTE_INSN_BASIC_BLOCK.
476         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
477         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
478         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
479         to be deleted.
480         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
481         add in_use field.
482         (add_cfi): Disable check redefining cfa away from drap.
483         (lookup_cfa_1): Add remember argument; handle remember/restore.
484         (lookup_cfa): Pass remember argument.
485         (cfa_remember): New.
486         (compute_barrier_args_size_1): Remove sibcall check.
487         (dwarf2out_frame_debug_def_cfa): New.
488         (dwarf2out_frame_debug_adjust_cfa): New.
489         (dwarf2out_frame_debug_cfa_offset): New.
490         (dwarf2out_frame_debug_cfa_register): New.
491         (dwarf2out_frame_debug_cfa_restore): New.
492         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
493         (dwarf2out_begin_epilogue): New.
494         (dwarf2out_frame_debug_restore_state): New.
495         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
496         DW_CFA_restore_state.
497         (output_cfi_directive): Likewise.
498         (convert_cfa_to_fb_loc_list): Likewise.
499         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
500         * dwarf2out.h: Update.
501         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
502         (copy_insn_1): Early out for null.
503         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
504         and dwarf2out_frame_debug_restore_state.
505         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
506         (prologue_insn_hash, epilogue_insn_hash): New.
507         (free_after_compilation): Adjust freeing accordingly.
508         (record_insns): Create hash table if needed; push insns into
509         hash instead of array.
510         (maybe_copy_epilogue_insn): New.
511         (contains): Search hash table instead of array.
512         (sibcall_epilogue_contains): Remove.
513         (thread_prologue_and_epilogue_insns): Split eh_return insns
514         and mark them as epilogues.
515         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
516         scanning in terms of basic blocks.
517         * insn-notes.def (CFA_RESTORE_STATE): New.
518         * jump.c (returnjump_p_1): Accept EH_RETURN.
519         (eh_returnjump_p_1, eh_returnjump_p): New.
520         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
521         CFA_REGISTER, CFA_RESTORE): New.
522         * rtl.def (EH_RETURN): New.
523         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
524
525         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
526         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
527
528         * config/i386/i386.c (gen_push): Update cfa state.
529         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
530         add a CFA_ADJUST_CFA note.
531         (ix86_dwarf_handle_frame_unspec): Remove.
532         (ix86_expand_prologue): Update cfa state.
533         (ix86_emit_restore_reg_using_pop): New.
534         (ix86_emit_restore_regs_using_pop): New.
535         (ix86_emit_leave): New.
536         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
537         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
538         * config/i386/i386.h (struct machine_cfa_state): New.
539         (ix86_cfa_state): New.
540         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
541         (eh_return_internal): Merge from eh_return_<mode>,
542         use eh_return rtx, split w/ epilogue.
543
544 2009-05-29  Ian Lance Taylor  <iant@google.com>
545
546         * builtins.c (validate_gimple_arglist): Don't use va_arg with
547         enum type.
548         * calls.c (emit_library_call_value_1): Likewise.
549
550         * c-typeck.c (c_build_va_arg): New function.
551         * c-tree.h (c_build_va_arg): Declare.
552         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
553         instead of build_va_arg.
554
555 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
556
557         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
558         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
559         (ptr_difference_cost): Use affine combinations to compute it.
560         (difference_cost): Likewise.
561         (get_computation_cost_at): Compute more accurate cost for addresses
562         if the ratio is a multiplier allowed in addresses.
563         For non-addresses, consider that an additional offset or symbol is
564         added only once.
565
566 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
567
568         * config/i386/i386.c (ix86_decompose_address): Avoid useless
569         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
570
571         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
572         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
573         (prefix_rex): For UNIT_MMX don't imply the prefix by default
574         if MODE_DI.
575         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
576         to 1 for TYPE_SSE{IADD1,CVT1}.
577         (prefix_vex_imm8): Removed.
578         (length_vex): Only pass 1 as second argument to
579         ix86_attr_length_vex_default if prefix_extra is 0.
580         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
581         (length): For prefix vex computation use length_immediate
582         attribute instead of prefix_vex_imm8.
583         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
584         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
585         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
586         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
587         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
588         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
589         a space in between the operands.
590         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
591         if one operand is 0xff and the other one si, di, bp or sp.
592         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
593         other one si, di, bp or sp.
594         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
595         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
596         type and mode attributes.
597         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
598         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
599         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
600         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
601         prefix_data16 attribute iff MODE_DF.
602         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
603         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
604         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
605         constm128_operand in length_immediate computation.
606         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
607         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
608         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
609         length_immediate attribute to 1.
610         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
611         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
612         for certain alternatives.
613         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
614         prefix_data16 attribute if MODE_V1DF.
615         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
616         length_immediate to 1.
617         (set_got_rex64, set_rip_rex64): Remove length attribute, set
618         length_address to 4, set mode attribute to MODE_DI.
619         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
620         (fxam<mode>2_i387): Set length attribute to 4.
621         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
622         *prefetch_3dnow_rex): Override length_address attribute.
623         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
624         attributes.
625         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
626         (constm128_operand): Removed.
627         * config/i386/i386.c (memory_address_length): For
628         disp && !index && !base in 64-bit mode account for SIB byte if
629         print_operand_address can't optimize disp32 into disp32(%rip)
630         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
631         for fs: or gs: segment.
632         (ix86_attr_length_immediate_default): When checking if shortform
633         is possible, truncate immediate to the length of the non-shortened
634         immediate.
635         (ix86_attr_length_address_default): Ignore MEM_P operands
636         with X constraint.
637         (ix86_attr_length_vex_default): Only check for DImode on
638         GENERAL_REG_P operands.
639         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
640         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
641         (sse_cvttps2pi): Clear prefix_rep attribute.
642         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
643         attribute.
644         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
645         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
646         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
647         iff operand 2 is const_int_operand.
648         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
649         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
650         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
651         instead of vex.
652         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
653         prefix_data16.
654         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
655         prefix_data16 attribute for movlpd and movhpd instructions.
656         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
657         length_immediate for shufpd instruction.
658         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
659         (avx_cmpp<avxmodesuffixf2c><mode>3,
660         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
661         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
662         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
663         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
664         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
665         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
666         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
667         prefix_data16 attribute for the first alternative to 1.
668         (*avx_loadlps): Override length_immediate for the first alternative.
669         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
670         attributes for second alternative.
671         (*vec_concatv2sf_sse4_1): Override length_immediate and
672         prefix_data16 attributes for second alternative.
673         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
674         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
675         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
676         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
677         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
678         prefix_data16 and length_immediate to 1.
679         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
680         to 1.
681         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
682         prefix_extra attribute for variants that don't have 0f prefix alone.
683         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
684         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
685         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
686         *sse4_1_pextrd): Set length_immediate to 1.
687         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
688         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
689         to 1.
690         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
691         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
692         length_immediate to 1 for second alternative.
693         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
694         prefix_extra and length_immediate attributes for the first
695         alternative.
696         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
697         first alternative.
698         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
699         to 1 for the first and third alternative.
700         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
701         alternative.
702         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
703         attribute.
704         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
705         attribute to 0.
706         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
707         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
708         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
709         *avx_psign<mode>3): Set prefix_extra attribute to 1.
710         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
711         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
712         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
713         ssse3_psign<mode>3): Override prefix_rex attribute.
714         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
715         (ssse3_palignrti): Override length_immediate to 1.
716         (ssse3_palignrdi): Override length_immediate to 1, override
717         prefix_rex attribute.
718         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
719         (sse4a_extrqi): Override length_immediate to 2.
720         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
721         (sse4a_insertq): Override prefix_data16 to 0.
722         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
723         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
724         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
725         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
726         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
727         and length_immediate to 1.
728         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
729         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
730         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
731         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
732         and length_immediate to 1.
733         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
734         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
735         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
736         avx_ptest256): Override prefix_extra to 1.
737         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
738         Override prefix_data16 and length_immediate to 1.
739         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
740         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
741         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
742         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
743         prefix_data16 to 0 and prefix_extra to 2.
744         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
745         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
746         attribute.
747         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
748         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
749         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
750         and prefix_extra to 2.
751         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
752         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
753         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
754         avx_vpermilvar<mode>3,
755         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
756         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
757         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
758         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
759         Override prefix_extra to 1.
760         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
761         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
762         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
763         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
764         prefix_extra and length_immediate to 1.
765         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
766         modrm to 0.
767         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
768         to 1 for the first alternative.
769         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
770         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
771         cases.
772         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
773         *movv2sf_internal_avx, *movv2sf_internal): Override
774         prefix_rep attribute for certain alternatives.
775         (*mov<mode>_internal): Override prefix_rep or prefix_data16
776         attributes for certain alternatives.
777         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
778         attributes for certain alternatives.
779         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
780         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
781         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
782         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
783         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
784         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
785         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
786         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
787         length_immediate to 1 if operand 2 is const_int_operand.
788         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
789         *vec_extractv2si_1): Set length_immediate attribute to 1.
790         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
791         using old 3DNOW insn rather than SSE/3DNOW_A.
792         (mmx_emms, mmx_femms): Clear modrm attribute.
793
794 2009-05-29  Martin Jambor  <mjambor@suse.cz>
795
796         * tree-sra.c:  New implementation of SRA.
797
798         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
799         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
800         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
801         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
802         (SRA_MAX_STRUCTURE_COUNT): Removed.
803         (SRA_FIELD_STRUCTURE_RATIO): Removed.
804         * doc/invoke.texi (sra-max-structure-size): Removed.
805         (sra-field-structure-ratio): Removed.
806
807 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
808
809         PR middle-end/40291
810         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
811         before expansion.
812
813 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
814
815         PR rtl-optimization/40101
816         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
817         seqno.  Adjust comment.
818         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
819         inserting bookkeeping before a jump, the jump is not scheduled.
820         When no positive seqno found, provide a value.  Add comment.
821
822 2009-05-29  Richard Guenther  <rguenther@suse.de>
823
824         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
825         short-cutting on the first component.
826
827 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
828
829         PR middle-end/39958
830         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
831         for trees other than decls/types.
832
833 2009-05-29  Richard Guenther  <rguenther@suse.de>
834
835         * tree-ssa-operands.c (get_expr_operands): Do not handle
836         INDIRECT_REFs in the handled-component case.  Remove
837         unused get_ref_base_and_extent case.
838         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
839         tree_low_cst and host_integerp where possible.
840         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
841         codes for equivalence.
842         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
843
844 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
845
846         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
847         to tmake_file for i[34567]86-*-cygwin*. 
848
849 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
850
851         PR target/40017
852         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
853         (altivec_categorize_keyword, init_vector_keywords,
854         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
855         similar to bool.
856
857 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
858
859         * tree.c (handle_dll_attribute): Check if node is
860         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
861
862 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
863
864         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
865         component.
866         (thumb2_zero_extendqidi2): Likewise.
867
868 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
869
870         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
871         instead of gen_movrt.
872         * config/sh/sh.md (movrt): Remove.
873
874 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
875
876         * doc/invoke.texi (IA-64 Options):
877         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
878         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
879         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
880         -msched-prefer-non-control-spec-insns,
881         -msched-stop-bits-after-every-cycle,
882         -msched-count-spec-in-critical-path,
883         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
884         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
885         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
886         and -msched-spec-verbose.
887
888 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
889
890         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
891         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
892         error if used.
893         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
894
895 2009-05-28  Richard Guenther  <rguenther@suse.de>
896
897         * tree-ssa-alias.c (ao_ref_init): New function.
898         (ao_ref_base): Likewise.
899         (ao_ref_base_alias_set): Likewise.
900         (ao_ref_alias_set): Likewise.
901         (refs_may_alias_p_1): Change signature.
902         (refs_may_alias_p): Adjust.
903         (refs_anti_dependent_p): Likewise.
904         (refs_output_dependent_p): Likewise.
905         (call_may_clobber_ref_p_1): Change signature.
906         (call_may_clobber_ref_p): Adjust.
907         (stmt_may_clobber_ref_p_1): New function split out from ...
908         (stmt_may_clobber_ref_p): ... here.
909         (maybe_skip_until): Adjust signature.
910         (get_continuation_for_phi): Likewise.
911         (walk_non_aliased_vuses): Likewise.
912         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
913         (ao_ref_init): Declare.
914         (ao_ref_base): Likewise.
915         (ao_ref_alias_set): Likewise.
916         (stmt_may_clobber_ref_p_1): Likewise.
917         (walk_non_aliased_vuses): Adjust.
918         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
919         (get_ref_from_reference_ops): remove.
920         (vn_reference_lookup_2): Adjust signature.
921         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
922         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
923         (vn_reference_lookup): Adjust.
924         (vn_reference_insert): Likewise.
925         (vn_reference_insert_pieces): Adjust signature.
926         (visit_reference_op_call): Adjust.
927         * tree-ssa-pre.c (get_expr_type): Simplify.
928         (phi_translate_1): Adjust.
929         (compute_avail): Likewise.
930         (translate_vuse_through_block): Do not re-build trees.
931         (value_dies_in_block_x): Likewise.
932         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
933         fields.
934         (vn_reference_lookup_pieces): Adjust declaration.
935         (vn_reference_insert_pieces): Likewise.
936
937 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
938
939         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
940         with checking disabled.
941
942 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
943
944         PR target/37216
945
946         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
947         macro definition for support of three-operand format aligned
948         .comm directive in assembler on cygwin/pe/mingw target OS.
949         * configure:  Regenerate.
950         * config.h:  Regenerate.
951
952         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
953         aligned form of .comm directive if -mpe-aligned-commons is in effect.
954         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
955
956         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
957         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
958
959 2009-05-28  Ira Rosen  <irar@il.ibm.com>
960
961         PR tree-optimization/40254
962         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
963         in analysis of basic blocks.
964
965 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
966
967         PR middle-end/33699
968         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
969         * target-def.h (TARGET_CONST_ANCHOR): New macro.
970         (TARGET_INITIALIZER): Use it.
971         * cse.c (CHEAPER): Move it up to the other macros.
972         (insert): Rename this ...
973         (insert_with_costs): ... to this.  Add cost parameters.  Update
974         function comment.
975         (insert): New function.  Call insert_with_costs.
976         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
977         find_reg_offset_for_const, try_const_anchors): New functions.
978         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
979         when using a const-anchor.  Call insert_const_anchors.
980         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
981         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
982
983 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
984
985         * tree-inline.c (remap_decls): Enable nonlocalized variables
986         when not optimizing.
987
988 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
989
990         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
991         Simplify other tests involving optimize.
992
993 2009-05-27  Tom Tromey  <tromey@redhat.com>
994
995         * unwind-dw2.c (_Unwind_DebugHook): New function.
996         (uw_install_context): Call _Unwind_DebugHook.
997
998 2009-05-27  Tom Tromey  <tromey@redhat.com>
999
1000         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1001
1002 2009-05-27  Ian Lance Taylor  <iant@google.com>
1003
1004         * Makefile.in (LINKER, LINKER_FLAGS): Define.
1005         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1006         (ALL_LINKERFLAGS): Define.
1007         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1008         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1009         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1010         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1011         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1012         $(LINKER_FOR_BUILD).
1013         (build/gcov-iov$(build_exeext)): Likewise.
1014
1015 2009-05-27  Julian Brown  <julian@codesourcery.com>
1016
1017         * gcse.c (target.h): Include.
1018         (can_assign_to_reg_without_clobbers_p): Check that the target allows
1019         copy of argument to a pseudo register.
1020
1021 2009-05-27  Diego Novillo  <dnovillo@google.com>
1022
1023         * tree-ssa-live.c (dump_scope_block): Document arguments.
1024         (dump_scope_blocks): Document.
1025         (debug_scope_blocks): New.
1026         * tree-flow.h (debug_scope_blocks): Declare.
1027
1028 2009-05-21  Denis Chertykov  <denisc@overta.ru>
1029
1030         * doc/contrib.texi (Contributors): Add myself to the list.
1031
1032 2009-05-27  Olivier Hainque  <hainque@adacore.com>
1033
1034         * expr.c (target_align): New function.  Alignment the TARGET of an
1035         assignment may be assume to have.
1036         (highest_pow2_factor_for_target): Use it instead of relying on
1037         immediate tree attributes of TARGET, not necessarily honored when
1038         intermediate bitfields are involved.
1039         
1040 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1041
1042         PR target/40266
1043         * config/i386/driver-i386.c (host_detect_local_cpu): Support
1044         AVX, SSE4, AES, PCLMUL and POPCNT.
1045
1046 2009-05-27  Diego Novillo  <dnovillo@google.com>
1047
1048         * tree-pretty-print.c (dump_location): New.
1049         (dump_generic_node): Call it.
1050         Factor code to handle BLOCK nodes ...
1051         (dump_block_node): ... here.
1052
1053 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
1054
1055         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
1056         with it.
1057         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
1058         included.
1059         * gcc-plugin.h: Include config.h and system.h.
1060         (IN_GCC): Define if not defined.
1061
1062 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
1063
1064         PR middle-end/40249
1065         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
1066         with -fno-inline.
1067
1068 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
1069
1070         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
1071         applicable.
1072         * config/m32r/m32r.h: Ditto.
1073         * config/m32r/m32r.md: Ditto.
1074         * config/m32r/predicates.md: Ditto.
1075
1076 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
1077
1078         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
1079
1080 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
1081
1082         * doc/plugins.texi
1083         (Loading plugins): typo.
1084         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
1085         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1086         (Interacting with the GCC Garbage Collector): Added new section.
1087         (Giving information about a plugin): Added new section for
1088         PLUGIN_INFO.
1089         * ggc.h (ggc_register_root_tab): Added declaration.
1090         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
1091         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
1092         (register_callback): Improved comment in declaration.
1093         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
1094         (extra_root_vec) Added static variable for dynamic roots registration.
1095         (ggc_register_root_tab) Added new routine.
1096         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
1097         PLUGIN_GGC_MARKING event.
1098         * ggc-zone.c: Include plugin.h.
1099         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1100         * ggc-page.c: Include plugin.h.
1101         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1102         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1103         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1104         (register_callback): check lack of callbacks for
1105         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1106         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1107         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1108         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1109         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1110         dependency on plugin.h.
1111         (plugin.o): Added dependency on ggc.h...
1112
1113 2009-05-26  Richard Guenther  <rguenther@suse.de>
1114
1115         PR middle-end/40248
1116         Revert
1117         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1118         with mismatched comparison modes.
1119
1120         * expr.c (expand_expr_real_1): Expand the operand of a
1121         VIEW_CONVERT_EXPR in its natural mode.
1122
1123 2009-05-26  Ian Lance Taylor  <iant@google.com>
1124
1125         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1126         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1127         (ALL_COMPILERFLAGS): Define.
1128         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1129         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1130         (collect2$(exeext), collect2.o): Likewise.
1131         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1132         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1133         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1134         (libbackend.o, intl.o, cppdefault.o): Likewise.
1135         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1136         (build/%.o): Use $(COMPILER_FOR_BUILD).
1137         (build/gen%$(build_exeext)): Likewise.
1138         (build/gcov-iov$(build_exeext)): LIkewise.
1139         * config/t-darwin (darwin.o): Use $(COMPILER).
1140         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1141         * config/t-sol2 (sol2-c.o): Likewise.
1142         (sol2.o): Likewise.
1143         * config/t-vxworks (vxworks.o): Likewise.
1144         * config/x-darwin (host-darwin.o): Likewise.
1145         * config/x-hpux (host-hpux.o): Likewise.
1146         * config/x-linux (host-linux.o): Likewise.
1147         * config/x-solaris (host-solaris.o): Likewise.
1148         * config/alpha/x-alpha (driver-alpha.o): Likewise.
1149         * config/arm/t-arm (arm-c.o): Likewise.
1150         * config/arm/t-pe (pe.o): Likewise.
1151         * config/arm/t-wince-pe (pe.o): Likewise.
1152         * config/i386/t-cygming (winnt.o): Likewise.
1153         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1154         * config/i386/t-cygwin (cygwin1.o): Likewise.
1155         (cygwin2.o): Likewise.
1156         * config/i386/t-i386 (i386-c.o): Likewise.
1157         * config/i386/t-interix (winnt.o): Likewise.
1158         * config/i386/t-netware (netware.o): Likewise.
1159         * config/i386/t-nwld (nwld.o): Likewise.
1160         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1161         * config/i386/x-i386 (driver-i386.o): Likewise.
1162         * config/i386/x-cygwin (host-cygwin.o): Likewise.
1163         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1164         * config/ia64/t-ia64 (ia64-c.o): Likewise.
1165         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1166         * config/mips/x-native (driver-native.o): Likewise.
1167         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1168         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1169         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1170         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1171         * config/score/t-score-elf (score7.o): Likewise.
1172         (score3.o): Likewise.
1173         * config/sh/t-sh (sh-c.o): Likewise.
1174         * config/sh/t-symbian (sh-c.o): Likewise.
1175         (symbian.o): Likewise.
1176         * config/spu/t-spu-elf (spu-c.o): Likewise.
1177         * config/v850/t-v850 (v850-c.o): Likewise.
1178         * config/v850/t-v850e (v850-c.o): Likewise.
1179
1180 2009-05-26  Richard Guenther  <rguenther@suse.de>
1181
1182         PR tree-optimization/40122
1183         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1184         VECTOR_CSTs if possible.
1185         (fold_gimple_assign): Likewise.
1186
1187 2009-05-26  Richard Guenther  <rguenther@suse.de>
1188
1189         PR middle-end/40252
1190         * fold-const.c (fold_binary): Use the correct types for building
1191         rotates.
1192
1193 2009-05-26  Richard Guenther  <rguenther@suse.de>
1194
1195         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1196         redundant calls to merge_alias_info.
1197         (bump_vector_ptr): Likewise.
1198         * tree-ssa-copy.c (merge_alias_info): Remove.
1199         (replace_exp_1): Remove call to merge_alias_info.
1200         (propagate_tree_value): Likewise.
1201         (fini_copy_prop): Propagate points-to info.
1202         * tree-flow.h (merge_alias_info): Remove.
1203
1204 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1205
1206         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1207
1208 2009-05-25  Jan Hubicka  <jh@suse.cz>
1209
1210         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1211         * cgraph.h (struct inline_summary): New filed self_wize,
1212         size_inlining_benefit, self_time and time_inlining_benefit.
1213         (struct cgraph_global_info): Replace insns by time ans size fields.
1214         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1215         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1216         (ipcp_update_callgraph): Do not touch function bodies.
1217         * ipa-inline.c: Include except.h
1218         (MAX_TIME): New constant.
1219         (overall_insns): Remove.
1220         (leaf_node_p): New.
1221         (overall_size, max_benefit): New static variables.
1222         (cgraph_estimate_time_after_inlining): New function.
1223         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1224         (cgraph_clone_inlined_nodes): Update size.
1225         (cgraph_mark_inline_edge): Update size.
1226         (cgraph_estimate_growth): Use size info.
1227         (cgraph_check_inline_limits): Check size.
1228         (cgraph_default_inline_p): Likewise.
1229         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1230         (cgraph_decide_recursive_inlining): Check size.
1231         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1232         and times.
1233         (cgraph_decide_inlining): Likewise.
1234         (cgraph_decide_inlining_incrementally): Likewise; honor
1235         PARAM_EARLY_INLINING_INSNS.
1236         (likely_eliminated_by_inlining_p): New predicate.
1237         (estimate_function_body_sizes): New function.
1238         (compute_inline_parameters): Use it.
1239         * except.c (must_not_throw_labels): New function.
1240         * except.h (must_not_throw_labels): Declare.
1241         * tree-inline.c (init_inline_once): Kill inlining_weigths
1242         * tree-ssa-structalias.c: Avoid uninitialized warning.
1243         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1244         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1245         (PARAM_INLINE_CALL_COST): Remove.
1246         (PARAM_EARLY_INLINING_INSNS): New.
1247
1248 2009-05-25  Richard Guenther  <rguenther@suse.de>
1249
1250         PR tree-optimization/36327
1251         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1252         callback for reference translation or lookup at the point of may-defs.
1253         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1254         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1255         for union COMPONENT_REFs.
1256         (vn_reference_lookup_3): New callback.  Lookup from memset
1257         and CONSTRUCTOR assignment, translate through struct copies.
1258         (vn_reference_lookup_pieces): Make sure to not free the
1259         passed operands array.  Adjust walk_non_aliased_vuses call.
1260         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1261         make sure we do not leak memory.
1262
1263 2009-05-25  Richard Guenther  <rguenther@suse.de>
1264
1265         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1266         * tree-inline.c (expand_call_inline): Reset the escaped and
1267         callused solutions.
1268         * tree-ssa-structalias.c (pass_build_ealias): New.
1269         * tree-pass.h (pass_build_ealias): Declare.
1270         * passes.c (init_optimization_passes): Add PTA during 
1271         early optimizations.
1272         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1273         and CALLUSED solutions.
1274         (dump_points_to_solution): New function, split out from ...
1275         (dump_points_to_info_for): ... here.
1276         * tree-parloops.c (parallelize_loops): Reset the escaped and
1277         callused solutions.
1278
1279 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1280
1281         PR bootstrap/40027
1282         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1283         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1284
1285 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1286
1287         PR tree-optimization/40238
1288         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1289         statements after basic block's labels.
1290         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1291         to free the allocated memory.
1292
1293 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1294
1295         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1296         return address with a USE.
1297
1298 2009-05-24  Richard Guenther  <rguenther@suse.de>
1299
1300         PR middle-end/40233
1301         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1302         array type from the main variant of the inner type.
1303
1304 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1305
1306         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1307         definition to bool (from int) to un-break build.
1308         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1309
1310 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1311
1312         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1313         discard_stmt_changes): Delete.
1314         * tree-ssa-operands.c (scb_stack): Delete.
1315         (init_ssa_operands): Do not initialize it.
1316         (fini_ssa_operands): Do not free it.
1317         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1318
1319         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1320         update_stmt, remove the others.  Fix comments.
1321         * tree-dfa.c (optimize_stack_restore): Likewise.
1322         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1323         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1324         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1325         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1326         Likewise.
1327         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1328         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1329         (dom_opt_finalize_block): Likewise, adjusting access to
1330         stmts_to_rescan.
1331         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1332         (stmts_to_rescan): Change item type to gimple.
1333         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1334
1335 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1336
1337         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1338         * tree-pass.h (pass_slp_vectorize): New pass.
1339         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1340         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1341         * tree-vectorizer.c (timevar.h): Include.
1342         (user_vect_verbosity_level): Declare.
1343         (vect_location): Fix comment.
1344         (vect_set_verbosity_level): Update user_vect_verbosity_level
1345         instead of vect_verbosity_level.
1346         (vect_set_dump_settings): Add an argument. Ignore user defined
1347         verbosity if dump flags require higher level of verbosity. Print to
1348         stderr only for loop vectorization.
1349         (vectorize_loops): Update call to vect_set_dump_settings.
1350         (execute_vect_slp): New function.
1351         (gate_vect_slp): Likewise.
1352         (struct gimple_opt_pass pass_slp_vectorize): New.
1353         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1354         access its members.
1355         (vec_info_for_bb): New function.
1356         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1357         (VECTORIZATION_ENABLED): New macro.
1358         (SLP_ENABLED, SLP_DISABLED): Likewise.
1359         (vect_is_simple_use): Add bb_vec_info argument.
1360         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1361         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1362         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1363         vect_schedule_slp, vect_analyze_slp): Likewise.
1364         (vect_analyze_stmt): Add slp_tree argument.
1365         (find_bb_location): Declare.
1366         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1367         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1368         (vect_analyze_loop_operations, vect_analyze_loop,
1369         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1370         vect_finalize_reduction, vectorizable_reduction,
1371         vectorizable_live_operation, vect_transform_loop): Likewise.
1372         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1373         skip evolution analysis if analyzing a basic block.
1374         (dr_analyze_indices): Likewise.
1375         (initialize_data_dependence_relation): Skip the test whether the
1376         object is invariant for basic blocks.
1377         (compute_all_dependences): Skip dependence analysis for data
1378         references in basic blocks.
1379         (find_data_references_in_stmt): Don't fail in case of invariant
1380         access in basic block.
1381         (find_data_references_in_bb): New function.
1382         (find_data_references_in_loop): Move code to
1383         find_data_references_in_bb and add a call to it.
1384         (compute_data_dependences_for_bb): New function.
1385         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1386         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1387         that STEP is 0.
1388         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1389         unknown dependence in basic block and fail in case of dependence in
1390         basic block.
1391         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1392         dependence instances from either loop or basic block vectorization
1393         info.
1394         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1395         before calling nested_in_vect_loop_p.
1396         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1397         dependence instances from either loop or basic block vectorization
1398         info.
1399         (vect_verify_datarefs_alignment): Likewise.
1400         (vect_enhance_data_refs_alignment): Adjust function calls.
1401         (vect_analyze_data_refs_alignment): Likewise.
1402         (vect_analyze_group_access): Fix printing. Skip different checks if
1403         DR_STEP is 0. Keep strided stores either in loop or basic block
1404         vectorization data structure. Fix indentation.
1405         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1406         basic blocks.
1407         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1408         dependence instances from either loop or basic block vectorization
1409         info.
1410         (vect_analyze_data_refs): Update comment. Call
1411         compute_data_dependences_for_bb to analyze basic blocks.
1412         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1413         case of loop vectorization. In case of basic block vectorization use
1414         data-ref itself as a base.
1415         (vect_create_data_ref_ptr): In case of basic block vectorization:
1416         don't advance the pointer, add new statements before the current
1417         statement.  Adjust function calls.
1418         (vect_supportable_dr_alignment): Support only aligned accesses in
1419         basic block vectorization.
1420         * common.opt (ftree-slp-vectorize): New flag.
1421         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1422         (vect_pattern_recog_1): Likewise.
1423         * tree-vect-stmts.c (process_use): Likewise.
1424         (vect_init_vector): Add new statements in the beginning of the basic
1425         block in case of basic block SLP.
1426         (vect_get_vec_def_for_operand): Adjust function calls.
1427         (vect_finish_stmt_generation): Likewise.
1428         (vectorizable_call): Add assert that it is loop vectorization, adjust
1429         function calls.
1430         (vectorizable_conversion, vectorizable_assignment): Likewise.
1431         (vectorizable_operation): In case of basic block SLP, take
1432         vectorization factor from statement's type and skip the relevance
1433         check. Adjust function calls.
1434         (vectorizable_type_demotion): Add assert that it is loop
1435         vectorization, adjust function calls.
1436         (vectorizable_type_promotion): Likewise.
1437         (vectorizable_store): Check for outer loop only in case of loop
1438         vectorization. Adjust function calls. For basic blocks, skip the
1439         relevance check and don't advance pointers.
1440         (vectorizable_load): Likewise.
1441         (vectorizable_condition): Add assert that it is loop vectorization,
1442         adjust function calls.
1443         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1444         that it is not reduction, get vector type, call only supported
1445         functions, skip loop specific parts.
1446         (vect_transform_stmt): Check for outer loop only in case of loop
1447         vectorization.
1448         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1449         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1450         for external definition.
1451         * passes.c (pass_slp_vectorize): New pass.
1452         * tree-vect-slp.c (find_bb_location): New function.
1453         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1454         check for patterns only in loops.
1455         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1456         case of multiple types in basic block SLP.
1457         (vect_mark_slp_stmts_relevant): New function.
1458         (vect_supported_load_permutation_p): Fix comment.
1459         (vect_analyze_slp_instance): Add argument. In case of basic block
1460         SLP, take vectorization factor from statement's type, check that
1461         unrolling factor is 1. Adjust function call. Save SLP instance in
1462         either loop or basic block vectorization structure. Return FALSE,
1463         if SLP failed.
1464         (vect_analyze_slp): Add argument. Get strided stores groups from
1465         either loop or basic block vectorization structure. Return FALSE
1466         if basic block SLP failed.
1467         (new_bb_vec_info): New function.
1468         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1469         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1470         (vect_schedule_slp): Add argument. Get SLP instances from either
1471         loop or basic block vectorization structure. Set vectorization factor
1472         to be 1 for basic block SLP.
1473         (vect_slp_transform_bb): New function.
1474         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1475
1476 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1477
1478         * final.c (shorten_branches): Do not align labels for jump tables.
1479         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1480
1481 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1482
1483         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1484         Remove outdated reference to flow.c and fix nits.
1485         * doc/gccint.texi: Tweak RTL description.
1486         * doc/rtl.texi: Likewise.
1487
1488 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1489
1490         * config/avr/avr.c: Change my email address.
1491         * config/avr/avr.h: Likewise.
1492         * config/avr/avr.md: Likewise.
1493         * config/avr/avr-protos.h: Likewise.
1494         * config/avr/libgcc.S: Likewise.
1495
1496 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1497
1498         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1499         (spu_split_load, spu_split_store): Change return type to int.
1500         (spu_split_convert): Declare.
1501         * config/spu/predicates.md (spu_mem_operand): Remove.
1502         (spu_mov_operand): Update.
1503         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1504         * config/spu/spu.c (regno_aligned_for_load): Remove.
1505         (reg_aligned_for_addr, spu_expand_load): Define.
1506         (spu_expand_extv): Reimplement and handle MEM.
1507         (spu_expand_insv): Handle MEM.
1508         (spu_sched_reorder): Handle insn's with length 0.
1509         (spu_legitimate_address_p): Reimplement.
1510         (store_with_one_insn_p): Return TRUE for any mode with size
1511         larger than 16 bytes.
1512         (address_needs_split): Define.
1513         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1514         operands.
1515         (spu_convert_move): Define.
1516         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1517         (spu_split_store): Change all MEM's to TImode.
1518         (spu_init_expanders): Preallocate registers that correspond to
1519         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1520         mark_reg_pointer.
1521         (spu_split_convert): Define.
1522         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1523         (_move<mode>, _movdi, _movti): Update predicate and condition.
1524         (load, store): Change to define_split.
1525         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1526         extend<mode>ti2.
1527         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1528         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1529         define_insn_and_split of lshr<mode>3.
1530         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1531         (<v>ashr<mode>3_imm): Define.
1532         (extv, extzv, insv): Allow MEM operands.
1533         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1534         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1535         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1536         (_spu_convert2): Change to define_insn_and_split and remove the
1537         corresponding define_peephole2.
1538         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1539         Change predicates to memory_operand.
1540
1541 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1542
1543         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1544
1545 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1546
1547         PR tree-optimization/40219
1548         * tree.c (iterative_hash_expr): Make sure the builtin function is
1549         a normal builtin function and not a front end or back end builtin
1550         before indexing into the built_in_decls array.
1551
1552 2009-05-22  Richard Guenther  <rguenther@suse.de>
1553
1554         PR middle-end/38964
1555         * alias.c (write_dependence_p): Do not use TBAA for answering
1556         anti-dependence or output-dependence.
1557         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1558         (emit_pointer_definition): Remove.
1559         (emit_alias_warning): Likewise.
1560         (find_what_var_points_to): Remove TBAA pruning code.
1561         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1562         violations.
1563         (compute_points_to_sets): Remove code computing the set of
1564         dereferenced pointers.
1565         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1566         oracle for querying anti and output dependencies.
1567         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1568         if TBAA may be applied.
1569         (refs_anti_dependent_p): New function.
1570         (refs_output_dependent_p): Likewise.
1571         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1572         (refs_output_dependent_p): Likewise.
1573         * doc/tree-ssa.texi (Memory model): New section.
1574         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1575         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1576         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1577         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1578         * expr.c (expand_expr_real_1): Likewise.
1579         * gimple-low.c (lower_stmt): Likewise.
1580         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1581         (dump_gimple_cdt): Remove.
1582         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1583         (gimple_size): Likewise.
1584         (walk_gimple_op): Likewise.
1585         (is_gimple_stmt): Likewise.
1586         (walk_stmt_load_store_addr_ops): Likewise.
1587         (gimple_build_cdt): Remove.
1588         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1589         * gimple.h (gimple_cdt_new_type): Remove.
1590         (gimple_cdt_new_type_ptr): Likewise.
1591         (gimple_cdt_set_new_type): Likewise.
1592         (gimple_cdt_location): Likewise.
1593         (gimple_cdt_location_ptr): Likewise.
1594         (gimple_cdt_set_location): Likewise.
1595         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1596         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1597         GIMPLE_CHANGE_DYNAMIC_TYPE.
1598         (verify_types_in_gimple_stmt): Likewise.
1599         * tree-inline.c (estimate_num_insns): Likewise.
1600         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1601         (copy_decl_to_var): Likewise.
1602         (copy_result_decl_to_var): Likewise.
1603         * tree-pretty-print.c (dump_generic_node): Do not handle
1604         CHANGE_DYNAMIC_TYPE_EXPR.
1605         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1606         * tree-ssa-operands.c (get_expr_operands): Likewise.
1607         * tree-ssa-structalias.c (struct variable_info): Remove
1608         no_tbaa_pruning member.
1609         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1610         (unify_nodes): Do not copy it.
1611         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1612         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1613         (set_uids_in_ptset): Do not check it.
1614         (find_what_var_points_to): Likewise.
1615         (compute_tbaa_pruning): Remove.
1616         (compute_points_to_sets): Do not call it.
1617         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1618         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1619         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1620         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1621         (DECL_NO_TBAA_P): Likewise.
1622         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1623         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1624         (expand_omp_atomic_pipeline): Do not set it.
1625         * print-tree.c (print_node): Do not dump it.
1626         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1627         redundant check.
1628
1629 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1630
1631         PR target/39856
1632         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1633         for clobber.
1634
1635 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1636
1637         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1638         non-external.
1639
1640 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1641
1642         * Makefile.in (bversion.h, s-bversion): New targets.
1643         (TOPLEV_H): Add bversion.h.
1644         * toplev.h: Include "bversion.h".
1645         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1646         the __format__ attribute only if compiling with the same version
1647         of GCC as the sources (the "build version").
1648
1649 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1650
1651         * c-format.c (handle_format_attribute): Fix comment typo.
1652
1653 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1654
1655         PR target/37846
1656         * config/ia64/ia64.opt (mfused-madd): New.
1657         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1658         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1659         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1660         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1661         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1662         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1663         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1664         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1665         instruction if !TARGET_FUSED_MADD.
1666         (fpma, fpms): Remove colon from name.
1667
1668 2009-05-22  Richard Guenther  <rguenther@suse.de>
1669
1670         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1671         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1672         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1673         TARGET_MEM_REF.
1674         (create_expression_by_pieces): Only convert if necessary.
1675         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1676         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1677
1678 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1679
1680         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1681         regular pattern from a template and rename it ...
1682         (*extzv_truncsi_exts): ... to this.
1683
1684 2009-05-21  Richard Guenther  <rguenther@suse.de>
1685
1686         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1687         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1688         (cgraph_default_inline_p): Likewise.
1689         (cgraph_decide_inlining_incrementally): Likewise.
1690
1691 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1692             Uros Bizjak  <ubizjak@gmail.com>
1693
1694         * config/i386/cpuid.h (bit_MOVBE): New.
1695
1696         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1697
1698         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1699         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1700         (ix86_handle_option): Handle OPT_mmovbe.
1701         (ix86_target_string): Add -mmovbe.
1702         (pta_flags): Add PTA_MOVBE.
1703         (processor_alias_table): Add PTA_MOVBE to "atom".
1704         (override_options): Handle PTA_MOVBE.
1705
1706         * config/i386/i386.h (TARGET_MOVBE): New.
1707
1708         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1709         (*bswapsi_movbe): New.
1710         (*bswapdi_movbe): Likewise.
1711         (bswapdi2): Renamed to ...
1712         (*bswapdi_1): This.
1713         (bswapdi2): New expander.
1714
1715         * config/i386/i386.opt (mmovbe): New.
1716
1717         * doc/invoke.texi: Document -mmovbe.
1718
1719 2009-05-21  Taras Glek  <tglek@mozilla.com>
1720
1721         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1722         * gcc-plugin.h (plugin_init): Updated signature.
1723         * gcc-plugin.h (plugin_name_args): Moved to this header.
1724         * doc/plugins.texi (plugin_init): Updated documention to reflect
1725         API change.
1726         * doc/plugins.texi (plugin_name_args): Added to documention.
1727
1728 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1729
1730         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1731         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1732
1733 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1734
1735         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1736         JUMP_TABLE_DATA_P predicates where applicable.
1737         * config/i386/predicates.md: Ditto.
1738         * config/i386/sse.md: Ditto.
1739
1740 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1741
1742         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1743         operand2 -128 override length_immediate attribute to 1.
1744         * config/i386/predicates.md (constm128_operand): New predicate.
1745
1746         * config/i386/i386.c (memory_address_length): Handle %r12
1747         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1748         also check REGNO.
1749         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1750         mode look through optional ZERO_EXTEND and SUBREG.
1751         * config/i386/i386.md (R12_REG): New define_constant.
1752         (prefix_data16): For sse unit set also for MODE_TI insns.
1753         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1754         insns set if operand 1 is ext_QIreg_operand.
1755         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1756         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1757         immediate.
1758         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1759         mode from MODE_DI to MODE_SI.
1760         (movdi_1_rex64): Override modrm and length_immediate attributes
1761         only for movabs (TYPE_IMOV, alternative 2).
1762         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1763         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1764         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1765         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1766         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1767         prefix_rex attribute if DImode.
1768         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1769         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1770         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1771         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1772         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1773         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1774         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1775         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1776         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1777         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1778         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1779         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1780         or one operand TYPE_ISHIFT.
1781         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1782         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1783         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1784         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1785         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1786         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1787         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1788         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1789         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1790         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1791         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1792         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1793         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1794         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1795         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1796         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1797         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1798         set mode attribute, don't override length attribute.
1799         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1800         to 1.
1801         (return_internal_long): Set length attribute to 2 instead of 1.
1802         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1803         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1804         prefix_rex attribute.
1805         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1806         New predicates.
1807         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1808
1809 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1810
1811         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1812
1813 2009-05-20  Ian Lance Taylor  <iant@google.com>
1814
1815         * tree.c (build_tree_list_vec_stat): New function.
1816         (ctor_to_vec): New function.
1817         (build_nt_call_vec): New function.
1818         (build_call_array): Change args to be a const pointer.
1819         (build_call_vec): New function.
1820         * tree.h (build_nt_call_vec): Declare.
1821         (build_tree_list_vec_stat): Declare.
1822         (build_tree_list_vec): Define.
1823         (build_call_array): Update declaration.
1824         (build_call_vec): Declare.
1825         (ctor_to_vec): Declare.
1826         * c-common.c (tree_vector_cache): New static variable.
1827         (make_tree_vector): New function.
1828         (release_tree_vector): New function.
1829         (make_tree_vector_single): New function.
1830         (make_tree_vector_copy): New function.
1831         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1832         (make_tree_vector_single, make_tree_vector_copy): Declare.
1833         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1834         (c_parser_expr_list): Don't manage cache here, instead call
1835         make_tree_vector.
1836         (c_parser_release_expr_list): Remove static function.
1837         (c_parser_vec_to_tree_list): Remove static function.
1838         (c_parser_attributes): Call build_tree_list_vec instead of
1839         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1840         c_parser_release_expr_list.
1841         (c_parser_postfix_expression_after_primary): Likewise.
1842         (c_parser_objc_keywordexpr): Likewise.
1843
1844 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1845
1846         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1847         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1848         TARGET_CONVERT_TO_TYPE.
1849         * hooks.c (hook_tree_const_tree_null): Define.
1850         * hooks.h (hook_tree_const_tree_null): Declare.
1851         * target.h (struct gcc_target):  Add invalid_parameter_type,
1852         invalid_return_type, promoted_type, and convert_to_type fields.
1853         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1854         (TARGET_INVALID_RETURN_TYPE): Define.
1855         (TARGET_PROMOTED_TYPE): Define.
1856         (TARGET_CONVERT_TO_TYPE): Define.
1857         (TARGET_INITIALIZER): Update for new fields.
1858         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1859         (grokparms): Check targetm.invalid_parameter_type.
1860         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1861         * c-convert.c (convert): Check targetm.convert_to_type.
1862
1863 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1864
1865         * config/mips/mips.md (*extenddi_truncate<mode>,
1866         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1867         defintions.
1868         (*extendhi_truncateqi): New define_insn_and_sptit.
1869
1870 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1871
1872         PR middle-end/40204
1873         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1874         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1875
1876 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1877
1878         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1879         the operand of VIEW_CONVERT_EXPR.
1880
1881 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1882
1883         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1884         extended family and model for Intel processors.  Support Intel Atom.
1885
1886 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1887
1888         * gstab.h (stab_code_type): Define, to be used instead of the
1889         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1890         notice.
1891         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1892         occurrences by stab_code_type.
1893         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1894
1895 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1896
1897         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1898         (sra_insert_before): Likewise.
1899         (sra_insert_after): Likewise.
1900         (sra_init_cache): Likewise.
1901         (sra_type_can_be_decomposed_p): Likewise.
1902         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1903         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1904         (sra_insert_before): Likewise.
1905         (sra_insert_after): Likewise.
1906         (sra_init_cache): Likewise.
1907         (insert_edge_copies_seq): Made static and moved upwards.
1908
1909         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1910         case.
1911
1912         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1913
1914         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1915         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1916         simple copies.
1917
1918 2009-05-20  Richard Guenther  <rguenther@suse.de>
1919
1920         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1921         with mismatched comparison modes.
1922
1923 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1924
1925         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1926         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1927         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1928         with shifts for Thumb2.
1929         (orsi_notsi): New for orn.
1930         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1931         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1932         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1933         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1934         Don't invert remainder for IOR.
1935         
1936 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1937
1938         PR tree-optimization/40087
1939         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1940         number_of_iterations_ne): Rename never_infinite argument.
1941         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1942         number_of_iterations_le): Handle pointer-type ivs when
1943         exit_must_be_taken is false.
1944         (number_of_iterations_cond):  Do not always assume that
1945         exit_must_be_taken if the control variable is a pointer.
1946
1947 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1948
1949         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1950         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1951
1952 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1953
1954         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1955         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1956
1957 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1958
1959         PR c/40172
1960         * c.opt (Wlogical-op): Disabled by default.
1961         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1962         Wextra.
1963         * doc/invoke.texi (Wlogical-op): Likewise.
1964         
1965 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1966
1967         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1968         into CASE_CONVERT.
1969         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1970         Propagate the type of the first operand.
1971         <ASSERT_EXPR>: Simplify.
1972         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1973         Rewrite using the RHS code as discriminant.
1974         <NOP_EXPR>: Turn into CASE_CONVERT.
1975         <PLUS_EXPR>: Propagate the type of the first operand.
1976
1977 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1978
1979         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1980         (ia64_dconst_0_375): New.
1981         * config/ia64/ia64.c (ia64_override_options): Remove
1982         -minline-sqrt-min-latency warning.
1983         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1984         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1985         * config/ia64/ia64.md (*sqrt_approx): Remove.
1986         (sqrtsf2): Remove #if 0.
1987         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1988         (sqrtdf): Remove assert.
1989         (sqrtdf2_internal_thr): Rewrite and move to div.md.
1990         (sqrtxf2): Remove #if 0.
1991         (sqrtxf2_internal_thr): Rewrite and move to div.md.
1992         * div.md (sqrt_approx_rf): New.
1993         (sqrtsf2_internal_thr): New implementation.
1994         (sqrtsf2_internal_lat): New.
1995         (sqrtdf2_internal_thr: New implementation.
1996         (sqrtxf2_internal): New implementation.
1997
1998 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1999             Hans-Peter Nilsson  <hp@axis.com>
2000
2001         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2002         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2003         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2004         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2005         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2006         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2007         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2008         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2009         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2010         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2011         * c-common.c: ...from here.
2012
2013 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2014
2015         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2016
2017 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2018
2019         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2020
2021 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2022
2023         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2024         assignments with memcpy calls.
2025         (add_fdes): Likewise.
2026         (binary_search_unencoded_fdes): Likewise.
2027         (linear_search_fdes): Eliminate type puns.
2028         
2029 2009-05-19  Richard Guenther  <rguenther@suse.de>
2030
2031         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2032         not falsely claim to have propagated into all uses.
2033
2034 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2035
2036         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2037         version to v3.0.
2038
2039 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2040
2041         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2042         * config/sh/sh.c (sh_legitimate_address_p): Make static.
2043         (TARGET_LEGITIMATE_ADDRESS_P): New.
2044         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2045         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2046         
2047 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
2048
2049         PR debug/40109
2050         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
2051         child of the containing namespace's DIE.
2052
2053 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
2054
2055         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
2056         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
2057         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
2058         extend patterns.
2059
2060 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2061
2062         PR target/39942
2063         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
2064         gen_align with gen_pad.
2065         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
2066         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
2067
2068         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
2069         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
2070
2071         * config/i386/i386.md (align): Renamed to ...
2072         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
2073         ASM_OUTPUT_MAX_SKIP_PAD.
2074
2075 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
2076
2077         * config.gcc: Fix variable syntax.
2078
2079         PR target/39531
2080         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
2081         before calling exact_log2.
2082         (output_iorsi3): Likewise.
2083         (output_xorsi3): Likewise.
2084
2085 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2086
2087         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
2088         for the none zero constant operand except for EQ and NE
2089         comprisons even when the first operand is R0.
2090
2091 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2092
2093         * config/s390/2064.md: Remove trailing whitespaces.
2094         * config/s390/2084.md: Likewise.
2095         * config/s390/constraints.md: Likewise.
2096         * config/s390/fixdfdi.h: Likewise.
2097         * config/s390/libgcc-glibc.ver: Likewise.
2098         * config/s390/s390-modes.def: Likewise.
2099         * config/s390/s390-protos.h: Likewise.
2100         * config/s390/s390.c: Likewise.
2101         * config/s390/s390.h: Likewise.
2102         * config/s390/s390.md: Likewise.
2103         * config/s390/tpf-unwind.h: Likewise.
2104
2105 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2106
2107         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2108
2109 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2110
2111         M68K TLS support.
2112         * configure.ac (m68k-*-*): Check if binutils support TLS.
2113         * configure: Regenerate.
2114         * config/m68k/predicates.md (symbolic_operand): Extend comment.
2115         * config/m68k/constraints.md (Cu): New constraint.
2116         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2117         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2118         (movsi): Handle TLS symbols.
2119         (addsi3_5200): Handle XTLS symbols, indent.
2120         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2121         (m68k_tls_reference_p): Declare.
2122         (m68k_legitimize_address): Declare.
2123         (m68k_unwrap_symbol): Declare.
2124         * config/m68k/m68k.opt (mxtls): New option.
2125         * config/m68k/m68k.c (ggc.h): Include.
2126         (m68k_output_dwarf_dtprel): Implement hook.
2127         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2128         (m68k_expand_prologue): Load GOT pointer when function needs it.
2129         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2130         (m68k_legitimate_constant_address_p): Same.
2131         (m68k_decompose_address): Handle TLS references.
2132         (m68k_get_gp): New static function.
2133         (enum m68k_reloc): New contants.
2134         (TLS_RELOC_P): New macro.
2135         (m68k_wrap_symbol): New static function.
2136         (m68k_unwrap_symbol): New function.
2137         (m68k_final_prescan_insn_1): New static function.
2138         (m68k_final_prescan_insn): New function.
2139         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2140         functions.
2141         (legitimize_pic_address): Handle TLS references..
2142         (m68k_tls_get_addr, m68k_get_tls_get_addr)
2143         (m68k_libcall_value_in_a0_p)
2144         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2145         (m68k_call_m68k_read_tp): Helper variables and functions for ...
2146         (m68k_legitimize_tls_address): Handle TLS references.
2147         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2148         New functions.
2149         (m68k_legitimize_address): Handle TLS symbols.
2150         (m68k_get_reloc_decoration): New static function.
2151         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2152         UNSPEC_RELOC32.
2153         (m68k_output_dwarf_dtprel): Implement hook.
2154         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2155         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2156         m68k_call_* routines.
2157         (sched_attr_op_type): Handle TLS symbols.
2158         (gt-m68k.h): Include.
2159         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2160         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2161
2162 2009-05-18  Martin Jambor  <mjambor@suse.cz>
2163
2164         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2165         (visit_store_addr_for_mod_analysis): New function.
2166         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2167         (determine_cst_member_ptr): Use gimple_assign_single_p.
2168         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2169         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2170         operands.  Don't check number of operands of a NOP_EXPR.
2171
2172 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2173
2174         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2175
2176 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2177
2178         PR c/40172
2179         * c-common.c (warn_logical_operator): Don't warn if one of
2180         expression isn't always true or false.
2181
2182 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2183
2184         * config/i386/biarch32.h: New file.
2185         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2186
2187 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2188
2189         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2190         *zero_extend<mode>_truncqi): Merge these into ...
2191         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2192         Name the pattern following this as *zero_extendhi_truncqi.
2193
2194 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2195
2196         PR middle-end/39301
2197         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2198         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2199         (output_info): Make field HOST_WIDEST_INT.
2200         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2201         (dump_bitmat_statistics): Same.
2202
2203 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2204
2205         * config.gcc (use_gcc_stdint):  Set to wrap.
2206         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2207         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2208         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2209         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2210         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2211         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2212         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2213         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2214
2215 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2216
2217         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2218         tune_64.
2219         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2220         Move definitions earlier.
2221         (OPT_ARCH64, OPT_ARCH32): Define.
2222         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2223         and tune_64.
2224
2225 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2226
2227         PR target/40153
2228         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2229         implies.
2230
2231 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2232
2233         * arm.md (movdi2): Copy non-reg values to DImode registers.
2234
2235 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2236
2237         PR target/39942
2238         * final.c (label_to_max_skip): New function.
2239         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2240         CODE_LABEL_NUMBER <= max_labelno.
2241         * output.h (label_to_max_skip): New prototype.
2242         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2243         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2244         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2245         Handle CODE_LABELs with >= 16 byte alignment or with
2246         max_skip == (1 << align) - 1.
2247         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2248         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2249
2250         PR target/39942
2251         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2252         .p2align 3 if MAX_SKIP is smaller than 7.
2253         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2254
2255 2009-05-15  Ian Lance Taylor  <iant@google.com>
2256
2257         * alias.c (struct alias_set_entry_d): Rename from struct
2258         alias_set_entry.  Change all uses.
2259         * except.c (struct call_site_record_d): Rename from struct
2260         call_site_record.  Change all uses.
2261         * except.h (struct eh_region_d): Rename from struct eh_region.
2262         Change all uses.
2263         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2264         Change all uses.
2265         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2266         ivtype_map_elt.  Change all uses.
2267         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2268         Change all uses.
2269         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2270         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2271         Change all uses.
2272         (struct sese_d): Rename from struct sese.  Change all uses.
2273         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2274         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2275         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2276         uses.
2277         (struct convert_optab_d): Rename from struct convert_optab.
2278         Change all uses.
2279         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2280         ipa_opt_pass.  Change all uses.
2281         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2282         all uses.
2283
2284         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2285         defined as a typedef.
2286         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2287         defined as a tag.
2288
2289 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2290
2291         PR 16302
2292         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2293         declaration to...
2294         (merge_ranges): Returns bool. 
2295         * tree.h (make_range): .. to here.
2296         (build_range_check): Likewise.
2297         (merge_ranges): Likewise. Renamed from merge_ranges.
2298         * c-typeck.c (parser_build_binary_op): Update calls to
2299         warn_logical_operator.
2300         * c-common.c (warn_logical_operator): Add new warning.
2301         * c-common.h (warn_logical_operator): Update declaration.
2302         
2303 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2304
2305         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2306         
2307 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2308
2309         * doc/install.texi: Document MPC requirements, flags etc.
2310
2311         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2312         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2313         Evaluate constant arguments.
2314         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2315         (fold_builtin_1): Likewise, also evaluate constant arguments.
2316         Remove superfluous break.
2317         (do_mpc_ckconv): New.
2318         * real.h: Include mpc.h.
2319         * toplev.c (print_version): Output MPC version info if available.
2320
2321 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2322
2323         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2324
2325 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2326
2327         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2328         only once.
2329
2330 2009-05-15  Jan Hubicka  <jh@suse.cz>
2331
2332         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2333         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2334         (try_inline): Fix return value.
2335         (cgraph_decide_inlining_incrementally): Honor new value.
2336         (cgraph_early_inlining): Handle indirect inlining.
2337         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2338
2339 2009-05-15  Jan Hubicka  <jh@suse.cz>
2340
2341         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2342         * cgraphunit.c (cgraph_finalize_function): Set it.
2343         (cgraph_expand_function): Use it.
2344
2345 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2346
2347         * real.c (encode_ieee_half): Define.
2348         (decode_ieee_half): Define.
2349         (ieee_half_format): Define.
2350         (arm_half_format): Define.
2351         * real.h (ieee_half_format): Declare.
2352         (arm_half_format): Declare.
2353
2354 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2355
2356         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2357         swapped, and reversed optabs exist before trying to use them.
2358
2359 2009-05-15  Paul Brook  <paul@codesourcery.com>
2360             Sandra Loosemore  <sandra@codesourcery.com>
2361
2362         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2363         loads.  Allow PRE_DEC.
2364         (output_move_neon): Handle PRE_DEC.
2365         (arm_print_operand): Add 'A' for neon structure loads.
2366         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2367         * config/arm/neon.md (neon_mov): Update comment.
2368         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2369         calls.
2370         (Um): New constraint.
2371
2372 2009-05-15  Jan Hubicka  <jh@suse.cz>
2373
2374         Revert the following patch until testsuite fallout is fixed:
2375         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2376         * cgraph.h (struct inline_summary): New filed self_wize,
2377         size_inlining_benefit, self_time and time_inlining_benefit.
2378         (struct cgraph_global_info): Replace insns by time ans size fields.
2379         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2380         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2381         (ipcp_update_callgraph): Do not touch function bodies.
2382         * ipa-inline.c: Include except.h
2383         (MAX_TIME): New constant.
2384         (overall_insns): Remove
2385         (overall_size, max_benefit): New static variables.
2386         (cgraph_estimate_time_after_inlining): New function.
2387         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2388         (cgraph_clone_inlined_nodes): Update size.
2389         (cgraph_mark_inline_edge): Update size.
2390         (cgraph_estimate_growth): Use size info.
2391         (cgraph_check_inline_limits): Check size.
2392         (cgraph_default_inline_p): Likewise.
2393         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2394         (cgraph_decide_recursive_inlining): Check size.
2395         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2396         and times.
2397         (cgraph_decide_inlining): Likewise.
2398         (cgraph_decide_inlining_incrementally): Likewise; honor
2399         PARAM_EARLY_INLINING_INSNS.
2400         (likely_eliminated_by_inlining_p): New predicate.
2401         (estimate_function_body_sizes): New function.
2402         (compute_inline_parameters): Use it.
2403         * except.c (must_not_throw_labels): New function.
2404         * except.h (must_not_throw_labels): Declare.
2405         * tree-inline.c (init_inline_once): Kill inlining_weigths
2406         * tree-ssa-structalias.c: Avoid uninitialized warning.
2407         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2408         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2409         (PARAM_INLINE_CALL_COST): Remove.
2410         (PARAM_EARLY_INLINING_INSNS): New.
2411
2412 2009-05-15  Richard Guenther  <rguenther@suse.de>
2413
2414         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2415         not TODO_update_ssa.
2416
2417 2009-05-15  Richard Guenther  <rguenther@suse.de>
2418
2419         PR tree-optimization/39999
2420         * gimple.h (gimple_expr_type): Use the expression type looking
2421         through useless conversions.
2422         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2423         (vn_nary_op_insert_stmt): Likewise.
2424         (simplify_binary_expression): Likewise.
2425
2426 2009-05-15  Richard Guenther  <rguenther@suse.de>
2427
2428         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2429         New options, enabled by default.
2430         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2431         Document.
2432         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2433         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2434         * tree-ssa-structalias.c (gate_tree_pta): New function.
2435         (pass_build_alias): Use it.
2436
2437 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2438
2439         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2440         recurse on an invariant address if a conversion from a pointer
2441         type to a wider integer type is involved.
2442
2443 2009-05-15  Jan Hubicka  <jh@suse.cz>
2444
2445         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2446         * cgraph.h (struct inline_summary): New filed self_wize,
2447         size_inlining_benefit, self_time and time_inlining_benefit.
2448         (struct cgraph_global_info): Replace insns by time ans size fields.
2449         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2450         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2451         (ipcp_update_callgraph): Do not touch function bodies.
2452         * ipa-inline.c: Include except.h
2453         (MAX_TIME): New constant.
2454         (overall_insns): Remove
2455         (overall_size, max_benefit): New static variables.
2456         (cgraph_estimate_time_after_inlining): New function.
2457         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2458         (cgraph_clone_inlined_nodes): Update size.
2459         (cgraph_mark_inline_edge): Update size.
2460         (cgraph_estimate_growth): Use size info.
2461         (cgraph_check_inline_limits): Check size.
2462         (cgraph_default_inline_p): Likewise.
2463         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2464         (cgraph_decide_recursive_inlining): Check size.
2465         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2466         and times.
2467         (cgraph_decide_inlining): Likewise.
2468         (cgraph_decide_inlining_incrementally): Likewise; honor
2469         PARAM_EARLY_INLINING_INSNS.
2470         (likely_eliminated_by_inlining_p): New predicate.
2471         (estimate_function_body_sizes): New function.
2472         (compute_inline_parameters): Use it.
2473         * except.c (must_not_throw_labels): New function.
2474         * except.h (must_not_throw_labels): Declare.
2475         * tree-inline.c (init_inline_once): Kill inlining_weigths
2476         * tree-ssa-structalias.c: Avoid uninitialized warning.
2477         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2478         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2479         (PARAM_INLINE_CALL_COST): Remove.
2480         (PARAM_EARLY_INLINING_INSNS): New.
2481         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2482         (inline-call-cost): Remove.
2483         (early-inlining-insns): New.
2484
2485 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2486
2487         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2488         for bounds.
2489         (print_int_cst_bounds_in_octal_p): Likewise.
2490         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2491         with subtypes.
2492         * dwarf2out.c (base_type_die): Likewise.
2493         (is_subrange_type): Delete.
2494         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2495         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2496         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
2497         if the destination type is boolean.
2498         (build_range_check): Do not special-case subtypes.
2499         (fold_sign_changed_comparison): Likewise.
2500         (fold_unary): Likewise.
2501         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2502         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2503         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2504         * tree.c (subrange_type_for_debug_p): New predicate based on the
2505         former is_subrange_type.
2506         * tree.h (subrange_type_for_debug_p): Declare.
2507         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2508         (convert_affine_scev): Remove call to above function.
2509         (chrec_convert_aggressive): Likewise.
2510         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2511         false for conversions involving subtypes.
2512         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2513         (vrp_val_min): Likewise.
2514         (needs_overflow_infinity): Likewise.
2515         (extract_range_from_unary_expr): Likewise.
2516
2517 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2518
2519         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2520         * config/frv/frv.c: Likewise.
2521         * config/s390/s390.c: Likewise.
2522         * config/sparc/sparc.h: Likewise.
2523         * config/i386/i386.h: Likewise.
2524         * config/i386/i386.c: Likewise.
2525         * config/crx/crx.c: Likewise.
2526         * config/m68hc11/m68hc11.h: Likewise.
2527         * config/iq2000/iq2000.c: Likewise.
2528         * config/mn10300/mn10300.h: Likewise.
2529         * config/mn10300/mn10300.c: Likewise.
2530         * config/m68k/m68k.c: Likewise.
2531         * config/rs6000/rs6000.c: Likewise.
2532         * config/rs6000/xcoff.h: Likewise.
2533         * config/rs6000/linux64.h: Likewise.
2534         * config/rs6000/sysv4.h: Likewise.
2535         * config/score/score3.c: Likewise.
2536         * config/score/score7.c: Likewise.
2537         * config/score/score.c: Likewise.
2538         * config/arm/arm.md: Likewise.
2539         * config/mips/mips.c: Likewise.
2540         * config/mips/mips.md: Likewise.
2541         * config/bfin/bfin.h: Likewise.
2542         * config/pa/pa.c: Likewise.
2543         * config/pa/constraints.md: Likewise.
2544
2545         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2546         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2547         * config/pdp11/pdp11.h: Use memory_address_p instead.
2548
2549 2009-05-14  Ian Lance Taylor  <iant@google.com>
2550
2551         * passes.c (finish_optimization_passes): Change i to int.
2552         * plugin.c (plugins_active_p): Change event to int.
2553         (dump_active_plugins): Likewise.
2554         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2555         Add cast.
2556         * tree.c (tree_range_check_failed): Change c to unsigned int.
2557         (omp_clause_range_check_failed): Likewise.
2558         (build_common_builtin_nodes): Change mode to int.  Add cast.
2559         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2560         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2561
2562         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2563         ++ or -- with a variable of enum type.
2564
2565 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2566
2567         PR driver/40144
2568         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2569
2570 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2571
2572         * store-motion.c: Do not include params.h
2573         * Makefile.in: Fix dependencies for various files.
2574
2575 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2576
2577         * auto-inc-dec.c: Fix pass description, remove apparent
2578         accidental duplication.
2579
2580 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2581
2582         PR middle-end/40147
2583         * ipa-utils.h (memory_identifier_string): Moved to ...
2584         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2585
2586 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2587
2588         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2589         in the former documentation of...
2590         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2591         * ira-conflicts.c (get_dup_num): Use address_operand.
2592         * targhooks.c (default_legitimate_address_p): New.
2593         * targhooks.h (default_legitimate_address_p): New.
2594         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2595         Call hook.
2596         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2597         * target.h (struct target): Add legitimate_address_p.
2598         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2599         (TARGET_INITIALIZER): Include it.
2600
2601         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2602         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2603         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2604         (TARGET_LEGITIMATE_ADDRESS_P): New.
2605
2606         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2607         (REG_OK_STRICT_P): Delete.
2608         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2609         (frv_legitimate_address_p_1): ... this.
2610         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2611         (frv_legitimate_address_p_1): ... the renamed old
2612         frv_legitimate_address_p.
2613         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2614         (TARGET_LEGITIMATE_ADDRESS_P): New.
2615
2616         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2617         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2618         * config/s390/s390.c (legitimate_address_p): Rename to...
2619         (s390_legitimate_address_p): ... this, make static.
2620         (legitimize_address): Adjust call.
2621         (TARGET_LEGITIMATE_ADDRESS_P): New.
2622         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2623
2624         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2625         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2626         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2627         (TARGET_LEGITIMATE_ADDRESS_P): New.
2628
2629         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2630         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2631         * config/spu/spu.c (spu_legitimate_address): Rename to...
2632         (spu_legitimate_address_p): ... this, make static.
2633         (TARGET_LEGITIMATE_ADDRESS_P): New.
2634
2635         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2636         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2637         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2638         (sparc_legitimate_address_p): ... this, make static and return bool.
2639         (legitimize_address): Adjust call.
2640         (TARGET_LEGITIMATE_ADDRESS_P): New.
2641
2642         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2643         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2644         * config/i386/i386.c (legitimate_address_p): Rename to...
2645         (ix86_legitimate_address_p): ... this, make static.
2646         (constant_address_p): Move after it, adjust call.
2647         (TARGET_LEGITIMATE_ADDRESS_P): New.
2648
2649         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2650         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2651         * config/avr/avr.c (legitimate_address_p): Rename to...
2652         (avr_legitimate_address_p): ... this, make static.
2653         (legitimize_address): Adjust call.
2654         (TARGET_LEGITIMATE_ADDRESS_P): New.
2655
2656         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2657         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2658         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2659         (TARGET_LEGITIMATE_ADDRESS_P): New.
2660
2661         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2662         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2663         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2664         (TARGET_LEGITIMATE_ADDRESS_P): New.
2665
2666         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2667         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2668         Remove.
2669         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2670         Make static.
2671         (TARGET_LEGITIMATE_ADDRESS_P): New.
2672
2673         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2674         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2675         Remove.
2676         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2677         Rename to...
2678         (m68hc11_legitimate_address_p): ... this, make static.
2679         (go_if_legitimate_address_internal): Rename to...
2680         (m68hc11_legitimate_address_p_1): ... this.
2681         (legitimize_address): Adjust call.
2682         (TARGET_LEGITIMATE_ADDRESS_P): New.
2683
2684         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2685         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2686         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2687         (TARGET_LEGITIMATE_ADDRESS_P): New.
2688
2689         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2690         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2691         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2692         (mn10300_legitimate_address_p): ... this, make static.
2693         (TARGET_LEGITIMATE_ADDRESS_P): New.
2694
2695         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2696         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2697         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2698         (TARGET_LEGITIMATE_ADDRESS_P): New.
2699
2700         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2701         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2702         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2703         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2704         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2705         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2706         (rs6000_legitimate_address_p): ... this, make static.
2707         (TARGET_LEGITIMATE_ADDRESS_P): New.
2708         (REG_MODE_OK_FOR_BASE_P): Delete.
2709         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2710
2711         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2712         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2713         Delete.
2714         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2715         static, adjust types.
2716         (TARGET_LEGITIMATE_ADDRESS_P): New.
2717
2718         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2719         * config/score/score.c (score_address_p): Rename to...
2720         (score_legitimate_address_p): ... this.
2721         (TARGET_LEGITIMATE_ADDRESS_P): New.
2722         * config/score/score3.c (score3_address_p): Rename to...
2723         (score3_legitimate_address_p): ... this.
2724         * config/score/score7.c (score7_address_p): Rename to...
2725         (score7_legitimate_address_p): ... this.
2726
2727         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2728         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2729         GO_IF_LEGITIMATE_ADDRESS): Delete.
2730         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2731         thumb2_legitimate_address_p): Delete.
2732         (arm_legitimate_address_p): Rename to...
2733         (arm_legitimate_address_outer_p): ... this.
2734         * config/arm/constraints.md ("Uq"): Adjust call.
2735         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2736         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
2737         to...
2738         (arm_legitimate_address_outer_p): ... this.
2739         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
2740         static.
2741         (TARGET_LEGITIMATE_ADDRESS_P): New.
2742
2743         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2744         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2745         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2746         (TARGET_LEGITIMATE_ADDRESS_P): New.
2747
2748         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2749         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2750         * config/vax/vax.c (legitimate_address_p): Rename to...
2751         (vax_legitimate_address_p): ... this, make static.
2752         (TARGET_LEGITIMATE_ADDRESS_P): New.
2753
2754         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2755         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2756         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2757         (TARGET_LEGITIMATE_ADDRESS_P): New.
2758
2759         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2760         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2761         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2762         (mmix_legitimate_address_p): ... this, make static.
2763         (TARGET_LEGITIMATE_ADDRESS_P): New.
2764
2765         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2766         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2767         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2768         (TARGET_LEGITIMATE_ADDRESS_P): New.
2769
2770 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2771
2772         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2773         of MODE_COMPLEX_INT.
2774
2775 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2776
2777         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2778         LCT_NORMAL in function call.
2779         * mips-tdump.c (print_file_desc): Add cast to enum type.
2780         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2781         (mark_stabs): Add casts to enum types.
2782         (parse_stabs_common): Add casts to enum types.
2783
2784 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2785
2786         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2787         Check for invalid values of LETTER.
2788
2789 2009-05-13  Taras Glek  <tglek@mozilla.com>
2790
2791         * attribs.c (register_attribute): moved out attribute registration
2792         into register_attribute.
2793         * doc/plugins.texi: Documented register_attribute and
2794         PLUGIN_ATTRIBUTES.
2795         * gcc-plugin.h: Added forward decl for register_attribute.
2796         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2797         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2798         PLUGIN_ATTRIBUTES boilerplate.
2799
2800 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2801
2802         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2803         values even in sentinel and empty entries.
2804         (ms_printf_flag_specs):  Likewise.
2805         (ms_scanf_flag_specs):  Likewise.
2806         (ms_strftime_flag_specs):  Likewise.
2807         (ms_print_char_table):  Likewise.
2808         (ms_scan_char_table):  Likewise.
2809         (ms_time_char_table):  Likewise.
2810
2811 2009-05-13  Doug Kwan  <dougkwan@google.com>
2812
2813         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2814
2815 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2816
2817         * config/mips/mips.md (store): Add attributes for QI and HI.
2818         Update comment.
2819         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2820         (truncdi<mode>2): ... this new pattern.
2821
2822 2009-05-13  Brad Hards  <bradh@kde.org>
2823
2824         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2825
2826 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2827             Ben Elliston <bje@au.ibm.com>
2828
2829         PR middle-end/40035
2830         * dse.c (check_mem_read_rtx): Guard against width == -1.
2831
2832 2009-05-13  Michael Matz  <matz@suse.de>
2833
2834         PR middle-end/39976
2835         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2836         (trivially_conflicts_p): New function.
2837         (insert_backedge_copies): Use it.
2838
2839 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2840
2841         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2842         (handle_stdc_pragma): Use new enum constant names.
2843         (handle_pragma_float_const_decimal64): Ditto.
2844
2845 2009-05-13  Ian Lance Taylor  <iant@google.com>
2846
2847         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2848         tree.def.
2849
2850 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2851
2852         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2853         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2854         multilibs.
2855         * config/m68k/m68k.h (FL_UCLINUX): Define.
2856
2857 2009-05-13  Jan Hubicka  <jh@suse.cz>
2858
2859         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2860
2861 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2862
2863         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2864         unless -fschedule-insns is specified.
2865
2866 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2867
2868         PR target/39561
2869         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2870         TARGET_EXPAND_CBRANCHDI4.
2871         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2872         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2873         (cmpeqdi): Fix comment.
2874
2875 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2876
2877         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2878         (sh_legitimate_address_p): Likewise.
2879         * config/sh/sh.c (sh_legitimate_index_p): New.
2880         (sh_legitimate_address_p): Likewise.
2881         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2882         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2883         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2884         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2885         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2886         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2887         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2888         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2889         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2890
2891 2009-05-12  Jan Hubicka  <jh@suse.cz>
2892
2893         * tree-inline.c (estimate_operator_cost): Add operands;
2894         when division happens by constant, it is cheap.
2895         (estimate_num_insns): Loads and stores are not having cost of 0;
2896         EH magic stuff is cheap; when computing runtime cost of switch,
2897         use log2 base of amount of its cases; builtin_expect has cost of 0;
2898         compute cost for moving return value of call.
2899         (init_inline_once): Initialize time_based flags.
2900         * tree-inline.h (eni_weights_d): Add time_based flag.
2901
2902 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2903
2904         * df-core.c: Update head documentation.
2905
2906 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2907
2908         PR bootstrap/40118
2909         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2910         shadowing exisiting variable op1.
2911
2912 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2913
2914         PR target/37179
2915         * config/i386/driver-i386.c (processor_signatures): New enum.
2916         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2917         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2918         processor signature to detect geode processor.
2919
2920 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2921
2922         Revert:
2923
2924         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2925
2926         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2927         causes spurious differences between trunk and cond-optab branch.
2928
2929 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2930
2931         * dojump.c (compare_from_rtx): Delete.
2932         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2933         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2934         if the comparison does not satisfy the predicate; test predicates for
2935         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2936         further if one existing pattern fails.
2937         * expr.h (compare_from_rtx): Delete.
2938         (prepare_operand): Declare it.
2939         * optabs.c: Change "lib call" to "libcall" throughout.
2940         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2941         HAVE_conditional_trap, emit_cmp_insn): Delete.
2942         (can_compare_p): Delete cmp_optab case.
2943         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2944         Accept other parameters by value.
2945         (prepare_operand): Make non-static.
2946         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2947         other parameters by value.  Try to widen operands here based on
2948         an optab_methods argument and looking at cbranch_optab.
2949         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2950         loop.  Use cbranch_optab directly.
2951         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2952         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2953         assertion.
2954         (emit_conditional_move, emit_conditional_add): Inline what's needed
2955         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2956         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2957         with COMPARE.  Move cmov_optab and cstore_optab above
2958         with cbranch_optab, move cmp_optab down with ucmp_optab,
2959         remove tst_otpab.  Do not initialize trap_rtx.
2960         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2961         for trap code.  Do not check HAVE_conditional_trap.  Use
2962         prepare_cmp_insn.  Accept no predicate for operand 3.
2963         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2964         (OTI_ctrap, ctrap_optab): New.
2965         (tst_optab): Delete.
2966         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2967         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2968         with lookup of ctrap_optab.
2969         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
2970         Delete.
2971         (ctrap_optab): New.
2972
2973         * combine.c (combine_simplify_rtx, simplify_set): Do not
2974         special case comparing against zero for cc0 machines.
2975         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2976         COMPARE on cc0 machines.
2977         (simplify_relational_operation): Return a new expression when
2978         a COMPARE could be removed.
2979         * final.c (final_scan_insn): Compare cc_status values
2980         against LHS of a (compare FOO (const_int 0)) cc0 source.
2981         Also check if cc_status.value is the full compare.
2982
2983         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2984         (cstoreMM4): Document.
2985         (conditional_trap): Document ctrapMM4 instead.
2986         (sync_compare_and_swapMM): Refer to cbranchcc4.
2987         (Dependent Patterns): Eliminate obsolete information referring to
2988         the old jump optimization phase.
2989         (Canonicalization): Include cbranchcc4 case, omit canonicalization
2990         of compares with 0 on cc0 machines.
2991         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2992         avoiding references to cc0.  Remove text about storing operands
2993         in cmpMM.
2994         * doc/tm.texi (Condition Codes): Include blurb on different
2995         condition code representations, separate into subsections for
2996         CC0, MODE_CC and conditional execution.
2997
2998         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2999         alpha_emit_setcc): Accept operands and a machine mode.
3000         * config/alpha/alpha.c (alpha_emit_conditional_branch):
3001         Get code/op0/op1 from operands, use machine mode argument
3002         instead of alpha_compare.fp_p.  Emit the branch here.
3003         (alpha_emit_setcc): Likewise, and return boolean.
3004         (alpha_emit_conditional_move): Likewise.  Assert that
3005         cmp_op_mode == cmp_mode, and simplify accordingly.
3006         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
3007         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
3008         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
3009         Delete.
3010         (stack probe test): Use cbranchdi4.
3011         * config/alpha/predicates.md (alpha_cbranch_operator): New.
3012
3013         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
3014         * config/arc/arc.h (movsicc, movsfcc): Use it.
3015         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
3016         (cbranchsi4, cstoresi4): New.
3017         (cmpsi, bCC and sCC expanders): Remove. 
3018
3019         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
3020         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
3021         * config/arm/predicates.md (arm_comparison_operator): Only include
3022         floating-point operators if there is a hardware floating-point unit.
3023         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
3024         deferring to cbranch_cc and cstore_cc respectively.
3025         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
3026         cbranch_cc, cstore_cc): New.
3027         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
3028         arm_compare_op1.
3029         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
3030
3031         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
3032         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
3033         as an argument.
3034         (adjust_insn_length): Adjust calls.
3035         (avr_reorg): Handle (compare (foo) (const_int 0)).
3036         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
3037         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
3038         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
3039         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
3040         (bCC): Remove.
3041         (cbranchqi4, cbranchhi4, cbranchsi4): New.
3042         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
3043
3044         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
3045         (cbranchsi4, cstorebi4, cstoresi4): New.
3046         (movbisi): This insn is duplicate, split it to zero_extend.
3047         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
3048         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
3049         (bfin_optimize_loop): Use cbranch expander.
3050         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
3051         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
3052         (bfin_bimode_comparison_operator): ... this.
3053         (bfin_direct_comparison_operator): New.
3054  
3055         * config/cris/cris.c (cris_normal_notice_update_cc): Look
3056         inside (compare FOO (const_int 0)).
3057         (cris_rtx_costs): Handle ZERO_EXTRACT.
3058         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
3059         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
3060         (*tstdi_v32): Delete.
3061         (*cmpdi_non_v32): Add M alternative for operand 1.
3062         (cmpsi, cmp<mode>): Make private.
3063         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
3064         with COMPARE.
3065         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
3066
3067         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
3068         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
3069         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
3070         (cc_reg_operand): New.
3071         (any_cond): Delete.
3072         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
3073         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
3074         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
3075         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
3076         crx_expand_scond): Delete.
3077
3078         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
3079         (cbranchsi4): New.
3080         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
3081         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
3082
3083         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
3084         cstoresi4, cstoresf4, cstoredf4): New.
3085         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
3086         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3087         Receive the entire operands array.
3088         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
3089         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
3090         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3091         Get test/op0/op1 from the operands array.
3092         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
3093
3094         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
3095         (h8300_expand_store): New.
3096         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
3097         (const_int 0)).
3098         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
3099         (h8300_expand_store): New.
3100         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
3101         or do not try to produce (set (cc0) REG).
3102         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
3103         change a compare into a move to a scratch register.  Disable some
3104         peepholes when comparing with zero.
3105         (tstsi, tsthi, tstsi, cmpqi): Make private.
3106         (cmphi): Delete.
3107         (bCC, sCC): Delete.
3108         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
3109         cstoresi4): New.
3110
3111         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
3112         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
3113         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
3114         (ix86_emit_i387_log1p): Use cbranchxf2.
3115         (ix86_expand_setcc): Return void.
3116         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
3117         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
3118         cmp<MODEF>, cmpcc): Remove.
3119         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
3120         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
3121         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
3122         (sCC and bCC expanders): Remove.
3123         (stack_protect_test): Use cbranchcc4.
3124
3125         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
3126         Delete.
3127         (ia64_expand_compare): Accept three rtx by reference and return void.
3128         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
3129         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
3130         from *expr.  Update *expr with the BImode comparison to do.
3131         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
3132         cmptf, bCC, sCC, conditional_trap): Delete.
3133         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
3134         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
3135         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
3136         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
3137         * config/ia64/predicates.md (ia64_cbranch_operator): New.
3138
3139         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
3140         type of last argument.
3141         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
3142         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
3143         use machine mode argument instead of branch_type.  Remove dead
3144         code for floating-point comparisons.
3145         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
3146         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
3147         Remove.
3148         (cbranchsi4, cstoresi4): New.
3149         * config/iq2000/predicates.md (reg_or_const_operand): New.
3150
3151         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
3152         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
3153         (b<code>_op): Rewrite to...
3154         (bcc_op): ... this, using match_operator.
3155         (s<code>_op): Rewrite to...
3156         (scc_op): ... this, using match_operator.
3157         (s<code>_24_op): Rewrite to...
3158         (scc_op_24): ... this, using match_operator.
3159         (s<code>_<mode>): Rewrite to...
3160         (cstore<mode>4): ... this, using match_operator.
3161         (s<code>_<mode>_24): Rewrite to...
3162         (cstore<mode>4_24): ... this, using match_operator.
3163         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
3164         m32c_unpend_compare, m32c_expand_scc): Delete.
3165         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
3166         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
3167         (m32c_expand_movcc): Change NE to EQ if necessary.
3168         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
3169
3170         * config/m32r/m32r-protos.h (gen_cond_store): New.
3171         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
3172         (gen_cond_store): New, from sCC patterns.
3173         (m32r_expand_block_move): Use cbranchsi4.
3174         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
3175         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
3176         (cbranchsi4, cstoresi4): New.
3177         
3178         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
3179         Delete.
3180         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
3181         (m68hc11_notice_update_cc): Look into a compare with 0.
3182         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
3183         Delete.
3184         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
3185         cmphi, cmpqi, bCC): Delete.
3186         (cbranchsi4, cbranchhi4, cbranchqi4): New.
3187         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
3188         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
3189         sets with COMPARE.
3190
3191         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
3192         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
3193         * config/m68k/constraints.md (H): New.
3194         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3195         the define_insn below.
3196         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3197         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3198         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3199         patterns): Wrap RHS with COMPARE.
3200         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3201         (*cmpdi_internal): Name this pattern.
3202         (cmpdi): Change to define_insn.
3203         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3204         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3205         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3206         predicate.
3207         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3208         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3209         (conditional_trap): Change to...
3210         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3211         (*conditional_trap): Use the ordered_comparison_operator and
3212         const1_operand predicates.
3213         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3214         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3215         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3216         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3217
3218         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3219         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3220         (mcore_gen_compare): New. 
3221         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3222         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3223         (mcore_gen_compare): ... this.
3224         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3225         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3226         (stack probe pattern): Use cbranchsi4.
3227
3228         * config/mips/predicates.md (mips_cstore_operator): New.
3229         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3230         * config/mips/mips.md (any_cond): Delete.
3231         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
3232         always succeed.
3233         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3234         fixuns_truncsfdi2): Use cbranch patterns.
3235         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
3236         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3237         Adjust call to mips_expand_conditional_branch.
3238         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3239         cstore<GPR:mode>4.
3240         * config/mips/mips-protos.h (mips_expand_conditional_branch,
3241         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3242         * config/mips/mips.c (cmp_operands): Delete.
3243         (mips_emit_compare): Get comparison operands from *op0/*op1.
3244         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
3245         that it succeeds.  Use op0/op1 instead of cmp_operands.
3246         (mips_expand_conditional_branch, mips_expand_conditional_move,
3247         mips_expand_conditional_trap): Likewise.
3248         (mips_block_move_loop): Use cbranch patterns. 
3249         * config/mips/mips.h (cmp_operands): Delete.
3250
3251         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3252         (mmix_gen_compare_reg): Just return a register in the right CC mode.
3253         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3254         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3255         (*cmpcc_folded): Rename to...
3256         (*cmpdi_folded): this.
3257         (*cmpcc): Rename to...
3258         (*cmps): ... this.
3259         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3260         (bCC): Remove.
3261         (cbranchdi4): New.
3262         (cbranchdf4): New.  Handle invalid comparisons here.
3263         * config/mmix/predicates.md (float_comparison_operator): New.
3264
3265         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3266         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3267         * config/mn10300/mn10300.md (tst): Delete.
3268         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3269         Name these patterns and wrap RHS in a compare.
3270         (*cmpsi): Make this pattern private.  Include tst.
3271         (*cmpsf): Make this pattern private.
3272         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3273         (compare with zero peepholes): Likewise.
3274         (bCC): Remove.
3275         (cbranchsi4, cbranchsf4): New.
3276         (casesi): Use cbranchsi4.
3277
3278         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3279         hppa_branch_type): Delete.
3280         (return_addr_rtx): Use cbranchsi4.
3281         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
3282         Emit CCFPmode comparison here.
3283         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3284         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3285         hppa_branch_type): Delete.
3286         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3287         (movsicc, movdicc): Remove references to hppa_compare_op0,
3288         hppa_compare_op1 and compare_from_rtx.
3289         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3290         (casesi): Use cbranchsi4.
3291
3292         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3293         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3294         * config/pdp11/pdp11.md (register_or_const0_operand): New.
3295         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
3296         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3297         (bCC): Delete.
3298         (cbranchdf4, cbranchhi4, cbranchqi4): New.
3299         (*branch, *branch_inverted): New.
3300
3301         * config/picochip/picochip.md (cbranchhi4): Use
3302         ordered_comparison_operator.
3303         (cmphi, bCC): Remove.
3304
3305         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3306         (trap_comparison_operator): Delete.
3307         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3308         rs6000_emit_cbranch): Accept mode and operands.
3309         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3310         rs6000_compare_fp_p): Delete.   
3311         (rs6000_generate_compare): Accept mode and comparison.  Extract code
3312         and op0/op1 from there.  Replace references to rs6000_compare_op0
3313         and rs6000_compare_op1.
3314         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3315         extract result from passed operands.
3316         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3317         extract loc from passed operands.
3318         (rs6000_emit_cmove): Likewise.
3319         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3320         rs6000_compare_fp_p): Delete.
3321         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3322         (cbranch<GPR>4, cbranch<FP>4): New.
3323         (cstore<mode>4): New.  Consolidate here all choices about when to use
3324         portable or specialized sCC sequences.
3325         (stack_protect_test): Use cbranchsi4.
3326         (conditional_trap): Replace with ctrap<GPR>4.
3327         (conditional trap insn): Replace trap_comparison_operator with
3328         ordered_comparison_operator. 
3329
3330         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3331         (s390_emit_prologue): Use ctrap.
3332         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3333         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3334         New predicates replacing...
3335         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3336         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3337         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3338         (add<mode>cc): Do not use s390_compare_op0/op1.
3339         (s<code>): Change to...
3340         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3341         (seq): Change to...
3342         (cstorecc4): ... this.  Handle EQ or NE equally.
3343         (*sne): Un-privatize for use in cstorecc4.
3344         (b<code>): Change to...
3345         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3346         (conditional_trap): Replace with...
3347         (ctrap<GPR>4, ctrap<FP>4): ... these.
3348         (stack_protect): Use cbranchcc4.
3349
3350         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3351         * config/score/score-protos.h (score_gen_cmp): Delete.
3352         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3353         (score_block_move-loop): Use cbranchsi4.
3354         * config/score/score.md (cbranchsi4): New.
3355         (cmpsi, bCC): Delete.
3356         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3357         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3358         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3359         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3360         * config/score/score3.h (score3_gen_cmp): Delete.
3361         * config/score/score7.h (score7_gen_cmp): Delete.
3362
3363         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3364         (sh_emit_scc_to_t): ... this.  Return void.
3365         (from_compare): Rename to...
3366         (sh_emit_compare_and_branch): ... this.
3367         (sh_emit_compare_and_set): New.
3368         (sh_expand_t_scc): Accept operands.
3369         * config/sh/predicates.md (sh_float_comparison_operator): New.
3370         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3371         (prepare_scc_operands): Rename to...
3372         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
3373         arguments.
3374         (sh_emit_cheap_store_flag): New.
3375         (sh_emit_set_t_insn): New.
3376         (from_compare): Rename to...
3377         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
3378         handling of TARGET_SH2E floating point to avoid recursive call.
3379         Generate branch here.
3380         (sh_emit_compare_and_set): New.
3381         (sh_expand_t_scc): Get op0/op1 from arguments.
3382         (sh_emit_cheap_store_flag): New.
3383         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3384         cases.
3385         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3386         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3387         (movsicc, movdicc): Do nothing when it recreated operands from
3388         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3389         prepare_scc_operands (now sh_emit_scc_to_t).
3390         (udivdi3): Use cstoresi4.
3391         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3392         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3393         (cbranchint4_media, cbranchfp4_media): New.
3394         (casesi): Use cbranchdi4.
3395         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3396         Delete.
3397         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3398         (movnegt): Remove second operand.
3399         (cbranchsf4, cbranchdf4): New.
3400         (stack_protect): Use cbranchdi4/cbranchsi4.
3401
3402         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3403         (gen_compare_reg): Accept comparison, extract part of it to...
3404         (gen_compare_reg_1): ... this. 
3405         (gen_compare_operator): Delete.
3406         (gen_v9_scc): Accept separate destination, comparison code and arms.
3407         Do not use sparc_compare_op0/sparc_compare_op1.
3408         (emit_scc_insn, emit_conditional_branch_insn): New.
3409         (emit_v9_brxx): Make static.  Remove useless assertion.
3410         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3411         emit_cmp_insn.
3412         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3413         * config/sparc/sparc-protos.h (gen_compare_reg,
3414         sparc_emit_float_lib_cmp): Adjust prototype.
3415         (emit_scc_insn, emit_conditional_branch_insn): New.
3416         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3417         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3418         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3419         iterators to the top.
3420         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3421         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3422         snedi_special_trunc): Delete.
3423         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3424         and snedi_special_trunc.
3425         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3426         cbranchdi4, cbranch<F:mode>4): New.
3427         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3428         here.  Use gen_compare_reg instead of gen_compare_operator.
3429         (conditional_trap): Replace with...
3430         (ctrapsi4, ctrapdi4): ... this.
3431         (stack_protect_test): Use cbranchcc4.
3432
3433         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3434         argument to rtx.
3435         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3436         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3437         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3438         from operands[0] or operands[3] depending on is_set.
3439         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3440         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3441         cmpdf, bCC), sCC: Remove.
3442         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3443         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3444         cstoredf4): New.
3445         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3446         spu_emit_branch_or_set.
3447
3448         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3449         Add two arguments.
3450         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3451         xstormy16_compare_op1): Delete.
3452         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3453         xstormy16_compare_op1): Delete. 
3454         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3455         Adjust calls.
3456         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3457         (cmphi, cmpsi, bCC): Remove.
3458
3459         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3460         (*cmpsi): ... this one.
3461         (cbranchsi4, cstoresi4): New.
3462         (bCC expanders): Delete.
3463         (sCC insns): Fold into...
3464         (*setcc): ... this one.
3465         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3466         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3467         (movsicc): Simplify.
3468         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3469
3470         * config/vax/vax-protos.h (cond_name): New.
3471         (vax_output_conditional_branch): Remove.
3472         * config/vax/vax.c (cond_name): New.
3473         (vax_output_conditional_branch): Remove.
3474         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3475         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3476         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3477         (bit<VAXint>): Wrap source with (compare).
3478         (b<code> and following unnamed pattern): Rename to *branch and
3479         *branch_reversed.  Change macroization to match_operator.
3480         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3481
3482         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3483         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3484         Change last argument to machine_mode.
3485         (xtensa_expand_scc): Add machine_mode argument.
3486         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3487         (gen_conditional_move, xtensa_expand_conditional_branch,
3488         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3489         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3490         Adjust operand numbers.
3491         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3492         Delete.
3493         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3494         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3495         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3496
3497 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3498
3499         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3500         causes spurious differences between trunk and cond-optab branch.
3501
3502 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3503
3504         PR target/37137
3505         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3506
3507 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3508
3509         * tree.c (iterative_hash_pointer): Delete.
3510         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3511         Hash UIDs and versions of SSA names.  Don't special-case built-in
3512         function declarations.
3513
3514 2009-05-11  Ian Lance Taylor  <iant@google.com>
3515
3516         PR bootstrap/40103
3517         * graphite.c: Force -Wc++-compat to only be a warning before
3518         #including "cloog/cloog.h".
3519
3520 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3521
3522         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3523         
3524 2009-05-11  Jan Hubicka  <jh@suse.cz>
3525
3526         * tree-ssa-loop-ivcanon.c: Include target.h
3527         (struct loop_size): new structure.
3528         (constant_after_peeling): New predicate.
3529         (tree_estimate_loop_size): New function.
3530         (estimated_unrolled_size): Rewrite for new estimates.
3531         (try_unroll_loop_completely): Use new estimates.
3532         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3533
3534 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3535
3536         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3537         libcpp interface change.
3538         (spu_macro_to_expand): Likewise.
3539
3540 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3541
3542         PR tree-optimization/40026
3543         * gimplify.c (gimplify_init_constructor): Change initial conditional
3544         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3545         optimize_compound_literals_in_ctor.
3546
3547 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3548
3549         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3550         New devices.
3551         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3552
3553 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3554
3555         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3556         HOST_WIDE_INT for gap.
3557
3558 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3559
3560         PR tree-optimization/40074
3561         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3562         account in group size and step comparison.
3563
3564 2009-05-11  Richard Guenther  <rguenther@suse.de>
3565
3566         * passes.c (init_optimization_passes): Strip now incorrect comment.
3567         (execute_function_todo): Do not set PROP_alias.
3568         * tree-pass.h (PROP_alias): Remove.
3569         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3570         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3571         * tree-nrv.c (pass_return_slot): Likewise.
3572         * tree-object-size.c (pass_object_sizes): Likewise.
3573         * tree-ssa-dom.c (pass_dominator): Likewise.
3574         (pass_phi_only_cprop): Likewise.
3575         * tree-ssa-dse.c (pass_dse): Likewise.
3576         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3577         (pass_cselim): Likewise.
3578         * tree-ssa-pre.c (pass_pre): Likewise.
3579         (pass_fre): Likewise.
3580         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3581         * tree-ssa-sink.c (pass_sink_code): Likewise.
3582         * tree-stdarg.c (pass_stdarg): Likewise.
3583         * tree-tailcall.c (pass_tail_calls): Likewise.
3584         * tree-vrp.c (pass_vrp): Likewise.
3585
3586 2009-05-10  Ian Lance Taylor  <iant@google.com>
3587
3588         * basic-block.h (enum profile_status): Break out of struct
3589         control_flow_graph.
3590         * cgraph.h (struct inline_summary): Break out of struct
3591         cgraph_local_info.
3592         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3593         of struct cgraph_order_sort.
3594         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3595         * cse.c (struct branch_path): Break out of struct
3596         cse_basic_block_data.
3597         * except.h (enum eh_region_type): Break out of struct eh_region.
3598         * gcc.c (enum add_del): Break out of struct modify_target.
3599         * genrecog.c (enum decision_type): Break out of struct decision_test.
3600         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3601         ggc_pch_data.
3602         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3603         * regmove.c (enum match_use): New enum, broken out of struct match.
3604         * sched-int.h (enum post_call_group): New enum, broken out of
3605         struct deps.
3606         (struct deps_reg): Break out of struct deps.
3607         * target.h (struct asm_int_op): Break out of struct gcc_target.
3608         * tree-eh.c (struct goto_queue_node): Break out of struct
3609         leh_tf_state.
3610         * tree-inline.h (enum copy_body_cge_which): Break out of
3611         copy_body_data.
3612         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3613
3614         * c-decl.c (in_struct, struct_types): New static variables.
3615         (pushtag): Add loc parameter.  Change all callers.
3616         (lookup_tag): Add ploc parameter.  Change all callers.
3617         (check_compound_literal_type): New function.
3618         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3619         -Wc++-compat, warn about struct/union/enum types defined within a
3620         struct or union.
3621         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3622         and loc parameters.  Change all callers.  Change error calls to
3623         error_at, using loc.  For a redefinition, if the location of the
3624         original definition is known, report it.  Set in_struct and
3625         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3626         (finish_struct): Add new parameters enclosing_in_struct and
3627         enclosing_struct_types.  Change all callers.  Set
3628         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3629         in the struct.  If in a struct, add this struct to struct_types.
3630         (start_enum): Add loc parameter.  Change all callers.  Use
3631         error_at for errors, using loc.  For a redefinition, if the
3632         location of the original definition is known, report it.  If in a
3633         struct, add this enum type to struct_types.  If -Wc++-compat warn
3634         if in sizeof, typeof, or alignof.
3635         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3636         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3637         (c_parser_enum_specifier): Get enum location for start_enum.
3638         (c_parser_struct_or_union_specifier): Get struct location for
3639         start_struct.  Save in_struct and struct_types status between
3640         start_struct and finish_struct.
3641         (c_parser_cast_expression): Get location of cast.
3642         (c_parser_alignof_expression): Get location of type.
3643         (c_parser_postfix_expression): Likewise.
3644         (c_parser_postfix_expression_after_paren_type): Add type_loc
3645         parameter.  Change all callers.  Call check_compound_literal_type.
3646         Use type_loc for error about variable size type.
3647         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3648         of an enum constant from an enum type defined in a struct or union.
3649         (c_cast_expr): Add loc parameter.  Change all callers.  If
3650         -Wc++-compat, warn about defining a type in a cast.
3651         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3652         (start_enum, start_struct, finish_struct): Update declarations.
3653         (parser_xref_tag, c_cast_expr): Update declarations.
3654         (check_compound_literal_type): Declare.
3655
3656 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3657
3658         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3659         for recent libcpp interface change.
3660         (rs6000_macro_to_expand): Likewise.
3661
3662 2009-05-10  Michael Matz  <matz@suse.de>
3663
3664         PR target/40031
3665         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3666         not at entry of function.
3667
3668 2009-05-10  Richard Guenther  <rguenther@suse.de>
3669
3670         PR tree-optimization/40081
3671         Revert
3672         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3673         using the main variant of the element type.  Do not fiddle with
3674         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3675
3676         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3677         structs with volatile fields.
3678
3679 2009-05-10  Jan Hubicka  <jh@suse.cz>
3680
3681         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3682         (estimate_move_cost): Assert that it does not get called for
3683         VOID_TYPE_P.
3684         (estimate_num_insns): Skip VOID types in argument handling.
3685         (optimize_inline_calls): Delete unreachable blocks and verify that
3686         callgraph is valid.
3687
3688 2009-05-10  Jan Hubicka  <jh@suse.cz>
3689
3690         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3691         * cgraph.c (cgraph_mark_address_taken_node): New function.
3692         (dump_cgraph_node): Dump new flag.
3693         * cgraph.h (struct cgraph_node): Add address_taken.
3694         (cgraph_mark_address_taken_node): New function.
3695         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3696         since new direct calls can be born.
3697
3698 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3699
3700         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3701         tok->val.node.node.
3702
3703 2009-05-10  Jan Hubicka  <jh@suse.cz>
3704
3705         PR middle-end/40084
3706         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3707         argument; rewrite.
3708         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3709         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3710         * tree-inline.c (copy_bb): Set frequency correctly.
3711         (fold_marked_statements): Update call to
3712         cgraph_update_edges_for_call_stmt.
3713
3714 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3715
3716         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3717         identifiers in diagnostics.
3718         * config/arm/arm.c (arm_handle_fndecl_attribute,
3719         arm_handle_isr_attribute): Likewise.
3720         * config/avr/avr.c (avr_handle_progmem_attribute,
3721         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3722         * config/bfin/bfin.c (handle_int_attribute,
3723         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3724         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3725         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3726         Likewise.
3727         * config/darwin.c (darwin_handle_kext_attribute,
3728         darwin_handle_weak_import_attribute): Likewise.
3729         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3730         h8300_handle_eightbit_data_attribute,
3731         h8300_handle_tiny_data_attribute): Likewise.
3732         * config/i386/i386.c (ix86_handle_cconv_attribute,
3733         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3734         * config/i386/winnt.c (ix86_handle_shared_attribute,
3735         ix86_handle_selectany_attribute): Likewise.
3736         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3737         * config/m32c/m32c.c (function_vector_handler): Likewise.
3738         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3739         m68hc11_handle_fntype_attribute): Likewise.
3740         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3741         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3742         * config/mips/mips.c (mips_insert_attributes,
3743         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3744         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3745         rs6000_handle_struct_attribute): Likewise.
3746         * config/sh/sh.c (sh_insert_attributes,
3747         sh_handle_resbank_handler_attribute,
3748         sh_handle_interrupt_handler_attribute,
3749         sh2a_handle_function_vector_handler_attribute,
3750         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3751         Likewise.
3752         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3753         * config/spu/spu.c (spu_handle_fndecl_attribute,
3754         spu_handle_vector_attribute): Likewise.
3755         * config/stormy16/stormy16.c
3756         (xstormy16_handle_interrupt_attribute): Likewise.
3757         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3758         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3759
3760 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3761
3762         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3763         (pp_translate_identifiers): New.
3764         (pp_identifier): Only conditionally translate identifier to locale
3765         character set.
3766         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3767         (pp_base_tree_identifier): Only conditionally translate identifier
3768         to locale character set.
3769         * c-pretty-print.c (M_): Define.
3770         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3771         fragments for conditional translation with M_.
3772         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3773         identifier translation.
3774
3775 2009-05-10  Richard Guenther  <rguenther@suse.de>
3776
3777         PR tree-optimization/40081
3778         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3779         using the main variant of the element type.  Do not fiddle with
3780         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3781
3782 2009-05-09  Jan Hubicka  <jh@suse.cz>
3783
3784         PR middle-end/40080
3785         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3786         indirect calls; verify cgraph afterwards.
3787
3788 2009-05-09  Jan Hubicka  <jh@suse.cz>
3789
3790         PR bootstrap/40082
3791         * ipa.c (update_inlined_to_pointer): New function.
3792         (cgraph_remove_unreachable_nodes): Use it.
3793
3794 2009-05-09  Jan Hubicka  <jh@suse.cz>
3795
3796         * tree-eh.c (struct leh_state): Remove prev_try.
3797         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3798         not track prev_try.
3799         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3800         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3801         remove_eh_handler_and_replace, foreach_reachable_handler,
3802         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3803         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3804         (gen_eh_region_cleanup): Update prototype.
3805
3806 2009-05-09  Jan Hubicka  <jh@suse.cz>
3807
3808         PR middle-end/40043
3809         * except.c (copy_eh_region): Always set prev_try.
3810         (redirect_eh_edge_to_label): Find outer try.
3811         (foreach_reachable_handler): When looking for prev try
3812         handle case where previous try is not going to be taken.
3813
3814 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3815
3816         PR tree-optimization/40049
3817         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3818         only vector/vector shifts, convert the type of the constant to the
3819         appropriate type to avoid building incorrect trees, which
3820         eventually have problems with garbage collection.
3821
3822 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3823
3824         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3825         -1 for complex floating-point types if honoring signed zeros.
3826
3827 2009-05-08  Jan Hubicka  <jh@suse.cz>
3828
3829         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3830         argument; handle correctly when profile is absent.
3831         (build_cgraph_edges): Update.
3832         (rebuild_cgraph_edges): Update.
3833         * cgraph.c: Do not include varray.h.
3834         (cgraph_set_call_stmt_including_clones): New function.
3835         (cgraph_create_edge_including_clones): Likewise
3836         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3837         (cgraph_update_edges_for_call_stmt): Handle clones.
3838         (cgraph_remove_node): Handle clone tree.
3839         (cgraph_remove_node_and_inline_clones): New function.
3840         (dump_cgraph_node): Dump clone tree.
3841         (cgraph_clone_node): Handle clone tree.
3842         (clone_function_name): Bring here from tree-inline.c.
3843         (cgraph_create_virtual_clone): New function.
3844         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3845         (cgraph_clone_info): New function.
3846         (strut cgraph_node): Add clone_info and new clone tree pointers.
3847         (cgraph_remove_node_and_inline_clones,
3848         cgraph_set_call_stmt_including_clones,
3849         cgraph_create_edge_including_clones,
3850         cgraph_create_virtual_clone): Declare.
3851         (cgraph_function_versioning): Use VEC argument.
3852         (compute_call_stmt_bb_frequency): Update prototype.
3853         (cgraph_materialize_all_clones): New function.
3854         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3855         (ipcp_create_replace_map): Update to VECtors.
3856         (ipcp_update_callgraph): Use virtual clones.
3857         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3858         (ipcp_update_profiling): Do not update local profiling.
3859         (ipcp_insert_stage): Use VECtors and virtual clones.
3860         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3861         (clone_of_p): New function.
3862         (cgraph_preserve_function_body_p): Use clone tree.
3863         (cgraph_optimize): Materialize clones.
3864         (cgraph_function_versioning): Update for VECtors.
3865         (save_inline_function_body): Use clone tree.
3866         (cgraph_materialize_clone): New function.
3867         (cgraph_materialize_all_clones): Likewise.
3868         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3869         * ipa.c: Include gimple.h.
3870         (cgraph_remove_unreachable_nodes): Use clone tree.
3871         * ipa-prop.c (ipa_note_param_call): Update call to
3872         compute_call_stmt_bb_frequencycall.
3873         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3874         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3875         (copy_bb): Handle updating of clone tree; add new edge when new call
3876         appears.
3877         (expand_call_inline): Be strict about every call having edge.
3878         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3879         (delete_unreachable_blocks_update_callgraph): New function.
3880         (tree_function_versioning): Use VECtors; always remove unreachable
3881         blocks and fold conditionals.
3882         * tree-inline.h: Do not include varray.h.
3883         (tree_function_versioning): Remove.
3884         * Makefile.in (GTFILES): Remove tree-inline.c
3885         * passes.c (do_per_function): Do only functions having body.
3886         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3887         tree.
3888
3889 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
3890             Andrew Morrow  <acm@google.com>
3891
3892         PR c/36892
3893         * c-common.c (c_common_attribute_table): Permit deprecated
3894         attribute to take an optional argument.
3895         (handle_deprecated_attribute): If the optional argument to
3896         __attribute__((deprecated)) is not a string ignore the attribute
3897         and emit a warning.
3898
3899         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3900         * c-typeck.c (build_component_ref): Likewise.
3901         (build_external_ref): Likewise.
3902
3903         * toplev.c (warn_deprecated_use): Add an attribute argument.
3904         Emit the message associated with __attribute__((deprecated)).
3905
3906         * toplev.h (warn_deprecated_use): Updated.
3907
3908         * doc/extend.texi: Document new optional parameter to
3909         __attribute__((deprecated))
3910
3911 2009-05-08  Michael Eager <eager@eagercon.com>
3912
3913         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3914         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3915
3916 2009-05-08  Richard Guenther  <rguenther@suse.de>
3917
3918         PR tree-optimization/40062
3919         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3920         Avoid exponential behavior.
3921
3922 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3923
3924         PR rtl-optimization/33928
3925         PR 26854
3926         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3927         process_uses, build_single_def_use_links): New.
3928         (update_df): Update use_def_ref.
3929         (forward_propagate_into): Use get_def_for_use instead of use-def
3930         chains.
3931         (fwprop_init): Call build_single_def_use_links and let it initialize
3932         dataflow.
3933         (fwprop_done): Free use_def_ref.
3934         (fwprop_addr): Eliminate duplicate call to df_set_flags.
3935         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
3936         df_rd_simulate_one_insn): New.
3937         (df_rd_bb_local_compute_process_def): Update head comment.
3938         (df_chain_create_bb): Use the new RD simulation functions.
3939         * df.h (df_rd_simulate_artificial_defs_at_top, 
3940         df_rd_simulate_one_insn): New.
3941         * opts.c (decode_options): Enable fwprop at -O1.
3942         * doc/invoke.texi (-fforward-propagate): Document this.
3943
3944 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3945
3946         PR c/24581
3947         * c-typeck.c (build_binary_op): Handle arithmetic between one real
3948         and one complex operand specially.
3949         * tree-complex.c (some_nonzerop): Do not identify a real value as
3950         zero if flag_signed_zeros.
3951
3952 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3953
3954         PR rtl-optimization/33928
3955         * loop-invariant.c (record_use): Fix && vs. || mishap.
3956
3957 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3958
3959         PR rtl-optimization/33928
3960         * loop-invariant.c (struct use): Add addr_use_p.
3961         (struct def): Add n_addr_uses.
3962         (struct invariant): Add cheap_address.
3963         (create_new_invariant): Set cheap_address.
3964         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
3965         (record_uses): Pass df_ref to record_use.
3966         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3967         used only as such.
3968
3969 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3970
3971         * config/sh/sh.c: Do not include c-pragma.h.
3972
3973 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3974
3975         * config/spu/spu.c: Remove include of c-common.h.
3976
3977 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
3978
3979         PR c/39037
3980         * c-common.h (mark_valid_location_for_stdc_pragma,
3981         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3982         clear_float_const_decimal64, float_const_decimal64_p): New.
3983         * c.opt (Wunsuffixed-float-constants): New.
3984         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3985         unsuffixed float constant, handle new warning.
3986         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3987         * c-decl.c (c_scope): New flag float_const_decimal64.
3988         (set_float_const_decimal64, clear_float_const_decimal64,
3989         float_const_decimal64_p): New.
3990         (push_scope): Set new flag.
3991         * c-parser.c (c_parser_translation_unit): Mark when it's valid
3992         to use STDC pragmas.
3993         (c_parser_external_declaration): Ditto.
3994         (c_parser_compound_statement_nostart): Ditto.
3995         * c-pragma.c (valid_location_for_stdc_pragma,
3996         mark_valid_location_for_stdc_pragma,
3997         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
3998         handle_pragma_float_const_decimal64): New.
3999         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
4000         * cp/semantics.c (valid_location_for_stdc_pragma_p,
4001         set_float_const_decimal64, clear_float_const_decimal64,
4002         float_const_decimal64_p): New dummy functions.
4003         * doc/extend.texi (Decimal Float): Remove statement that the
4004         pragma, and suffix for double constants, are not supported.
4005         * doc/invoke.texi (Warning Options): List new option.
4006         (-Wunsuffixed-float-constants): New.
4007
4008 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
4009
4010         * config/i386/i386.c: Do not include c-common.h.
4011
4012 2009-05-07  Mark Heffernan  <meheff@google.com>
4013
4014         * doc/invoke.texi (Debugging Options): Document change of debugging
4015         dump location.
4016         * opts.c (decode_options): Make dump_base_name relative to
4017         aux_base_name directory.
4018
4019 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
4020
4021         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
4022         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
4023
4024 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
4025
4026         * Makefile.in (install-plugin): Simplify a bit.
4027
4028 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
4029
4030         * Makefile.in (OBJS-common): Add regcprop.o.
4031         (regcprop.o): New.
4032         * timevar.def (TV_CPROP_REGISTERS): New.
4033         * regrename.c (regrename_optimize): Return 0.
4034         (rest_of_handle_regrename): Delete.
4035         (pass_rename_registers): Point to regrename_optimize.
4036         (struct value_data_entry, struct value_data, 
4037         kill_value_one_regno, kill_value_regno, kill_value,
4038         set_value_regno, init_value_data, kill_clobbered_value,
4039         kill_set_value, kill_autoinc_value, copy_value,
4040         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
4041         replace_oldest_value_reg, replace_oldest_value_addr,
4042         replace_oldest_value_mem, copyprop_hardreg_forward_1,
4043         debug_value_data, validate_value_data): Move...
4044         * regcprop.c: ... here.
4045         (rest_of_handle_cprop): Delete.
4046         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
4047
4048 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
4049
4050         PR middle-end/40057
4051         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
4052         GEN_INT for 1 << bitnum.
4053         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
4054         build_int_cst_type.
4055
4056 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
4057
4058         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
4059         Remove wrong description of "nand" operation.
4060
4061 2009-05-06  Richard Guenther  <rguenther@suse.de>
4062             Adam Nemet  <anemet@caviumnetworks.com>
4063
4064         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
4065         comment.  Add that if LHS is not a gimple register, then RHS1 has
4066         to be a single object (GIMPLE_SINGLE_RHS).
4067
4068 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
4069
4070         * expr.c (get_def_for_expr): Move it up in the file.
4071         (store_field): When expanding a bit-field store, look at the
4072         defining gimple stmt for the masking conversion.
4073
4074 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
4075
4076         PR middle-end/39986
4077         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
4078         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
4079         32-bit memcpy into long.
4080
4081 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
4082
4083         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
4084         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
4085         new_reg_loc_descr.
4086         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
4087         instead of appending DW_OP_deref*.
4088
4089 2009-05-06  Michael Matz  <matz@suse.de>
4090
4091         PR middle-end/40021
4092         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
4093         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
4094
4095 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
4096
4097         * Makefile.in (install-plugin): Fix srcdir handling.
4098
4099 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
4100
4101         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
4102         when processing for not_regs_needed bitmap.
4103         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
4104         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
4105         handling it for rhs. 
4106
4107 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4108
4109         * config/i386/i386.md (unnamed inc/dec peephole): Use
4110         optimize_insn_for_size_p instead of optimize_size.
4111         * config/i386/predicates.md (incdec_operand): Likewise.
4112         (aligned_operand): Likewise.
4113         * config/i386/sse.md (divv8sf3): Likewise.
4114         (sqrtv8sf2): Likewise.
4115
4116 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4117
4118         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
4119
4120         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
4121
4122 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4123
4124         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
4125         ssemodesuffixf2c with avxmodesuffixf2c.
4126
4127 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
4128
4129         PR c/40032
4130         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
4131
4132 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
4133
4134         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
4135         (struct tree_base): Adjust spacing for 8 bit boundaries.
4136         (struct tree_decl_common): Add decl_by_reference_flag bit.
4137         (DECL_BY_REFERENCE): Adjust.
4138         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
4139         print DECL_BY_REFERENCE bit.
4140         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
4141         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
4142         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
4143         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
4144         unconditionally.
4145
4146         PR middle-end/39666
4147         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
4148         range of the type, but default label is missing, add it with one
4149         of the existing labels instead of adding a new label for it.
4150
4151 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
4152
4153         * dwarf.h: Remove.
4154
4155 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
4156
4157         * Makefile.in (enable_plugin, plugin_includedir): New.
4158         (install): Depend on install-plugin.
4159         (PLUGIN_HEADERS): New.
4160         (install-plugin): New.
4161         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
4162
4163 2009-05-05  Richard Guenther  <rguenther@suse.de>
4164
4165         PR tree-optimization/40022
4166         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
4167         the only vuse.
4168         (phivn_valid_p): Fix tuplification error, simplify.
4169         (phiprop_insert_phi): Add dumps.
4170         (propagate_with_phi): Simplify.
4171
4172 2009-05-05  Richard Guenther  <rguenther@suse.de>
4173
4174         PR middle-end/40023
4175         * builtins.c (gimplify_va_arg_expr): Properly build the address.
4176
4177 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
4178
4179         * tree.h (strip_float_extensions): Remove duplicate declaration.
4180         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
4181         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
4182         block_ultimate_origin): Rearrange the declarations line to match the
4183         comment that indicates the .c file which the functions are defined.
4184         (dwarf2out_*, set_decl_rtl): Add comment.
4185         (get_base_address): Adjust comment.
4186         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
4187         declarations line and add comment.
4188         (is_builtin_name): Add blank after function name, for clarity.
4189
4190 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4191
4192         * attribs.c (decl_attributes): Use %qE for identifiers in
4193         diagnostics.
4194         * cgraphunit.c (verify_cgraph_node): Translate function names to
4195         locale character set in diagnostics.
4196         * coverage.c (get_coverage_counts): Use %qE for identifiers in
4197         diagnostics.
4198         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
4199         Document that functions are named in UTF-8.
4200         * expr.c (expand_expr_real_1): Translate function names to locale
4201         character set in diagnostics.
4202         * gimplify.c (omp_notice_variable, omp_is_private,
4203         gimplify_scan_omp_clauses): Use %qE for identifiers in
4204         diagnostics.
4205         * langhooks.c (lhd_print_error_function): Translate function names
4206         to locale character set.
4207         * langhooks.h (decl_printable_name): Document that return value is
4208         in internal character set.
4209         * stmt.c: Include pretty-print.h
4210         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
4211         diagnostics.
4212         (resolve_operand_name_1): Translate named operand name to locale
4213         character set.
4214         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
4215         diagnostics.
4216         * toplev.c (announce_function): Translate function names to locale
4217         character set.
4218         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
4219         (default_tree_printer): Use pp_identifier or translate identifiers
4220         to locale character set.  Mark "<anonymous>" for translation.
4221         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
4222         for identifiers in diagnostics.
4223         * tree.c (handle_dll_attribute): Use %qE for identifiers in
4224         diagnostics.
4225         * varasm.c (output_constructor): Use %qE for identifiers in
4226         diagnostics.
4227
4228 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
4229
4230         * configure.ac: use ` ` instead of $()
4231         * configure: Regenerate.
4232
4233 2009-05-05  Ben Elliston  <bje@au.ibm.com>
4234
4235         * config/pa/linux-atomic.c: Eliminate conditional include of
4236         errno.h on non-LP64 systems to simplify build requirements.
4237
4238 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4239
4240         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
4241         diagnostics.
4242         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
4243         and pass value to identifier_to_locale.
4244         (warn_variable_length_array): Make name a tree.
4245         (grokdeclarator): Separate diagnostic texts for named and unnamed
4246         declarators.  Use %qE for named declarators.
4247         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
4248         diagnostics.
4249         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
4250         identifiers in diagnostics.
4251         * c-typeck.c (push_member_name, start_init): Pass identifiers to
4252         identifier_to_locale.  Mark "anonymous" strings for translation.
4253
4254 2009-05-04  Michael Eager <eager@eagercon.com>
4255
4256         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
4257         address for DImode/DFmode only if double-precision FP regs.
4258
4259 2009-05-04  Michael Eager <eager@eagercon.com>
4260
4261         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
4262         TARGET_SINGLE_FLOAT check.
4263
4264 2009-05-04  Michael Eager <eager@eagercon.com>
4265
4266         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
4267
4268 2009-05-04  Michael Eager <eager@eagercon.com>
4269
4270         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
4271         * config/rs6000/t-xilinx: New
4272
4273 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
4274
4275         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
4276         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
4277         * gcc/explow.c (memory_address): Use target hook.
4278         * gcc/targhooks.c (default_legitimize_address): New.
4279         * gcc/targhooks.h (default_legitimize_address): New.
4280         * gcc/target.h (legitimize_address): New.
4281         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
4282         (TARGET_INITIALIZER): Include it.
4283         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
4284
4285         * config/bfin/bfin-protos.h (legitimize_address): Remove.
4286         * config/bfin/bfin.c (legitimize_address): Remove.
4287         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
4288         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
4289         Remove.
4290         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
4291         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
4292
4293         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
4294         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
4295         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
4296         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
4297         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
4298         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
4299         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
4300         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
4301         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
4302         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
4303         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
4304         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
4305         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
4306         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
4307         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
4308         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
4309         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
4310         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
4311         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
4312         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
4313         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
4314         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
4315         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
4316
4317         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
4318         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
4319         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
4320         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
4321         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
4322         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
4323         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
4324         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
4325         (thumb_legitimize_address): Delete.
4326         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
4327         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
4328         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
4329         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
4330         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
4331         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
4332         Delete.
4333         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
4334         Delete.
4335
4336         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
4337         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
4338         * config/m32r/m32r.c (m32r_legitimize_address): New.
4339         * config/m68k/m68k.c (m68k_legitimize_address): New.
4340         * config/score/score.c (score_legitimize_address): Standardize.
4341         * config/score/score3.c (score3_legitimize_address): Standardize.
4342         * config/score/score3.h (score3_legitimize_address): Adjust.
4343         * config/score/score7.c (score7_legitimize_address): Standardize.
4344         * config/score/score7.h (score7_legitimize_address): Adjust.
4345         * config/sh/sh.c (sh_legitimize_address): New.
4346         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
4347
4348         * gcc/config/s390/s390.c (legitimize_address): Rename to...
4349         (s390_legitimize_address): ... this.
4350         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
4351         (sparc_legitimize_address): ... this.
4352         * gcc/config/i386/i386.c (legitimize_address): Rename to...
4353         (ix86_legitimize_address): ... this.
4354         * gcc/config/avr/avr.c (legitimize_address): Rename to...
4355         (avr_legitimize_address): ... this.
4356         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
4357         (mn10300_legitimize_address): ... this.
4358         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
4359         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
4360         (alpha_expand_mov): Adjust call.
4361
4362         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
4363         * config/spu/spu.c (spu_legitimize_address): Likewise.
4364         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
4365         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
4366
4367 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4368
4369         * intl.c (locale_encoding, locale_utf8): New.
4370         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
4371         * intl.h (locale_encoding, locale_utf8): Declare.
4372         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
4373         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
4374         New.
4375         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
4376         argument.
4377         (pp_tree_identifier): Define to call pp_base_tree_identifier.
4378         (pp_base_tree_identifier): Declare as function.
4379         (identifier_to_locale): Declare.
4380         * Makefile.in (pretty-print.o): Update dependencies.
4381         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
4382
4383 2009-05-04  Richard Guenther  <rguenther@suse.de>
4384
4385         PR middle-end/40015
4386         * builtins.c (fold_builtin_memory_op): Do not decay to element
4387         type if the size matches the whole array.
4388
4389 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4390
4391         * expmed.c (synth_mult): When trying out a shift, pass the result
4392         of a signed shift.
4393
4394 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4395
4396         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
4397         (shiftsub1_cost): New.
4398         (init_expmed): Compute shiftsub1_cost.
4399         (synth_mult): Optimize multiplications by constants of the form
4400         -(2^^m-1) for some constant positive integer m.
4401
4402 2009-05-03  Richard Guenther  <rguenther@suse.de>
4403
4404         PR c/39983
4405         * c-typeck.c (array_to_pointer_conversion): Do not built
4406         ADDR_EXPRs of arrays of pointer-to-element type.
4407         * c-gimplify.c (c_gimplify_expr): Revert change fixing
4408         up wrong ADDR_EXPRs after-the-fact.
4409         * c-common.c (strict_aliasing_warning): Strip pointer
4410         conversions for obtaining the original type.
4411         * builtins.c (fold_builtin_memset): Handle array types.
4412         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
4413         and array types
4414
4415 2009-05-03  Richard Guenther  <rguenther@suse.de>
4416
4417         PR middle-end/23329
4418         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
4419         Do not lose casts from array types with unknown extent to array
4420         types with known extent.
4421         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
4422         alias set compatibility.
4423
4424 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
4425
4426         * flags.h (extra_warnings): Delete.
4427         * toplev.c (process_options): Handle Wuninitialized here.
4428         * opts.c (extra_warnings): Delete.
4429         (set_Wextra): Delete.
4430         (common_handle_option): -Wextra can be handled automatically.
4431         * c-opts.c (c_common_handle_option): Delete obsolete code.
4432         (c_common_post_options): Simplify comment.
4433         * common.opt (W): Add Var.
4434         (Wextra): Add Var.
4435         (Wuninitialized): Initialize to -1.
4436
4437 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
4438             Richard Guenther  <rguenther@suse.de>
4439
4440         * expr.c (get_def_for_expr): New function.
4441         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
4442         SSA rather than trees.
4443         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
4444         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
4445         
4446 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
4447
4448         * c-common.c (reswords): Add _Imaginary.
4449         * c-common.c (enum rid): Add RID_IMAGINARY.
4450
4451 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
4452
4453         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
4454         Patch by Richard Guenther.
4455
4456 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
4457
4458         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
4459         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
4460         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
4461         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
4462         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
4463         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
4464         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
4465         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
4466         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
4467         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
4468         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
4469         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
4470         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
4471         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
4472         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
4473         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
4474         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
4475         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
4476
4477 2009-05-02  Richard Guenther  <rguenther@suse.de>
4478
4479         PR tree-optimization/39940
4480         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
4481         doing so.
4482
4483 2009-05-02  Richard Guenther  <rguenther@suse.de>
4484
4485         PR middle-end/40001
4486         * tree-ssa.c (execute_update_addresses_taken): Properly check
4487         if we can mark a variable DECL_GIMPLE_REG_P.
4488         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
4489         back to the end of the function.
4490         (is_gimple_reg_type): Remove complex type special casing.
4491         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
4492         if not optimizing.
4493
4494 2009-05-02  Ben Elliston  <bje@au.ibm.com>
4495
4496         * doc/collect2.texi (Collect2): Document search path behaviour
4497         when configured with --with-ld.
4498
4499 2009-05-02  Jan Hubicka  <jh@suse.cz>
4500
4501         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
4502         parameter; update callers.
4503         (coalesce_cost_edge): EH edges are costier because they needs
4504         splitting even if not critical and even more costier when there are
4505         multiple EH predecestors.
4506
4507 2009-05-02  Jan Hubicka  <jh@suse.cz>
4508
4509         * except.c (remove_eh_handler_and_replace): Handle updating after
4510         removing TRY blocks.
4511
4512 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
4513
4514         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
4515
4516 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
4517
4518         * varasm.c: Do not include c-pragma.h.
4519         * attribs.c: Do not incude c-common.h.
4520
4521 2009-05-01  Michael Matz  <matz@suse.de>
4522
4523         * calls.c (initialize_argument_information): Handle SSA names like
4524         decls with a non MEM_P DECL_RTL.
4525
4526 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4527
4528         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
4529         * ipa-utils.c: Likewise.
4530         * ipa-type-escape.c: Likewise.
4531         * cgraphunit.c Do not include c-common.h.
4532         * ipa-pure-const.c: Likewise.
4533         * tree-if-conv.c: Likewise.
4534         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
4535         * ipa-struct-reorg.c: Likewise.
4536         * tree-nomudflap.c: Likewise.
4537         * tree-ssa-structalias.c: Likewise.
4538
4539 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4540
4541         * store-motion.c: Many cleanups to make this pass a first-class
4542         citizen instead of an appendix to gcse load motion.  Add TODO list
4543         to make this pass faster/cleaner/better.
4544
4545         (struct ls_expr): Post gcse.c-split cleanups.
4546         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
4547         "stores" field to "avail_stores".
4548         (pre_ldst_mems): Rename to store_motion_mems.
4549         (pre_ldst_table): Rename to store_motion_mems_table.
4550         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
4551         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
4552         (ldst_entry): Rename to st_expr_entry, update users.
4553         (free_ldst_entry): Rename to free_st_expr_entry, update users.
4554         (free_ldst_mems): Rename to free_store_motion_mems, update users.
4555         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
4556         update caller.
4557         (first_ls_expr): Rename to first_st_expr, update users.
4558         (next_ls_expr): Rename to next_st_expr, update users.
4559         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
4560         fields properly for store motion instead of names inherited from load
4561         motion in gcse.c.
4562         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
4563         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
4564         are done with it.
4565
4566         (ae_kill): Rename to st_kill, update users.
4567         (ae_gen): Rename to st_avloc, update users.
4568         (transp): Rename to st_transp, update users.
4569         (pre_insert_map): Rename to st_insert_map, update users.
4570         (pre_delete_map): Rename to st_delete_map, update users.
4571         (insert_store, build_store_vectors, free_store_memory,
4572         one_store_motion_pass): Update for abovementioned changes.
4573
4574         (gcse_subst_count, gcse_create_count): Remove.
4575         (one_store_motion_pass): New statistics counters "n_stores_deleted"
4576         and "n_stores_created", local variables.
4577
4578         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
4579         use for_each_rtx.
4580
4581         (regvec, compute_store_table_current_insn): Remove.
4582         (reg_set_info, reg_clear_last_set): Remove.
4583         (compute_store_table): Use DF caches instead of local dataflow
4584         solvers.
4585
4586 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
4587
4588         * c-objc-common.c (c_tree_printer): Print identifiers with
4589         pp_identifier, not pp_string.  Mark "({anonymous})" for
4590         translation.
4591         * c-pretty-print.c (pp_c_ws_string): New.
4592         (pp_c_cv_qualifier, pp_c_type_specifier,
4593         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
4594         pp_c_storage_class_specifier, pp_c_function_specifier,
4595         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
4596         pp_c_primary_expression, pp_c_postfix_expression,
4597         pp_c_unary_expression, pp_c_shift_expression,
4598         pp_c_relational_expression, pp_c_equality_expression,
4599         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
4600         use pp_string and pp_c_ws_string in place of pp_identifier and
4601         pp_c_identifier for non-identifiers.  Mark English strings for
4602         translation.
4603         * c-pretty-print.h (pp_c_ws_string): Declare.
4604
4605 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
4606             Roland McGrath <roland@redhat.com>
4607
4608         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
4609         (ENABLE_LD_BUILDID): New configuration option.
4610         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
4611         (LINK_BUILDID_SPEC): New macro.
4612         (init_spec): If defined, prepend it between LINK_EH_SPEC and
4613         link_spec.
4614         * doc/install.texi: Document --enable-linker-build-id option.
4615         * configure: Rebuild.
4616         * config.in: Rebuild.
4617
4618 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
4619
4620         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
4621         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
4622         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
4623         MIPS_GP_SAVE_AREA_SIZE.
4624         * config/mips/mips.c (struct mips_frame_info): Update comment
4625         before arg_pointer_offset and hard_frame_pointer_offset.
4626         (mips_compute_frame_info): Update diagram before function: to
4627         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
4628         indicate the position of frame_pointer_rtx with -fstack-protector and
4629         to show args_size.  Don't allocate cprestore area for leaf functions
4630         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
4631         cprestore_size.
4632         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
4633
4634 2009-04-30  Michael Matz  <matz@suse.de>
4635
4636         PR tree-optimization/39955
4637         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
4638
4639 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
4640
4641         * ira.c (setup_cover_and_important_classes):  Use safe macro
4642         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
4643         directly.
4644         * genpreds.c (write_tm_preds_h):  Output suitable definition of
4645         REG_CLASS_FOR_CONSTRAINT.
4646
4647 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4648
4649         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
4650         instead of an int.
4651         * bitmap.c (bitmap_descriptor): Likewise.
4652         * ggc-common.c (loc_descriptor): Likewise.
4653         * varray.c (varray_descriptor): Likewise.
4654         * vec.c (vec_descriptor): Likewise.
4655
4656 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
4657
4658         * Makefile.in (dce.o): Add $(EXCEPT_H).
4659         * dce.c: Include except.h and delete redundant vector definitions.
4660         (deletable_insn_p): Return false for non-call insns that can throw
4661         if DF is running.
4662
4663 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
4664
4665         * gcse.c (ae_gen): Remove.
4666         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
4667         and make non-static function to make it available in store-motion.c.
4668         Update call sites with search-and-replace.
4669         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
4670         extract_mentioned_regs, extract_mentioned_regs_helper,
4671         find_moveable_store, compute_store_table, load_kills_store, find_loads,
4672         store_killed_in_insn, store_killed_after, store_killed_before,
4673         build_store_vectors, insert_insn_start_basic_block, insert-store,
4674         remove_reachable_equiv_notes, replace_store_insn, delete_store,
4675         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
4676         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
4677         * store-motion.c: ...new file.  Also copy data structures from gcse.c
4678         and clean up to remove parts not used by store motion.
4679         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
4680         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
4681
4682 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4683
4684         PR target/38571
4685         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
4686         when optimizing for size.
4687
4688 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
4689
4690         * gcse.c (gcse_constant_p): Fix typo in last change.
4691
4692 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4693
4694         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
4695
4696 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
4697
4698         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
4699
4700 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
4701
4702         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
4703         CONST_HIGH_PART result.
4704
4705 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
4706
4707         * config/avr/avr.c (initial_elimination_offset): Rename to
4708         avr_initial_elimination_offset.
4709         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
4710         change return type to bool.
4711         (avr_can_eliminate): New function.
4712         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
4713         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
4714         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
4715         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
4716         avr_initial_elimination_offset.
4717         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
4718         (avr_initial_elimination_offset): Define.
4719
4720 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
4721             Steven Bosscher  <steven@gcc.gnu.org>
4722
4723         PR rtl-optimization/39938
4724         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
4725         * cfgrtl.c: Include insn-attr.h.
4726         (rest_of_pass_free_cfg): New function.
4727         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
4728         * resource.c (init_resource_info): Remove call to df_analyze.
4729
4730 2009-04-29  Richard Guenther  <rguenther@suse.de>
4731
4732         PR target/39943
4733         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
4734         allow conversion to signed integers.
4735
4736 2009-04-29  Richard Guenther  <rguenther@suse.de>
4737
4738         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
4739         shifts of floating point vectors if the shift amount is
4740         a constant multiple of the element size.
4741
4742 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4743             Michael Matz  <matz@suse.de>
4744
4745         PR middle-end/39927
4746         PR bootstrap/39929
4747         * tree-outof-ssa.c (emit_partition_copy): New function.
4748         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
4749         insert_part_to_rtx_on_edge): Perform the partition base var
4750         copy using emit_partition_copy.
4751         (insert_value_copy_on_edge): Convert constants to the right mode.
4752         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
4753         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
4754
4755 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4756
4757         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
4758         scan backwards to try to find a constant to initialize it.
4759
4760         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
4761         insn before the loop_end instruction, don't look past labels.
4762
4763 2009-04-29  Richard Guenther  <rguenther@suse.de>
4764
4765         PR middle-end/39937
4766         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4767         loose type conversions.
4768         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
4769         stmts only if there are no uses of its definition.
4770
4771 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4772
4773         * config/bfin/bfin.h (splitting_loops): Declare.
4774         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
4775         Reorder bit definitions to be ascending.
4776         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
4777         * config/bfin/bfin.c (splitting_loops): New variable.
4778         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
4779         (struct loop_info): Remove members INIT and LOOP_INIT.
4780         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
4781         the LSETUP sequence.  Allow LC to be loaded from any register, but
4782         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
4783         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
4784         set to 1.
4785         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
4786         of reload_completed.
4787
4788         From Jie Zhang:
4789         * config/bfin/bfin.md (movsi_insn): Refine constraints.
4790
4791 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
4792
4793         * Makefile.in (PLUGIN_VERSION_H): New.
4794         (OBJS-common): Remove plugin-version.o.
4795         (plugin.o): Depend on (PLUGIN_VERSION_H).
4796         (plugin-version.o): Remove.
4797         * configure: Regenerate
4798         * configure.ac: Create plugin-version.h.
4799         * gcc-plugin.h (plugin_gcc_version): Remove.
4800         (plugin_default_version_check): Change signature.
4801         * plugin-version.c: Remove.
4802         * plugin.c: Include plugin-version.h.
4803         (str_plugin_gcc_version_name): Remove.
4804         (try_init_one_plugin): Pass gcc version to plugin_init.
4805         (plugin_default_version_check): Both gcc and plugin versions are now
4806         arguments.
4807
4808 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4809         
4810         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
4811         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
4812         Remove special case testing for last insn of inner loops. Don't fail
4813         if the loop ends with a jump, emit an extra nop instead.
4814
4815         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
4816         DREGS rather than comparing directly.  Remove code that tries to
4817         account for latencies.
4818
4819 2009-04-29  Richard Guenther  <rguenther@suse.de>
4820
4821         PR tree-optimization/39941
4822         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
4823         eliminating an indirect call.
4824
4825 2009-04-29  Richard Guenther  <rguenther@suse.de>
4826
4827         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
4828         parameter.  Allow invariants as base if !require_lvalue.
4829         (verify_gimple_assign_single): Adjust.
4830
4831 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4832
4833         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
4834         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
4835         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
4836         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
4837         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
4838         a VEC_SELECT.
4839         * config/bfin/bfin.c (bfin_expand_builtin,
4840         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
4841
4842 2009-04-28  Richard Guenther  <rguenther@suse.de>
4843
4844         * tree-vect-loop.c (get_initial_def_for_induction): Use
4845         correct types for pointer increment.
4846
4847 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4848
4849         * toplev.c (print_version): Update GMP version string calculation.
4850
4851 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
4852
4853         PR rtl-optimization/39938
4854         * resource.c (init_resource_info): Add call to df_analyze.
4855
4856 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4857
4858         * config/alpha/alpha.md (usegp): Cast the result of
4859         alpha_find_lo_sum_using_gp to enum attr_usegp.
4860         * config/alpha/alpha.c (override_options): Remove end-of-structure
4861         marker element from cpu_table.  Use array size of cpu_table to handle
4862         -mcpu and -mtune options.
4863         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
4864
4865 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
4866
4867         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
4868         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
4869         tune_32 and tune_64.
4870         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
4871         support on PowerPC.
4872         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
4873         * config/rs6000/option-defaults.h: ... here.  New file.
4874         (OPT_64, OPT_32): Define.
4875         (MASK_64BIT): Define to 0 if not already defined.
4876         (OPT_ARCH64, OPT_ARCH32): Define.
4877         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
4878         and tune_64.
4879
4880 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4881
4882         * config/arm/arm.c (arm_override_options): Emit error on using
4883         fpa with AAPCS.
4884
4885 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4886
4887         PR rtl-optimization/39914
4888         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
4889         registers for allocnos created from user-defined variables only
4890         when not optimizing.
4891
4892 2009-04-28  Richard Guenther  <rguenther@suse.de>
4893
4894         PR middle-end/39937
4895         * fold-const.c (fold_binary): Use distribute_real_division only
4896         on float types.
4897
4898 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
4899
4900         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
4901         add hpux-stdint.h to tm_file.
4902         (hppa[12]*-*-hpux11*): Ditto.
4903         (ia64*-*-hpux*): Ditto.
4904         * config/hpux-stdint.h: New.
4905         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
4906         __STDC_EXT__ for all compiles.
4907         * config/pa/pa-hpux.h: Ditto.
4908         * config/pa/pa-hpux10.h: Ditto.
4909         * config/pa/pa-hpux11.h: Ditto.
4910
4911 2009-04-28  Catherine Moore  <clm@codesourcery.com>
4912
4913         * debug.h (set_name): Add comment.
4914
4915 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
4916
4917         PR target/39929
4918         * config/darwin.c (machopic_gen_offset): Check
4919         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
4920         * config/arm/arm.c (require_pic_register): Likewise.
4921
4922 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
4923
4924         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
4925         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
4926         m32c_promote_prototypes): Delete.
4927
4928 2009-04-28  Michael Matz  <matz@suse.de>
4929
4930         PR middle-end/39922
4931         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
4932         constants.
4933
4934 2009-04-28  Richard Guenther  <rguenther@suse.de>
4935
4936         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
4937
4938 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4939
4940         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
4941         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
4942         * config/arm/arm-tune.md: Regenerate.
4943
4944 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
4945
4946         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
4947         block if there are complex incoming edges.
4948         (sel_merge_blocks): Remove useless assert.
4949         (sel_redirect_edge_and_branch): Check that edge was redirected.
4950         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
4951         (sel_find_rgns): Delete declaration.
4952         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
4953         the region when it is not a preheader.
4954
4955 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4956
4957         PR c/39323
4958         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
4959
4960 2009-04-28  Richard Guenther  <rguenther@suse.de>
4961
4962         * tree.h (SSA_NAME_VALUE): Remove.
4963         (struct tree_ssa_name): Remove value_handle member.
4964         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
4965         array for jump threading.
4966         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
4967         SSA_NAME_VALUEs.
4968         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
4969         * tree-flow.h (threadedge_initialize_values): Declare.
4970         (threadedge_finalize_values): Likewise.
4971         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
4972         (SSA_NAME_VALUE): Define.
4973         (threadedge_initialize_values): New function.
4974         (threadedge_finalize_values): Likewise.
4975         * tree-ssa-dom.c (ssa_name_values): New global variable.
4976         (SSA_NAME_VALUE): Define.
4977         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
4978
4979 2009-04-28  Ira Rosen  <irar@il.ibm.com>
4980
4981         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
4982         Use REPORT_VECTORIZED_LOCATIONS instead 
4983         REPORT_VECTORIZED_LOOPS.
4984         * tree-vectorizer.c (vect_verbosity_level): Make static.
4985         (vect_loop_location): Rename to vect_location.
4986         (vect_set_verbosity_level): Update comment.
4987         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
4988         and vect_location.
4989         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
4990         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
4991         instead REPORT_UNVECTORIZED_LOOPS.
4992         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
4993         and vect_loop_def to vect_external_def and vect_internal_def.
4994         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
4995         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
4996         REPORT_UNVECTORIZED_LOCATIONS.
4997         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
4998         and vect_used_in_loop and to vect_unused_in_scope and 
4999         vect_used_in_scope.
5000         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
5001         (vect_verbosity_level): Remove declaration.
5002         (vect_analyze_operations): Likewise.
5003         (vect_analyze_stmt): Declare.
5004         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
5005         REPORT_UNVECTORIZED_LOCATIONS.
5006         (vect_get_loop_niters): Fix indentation.
5007         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
5008         (vect_analyze_loop_operations): New function.
5009         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
5010         vect_analyze_operations.
5011         (vect_is_simple_reduction): Use new names.
5012         (vectorizable_live_operation, vect_transform_loop): Likewise.
5013         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
5014         to specify whether the data references can be a part of interleaving
5015         chain.
5016         (vect_analyze_data_ref_dependence): Use new names.
5017         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
5018         (vect_create_addr_base_for_vector_ref): Remove redundant code.
5019         * tree-vect-patterns.c (widened_name_p): Use new names.
5020         (vect_recog_dot_prod_pattern): Likewise.
5021         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
5022         (process_use, vect_mark_stmts_to_be_vectorized, 
5023         vect_model_simple_cost, vect_model_store_cost,
5024         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
5025         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
5026         vectorizable_operation, vectorizable_type_demotion,
5027         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
5028         vectorizable_condition): Likewise.
5029         (vect_analyze_operations): Split into vect_analyze_loop_operations
5030         and ...
5031         (vect_analyze_stmt): ... new function.
5032         (new_stmt_vec_info): Use new names.
5033         (vect_is_simple_use): Use new names and fix comment.
5034         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
5035         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
5036
5037 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
5038
5039         PR target/39911
5040         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
5041         and integer modes for x87 operands.  Do not ICE for unsupported size,
5042         generate error instead.  Generate error for unsupported operand types.
5043         ['z']: Do not handle HImode memory operands specially.  Warning
5044         for floating-point operands.  Fallthru to 'Z' for unsupported operand
5045         types.  Do not ICE for unsupported size, generate error instead.
5046         (output_387_binary_op): Use %Z to output operands.
5047         (output_fp_compare): Ditto.
5048         (output_387_reg_move): Ditto.
5049
5050 2009-04-28  Ben Elliston  <bje@au.ibm.com>
5051
5052         PR c++/35652
5053         Revert:
5054
5055         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5056
5057         * builtins.c (c_strlen): Do not warn here.
5058         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
5059         * c-common.c (pointer_int_sum): Take an explicit location.
5060         Warn about offsets out of bounds.
5061         * c-common.h (pointer_int_sum): Adjust declaration.
5062
5063 2009-04-27  Ian Lance Taylor  <iant@google.com>
5064
5065         * collect2.c (is_ctor_dtor): Change type of ret field in struct
5066         names to symkind.
5067         * dce.c (run_fast_df_dce): Change type of old_flags to int.
5068         * df-core.c (df_set_flags): Change return type to int.  Change
5069         type of old_flags to int.
5070         (df_clear_flags): Likewise.
5071         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
5072         (df_get_conditional_uses): Likewise.
5073         * df.h (df_set_flags, df_clear_flags): Update declarations.
5074         * dwarf2out.c (struct indirect_string_node): Change type of form
5075         field to enum dwarf_form.
5076         (AT_string_form): Change return type to enum dwarf_form.
5077         * fixed-value.c (fixed_compare): Add cast to enum type.
5078         * fwprop.c (update_df): Change 0 to VOIDmode.
5079         * gensupport.c: Change 0 to UNKNOWN.
5080         * gimple.h (gimple_cond_code): Add cast to enum type.
5081         * haifa-sched.c (reemit_notes): Add cast to enum type.
5082         * hooks.c (hook_int_void_no_regs): Remove function.
5083         * hooks.h (hook_int_void_no_regs): Remove declaration.
5084         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
5085         * predict.c (combine_predictions_for_insn): Add casts to enum type.
5086         * real.c (real_arithmetic): Add cast to enum type.
5087         (real_compare): Likewise.
5088         * target.h (struct gcc_target): Change return type of
5089         branch_target_register_class to enum reg_class.
5090         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
5091         default_branch_target_register_class.
5092         * targhooks.c (default_branch_target_register_class): New function.
5093         * targhooks.h (default_branch_target_register_class): Declare.
5094         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
5095         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
5096         cast to int.
5097         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
5098         ERROR_MARK.
5099         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
5100         vect_uninitialized_def.  Change 0 to ERROR_MARK.
5101         * tree-vect-stmts.c (supportable_widening_operation): Don't
5102         initialize icode1 and icode2.
5103         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
5104         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
5105         and to STD_C89.
5106         (cmn_err_flag_specs): Change 0 to STD_C89.
5107         (cmn_err_char_table): Likewise.
5108         * config/arm/arm.c (get_arm_condition_code): Change type of code
5109         to enum arm_cond_code.
5110         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
5111         (IWMMXT_BUILTIN2): Likewise.
5112         (neon_builtin_type_bits): Don't define typedef.
5113         (neon_builtin_datum): Change type of bits field to int.
5114         (arm_expand_neon_args): Add cast to enum type.
5115         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
5116         TLS_MODEL_NONE.
5117         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
5118         casts to enum type.
5119         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
5120         MIPS_FP_COND_f.
5121         * config/mips/mips.md (jal_macro): Return enum constant.
5122         (single_insn): Likewise.
5123         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
5124         CODE_FOR_nothing.
5125         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
5126         casts to enum type.
5127         * config/s390/s390.c (s390_tune_flags): Change type to int.
5128         (s390_arch_flags): Likewise.
5129         (s390_handle_arch_option): Change flags field of struct pta to int.
5130         * config/s390/s390.h (s390_tune_flags): Update declaration.
5131         (s390_arch_flags): Likewise.
5132         * config/sh/sh.c (prepare_move_operands): Compare
5133         tls_symbolic_operand result with enum constant.
5134         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
5135         (sh_expand_prologue): Add cast to enum type.
5136         (sh_expand_epilogue): Likewise.
5137         (tls_symbolic_operand): Change return type to enum tls_model.
5138         (fpscr_set_from_mem): Add cast to enum type.
5139         (legitimize_pic_address): Compare tls_symbolic_operand result with
5140         enum constant.
5141         (sh_target_reg_class): Change return type to enum reg_class.
5142         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
5143         PROCESSOR_xxx.
5144         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
5145         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
5146         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
5147         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
5148         (delayed_branch, tls_call_delay): Likewise.
5149         (eligible_for_sibcall_delay): Likewise.
5150         (eligible_for_return_delay): Likewise. 
5151         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
5152         (spu_expand_builtin_1): Likewise.
5153
5154         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
5155         for all types of conversions.
5156         (output_init_element): Issue -Wc++-compat warning if needed when
5157         initializing a bitfield with enum type.
5158         * c-parser.c (c_parser_expression): Set original_type to
5159         original_type of right hand operand of comman operator.
5160
5161 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5162
5163         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
5164         grammar nits.
5165         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
5166         * doc/cpp.texi (Standard Predefined Macros)
5167         (Implementation-defined behavior): Likewise.
5168         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
5169         * doc/gimple.texi (GIMPLE Exception Handling)
5170         (@code{GIMPLE_ASSIGN}): Likewise.
5171         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
5172         * doc/invoke.texi (Warning Options, Optimize Options)
5173         (AVR Options, Darwin Options): Likewise.
5174         (Optimize Options): Reformulate -fwhole-program description.
5175         * doc/loop.texi (Lambda): Likewise.
5176         * doc/md.texi (Output Template, Define Constraints)
5177         (Standard Names, Insn Splitting): Likewise.
5178         * doc/options.texi (Option properties): Likewise.
5179         * doc/passes.texi (Tree-SSA passes): Likewise.
5180         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
5181         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
5182         (File Names and DBX): Likewise.
5183         * doc/trouble.texi (Incompatibilities): Likewise.
5184
5185 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5186
5187         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
5188         instruction is correct.
5189
5190 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5191
5192         Allow non-constant arguments to conversion intrinsics.
5193         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
5194         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
5195         * spu.c (print_operand): Handle 'v' and 'w'.
5196         (exp2_immediate_p, spu_gen_exp2): Define.
5197         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
5198         spu_convtf_1): Update parameter descriptions.
5199         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
5200         * constraints.md ('v', 'w'): New.
5201         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
5202         Remove.
5203         (i2f, I2F): New define_mode_attr.
5204         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
5205         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
5206         fixuns_truncv4sfv4si2):  Update to use mode attribute.
5207         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
5208         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
5209         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
5210         patterns for combine.
5211
5212 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
5213
5214         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
5215         (cprop, hoist, pre, store_motion): New debug counters.
5216         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
5217         is not an RTL pass anymore.
5218         (pass_profiling): Remove extern decl for pass removed in 2005.
5219         (pass_gcse, pass_jump_bypass): Remove.
5220         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
5221         to 0 for clean state.
5222         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
5223         * cse.c (gate_handle_cse_after_global_opts,
5224         rest_of_handle_cse_after_global_opts): New functions.
5225         (pass_cse_after_global_opts): New pass, does local CSE.
5226         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
5227         (TV_CPROP): New timevar.
5228         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
5229         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
5230         (gcse_main, recompute_all_luids): Remove.
5231         (compute_hash_table_work): Call max_reg_num instead of reading
5232         max_gcse_regno.
5233         (cprop_jump): Don't set run_jump_opt_after_gcse.
5234         (constprop_register): Always allow to alter jumps.
5235         (cprop_insn): Likewise.
5236         (do_local_cprop): Likewise.
5237         (local_cprop_pass): Likewise.  Return non-zero if something changed.
5238         (cprop): Remove function, fold interesting bits into one_cprop_pass.
5239         (find_implicit_sets): Add note about missed optimization opportunity.
5240         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
5241         pass_rtl_cprop execute function.
5242         Don't bother tracking the pass number, each pass gets its own dumpfile
5243         now anyway.
5244         Always allow to alter jumpsand bypass jumps.
5245         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
5246         will just find no suitable set.
5247         (pre_edge_insert): Fix dumping, this function is for PRE only.
5248         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
5249         pass_rtl_pre execute function.
5250         (hoist_code): Return non-zero if something changed.  Keep track of
5251         substitutions and insertions for statistics gathering similar to PRE.
5252         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
5253         called from the pass_rtl_hoist execute function.  Show pass statistics.
5254         (compute_store_table): Use max_reg_num directly instead of using the
5255         formerly global max_gcse_regno.
5256         (build_store_vectors): Likewise.
5257         (replace_store_insn): Fix dumping.
5258         (store_motion): Rename to ...
5259         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
5260         pass, called from the pass_rtl_store_motion execute function.  Keep
5261         track of substitutions and insertions for statistics gathering similar
5262         to PRE.
5263         (bypass_jumps): Remove, fold interesting bits into ...
5264         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
5265         from the pass_rtl_cprop execute function.
5266         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
5267         pass_jump_bypass): Remove.
5268         (gate_handle_gcse, rest_of_handle_gcse): Remove.
5269         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
5270         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
5271         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
5272         (gate_rtl_store_motion, execute_rtl_store_motion,
5273         pass_rtl_store_motion): New.
5274         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
5275         make it clear that -fcse-skip-blocks is a no-op for backward compat.
5276         * passes.c (init_optimization_passes): Remove pass_gcse and
5277         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
5278         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
5279         instead of pass_jump_bypass.
5280
5281 2009-04-27  Richard Guenther  <rguenther@suse.de>
5282
5283         PR middle-end/39928
5284         * gimplify.c (gimplify_expr): If we are required to create
5285         a temporary make sure it ends up as register.
5286
5287 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
5288
5289         PR target/39903
5290         * config/i386/i386.c (construct_container): Don't call
5291         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
5292         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
5293
5294 2009-04-27  Michael Matz  <matz@suse.de>
5295
5296         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
5297         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
5298         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
5299         (dump_replaceable_exprs): Take a bitmap.
5300         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
5301         array.
5302         (expand_gimple_basic_block): Likewise.
5303         * tree-ssa-ter.c (struct temp_expr_table_d): Make
5304         replaceable_expressions member a bitmap.
5305         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
5306         (mark_replaceable): Likewise.
5307         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
5308         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
5309
5310 2009-04-27  Richard Guenther  <rguenther@suse.de>
5311
5312         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
5313         (verify_stmts): Dispatch to gimple/type verification code.
5314         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
5315         issue with call argument types.
5316
5317 2009-04-27  Michael Matz  <matz@suse.de>
5318
5319         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
5320         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
5321         to above.
5322
5323 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
5324             Eric Botcazou  <ebotcazou@adacore.com>
5325
5326         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
5327         a label's basic block.
5328         (mark_target_live_regs): Tidy and rework obsolete comments.
5329         Change back DF problem to LIVE.  If a label starts a basic block,
5330         assume that all registers that used to be live then still are.
5331         (init_resource_info): If a label starts a basic block, set its
5332         BLOCK_FOR_INSN accordingly.
5333         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
5334
5335 2009-04-27  Richard Guenther  <rguenther@suse.de>
5336
5337         * tree-flow-inline.h (function_ann): Remove.
5338         (get_function_ann): Likewise.
5339         * tree-dfa.c (create_function_ann): Remove.
5340         * tree-flow.h (struct static_var_ann_d): Remove.
5341         (struct function_ann_d): Likewise.
5342         (union tree_ann_d): Remove fdecl member.
5343         (function_ann_t): Remove.
5344         (function_ann, get_function_ann, create_function_ann): Remove
5345         declarations.
5346
5347 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
5348
5349         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
5350
5351 2009-04-27  Jan Hubicka  <jh@suse.cz>
5352
5353         * ipa-pure-const.c (struct funct_state_d): New fields
5354         state_previously_known, looping_previously_known; remove
5355         state_set_in_source.
5356         (analyze_function): Use new fields.
5357         (propagate): Avoid assumption that state_set_in_source imply
5358         nonlooping.
5359
5360         * tree-ssa-loop-niter.c (finite_loop_p): New function.
5361         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
5362         * cfgloop.h (finite_loop_p): Declare.
5363
5364 2009-04-26  Michael Matz  <matz@suse.de>
5365
5366         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
5367
5368 2009-04-26  Michael Matz  <matz@suse.de>
5369
5370         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
5371         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
5372         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
5373         pass_mark_used_blocks): Remove.
5374         * tree-optimize.c (pass_free_datastructures,
5375         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
5376         * passes.c (init_optimization_passes): Don't call
5377         pass_mark_used_blocks, remove dead code.
5378
5379 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
5380
5381         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
5382         * tree-ssa-live.h (register_ssa_partition): Likewise.
5383
5384 2009-04-26  Michael Matz  <matz@suse.de>
5385
5386         Expand from SSA.
5387         * builtins.c (fold_builtin_next_arg): Handle SSA names.
5388         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
5389         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
5390         SSA names. 
5391         (compare_pairs): Swap cost comparison.
5392         (coalesce_ssa_name): Don't use change_partition_var.
5393         * tree-nrv.c (struct nrv_data): Add modified member.
5394         (finalize_nrv_r): Set it.
5395         (tree_nrv): Use it to update statements.
5396         (pass_nrv): Require PROP_ssa.
5397         * tree-mudflap.c (mf_decl_cache_locals,
5398         mf_build_check_statement_for): Use make_rename_temp.
5399         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
5400         * alias.c (find_base_decl): Handle SSA names.
5401         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
5402         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
5403         * rtl.h (set_reg_attrs_for_parm): Declare.
5404         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
5405         to "optimized", remove unused locals at finish.
5406         (execute_free_datastructures): Make global, call
5407         delete_tree_cfg_annotations.
5408         (execute_free_cfg_annotations): Don't call
5409         delete_tree_cfg_annotations.
5410
5411         * ssaexpand.h: New file.
5412         * expr.c (toplevel): Include ssaexpand.h.
5413         (expand_assignment): Handle SSA names the same as register variables.
5414         (expand_expr_real_1): Expand SSA names.
5415         * cfgexpand.c (toplevel): Include ssaexpand.h.
5416         (SA): New global variable.
5417         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
5418         (SSAVAR): New macro.
5419         (set_rtl): New helper function.
5420         (add_stack_var): Deal with SSA names, use set_rtl.
5421         (expand_one_stack_var_at): Likewise.
5422         (expand_one_stack_var): Deal with SSA names.
5423         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
5424         before unique numbers.
5425         (expand_stack_vars): Use set_rtl.
5426         (expand_one_var): Accept SSA names, add asserts for them, feed them
5427         to above subroutines.
5428         (expand_used_vars): Expand all partitions (without default defs),
5429         then only the local decls (ignoring those expanded already).
5430         (expand_gimple_cond): Remove edges when jumpif() expands an
5431         unconditional jump.
5432         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
5433         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
5434         SSA name.
5435         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
5436         members of SA; deal with PARM_DECL partitions here; expand
5437         all PHI nodes, free tree datastructures and SA.  Commit instructions
5438         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
5439         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
5440         info and statements at start, collect garbage at finish.
5441         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
5442         (VAR_ANN_PARTITION) Remove.
5443         (change_partition_var): Don't declare.
5444         (partition_to_var): Always return SSA names.
5445         (var_to_partition): Only accept SSA names.
5446         (register_ssa_partition): Only check argument.
5447         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
5448         member.
5449         (delete_var_map): Don't free it.
5450         (var_union): Only accept SSA names, simplify.
5451         (partition_view_init): Mark only useful SSA names as used.
5452         (partition_view_fini): Only deal with SSA names.
5453         (change_partition_var): Remove.
5454         (dump_var_map): Use ssa_name instead of partition_to_var member.
5455         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
5456         basic blocks.
5457         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
5458         (struct _elim_graph): New member const_dests; nodes member vector of
5459         ints.
5460         (set_location_for_edge): New static helper.
5461         (create_temp): Remove.
5462         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
5463         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
5464         (new_elim_graph): Allocate const_dests member.
5465         (clean_elim_graph): Truncate const_dests member.
5466         (delete_elim_graph): Free const_dests member.
5467         (elim_graph_size): Adapt to new type of nodes member.
5468         (elim_graph_add_node): Likewise.
5469         (eliminate_name): Likewise.
5470         (eliminate_build): Don't take basic block argument, deal only with
5471         partition numbers, not variables.
5472         (get_temp_reg): New static helper.
5473         (elim_create): Use it, deal with RTL temporaries instead of trees.
5474         (eliminate_phi): Adjust all calls to new signature.
5475         (assign_vars, replace_use_variable, replace_def_variable): Remove.
5476         (rewrite_trees): Only do checking.
5477         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
5478         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
5479         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
5480         contains_tree_r, MAX_STMTS_IN_LATCH,
5481         process_single_block_loop_latch, analyze_edges_for_bb,
5482         perform_edge_inserts): Remove.
5483         (expand_phi_nodes): New global function.
5484         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
5485         functions, initialize new parameter, remember partitions having a
5486         default def.
5487         (finish_out_of_ssa): New global function.
5488         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
5489         don't reset in_ssa_p here, don't disable TER when mudflap.
5490         (pass_del_ssa): Remove.
5491         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
5492         partition members.
5493         (execute_free_datastructures): Declare.
5494         * Makefile.in (SSAEXPAND_H): New variable.
5495         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
5496         * basic-block.h (commit_one_edge_insertion): Declare.
5497         * passes.c (init_optimization_passes): Move pass_nrv and
5498         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
5499         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
5500         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
5501         (redirect_branch_edge): Deal with super block when expanding, split
5502         out jump patching itself into ...
5503         (patch_jump_insn): ... here, new static helper.
5504
5505 2009-04-26  Michael Matz  <matz@suse.de>
5506
5507         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
5508         beyond num_ssa_names.
5509         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
5510         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
5511
5512 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5513
5514         PR inline-asm/39543
5515         * fwprop.c (forward_propagate_asm): New function.
5516         (forward_propagate_and_simplify): Propagate also into __asm, if it
5517         doesn't increase the number of referenced registers.
5518
5519         PR c/39889
5520         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
5521
5522 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5523
5524         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
5525         note_nonlocal_vla_type for nonlocal VLAs.
5526         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
5527         contains_remapped_vars, remap_vla_decls): New functions.
5528         (convert_nonlocal_reference_stmt): If not optimizing, call
5529         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
5530         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
5531         if it wasn't found in var_map.
5532         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
5533         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
5534         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
5535         declare_vars.
5536         * gimplify.c (nonlocal_vlas): New variable.
5537         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
5538         referenced VLAs.
5539         (gimplify_body): Create and destroy nonlocal_vlas.
5540
5541         * dwarf2out.c (loc_descr_plus_const): New function.
5542         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
5543         mem_loc_descriptor, loc_descriptor_from_tree_1,
5544         descr_info_loc, gen_variable_die): Use it.
5545
5546         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
5547         !TREE_STATIC VAR_DECLs.
5548         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
5549         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
5550         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
5551         DECL_BY_REFERENCE is valid.
5552         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
5553         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
5554         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
5555         Copy DECL_BY_REFERENCE.
5556         (struct nesting_copy_body_data): New type.
5557         (nesting_copy_decl): New function.
5558         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
5559         if they have variable length.
5560
5561 2009-04-26  Michael Matz  <matz@suse.de>
5562
5563         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
5564         mark new temporaries for renaming.
5565
5566 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5567
5568         PR c/39581
5569         * c-decl.c (global_bindings_p): Return negative value.
5570         (c_variable_size): New.  Based on variable_size from
5571         stor-layout.c.
5572         (grokdeclarator): Call c_variable_size not variable_size.
5573
5574 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
5575
5576         * config/i386/i386.c (print_operand) ['z']: Fix typo.
5577
5578 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
5579
5580         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
5581         Redefine it to just use mingw/include.
5582         (ASM_SPEC): Rules for -m32 and -m64.
5583         (LINK_SPEC): Use Likewise.
5584         (SPEC_32): New define.
5585         (SPEC_64): Likewise.
5586         (SUB_LINK_SPEC): Likewise.
5587         (MULTILIB_DEFAULTS): New define.
5588         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
5589         Add multilib options.
5590         (MULTILIB_DIRNAMES): Likewise.
5591         (MULTILIB_OSDIRNAMES): Likewise.
5592         (LIBGCC): Likewise.
5593         (INSTALL_LIBGCC): Likewise.
5594
5595 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5596
5597         PR c/39556
5598         * c-tree.h (enum c_inline_static_type): New.
5599         (record_inline_static): Declare.
5600         * c-decl.c (struct c_inline_static, c_inline_statics,
5601         record_inline_static, check_inline_statics): New.
5602         (pop_file_scope): Call check_inline_statics.
5603         (start_decl): Call record_inline_static instead of pedwarning
5604         directly for static in inline function.
5605         * c-typeck.c (build_external_ref): Call record_inline_static
5606         instead of pedwarning directly for static referenced in inline
5607         function.
5608
5609 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
5610
5611         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
5612         not new but only being rescanned.
5613         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
5614         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
5615         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
5616         record_set_info, compute_set, grealloc): Remove.
5617         (recompute_all_luids): New function.
5618         (gcse_main): Don't compute sets, and don't do related memory
5619         allocations/free-ing.  If something changed before the end of the
5620         pass, update LUIDs using recompute_all_luids.
5621         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
5622         (free_gcse_mem): Don't free it either.
5623         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
5624         Use the df insn LUIDs.
5625         (load_killed_in_block): Likewise.
5626         (compute_hash_table_work): Don't compute reg_set_in_block.
5627         (compute_transp): Use DF_REG_DEF_CHAINs.
5628         (local_cprop_pass): Don't use compute_sets and related functions.
5629         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
5630         Use get_max_uid() instead of max_cuid.
5631         (insert_insn_end_basic_block, pre_insert_copy_insn,
5632         update_ld_motion_stores): Don't try to
5633         keep reg_set tables up to date.
5634         (pre_insert_copies): Use df insn LUIDs.
5635         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
5636         (reg_set_info): Don't use extra bitmap argument.
5637         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
5638         information to compute regs_set_in_block.
5639         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
5640         (bypass_jumps): Don't use compute_sets and friends.
5641
5642 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5643
5644         PR testsuite/39710
5645         * opts.c (undocumented_msg): Do not leave blank even with
5646         ENABLE_CHECKING.
5647
5648 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5649
5650         * c-decl.c (build_enumerator): Allow values folding to integer
5651         constants but not integer constant expressions with a pedwarn if
5652         pedantic.
5653
5654 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5655
5656         PR c/39582
5657         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
5658         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
5659         type is an integer constant.
5660
5661 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5662
5663         PR target/39897
5664         * config/i386/i386.c (print_operand) ['z']: Revert handling of
5665         HImode operands.
5666
5667 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5668
5669         PR c/39564
5670         * c-decl.c (grokdeclarator): Diagnose declarations of functions
5671         with variably modified return type and no storage class
5672         specifiers, except for the case of nested functions.  Distinguish
5673         extern declarations of functions with variably modified return
5674         types from those of objects with variably modified types.
5675
5676 2009-04-25  Jan Hubicka  <jh@suse.cz>
5677
5678         * tree.c (list_equal_p): New function.
5679         * tree.h (list_equal_p): Declare.
5680         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5681         basic_block_def, basic_block, const_basic_block): New.
5682         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
5683         (redirect_eh_edge): New function.
5684         (make_eh_edge_update_phi): EH edges are not abnormal.
5685         * except.c: Include tree-flow.h.
5686         (list_match): New function.
5687         (eh_region_replaceable_by_p): New function.
5688         (replace_region): New function.
5689         (hash_type_list): New function.
5690         (hash_eh_region): New function.
5691         (eh_regions_equal_p): New function.
5692         (merge_peers): New function.
5693         (remove_unreachable_regions): Verify EH tree when checking;
5694         merge peers.
5695         (copy_eh_region_1): New function.
5696         (copy_eh_region): New function.
5697         (push_reachable_handler): New function.
5698         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
5699         regions without label but with live RESX.
5700         * except.h (redirect_eh_edge_to_label): New.
5701         * tree-flow.h (redirect_eh_edge): New.
5702         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5703         basic_block_def, basic_block, const_basic_block): Remove.
5704         * Makefile.in (except.o): Add dependency on tree-flow.h
5705         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
5706         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
5707         Remove.
5708
5709 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
5710
5711         PR bootstrap/39645
5712         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
5713         on the destination of memcpy.
5714
5715 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
5716
5717         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
5718         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
5719         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
5720
5721 2009-04-25  Jan Hubicka  <jh@suse.cz>
5722
5723         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
5724         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
5725         to be reached by different label than left.
5726         (update_eh_edges): Update comment; remove edge_to_remove if possible
5727         and return true if suceeded.
5728         (cleanup_empty_eh): Accept sharing map; handle shared regions.
5729         (cleanup_eh): Compute sharing map.
5730         * except.c (remove_eh_handler_and_replace): Add argument if we should
5731         update regions.
5732         (remove_unreachable_regions): Update for label sharing.
5733         (label_to_region_map): Likewise.
5734         (get_next_region_sharing_label): New function.
5735         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
5736         prev_try pointers.
5737         (remove_eh_handler): Update.
5738         (remove_eh_region_and_replace_by_outer_of): New function.
5739         * except.h (struct eh_region): Add next_region_sharing_label.
5740         (remove_eh_region_and_replace_by_outer_of,
5741         get_next_region_sharing_label): Declare.
5742         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
5743
5744 2009-04-25  Jan Hubicka  <jh@suse.cz>
5745
5746         * tree-cfg.c (split_critical_edges): Split also edges where we can't
5747         insert code even if they are not critical.
5748
5749 2009-04-25  Jan Hubicka  <jh@suse.cz>
5750
5751         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5752         (gimple_can_remove_branch_p): EH edges won't remove branch by
5753         redirection.
5754         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
5755         updating of non-abnormal EH edges.
5756         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5757         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
5758         (split_critical_edges): Split also edges where emitting code on them
5759         will lead to splitting later.
5760
5761 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5762             H.J. Lu  <hongjiu.lu@intel.com>
5763
5764         PR target/39590
5765         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
5766         the configured assembler supports fildq and fistpq mnemonics.
5767         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
5768         * configure: Regenerated.
5769         * config.in: Ditto.
5770
5771         * config/i386/i386.c (print_operand): Handle 'Z'.
5772         ['z']: Remove handling of special fild/fist suffixes.
5773         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
5774         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
5775         suffix of fild insn.
5776         (*floatsi<mode>2_vector_mixed): Ditto.
5777         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
5778         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
5779         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
5780         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
5781         * config/i386/gas.h (GAS_MNEMONICS): Remove.
5782
5783 2009-04-25  Ben Elliston  <bje@au.ibm.com>
5784  
5785         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
5786         the source of a set operation.
5787
5788 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
5789
5790         * target.h (struct gcc_target): Add case_values_threshold field.
5791         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
5792         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
5793         * targhooks.c (default_case_values_threshold): New function.
5794         * targhooks.h (default_case_values_threshold): Declare function.
5795         * stmt.c (expand_case): Use case_values_threshold target hook.
5796         * expr.h (case_values_threshold): Remove declartation.
5797         * expr.c (case_values_threshold): Remove function.
5798         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
5799
5800         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
5801         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5802         (avr_case_values_threshold): Declare as static.
5803         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
5804
5805         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
5806         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5807         (mn10300_case_values_threshold): New function.
5808
5809 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5810
5811         * ira.c (setup_cover_and_important_classes): Add enum cast.
5812
5813 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
5814
5815         * genpreds.c (write_enum_constraint_num): Output definition of
5816         CONSTRAINT_NUM_DEFINED_P macro.
5817         * ira.c (setup_cover_and_important_classes): Use
5818         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
5819         
5820 2009-04-24  DJ Delorie  <dj@redhat.com>
5821
5822         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
5823         __SH2A_SINGLE_ONLY__ also.
5824
5825 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
5826
5827         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
5828         (movdf_internal): Ditto.
5829         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
5830         SFmode and DFmode constants.
5831         (ia64_print_operand): Add 'G' format for printing
5832         floating point constants.
5833
5834 2009-04-24  Richard Guenther  <rguenther@suse.de>
5835
5836         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
5837         from unsigned additions.
5838
5839 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
5840
5841         * c-typeck.c (set_init_index): Allow array designators that are
5842         not integer constant expressions with a pedwarn if pedantic.
5843
5844 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5845
5846         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
5847         zero if no overlap in nonzero bits between the operands.
5848
5849 2009-04-24  Ian Lance Taylor  <iant@google.com>
5850
5851         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
5852         (record_dead_and_set_regs): Likewise.
5853         * df.h (struct df_mw_hardreg): Change flags field to int.
5854         (struct df_base_ref): Likewise.
5855         (struct df): Change changeable_flags field to int.
5856         * df-scan.c (df_defs_record): Change clobber_flags to int.
5857         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
5858         constants rather than #define macros.
5859         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
5860         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
5861         (enum dwarf_calling_convention): Likewise.
5862         (enum dwarf_line_number_x_ops): Likewise.
5863         (enum dwarf_call_frame_info): Likewise.
5864         (enum dwarf_source_language): Likewise.
5865         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
5866         (add_calling_convention_attribute): Likewise.
5867         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
5868         (combine_comparisons): Change compcode to int.  Add cast to enum type.
5869         * genrecog.c (maybe_both_true_2): Change c to int.
5870         (write_switch): Likewise.  Add cast to enum type.
5871         * gimplify.c (gimplify_omp_for): Handle return values from
5872         gimplify_expr using MIN rather than bitwise or.
5873         (gimplify_expr): Add cast to enum type.
5874         * ipa-prop.c (update_jump_functions_after_inlining): Change
5875         IPA_BOTTOM to IPA_JF_UNKNOWN.
5876         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
5877         Add casts to enum type.
5878         (setup_cover_and_important_classes): Change cl to int.  Add casts
5879         to enum type.
5880         (setup_class_translate): Change cl and mode to int.
5881         (ira_init_once): Change mode to int.
5882         (free_register_move_costs): Likewise.
5883         (setup_prohibited_mode_move_regs): Add casts to enum type.
5884         * langhooks.c (add_builtin_function_common): Rework assertion that
5885         value fits bitfield.
5886         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
5887         * omega.c (omega_do_elimination): Avoid math on enum types.
5888         * optabs.c (expand_vec_shift_expr): Remove casts to int.
5889         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
5890         int local to handle integral_argment value.
5891         * regmove.c (try_auto_increment): Change PUT_MODE to
5892         PUT_REG_NOTE_KIND.
5893         * reload.c (push_secondary_reload): Add casts to enum type.
5894         (secondary_reload_class, find_valid_class): Likewise.
5895         * reload1.c (emit_input_reload_insns): Likewise.
5896         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
5897         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
5898         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
5899         constant.
5900         * tree.c (build_common_builtin_nodes): Add casts to enum type.
5901         * tree-complex.c (complex_lattice_t): Typedef to int rather than
5902         enum type.
5903         (expand_complex_libcall): Add casts to enum type.
5904         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
5905         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
5906         with ERROR_MARK, not NUM_TREE_CODES.
5907         (vect_create_epilog_for_reduction): Likewise.
5908         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
5909         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
5910         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
5911         enum machine_mode.
5912         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
5913         vect_unused_in_loop.  Change 0 to loop_vect.
5914         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
5915         * var-tracking.c (get_init_value): Change return type to enum
5916         var_init_status.
5917         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
5918         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
5919         arm_fp_model.
5920         (arm_override_options): Add casts to enum type.
5921         (arm_emit_tls_decoration): Likewise.
5922         * config/i386/i386.c (ix86_function_specific_restore): Add casts
5923         to enum type.
5924         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
5925         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
5926         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
5927         enum type.
5928         * config/s390/s390.c (code_for_builtin_64): Change to array of
5929         enum insn_code.
5930         (code_for_builtin_31): Likewise.
5931         (s390_expand_builtin): Change code_for_builtin to enum insn_code
5932         const *.
5933         * config/sparc/sparc.c (sparc_override_options): Change value
5934         field in struct code_model to enum cmodel.  In initializer change
5935         0 to NULL and add cast to enum type.
5936
5937         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
5938         Change all callers.  Issue a -Wc++-compat warning using
5939         lhs_origtype if necessary.
5940         (convert_for_assignment): Issue -Wc++-compat warnings about
5941         invalid conversions to enum type on assignment.
5942         * c-common.h (build_modify_expr): Update declaration.
5943
5944 2009-04-24  Nick Clifton  <nickc@redhat.com>
5945
5946         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
5947         (function_arg_advance): Likewise.
5948         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
5949         5th alternative.
5950
5951 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5952
5953         * config/s390/constraints.md ('I', 'J'): Fix condition.
5954
5955 2009-04-24  Diego Novillo  <dnovillo@google.com>
5956
5957         * gengtype-parse.c (parse_error): Add newline after message.
5958
5959 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5960
5961         * config/i386/sse.md (avxmodesuffixs): Removed.
5962         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
5963         (*avx_pinsr<ssevecsize>): This.
5964
5965 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5966
5967         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
5968         follow chains of regs with a single definition, and allow expressions
5969         that are function_invariant_p.
5970         (simple_rhs_p): Allow expressions that are function_invariant_p.
5971
5972 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
5973
5974         PR middle-end/39867
5975         * fold-const.c (fold_cond_expr_with_comparison): When folding
5976         > and >= to MAX, make sure the MAX uses the same type as the
5977         comparison's operands.
5978
5979 2009-04-24  Nick Clifton  <nickc@redhat.com>
5980
5981         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
5982         addressing for DImode accesses.
5983         (frv_print_operand_address): Handle PLUS case.
5984         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
5985
5986 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
5987
5988         PR rtl-optimization/39794
5989         * alias.c (canon_true_dependence): Add x_addr argument.
5990         * rtl.h (canon_true_dependence): Adjust prototype.
5991         * cse.c (check_dependence): Adjust canon_true_dependence callers.
5992         * cselib.c (cselib_invalidate_mem): Likewise.
5993         * gcse.c (compute_transp): Likewise.
5994         * dse.c (scan_reads_nospill): Likewise.
5995         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
5996         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
5997         canon_base_addr of the group, plus optional offset.
5998         (struct group_info): Rename canon_base_mem to
5999         canon_base_addr.
6000         (get_group_info): Set canon_base_addr to canon_rtx of base, not
6001         canon_rtx of base_mem.
6002
6003 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
6004
6005         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
6006         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
6007
6008 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6009
6010         * config/spu/spu-builtins.h: Delete file.
6011
6012         * config/spu/spu.h (enum spu_builtin_type): Move here from
6013         spu-builtins.h.
6014         (struct spu_builtin_description): Likewise.  Add GTY marker.
6015         Do not use enum spu_function_code or enum insn_code.
6016         (spu_builtins): Add extern declaration.
6017
6018         * config/spu/spu.c: Do not include "spu-builtins.h".
6019         (enum spu_function_code, enum spu_builtin_type_index,
6020         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
6021         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
6022         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
6023         unsigned_V2DI_type_node): Move here from spu-builtins.h.
6024         (spu_builtin_types): Make static.  Add GTY marker.
6025         (spu_builtins): Add extern declaration with GTY marker.
6026         Include "gt-spu.h".
6027
6028         * config/spu/spu-c.c: Do not include "spu-builtins.h".
6029         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
6030         Check programmatically whether all parameters are scalar.
6031
6032         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
6033
6034 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
6035
6036         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
6037         assignment from the constructor either if the target is volatile.
6038
6039 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
6040
6041         * config/arm/arm.md (insv): Do not share operands[0].
6042
6043 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
6044
6045         * config/vxlib-tls.c (active_tls_threads): Delete.
6046         (delete_hook_installed): New.
6047         (tls_delete_hook): Don't delete the delete hook.
6048         (tls_destructor): Delete it here.
6049         (__gthread_set_specific): Adjust installing the delete hook.
6050         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
6051         __gthread_leave_tsd_dtor_context.
6052
6053 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
6054
6055         * c-format.c (gcc_tdiag_char_table): Add support for %E.
6056
6057 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
6058
6059         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
6060         enum type.
6061         (alpha_rtx_costs): Ditto.
6062         (emit_unlikely_jump): Use add_reg_note.
6063         (emit_frame_store_1): Ditto.
6064         (alpha_expand_prologue): Ditto.
6065         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6066         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
6067
6068 2009-04-23  Nick Clifton  <nickc@redhat.com>
6069
6070         * config/v850/v850.md (epilogue): Remove suppressed code.
6071         (return): Rename to return_simple and remove test of frame size.
6072         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
6073         to gen_return_simple.
6074
6075 2009-04-22  Jing Yu  <jingyu@google.com>
6076
6077         PR testsuite/39781
6078         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
6079
6080 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6081
6082         PR C/31499
6083         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
6084         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
6085         value is a VECTOR_CST, the element type is the element type of the
6086         vector.
6087
6088 2009-04-22  DJ Delorie  <dj@redhat.com>
6089
6090         * config/m32c/m32c.h: Update GTY annotations to new syntax.
6091
6092 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
6093
6094         * alias.c (find_base_term): Move around LO_SUM case, so that
6095         CONST falls through into PLUS/MINUS handling.
6096
6097         PR c/39855
6098         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
6099         into 0, use omit_one_operand.
6100
6101 2009-04-23  Ben Elliston  <bje@au.ibm.com>
6102
6103         * config/rs6000/linux-unwind.h (get_regs): Remove type
6104         puns. Change the type of `pc' to an array of unsigned ints and
6105         update all users.  Constify frame24.
6106
6107 2009-04-22  DJ Delorie  <dj@redhat.com>
6108
6109         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
6110         declarations before code.
6111         (current_function_special_page_vector): Likewise.
6112         (m32c_expand_insv): Silence a warning.
6113
6114 2009-04-21  Taras Glek  <tglek@mozilla.com>
6115
6116         * alias.c: Update GTY annotations to new syntax.
6117         * basic-block.h: Likewise.
6118         * bitmap.h: Likewise.
6119         * c-common.h: Likewise.
6120         * c-decl.c: Likewise.
6121         * c-parser.c: Likewise.
6122         * c-pragma.c: Likewise.
6123         * c-tree.h: Likewise.
6124         * cfgloop.h: Likewise.
6125         * cgraph.h: Likewise.
6126         * config/alpha/alpha.c: Likewise.
6127         * config/arm/arm.h: Likewise.
6128         * config/avr/avr.h: Likewise.
6129         * config/bfin/bfin.c: Likewise.
6130         * config/cris/cris.c: Likewise.
6131         * config/darwin.c: Likewise.
6132         * config/frv/frv.c: Likewise.
6133         * config/i386/i386.c: Likewise.
6134         * config/i386/i386.h: Likewise.
6135         * config/i386/winnt.c: Likewise.
6136         * config/ia64/ia64.h: Likewise.
6137         * config/iq2000/iq2000.c: Likewise.
6138         * config/mips/mips.c: Likewise.
6139         * config/mmix/mmix.h: Likewise.
6140         * config/pa/pa.c: Likewise.
6141         * config/pa/pa.h: Likewise.
6142         * config/rs6000/rs6000.c: Likewise.
6143         * config/s390/s390.c: Likewise.
6144         * config/sparc/sparc.c: Likewise.
6145         * config/xtensa/xtensa.c: Likewise.
6146         * cselib.h: Likewise.
6147         * dbxout.c: Likewise.
6148         * dwarf2out.c: Likewise.
6149         * except.c: Likewise.
6150         * except.h: Likewise.
6151         * fixed-value.h: Likewise.
6152         * function.c: Likewise.
6153         * function.h: Likewise.
6154         * gimple.h: Likewise.
6155         * integrate.c: Likewise.
6156         * optabs.c: Likewise.
6157         * output.h: Likewise.
6158         * real.h: Likewise.
6159         * rtl.h: Likewise.
6160         * stringpool.c: Likewise.
6161         * tree-data-ref.c: Likewise.
6162         * tree-flow.h: Likewise.
6163         * tree-scalar-evolution.c: Likewise.
6164         * tree-ssa-address.c: Likewise.
6165         * tree-ssa-alias.h: Likewise.
6166         * tree-ssa-operands.h: Likewise.
6167         * tree.c: Likewise.
6168         * tree.h: Likewise.
6169         * varasm.c: Likewise.
6170         * varray.h: Likewise.
6171         * vec.h: Likewise.
6172         * coretypes.h: Do not define GTY macro if it is already defined.
6173         * doc/gty.texi: Update GTY documentation to new syntax.
6174         * gengtype-lex.l: Enforce attribute-like syntax for GTY
6175         annotations on structs.
6176         * gengtype-parse.c: Likewise.
6177
6178 2009-04-22  Mark Heffernan  <meheff@google.com>
6179
6180         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
6181
6182 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
6183
6184         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
6185         where appropriate.
6186
6187 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
6188
6189         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
6190         the same as a PLUS without a shift.  Increase the cost of a
6191         CONST_INT in MULT.
6192
6193 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6194
6195         * Makefile.in: Update dependencies.
6196         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
6197         * errors.h: Remove bogus comment about compatibility.
6198         (warning): Update declaration.
6199         * genautomata.c: Update all calls to warning.
6200         * gimple.c: Do not include errors.h. Include toplev.h.
6201         * tree-ssa-structalias.c: Do not include errors.h.
6202         * omega.c: Likewise.
6203         * tree-ssa-reassoc.c: Likewise.
6204         * config/spu/spu-c.c: Likewise.
6205         * config/spu/t-spu-elf: Update dependencies.
6206
6207 2009-04-22  Richard Guenther  <rguenther@suse.de>
6208
6209         PR tree-optimization/39824
6210         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
6211         make sure the types are compatible.
6212
6213 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6214
6215         PR c++/14875
6216         * c-common.c (c_parse_error): Take a token_flags parameter.
6217         Use token_type for the token type instead.
6218         Pass token_flags to cpp_type2name.
6219         * c-common.h (c_parse_error): Update declaration.
6220         * c-parser.c (c_parser_error): Pass 0 as token flags.
6221
6222 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
6223
6224         PR rtl-optimization/39580
6225         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
6226         
6227 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6228
6229         * function.c (expand_function_end): Do not emit a jump to the "naked"
6230         return label for fall-through returns.
6231         * except.c (sjlj_emit_function_exit): Always place the call to the
6232         unregister function at the location installed by expand_function_end.
6233
6234 2009-04-22  Richard Guenther  <rguenther@suse.de>
6235
6236         PR tree-optimization/39845
6237         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
6238         (gen_inbound_check): Likewise.
6239
6240 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
6241
6242         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
6243         padding for PPC.
6244         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
6245         * config/vxlib.c (__gthread_once): Add race guard for PPC.
6246
6247 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6248
6249         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
6250         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
6251         shift counts to avoid out-of-bounds array accesses.
6252
6253 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6254
6255         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
6256         (Pmode): Move above.
6257
6258 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
6259
6260         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
6261         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
6262         GET_CODE macro.  Use IN_RANGE macro where appropriate.
6263         * config/alpha/alpha.h: Ditto.
6264         * config/alpha/alpha.md: Ditto.
6265         * config/alpha/constraints.md: Ditto.
6266         * config/alpha/predicates.md: Ditto.
6267         
6268 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6269
6270         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
6271         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6272         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6273         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6274         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6275         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6276         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6277         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6278         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6279         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6280         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6281         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6282         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6283         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6284         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6285         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6286         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6287         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6288         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6289         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6290         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6291         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6292         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6293         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6294         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6295         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6296         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6297
6298 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6299
6300         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
6301         references from comments.
6302         * cfgbuild.c: (count_basic_blocks): Delete.
6303         (find_basic_blocks_1): Delete.
6304         (find_basic_blocks): Delete.
6305         * except.c (finish_eh_generation): Make static.  Move comment from
6306         except.h here.  Remove find_basic_blocks references from comments.
6307         * except.h (finish_eh_generation): Delete.
6308         * basic-block.h (find_basic_blocks): Delete.
6309         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
6310
6311 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6312
6313         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
6314         (sdbout_parms):  Likewise.
6315
6316 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6317
6318         * config/sh/sh.c (prepare_cbranch_operands): Use
6319         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
6320         (expand_cbranchdi4): Likewise.
6321         (from_compare): Add cast to enum type.
6322         (expand_cbranchsi4): Use add_reg_note.
6323         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
6324         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
6325         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
6326         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6327         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
6328         instead of CODE_FOR_nothing.
6329         (cbranchdi4): Likewise.  Fix the order of arguments for
6330         gen_rtx_fmt_ee.
6331         (push_fpscr): Use add_reg_note.
6332         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
6333         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
6334         
6335 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
6336
6337         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
6338         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6339         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6340         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
6341         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
6342         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
6343         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
6344         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
6345         config/alpha/x-vms, config/arc/t-arc,
6346         config/arm/README-interworking, config/arm/arm-c.c,
6347         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
6348         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
6349         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
6350         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
6351         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
6352         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
6353         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
6354         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
6355         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
6356         config/cris/t-elfmulti, config/crx/t-crx,
6357         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
6358         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
6359         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
6360         config/h8300/t-h8300, config/i386/athlon.md,
6361         config/i386/darwin-libgcc.10.4.ver,
6362         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
6363         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
6364         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
6365         config/i386/t-linux64, config/i386/t-nwld,
6366         config/i386/t-rtems-i386, config/i386/t-sol2-10,
6367         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
6368         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
6369         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
6370         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
6371         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
6372         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
6373         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
6374         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
6375         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
6376         config/m68k/t-uclinux, config/mcore/t-mcore,
6377         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
6378         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
6379         config/mips/crtn.asm, config/mips/irix-crti.asm,
6380         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
6381         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
6382         config/mips/mips-fixed.md, config/mips/sb1.md,
6383         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
6384         config/mips/t-iris6, config/mips/t-isa3264,
6385         config/mips/t-libgcc-mips16, config/mips/t-linux64,
6386         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
6387         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
6388         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
6389         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
6390         config/mn10300/t-linux, config/mn10300/t-mn10300,
6391         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
6392         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
6393         config/picochip/libgccExtras/clzsi2.asm,
6394         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
6395         config/rs6000/darwin-libgcc.10.4.ver,
6396         config/rs6000/darwin-libgcc.10.5.ver,
6397         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
6398         config/rs6000/t-aix43, config/rs6000/t-aix52,
6399         config/rs6000/t-darwin, config/rs6000/t-fprules,
6400         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
6401         config/rs6000/t-lynx, config/rs6000/t-netbsd,
6402         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
6403         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
6404         config/rs6000/t-rtems, config/rs6000/t-spe,
6405         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
6406         config/score/t-score-elf, config/sh/divcost-analysis,
6407         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
6408         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
6409         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
6410         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
6411         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
6412         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
6413         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
6414         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
6415         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
6416         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
6417         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
6418         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
6419         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
6420         limitx.h, version.c, xcoff.h: Add copyright and license notices.
6421         * config/h8300/genmova.sh: Include copyright and license notices
6422         in generated output.
6423         * config/h8300/mova.md: Regenerate.
6424         * doc/install.texi2html: Include word "Copyright" in copyright
6425         notice and use name "Free Software Foundation, Inc.".
6426         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6427         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6428         ChangeLog-2007, ChangeLog-2008: Correct dates.
6429
6430 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
6431
6432         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
6433         NE_EXPR operations as well.
6434         * c-parser.c (c_parser_condition): Do not set location information on
6435         the condition.
6436         (c_parser_conditional_expression): Likewise.
6437         (c_parser_binary_expression): Set location information on operators.
6438         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
6439         TRUTH_NOT_EXPR has been folded.
6440         * fold-const.c (fold_truth_not_expr): Copy location information from
6441         the incoming expression to the outgoing one.
6442         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
6443         recursive calls on the LHS of the operator but pass that of the
6444         operator to recursive calls on the RHS of the operator.  Set it
6445         on the COND_EXPR.
6446         (shortcut_cond_expr): Set the locus of the operator on the second
6447         COND_EXPR and that of the expression on the first in degenerate cases.
6448         Pass the locus of the expression to calls to shortcut_cond_r.
6449         Set the locus of the 'then' block on the associated jump, if any.
6450         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
6451         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
6452         expression to call to gimplify_boolean_expr.
6453
6454 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
6455
6456         * config.gcc: Add additional configuration for
6457         i686-w64-mingw* and x86_64-w64-mingw* triplet.
6458         * config/i386/mingw-w64.h: New mingw-w64 specific header.
6459         (CPP_SPEC): Redefine for allowing -municode option.
6460         (STARTFILE_SPEC): Likewise.
6461         * config/i386/t-mingw-w64: New.
6462         * config/i386/mingw-w64.opt: New.
6463         (municode): Add new target option.
6464         * doc/invoke.texi (municode): Add documentation for new option.
6465
6466 2009-04-21  Ian Lance Taylor  <iant@google.com>
6467
6468         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6469         Correct test for number of arguments.
6470         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
6471
6472 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
6473
6474         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
6475         argument of emit_library_call.
6476
6477 2009-04-21  Richard Guenther  <rguenther@suse.de>
6478
6479         PR middle-end/39829
6480         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
6481         inside VIEW_CONVERT_EXPRs.
6482
6483 2009-04-21  Martin Jambor  <mjambor@suse.cz>
6484
6485         * tree-switch-conversion.c (build_constructors): Split a long line.
6486         (constructor_contains_same_values_p): New function.
6487         (build_one_array): Create assigns of constants if possible, do not
6488         call mark_sym_for_renaming, call update_stmt.
6489         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
6490         make_rename_temp.  Do not call mark_symbols_for_renaming, call
6491         update_stmt.
6492         (gen_def_assigns): Do not call mark_symbols_for_renaming or
6493         find_new_referenced_vars, call update_stmt.
6494         (gen_inbound_check): Use create_tmp_var and create ssa names manually
6495         instead of calling make_rename_temp.  Do not call
6496         find_new_referenced_vars or mark_symbols_for_renaming, call
6497         update_stmt.
6498
6499 2009-04-21  Richard Guenther  <rguenther@suse.de>
6500
6501         PR tree-optimization/39827
6502         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
6503         (tree_ssa_phiprop): Pass the correct array size.
6504
6505 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
6506
6507         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
6508
6509 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6510
6511         PR 16202
6512         * c-typeck.c (lvalue_p): Move declaration ...
6513         * c-common.h (lvalue_p): ... to here.
6514         * c-common.c (candidate_equal_p): New.
6515         (add_tlist): Use it.
6516         (merge_tlist): Use it.
6517         (warn_for_collisions_1): Likewise.
6518         (warning_candidate_p): Accept more candidates.
6519         (verify_tree): A warning candidate can be an expression. Use
6520         candidate_equal_p.
6521
6522 2009-04-21  Ben Elliston  <bje@au.ibm.com>
6523
6524         PR target/5267
6525         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
6526         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
6527         options.  Remove -mcall-solaris documentation.
6528
6529 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6530
6531         PR c++/13358
6532         * doc/invoke.texi (-Wlong-long): Update description.
6533         * c-lex (interpret_integer): Only warn if there was no previous
6534         overflow and -Wlong-long is enabled.
6535         * c-decl.c (declspecs_add_type): Drop redundant flags.
6536         * c.opt (Wlong-long): Init to -1.
6537         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
6538         and front-end warn_long_long. Wlong-long only depends on other
6539         flags if it is uninitialized.
6540         * c-parser.c (disable_extension_diagnostics): warn_long_long is
6541         the same for CPP and FE.
6542         (restore_extension_diagnostics): Likewise.
6543
6544 2009-04-20  Ian Lance Taylor  <iant@google.com>
6545
6546         Fix enum conversions which are invalid in C++:
6547         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
6548         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
6549         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
6550         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
6551         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
6552         (dbxout_parms): Likewise.
6553         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
6554         (df_clear_flags): Likewise.
6555         * df-problems.c (df_rd_bb_local_compute_process_def): Change
6556         top_flag parameter to int.
6557         (df_chain_create_bb_process_use): Likewise.
6558         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
6559         Remove cast.
6560         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
6561         (df_ref_create_structure, df_def_record_1): Likewise.
6562         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
6563         (df_notes_rescan): Change 0 to VOIDmode in function call.
6564         (df_get_call_refs, df_insn_refs_collect): Likewise.
6565         (df_bb_regs_collect): Likewise.
6566         (df_entry_block_defs_collect): Likewise.
6567         (df_exit_block_uses_collect): Likewise.
6568         * df.h: Update declarations.
6569         * double-int.c (double_int_divmod): Add cast to enum type.
6570         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
6571         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
6572         (based_loc_descr): Likewise.
6573         (loc_descriptor_from_tree_1): Change first_op and second_op to
6574         enum dwarf_location_atom.  Add cast to enum type.
6575         * expmed.c (init_expmed): Change 0 to SET in function call.
6576         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
6577         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
6578         (do_store_flag): Likewise.
6579         * fixed-value.h (struct fixed_value): Change mode to enum
6580         machine_mode.
6581         * function.c (assign_parms): Change 0 to VOIDmode in function call.
6582         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
6583         function call.
6584         (insert_insn_decl, insert_decl, insert_state): Likewise.
6585         (automata_list_finish): Likewise.
6586         * genrecog.c (process_define_predicate): Add cast to enum type.
6587         * gensupport.c (init_predicate_table): Add cast to enum type.
6588         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
6589         function call.
6590         (gimple_build_call_1, gimple_build_label): Likewise.
6591         (gimple_build_goto, gimple_build_asm_1): Likewise.
6592         (gimple_build_switch_1, gimple_build_cdt): Likewise.
6593         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
6594         (enum fallback): Rename from enum fallback_t.
6595         (fallback_t): Typedef as int.
6596         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
6597         GSI_SAME_STMT in function call.
6598         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
6599         enum type.
6600         (setup_reg_class_relations): Likewise.
6601         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
6602         (setup_prohibited_class_mode_regs): Add cast to enum type.
6603         (setup_prohibited_mode_move_regs): Likewise.
6604         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
6605         (record_address_regs): Change i to enum reg_class.
6606         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
6607         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
6608         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
6609         (GET_MODE_2XWIDER_MODE): Likewise.
6610         (GET_CLASS_NARROWEST_MODE): Likewise.
6611         * omp-low.c (expand_omp_for): Add cast to enum type.
6612         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
6613         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
6614         * postreload.c (reload_cse_simplify_operands): Change rclass local
6615         to enum reg_class.
6616         * predict.c (combine_predictions_for_insn): Change best_predictor
6617         and predictor to enum br_predictor.
6618         (combine_predictions_for_bb): Likewise.
6619         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
6620         use SET_PREDICT_EXPR_OUTCOME.
6621         * real.c (real_arithmetic): Change icode to code in function call.
6622         * reginfo.c (init_move_cost): Add casts to enum type.
6623         (init_reg_sets_1, init_fake_stack_mems): Likewise.
6624         * regmove.c (regclass_compatible_p): Change class0 and class1 to
6625         enum reg_class.
6626         * reload.c (find_valid_class): Add casts to enum type.
6627         (push_reload): Change 0 to NO_REGS in function call.
6628         (find_reloads): Change this_alternative to array of enum
6629         reg_class.  Remove some now-unnecessary casts.
6630         (make_memloc): Change 0 to VOIDmode in function call.
6631         * reload1.c (reload): Change 0 to VOIDmode in function call.
6632         (eliminate_regs_1, elimination_effects): Likewise.
6633         (eliminate_regs_in_insn): Likewise.
6634         (emit_input_reload_insns): Add cast to enum type.
6635         (delete_output_reload): Change 0 to VOIDmode in function call.
6636         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
6637         to enum type in function call.
6638         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
6639         (SET_PREDICT_EXPR_OUTCOME): Define.
6640         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
6641         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
6642         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
6643         (dump_function): Likewise.
6644         * tree-dump.h: Update declarations.
6645         * tree-pass.h: Update declarations.
6646         * varasm.c (assemble_integer): Change mclass to enum mode_class.
6647         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
6648         enum type.
6649         (arm_rtx_costs_1): Correct parenthesization.
6650         (arm_rtx_costs): Add casts to enum type.
6651         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
6652         (vfp_emit_fstmd): Use add_rg_note.
6653         (emit_multi_reg_push, emit_sfm): Likewise.
6654         (thumb_set_frame_pointer): Likewise.
6655         (arm_expand_prologue): Likewise.
6656         (arm_regno_class): Change return type to enum reg_class.
6657         (thumb1_expand_prologue): Use add_reg_note.
6658         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
6659         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
6660         in function call.
6661         * config/arm/gentune.sh: Add cast to enum type.
6662         * config/arm/arm-tune.md: Rebuild.
6663         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
6664         (ix86_split_fp_branch, predict_jump): Likewise.
6665         (ix86_expand_multi_arg_builtin): Change sub_code from enum
6666         insn_code to enum rtx_code.
6667         (ix86_builtin_vectorized_function): Add cast to enum type.
6668         * config/i386/i386.md (truncdfsf2): Change slot to enum
6669         ix86_stack_slot.
6670         (truncxf<mode>2, isinf<mode>2): Likewise.
6671         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
6672         enum type.
6673         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
6674         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
6675         (insert_bundle_state): Change 1 to INSERT in function call.
6676         (ia64_add_bundle_selector_before): Likewise.
6677         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
6678         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
6679         (restore_stack_nonlocal): Likewise.
6680         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
6681         function call.
6682         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
6683         function call.
6684         (mips_rtx_costs): Likewise.
6685         (mips_override_options): Add casts to enum type.
6686         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
6687         in function call.
6688         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
6689         (store_reg, set_reg_plus_d): Likewise.
6690         (hppa_expand_prologue, hppa_profile_hook): Likewise.
6691         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
6692         cast to enum type.
6693         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
6694         function call.
6695         (emit_unlikely_jump): Use add_reg_note.
6696         (rs6000_emit_allocate_stack): Likewise.
6697         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
6698         (output_toc): Change 1 to INSERT in function call.
6699         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
6700         (rs6000_initialize_trampoline): Likewise.
6701         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
6702         function call.
6703         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
6704         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
6705         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
6706         (save_gprs): Use add_reg_note.
6707         (s390_emit_prologue): Likewise.
6708         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6709         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
6710         (sparc_fold_builtin): Add cast to enum type.
6711         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
6712         enum insn_code.
6713         (spu_expand_prologue): Use add_reg_note.
6714         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
6715
6716 2009-04-20  Ian Lance Taylor  <iant@google.com>
6717
6718         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
6719         (c_parser_postfix_expression_after_primary): Get VEC for list of
6720         arguments.  Get original types of arguments.  Call
6721         build_function_call_vec.
6722         (cached_expr_list_1, cached_expr_list_2): New static variables.
6723         (c_parser_expr_list): Change return type to VEC *.  Add
6724         p_orig_types parameter.  Change all callers.
6725         (c_parser_release_expr): New static function.
6726         (c_parser_vec_to_tree_list): New static function.
6727         * c-typeck.c (build_function_call): Rewrite to build a VEC and
6728         call build_function_call_vec.
6729         (build_function_call_vec): New function, based on old
6730         build_function_call.
6731         (convert_arguments): Remove nargs and argarray parameters.  Change
6732         values to a VEC.  Add origtypes parameter.
6733         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
6734         (convert_for_assignment): Add origtype parameter.  Change all
6735         callers.  If warn_cxx_compat, check for conversion to an enum
6736         type when calling a function.
6737         (store_init_value): Add origtype parameter.  Change all callers.
6738         (digest_init): Likewise.
6739         (struct init_node): Add origtype field.
6740         (add_pending_init): Add origtype parameter.  Change all callers.
6741         (output_init_element): Likewise.
6742         (output_pending_init_elements): Pass origtype from init_node to
6743         output_init_element.
6744         (process_init_element): Pass origtype from c_expr to
6745         output_init_element.
6746         (c_finish_return): Add origtype parameter.  Change all callers.
6747         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
6748         caller.
6749         (sync_resolve_params): Likewise.
6750         (sync_resolve_return): Change params to first_param.  Change caller.
6751         (resolve_overloaded_builtins): Change params to VEC *.  Change
6752         callers.  Save first parameter around call to build_function_call_vec.
6753         * c-decl.c (finish_decl): Add origtype parameter.  Change all
6754         callers.  Call build_function_call_vec rather than
6755         build_function_call for cleanup.
6756         * c-tree.h: Update declarations.
6757         * c-common.h: Update declarations.
6758         * stub-objc.c (objc_rewrite_function_call): Change parameter from
6759         params to first_param.
6760         * target.h (struct gcc_target): Change resolve_overloaded_builtin
6761         params parameter from tree to void *.
6762         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6763         Change arglist parameter to have type void *, and to be a pointer
6764         to a VEC.
6765         * config/rs6000/rs6000-protos.h
6766         (altivec_resolve_overloaded_builtin): Update declaration.
6767         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
6768         fnargs parameter to have type void *, and to be a pointer to a
6769         VEC.  Call build_function_call_vec instead of
6770         build_function_call.
6771         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
6772
6773 2009-04-20  Joey Ye  <joey.ye@intel.com>
6774             Xuepeng Guo  <xuepeng.guo@intel.com>
6775             H.J. Lu  <hongjiu.lu@intel.com>
6776
6777         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
6778
6779         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
6780         (IX86_LEA_PRIORITY): Likewise.
6781         (distance_non_agu_define): New function.
6782         (distance_agu_use): Likewise.
6783         (ix86_lea_for_add_ok): Likewise.
6784         (ix86_dep_by_shift_count): Likewise.
6785
6786         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
6787         should split for LEA.
6788
6789         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
6790         function.
6791         (ix86_dep_by_shift_count): Likewise.
6792
6793 2009-04-20  Richard Guenther  <rguenther@suse.de>
6794
6795         * expr.c (handled_component_p): Move ...
6796         * tree.h (handled_component_p): ... here.
6797         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
6798         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
6799         and REALPART_EXPR to be in one group.
6800
6801 2009-04-20  Richard Guenther  <rguenther@suse.de>
6802
6803         * basic-block.h (get_all_dominated_blocks): Declare.
6804         * dominance.c (get_all_dominated_blocks): New function.
6805         * tree-cfg.c (get_all_dominated_blocks): Remove.
6806         (remove_edge_and_dominated_blocks): Adjust.
6807         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
6808         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
6809         instead of recursing.
6810
6811 2009-04-20  Doug Kwan  <dougkwan@google.com>
6812
6813         * cgraph.h (cgraph_node_ptr): New type for vector functions.
6814         (struct cgraph_node_set_def): New type.
6815         (cgraph_node_set) New type. Also declare vector functions.
6816         (struct cgraph_node_set_element_def): New type.
6817         (cgraph_node_set_element): Ditto.
6818         (cgraph_node_set_iterator): New iterator type.
6819         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
6820         cgraph_node_set_remove, dump_cgraph_node_set,
6821         debug_cgraph_node_set): New prototypes.
6822         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
6823         cgraph_node_set_size): New inlines.
6824         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
6825         including cgraph.h.
6826         (struct ipa_opt_pass): Add struct cgraph_node_set_def
6827         argument to function 'write_summary'.
6828         * ipa.c: Include ggc.h.
6829         (hash_cgraph_node_set_element,
6830         eq_cgraph_node_set_element, cgraph_node_set_new,
6831         cgraph_node_set_add, cgraph_node_set_remove,
6832         cgraph_node_set_find, dump_cgraph_node_set,
6833         debug_cgraph_node_set): New functions.
6834         * Makefile.in (ipa.o): Add dependency on GGC_H.
6835
6836 2009-04-20  Ira Rosen  <irar@il.ibm.com>
6837
6838         PR tree-optimization/39675
6839         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
6840         check of the return code of vect_schedule_slp. Check that
6841         stmt_vec_info still exists for the statement, before checking its
6842         vectorization type.
6843
6844 2009-04-20  Michael Matz  <matz@suse.de>
6845
6846         * Makefile.in (generated_files): Take out $(simple_generated_c).
6847
6848 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
6849
6850         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
6851         (UINTPTR_TYPE):  Likewise.
6852
6853 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6854
6855         PR c/37481
6856         * c-typeck.c (digest_init): Check for initializing an array with a
6857         string literal.
6858
6859 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6860
6861         PR c/19771
6862         * c-semantics.c (pop_stmt_list): Propagate
6863         STATEMENT_LIST_HAS_LABEL to parent statement list.
6864
6865 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
6866
6867         * config/mips/mips.h (mips_tune_attr): New macro.
6868         * config/mips/mips.md (cpu): Use it.
6869
6870 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6871
6872         PR c/38243
6873         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
6874         declaring a tag.
6875
6876 2009-04-19  Diego Novillo  <dnovillo@google.com>
6877
6878         * toplev.c (compile_file): Move call to coverage_finish ...
6879         * cgraphunit.c (ipa_passes): ... here.
6880         Call cgraph_process_new_functions.
6881         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
6882         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
6883
6884 2009-04-19  Jan Hubicka  <jh@suse.cz>
6885
6886         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
6887         cfun.
6888         (dump_cgraph_node): Dump can throw external flag.
6889         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
6890
6891 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6892
6893         PR c/32061
6894         PR c++/36954
6895         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
6896         * common.opt (Wlogical-op): Move from here...
6897         * c.opt (Wlogical-op): ... to here.
6898         * c-typeck.c (parser_build_binary_op): Update call to
6899         warn_logical_operator.
6900         * c-opts.c (c_common_post_options): Enable warn_logical_op with
6901         extra_warnings.
6902         * c-common.c (warn_logical_op): Update.
6903         * c-common.h (warn_logical_op): Update declaration.
6904
6905 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
6906
6907         * tree.c (protected_set_expr_location): Fix formatting.
6908
6909 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6910
6911         PR c/27676
6912         * c-typeck.c (readonly_warning): new.
6913         (build_unary_op, build_modify_expr): Use readonly_warning for
6914         storing into something readonly but not const-qualified.
6915
6916 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6917
6918         PR c/22367
6919         * c-typeck.c (build_unary_op): Check for taking address of
6920         expression of type void.
6921
6922 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6923
6924         PR c/35210
6925         * c-typeck.c (build_function_call): Check for calling a function
6926         with qualified void return types.  Call require_complete_type when
6927         generating a trap.
6928
6929 2009-04-18  Jan Hubicka  <jh@suse.cz>
6930
6931         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
6932         Set nothrow flag.
6933         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
6934         can_throw_external flag.
6935         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
6936         * ipa-pure-const.c (ignore_edge): New function.
6937         (propagate): Compute order for NOTHROW computation; set NOTHROWs
6938         only over can_throw_external edges.
6939         (local_pure_const): Add nothrow flag.
6940         * ipa-utils.c (searchc): Add ignore_edge callback.
6941         (ipa_utils_reduced_inorder): Add ignore_edge callback.
6942         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
6943         (set_nothrow_function_flags): Update cgraph.
6944         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
6945
6946 2009-04-18  Richard Guenther  <rguenther@suse.de>
6947
6948         PR middle-end/39804
6949         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
6950         (fold_stmt): ... this and ...
6951         (fold_stmt_inplace): ... this.
6952         (fold_stmt_1): Fold references in calls and asms.
6953         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
6954
6955 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6956
6957         * tree-vrp.c (ssa_name_nonzero_p): Remove.
6958         * tree.h: Remove the prototype for ssa_name_nonzero_p.
6959
6960 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6961
6962         * tree.c (function_args_count): Remove.
6963         * tree.h: Remove the prototype for function_args_count.
6964
6965 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6966
6967         * tree-iterator.c (expr_only): Remove.
6968         * tree.h: Remove the prototype for expr_only.
6969
6970 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6971
6972         * reginfo.c (cannot_change_mode_set_regs): Remove.
6973         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
6974
6975 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
6976
6977         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
6978         whether operands 0 and 1 overlaps.
6979
6980 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6981
6982         PR middle-end/36902
6983         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
6984         pointer. Use warning_at instead of warning.
6985         (search_for_addr_array): Likewise.
6986         (check_array_bounds): Likewise.
6987         (check_all_array_refs): Check that the incoming edge is not in the
6988         list of edges to be removed.
6989         (check_all_array_refs): Avoid the temporal pointer.
6990         (vrp_visit_cond_stmt): Fix typo.
6991         (simplify_switch_using_ranges): Handle the case where the switch
6992         index is an integer constant.
6993
6994 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
6995
6996         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
6997
6998 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6999
7000         * doc/extend.texi, doc/invoke.texi: Fix typos.
7001
7002 2009-04-17  Cary Coutant  <ccoutant@google.com>
7003
7004         * tree-flow-inline.h (get_lineno): Fix inverted test.
7005
7006 2009-04-17  Diego Novillo  <dnovillo@google.com>
7007
7008         * tree-ssa-pre.c (create_expression_by_pieces): Remove
7009         assertion for AVAIL_OUT.
7010
7011 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
7012
7013         PR target/38627
7014         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
7015         * config/sh/linux-atomic.asm: Likewise.
7016
7017 2009-04-17  Diego Novillo  <dnovillo@google.com>
7018
7019         * except.c (debug_eh_tree): New.
7020         (struct eh_region, struct eh_status): Move ...
7021         * except.h: ... here.
7022         (add_type_for_runtime): Declare extern.
7023         (lookup_type_for_runtime): Likewise.
7024         (debug_eh_tree): Declare.
7025         * Makefile.in (GTFILES): List except.h before except.c
7026
7027 2009-04-17  Diego Novillo  <dnovillo@google.com>
7028
7029         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
7030         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
7031         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
7032         (find_vars_r): ... here.
7033         * tree-flow.h (find_referenced_vars_in): Declare.
7034         * tree-ssa-pre.c (create_expression_by_pieces): Assert
7035         that AVAIL_OUT exists for BLOCK.
7036         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
7037         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
7038         (tree-parloops.o): Likewise.
7039
7040 2009-04-17  Simon Baldwin  <simonb@google.com>
7041
7042         * toplev.c (default_tree_printer): Add handling for %E format.
7043
7044 2009-04-17  Diego Novillo  <dnovillo@google.com>
7045
7046         * tree-pretty-print.c (dump_generic_node): Add break after
7047         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
7048         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
7049         FUNCTION_TYPE together.  Call print_struct_decl when printing
7050         structures and TDF_SLIM is not given.
7051         (print_struct_decl): Fix logic for detecting recursion.
7052
7053 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
7054
7055         PR 31567
7056         * gcc.c (create_at_file): New.
7057         (compile_input_file_p): New.
7058         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
7059         * main.c (main): Update call to toplev_main.
7060         * toplev.c (toplev_main): Change signature. Call expandargv.
7061         * toplev.h (toplev_main): Change signature.
7062
7063 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
7064
7065         * dwarf2out.c (field_byte_offset): Use the type size as the field size
7066         if the latter is not constant.
7067
7068 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
7069
7070         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
7071
7072 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
7073
7074         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
7075         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
7076
7077 2009-04-17  Richard Guenther  <rguenther@suse.de>
7078
7079         * tree-ssa-structalias.c (get_constraint_for_component_ref):
7080         Handle component references view-converting an invariant address.
7081
7082 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
7083
7084         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
7085         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
7086         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
7087         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
7088         Use @deftypevr rather than @deftypevar.
7089
7090 2009-04-17  Richard Guenther  <rguenther@suse.de>
7091
7092         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
7093         (get_prop_source_stmt): Likewise.
7094         (can_propagate_from): Likewise.
7095
7096 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
7097
7098         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
7099         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
7100         (--with-multilib-list): Add default value.
7101         * configure: Regenerate.
7102         * Makefile.in (TM_ENDIAN_CONFIG): Define.
7103         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
7104         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
7105         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
7106         Don't add default cpu to multilib list unnecessarily, but do enable
7107         the relevant compiler option..
7108         Add support for --with-multilib-list=<blank> and
7109         --with-multilib-list=!<somelib> to supress unwanted multilibs.
7110         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
7111         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
7112         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
7113         TM_MULTILIB_CONFIG.
7114         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
7115         (MULTILIB_OSDIRNAMES): New variable.
7116         * config/sh/t-1e: Delete file.
7117         * config/sh/t-mlib-sh1: Delete file.
7118         * config/sh/t-mlib-sh2: Delete file.
7119         * config/sh/t-mlib-sh2a: Delete file.
7120         * config/sh/t-mlib-sh2a-nofpu: Delete file.
7121         * config/sh/t-mlib-sh2a-single: Delete file.
7122         * config/sh/t-mlib-sh2a-single-only: Delete file.
7123         * config/sh/t-mlib-sh2e: Delete file.
7124         * config/sh/t-mlib-sh3e: Delete file.
7125         * config/sh/t-mlib-sh4: Delete file.
7126         * config/sh/t-mlib-sh4-nofpu: Delete file.
7127         * config/sh/t-mlib-sh4-single: Delete file.
7128         * config/sh/t-mlib-sh4-single-only: Delete file.
7129         * config/sh/t-mlib-sh4a: Delete file.
7130         * config/sh/t-mlib-sh4a-nofpu: Delete file.
7131         * config/sh/t-mlib-sh4a-single: Delete file.
7132         * config/sh/t-mlib-sh4a-single-only: Delete file.
7133         * config/sh/t-mlib-sh4al: Delete file.
7134         * config/sh/t-mlib-sh5-32media: Delete file.
7135         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
7136         * config/sh/t-mlib-sh5-64media: Delete file.
7137         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
7138         * config/sh/t-mlib-sh5-compact: Delete file.
7139         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
7140         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
7141         * doc/install.texi (Options specification): Add
7142         --with-multilib-list and --with-endian.
7143
7144 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
7145
7146         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
7147         REVISION_c.
7148         (OBJS-common): Add plugin-version.o.
7149         (plugin-version.o): New.
7150         * gcc-plugin.h (plugin_gcc_version): New.
7151         (plugin_default_version_check): New.
7152         (plugin_init_func, plugin_init): Add version argument.
7153         * plugin-version.c: New.
7154         * plugin.c (str_plugin_gcc_version_name): New.
7155         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
7156         pass it to the init function.
7157         (plugin_default_version_check): New.
7158
7159 2009-04-17  Richard Guenther  <rguenther@suse.de>
7160
7161         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
7162         for decl-vs-decl disambiguation.
7163
7164 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
7165
7166         * config/s390/s390.h (s390_tune_attr): New macro definition.
7167         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
7168
7169 2009-04-17  Richard Guenther  <rguenther@suse.de>
7170
7171         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
7172         (fold_stmt_r): Likewise.
7173         (maybe_fold_reference): New function.
7174         (fold_gimple_assign): Handle cases fold_stmt_r did.
7175         (fold_stmt): Do not use fold_stmt_r.
7176         (fold_stmt_inplace): Likewise.
7177
7178 2009-04-17  Richard Guenther  <rguenther@suse.de>
7179
7180         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
7181         (record_equivalences_from_stmt): Remove useless checks and
7182         simplifications.
7183         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
7184         the type is already suitable.
7185
7186 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
7187
7188         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
7189
7190 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
7191
7192         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
7193         (CMPtype): Define as __gcc_CMPtype.
7194
7195 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
7196
7197         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
7198         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
7199
7200 2009-04-17  Richard Guenther  <rguenther@suse.de>
7201
7202         PR tree-optimization/39746
7203         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
7204         special-casing for builtins and static variable use/def.
7205         (call_may_clobber_ref_p_1): Likewise.
7206
7207 2009-04-16  Ian Lance Taylor  <iant@google.com>
7208
7209         * df.h: Include "timevar.h".
7210         (struct df_problem): Change tv_id field to timevar_id_t.
7211         * tree-pass.h: Include "timevar.h".
7212         (struct opt_pass): Change tv_id field to timevar_id_t.
7213         * timevar.h (timevar_id_t): Define TV_NONE.
7214         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
7215         TV_NONE rather than tv_id != 0.
7216         (execute_one_pass): Likewise.
7217         * Makefile.in (DF_H): Add $(TIMEVAR_H).
7218         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
7219         dependencies to $(TREE_PASS_H).
7220         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
7221         to TV_NONE.
7222         (pass_branch_target_load_optimize2): Likewise.
7223         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
7224         (pass_outof_cfg_layout_mode): Likewise.
7225         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
7226         (pass_rebuild_cgraph_edges): Likewise.
7227         (pass_remove_cgraph_callee_edges): Likewise.
7228         * df-core.c (pass_df_initialize_opt): Likewise.
7229         (pass_df_initialize_no_opt): Likewise.
7230         (pass_df_finish): Likewise.
7231         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
7232         * except.c (pass_set_nothrow_function_flags): Likewise.
7233         (pass_convert_to_eh_region_ranges): Likewise.
7234         * final.c (pass_compute_alignments): Likewise.
7235         * function.c (pass_instantiate_virtual_regs): Likewise.
7236         (pass_init_function): Likewise.
7237         (pass_leaf_regs): Likewise.
7238         (pass_match_asm_constraints): Likewise.
7239         * gimple-low.c (pass_lower_cf): Likewise.
7240         (pass_mark_used_blocks): Likewise.
7241         * init-regs.c (pass_initialize_regs): Likewise.
7242         * integrate.c (pass_initial_value_sets): Likewise.
7243         * ira.c (pass_ira): Likewise.
7244         * jump.c (pass_cleanup_barriers): Likewise.
7245         * omp-low.c (pass_expand_omp): Likewise.
7246         (pass_lower_omp): Likewise.
7247         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
7248         * recog.c (pass_split_all_insns): Likewise.
7249         (pass_split_after_reload): Likewise.
7250         (pass_split_before_regstack): Likewise.
7251         (pass_split_before_sched2): Likewise.
7252         (pass_split_for_shorten_branches): Likewise.
7253         * reginfo.c (pass_reginfo_init): Likewise.
7254         (pass_subregs_of_mode_init): Likewise.
7255         (pass_subregs_of_mode_finish): Likewise.
7256         * passes.c (pass_postreload): Likewise.
7257         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
7258         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
7259         (pass_warn_function_return): Likewise.
7260         (pass_warn_function_noreturn): Likewise.
7261         * tree-complex.c (pass_lower_complex): Likewise.
7262         (pass_lower_complex_O0): Likewise.
7263         * tree-if-conv.c (pass_if_conversion): Likewise.
7264         * tree-into-ssa.c (pass_build_ssa): Likewise.
7265         * tree-mudflap.c (pass_mudflap_1): Likewise.
7266         (pass_mudflap_2): Likewise.
7267         * tree-nomudflap.c (pass_mudflap_1): Likewise.
7268         (pass_mudflap_2): Likewise.
7269         * tree-nrv.c (pass_return_slot): Likewise.
7270         * tree-object-size.c (pass_object_sizes): Likewise.
7271         * tree-optimize.c (pass_all_optimizations): Likewise.
7272         (pass_early_local_passes): Likewise.
7273         (pass_all_early_optimizations): Likewise.
7274         (pass_cleanup_cfg): Likewise.
7275         (pass_cleanup_cfg_post_optimizing): Likewise.
7276         (pass_free_datastructures): Likewise.
7277         (pass_free_cfg_annotations): Likewise.
7278         (pass_fixup_cfg): Likewise.
7279         (pass_init_datastructures): Likewise.
7280         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
7281         (pass_late_warn_uninitialized): Likewise.
7282         (pass_update_address_taken): Likewise.
7283         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
7284         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
7285         (pass_cse_sincos): Likewise.
7286         (pass_convert_to_rsqrt): Likewise.
7287         * tree-ssa-structalias.c (pass_build_alias): Likewise.
7288         * tree-stdarg.c (pass_stdarg): Likewise.
7289         * tree-tailcall.c (pass_tail_recursion): Likewise.
7290         (pass_tail_calls): Likewise.
7291         * tree-vect-generic.c (pass_lower_vector): Likewise.
7292         (pass_lower_vector_ssa): Likewise.
7293         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
7294
7295 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
7296
7297         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
7298         XLR entry.
7299         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
7300         Handle -march=xlr.
7301         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
7302         logical and signext.
7303
7304 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
7305
7306         PR target/39767
7307         * config/sh/predicates.md (arith_operand): Check if the operand
7308         of TRUNCATE is a REG.
7309
7310 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7311
7312         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
7313         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
7314
7315 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7316
7317         * tree-iterator.c (tsi_split_statement_list_after,
7318         tsi_split_statement_list_before): Remove.
7319         * tree-iterator.h: Remove the prototypes for
7320         tsi_split_statement_list_after and tsi_split_statement_list_before.
7321
7322 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7323
7324         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
7325         * tree-ssa-propagate.h: Remove the prototype for
7326         stmt_makes_single_load.
7327
7328 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7329
7330         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
7331         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
7332
7333 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7334
7335         * tree-iterator.c (EXPR_LAST_BODY): Remove.
7336
7337 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7338
7339         * except.c (eh_region_outer_p): Remove.
7340         * except.h: Remove the prototype for eh_region_outer_p.
7341
7342 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7343
7344         * function.c (current_function_assembler_name): Remove.
7345         * function.h: Remove the prototype for
7346         current_function_assembler_name.
7347
7348 2009-04-16  Ian Lance Taylor  <iant@google.com>
7349
7350         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
7351         (add_reg_note): Call alloc_reg_note.
7352         * rtl.h (alloc_reg_note): Declare.
7353         * combine.c (try_combine): Use alloc_reg_note.
7354         (recog_for_combine, move_deaths): Likewise.
7355         (distribute_notes): Use alloc_reg_note and add_reg_note.
7356         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
7357         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
7358         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
7359
7360 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
7361
7362         PR rtl-optimization/39762
7363         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
7364         ira_may_move_out_cost): Add comments about way of their usage.
7365         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
7366
7367         * ira-conflicts.c (process_regs_for_copy): Use function
7368         ira_get_register_move_cost instead of global
7369         ira_register_move_cost.
7370
7371         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
7372         color_pass, move_spill_restore, update_curr_costs): Ditto.
7373
7374         * ira-lives.c (process_single_reg_class_operands): Ditto.
7375
7376         * ira-emit.c (emit_move_list): Ditto.
7377
7378         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
7379         (record_reg_classes): Ditto.  Use functions
7380         ira_get_register_move_cost and ira_get_may_move_cost instead of
7381         global vars ira_register_move_cost, ira_may_move_out_cost and
7382         ira_may_move_in_cost.
7383         (record_address_regs): Don't call ira_init_register_move_cost.
7384         Use function ira_get_may_move_cost instead of global
7385         ira_may_move_in_cost.
7386         (process_bb_node_for_hard_reg_moves): Use function
7387         ira_get_register_move_cost instead of global ira_register_move_cost.
7388         (ira_costs): Don't call ira_init_register_move_cost.
7389
7390 2009-04-16  Richard Guenther  <rguenther@suse.de>
7391
7392         * tree-cfg.c (verify_gimple_assign_binary):
7393         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
7394         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
7395         (create_general_new_stmt): Note that this function is broken.
7396
7397 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7398
7399         * common.opt (fhelp): Add Var(help_flag).
7400         * gcc-plugin.h (plugin_info): Add help.
7401         * plugin.c (plugin_name_args): Add help.
7402         (register_plugin_info): Set plugin->help.
7403         (print_help_one_plugin): New.
7404         (print_plugins_help): New.
7405         * plugin.h (print_plugins_help): New.
7406         * toplev.c (toplev_main): Call print_plugins_help if needed.
7407
7408 2009-04-16  Richard Guenther  <rguenther@suse.de>
7409
7410         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
7411         (gimple_ior_addresses_taken_1): New function.
7412         (gimple_ior_addresses_taken): Likewise.
7413         * gimple.h (struct gimple_statement_with_ops_base): Remove
7414         addresses_taken member.
7415         (gimple_ior_addresses_taken): Declare.
7416         (gimple_addresses_taken, gimple_addresses_taken_ptr,
7417         gimple_set_addresses_taken): Remove.
7418         * ipa-reference.c (mark_address): New function.
7419         (scan_stmt_for_static_refs): Use it for marking addresses taken.
7420         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
7421         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
7422         (gimple_add_to_addresses_taken): Remove.
7423         (get_tmr_operands): Call mark_address_taken.
7424         (get_asm_expr_operands): Likewise.
7425         (get_expr_operands): Likewise.
7426         (build_ssa_operands): Do not clear the addresses_taken bitmap.
7427         (free_stmt_operands): Do not free it.
7428         * tree-ssa.c (delete_tree_ssa): Likewise.
7429         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
7430
7431 2009-04-16  Richard Guenther  <rguenther@suse.de>
7432
7433         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
7434         (walk_stmt_load_store_ops): Likewise.
7435         * gimple.c (get_base_loadstore): New function.
7436         (walk_stmt_load_store_addr_ops): Likewise.
7437         (walk_stmt_load_store_ops): Likewise.
7438         * ipa-pure-const.c (check_op): Simplify.
7439         (check_load, check_store): New functions.
7440         (check_stmt): Use walk_stmt_load_store_ops.
7441         * ipa-reference.c (mark_load): Adjust signature.
7442         (mark_store): Likewise.
7443         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
7444
7445 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7446
7447         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
7448         (plugin_info): New.
7449         * opts.c (common_handle_option): Don't call print_version.
7450         * plugin.c (plugin_name_args): Add version.
7451         (register_plugin_info): New.
7452         (register_callback): Handle PLUGIN_INFO.
7453         (try_init_one_plugin): New.
7454         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
7455         if failed to init.
7456         (finalize_one_plugin): New.
7457         (finalize_plugins): New.
7458         (print_one_plugin): New.
7459         (print_plugins_versions): New.
7460         * plugin.h (print_plugins_versions): New.
7461         (finalize_plugins): New.
7462         * toplev.c (compile_file): Don't call initialize_plugins.
7463         (print_version): Call print_plugins_versions.
7464         (toplev_main): Call initialize_plugins. Print version if needed.
7465         Call finalize_plugins.
7466
7467 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7468
7469         * common.opt (fversion): New.
7470         * gcc.c (print_version): New.
7471         (process_command): Don't print the version. Just set print_version.
7472         (main): Print version. Call subprocesses if print_version and
7473         verbose_flag are set.
7474         * opts.c (common_handle_option): Handle OPT_fversion.
7475
7476 2009-04-16  Richard Guenther  <rguenther@suse.de>
7477             Ira Rosen  <irar@il.ibm.com>
7478
7479         PR tree-optimization/39698
7480         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
7481         type of the reduction variable.  Only generate the def if
7482         it is needed.
7483
7484         * omp-low.c (expand_omp_for_generic): When converting to a pointer
7485         make sure to first convert to an integer of the same precision.
7486         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
7487         the type of the evolution correctly in computing the new
7488         induction variable base.
7489
7490 2009-04-16  Richard Guenther  <rguenther@suse.de>
7491
7492         PR middle-end/39625
7493         * tree-cfg.c (make_blocks): Split statements with to-be
7494         abnormal SSA names on the lhs.
7495
7496 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
7497
7498         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
7499         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
7500         * c-typeck.c (really_start_incremental_init): Likewise.
7501         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
7502         (TARGET_INITIALIZER): Remove it.
7503         * target.h (struct target): Remove vector_opaque_p.
7504         * tree.c (build_opaque_vector_type): New.
7505         * tree.h (TYPE_VECTOR_OPAQUE): New.
7506         (build_opaque_vector_type): Declare.
7507         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
7508         * config/rs6000/rs6000.c (build_opaque_vector_type,
7509         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
7510         (rs6000_init_builtins): Use build_opaque_vector_type for
7511         opaque_V4SI_type_node.
7512
7513 2009-04-15  Catherine Moore  <clm@codesourcery.com>
7514
7515         * debug.h (set_name):  Declare.
7516         * dwarf2out.c (dwarf2out_set_name): Declare.
7517         (dwarf2_debug_hooks): Add set_name.
7518         (find_AT_string): New.
7519         (add_AT_string): Call find_AT_string.
7520         (dwarf2out_set_name): New.
7521         * cp/decl.c (grokdeclarator): Call set_name.
7522         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
7523         * debug.c (do_nothing_debug_hooks):  Likewise.
7524         * dbxout.c (dbx_debug_hooks): Likewise.
7525         * sdbout.c (sdb_debug_hooks): Likewise.
7526
7527 2009-04-15  Michael Eager  <eager@eagercon.com>
7528
7529         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
7530         reg for single-precision FPU.
7531         * config/rs6000/rs6000.md (movsi_internal1): Only for
7532         !TARGET_SINGLE_FPU.
7533         (movsi_internal1_single): New. Add pattern to move SI values to/from
7534         single-precision FP regs.
7535
7536 2009-04-15  Richard Guenther  <rguenther@suse.de>
7537
7538         * omp-low.c (lower_rec_input_clauses): Build correct address
7539         expressions.
7540         (expand_omp_for_generic): Fix multiplication type.
7541         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
7542         (generate_memset_zero): Fix types.
7543         * tree-profile.c (prepare_instrumented_value): Correctly
7544         widen a pointer.
7545
7546 2009-04-15  Ian Lance Taylor  <iant@google.com>
7547
7548         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
7549         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
7550         for -Wall and for -Wc++-compat.
7551         (c_common_post_options): For C++, set warn_enum_compare if not
7552         already set.
7553         * c-tree.h (struct c_expr): Add field original_type.
7554         (build_external_ref): Update declaration.
7555         * c-parser.c (c_parser_braced_init): Set original_type.
7556         (c_parser_initelt): Likewise.
7557         (c_parser_expr_no_commas): Likewise.
7558         (c_parser_conditional_expression): Likewise.
7559         (c_parser_cast_expression): Likewise.
7560         (c_parser_unary_expression): Likewise.  Pull setting of
7561         original_code to top of function.
7562         (c_parser_sizeof_expression): Set original_type.
7563         (c_parser_alignof_expression): Likewise.
7564         (c_parser_postfix_expression): Likewise.  Pull setting of
7565         original_code to top of function.
7566         (c_parser_postfix_expression_after_paren_type): Set original_type.
7567         (c_parser_postfix_expression_after_primary): Likewise.
7568         (c_parser_expression): Likewise.
7569         * c-typeck.c (build_external_ref): Add type parameter.  Change all
7570         callers.
7571         (c_expr_sizeof_expr): Set original_type field.
7572         (parser_build_unary_op): Likewise.
7573         (parser_build_binary_op): Likewise.  Optionally warn about
7574         comparisons of enums of different types.
7575         (digest_init): Set original_type field.
7576         (really_start_incremental_init): Likewise.
7577         (push_init_level, pop_init_level): Likewise.
7578         * doc/invoke.texi (Warning Options): -Wenum-compare now
7579         supported in C.
7580
7581 2009-04-15  Richard Guenther  <rguenther@suse.de>
7582
7583         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
7584         out a necessary conversion.
7585         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
7586         names we didn't value number.
7587         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
7588
7589 2009-04-15  Richard Guenther  <rguenther@suse.de>
7590
7591         PR tree-optimization/39764
7592         * tree-ssa-ccp.c (get_value): Canonicalize value with
7593         canonicalize_float_value.
7594
7595 2009-04-15  Jan Hubicka  <jh@suse.cz>
7596
7597         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
7598         Wrong version of patch.
7599
7600 2009-04-15  Jan Hubicka  <jh@suse.cz>
7601
7602         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
7603
7604 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
7605
7606         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
7607         our distinct integral and vector types.
7608
7609 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
7610
7611         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
7612         * init.c (build_vtbl_address): Remove call to assemble_external.
7613
7614 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
7615
7616         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
7617         output for other floating point modes.
7618
7619 2009-04-14  Diego Novillo  <dnovillo@google.com>
7620
7621         * diagnostic.c (diagnostic_report_diagnostic): Do not
7622         warn about loaded plugins for DK_ERROR and DK_WARNING.
7623         * c-decl.c (declspecs_add_type): Move call to
7624         invoke_plugin_callbacks ...
7625         * c-parser.c (c_parser_declspecs): ... here.
7626         * plugin.c (dump_active_plugins): Tidy output.
7627
7628 2009-04-14  Diego Novillo  <dnovillo@google.com>
7629             Le-Chun Wu  <lcwu@google.com>
7630
7631         * configure.ac: Add --enable-plugin support.
7632         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
7633         * Makefile.in (PLUGIN_H): Define.
7634         Export ENABLE_PLUGIN and GMPINC to site.exp.
7635         Add PLUGINLIBS to link command.
7636         Add/modify dependencies for plugin.o and files including plugin.h.
7637         (plugin.o): New.
7638         * config.in: Regenerate.
7639
7640         * opts.c (common_handle_option): Handle OPT_fplugin_ and
7641         OPT_fplugin_arg_.
7642
7643 2009-04-14  Le-Chun Wu  <lcwu@google.com>
7644
7645         * tree-pass.h (register_one_dump_file): Add a prototype for
7646         register_one_dump_file.
7647         * toplev.c (compile_file): Call initialize_plugins.
7648         (do_compile): Call invoke_plugin_callbacks.
7649         (toplev_main): Call invoke_plugin_callbacks.
7650         * common.opt: Add -fplugin= and -fplugin-arg-.
7651         * gcc-plugin.h: New public header file for plugins to include.
7652         * plugin.c: New source file.
7653         * plugin.h: New internal header file.
7654         * passes.c (register_one_dump_file): Make it external.
7655
7656         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
7657
7658 2009-04-14  Diego Novillo  <dnovillo@google.com>
7659
7660         * doc/plugins.texi: New.
7661         * doc/gccint.texi: Add reference to Plugins chapter.
7662         * doc/invoke.texi: Document -fplugin and -fplugin-arg
7663         * diagnostic.c (diagnostic_report_diagnostic): Warn about
7664         loaded plugins, if any.
7665         * timevar.def (TV_PLUGIN_INIT): Define.
7666         (TV_PLUGIN_RUN): Define.
7667         * plugin.c: Include timevar.h
7668         (plugins_active_p): New.
7669         (dump_active_plugins): New.
7670         (debug_active_plugins): New.
7671
7672 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
7673
7674         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
7675         library paths.
7676         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
7677
7678 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
7679
7680         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
7681         the same as a minus without a shift.
7682
7683 2009-04-14  Nick Clifton  <nickc@redhat.com>
7684
7685         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
7686         comparisons with small integers will always produce a short
7687         branch.
7688
7689 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
7690
7691         Merge:
7692         2008-12-19  Diego Novillo  <dnovillo@google.com>
7693
7694         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
7695
7696 2009-04-14  Richard Guenther  <rguenther@suse.de>
7697
7698         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
7699         verification.
7700         (verify_gimple_assign_binary): Likewise.  Handle shifts and
7701         rotates correctly.
7702         (verify_gimple_phi): Print the mismatched argument position.
7703         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
7704         Fix types.
7705         (vect_update_init_of_dr): Likewise.
7706         * matrix-reorg.c (transform_access_sites): Do what the
7707         comment suggests.
7708         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
7709
7710 2009-04-13  Michael Eager  <eager@eagercon.com>
7711
7712         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
7713         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
7714         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
7715         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
7716         remove duplicate config
7717
7718 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7719
7720         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
7721         file_name:line_number type locator of the call site.
7722
7723 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7724
7725         * genautomata.c: Put blank after comma.
7726         (automaton_decls): New.
7727         (struct unit_usage): Add comments to member next.
7728         (store_alt_unit_usage): Keep the list ordered.
7729         (unit_present_on_list_p, equal_alternatives_p): New.
7730         (check_regexp_units_distribution): Check units distribution
7731         correctness correctly.
7732         (main): Don't write automata if error is found.  Return correct
7733         exit code.
7734
7735         * config/m68k/cf.md (cfv4_ds): Remove.
7736         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
7737         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
7738
7739         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
7740         power4-load-ext, power4-store, power4-store-update,
7741         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
7742         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
7743         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
7744         power4-sqrt, power4-isync): Modify reservation to make correct
7745         unit distribution to automata.
7746
7747         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
7748         power5-store-update, power5-two, power5-three, power5-lmul,
7749         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
7750
7751 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
7752
7753         * except.c (pass_set_nothrow_function_flags): Set name and add
7754         TODO_dump_func.
7755         (set_nothrow_function_flags): Mention in the dump file when
7756         changing a function to nothrow.
7757
7758 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
7759
7760         PR/39066
7761         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
7762         instead of unsigned long.
7763
7764 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7765
7766         * config/arm/arm.c (return_used_this_function): Remove.
7767         (arm_output_function_prologue): Remove use of
7768         return_used_this_function.
7769         (output_return_instruction): Replace use of
7770         return_used_this_function
7771         by cfun->machine->return_used_this_function.
7772         (arm_output_epilogue): Likewise.
7773         (arm_output_function_epilogue): Likewise.
7774         (thumb_unexpanded_epilogue): Likewise.
7775         * config/arm/arm.h (struct machine_function):
7776         New member return_used_this_function.
7777
7778 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
7779
7780         * doc/install.texi: Correct description of default directory for
7781         --with-gxx-include-dir.
7782
7783 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7784
7785         * fold-const.c (build_range_check): Properly deal with enumeral and
7786         boolean base types.
7787
7788 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
7789
7790         * doc/invoke.texi (max_gcse_passes): Remove documentation.
7791         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
7792         * params.h (MAX_GCSE_PASSES): Remove.
7793         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
7794         in sequence.  Remove ability to run multiple passes.
7795         (bypass_jumps): Report run as third CPROP pass.
7796
7797 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
7798
7799         PR middle-end/39651
7800         * except.c (can_throw_external): Look at each insn in a SEQUENCE
7801         when deciding whether the whole SEQUENCE can throw.
7802
7803 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
7804
7805         PR target/39740
7806         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
7807         offseted label references.
7808
7809 2009-04-11  Jan Hubicka  <jh@suse.cz>
7810
7811         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
7812
7813 2009-04-11  Richard Guenther  <rguenther@suse.de>
7814
7815         PR middle-end/39732
7816         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
7817         return variables as TREE_ADDRESSABLE.
7818
7819 2009-04-11  Richard Guenther  <rguenther@suse.de>
7820
7821         PR tree-optimization/39713
7822         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
7823         reference trees have SSA_NAME operands.
7824
7825 2009-04-11  Richard Guenther  <rguenther@suse.de>
7826
7827         PR c/39712
7828         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
7829         address expressions.
7830
7831 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
7832
7833         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
7834         match changes in Cygwin 1.7
7835         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
7836         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
7837
7838 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7839
7840         PR tree-optimization/39701
7841         * doc/invoke.texi (Optimization Options): Document change in
7842         meaning and initialization of -fdelete-null-pointer-checks.
7843
7844 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7845
7846         PR middle-end/39701
7847         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
7848
7849         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
7850         here.
7851
7852         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
7853
7854 2009-04-10  Chao-ying Fu  <fu@mips.com>
7855
7856         * doc/tm.texi (Instruction Output): Document
7857         TARGET_ASM_FINAL_POSTSCAN_INSN.
7858         * target.h (final_postscan_insn): New field in asm_out.
7859         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7860         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
7861         * final.c (final_scan_insn): Call
7862         targetm.asm_out.final_postscan_insn after outputting
7863         an asm macro and a normal instruction.
7864
7865         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
7866         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
7867         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
7868         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
7869         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7870
7871 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7872
7873         PR middle-end/39701
7874         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
7875         variables as non-NULL even with -fdelete-null-pointer-checks.
7876
7877 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7878
7879         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
7880
7881 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7882
7883         PR target/39678
7884         * config/i386/i386.c (classify_argument): Handle SCmode with
7885         (bit_offset % 64) != 0.
7886
7887 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
7888
7889         * doc/invoke.texi (Optimize Options): Add cross-reference to
7890         -Q --help=optimizers examples.
7891
7892 2009-04-10  Ben Elliston  <bje@au.ibm.com>
7893
7894         PR target/36800
7895         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
7896         regalign for the reg == fpr and TDmode case.
7897
7898 2009-04-09  David Ayers  <ayers@fsfe.org>
7899
7900         PR objc/29200
7901         * objc/objc-act.c (warn_with_method): Remove helper function.
7902         (check_duplicates): Call warning and inform directly.
7903         (really_start_method): Likewise.
7904
7905 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7906
7907         * expmed.c (expand_divmod): Always use a comparison for a division
7908         by a large unsigned integer.
7909
7910         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
7911         for things others than variables or functions as nonzero.
7912
7913 2009-04-09  Nick Clifton  <nickc@redhat.com>
7914
7915         * unwind-compat.c: Change copyright header to refer to version
7916         3 of the GNU General Public License with version 3.1 of the
7917         GCC Runtime Library Exception and to point readers at the
7918         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
7919         * config/alpha/crtfastmath.c: Likewise.
7920         * config/alpha/linux-unwind.h: Likewise.
7921         * config/alpha/qrnnd.asm: Likewise.
7922         * config/alpha/vms-crt0-64.c: Likewise.
7923         * config/alpha/vms-crt0.c: Likewise.
7924         * config/alpha/vms-dwarf2.asm: Likewise.
7925         * config/alpha/vms-dwarf2eh.asm: Likewise.
7926         * config/alpha/vms-psxcrt0-64.c: Likewise.
7927         * config/alpha/vms-psxcrt0.c: Likewise.
7928         * config/alpha/vms_tramp.asm: Likewise.
7929         * config/arc/initfini.c: Likewise.
7930         * config/arc/lib1funcs.asm: Likewise.
7931         * config/arm/bpabi-v6m.S: Likewise.
7932         * config/arm/bpabi.S: Likewise.
7933         * config/arm/bpabi.c: Likewise.
7934         * config/arm/crti.asm: Likewise.
7935         * config/arm/crtn.asm: Likewise.
7936         * config/arm/ieee754-df.S: Likewise.
7937         * config/arm/ieee754-sf.S: Likewise.
7938         * config/arm/lib1funcs.asm: Likewise.
7939         * config/arm/libunwind.S: Likewise.
7940         * config/arm/linux-atomic.c: Likewise.
7941         * config/arm/mmintrin.h: Likewise.
7942         * config/arm/pr-support.c: Likewise.
7943         * config/arm/unaligned-funcs.c: Likewise.
7944         * config/arm/unwind-arm.c: Likewise.
7945         * config/arm/unwind-arm.h: Likewise.
7946         * config/avr/libgcc.S: Likewise.
7947         * config/bfin/crti.s: Likewise.
7948         * config/bfin/crtlibid.s: Likewise.
7949         * config/bfin/crtn.s: Likewise.
7950         * config/bfin/lib1funcs.asm: Likewise.
7951         * config/bfin/linux-unwind.h: Likewise.
7952         * config/cris/arit.c: Likewise.
7953         * config/cris/cris_abi_symbol.c: Likewise.
7954         * config/darwin-64.c: Likewise.
7955         * config/darwin-crt2.c: Likewise.
7956         * config/darwin-crt3.c: Likewise.
7957         * config/darwin.h: Likewise.
7958         * config/dbxelf.h: Likewise.
7959         * config/dfp-bit.c: Likewise.
7960         * config/dfp-bit.h: Likewise.
7961         * config/elfos.h: Likewise.
7962         * config/fixed-bit.c: Likewise.
7963         * config/fixed-bit.h: Likewise.
7964         * config/fp-bit.c: Likewise.
7965         * config/fp-bit.h: Likewise.
7966         * config/fr30/crti.asm: Likewise.
7967         * config/fr30/crtn.asm: Likewise.
7968         * config/fr30/lib1funcs.asm: Likewise.
7969         * config/freebsd-spec.h: Likewise.
7970         * config/frv/cmovd.c: Likewise.
7971         * config/frv/cmovh.c: Likewise.
7972         * config/frv/cmovw.c: Likewise.
7973         * config/frv/frvbegin.c: Likewise.
7974         * config/frv/frvend.c: Likewise.
7975         * config/frv/lib1funcs.asm: Likewise.
7976         * config/glibc-stdint.h: Likewise.
7977         * config/h8300/clzhi2.c: Likewise.
7978         * config/h8300/crti.asm: Likewise.
7979         * config/h8300/crtn.asm: Likewise.
7980         * config/h8300/ctzhi2.c: Likewise.
7981         * config/h8300/fixunssfsi.c: Likewise.
7982         * config/h8300/lib1funcs.asm: Likewise.
7983         * config/h8300/parityhi2.c: Likewise.
7984         * config/h8300/popcounthi2.c: Likewise.
7985         * config/i386/ammintrin.h: Likewise.
7986         * config/i386/att.h: Likewise.
7987         * config/i386/avxintrin.h: Likewise.
7988         * config/i386/biarch64.h: Likewise.
7989         * config/i386/bmmintrin.h: Likewise.
7990         * config/i386/cpuid.h: Likewise.
7991         * config/i386/cross-stdarg.h: Likewise.
7992         * config/i386/crtfastmath.c: Likewise.
7993         * config/i386/crtprec.c: Likewise.
7994         * config/i386/cygming-crtbegin.c: Likewise.
7995         * config/i386/cygming-crtend.c: Likewise.
7996         * config/i386/cygwin.asm: Likewise.
7997         * config/i386/emmintrin.h: Likewise.
7998         * config/i386/gmm_malloc.h: Likewise.
7999         * config/i386/gthr-win32.c: Likewise.
8000         * config/i386/i386.h: Likewise.
8001         * config/i386/immintrin.h: Likewise.
8002         * config/i386/linux-unwind.h: Likewise.
8003         * config/i386/linux64.h: Likewise.
8004         * config/i386/mm3dnow.h: Likewise.
8005         * config/i386/mmintrin-common.h: Likewise.
8006         * config/i386/mmintrin.h: Likewise.
8007         * config/i386/nmmintrin.h: Likewise.
8008         * config/i386/pmm_malloc.h: Likewise.
8009         * config/i386/pmmintrin.h: Likewise.
8010         * config/i386/smmintrin.h: Likewise.
8011         * config/i386/sol2-c1.asm: Likewise.
8012         * config/i386/sol2-ci.asm: Likewise.
8013         * config/i386/sol2-cn.asm: Likewise.
8014         * config/i386/sol2-gc1.asm: Likewise.
8015         * config/i386/tmmintrin.h: Likewise.
8016         * config/i386/unix.h: Likewise.
8017         * config/i386/w32-unwind.h: Likewise.
8018         * config/i386/wmmintrin.h: Likewise.
8019         * config/i386/x86-64.h: Likewise.
8020         * config/i386/x86intrin.h: Likewise.
8021         * config/i386/xmmintrin.h: Likewise.
8022         * config/ia64/crtbegin.asm: Likewise.
8023         * config/ia64/crtend.asm: Likewise.
8024         * config/ia64/crtfastmath.c: Likewise.
8025         * config/ia64/crti.asm: Likewise.
8026         * config/ia64/crtn.asm: Likewise.
8027         * config/ia64/fde-glibc.c: Likewise.
8028         * config/ia64/lib1funcs.asm: Likewise.
8029         * config/ia64/linux-unwind.h: Likewise.
8030         * config/ia64/quadlib.c: Likewise.
8031         * config/ia64/unwind-ia64.c: Likewise.
8032         * config/linux.h: Likewise.
8033         * config/m32c/m32c-lib1.S: Likewise.
8034         * config/m32c/m32c-lib2-trapv.c: Likewise.
8035         * config/m32c/m32c-lib2.c: Likewise.
8036         * config/m32r/initfini.c: Likewise.
8037         * config/m68hc11/larith.asm: Likewise.
8038         * config/m68hc11/m68hc11-crt0.S: Likewise.
8039         * config/m68k/cf.md: Likewise.
8040         * config/m68k/crti.s: Likewise.
8041         * config/m68k/crtn.s: Likewise.
8042         * config/m68k/lb1sf68.asm: Likewise.
8043         * config/m68k/linux-unwind.h: Likewise.
8044         * config/mcore/crti.asm: Likewise.
8045         * config/mcore/crtn.asm: Likewise.
8046         * config/mcore/lib1.asm: Likewise.
8047         * config/mips/linux-unwind.h: Likewise.
8048         * config/mips/loongson.h: Likewise.
8049         * config/mips/mips16.S: Likewise.
8050         * config/mmix/crti.asm: Likewise.
8051         * config/mmix/crtn.asm: Likewise.
8052         * config/pa/fptr.c: Likewise.
8053         * config/pa/hpux-unwind.h: Likewise.
8054         * config/pa/lib2funcs.asm: Likewise.
8055         * config/pa/linux-atomic.c: Likewise.
8056         * config/pa/linux-unwind.h: Likewise.
8057         * config/pa/milli64.S: Likewise.
8058         * config/pa/quadlib.c: Likewise.
8059         * config/pa/stublib.c: Likewise.
8060         * config/picochip/libgccExtras/adddi3.asm: Likewise.
8061         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
8062         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
8063         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
8064         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
8065         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
8066         * config/picochip/libgccExtras/divmod15.asm: Likewise.
8067         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
8068         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
8069         * config/picochip/libgccExtras/longjmp.asm: Likewise.
8070         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
8071         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
8072         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
8073         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
8074         * config/picochip/libgccExtras/setjmp.asm: Likewise.
8075         * config/picochip/libgccExtras/subdi3.asm: Likewise.
8076         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
8077         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
8078         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
8079         * config/rs6000/750cl.h: Likewise.
8080         * config/rs6000/altivec.h: Likewise.
8081         * config/rs6000/biarch64.h: Likewise.
8082         * config/rs6000/crtresfpr.asm: Likewise.
8083         * config/rs6000/crtresgpr.asm: Likewise.
8084         * config/rs6000/crtresxfpr.asm: Likewise.
8085         * config/rs6000/crtresxgpr.asm: Likewise.
8086         * config/rs6000/crtsavfpr.asm: Likewise.
8087         * config/rs6000/crtsavgpr.asm: Likewise.
8088         * config/rs6000/darwin-asm.h: Likewise.
8089         * config/rs6000/darwin-fallback.c: Likewise.
8090         * config/rs6000/darwin-fpsave.asm: Likewise.
8091         * config/rs6000/darwin-ldouble.c: Likewise.
8092         * config/rs6000/darwin-tramp.asm: Likewise.
8093         * config/rs6000/darwin-unwind.h: Likewise.
8094         * config/rs6000/darwin-vecsave.asm: Likewise.
8095         * config/rs6000/darwin-world.asm: Likewise.
8096         * config/rs6000/e500crtres32gpr.asm: Likewise.
8097         * config/rs6000/e500crtres64gpr.asm: Likewise.
8098         * config/rs6000/e500crtres64gprctr.asm: Likewise.
8099         * config/rs6000/e500crtrest32gpr.asm: Likewise.
8100         * config/rs6000/e500crtrest64gpr.asm: Likewise.
8101         * config/rs6000/e500crtresx32gpr.asm: Likewise.
8102         * config/rs6000/e500crtresx64gpr.asm: Likewise.
8103         * config/rs6000/e500crtsav32gpr.asm: Likewise.
8104         * config/rs6000/e500crtsav64gpr.asm: Likewise.
8105         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
8106         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
8107         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
8108         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
8109         * config/rs6000/eabi-ci.asm: Likewise.
8110         * config/rs6000/eabi-cn.asm: Likewise.
8111         * config/rs6000/eabi.asm: Likewise.
8112         * config/rs6000/linux-unwind.h: Likewise.
8113         * config/rs6000/linux64.h: Likewise.
8114         * config/rs6000/paired.h: Likewise.
8115         * config/rs6000/paired.md: Likewise.
8116         * config/rs6000/ppc64-fp.c: Likewise.
8117         * config/rs6000/ppu_intrinsics.h: Likewise.
8118         * config/rs6000/rs6000.h: Likewise.
8119         * config/rs6000/si2vmx.h: Likewise.
8120         * config/rs6000/sol-ci.asm: Likewise.
8121         * config/rs6000/sol-cn.asm: Likewise.
8122         * config/rs6000/spe.h: Likewise.
8123         * config/rs6000/spu2vmx.h: Likewise.
8124         * config/rs6000/sysv4.h: Likewise.
8125         * config/rs6000/tramp.asm: Likewise.
8126         * config/rs6000/vec_types.h: Likewise.
8127         * config/s390/linux-unwind.h: Likewise.
8128         * config/s390/tpf-unwind.h: Likewise.
8129         * config/score/crti.asm: Likewise.
8130         * config/score/crtn.asm: Likewise.
8131         * config/sh/crt1.asm: Likewise.
8132         * config/sh/crti.asm: Likewise.
8133         * config/sh/crtn.asm: Likewise.
8134         * config/sh/divtab-sh4-300.c: Likewise.
8135         * config/sh/divtab-sh4.c: Likewise.
8136         * config/sh/divtab.c: Likewise.
8137         * config/sh/lib1funcs-4-300.asm: Likewise.
8138         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
8139         * config/sh/lib1funcs.asm: Likewise.
8140         * config/sh/lib1funcs.h: Likewise.
8141         * config/sh/linux-atomic.asm: Likewise.
8142         * config/sh/linux-unwind.h: Likewise.
8143         * config/sh/shmedia.h: Likewise.
8144         * config/sh/sshmedia.h: Likewise.
8145         * config/sh/ushmedia.h: Likewise.
8146         * config/sparc/crtfastmath.c: Likewise.
8147         * config/sparc/linux-unwind.h: Likewise.
8148         * config/sparc/sol2-c1.asm: Likewise.
8149         * config/sparc/sol2-ci.asm: Likewise.
8150         * config/sparc/sol2-cn.asm: Likewise.
8151         * config/spu/divmodti4.c: Likewise.
8152         * config/spu/divv2df3.c: Likewise.
8153         * config/spu/float_disf.c: Likewise.
8154         * config/spu/float_unsdidf.c: Likewise.
8155         * config/spu/float_unsdisf.c: Likewise.
8156         * config/spu/float_unssidf.c: Likewise.
8157         * config/spu/mfc_multi_tag_release.c: Likewise.
8158         * config/spu/mfc_multi_tag_reserve.c: Likewise.
8159         * config/spu/mfc_tag_release.c: Likewise.
8160         * config/spu/mfc_tag_reserve.c: Likewise.
8161         * config/spu/mfc_tag_table.c: Likewise.
8162         * config/spu/multi3.c: Likewise.
8163         * config/spu/spu_internals.h: Likewise.
8164         * config/spu/spu_intrinsics.h: Likewise.
8165         * config/spu/spu_mfcio.h: Likewise.
8166         * config/spu/vec_types.h: Likewise.
8167         * config/spu/vmx2spu.h: Likewise.
8168         * config/stormy16/stormy16-lib2.c: Likewise.
8169         * config/svr4.h: Likewise.
8170         * config/sync.c: Likewise.
8171         * config/v850/lib1funcs.asm: Likewise.
8172         * config/vxlib-tls.c: Likewise.
8173         * config/vxlib.c: Likewise.
8174         * config/vxworks-dummy.h: Likewise.
8175         * config/xtensa/crti.asm: Likewise.
8176         * config/xtensa/crtn.asm: Likewise.
8177         * config/xtensa/ieee754-df.S: Likewise.
8178         * config/xtensa/ieee754-sf.S: Likewise.
8179         * config/xtensa/lib1funcs.asm: Likewise.
8180         * config/xtensa/lib2funcs.S: Likewise.
8181         * config/xtensa/linux-unwind.h: Likewise.
8182         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
8183         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
8184         * coretypes.h: Likewise.
8185         * crtstuff.c: Likewise.
8186         * defaults.h: Likewise.
8187         * dwarf2.h: Likewise.
8188         * emutls.c: Likewise.
8189         * gbl-ctors.h: Likewise.
8190         * gcov-io.h: Likewise.
8191         * ginclude/float.h: Likewise.
8192         * ginclude/iso646.h: Likewise.
8193         * ginclude/stdarg.h: Likewise.
8194         * ginclude/stdbool.h: Likewise.
8195         * ginclude/stddef.h: Likewise.
8196         * ginclude/stdfix.h: Likewise.
8197         * ginclude/stdint-gcc.h: Likewise.
8198         * ginclude/tgmath.h: Likewise.
8199         * gthr-aix.h: Likewise.
8200         * gthr-dce.h: Likewise.
8201         * gthr-gnat.c: Likewise.
8202         * gthr-gnat.h: Likewise.
8203         * gthr-lynx.h: Likewise.
8204         * gthr-mipssde.h: Likewise.
8205         * gthr-nks.h: Likewise.
8206         * gthr-posix.c: Likewise.
8207         * gthr-posix.h: Likewise.
8208         * gthr-posix95.h: Likewise.
8209         * gthr-rtems.h: Likewise.
8210         * gthr-single.h: Likewise.
8211         * gthr-solaris.h: Likewise.
8212         * gthr-tpf.h: Likewise.
8213         * gthr-vxworks.h: Likewise.
8214         * gthr-win32.h: Likewise.
8215         * gthr.h: Likewise.
8216         * libgcc2.c: Likewise.
8217         * libgcc2.h: Likewise.
8218         * libgcov.c: Likewise.
8219         * tsystem.h: Likewise.
8220         * typeclass.h: Likewise.
8221         * unwind-c.c: Likewise.
8222         * unwind-compat.h: Likewise.
8223         * unwind-dw2-fde-compat.c: Likewise.
8224         * unwind-dw2-fde-darwin.c: Likewise.
8225         * unwind-dw2-fde-glibc.c: Likewise.
8226         * unwind-dw2-fde.c: Likewise.
8227         * unwind-dw2-fde.h: Likewise.
8228         * unwind-dw2.c: Likewise.
8229         * unwind-dw2.h: Likewise.
8230         * unwind-generic.h: Likewise.
8231         * unwind-pe.h: Likewise.
8232         * unwind-sjlj.c: Likewise.
8233         * unwind.inc: Likewise.
8234         * config/arm/neon-gen.ml: Change generated copyright header to
8235         refer to version 3 of the GNU General Public License with
8236         version 3.1 of the GCC Runtime Library Exception and to point
8237         readers at the COPYING3 and COPYING3.RUNTIME files and the
8238         FSF's license web page.
8239         * config/arm/arm_neon.h: Regenerate.
8240
8241 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
8242
8243         * config/cris/cris.md: Change copyright header to refer to version
8244         3 of the GNU General Public License.
8245         * doc/install.texi2html: Change copyright header to refer to version
8246         3 of the GNU General Public License and to point readers at the
8247         COPYING3 file and the FSF's license web page.
8248         * config/vax/linux.h: Likewise.
8249
8250 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
8251
8252         * config/i386/i386.md (cmpcc): New.
8253         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
8254         (sync_compare_and_swap_cc*): Delete.
8255
8256         * config/s390/s390.c (s390_compare_emitted): Remove.
8257         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
8258         s390_compare_emitted used to be handled.  Assert that modes match.
8259         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
8260         refer to sync_compare_and_swap_ccsi.
8261         * config/s390/s390.h (s390_compare_emitted): Remove.
8262         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
8263         instead of s390_compare_emitted.
8264         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
8265         instead of s390_compare_emitted.
8266         * config/s390/s390.md (cmpcc): New.
8267         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
8268         CC_REGNUM, do not pretend it's set.
8269         (sync_compare_and_swap_cc*): Delete.
8270         * config/s390/predicates.md (cc_reg_operand): New.
8271
8272         * expr.c (sync_compare_and_swap_cc): Delete.
8273         * optabs.h (sync_compare_and_swap_cc): Delete.
8274         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
8275         is being used with can_compare_p.
8276         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
8277         (find_cc_set): New.
8278         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
8279         look for a MODE_CC set instead.  Use emit_store_flag.
8280         (expand_compare_and_swap_loop): Likewise, with some additional
8281         complication to avoid a force_reg when useless.  Use
8282         emit_cmp_and_jump_insns.
8283         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
8284         * doc/md.texi (sync_compare_and_swap_cc): Merge with
8285         sync_compare_and_swap documentation.
8286
8287 2009-04-09  Jan Hubicka  <jh@suse.cz>
8288
8289         * except.c (find_prev_try): Break out from ....
8290         (duplicate_eh_regions): ... here; properly update prev_try pointers
8291         when duplication part of tree.
8292         (dump_eh_tree): Improve dumping.
8293         (verify_eh_region): New.
8294         (verify_eh_tree): Use it.
8295
8296 2009-04-06  Richard Guenther  <rguenther@suse.de>
8297
8298         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
8299         &ARRAY addresses by adjusting their types and prepending
8300         a conversion.
8301         * tree-cfg.c (verify_gimple_assign_single): Verify that
8302         addresses are correct.
8303
8304 2009-04-09  Richard Guenther  <rguenther@suse.de>
8305
8306         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
8307         indices into an array reference if possible.
8308         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
8309         Fold POINTER_PLUS_EXPR statements with invariant address.
8310
8311 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
8312
8313         PR target/39634
8314         * config.gcc (powerpc64-*-linux*): Always build biarch.
8315
8316 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
8317
8318         PR c/39613
8319         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
8320         it and pedwarn if this results in an INTEGER_CST.
8321
8322 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8323
8324         * doc/install.texi: Update minimum GMP version.  Remove obsolete
8325         text in MPFR section.
8326
8327 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
8328
8329         * dwarf2out.c (class_scope_p): New static inline.
8330         (class_or_namespace_scope_p): Use it.
8331         (gen_variable_die): Use DW_TAG_member tag for static data member
8332         declarations instead of DW_TAG_variable.
8333
8334         PR middle-end/39573
8335         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
8336         variables.
8337
8338 2009-04-08  Richard Guenther  <rguenther@suse.de>
8339
8340         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
8341         valueize random data.
8342
8343 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
8344
8345         * config.gcc (aix tm_file):  Add aix-stdint.h.
8346         (aix tm clause use_gcc_stdint):  Set to wrap.
8347         * config/rs6000/aix-stdint.h:  New file.
8348
8349 2009-04-08  Richard Guenther  <rguenther@suse.de>
8350
8351         PR middle-end/36291
8352         * tree-dfa.c (add_referenced_var): Do not recurse into
8353         global initializers.
8354         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
8355         exposed variables.
8356         (fold_const_aggregate_ref): Likewise.
8357
8358 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8359
8360         * recog.c (ordered_comparison_operator): New.
8361         * gensupport.c (std_preds): Add it.
8362         * doc/md.texi (Machine-Independent Predicates): Document it.
8363
8364 2009-04-08  Jan Hubicka  <jh@suse.cz>
8365
8366         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
8367         * function.h (rtl_eh): Remove exception_handler_label_map.
8368         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
8369         remove_exception_handler_label, for_each_eh_label_1): Remove.
8370         (rtl_remove_unreachable_regions): Remove.
8371         (convert_from_eh_region_ranges): Do not remove unreachable regions.
8372         (find_exception_handler_labels): Don't build the hashtable.
8373         (maybe_remove_eh_handler): Remove.
8374         (for_each_eh_label): Rewrite to walk the tree.
8375         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
8376         * except.h (maybe_remove_eh_handler): Remove.
8377         * passes.c (init_optimization_passes): Schedule second EH cleanup
8378         before out-of-ssa.
8379         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
8380         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
8381
8382 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8383
8384         * genoutput.c (validate_optab_operands): New.
8385         (gen_insn, gen_expand): Call it.
8386
8387         * genflags.c (gen_insn): Detect misused iterators.
8388         (main): Pass line_no to gen_insn, exit with status 1 on error.
8389
8390         * genextract.c (line_no): Make global.
8391         (VEC_safe_set_locstr): Change assertion to error message.
8392         (main): Exit with status 1 on error.
8393
8394 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
8395
8396         PR c/39614
8397         PR c/39673
8398         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
8399         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
8400         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
8401         * c-convert.c (convert): Do not call fold on results of conversion
8402         functions when the result is a C_MAYBE_CONST_EXPR.
8403         * c-parser.c (c_parser_postfix_expression): Do not fold condition
8404         of __builtin_choose_expr.
8405         * c-typeck.c (remove_c_maybe_const_expr): New.
8406         (build_unary_op, build_conditional_expr, build_compound_expr,
8407         build_binary_op, c_objc_common_truthvalue_conversion): Call
8408         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
8409         integer operands.
8410
8411 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
8412
8413         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
8414         CODE to produce a new one. Add a prototype to use fold_convert_const
8415
8416 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
8417
8418         PR bootstrap/39660
8419         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
8420         mix declarations and code.
8421
8422 2009-04-08  Ben Elliston  <bje@au.ibm.com>
8423
8424         * gcc.c: Replace `CC' with `GCC' throughout.
8425
8426 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8427
8428         * doc/invoke.texi: Document Atom support.
8429
8430 2009-04-07  Jason Merrill  <jason@redhat.com>
8431
8432         PR c++/25185
8433         * c-common.h, c-common.c: Add flag_pretty_templates.
8434         * c-opts.c (c_common_handle_option): Set it.
8435         * c.opt: Add -fno-pretty-templates.
8436         * doc/invoke.texi (C++ Dialect Options): Likewise.
8437
8438 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
8439
8440         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
8441         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
8442         (ia64_expand_builtin): Likewise.
8443
8444 2009-04-07  Martin Jambor  <mjambor@suse.cz>
8445
8446         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
8447         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
8448         ADDR_EXPRS are include too.
8449
8450 2009-04-07  Richard Guenther  <rguenther@suse.de>
8451
8452         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
8453         decls are only used if passes as parameters or if they are
8454         local statics and the call is not to a builtin.
8455         (call_may_clobber_ref_p_1): Likewise.
8456
8457 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8458
8459         * expr.c (do_store_flag): Remove last argument.  Simplify code
8460         to avoid duplication of tests already done by can_compare_p.
8461         (expand_expr_real_1): Adjust caller.
8462
8463 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8464
8465         * optabs.c (can_compare_p): Test the predicate of a
8466         cbranch and cstore pattern.
8467
8468 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8469
8470         * expr.c (convert_move): Use emit_store_flag instead of
8471         "emulating" it.
8472
8473 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8474
8475         * config/i386/i386.c (ix86_compare_emitted): Remove.
8476         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
8477         ix86_compare_op0 like ix86_compare_emitted used to be handled.
8478         * config/i386/i386.h (ix86_compare_emitted): Remove.
8479         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
8480         instead of ix86_compare_emitted.
8481         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
8482
8483 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
8484
8485         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
8486         Add t-sysroot-suffix to tmake_file.
8487         * config/print-sysroot-suffix.sh: New file.
8488         * config/t-sysroot-suffix: New file.
8489
8490 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8491
8492         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
8493         as the latter produces a warning when the target does not support
8494         infinity.
8495
8496 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8497
8498         * dfp.c: Replace type punning assignments with memcpy throughout.
8499         * Makefile.in (dfp.o-warn): Remove.
8500
8501 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
8502
8503         PR target/39634
8504         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
8505         Include soft-fp/t-softfp after rs6000/t-linux64.
8506
8507 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8508
8509         * stor-layout.c (set_sizetype): Use the full precision of their
8510         machine mode for bitsize types.
8511
8512 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
8513
8514         * config/i386/i386.md: Revert 2 accidental checkins.
8515
8516 2009-04-06  Joey Ye  <joey.ye@intel.com>
8517             Xuepeng Guo  <xuepeng.guo@intel.com>
8518             H.J. Lu  <hongjiu.lu@intel.com>
8519
8520         Atom pipeline model, tuning and insn selection.
8521         * config.gcc (atom): Add atom config options and target.
8522
8523         * config/i386/atom.md: New.
8524
8525         * config/i386/i386.c (atom_cost): New cost.
8526         (m_ATOM): New macro flag.
8527         (initial_ix86_tune_features): Set m_ATOM.
8528         (x86_accumulate_outgoing_args): Likewise.
8529         (x86_arch_always_fancy_math_387): Likewise.
8530         (processor_target): Add Atom cost.
8531         (cpu_names): Add Atom cpu name.
8532         (override_options): Set Atom ISA.
8533         (ix86_issue_rate): New case PROCESSOR_ATOM.
8534         (ix86_adjust_cost): Likewise.
8535
8536         * config/i386/i386.h (TARGET_ATOM): New target macro.
8537         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
8538         (TARGET_OPT_AGU): New target option.
8539         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
8540         (processor_type): Add PROCESSOR_ATOM.
8541
8542         * config/i386/i386.md (cpu): Add new value "atom".
8543         (use_carry, movu): New attr.
8544         (atom.md): Include atom.md.
8545         (adddi3_carry_rex64): Set attr "use_carry".
8546         (addqi3_carry): Likewise.
8547         (addhi3_carry): Likewise.
8548         (addsi3_carry): Likewise.
8549         (*addsi3_carry_zext): Likewise.
8550         (subdi3_carry_rex64): Likewise.
8551         (subqi3_carry): Likewise.
8552         (subhi3_carry): Likewise.
8553         (subsi3_carry): Likewise.
8554         (x86_movdicc_0_m1_rex64): Likewise.
8555         (*x86_movdicc_0_m1_se): Likewise.
8556         (x86_movsicc_0_m1): Likewise.
8557         (*x86_movsicc_0_m1_se): Likewise.
8558         (*adddi_1_rex64): Emit add insn as much as possible.
8559         (*addsi_1): Likewise.
8560         (return_internal): Set atom_unit.
8561         (return_internal_long): Likewise.
8562         (return_pop_internal): Likewise.
8563         (*rcpsf2_sse): Set atom_sse_attr attr.
8564         (*qrt<mode>2_sse): Likewise.
8565         (*prefetch_sse): Likewise.
8566
8567         * config/i386/i386-c.c (ix86_target_macros_internal): New case
8568         PROCESSOR_ATOM.
8569         (ix86_target_macros_internal): Likewise.
8570
8571         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
8572         (*prefetch_sse_rex): Likewise.
8573         (sse_rcpv4sf2): Likewise.
8574         (sse_vmrcpv4sf2): Likewise.
8575         (sse_sqrtv4sf2): Likewise.
8576         (<sse>_vmsqrt<mode>2): Likewise.
8577         (sse_ldmxcsr): Likewise.
8578         (sse_stmxcsr): Likewise.
8579         (*sse_sfence): Likewise.
8580         (sse2_clflush): Likewise.
8581         (*sse2_mfence): Likewise.
8582         (*sse2_lfence): Likewise.
8583         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
8584         (<sse>_movup<ssemodesuffixf2c>): Likewise.
8585         (avx_movdqu<avxmodesuffix>): Likewise.
8586         (avx_lddqu<avxmodesuffix>): Likewise.
8587         (sse2_movntv2di): Change attr "type" to "ssemov".
8588         (sse2_movntsi): Likewise.
8589         (rsqrtv8sf2): Change attr "type" to "sseadd".
8590         (sse3_addsubv2df3): Set attr "atom_unit".
8591         (sse3_h<plusminus_insn>v4sf3): Likewise.
8592         (*sse2_pmaddwd): Likewise.
8593         (*vec_extractv2di_1_rex64): Likewise.
8594         (*vec_extractv2di_1_avx): Likewise.
8595         (sse2_psadbw): Likewise.
8596         (ssse3_phaddwv8hi3): Likewise.
8597         (ssse3_phaddwv4hi3): Likewise.
8598         (ssse3_phadddv4si3): Likewise.
8599         (ssse3_phadddv2si3): Likewise.
8600         (ssse3_phaddswv8hi3): Likewise.
8601         (ssse3_phaddswv4hi3): Likewise.
8602         (ssse3_phsubwv8hi3): Likewise.
8603         (ssse3_phsubwv4hi3): Likewise.
8604         (ssse3_phsubdv4si3): Likewise.
8605         (ssse3_phsubdv2si3): Likewise.
8606         (ssse3_phsubswv8hi3): Likewise.
8607         (ssse3_phsubswv4hi3): Likewise.
8608         (ssse3_pmaddubsw128): Likewise.
8609         (sse3_pmaddubsw: Likewise.
8610         (ssse3_palignrti): Likewise.
8611         (ssse3_palignrdi): Likewise.
8612
8613 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
8614
8615         * doc/install.texi (Specific): Fix two cross-references to MinGW.
8616
8617 2009-04-06  Richard Guenther  <rguenther@suse.de>
8618
8619         PR tree-optimization/28868
8620         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
8621         of which PHI results we inserted.
8622         (insert_into_preds_of_block): Record inserted PHIs.
8623         (eliminate): Eliminate redundant PHI nodes.
8624         (init_pre): Init inserted_phi_names.
8625
8626 2009-04-06  Richard Guenther  <rguenther@suse.de>
8627
8628         PR tree-optimization/39643
8629         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
8630         IMAGPART_EXPRs of complex constants.
8631         (execute_fold_all_builtins): If we folded a call queue
8632         TODO_update_address_taken.
8633
8634 2009-04-06  Jan Hubicka  <jh@suse.cz>
8635
8636         PR middle-end/39659
8637         * except.c (remove_unreachable_regions): Propagate may_contain_throw
8638         flag.
8639
8640 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
8641
8642         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
8643         delay slot.
8644         (ic_invalidate_array): Likewise.
8645
8646 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
8647
8648         * calls.c (emit_library_call_value_1): Fix a problem with parameter
8649         alignment for library calls.
8650
8651 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
8652
8653         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
8654         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
8655         * config/i386/mingw-stdint.h:  New file.
8656
8657 2009-04-05  Richard Guenther  <rguenther@suse.de>
8658
8659         PR tree-optimization/39648
8660         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
8661         our &A vs. &A[0] IL deficiencies.
8662
8663 2009-04-04  Jan Hubicka  <jh@suse.cz>
8664
8665         * except.c (sjlj_find_directly_reachable_regions): Be ready for
8666         removed toplevel regions.
8667         (sjlj_mark_call_sites): Likewise.
8668
8669 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
8670
8671         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
8672         (cygwin tm clause use_gcc_stdint):  Set to wrap.
8673         * config/i386/cygwin-stdint.h:  New file.
8674
8675 2009-04-04  Richard Guenther  <rguenther@suse.de>
8676
8677         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
8678         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
8679         single-argument PHIs if we are in loop-closed SSA form.
8680         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
8681         for the pre-condition.
8682         (slpeel_tree_peel_loop_to_edge): Likewise.
8683         (vect_build_loop_niters): Take an optional sequence to append stmts.
8684         (vect_generate_tmps_on_preheader): Likewise.
8685         (vect_do_peeling_for_loop_bound): Take extra guards for the
8686         pre-condition.
8687         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
8688         the cost model check.
8689         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
8690         guards if we are going to peel.  Do not apply versioning in that case.
8691         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
8692         (vect_do_peeling_for_loop_bound): Likewise.
8693         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
8694         loop bound only record extra pre-conditions, do not apply loop
8695         versioning.
8696
8697 2009-04-04  Richard Guenther  <rguenther@suse.de>
8698
8699         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
8700         renaming code.
8701
8702 2009-04-04  Jan Hubicka  <jh@suse.cz>
8703
8704         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
8705         last_basic_block for size of bb->index indexed array.
8706         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
8707         compute_out, link_btr_uses, build_btr_def_use_webs,
8708         build_btr_def_use_webs, migrate_btr_defs): Likewise.
8709
8710 2009-04-04  Jan Hubicka  <jh@suse.cz>
8711
8712         * except.c (remove_eh_handler_and_replace): Break out from ...
8713         (remove_eh_handler): ... here.
8714         (bring_to_root): New function.
8715         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
8716         handled ones, bring others to root of tree.
8717
8718 2009-04-04  Jan Hubicka  <jh@suse.cz>
8719
8720         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
8721         (all_phis_safe_to_merge): New function.
8722         (update_info): New structure.
8723         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
8724         (cleanup_empty_eh): Update SSA if possible.
8725
8726 2009-04-04  Richard Guenther  <rguenther@suse.de>
8727
8728         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
8729         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
8730         (append_vuse): Likewise.
8731
8732 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
8733
8734         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
8735         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
8736         instead of REG_UNSAVED for DW_CFA_undefined.
8737         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
8738         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
8739         outermost frame.
8740
8741 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
8742
8743         PR target/39501
8744         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
8745         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
8746         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
8747
8748 2009-04-04  Richard Guenther  <rguenther@suse.de>
8749
8750         PR tree-optimization/8781
8751         PR tree-optimization/37892
8752         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
8753         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
8754         (valueize_refs): Call it for *& valueizations.
8755         (shared_reference_ops_from_ref): Rename to ...
8756         (valueize_shared_reference_ops_from_ref): ... this and valueize.
8757         (shared_reference_ops_from_call): Rename to ...
8758         (valueize_shared_reference_ops_from_call): ... this and valueize.
8759         (vn_reference_lookup): Update.
8760         (visit_reference_op_call): Likewise.
8761         * tree-ssa-pre.c (phi_translate_1): Fold *&.
8762         (eliminate): Value-replace the call address in call statements.
8763
8764 2009-04-04  Richard Guenther  <rguenther@suse.de>
8765
8766         PR tree-optimization/39636
8767         * tree-ssa-forwprop.c
8768         (forward_propagate_addr_into_variable_array_index): Check for
8769         GIMPLE_ASSIGN before accessing the rhs code.
8770
8771 2009-04-03  Jason Merrill  <jason@redhat.com>
8772
8773         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
8774
8775 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
8776
8777         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
8778         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
8779         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
8780         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
8781         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
8782         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
8783         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
8784         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
8785         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
8786         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
8787         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
8788         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
8789         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
8790         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
8791         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
8792         Use fr_reg_or_fp01_operand instead of fr_register_operand
8793
8794         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
8795         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
8796         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
8797
8798 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
8799
8800         PR rtl-optimization/39607
8801         PR rtl-optimization/39631
8802
8803         Revert:
8804
8805         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
8806         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
8807         instead of DF_LR_OUT.
8808         * ira-lives.c (process_bb_node_lives): Ditto.
8809         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
8810         instead of DF_LR_{OUT,IN}.
8811         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
8812         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
8813
8814 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
8815
8816         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
8817         (execute_lower_omp): Always run but take the short way out if -fopenmp
8818         is not given.
8819         (gate_lower_omp): Remove, forcing the pass manager to always run the
8820         pass and always set PROP_gimple_lomp.
8821         (pass_lower_omp): Remove gate function.
8822         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
8823         PROP_trees.  Instead, require it.
8824         * ipa-cp.c (pass_ipa_cp): Likewise.
8825         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
8826         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
8827         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
8828         and PROP_gimple_leh.
8829
8830 2009-04-03  Richard Guenther  <rguenther@suse.de>
8831
8832         PR middle-end/13146
8833         PR tree-optimization/23940
8834         PR tree-optimization/33237
8835         PR middle-end/33974
8836         PR middle-end/34093
8837         PR tree-optimization/36201
8838         PR tree-optimization/36230
8839         PR tree-optimization/38049
8840         PR tree-optimization/38207
8841         PR tree-optimization/38230
8842         PR tree-optimization/38301
8843         PR tree-optimization/38585
8844         PR middle-end/38895
8845         PR tree-optimization/38985
8846         PR tree-optimization/39299
8847         * tree-ssa-structalias.h: Remove.
8848         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
8849         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
8850         (struct vuse_element_d): Remove.
8851         (struct vuse_vec_d): Likewise.
8852         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
8853         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
8854         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
8855         VUSE_ELEMENT_VAR): Likewise.
8856         (struct voptype_d): Likewise.
8857         (NUM_VOP_FREE_BUCKETS): Likewise.
8858         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
8859         (struct stmt_operands_d): Remove.
8860         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
8861         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
8862         VDEF_NUM, VDEF_VECT): Likewise.
8863         (copy_virtual_operands): Remove.
8864         (operand_build_cmp): Likewise.
8865         (create_ssa_artificial_load_stmt): Likewise.
8866         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
8867         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
8868         vuse_index and mayuse_index members.  Pack and move done and iter_type
8869         members to the front.
8870         (SSA_OP_VMAYUSE): Remove.
8871         (SSA_OP_VIRTUAL_USES): Adjust.
8872         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
8873         (unlink_stmt_vdef): Declare.
8874         (add_to_addressable_set): Remove.
8875         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
8876         (vrp_visit_stmt): Likewise.
8877         * doc/tree-ssa.texi (Alias analysis): Update.
8878         * doc/invoke.texi (max-aliased-vops): Remove docs.
8879         (avg-aliased-vops): Likewise.
8880         * tree-into-ssa.c (syms_to_rename): Remove.
8881         (need_to_update_vops_p): Likewise.
8882         (need_to_initialize_update_ssa_p): Rename to ...
8883         (update_ssa_initialized_fn): ... this.  Track function we are
8884         initialized for.
8885         (symbol_marked_for_renaming): Simplify.
8886         (add_new_name_mapping): Do not set need_to_update_vops_p.
8887         (dump_currdefs): Use SYMS_TO_RENAME.
8888         (rewrite_update_stmt): Always walk all uses/defs.
8889         (dump_update_ssa): Adjust.
8890         (init_update_ssa): Take function argument.  Track what we are
8891         initialized for.
8892         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
8893         (create_new_def_for): Initialize for cfun, assert we are initialized
8894         for cfun.
8895         (mark_sym_for_renaming): Simplify.
8896         (mark_set_for_renaming): Do not initialize update-ssa.
8897         (need_ssa_update_p): Simplify.  Take function argument.
8898         (name_mappings_registered_p): Assert we ask for the correct function.
8899         (name_registered_for_update_p): Likewise.
8900         (ssa_names_to_replace): Likewise.
8901         (release_ssa_name_after_update_ssa): Likewise.
8902         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
8903         (dump_decl_set): Do not print a newline.
8904         (debug_decl_set): Do it here.
8905         (dump_update_ssa): And here.
8906         * tree-ssa-loop-im.c (move_computations): Adjust.
8907         (movement_possibility): Likewise.
8908         (determine_max_movement): Likewise.
8909         (gather_mem_refs_stmt): Likewise.
8910         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
8911         or NAME_MEMORY_TAG.
8912         * tree-complex.c (update_all_vops): Remove.
8913         (expand_complex_move): Adjust.
8914         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
8915         Simplify test for memory referencing statement.  Exclude
8916         non-invariant ADDR_EXPRs.
8917         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
8918         * tree-loop-distribution.c (generate_memset_zero): Adjust.
8919         (rdg_flag_uses): Likewise.
8920         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
8921         related code.
8922         (tree_optimize_tail_calls_1): Also split the
8923         edge from the entry block if we have degenerate PHI nodes in
8924         the first basic block.
8925         * tree.c (init_ttree): Remove memory-tag related code.
8926         (tree_code_size): Likewise.
8927         (tree_node_structure): Likewise.
8928         (build7_stat): Re-write to be build6_stat.
8929         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
8930         (SSA_VAR_P): Adjust.
8931         (struct tree_memory_tag): Remove.
8932         (struct tree_memory_partition_tag): Likewise.
8933         (union tree_node): Adjust.
8934         (build7): Re-write to be build6.
8935         * tree-pass.h (pass_reset_cc_flags): Remove.
8936         (TODO_update_address_taken): New flag.
8937         (pass_simple_dse): Remove.
8938         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
8939         * params.h (MAX_ALIASED_VOPS): Remove.
8940         (AVG_ALIASED_VOPS): Likewise.
8941         * omp-low.c (expand_omp_taskreg): Update SSA form.
8942         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
8943         aliases the lhs in a copy stmt.
8944         * tree-ssa-dse.c (struct address_walk_data): Remove.
8945         (memory_ssa_name_same): Likewise.
8946         (memory_address_same): Likewise.
8947         (get_kill_of_stmt_lhs): Likewise.
8948         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
8949         unused stores.  Look through PHI nodes into post-dominated regions.
8950         (dse_optimize_stmt): Simplify.  Properly remove stores.
8951         (tree_ssa_dse): Compute dominators.
8952         (execute_simple_dse): Remove.
8953         (pass_simple_dse): Likewise.
8954         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
8955         gimple_loaded_syms and gimple_stored_syms computation.
8956         * toplev.c (dump_memory_report): Dump alias and pta stats.
8957         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
8958         (vn_reference_eq): Likewise.
8959         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
8960         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
8961         valueize_vuses): Remove.
8962         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
8963         (get_def_ref_stmt_vuse): ... this.
8964         (vn_reference_lookup_2): New function.
8965         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
8966         walking equivalent vuses.  Simplify.
8967         (vn_reference_lookup): Likewise.
8968         (vn_reference_insert): Likewise.
8969         (vn_reference_insert_pieces): Likewise.
8970         (visit_reference_op_call): Simplify.
8971         (visit_reference_op_load): Likewise.
8972         (visit_reference_op_store): Likewise.
8973         (init_scc_vn): Remove shared_lookup_vuses initialization.
8974         (free_scc_vn): Remove shared_lookup_vuses freeing.
8975         (sort_vuses, sort_vuses_heap): Remove.
8976         (get_ref_from_reference_ops): Export.
8977         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
8978         vector with single vuse pointer.
8979         (vn_reference_lookup_pieces, vn_reference_lookup,
8980         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
8981         (shared_vuses_from_stmt): Remove.
8982         (get_ref_from_reference_ops): Declare.
8983         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
8984         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8985         memory-tag related code.
8986         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
8987         (likely_value): Add comment, skip static-chain of call statements.
8988         (surely_varying_stmt_p): Adjust.
8989         (gimplify_and_update_call_from_tree): Likewise.
8990         (execute_fold_all_builtins): Do not rebuild alias info.
8991         (gimplify_and_update_call_from_tree): Properly update VOPs.
8992         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
8993         (copy_ref_info): Remove memory-tag related code.
8994         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
8995         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
8996         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
8997         computation.
8998         * tree-ssa-dom.c (gimple_p): Remove typedef.
8999         (eliminate_redundant_computations): Adjust.
9000         (record_equivalences_from_stmt): Likewise.
9001         (avail_expr_hash): Likewise.
9002         (avail_expr_eq): Likewise.
9003         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
9004         (stmt_makes_single_load): Likewise.
9005         (stmt_makes_single_store): Likewise.
9006         * tree-ssa-alias.c: Rewrite completely.
9007         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
9008         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
9009         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
9010         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
9011         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
9012         Remove public functions.
9013         (pass_reset_cc_flags): Remove.
9014         (pass_build_alias): Move ...
9015         * tree-ssa-structalias.c (pass_build_alias): ... here.
9016         * tree-ssa-alias.c (may_be_aliased): Move ...
9017         * tree-flow-inline.h (may_be_aliased): ... here.
9018         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
9019         count_uses_and_derefs): Move ...
9020         * gimple.c: ... here.
9021         * gimple.h (count_uses_and_derefs): Declare.
9022         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
9023         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
9024         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
9025         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
9026         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
9027         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
9028         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
9029         New functions.
9030         * tree-dfa.c (refs_may_alias_p): Move ...
9031         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
9032         * tree-ssa-alias.h: New file.
9033         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
9034         (statement_sink_location): Likewise.
9035         * opts.c (decode_options): Do not adjust max-aliased-vops or
9036         avg-aliased-vops values.
9037         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
9038         (TV_CALL_CLOBBER): Likewise.
9039         (TV_FLOW_SENSITIVE): Likewise.
9040         (TV_FLOW_INSENSITIVE): Likewise.
9041         (TV_MEMORY_PARTITIONING): Likewise.
9042         (TV_ALIAS_STMT_WALK): New timevar.
9043         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
9044         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
9045         (get_address_description): Remove memory-tag related code.
9046         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
9047         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
9048         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
9049         and immediate uses in statements.  Document.
9050         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
9051         (dump_symbols): Remove.
9052         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
9053         * alias.c (get_deref_alias_set): New function split out from ...
9054         (get_alias_set): ... here.
9055         * alias.h (get_deref_alias_set): Declare.
9056         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
9057         type parameter.  Remove restrict pointer handling.  Create a
9058         ref-all pointer in case type-based alias sets do not conflict.
9059         (vect_analyze_data_refs): Remove SMT related code.
9060         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
9061         (vectorizable_load): Likewise.
9062         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
9063         (DR_SYMBOL_TAG, DR_VOPS): Remove.
9064         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
9065         Ignore vops and SMTs.
9066         (dr_analyze_alias): Likewise..
9067         (free_data_ref): Likewise.
9068         (create_data_ref): Likewise.
9069         (analyze_all_data_dependences): Likewise.
9070         (get_references_in_stmt): Adjust.
9071         * tree-flow-inline.h (gimple_aliases_computed_p,
9072         gimple_addressable_vars, gimple_call_clobbered_vars,
9073         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
9074         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
9075         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
9076         gimple_mem_ref_stats): Remove.
9077         (gimple_vop): New function.
9078         (op_iter_next_use): Remove vuses and mayuses cases.
9079         (op_iter_next_def): Remove vdefs case.
9080         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
9081         (clear_and_done_ssa_iter): Do not set removed fields.
9082         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
9083         Assert we are not iterating over vuses or vdefs if not also
9084         iterating over uses or defs.
9085         (op_iter_init_use): Likewise.
9086         (op_iter_init_def): Likewise.
9087         (op_iter_next_vdef): Remove.
9088         (op_iter_next_mustdef): Likewise.
9089         (op_iter_init_vdef): Likewise.
9090         (compare_ssa_operands_equal): Likewise.
9091         (link_use_stmts_after): Handle vuse operand.
9092         (is_call_used): Use is_call_clobbered.
9093         (is_call_clobbered): Global variables are always call clobbered,
9094         query the call-clobbers bitmap.
9095         (mark_call_clobbered): Ignore global variables.
9096         (clear_call_clobbered): Likewise.
9097         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
9098         virtual operands sanity check.
9099         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
9100         Remove.
9101         (TARGET_MEM_REF): Remove TMR_TAG operand.
9102         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
9103         Remove call-clobber related code.
9104         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
9105         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
9106         partitions or escape reason.
9107         (get_single_def_stmt, get_single_def_stmt_from_phi,
9108         get_single_def_stmt_with_phi): Remove.
9109         (dump_referenced_vars): Tidy.
9110         (get_ref_base_and_extent): Allow bare decls.
9111         (collect_dfa_stats): Adjust.
9112         * graphite.c (rename_variables_in_stmt): Adjust.
9113         (graphite_copy_stmts_from_block): Likewise.
9114         (translate_clast): Likewise.
9115         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
9116         (EXPR_DIES): New.
9117         (translate_vuse_through_block): Use the oracle.
9118         (phi_translate_1): Adjust.
9119         (value_dies_in_block_x): Use the oracle.  Cache the outcome
9120         in EXPR_DIES.
9121         (valid_in_sets): Check if the VUSE for
9122         a REFERENCE is available.
9123         (eliminate): Do not remove stmts during elimination,
9124         instead queue and remove them afterwards.
9125         (do_pre): Do not rebuild alias info.
9126         (pass_pre): Run TODO_rebuild_alias before PRE.
9127         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
9128         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
9129         (mark_all_v_defs_stmt): Remove.
9130         (mark_all_v_defs_seq): Adjust.
9131         (sra_replace): Likewise.
9132         (scalarize_use): Likewise.
9133         (scalarize_copy): Likewise.
9134         (scalarize_init): Likewise.
9135         (scalarize_ldst): Likewise.
9136         (todoflags): Remove.
9137         (tree_sra): Do not rebuild alias info.
9138         (tree_sra_early): Adjust.
9139         (pass_sra): Run TODO_update_address_taken before SRA.
9140         * tree-predcom.c (set_alias_info): Remove.
9141         (prepare_initializers_chain): Do not call it.
9142         (mark_virtual_ops_for_renaming): Adjust.
9143         (mark_virtual_ops_for_renaming_list): Remove.
9144         (initialize_root_vars): Adjust.
9145         (initialize_root_vars_lm): Likewise.
9146         (prepare_initializers_chain): Likewise.
9147         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
9148         (may_propagate_copy_into_stmt): Likewise.
9149         (merge_alias_info): Do nothing for now.
9150         (propagate_tree_value_into_stmt): Adjust.
9151         (stmt_may_generate_copy): Likewise.
9152         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
9153         not mark symbols for renaming.
9154         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
9155         with the same statement, make sure to update the new pointed-to one.
9156         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
9157         call statements, do not mark symbols for renaming.
9158         (mark_operand_necessary): Dump something.
9159         (ref_may_be_aliased): New function.
9160         (mark_aliased_reaching_defs_necessary_1): New helper function.
9161         (mark_aliased_reaching_defs_necessary): Likewise.
9162         (mark_all_reaching_defs_necessary_1): Likewise.
9163         (mark_all_reaching_defs_necessary): Likewise.
9164         (propagate_necessity): Do not process virtual PHIs.  For
9165         non-aliased loads mark all reaching definitions as necessary.
9166         For aliased loads and stores mark the immediate dominating
9167         aliased clobbers as necessary.
9168         (visited): New global static.
9169         (perform_tree_ssa_dce): Free visited bitmap after propagating
9170         necessity.
9171         (remove_dead_phis): Perform simple dead virtual PHI removal.
9172         (remove_dead_stmt): Properly unlink virtual operands when
9173         removing stores.
9174         (eliminate_unnecessary_stmts): Schedule PHI removal after
9175         stmt removal.
9176         * tree-ssa-ter.c (is_replaceable_p): Adjust.
9177         (process_replaceable): Likewise.
9178         (find_replaceable_in_bb): Likewise.
9179         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
9180         based on the single gimple vop.
9181         (verify_flow_insensitive_alias_info): Remove.
9182         (verify_flow_sensitive_alias_info): Likewise.
9183         (verify_call_clobbering): Likewise.
9184         (verify_memory_partitions): Likewise.
9185         (verify_alias_info): Likewise.
9186         (verify_ssa): Adjust..
9187         (execute_update_addresses_taken): Export.  Update SSA
9188         manually.  Optimize only when optimizing.  Use a local bitmap.
9189         (pass_update_address_taken): Remove TODO_update_ssa, add
9190         TODO_dump_func.
9191         (pass_update_address_taken): Just use TODO_update_address_taken.
9192         (init_tree_ssa): Do not initialize addressable_vars.
9193         (verify_ssa): Verify new VUSE / VDEF properties.
9194         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
9195         Do not call verify_alias_info.
9196         (delete_tree_ssa): Clear the VUSE, VDEF operands.
9197         Do not free the loaded and stored syms bitmaps.  Reset the escaped
9198         and callused solutions.  Do not free addressable_vars.
9199         Remove memory-tag related code.
9200         (warn_uninitialized_var): Aliases are always available.
9201         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
9202         * lambda-code.c (can_put_in_inner_loop): Adjust.
9203         (can_put_after_inner_loop): Likewise.
9204         (perfect_nestify): Likewise.
9205         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
9206         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
9207         (vectorizable_conversion): Do not mark symbols for renaming.
9208         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
9209         (expand_call_inline): Unlink the calls virtual operands before
9210         replacing it.
9211         (tree_function_versioning): Do not call update_ssa if we are not
9212         updating clones.  Simplify.
9213         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
9214         (propagate_with_phi): Likewise..
9215         * tree-outof-ssa.c (create_temp): Remove memory tag and call
9216         clobber code.  Assert we are not aliased or global.
9217         * tree-flow.h: Include tree-ssa-alias.h
9218         (enum escape_type): Remove.
9219         (struct mem_sym_stats_d): Likewise.
9220         (struct mem_ref_stats_d): Likewise.
9221         (struct gimple_df): Add vop member.  Remove global_var,
9222         call_clobbered_vars, call_used_vars, addressable_vars,
9223         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
9224         escaped and callused members.
9225         (struct ptr_info_def): Remove all members, add points-to solution
9226         member pt.
9227         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
9228         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
9229         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
9230         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
9231         (tree-ssa-alias.o): Likewise.
9232         (toplev.o): Add tree-ssa-alias.h
9233         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
9234         * gimple.c (gimple_set_bb): Fix off-by-one error.
9235         (is_gimple_reg): Do not handle memory tags.
9236         (gimple_copy): Also copy virtual operands.
9237         Delay updating the statement.  Do not reset loaded and stored syms.
9238         (gimple_set_stored_syms): Remove.
9239         (gimple_set_loaded_syms): Likewise.
9240         (gimple_call_copy_skip_args): Copy the virtual operands
9241         and mark the new statement modified.
9242         * tree-ssa-structalias.c (may_alias_p): Remove.
9243         (set_uids_in_ptset): Take the alias set to prune with as
9244         parameter.  Fold in the alias test of may_alias_p.
9245         (compute_points_to_sets): Compute whether a ptr is dereferenced
9246         in a local sbitmap.
9247         (process_constraint): Deal with &ANYTHING on the lhs, reject all
9248         other ADDRESSOF constraints on the lhs.
9249         (get_constraint_for_component_ref): Assert that we don't get
9250         ADDRESSOF constraints from the base of the reference.
9251         Properly generate UNKNOWN_OFFSET for DEREF if needed.
9252         (struct variable_info): Remove collapsed_to member.
9253         (get_varinfo_fc): Remove.
9254         (new_var_info): Do not set collapsed_to.
9255         (dump_constraint): Do not follow cycles.
9256         (dump_constraint_graph): Likewise.
9257         (build_pred_graph): Likewise.
9258         (build_succ_graph): Likewise.
9259         (rewrite_constraints): Likewise.
9260         (do_simple_structure_copy): Remove.
9261         (do_rhs_deref_structure_copy): Remove.
9262         (do_lhs_deref_structure_copy): Remove.
9263         (collapse_rest_of_var): Remove.
9264         (do_structure_copy): Re-implement.
9265         (pta_stats): New global variable.
9266         (dump_pta_stats): New function.
9267         (struct constraint_expr): Make offset signed.
9268         (UNKNOWN_OFFSET): Define special value.
9269         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
9270         (solution_set_expand): New helper function split out from ...
9271         (do_sd_constraint): ... here.
9272         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
9273         (do_ds_constraint): Likewise.
9274         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
9275         and CALLUSED = *CALLUSED.
9276         (set_union_with_increment): Make inc argument signed.
9277         (type_safe): Remove.
9278         (get_constraint_for_ptr_offset): Handle unknown and negative
9279         constant offsets.
9280         (first_vi_for_offset): Handle offsets before start.  Bail
9281         out early for offsets beyond the variable extent.
9282         (first_or_preceding_vi_for_offset): New function.
9283         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
9284         Together with ESCAPED = *ESCAPED this properly computes reachability.
9285         (find_what_var_points_to): New function.
9286         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
9287         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
9288         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
9289         pt_solutions_intersect): New functions.
9290         (compute_call_used_vars): Remove.
9291         (compute_may_aliases): New main entry into PTA computation.
9292         * gimple.h (gimple_p): New typedef.
9293         (struct gimple_statement_base): Remove references_memory_p.
9294         (struct gimple_statement_with_memory_ops_base): Remove
9295         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
9296         members.
9297         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
9298         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
9299         gimple_set_references_memory): Remove.
9300         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
9301         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
9302         New functions.
9303         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
9304         (verify_expr): Allow RESULT_DECL.
9305         (gimple_duplicate_bb): Do not copy virtual operands.
9306         (gimple_duplicate_sese_region): Adjust.
9307         (gimple_duplicate_sese_tail): Likewise.
9308         (mark_virtual_ops_in_region): Remove.
9309         (move_sese_region_to_fn): Do not call it.
9310         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
9311         and pass_simple_dse.
9312         (execute_function_todo): Handle TODO_update_address_taken,
9313         call execute_update_addresses_taken for TODO_rebuild_alias.
9314         (execute_todo): Adjust.
9315         (execute_one_pass): Init dump files early.
9316         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
9317         call-clobbered.
9318         (create_general_new_stmt): Clear vops.
9319         * tree-ssa-reassoc.c (get_rank): Adjust.
9320         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
9321         symbols for renaming.
9322         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
9323         (PARAM_AVG_ALIASED_VOPS): Likewise.
9324         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
9325         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
9326         * tree-ssa-operands.c: Simplify for new virtual operand representation.
9327         (operand_build_cmp, copy_virtual_operands,
9328         create_ssa_artificial_load_stmt, add_to_addressable_set,
9329         gimple_add_to_addresses_taken): Remove public functions.
9330         (unlink_stmt_vdef): New function.
9331
9332 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9333
9334         * config.gcc (powerpc-*-linux*): Merge variants.
9335
9336 2009-04-02  Chao-ying Fu  <fu@mips.com>
9337             James Grosbach  <james.grosbach@microchip.com>
9338
9339         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
9340         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
9341         cop0_sp_offset.
9342         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
9343         keep_interrupts_masked_p, use_debug_exception_return_p.
9344         (mips_attribute_table): Add interrupt, use_shadow_register_set,
9345         keep_interrupts_masked, use_debug_exception_return.
9346         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
9347         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
9348         New functions.
9349         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
9350         (mips_print_operand): Process COP0 registers to print $0 .. $31
9351         correctly for GAS to process.
9352         (mips_interrupt_extra_call_saved_reg_p): New function.
9353         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
9354         extra registers.
9355         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
9356         (mips_compute_frame_info): Add supports for interrupt context that
9357         includes doubleword accumulators and COP0 registers.
9358         (mips_for_each_saved_acc): New function.
9359         (mips_for_each_saved_gpr_and_fpr): Change the function name from
9360         mips_for_each_saved_reg.
9361         (mips_save_reg): Save accumulators.
9362         (mips_kernel_reg_p): A new for_each_rtx callback.
9363         (mips_expand_prologue): Support interrupt handlers.
9364         (mips_restore_reg): Restore accumulators.
9365         (mips_expand_epilogue): Support interrupt handlers.
9366         (mips_can_use_return_insn): Return false for interrupt handlers.
9367         (mips_epilogue_uses): New function.
9368         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
9369         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
9370         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
9371         cop0_move): New instructions.
9372         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
9373         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
9374         defines.
9375         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
9376         New defines.
9377         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
9378         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
9379         interrupt handlers, we use K0 as the temporary register.
9380         (EPILOGUE_USES): Change to a function call.
9381         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
9382         handlers, we use K0 as the temporary register.
9383
9384         * doc/extend.texi (Function Attributes): Document interrupt,
9385         use_shadow_register_set, keep_interrupts_masked,
9386         use_debug_exception_return for MIPS attributes.
9387
9388 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9389
9390         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
9391         Remove a number of t-files from tmake_file.
9392         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
9393         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
9394         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
9395         target_prototype, not TARGET_PROTOTYPE.
9396         (LINK_OS_GNU_SPEC): Define.
9397         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
9398         and darwin-ldoubdle.c.
9399
9400 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
9401
9402         PR driver/39293
9403         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
9404         (cpp_options): Ditto.
9405         (default_compilers): Ditto.
9406         (display_help): Ditto.
9407         (process_command): Ditto.
9408         (do_spec_1): Ditto.
9409         (set_input): Use lbasename instead of duplicate code.
9410         (save_temps_prefix): New static for -save-temps=obj.
9411         (save_temps_length): Ditto.
9412
9413         * doc/invoke.texi (-save-temps=obj): Document new variant to
9414         -save-temps switch.
9415
9416 2009-04-02  Jeff Law  <law@redhat.com>
9417
9418         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
9419         variable.
9420
9421 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9422
9423         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
9424         * configure: Regenerated.
9425
9426 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9427
9428         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
9429         share the argument list.
9430
9431 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9432
9433         Merge
9434
9435         2009-02-12  Diego Novillo  <dnovillo@google.com>
9436
9437         * varpool.c (debug_varpool): New.
9438         * cgraph.h (debug_varpool): Declare.
9439
9440 2009-04-02  Jan Hubicka  <jh@suse.cz>
9441
9442         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
9443         pass.
9444
9445 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9446
9447         * config/i386/i386.c (ix86_abi): Move initialization to ...
9448         (override_options): Here.
9449
9450 2009-04-02  Christian Bruel  <christian.bruel@st.com>
9451
9452         * config/sh/sh.c (sh_dwarf_register_span): New function.
9453         (TARGET_DWARF_REGISTER_SPAN): Define.
9454         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
9455
9456 2009-04-02  Ira Rosen  <irar@il.ibm.com>
9457
9458         PR tree-optimization/39595
9459         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
9460         interleaved loads group is not  greater than the SLP group size.
9461
9462 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9463
9464         * builtins.c (is_builtin_name): New.
9465         (called_as_built_in): Use is_builtin_name.
9466         * tree.h (is_builtin_name): New.
9467         * varasm.c (incorporeal_function_p): Use is_builtin_name
9468
9469 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
9470
9471         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
9472
9473 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
9474
9475         PR c++/26693
9476         * c-decl.c (clone_underlying_type): Move this ...
9477         * c-common.c (set_underlying_type): ... here.
9478         Also, make sure the function properly sets TYPE_STUB_DECL() on
9479         the newly created typedef variant type.
9480         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
9481         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
9482         points.
9483
9484 2009-04-02  Richard Guenther  <rguenther@suse.de>
9485
9486         PR tree-optimization/37221
9487         * tree-flow.h (degenerate_phi_result): Declare.
9488         * tree-ssa-dom.c (degenerate_phi_result): Export.
9489         * tree-scalar-evolution.c (analyze_initial_condition): If
9490         the initial condition is defined by a degenerate PHI node
9491         use the degenerate value.
9492
9493 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
9494
9495         PR rtl-optimization/39588
9496         * combine.c (merge_outer_ops): Do not set the constant when this
9497         is not necessary.
9498         (simplify_shift_const_1): Do not modify it either in this case.
9499
9500 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9501
9502         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
9503         tuning is deprecated if -mtune value is set to an Itanium1 variant.
9504
9505 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
9506
9507         PR c/29027
9508         * c-lex.c (interpret_float): Default (no suffix) is double.
9509
9510 2009-04-1  Xinliang David Li  <davidxl@google.com>
9511
9512         * config/i386/i386.c (legitimate_constant_p): Recognize
9513         all one vector constant.
9514
9515 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9516
9517         * config/vax/vax.c: Add #includes to silence warnings.
9518         Change #include order to silence two warnings.
9519
9520 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9521
9522         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
9523         (ASM_SPEC): Pass -k to the assembler for PIC code.
9524
9525 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9526
9527         * config.gcc: Add vax-*-linux* to the switch.
9528         * config/vax/linux.h: New file. (TARGET_VERSION,
9529         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
9530
9531 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9532
9533         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
9534         Use predicate macros instead of GET_CODE() == foo.
9535         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
9536         ashlsi3, rotrsi3, <unnamed>): Likewise.
9537
9538 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9539
9540         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
9541         jbbccihi, jbbccisi): Remova trailing whitespace.
9542         * config/vax/constraints.md: Likewise.
9543         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
9544         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
9545         * config/vax/predicates.md: Likewise.
9546         * config/vax/vax.c (print_operand_address, vax_output_int_move,
9547         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
9548         * config/vax/vax.h: Likewise.
9549         * config/vax/vax.md (nonlocal_goto): Likewise.
9550
9551 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9552
9553         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
9554         (indirectable_address_p, adjacent_operands_p): Add spaces around
9555         braces.
9556         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
9557
9558 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9559
9560         * config/vax/vax.c (legitimate_constant_address_p,
9561         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
9562         index_term_p, reg_plus_index_p, legitimate_address_p,
9563         vax_mode_dependent_address_p): Update comments to match functions
9564         modified by the recent int->bool conversion.
9565
9566 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9567
9568         * config/vax/builtins.md: Update copyright message.
9569         * config/vax/constraints.md: Likewise.
9570         * config/vax/netbsd-elf.h: Likewise.
9571         * config/vax/predicates.md: Likewise.
9572         * config/vax/vax-protos.h: Likewise.
9573         * config/vax/vax.c: Likewise.
9574         * config/vax/vax.h: Likewise.
9575         * config/vax/vax.md: Likewise.
9576         * config/vax/vax.opt: Likewise.
9577
9578 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9579
9580         * config/vax/builtins.md (ffssi2, ffssi2_internal,
9581         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
9582         * config/vax/constraints.md (B, R): Likewise.
9583         * config/vax/predicates.md (external_memory_operand,
9584         nonimmediate_addsub_di_operand): Likewise.
9585         * config/vax/vax.c (vax_output_int_add): Likewise.
9586         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
9587         untyped_call): Likewise.
9588
9589 2009-04-01  Matt Thomas  <matt@3am-software.com>
9590
9591         * config/vax/predicates.md: New file.
9592         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
9593         external_const_operand, nonsymbolic_operand, external_memory_operand,
9594         indirect_memory_operand, indexed_memory_operand,
9595         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
9596         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
9597         predicate.
9598         * config/vax/constraints.md: New file.
9599         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
9600         New constraint.
9601         * config/vax/builtins.md: New file.
9602         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
9603         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
9604         jbbccisi): Define.
9605         * config/vax/vax.opt (mqmath): Add option.
9606         * config/vax/vax.md (isfx): Extend with DI.
9607         (VAXintQH, VAXintQHSD): Define.
9608         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
9609         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
9610         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
9611         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
9612         (movdi): Update constraints and use vax_output_int_move().
9613         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
9614         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
9615         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
9616         nonlocal_goto): New.
9617         (mov<mode>): Extend accepted operand types.
9618         (subdi3_old): Rename from subdi3, change update constraints and use
9619         a new implementation.
9620         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
9621         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
9622         MOVE_RATIO, CLEAR_RATIO): Define.
9623         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
9624         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
9625         (PRINT_OPERAND): Redefine using a function instead of inlined code.
9626         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
9627         (split_quadword_operands): Make static and really allow variable
9628         splitting.
9629         (print_operand_address): Update for PIC generation.
9630         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
9631         indexable_address_p, fixup_mathdi_operand,
9632         vax_expand_addsub_di_operands, adjacent_operands_p): New.
9633         (vax_float_literal, legitimate_constant_p,
9634         indirectable_constant_address_p, index_term_p,
9635         reg_plus_index_p): Return bool instead of int.
9636         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
9637         where needed.
9638         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
9639         generation.
9640         (vax_output_conditional_branch): Indent.
9641         (legitimate_constant_address_p, indirectable_constant_address_p,
9642         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
9643         vax_mode_dependent_address_p): Return bool instead of int, update for
9644         PIC generation.
9645         * config/vax/vax-protos.h (legitimate_constant_address_p,
9646         legitimate_constant_p, legitimate_address_p,
9647         vax_mode_dependent_address_p): Change declaration to bool.
9648         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
9649         vax_expand_addsub_di_operands, vax_output_int_subtract,
9650         vax_output_movmemsi): Declare.
9651         (split_quadword_operands, vax_float_literal): Delete declaration.
9652         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
9653         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
9654         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
9655         ASM_OUTPUT_DWARF_PCREL): Define.
9656         (ASM_SPEC): Change definition to allow PIC generation.
9657
9658 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
9659
9660         * doc/sourcebuild.texi: Update front-end requirements.
9661
9662 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9663
9664         PR target/39226
9665         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
9666         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
9667         (booldi3_internal3): Use boolean_or_operator instead of
9668         boolean_operator.
9669
9670 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
9671
9672         PR c/39605
9673         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
9674         declarator whose size is not an integer constant expression but
9675         folds to an integer constant, then treat it as a constant
9676         subsequently.
9677
9678 2009-04-01  Richard Guenther  <rguenther@suse.de>
9679
9680         * fold-const.c (fold_plusminus_mult_expr): Do not fold
9681         i * 4 + 2 to (i * 2 + 1) * 2.
9682
9683 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9684
9685         PR c/37772
9686         * c-parser.c (c_parser_asm_statement): Skip until close paren and
9687         return if c_parser_asm_string_literal returned NULL.
9688
9689 2009-04-01  Nick Clifton  <nickc@redhat.com>
9690
9691         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
9692         already defined.
9693         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
9694         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
9695         other typedefs to avoid conflicts with libgcc2.c.  Define labels
9696         to gain 16-bit bit-manipulation functions from libgcc2.c and then
9697         include it.
9698         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
9699         to gain 16-bit trapping arithmetic functions from libgcc2.c and
9700         then include it.
9701
9702 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
9703
9704         * varasm.c (default_function_rodata_section): Declare DOT as
9705         const char*.
9706
9707 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
9708             Andrey Galkin  <agalkin@hypercom.com>
9709
9710         PR/39492
9711         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
9712         Make object_name unique for each process.
9713
9714 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9715
9716         PR other/39591
9717         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
9718         addressable variables in the parallel that could go out of scope while
9719         running queued tasks.
9720
9721 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
9722
9723         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
9724         (CASE_VALUES_THRESHOLD): Redefine.
9725         * config/avr/avr.c (avr_override_options): Remove initialization of
9726         avr_case_values_threshold variable.
9727         (avr_case_values_threshold): Remove variable. Add new function.
9728         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
9729         * config/avr/avr.opt (mno-tablejump): Remove option.
9730         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
9731
9732 2009-04-01  DJ Delorie  <dj@redhat.com>
9733
9734         * varasm.c (default_function_rodata_section): Don't assume
9735         anything about where the first '.' in the section name is.
9736
9737 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
9738
9739         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
9740         rs6000_emit_stack_tie.
9741
9742 2009-03-31  Ian Lance Taylor  <iant@google.com>
9743
9744         * tree-eh.c (tree_remove_unreachable_handlers): Compare
9745         gimple_code with GIMPLE_RESX, not RESX.
9746
9747 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9748
9749         * c-common.c (c_get_ident): New.
9750         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
9751
9752 2009-04-01  Ben Elliston  <bje@au.ibm.com>
9753
9754         * config/rs6000/sysv4.opt (msdata): Improve option description.
9755
9756 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
9757
9758         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
9759         (divdf3_internal_lat): Remove.
9760         (divxf3_internal_lat): Remove.
9761         (divxf3_internal_thr): Remove.
9762         (divxf): Use divxf3_internal.
9763         * config/ia64/div.md (divsf3_internal_lat): New.
9764         (divdf3_internal_lat): New.
9765         (divxf3_internal): New.
9766
9767 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9768
9769         PR c/448
9770         * Makefile.in (USE_GCC_STDINT): Define.
9771         (stmp-int-hdrs): Install stdint.h if applicable.
9772         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
9773         if known.
9774         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
9775         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
9776         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9777         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9778         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9779         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9780         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9781         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9782         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9783         (c_common_nodes_and_builtins): Initialize
9784         underlying_wchar_type_node.  Do not initialize
9785         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
9786         nodes for new types.
9787         (c_stddef_cpp_builtins): Define macros for new types.
9788         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
9789         Remove.
9790         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
9791         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
9792         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
9793         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
9794         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
9795         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
9796         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
9797         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
9798         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
9799         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
9800         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
9801         int16_type_node, int32_type_node, int64_type_node,
9802         uint8_type_node, uint16_type_node, c_uint32_type_node,
9803         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
9804         int_least32_type_node, int_least64_type_node,
9805         uint_least8_type_node, uint_least16_type_node,
9806         uint_least32_type_node, uint_least64_type_node,
9807         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
9808         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
9809         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
9810         uintptr_type_node): Define.
9811         * c-cppbuiltin.c (builtin_define_constants,
9812         builtin_define_type_minmax): New.
9813         (builtin_define_stdint_macros): Define more macros.
9814         (c_cpp_builtins): Define more limit macros.
9815         (type_suffix): New.
9816         (builtin_define_type_max): Define in terms of
9817         builtin_define_type_minmax.  Remove is_long parameter.  All
9818         callers changed.
9819         * config.gcc (use_gcc_stdint): Define.
9820         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
9821         Add newlib-stdint.h for generic targets.
9822         * config/glibc-stdint.h, config/newlib-stdint.h,
9823         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
9824         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
9825         * config/score/score.h (UINTPTR_TYPE): Define.
9826         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
9827         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
9828         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9829         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9830         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9831         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9832         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9833         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9834         * config/spu/spu.h (STDINT_LONG32): Define.
9835         * configure.ac (use_gcc_stdint): Substitute.
9836         * configure: Regenerate.
9837         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
9838         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
9839         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
9840         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
9841         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
9842         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
9843         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
9844         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
9845         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
9846         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
9847         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
9848         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
9849         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
9850         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
9851         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
9852         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
9853         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
9854         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
9855         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
9856         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
9857         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
9858         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
9859         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9860         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9861         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9862         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9863         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9864         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9865         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
9866
9867 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9868
9869         * loop-iv.c (suitable_set_for_replacement): Renamed from
9870         simplify_using_assignment; changed to return bool and to accept new
9871         args DEST and SRC.  Return true iff we find a source/destination pair
9872         that can be used to make a replacement, and fill SRC and DEST if so.
9873         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
9874         changed.
9875         (simplify_using_initial_values): Deal with altered regs here and track
9876         more precisely the effect they have on the validity of our expression.
9877
9878         * loop-iv.c (simplify_using_condition): A condition of the form
9879         (EQ REG CONST) can be used to simply make a substitution.
9880         (simplify_using_initial_values): Keep track of conditions we have seen
9881         and keep using them to simplify new expressions, while applying the
9882         same substitutions to them as to the expression.
9883
9884         * simplify-rtx.c (simplify_relational_operation_1): Simplify
9885         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
9886         GEU/LTU reversed.
9887
9888         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
9889         changed.  Use this when trying to improve the upper bound.
9890         Generate the comparison by using simplify_gen_relational.
9891
9892         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
9893
9894         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
9895         functions.
9896         (simplify_using_assignment, simplify_using_initial_values): Call
9897         replace_in_expr to make replacements.  Call replace_single_def_regs
9898         once on the initial version of the expression.
9899
9900 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9901
9902         PR target/27237
9903         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
9904
9905 2009-03-31  Richard Guenther  <rguenther@suse.de>
9906
9907         PR middle-end/31029
9908         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
9909         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
9910
9911 2009-03-31  Richard Guenther  <rguenther@suse.de>
9912
9913         * tree.h (div_if_zero_remainder): Declare.
9914         * fold-const.c (div_if_zero_remainder): Export.
9915         * tree-ssa-forwprop.c
9916         (forward_propagate_addr_into_variable_array_index): Handle
9917         constant array index addition outside of the variable index.
9918
9919 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9920
9921         PR target/39592
9922         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
9923         define_splits, floatunssi<mode>2): Require x87 conversions from
9924         DImode to be permitted.
9925
9926 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9927
9928         PR preprocessor/15638
9929         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
9930
9931 2009-03-31  Richard Guenther  <rguenther@suse.de>
9932
9933         PR middle-end/23401
9934         PR middle-end/27810
9935         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
9936         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
9937         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
9938         a separate statement.
9939         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
9940         (lookup_tmp_var): Likewise.
9941         (is_gimple_formal_tmp_or_call_rhs): Remove.
9942         (is_gimple_reg_or_call_rhs): Rename to ...
9943         (is_gimple_reg_rhs_or_call): ... this.
9944         (is_gimple_mem_or_call_rhs): Rename to ...
9945         (is_gimple_mem_rhs_or_call): ... this.
9946         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
9947         DECL_GIMPLE_REG_P only if is_formal is true.
9948         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
9949         for non-proper post-modify expression gimplification.
9950         (gimplify_self_mod_expr): For post-modify expressions gimplify
9951         the lvalue to a minimal lvalue.
9952         (rhs_predicate_for): Remove formal temp case.
9953         (gimplify_modify_expr_rhs): Likewise.
9954         (gimplify_addr_expr): Use is_gimple_reg.
9955         (gimplify_expr): Remove formal temp cases.
9956         (gimple_regimplify_operands): Likewise.
9957         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
9958         and FILTER_EXPR like constants.
9959         * gimple.c (walk_gimple_op): Fix val_only initialization, use
9960         is_gimple_reg.
9961         (is_gimple_formal_tmp_rhs): Remove.
9962         (is_gimple_reg_rhs): Remove special casing.
9963         (is_gimple_mem_rhs): Fix.
9964         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
9965         (is_gimple_formal_tmp_var): Remove.
9966         (is_gimple_formal_tmp_reg): Likewise.
9967         (is_gimple_min_lval): Allow invariant component ref parts.
9968         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
9969         is_gimple_formal_tmp_reg): Remove declarations.
9970         * tree-cfg.c (verify_expr): Verify that variables with address
9971         taken do not have DECL_GIMPLE_REG_P set.
9972         * tree-mudflap.c (mf_build_check_statement_for): Use
9973         force_gimple_operand instead of gimplify_expr.
9974
9975 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
9976
9977         * modulo-sched.c (sms_schedule_by_order): Pass the actual
9978         schedulable rows to compute_split_row.
9979
9980 2009-03-31  Ben Elliston  <bje@au.ibm.com>
9981
9982         PR target/31635
9983         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
9984         OPT_mvrsave.
9985
9986 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9987
9988         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
9989         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
9990         * configure: Regenerate.
9991         * config.in: Regenerate.
9992         * config/rs6000/rs6000.opt (mtls-markers): Add.
9993         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
9994         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
9995         (tls_ld_aix, tls_ld_sysv): Likewise.
9996         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
9997         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
9998
9999 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
10000
10001         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
10002
10003 2009-03-30  Jan Hubicka  <jh@suse.cz>
10004
10005         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
10006         out of RESX.
10007         (tree_remove_unreachable_handlers): Cleanup EH predecestor
10008         detection and label handling.
10009
10010 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
10011
10012         * ira-int.h (ira_allocno): Rename left_conflicts_num to
10013         left_conflicts_size.
10014         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
10015         ALLOCNO_LEFT_CONFLICTS_SIZE.
10016
10017         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
10018         remove_allocno_from_bucket_and_push,
10019         allocno_spill_priority_compare, push_allocnos_to_stack,
10020         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
10021         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
10022         (setup_allocno_left_conflicts_num): Ditto.  Rename to
10023         setup_allocno_left_conflicts_size.
10024         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
10025         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
10026         setup_allocno_left_conflicts_size instead of
10027         setup_allocno_left_conflicts_num.
10028
10029         * ira-build.c (ira_create_allocno): Use
10030         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
10031         ALLOCNO_LEFT_CONFLICTS_NUM.
10032
10033 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
10034
10035         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
10036         instead of DF_LR_OUT.
10037
10038         * ira-lives.c (process_bb_node_lives): Ditto.
10039
10040         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
10041         instead of DF_LR_{OUT,IN}.
10042
10043         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
10044
10045         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
10046
10047 2009-03-30  Jan Hubicka  <jh@suse.cz>
10048
10049         * except.c (label_to_region_map): Fix thinko.
10050
10051 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
10052
10053         PR middle-end/38237
10054         * tree.h (tree_find_value): New declaration.
10055         * tree.c (tree_find_value): New function.
10056         * varasm.c (assemble_external): Avoid duplicate entries on lists.
10057
10058 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
10059
10060         PR debug/39563
10061         * c-decl.c (struct c_binding): Add locus field.
10062         (bind): Add locus argument, set locus field from it.
10063         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
10064         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
10065         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
10066         implicitly_declare, undeclared_variable, lookup_label,
10067         declare_label, c_make_fname_decl, c_builtin_function,
10068         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
10069         bind callers.
10070
10071 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
10072
10073         PR target/38781
10074         * config/i386/i386.c (classify_argument): Check total size of
10075         structure.
10076
10077 2009-03-30  Martin Jambor  <mjambor@suse.cz>
10078
10079         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
10080         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
10081         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
10082         respectively.
10083
10084         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
10085         seen_variable_array_ref while also traversing a union.
10086
10087         * tree-inline.c (optimize_inline_calls): Do not call
10088         cgraph_node_remove_callees.
10089         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
10090         (pass_remove_cgraph_callee_edges): New variable.
10091         * passes.c (init_optimization_passes): Add
10092         pass_remove_cgraph_callee_edges after early inlining and before all
10093         late intraprocedural passes.
10094
10095         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
10096
10097 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10098
10099         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
10100         Fix typos in names.
10101
10102 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10103
10104         * combine.c (simplify_comparison): Use have_insn_for.
10105         * dojump.c (do_jump): Likewise.
10106
10107 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10108
10109         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
10110         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
10111         sparc_compare_op0 like sparc_compare_emitted used to be handled.
10112         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
10113         instead of sparc_compare_emitted.
10114         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
10115         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
10116         instead of sparc_compare_emitted.
10117
10118 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10119
10120         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
10121         enter/exit cfglayout mode.
10122         (pass_partition_block): Require it.
10123         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
10124         (combine_instructions): Track basic blocks instead of labels.
10125         (update_cfg_for_uncondjump): New.
10126         (try_combine): Use it.  Update jumps after rescanning.
10127         (pass_combine): Require PROP_cfglayout.
10128         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
10129
10130 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10131
10132         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
10133         Provide/destroy PROP_cfglayout respectively.
10134         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
10135         * tree-pass.h (PROP_cfglayout): New.
10136
10137 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10138
10139         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
10140         fold_convert_const_fixed_from_fixed,
10141         fold_convert_const_fixed_from_int,
10142         fold_convert_const_fixed_from_real, fold_negate_const): Do not
10143         set TREE_CONSTANT_OVERFLOW.
10144         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
10145         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
10146
10147 2009-03-30  Ira Rosen  <irar@il.ibm.com>
10148
10149         * tree-vect-loop-manip.c: New file.
10150         * tree-vectorizer.c: Update documentation and included files.
10151         (vect_loop_location): Make extern.
10152         (rename_use_op): Move to tree-vect-loop-manip.c
10153         (rename_variables_in_bb, rename_variables_in_loop,
10154         slpeel_update_phis_for_duplicate_loop,
10155         slpeel_update_phi_nodes_for_guard1,
10156         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
10157         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
10158         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
10159         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
10160         find_loop_location): Likewise.
10161         (new_stmt_vec_info): Move to tree-vect-stmts.c.
10162         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
10163         get_vectype_for_scalar_type, vect_is_simple_use,
10164         supportable_widening_operation, supportable_narrowing_operation):
10165         Likewise.
10166         (bb_in_loop_p): Move to tree-vect-loop.c.
10167         (new_loop_vec_info, destroy_loop_vec_info,
10168         reduction_code_for_scalar_code, report_vect_op,
10169         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
10170         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
10171         (vect_supportable_dr_alignment): Likewise.
10172         * tree-vectorizer.h (tree-data-ref.h): Include.
10173         (vect_loop_location): Declare.
10174         Reorganize function declarations according to the new file structure.
10175         * tree-vect-loop.c: New file.
10176         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
10177         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
10178         * tree-vect-data-refs.c: New file.
10179         * tree-vect-patterns.c (timevar.h): Don't include.
10180         * tree-vect-stmts.c: New file.
10181         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
10182         tree-vect-slp.c, tree-vect-loop.c.
10183         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
10184         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
10185         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
10186         (tree-vect-analyze.o): Remove.
10187         (tree-vect-transform.o): Likewise.
10188         (tree-vect-data-refs.o): Add rule.
10189         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
10190         tree-vect-slp.o): Likewise.
10191         (tree-vect-patterns.o): Remove redundant dependencies.
10192         (tree-vectorizer.o): Likewise.
10193         * tree-vect-slp.c: New file.
10194
10195 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10196
10197         * optc-gen.awk: Warn if an option flag has multiple different
10198         help strings.
10199
10200 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
10201
10202         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
10203         -floop-block): Document dependences on PPL, CLooG and Graphite.
10204
10205 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
10206
10207         PR rtl-optimization/323
10208         * c-common.c (c_fully_fold, convert_and_check,
10209         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
10210         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
10211         * c-common.def (EXCESS_PRECISION_EXPR): New.
10212         * c-cppbuiltin.c (builtin_define_float_constants): Define
10213         constants with enough digits for long double.
10214         * c-lex.c (interpret_float): Interpret constant with excess
10215         precision where appropriate.
10216         * c-opts.c (c_common_post_options): Set
10217         flag_excess_precision_cmdline.  Give an error for
10218         -fexcess-precision=standard for C++ for processors where the
10219         option is significant.
10220         * c-parser.c (c_parser_conditional_expression): Handle excess
10221         precision in condition.
10222         * c-typeck.c (convert_arguments): Handle arguments with excess
10223         precision.
10224         (build_unary_op): Move excess precision outside operation.
10225         (build_conditional_expr): Likewise.
10226         (build_compound_expr): Likewise.
10227         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
10228         (build_modify_expr): Handle excess precision in RHS.
10229         (convert_for_assignment): Handle excess precision in converted
10230         value.
10231         (digest_init, output_init_element, process_init_element): Handle
10232         excess precision in initializer.
10233         (c_finish_return): Handle excess precision in return value.
10234         (build_binary_op): Handle excess precision in operands and add
10235         excess precision as needed for operation.
10236         * common.opt (-fexcess-precision=): New option.
10237         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
10238         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
10239         For standard excess precision, output explicit conversion to and
10240         truncation from XFmode.
10241         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
10242         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
10243         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
10244         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
10245         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
10246         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
10247         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
10248         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
10249         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
10250         define_splits, sqrt<mode>2): Disable where appropriate for
10251         standard excess precision.
10252         * convert.c (convert_to_real): Do not shorten arithmetic to type
10253         for which excess precision would be used.
10254         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
10255         * doc/invoke.texi (-fexcess-precision=): Document option.
10256         (-mfpmath=): Correct index entry.
10257         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
10258         flag_excess_precision): New.
10259         * langhooks.c (lhd_post_options): Set
10260         flag_excess_precision_cmdline.
10261         * opts.c (common_handle_option): Handle -fexcess-precision=.
10262         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
10263         init_excess_precision): New.
10264         (lang_dependent_init_target): Call init_excess_precision.
10265         * tree.c (excess_precision_type): New.
10266         * tree.h (excess_precision_type): Declare.
10267
10268 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
10269
10270         PR c/35235
10271         * c-typeck.c (build_component_ref): Do not copy qualifiers from
10272         non-lvalue to component.
10273
10274 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
10275
10276         PR preprocessor/34695
10277         * Makefile.in (c-opts.o): Depend on c-tree.h.
10278         * c-common.c: Move down include of diagnostic.h.
10279         (done_lexing, c_cpp_error): New.
10280         * c-common.h (done_lexing): Declare.
10281         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
10282         (parse_in).
10283         * c-opts.c: Include c-tree.h.
10284         (c_common_init_options): Set preprocessor error callback.
10285         (c_common_handle_option): Do not set preprocessor
10286         inhibit_warnings, warnings_are_errors, warn_system_headers,
10287         pedantic_errors or inhibit_warnings flags.
10288         (c_common_post_options): Do not check cpp_errors (parse_in).
10289         (c_common_finish): Do not output dependencies if there were
10290         errors.  Do not check return value of cpp_finish.
10291         * c-ppoutput.c (pp_file_change): Set input_location.
10292         * c-tree.h (c_cpp_error): Declare.
10293         * diagnostic.c (diagnostic_set_info_translated): Also initialize
10294         override_column.
10295         (diagnostic_build_prefix): Check override_column.
10296         * diagnostic.h (diagnostic_info): Add override_column field.
10297         (diagnostic_override_column): Define.
10298
10299 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
10300
10301         * c-common.c (c_expand_expr, c_staticp): Remove.
10302         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
10303         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
10304         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
10305         * c-gimplify.c (gimplify_compound_literal_expr,
10306         optimize_compound_literals_in_ctor): Remove.
10307         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
10308         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
10309         * c-semantics.c (emit_local_var): Remove.
10310
10311         * langhooks-def.h (lhd_expand_expr): Remove.
10312         * langhooks.c (lhd_expand_expr): Remove.
10313         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
10314
10315         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
10316         handling from c-semantics.c; don't call into langhook.
10317         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
10318         * gimplify.c (gimplify_compound_literal_expr,
10319         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
10320         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
10321         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
10322         as was done in c-gimplify.c.
10323         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
10324         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
10325         Move from c-common.h.
10326         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
10327
10328         * tree.c (staticp): Do not call langhook.
10329         * langhooks.c (lhd_staticp): Delete.
10330         * langhooks-def.h (lhd_staticp): Delete prototype.
10331         (LANG_HOOKS_STATICP): Delete.
10332         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
10333
10334         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
10335         instead of DECL_STMTs.
10336
10337 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
10338
10339         PR c/456
10340         PR c/5675
10341         PR c/19976
10342         PR c/29116
10343         PR c/31871
10344         PR c/35198
10345         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
10346         void_type_node.
10347         (fold_call_expr): Return a NOP_EXPR from folding rather than the
10348         contained expression.
10349         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
10350         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
10351         conditional expressions for C.
10352         (decl_constant_value_for_optimization): Move from
10353         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
10354         whether optimizing and that the expression is a VAR_DECL not of
10355         array type instead of doing such checks in the caller.  Do not
10356         check pedantic.  Call gcc_unreachable for C++.
10357         * c-common.def (C_MAYBE_CONST_EXPR): New.
10358         * c-common.h (c_fully_fold, c_save_expr,
10359         decl_constant_value_for_optimization): New prototypes.
10360         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
10361         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
10362         EXPR_INT_CONST_OPERANDS): Define.
10363         * c-convert.c (convert): Strip nops from expression.
10364         * c-decl.c (groktypename): Take extra parameters expr and
10365         expr_const_operands.  Update call to grokdeclarator.
10366         (start_decl): Update call to grokdeclarator.  Add statement for
10367         expressions used in type of decl.
10368         (grokparm): Update call to grokdeclarator.
10369         (push_parm_decl): Update call to grokdeclarator.
10370         (build_compound_literal): Add parameter non_const and build a
10371         C_MAYBE_COSNT_EXPR if applicable.
10372         (grokdeclarator): Take extra parameters expr and
10373         expr_const_operands.  Track expressions used in declaration
10374         specifiers and declarators.  Fold array sizes and track whether
10375         they are constant expressions and whether they are integer
10376         constant expressions.
10377         (parser_xref_tag): Set expr and expr_const_operands fields in
10378         return value.
10379         (grokfield): Update call to grokdeclarator.
10380         (start_function): Update call to grokdeclarator.
10381         (build_null_declspecs): Set expr and expr_const_operands fields in
10382         return value.
10383         (declspecs_add_type): Handle expressions in typeof specifiers.
10384         * c-parser.c (c_parser_declspecs): Set expr and
10385         expr_const_operands fields for declaration specifiers.
10386         (c_parser_enum_specifier): Likewise.
10387         (c_parser_struct_or_union_specifier): Likewise.
10388         (c_parser_typeof_specifier): Likewise.  Update call to
10389         groktypename.  Fold expression as needed.  Return expressions with
10390         type instead of adding statements.
10391         (c_parser_attributes): Update calls to c_parser_expr_list.
10392         (c_parser_statement_after_labels): Fold expression before passing
10393         to objc_build_throw_stmt.
10394         (c_parser_condition): Fold expression.
10395         (c_parser_asm_operands): Fold expression.
10396         (c_parser_conditional_expression): Use c_save_expr.  Update call
10397         to build_conditional_expr.
10398         (c_parser_alignof_expression): Update call to groktypename.
10399         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
10400         original_code.  Fold expression argument of va_arg.  Create
10401         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
10402         argument to va_arg.  Update calls to groktypename.  Fold array
10403         index for offsetof.  Verify that first argument to
10404         __builtin_choose_expr has integer type.
10405         (c_parser_postfix_expression_after_paren_type): Update calls to
10406         groktypename and build_compound_literal.  Handle expressions with
10407         side effects in type name.
10408         (c_parser_postfix_expression_after_primary): Update call to
10409         c_parser_expr_list.  Set original_code for calls to
10410         __builtin_constant_p.
10411         (c_parser_expr_list): Take extra parameter fold_p.  Fold
10412         expressions if requested.
10413         (c_parser_objc_type_name): Update call to groktypename.
10414         (c_parser_objc_synchronized_statement): Fold expression.
10415         (c_parser_objc_receiver): Fold expression.
10416         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
10417         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
10418         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
10419         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
10420         (struct c_typespec): Add elements expr and expr_const_operands.
10421         (struct c_declspecs): Add elements expr and expr_const_operands.
10422         (groktypename, build_conditional_expr, build_compound_literal):
10423         Update prototypes.
10424         (in_late_binary_op): Declare.
10425         * c-typeck.c (note_integer_operands): New function.
10426         (in_late_binary_op): New variable.
10427         (decl_constant_value_for_broken_optimization): Move to c-common.c
10428         and rename to decl_constant_value_for_optimization.
10429         (default_function_array_conversion): Do not strip nops.
10430         (default_conversion): Do not call
10431         decl_constant_value_for_broken_optimization.
10432         (build_array_ref): Do not fold result.
10433         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
10434         result when operand is a VLA.
10435         (c_expr_sizeof_type): Update call to groktypename.  Handle
10436         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
10437         result when operand names a VLA type.
10438         (build_function_call): Update call to build_compound_literal.
10439         Only fold result for calls to __builtin_* functions.  Strip
10440         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
10441         the function designator.
10442         (convert_arguments): Fold arguments.  Update call to
10443         convert_for_assignment.
10444         (build_unary_op): Handle increment and decrement of
10445         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
10446         decrement earlier.  Fold operand of increment and decrement.
10447         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
10448         built for integer operand.  Wrap returns that are INTEGER_CSTs
10449         without being integer constant expressions or that have integer
10450         constant operands without being INTEGER_CSTs.
10451         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
10452         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
10453         result is an integer constant expression or can be used in
10454         unevaluated parts of one and avoid folding and wrap as
10455         appropriate.  Fold operands before possibly doing -Wsign-compare
10456         warnings.
10457         (build_compound_expr): Wrap result for C99 if operands can be used
10458         in integer constant expressions.
10459         (build_c_cast): Update call to digest_init.  Do not ignore
10460         overflow from casting floating-point constants to integers.  Wrap
10461         results that could be confused with integer constant expressions,
10462         null pointer constants or floating-point constants.
10463         (c_cast_expr): Update call to groktypename.  Handle expressions
10464         included in type name.
10465         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
10466         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
10467         Update calls to convert_for_assignment.
10468         (convert_for_assignment): Take new parameter
10469         null_pointer_constant.  Do not strip nops or call
10470         decl_constant_value_for_broken_optimization.  Set
10471         in_late_binary_op for conversions to boolean.
10472         (store_init_value): Update call to digest_init.
10473         (digest_init): Take new parameter null_pointer_constant.  Do not
10474         call decl_constant_value_for_broken_optimization.  pedwarn for
10475         initializers not constant expressions.  Update calls to
10476         convert_for_assignment.
10477         (constructor_nonconst): New.
10478         (struct constructor_stack): Add nonconst element.
10479         (really_start_incremental_init, push_init_level, pop_init_level):
10480         Handle constructor_nonconst and nonconst element.
10481         (set_init_index): Call constant_expression_warning for array
10482         designators.
10483         (output_init_element): Fold value.  Set constructor_nonconst as
10484         applicable.  pedwarn for initializers not constant expressions.
10485         Update call to digest_init.  Call constant_expression_warning
10486         where constant initializers are required.
10487         (process_init_element): Use c_save_expr.
10488         (c_finish_goto_ptr): Fold expression.
10489         (c_finish_return): Fold return value.  Update call to
10490         convert_for_assignment.
10491         (c_start_case): Fold switch expression.
10492         (c_process_expr_stmt): Fold expression.
10493         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
10494         ensure statement expression is not evaluated in constant expression.
10495         (build_binary_op): Track whether results are integer constant
10496         expressions or may occur in such, disable folding and wrap results
10497         as applicable.  Fold operands for -Wsign-compare warnings unless
10498         in_late_binary_op.
10499         (c_objc_common_truthvalue_conversion): Handle results folded to
10500         integer constants that are not integer constant expressions.
10501         * doc/extend.texi: Document when typeof operands are evaluated,
10502         that condition of __builtin_choose_expr is an integer constant
10503         expression, and more about use of __builtin_constant_p in
10504         initializers.
10505
10506 2009-03-29  Richard Guenther  <rguenther@suse.de>
10507
10508         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
10509         propagate addresses of array references.
10510
10511 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
10512
10513         * regmove.c (perhaps_ends_bb_p): Remove.
10514         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
10515         from INSN and check that the main loop stays within that basic block.
10516         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
10517         (regmove_forward_pass): Split out from regmove_optimize.  Use
10518         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
10519         (regmove_backward_pass): Split out from regmove_optimize.  Use
10520         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
10521         (regmove_optimize): Simplify.
10522
10523 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10524
10525         PR target/39545
10526         * config/i386/i386.c (classify_argument): Ignore flexible array
10527         member in struct and warn ABI change.
10528
10529 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10530
10531         * config/i386/i386-protos.h (ix86_agi_dependent): New.
10532
10533         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
10534         (ix86_adjust_cost): Updated.
10535
10536 2009-03-29  Jan Hubicka  <jh@suse.cz>
10537
10538         PR middle-end/28850
10539         * tree-pass.h (pass_cleanup_eh): New function.
10540         (remove_unreachable_regions): Break code handling RTL
10541         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
10542         that can not be reached by runtime.
10543         (can_be_reached_by_runtime): New function.
10544         (label_to_region_map): New function.
10545         (num_eh_regions): New function.
10546         (rtl_remove_unreachable_regions): New function.
10547         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
10548         (remove_eh_region): New function.
10549         * except.h: Include sbitmap and vecprim.
10550         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
10551         num_eh_regions): Declare.
10552         * passes.c (init_optimization_passes): Schedule cleanup_eh.
10553         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
10554         * tree-eh.c (tree_remove_unreachable_handlers): New function.
10555         (tree_empty_eh_handler_p): New function.
10556         (cleanup_empty_eh): New function.
10557         (cleanup_eh): New function.
10558         (pass_cleanup_eh): New function.
10559
10560 2009-03-29  Jan Hubicka  <jh@suse.cz>
10561
10562         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
10563         for removed regions.
10564
10565 2009-03-29  Jan Hubicka  <jh@suse.cz>
10566
10567         * except.c (dump_eh_tree): Dump all datastructures.
10568
10569 2009-03-29  Jan Hubicka  <jh@suse.cz>
10570
10571         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
10572         (duplicate_eh_regions_1): Likewise.
10573         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
10574         vector; call EH verification.
10575         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10576         Be ready for region being removed.
10577
10578 2009-03-29  Jan Hubicka  <jh@suse.cz>
10579
10580         * bitmap.c (bitmap_last_set_bit): New function.
10581         * bitmap.h (bitmap_last_set_bit): Declare.
10582
10583 2009-03-29  David Ayers  <ayers@fsfe.org>
10584
10585         PR objc/27377
10586         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
10587         by calling objc_compare_types and surpress warnings about
10588         incompatible C pointers that are compatible ObjC pointers.
10589
10590 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
10591
10592         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
10593         call initialize_inline_failed.
10594         (initialize_inline_failed): Move it from here ...
10595         * cgraph.c (initialize_inline_failed): ... to here.
10596         (cgraph_create_edge): Call initialize_inline_failed rather than
10597         setting inline_failed directly.
10598
10599 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10600
10601         PR target/32542
10602         * sysv4.opt (msdata): Improve comment.
10603         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
10604         * sysv4.h (SVR4_ASM_SPEC): Likewise.
10605
10606 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10607
10608         PR target/30451
10609         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
10610         load and store attributes.
10611
10612 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10613
10614         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
10615         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
10616         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
10617         * doc/extend.texi (X86 Built-in Functions): Add index entries for
10618         __builtin_infq and __builtin_huge_valq.
10619
10620 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
10621
10622         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
10623         atmega8m1 devices.
10624         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10625         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
10626
10627 2009-03-28  Xinliang David Li  <davidxl@google.com>
10628
10629         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
10630         (do_dbg_cnt): New function.
10631
10632 2009-03-28  Jan Hubicka  <jh@suse.cz>
10633
10634         Merge from pretty-ipa:
10635
10636         2009-03-27  Jan Hubicka  <jh@suse.cz>
10637
10638         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10639         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
10640         * passes.c (function_called_by_processed_nodes_p): New.
10641         * ipa-pure-const.c (check_call): Fix handling of operands.
10642         (analyze_function): Dump debug output for skipped bodies.
10643         (local_pure_const): Use function_called_by_processed_nodes_p.
10644         * dwarf2out.c (reference_to_unused): Use output.
10645         * passes.c (do_per_function_toporder): Likewise.
10646
10647         2008-11-12  Jan Hubicka  <jh@suse.cz>
10648
10649         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
10650         * ipa-pure-const.c (funct_state_d): Add can throw field; make
10651         state_set_in_source enum
10652         (check_decl): Ignore memory tags; do not set fake looping flags;
10653         dump diagnostics.
10654         (check_operand, check_tree, check_rhs_var, check_lhs_var,
10655         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
10656         (check_call, analyze_function): Rewrite.
10657         (check_stmt): New.
10658         (add_new_function): Update call of analyze_function.
10659         (generate_summary): Add call of analyze_function.
10660         (propagate): Propagate can_throw; handle state_set_in_source correctly.
10661         (local_pure_const): New function.
10662         (pass_local_pure_const): New pass.
10663         * ipa-inline.c (inline_transform): Set after_inlining.
10664         * tree-eh.c (stmt_can_throw_external): New.
10665         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
10666         work with aliasing built.
10667         * tree-flow.h (stmt_can_throw_external): New.
10668         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
10669         and local pure/const pass in early and late optimization queue.
10670
10671 2009-03-28  Martin Jambor  <mjambor@suse.cz>
10672
10673         * fold-const.c (get_pointer_modulus_and_residue): New parameter
10674         allow_func_align.
10675         (fold_binary): Allow function decl aligment consideration is the
10676         second argument is integer constant one.
10677         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
10678         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
10679         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
10680
10681 2009-03-28  Jan Hubicka  <jh@suse.cz>
10682
10683         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
10684         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
10685         * function.h (rtl_data): Add nothrow flag.
10686         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
10687         set DECL_NOTHROW for AVAILABLE functions.
10688
10689 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
10690
10691         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
10692         following vector keyword has expansion starting with pixel or bool
10693         keyword, expand vector to __vector and pixel or bool to __pixel or
10694         __bool.
10695
10696         PR c++/39554
10697         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
10698         warn_if_disallowed_function_p): Removed.
10699         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
10700         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
10701         warning_if_disallowed_function_p.
10702         * flags.h (warn_if_disallowed_function_p,
10703         warn_disallowed_functions): Removed.
10704         * common.opt (Wdisallowed-function-list=): Removed.
10705         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
10706
10707 2009-03-28  Richard Guenther  <rguenther@suse.de>
10708
10709         PR tree-optimization/38723
10710         * tree-ssa-pre.c (compute_avail): Add all default definitions to
10711         the entry block.
10712
10713 2009-03-28  Jan Hubicka  <jh@suse.cz>
10714
10715         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
10716         test introduced by my previous patch.
10717
10718 2009-03-28  Richard Guenther  <rguenther@suse.de>
10719
10720         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
10721         the PHIs value undefined.
10722
10723 2009-03-28  Jan Hubicka  <jh@suse.cz>
10724
10725         * tree-pass.h (pass_fixup_cfg): New pass.
10726         * ipa-inline.c (inline_transform): Set
10727         always_inline_functions_inlined/after_inlining.
10728         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
10729         (pass_fixup_cfg): New pass.
10730         * passes.c (init_optimization_passes): Add fixup_cfg.
10731
10732 2009-03-28  Richard Guenther  <rguenther@suse.de>
10733
10734         PR tree-optimization/38458
10735         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
10736         argument use the arguments copy-of value.
10737
10738 2009-03-28  Richard Guenther  <rguenther@suse.de>
10739
10740         PR tree-optimization/38180
10741         * tree-ssa-ccp.c (get_default_value): Simplify.
10742         (likely_value): Likewise.
10743         (surely_varying_stmt_p): Properly handle VOP case.
10744         (ccp_initialize): Likewise.
10745         (ccp_fold): Handle propagating through *&.
10746         (fold_const_aggregate_ref): Also handle decls.
10747
10748 2009-03-28  Jan Hubicka  <jh@suse.cz>
10749
10750         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10751         * cgraph.h (cgraph_node): Likewise.
10752         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
10753         (cgraph_reset_node): Use process flag.
10754         (cgraph_mark_functions_to_output): Likewise.
10755         (cgraph_expand_function): Likewise.
10756         (cgraph_expand_all_functions): Likewise.
10757         (cgraph_output_in_order): Likewise.
10758         * dwarf2out.c (reference_to_unused): Likewise.
10759         * passes.c do_per_function_toporder): Likewise.
10760
10761 2009-03-28  Jan Hubicka  <jh@suse.cz>
10762
10763         Bring from lto-branch:
10764
10765         2008-09-03  Doug Kwan  <dougkwan@google.com>
10766
10767         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
10768         enums instead of reason strings.
10769         * cgraph.c (cgraph_create_edge): Same.
10770         (cgraph_inline_failed_string): New function.
10771         * cgraph.h (cgraph_inline_failed_t): New enum type.
10772         (cgraph_inline_failed_string): New prototype.
10773         (struct cgraph_edge): Change type of INLINED_FAILED from constant
10774         char pointer to cgraph_inline_failed_t.
10775         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
10776         (cgraph_default_inline_p): Ditto.
10777         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
10778         to cgraph_inline_failed_t pointer.
10779         * cif-code.def: New file.
10780         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
10781         reason string.
10782         (cgraph_check_inline_limits): Change type of REASON to pointer to
10783         cgraph_inline_failed_t.  Replace reason strings with enums.
10784         (cgraph_default_inline_p): Ditto.
10785         (cgraph_recursive_inlining_p): Ditto.
10786         (update_caller_keys): Change type of FAILED_REASON to
10787         cgraph_inline_failed_t.
10788         (cgraph_set_inline_failed): Change type of REASON to pointer to
10789         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
10790         convert enums to strings for text output.
10791         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
10792         to be of type cgraph_inline_failed_t.  Replace reason strings with
10793         enums.  Call cgraph_inline_failed_string to covert enums
10794         to strings for text output.
10795         (cgraph_decide_inlining): Replace reason strings with enums.
10796         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
10797         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
10798         for text output.
10799         * tree-inline.c (expand_call_inline): Change type of REASON
10800         to cgraph_inline_failed_t.  Replace reason strings with enums.
10801         Call cgraph_inline_failed_string for text output.
10802         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
10803         (cgraph.o): Ditto.
10804
10805 2009-03-28  Jan Hubicka  <jh@suse.cz>
10806
10807         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
10808         cgraph_clone_node): Remove master clone handling.
10809         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10810         * cgraph.h (master_clone): Remove.
10811         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10812         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
10813         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
10814
10815 2009-03-28  Jan Hubicka  <jh@suse.cz>
10816
10817         * cgraph.c (cgraph_function_body_availability): Functions declared
10818         inline are always safe to assume that it is not going to be replaced.
10819
10820 2009-03-28  Richard Guenther  <rguenther@suse.de>
10821
10822         PR tree-optimization/38513
10823         * tree-ssa-pre.c (eliminate): Remove redundant stores.
10824         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
10825         EXC_PTR_EXPR and FILTER_EXPR.
10826         (get_ref_from_reference_ops): Likewise.
10827
10828 2009-03-28  Richard Guenther  <rguenther@suse.de>
10829
10830         PR tree-optimization/38968
10831         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
10832         Use FLOOR_MOD_EXPR to compute misalignment.
10833
10834 2009-03-28  Richard Guenther  <rguenther@suse.de>
10835
10836         PR tree-optimization/37795
10837         * tree.h (combine_comparisons): Declare.
10838         * fold-const.c (combine_comparisons): Export.
10839         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
10840         comparisons.
10841         (ifcombine_iforif): Use combine_comparisons.
10842
10843 2009-03-28  Jan Hubicka  <jh@suse.cz>
10844
10845         * tree-eh.c (inlinable_call_p): New function.
10846         (make_eh_edges): Use it.
10847         (verify_eh_edges): Use it.
10848         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
10849         * except.c (reachable_next_level): Add inlinable_function argument
10850         (sjlj_find_directly_reachable_regions): Update.
10851         (add_reachable_handler): Do not set saw_any_handlers.
10852         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
10853         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10854         Add new inlinable call parameter.
10855         (can_throw_internal, can_throw_external): Update.
10856         * except.h (can_throw_internal_1, can_throw_external_1,
10857         foreach_reachable_handler): Update declaration.
10858
10859 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
10860
10861         * config/arm/t-arm-coff, config/h8300/coff.h,
10862         config/i386/i386-aout.h, config/i386/i386-coff.h,
10863         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
10864         config/pdp11/2bsd.h, config/rs6000/aix41.h,
10865         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
10866         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
10867         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
10868         sys-types.h: Remove.
10869         * Makefile.in: Remove protoize and fixproto support and references
10870         in comments.
10871         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
10872         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
10873         Remove.
10874         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
10875         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
10876         unprotoize$(exeext).
10877         (rest.encap): Don't depend on $(STMP_FIXPROTO)
10878         (.PHONY): Don't depend on proto.
10879         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
10880         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
10881         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
10882         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
10883         build/gen-protos.o, build/scan.o, xsys-protos.h,
10884         build/fix-header$(build_exeext), build/fix-header.o,
10885         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
10886         stmp-install-fixproto): Remove.
10887         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
10888         SYSCALLS.c or fixproto files.
10889         (install-common): Don't install protoize.
10890         (install-headers-tar, install-headers-cpio, install-headers-cp):
10891         Don't depend on $(STMP_FIXPROTO).
10892         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
10893         install fixproto files or write out fixproto settings.
10894         (uninstall): Don't uninstall protoize.
10895         * config.gcc (use_fixproto): Remove.
10896         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
10897         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
10898         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
10899         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
10900         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
10901         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
10902         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
10903         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
10904         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
10905         * config/t-vxworks (STMP_FIXPROTO): Remove.
10906         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
10907         STMP_FIXPROTO): Remove.
10908         * config.in, configure: Regenerate.
10909         * crtstuff.c (gid_t, uid_t): Don't undefine.
10910         * doc/install.texi: Change m68k-coff to m68k-elf in example.
10911         (arm-*-coff, arm-*-aout: Remove target entries.
10912         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
10913         Remove mention of AIX 4.1.
10914         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
10915         * doc/invoke.texi (Running Protoize): Remove.
10916         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
10917         (Protoize Caveats): Remove.
10918         * tsystem.h: Update comments on headers assumed to exist.
10919
10920 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
10921
10922         * genautomata.c: Add a new year to the copyright.  Add a new
10923         reference.
10924         (struct insn_reserv_decl): Add comments for member bypass_list.
10925         (find_bypass): Remove.
10926         (insert_bypass): New.
10927         (process_decls): Use insert_bypass.
10928         (output_internal_insn_latency_func): Output all bypasses with the
10929         same input insn in one switch case.
10930
10931         * rtl.def (define_bypass): Describe bypass choice.
10932         * doc/md.texi (define_bypass): Ditto.
10933
10934 2009-03-27  Richard Guenther  <rguenther@suse.de>
10935
10936         * gimplify.c (mark_addressable): Export.
10937         * tree-flow.h (mark_addressable): Declare.
10938         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
10939         * tree-ssa.c (verify_phi_args): Verify that address taken
10940         variables have TREE_ADDRESSABLE set.
10941
10942 2009-03-27  Richard Guenther  <rguenther@suse.de>
10943
10944         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
10945         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
10946         Do not mark decls TREE_ADDRESSABLE.
10947         (build_fold_addr_expr): Adjust.
10948         (fold_addr_expr): Remove.
10949         (fold_unary): Use build_fold_addr_expr.
10950         (fold_comparison): Likewise.
10951         (split_address_to_core_and_offset): Likewise.
10952         * coverage.c (tree_coverage_counter_addr): Mark the array decl
10953         TREE_ADDRESSABLE.
10954         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
10955         (gimplify_modify_expr_to_memcpy): Mark source and destination
10956         addressable.
10957         * omp-low.c (create_omp_child_function): Mark the object decl
10958         TREE_ADDRESSABLE.
10959         (lower_rec_input_clauses): Mark the var we take the address of
10960         TREE_ADDRESSABLE.
10961         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
10962
10963 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10964
10965         PR middle-end/39315
10966         * cfgexpand.c (expand_one_stack_var_at): Change alignment
10967         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
10968
10969 2009-03-27  Richard Guenther  <rguenther@suse.de>
10970
10971         PR tree-optimization/39120
10972         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
10973         constraints.
10974         (handle_lhs_call): Process return constraints.  Add escape
10975         constraints if necessary.
10976         (handle_const_call): Fill out return constraints.  Make nested
10977         case more precise.  Avoid consttmp if possible.
10978         (handle_pure_call): Fill out return constraints.  Avoid
10979         callused if possible.
10980         (find_func_aliases): Simplify call handling.
10981
10982 2009-03-27  Richard Guenther  <rguenther@suse.de>
10983
10984         PR tree-optimization/39120
10985         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
10986         as a representative.
10987         (solve_graph): Do propagate CALLUSED.
10988         (handle_pure_call): Use a scalar constraint from CALLUSED for
10989         the return value.
10990         (find_what_p_points_to): CALLUSED shall not appear in poins-to
10991         solutions.
10992
10993 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10994
10995         PR c/39323
10996         * c-common.c (handle_aligned_attribute): Properly check alignment
10997         overflow.  Use (1U << i) instead of (1 << i).
10998
10999         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
11000
11001         * expr.h (get_mem_align_offset): Updated.
11002
11003         * tree.h (tree_decl_common): Change align to "unsigned int" and
11004         move it before pointer_alias_set.
11005
11006 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11007             Jakub Jelinek  <jakub@redhat.com>
11008
11009         PR target/38034
11010         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
11011         gr_register_operand with gr_reg_or_0_operand.
11012         (cmpxchg_rel_di): Likewise.
11013         (sync_lock_test_and_set<mode>): Likewise.
11014
11015 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11016
11017         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
11018         (true_regnum): Likewise.
11019
11020         * rtlanal.c (subreg_info): Moved to ...
11021         * rtl.h (subreg_info): Here.  New.
11022         (subreg_get_info): New.
11023
11024         * rtlanal.c (subreg_get_info): Make it extern.
11025
11026 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11027
11028         PR target/39472
11029         * config/i386/i386.c (ix86_abi): New.
11030         (override_options): Handle -mabi=.
11031         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
11032         (ix86_call_abi_override): Likewise.
11033         (init_cumulative_args): Likewise.
11034         (function_arg_advance): Likewise.
11035         (function_arg_64): Likewise.
11036         (function_arg): Likewise.
11037         (ix86_pass_by_reference): Likewise.
11038         (ix86_function_value_regno_p): Likewise.
11039         (ix86_build_builtin_va_list_abi): Likewise.
11040         (setup_incoming_varargs_64): Likewise.
11041         (is_va_list_char_pointer): Likewise.
11042         (ix86_init_machine_status): Likewise.
11043         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
11044         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
11045         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
11046         (ix86_function_abi): Make it static and return enum calling_abi.
11047         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
11048         with ix86_abi.
11049         (ix86_fn_abi_va_list): Updated.
11050
11051         * config/i386/i386.h (ix86_abi): New.
11052         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
11053         (CONDITIONAL_REGISTER_USAGE): Likewise.
11054         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
11055         (machine_function): Likewise.
11056
11057         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
11058         with ix86_abi.
11059         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
11060         (STACK_BOUNDARY): Likewise.
11061         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
11062
11063         * config/i386/i386.opt (mabi=): New.
11064
11065         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
11066         return enum calling_abi.
11067         (ix86_function_type_abi): Likewise.
11068         (ix86_function_abi): Removed.
11069
11070         * doc/invoke.texi: Document -mabi= option for x86.
11071
11072 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11073
11074         * builtins.c (real_dconstp): Delete.
11075         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
11076
11077 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
11078             Jakub Jelinek  <jakub@redhat.com>
11079
11080         PR debug/37959
11081         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
11082         (gen_subprogram_die): When a function is explicit, generate the
11083         DW_AT_explicit attribute.
11084         * langhooks.h (struct lang_hooks_for_decls): Add
11085         function_decl_explicit_p langhook.
11086         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
11087         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
11088
11089 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
11090
11091         * builtins.c (fold_builtin_memory_op): Optimize memmove
11092         into memcpy if we can prove source and destination don't overlap.
11093
11094         * tree-inline.c: Include gt-tree-inline.h.
11095         (clone_fn_id_num): New variable.
11096         (clone_function_name): New function.
11097         (tree_function_versioning): Use it.
11098         * Makefile.in (GTFILES): Add tree-inline.c.
11099
11100 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
11101
11102         * BASE-VER: Change to 4.5.0.
11103
11104 2009-03-27  Xinliang David Li  <davidxl@google.com>
11105
11106         PR tree-optimization/39557
11107         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
11108
11109 2009-03-27  Xinliang David Li  <davidxl@google.com>
11110
11111         PR tree-optimization/39548
11112         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
11113         candidate check.
11114
11115 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11116
11117         * c-common.c (pointer_int_sum): Use %wd on return from
11118         tree_low_cst.
11119
11120 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11121
11122         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
11123         on return from tree_low_cst.
11124
11125 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11126
11127         PR c++/36799
11128         * ginclude/stdarg.h (va_copy): Define also for
11129         __GXX_EXPERIMENTAL_CXX0X__.
11130
11131 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11132
11133         PR c++/35652
11134         * builtins.h (c_strlen): Do not warn here.
11135         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
11136         * c-common.c (pointer_int_sum): Take an explicit location.
11137         Warn about offsets out of bounds.
11138         * c-common.h (pointer_int_sum): Adjust declaration.
11139
11140 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11141
11142         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
11143         markup glitch.
11144
11145 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
11146
11147         PR c++/39554
11148         * opts.c (warn_if_disallowed_function_p): Don't assume
11149         get_callee_fndecl must return non-NULL.
11150
11151 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
11152
11153         PR rtl-optimization/39522
11154         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
11155         when reg_reloaded_valid is set.
11156
11157 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11158
11159         * config/spu/divv2df3.c: New file.
11160         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
11161         (DPBIT_FUNCS): Filter out _div_df.
11162
11163 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
11164
11165         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
11166         a jump insn, count that jump in the distance to the loop start.
11167
11168 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
11169
11170         PR target/39523
11171         * config/sh/sh.c (calc_live_regs): Fix condition for global
11172         registers except PIC_OFFSET_TABLE_REGNUM.
11173
11174 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
11175
11176         PR/39518
11177         * doc/invoke.texi (-mconsole): New.
11178         (-mcygwin): New.
11179         (-mno-cygwin): New.
11180         (-mdll): New.
11181         (-mnop-fun-dllimport): New.
11182         (-mthread): New.
11183         (-mwin32): New.
11184         (-mwindows): New.
11185         (sub section "i386 and x86-64 Windows Options"): New.
11186
11187 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
11188
11189         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
11190         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
11191
11192 2009-03-25  Richard Guenther  <rguenther@suse.de>
11193
11194         PR middle-end/39497
11195         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
11196         of -Wno-error.
11197
11198 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
11199
11200         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
11201         neither of haifa/selective schedulers are working.
11202
11203 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11204
11205         * doc/invoke.texi (Debugging Options): Fix description of
11206         -fno-merge-debug-strings.
11207
11208 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
11209
11210         * config/cris/libgcc.ver: New version-script.
11211         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
11212
11213         * configure.ac <GAS features, nop mnemonic>: Add pattern
11214         crisv32-*-* for "nop".
11215         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
11216         * configure: Regenerate.
11217
11218 2009-03-24  Ira Rosen  <irar@il.ibm.com>
11219
11220         PR tree-optimization/39529
11221         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
11222         mark_sym_for_renaming for the tag copied to the new vector
11223         pointer.
11224
11225 2009-03-24  Arthur Loiret  <aloiret@debian.org>
11226
11227         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
11228         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
11229         EXTRA_SPEC_FUNCTIONS.
11230         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
11231         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
11232         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
11233         -march and -mtune options.
11234
11235 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
11236
11237         * config/m68k/t-rtems: Add m5329 multilib.
11238
11239 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
11240             Jakub Jelinek  <jakub@redhat.com>
11241
11242         PR debug/39524
11243         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
11244         nodes.
11245
11246 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
11247
11248         PR c/39495
11249         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
11250         instead of c_parser_expression_conv, if original_code isn't one of the
11251         4 allowed comparison codes, fail.
11252
11253 2009-03-23  Richard Guenther  <rguenther@suse.de>
11254
11255         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
11256         * tree.h (struct tree_type): Likewise.
11257         * reload.h (struct insn_chain): Likewise.
11258         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
11259         * function.h (struct function): Likewise.
11260         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
11261
11262 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
11263
11264         PR tree-optimization/39516
11265         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
11266
11267 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
11268
11269         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
11270         should be set true if BITS_PER_WORD of target is bigger than 32
11271
11272 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
11273
11274         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
11275         Translate -B-options to -rpath-link.  Correct existing
11276         rpath-link and conditionalize on !nostdlib.
11277
11278 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11279
11280         * doc/extend.texi (Function Attributes, Variable Attributes):
11281         Fix typos.
11282         * doc/invoke.texi (Debugging Options, Optimize Options)
11283         (i386 and x86-64 Options, MCore Options): Likewise.
11284
11285 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
11286
11287         PR debug/37890
11288         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
11289         it for block local namespace aliases.
11290         (gen_decl_die): Pass context_die to gen_namespace_die.
11291
11292 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
11293
11294         PR c/39495
11295         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
11296         minimum or maximum value.
11297
11298 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
11299
11300         * reginfo.c (globalize_reg): Recompute derived reg sets.
11301
11302 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
11303
11304         PR target/39063
11305         * libgcc2.c (mprotect): Do not use signed arguments for
11306         VirtualProtect, use DWORD arguments.  Also fix the 'may
11307         be used uninitialized' warning for the np variable.
11308
11309 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
11310
11311         PR target/39496
11312         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
11313         functions using regparm calling conventions when not optimizing.
11314         (ix86_function_sseregparm): Similarly for sseregparm calling
11315         conventions.
11316
11317 2009-03-19  Li Feng  <nemokingdom@gmail.com>
11318
11319         PR middle-end/39500
11320         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
11321         dependence if the first conflict is after niter iterations.
11322
11323 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
11324
11325         PR middle-end/38609
11326         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
11327         functions with dynamic stack-pointer adjustments.
11328
11329 2009-03-19  Ben Elliston  <bje@au.ibm.com>
11330
11331         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
11332         option; change to -msdata=data.
11333
11334 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11335
11336         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
11337         and -fopenmp.
11338
11339 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
11340
11341         PR target/35180
11342         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
11343
11344 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
11345
11346         * doc/invoke.texi (Code Gen Options): Expand discussion of
11347         -fno-common.
11348
11349 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
11350
11351         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
11352         * matrix-reorg.c (struct matrix_info): Likewise.
11353         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
11354         * rtl.h (struct mem_attrs): Likewise.
11355         * df.h (struct df): Likewise.
11356         * tree-data-ref.h (struct data_dependence_relation): Likewise.
11357         * ira-int.h (struct ira_allocno): Likewise.
11358         * df-scan.c (struct df_collection_rec): Likewise.
11359         * ira.c (struct equivalence): Likewise.
11360         * function.c (struct temp_slot): Likewise.
11361         * cfgloop.h (struct loop): Likewise.
11362
11363         PR debug/39485
11364         * function.c (use_register_for_decl): When not optimizing, disregard
11365         register keyword for variables with types containing methods.
11366
11367 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
11368
11369         PR middle-end/39447
11370         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
11371         (is_simple_operand): Call contains_component_ref_p before calling data
11372         reference analysis that would fail on COMPONENT_REFs.
11373
11374         * tree-vrp.c (search_for_addr_array): Fix formatting.
11375
11376 2009-03-18  Richard Guenther  <rguenther@suse.de>
11377
11378         * tree-vect-transform.c (vect_loop_versioning): Fold the
11379         generated comparisons.
11380         * tree-vectorizer.c (set_prologue_iterations): Likewise.
11381         (slpeel_tree_peel_loop_to_edge): Likewise.
11382
11383 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11384
11385         PR middle-end/37805
11386         * opts.c (print_specific_help): In addition to `undocumented',
11387         accept `separate' and `joined' flags if passed alone.  Describe
11388         output by the first matched one of those.
11389         (common_handle_option): Skip over empty strings.
11390         * gcc.c (display_help): Fix help string for `--help='.
11391         * doc/invoke.texi (Option Summary, Overall Options): With
11392         `--help=', classes and qualifiers can both be repeated, but
11393         only the latter can be negated.  One should not pass only
11394         negated qualifiers.  Fix markup and examples.
11395
11396         Revert
11397         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
11398         PR middle-end/37805
11399         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
11400         and -fhelp=separate.
11401
11402 2009-03-17  Jing Yu  <jingyu@google.com>
11403
11404         PR middle-end/39378
11405         * function.h (struct rtl_data): Move is_thunk from here...
11406         (struct function): ...to here.
11407         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
11408         * varasm.c (assemble_start_function): Change is_thunk from crtl to
11409         cfun.
11410         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
11411         cfun.
11412         (alpha_does_function_need_gp, alpha_start_function): Likewise.
11413         (alpha_output_function_end_prologue): Likewise.
11414         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
11415         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
11416         (rs6000_output_function_epilogue): Likewise.
11417         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
11418
11419 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
11420
11421         PR target/39482
11422         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
11423         from different units in a single alternative.
11424         (*truncdfsf_i387): Ditto.
11425         (*truncxfsf2_mixed): Ditto.
11426         (*truncxfdf2_mixed): Ditto.
11427
11428 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
11429
11430         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
11431         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
11432
11433         PR debug/39474
11434         * tree-ssa-live.c (remove_unused_locals): Don't remove local
11435         unused non-artificial variables when not optimizing.
11436
11437         PR debug/39471
11438         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
11439         DW_TAG_imported_module even if decl is IMPORTED_DECL with
11440         NAMESPACE_DECL in its DECL_INITIAL.
11441
11442         PR middle-end/39443
11443         * optabs.c (set_user_assembler_libfunc): New function.
11444         * expr.h (set_user_assembler_libfunc): New prototype.
11445         * c-common.c: Include libfuncs.h.
11446         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
11447         for memcmp, memset, memcpy, memmove and abort.
11448         * Makefile.in (c-common.o): Depend on libfuncs.h.
11449
11450         PR debug/39412
11451         * dwarf2out.c (gen_inlined_enumeration_type_die,
11452         gen_inlined_structure_type_die, gen_inlined_union_type_die,
11453         gen_tagged_type_instantiation_die): Removed.
11454         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
11455         do nothing.
11456
11457 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
11458
11459         PR testsuite/38526
11460         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
11461         its use.
11462         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
11463         (check-parallel-%): Ditto.
11464         (check-consistency): Ditto.
11465
11466 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
11467
11468         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
11469         local variable rhs by NULL_TREE.
11470
11471 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11472
11473         PR target/39477
11474         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
11475
11476 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11477
11478         PR target/39476
11479         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
11480
11481 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11482
11483         PR target/39473
11484         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
11485         for ms->sysv ABI calls only in 64bit mode.
11486
11487         * config/i386/i386.md (untyped_call): Support 32bit.
11488
11489 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
11490
11491         * doc/extend.texi: Replace x86_65 with x86_64.
11492
11493 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
11494
11495         PR tree-optimization/39455
11496         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
11497         mismatches for POINTER_TYPE_P (type).
11498         (number_of_iterations_le): Likewise.
11499
11500 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11501
11502         * config/picochip/picochip.c: Removed profiling support.
11503         * config/picochip/picochip.md: Removed profiling instruction.
11504         * config/picochip/picochip.h: Removed profiling builtin.
11505
11506 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
11507
11508         * doc/install.texi (--with-host-libstdcxx): Document.
11509
11510 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
11511
11512         PR target/34299
11513         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
11514         generate a warning if the function name does not begin with
11515         "__vector" and the function has either the 'signal' or 'interrupt'
11516         attribute, from here to ...
11517         (avr_declare_function_name): ...here. New function.
11518         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
11519         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
11520
11521 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
11522
11523         PR bootstrap/39454
11524         * cse.c (fold_rtx): Don't modify original const_arg1 when
11525         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
11526         separate variable instead.
11527         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
11528         from out of range shift counts.
11529         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
11530
11531 2009-03-13  Catherine Moore  <clm@codesourcery.com>
11532
11533         * config/i386/x-mingw32 (host-mingw32.o): Replace
11534         diagnostic.h with $(DIAGNOSTIC_H).
11535
11536 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
11537
11538         PR target/39431
11539         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
11540         predicate.
11541         * config/i386/sync.md (sync_compare_and_swap<mode>,
11542         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
11543         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
11544         into a register.
11545         (sync_double_compare_and_swapdi_pic,
11546         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
11547         cmpxchg8b_pic_memory_operand instead of just memory_operand.
11548
11549 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11550
11551         PR target/39445
11552         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
11553
11554 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11555
11556         PR target/39327
11557         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11558         (avx_addsubv4df3): Likewise.
11559         (*avx_addsubv4sf3): Likewise.
11560         (sse3_addsubv4sf3): Likewise.
11561
11562 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11563
11564         PR target/38824
11565         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
11566
11567 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
11568
11569         PR debug/39432
11570         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
11571         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11572         registers for allocnos created from user-defined variables.
11573
11574 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11575
11576         PR target/39181
11577         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
11578         of non-integer mode as well.
11579
11580 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
11581
11582         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
11583         for functions for which the parameter types are unknown.
11584
11585 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
11586
11587         PR target/39137
11588         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
11589         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
11590         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
11591         * config/i386/i386.c (ix86_local_alignment): For
11592         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
11593         long long variables on the stack to avoid dynamic realignment.
11594         Allow the first argument to be a decl rather than type.
11595         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
11596
11597 2009-03-11  Nick Clifton  <nickc@redhat.com>
11598
11599         PR target/5362
11600         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
11601         options.
11602         Add description to mno-lsim option.
11603         * config/mcore/mcore.h: Remove comment about deprecated m4align
11604         option.
11605         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
11606         * doc/invoke.texi: Add description of mno-lsim and
11607         mstack-increment options.
11608
11609         * config/fr30/fr30.opt: Document the -mno-lsim option.
11610         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
11611         and -mno-lsim options.
11612
11613 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11614
11615         * fold-const.c (fold_comparison): Only call fold_inf_compare
11616         if the mode supports infinities.
11617
11618 2009-03-11  Jason Merrill  <jason@redhat.com>
11619
11620         PR debug/39086
11621         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
11622         end already did.  Notice GIMPLE_CALL modifications of the result.
11623         Don't copy debug information from an ignored decl or a decl from
11624         another function.
11625
11626 2009-03-10  Richard Guenther  <rguenther@suse.de>
11627             Nathan Froyd  <froydnj@codesourcery.com>
11628
11629         PR middle-end/37850
11630         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
11631         (__divMODE3): Likewise.
11632
11633 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
11634
11635         PR tree-optimization/39394
11636         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
11637         DECL_SIZE_UNIT of variable length FIELD_DECLs.
11638
11639 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11640
11641         * recog.c (verfiy_changes): Disallow renaming of hard regs in
11642         inline asms for register asm ("") declarations.
11643
11644 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11645
11646         * fold-const.c (fold_unary): Fix comment.
11647
11648 2009-03-07  Jan Hubicka  <jh@suse.cz>
11649
11650         PR target/39361
11651         * tree-inline.c (setup_one_parameter): Do replacement of const
11652         argument by constant in SSA form.
11653
11654 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11655
11656         PR middle-end/38028
11657         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
11658         determine alignment passed to assign_stack_local.
11659         (assign_parms_unsplit_complex): Likewise.
11660         * except.c (sjlj_build_landing_pads): Likewise.
11661
11662 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11663
11664         PR middle-end/39360
11665         * tree-flow.h (add_referenced_var): Return bool instead of void.
11666         * tree-dfa.c (add_referenced_var): Return result of
11667         referenced_var_check_and_insert call.
11668         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
11669         of referenced_var_check_and_insert.
11670
11671         PR debug/39372
11672         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
11673         (gen_variable_die): Emit DW_AT_location on abstract static variable's
11674         DIE, don't emit it if abstract origin already has it.
11675         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
11676         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
11677
11678 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11679
11680         * genpreds.c (needs_variable): Fix parentheses at variable name
11681         detection.
11682         (write_tm_constrs_h): Indent generated code.
11683
11684 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11685
11686         * doc/extend.texi (Function Attributes): Add documentation
11687         for isr attributes.
11688
11689 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11690
11691         PR debug/39387
11692         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
11693         take locus from its DECL_SOURCE_LOCATION instead of input_location.
11694
11695 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11696
11697         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
11698         the loop as bad.
11699
11700 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
11701
11702         PR debug/39379
11703         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
11704         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
11705
11706 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
11707
11708         * config/i386/i386.md (R8_REG, R9_REG): New constants.
11709         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
11710         constants instead of magic numbers.
11711         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11712         (QI_REG_P): Ditto.
11713         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
11714         (x86_64_ms_abi_int_parameter_registers): Ditto.
11715         (x86_64_int_return_registers): Ditto.
11716         (ix86_maybe_switch_abi): Ditto.
11717         (ix86_expand_call): Ditto for clobbered_registers array.
11718         (ix86_hard_regno_mode_ok): Ditto.
11719         (x86_extended_QIreg_mentioned_p): Ditto.
11720
11721 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
11722
11723         PR tree-optimization/39349
11724         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
11725
11726         * combine.c (gen_lowpart_for_combine): Use omode when generating
11727         clobber.
11728
11729 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
11730
11731         PR rtl-optimization/39235
11732         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
11733
11734 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11735
11736         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
11737
11738 2009-03-04  Richard Guenther  <rguenther@suse.de>
11739
11740         PR tree-optimization/39362
11741         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
11742         that occur in abnormal PHIs should be varying.
11743
11744 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11745
11746         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
11747         Extend comments.
11748         (simple_iv):  Take loop as an argument instead of statement.
11749         * tree-scalar-evolution.h (simple_iv): Declaration changed.
11750         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
11751         to simple_iv.
11752         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
11753         Ditto.
11754         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
11755         * matrix-reorg.c (analyze_transpose): Ditto.
11756         * tree-data-ref.c (dr_analyze_innermost): Ditto.
11757         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
11758         * tree-predcom.c (ref_at_iteration): Ditto.
11759         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
11760
11761 2009-03-04  Richard Guenther  <rguenther@suse.de>
11762
11763         PR tree-optimization/39358
11764         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
11765         escaped_id and callused_id.
11766         (solve_graph): Likewise.
11767
11768 2009-03-04  Richard Guenther  <rguenther@suse.de>
11769
11770         PR tree-optimization/39339
11771         * tree-sra.c (try_instantiate_multiple_fields): Make it
11772         no longer ICE on the above.
11773
11774 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
11775
11776         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
11777         that fits within Pmode.
11778
11779 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11780
11781         PR middle-end/10109
11782         * tm.texi (LIBCALL_VALUE): Update description.
11783
11784 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11785
11786         PR middle-end/34443
11787         * doc/extend.texi (section): Update description.
11788
11789 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
11790
11791         PR middle-end/39345
11792         * tree-inline.c (remapped_type): New.
11793         (can_be_nonlocal): Call remapped_type instead of remap_type.
11794
11795 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11796
11797         PR fortran/39354
11798         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
11799         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
11800
11801 2009-03-03  Richard Guenther  <rguenther@suse.de>
11802
11803         PR middle-end/39272
11804         * tree.c (tree_nonartificial_location): New function.
11805         * tree.h (tree_nonartificial_location): Declare.
11806         * builtins.c (expand_builtin_memory_chk): Provide location
11807         of the call location for artificial function pieces.
11808         (maybe_emit_chk_warning): Likewise.
11809         (maybe_emit_sprintf_chk_warning): Likewise.
11810         (maybe_emit_free_warning): Likewise.
11811         * expr.c (expand_expr_real_1): Likewise.
11812
11813 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11814
11815         PR tree-optimization/39343
11816         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
11817         COMPONENT_REF t has ARRAY_TYPE.
11818
11819 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
11820
11821         PR middle-end/39335
11822         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
11823         when the type precision of the induction variable should be
11824         larger than the type precision of nit.
11825         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
11826         * graphite.c (graphite_loop_normal_form): Same.
11827         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
11828
11829 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11830
11831         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
11832         (*call_1_rex64_ms_sysv): Use named constants instead of magic
11833         numbers to describe clobbered registers.
11834         (*call_value_0_rex64_ms_sysv): Ditto.
11835         * config/i386/mmx.md (mmx_emms): Ditto.
11836         (mmx_femms): Ditto.
11837
11838 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
11839
11840         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
11841         of ABI_64.
11842
11843 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11844
11845         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
11846         (spu_section_type_flags): New function.
11847
11848 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11849
11850         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
11851         reg_class_contents of FLOAT_REGS into a temporary.
11852
11853 2009-03-02  Richard Guenther  <rguenther@suse.de>
11854             Ira Rosen  <irar@il.ibm.com>
11855
11856         PR tree-optimization/39318
11857         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
11858         information to the vectorized statement.
11859
11860 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
11861
11862         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
11863         variable.  Use defined names instead of magic constants for REX SSE
11864         registers.
11865
11866 2009-03-01  Richard Guenther  <rguenther@suse.de>
11867
11868         PR tree-optimization/39331
11869         * omp-low.c (lower_send_shared_vars): Do not receive new
11870         values for the reference of DECL_BY_REFERENCE parms or results.
11871
11872 2009-03-01  Jan Hubicka  <jh@suse.cz>
11873
11874         PR debug/39267
11875         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
11876         BLOCK_NONLOCALIZED_VAR): New macros.
11877         (tree_block): Add nonlocalized_vars.
11878         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
11879         gen_decl_die): Add origin argument.  Allow generation of die with
11880         origin at hand only.
11881         (gen_member_die, gen_type_die_with_usage, force_decl_die,
11882         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
11883         of gen_*.
11884         (gen_block_die): Fix checking for unused blocks.
11885         (process_scope_var): Break out from .... ; work with origins only.
11886         (decls_for_scope) ... here; process nonlocalized list.
11887         (dwarf2out_ignore_block): Look for nonlocalized vars.
11888         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
11889         vars.
11890         (dump_scope_block): Dump them.
11891         * tree-inline.c (remap_decls): Handle nonlocalized vars.
11892         (remap_block): Likewise.
11893         (can_be_nonlocal): New predicate.
11894         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
11895
11896 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11897
11898         * configure: Regenerate.
11899
11900 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11901
11902         * optc-gen.awk: No need to duplicate option flags twice.
11903         Reuse help texts for duplicate options which do not have any.
11904
11905         * gcc.c (display_help): Document --version.
11906
11907         * gcc.c (main): If print_help_list and verbose_flag, ensure
11908         driver output comes before subprocess output.
11909
11910         * optc-gen.awk: Assign all remaining fields to help string,
11911         space-separated, for multi-line help in *.opt.
11912
11913         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
11914         -Wno-pedantic-ms-format is for MinGW targets only.
11915
11916         * doc/options.texi (Option file format): Fix bad indentation,
11917         restoring dropped sentence.
11918
11919 2009-02-28  Jan Hubicka  <jh@suse.cz>
11920
11921         * tree-inline.c (tree_function_versioning): Output debug info.
11922
11923 2009-02-28  Jan Hubicka  <jh@suse.cz>
11924
11925         PR debug/39267
11926         * tree-inline.c (setup_one_parameter): Do not copy propagate
11927         arguments when not optimizing.
11928
11929 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
11930
11931         PR target/39327
11932         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11933         (avx_addsubv4df3): Likewise.
11934         (*avx_addsubv4sf3): Likewise.
11935         (sse3_addsubv4sf3): Likewise.
11936         (*avx_addsubv2df3): Likewise.
11937         (sse3_addsubv2df3): Likewise.
11938         (avx_unpckhps256): Correct item selectors.
11939         (avx_unpcklps256): Likewise.
11940         (avx_unpckhpd256): Likewise.
11941         (avx_unpcklpd256): Likewise.
11942
11943 2009-02-28  Jan Hubicka  <jh@suse.cz>
11944
11945         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
11946         static vars.
11947         (copy_arguments_for_versioning): If var is declared don't declare it.
11948         (tree_function_versioning): First setup substitutions and then copy
11949         args.
11950
11951 2009-02-27  Jan Hubicka  <jh@suse.cz>
11952
11953         PR debug/39267
11954         * cgraph.h (varpool_output_debug_info): Remove.
11955         * cgraphunit.c (varpool_output_debug_info): Remove.
11956         * dwarf2out.c (deferred_locations_struct): New struct
11957         (deferred_locations): New type.
11958         (deferred_locations_list): New static var.
11959         (deffer_location): New function.
11960         (gen_variable_die): Use it.
11961         (decls_for_scope): Output info on local static vars.
11962         (dwarf2out_finish): Process deferred locations.
11963         * varpool.c (varpool_output_debug_info): Remove.
11964
11965 2009-02-27  Jan Hubicka  <jh@suse.cz>
11966
11967         PR debug/39267
11968         * tree.h (TREE_PROTECTED): Fix comment.
11969         (BLOCK_HANDLER_BLOCK): Remove.
11970         (struct tree_block): Remove handler_block add body_block.
11971         (inlined_function_outer_scope_p): New.
11972         (is_body_block): Remove.
11973         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
11974         * dwarf2out.c (is_inlined_entry_point): Remove.
11975         (add_high_low_attributes): Use inlined_function_outer_scope_p.
11976         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
11977         code.
11978         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
11979         * gimplify.c (gimplify_expr): Gimplify body blocks.
11980         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
11981         block with multiple subblocks.
11982         (dump_scope_block): Prettier output; dump more flags and info.
11983         (dump_scope_blocks): New.
11984         (remove_unused_locals): Use dump_scope_blocks.
11985         * tree-flow.h (dump_scope_blocks): Declare.
11986         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
11987         * stmt.c (is_body_block): Remove.
11988         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
11989         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
11990
11991 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
11992
11993         PR middle-end/39308
11994         * graphite.c (graphite_loop_normal_form): Do not call
11995         number_of_iterations_exit from a gcc_assert.
11996
11997 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11998
11999         * config/s390/s390.c (s390_swap_cmp): Look for conditional
12000         jumps if COND is NULL.
12001         (find_cond_jump): New function.
12002         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
12003         * config/s390/s390.md: Remove z10_cobra attribute value.
12004
12005 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
12006
12007         * config/alpha/alpha.h (alpha_expand_mov): Return false if
12008         force_const_mem returns NULL_RTX.
12009
12010 2009-02-26  Jan Hubicka  <jh@suse.cz>
12011
12012         PR debug/39267
12013         * cgraph.h (varpool_output_debug_info): Remove.
12014         * cgraphunit.c (varpool_output_debug_info): Remove.
12015         * dwarf2out.c (deferred_locations_struct): New struct
12016         (deferred_locations): New type.
12017         (deferred_locations_list): New static var.
12018         (deffer_location): New function.
12019         (gen_variable_die): Use it.
12020         (decls_for_scope): Output info on local static vars.
12021         (dwarf2out_finish): Process deferred locations.
12022         * varpool.c (varpool_output_debug_info): Remove.
12023
12024 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
12025
12026         PR rtl-optimization/39241
12027         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
12028         to subreg_offset_representable_p.
12029
12030 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
12031
12032         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
12033         execute function prototype.  Get f and nregs from max_reg_num
12034         and get_insns.  Remove the first backward pass as it's dead,
12035         guard the forward pass by flag_expensive_optimizations.
12036         (rest_of_handle_regmove): Delete.
12037         (pass_regmove): Replace it with regmove_optimize.
12038
12039 2009-02-25  Martin Jambor  <mjambor@suse.cz>
12040
12041         PR tree-optimization/39259
12042         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
12043         calls_alloca function flags.
12044         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
12045         calls are detected.
12046
12047 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
12048
12049         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
12050         flags_set_1_rtx, flags_set_1_set): Delete.
12051         (regmove_optimize): Do not call mark_flags_life_zones.
12052
12053 2009-02-24  Julian Brown  <julian@codesourcery.com>
12054
12055         PR target/35965
12056         * config/arm/arm.c (require_pic_register): Only set
12057         cfun->machine->pic_reg once per function.
12058
12059 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
12060
12061         * doc/invoke.texi (Link Options): Document an easier way to pass
12062         options that take arguments to the GNU linker using -Xlinker and -Wl.
12063
12064 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
12065
12066         PR target/33785
12067         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
12068
12069 2009-02-24  Richard Guenther  <rguenther@suse.de>
12070
12071         PR debug/39285
12072         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
12073
12074 2009-02-24  Richard Guenther  <rguenther@suse.de>
12075             Zdenek Dvorak  <ook@ucw.cz>
12076
12077         PR tree-optimization/39233
12078         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
12079         from converting them to a generic type.
12080
12081 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
12082
12083         PR tree-optimization/39260
12084         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
12085         contains a condition with a real type.
12086         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
12087
12088 2009-02-23  Jason Merrill  <jason@redhat.com>
12089
12090         PR c++/38880
12091         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
12092         narrowing_initializer_constant_valid_p.
12093         (narrowing_initializer_constant_valid_p): Don't return
12094         null_pointer_node for adding a pointer to itself.
12095
12096 2009-02-23  Jan Hubicka  <jh@suse.cz>
12097
12098         PR c/12245
12099         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
12100         resizing.
12101
12102 2009-02-23  Jan Hubicka  <jh@suse.cz>
12103
12104         PR tree-optimization/37709
12105         * tree.c (block_ultimate_origin): Move here from dwarf2out.
12106         * tree.h (block_ultimate_origin): Declare.
12107         * dwarf2out.c (block_ultimate_origin): Move to tree.c
12108         * tree-ssa-live.c (remove_unused_scope_block_p):
12109         Eliminate blocks containig no instructions nor live variables nor
12110         nested blocks.
12111         (dump_scope_block): New function.
12112         (remove_unused_locals): Enable removal of dead blocks by default;
12113         enable dumping at TDF_DETAILS.
12114
12115 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12116
12117         * config/i386/i386.c (classify_argument): Don't allow COImode
12118         and OImode.
12119         (function_arg_advance_32): Don't allow OImode.
12120         (function_arg_32): Likewise.
12121         (function_value_32): Likewise.
12122         (return_in_memory_32): Likewise.
12123         (function_arg_64): Remove OImode comment.
12124
12125 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12126
12127         PR target/39261
12128         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
12129         ix86_expand_vector_set for V4DImode in 64bit mode only.
12130         (ix86_expand_vector_init_one_var): Likewise.
12131
12132 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
12133
12134         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
12135
12136 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
12137
12138         PR bootstrap/39257
12139         * loop-iv.c: Revert last change.
12140         * emit-rtl.c: Likewise.
12141
12142 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12143
12144         PR target/39256
12145         * config/i386/i386.c (type_natural_mode): Remove an extra
12146         space in the warning message.
12147         (function_value_32): Handle 32-byte vector modes.
12148         (return_in_memory_32): Likewise.
12149
12150 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
12151
12152         * loop-iv.c (truncate_value): New function.
12153         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
12154         of lowpart_subreg.
12155         (lowpart_subreg): Move to...
12156         * emit-rtl.c: ...here.
12157
12158 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
12159
12160         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
12161         accidental and undocumented change at revision 140860.
12162
12163 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
12164
12165         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
12166         take gimple_seq * arguments.
12167         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
12168         types_compatible_p langhook.
12169
12170 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
12171             Joseph Myers  <joseph@codesourcery.com>
12172
12173         * config/arm/arm.c (arm_builtin_va_list): New function.
12174         (arm_expand_builtin_va_start): Likewise.
12175         (arm_gimplify_va_arg_expr): Likewise.
12176         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
12177         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
12178         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
12179         (va_list_type): New variable.
12180         (arm_mangle_type): Mangle va_list_type appropriately.
12181
12182 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
12183
12184         PR middle-end/39157
12185         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
12186         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
12187         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
12188         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
12189         parameter to 1000 for -O1 by default.
12190         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
12191         parameter.
12192         * loop-invariant.c: Include params.h.
12193         (move_loop_invariants): Don't call move_single_loop_invariants on
12194         very large loops.
12195
12196 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
12197
12198         * calls.c (emit_library_call_value_1): Use slot_offset instead of
12199         offset when calculating bounds for indexing stack_usage_map.  Fixes
12200         a buffer overflow with certain target setups.
12201
12202 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
12203
12204         PR target/39240
12205         * calls.c (expand_call): Clear try_tail_call if caller and callee
12206         disagree in promotion of function return value.
12207
12208 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
12209
12210         PR target/39175
12211         * c-common.c (c_determine_visibility): If visibility changed and
12212         DECL_RTL has been already set, call make_decl_rtl to update symbol
12213         flags.
12214
12215 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
12216
12217         PR c++/39188
12218         * varasm.c (assemble_variable): Don't check DECL_NAME when
12219         globalizing a variable.
12220
12221 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
12222
12223         PR c/38483
12224         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
12225         expression before any __builtin_trap call.
12226         * c-typeck.c (build_function_call): Convert and check function
12227         arguments before generating a call to a trap.  Evaluate the
12228         function arguments before the trap.
12229
12230 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
12231
12232         PR target/39228
12233         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
12234         (UNSPEC_FXAM_MEM): New unspec.
12235         (fxam<mode>2_i387_with_temp): New insn and split pattern.
12236         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
12237         memory using fxam<mode>2_i387_with_temp to remove excess precision.
12238
12239 2009-02-19  Richard Guenther  <rguenther@suse.de>
12240
12241         PR tree-optimization/39207
12242         PR tree-optimization/39074
12243         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
12244         storedanything_tree): New.
12245         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
12246         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
12247         (build_succ_graph): Add edges from STOREDANYTHING to all
12248         non-direct nodes.
12249         (init_base_vars): Initialize STOREDANYTHING.
12250         (compute_points_to_sets): Free substitution info after
12251         building the succ graph.
12252         (ipa_pta_execute): Likewise.
12253
12254         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
12255         field.
12256         (do_ds_constraint): Do not add to special var or non-pointer
12257         field solutions.
12258         (type_could_have_pointers): Split out from ...
12259         (could_have_pointers): ... here.  For arrays use the element type.
12260         (create_variable_info_for): Initialize may_have_pointers.
12261         (new_var_info): Likewise.
12262         (handle_lhs_call): Make the HEAP variable unknown-sized.
12263         (intra_create_variable_infos): Use a type with pointers for
12264         PARM_NOALIAS, make it unknown-sized.
12265
12266 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
12267
12268         PR target/39224
12269         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
12270
12271 2009-02-18  Jason Merrill  <jason@redhat.com>
12272
12273         PR target/39179
12274         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
12275         value if DECL_EXTERNAL.
12276         * tree-sra.c (sra_walk_gimple_assign): Likewise.
12277         * target.h (gcc_target::binds_local_p): Clarify "module".
12278         * tree.h (TREE_PUBLIC): Clarify "module".
12279
12280 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
12281
12282         PR target/38891
12283         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
12284         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
12285
12286 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
12287
12288         PR target/39082
12289         * c.opt (Wabi): Support C and ObjC.
12290         (Wpsabi): New.
12291
12292         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
12293
12294         * config/i386/i386.c (classify_argument): Warn once about the ABI
12295         change when passing union with long double.
12296
12297         * doc/invoke.texi: Update -Wabi for warning psABI changes.
12298
12299 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
12300
12301         PR c/35447
12302         * c-parser.c (c_parser_compound_statement): Always enter and leave
12303         a scope.
12304
12305 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12306
12307         PR target/34587
12308         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
12309
12310 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
12311
12312         PR tree-optimization/36922
12313         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
12314         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
12315         Likewise.
12316
12317 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12318
12319         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
12320         to 0 for EABI64.
12321
12322 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12323
12324         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
12325
12326 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12327
12328         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
12329         tree sharing.
12330
12331 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
12332             Richard Sandiford  <rdsandiford@googlemail.com>
12333
12334         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
12335         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
12336         (loongson_biadd): ...this.
12337
12338 2009-02-17  Richard Guenther  <rguenther@suse.de>
12339
12340         PR tree-optimization/39202
12341         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
12342         a var make sure to follow existing collapses.
12343
12344 2009-02-17  Richard Guenther  <rguenther@suse.de>
12345
12346         PR middle-end/39214
12347         * langhooks.c (lhd_print_error_function): Check for NULL block.
12348
12349 2009-02-17  Richard Guenther  <rguenther@suse.de>
12350
12351         PR tree-optimization/39204
12352         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
12353         of the PHI arg.
12354
12355 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
12356
12357         * config/soft-fp/double.h: Update from glibc CVS.
12358
12359 2009-02-17  Richard Guenther  <rguenther@suse.de>
12360
12361         PR tree-optimization/39207
12362         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
12363         strict-aliasing warnings for pointers pointing to NULL.
12364
12365 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
12366
12367         PR c/35446
12368         * c-parser.c (c_parser_braced_init): Call pop_init_level when
12369         skipping until next close brace.
12370
12371 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
12372
12373         PR target/37049
12374         * config/i386/i386.c (ix86_expand_push): Set memory alignment
12375         to function argument boundary.
12376
12377 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
12378
12379         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
12380         in the lea_add. Reload eventually constraints it properly.
12381         * config/picochip/constraints.md: Remove the target constraint
12382         "b", since it is not needed anymore.
12383
12384 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
12385
12386         * gthr-dce.h: Uglify function parameter and local variable names.
12387         * gthr-gnat.h: Likewise.
12388         * gthr-mipssde.h: Likewise.
12389         * gthr-nks.h: Likewise.
12390         * gthr-posix95.h: Likewise.
12391         * gthr-posix.h: Likewise.
12392         * gthr-rtems.h: Likewise.
12393         * gthr-single.h: Likewise.
12394         * gthr-solaris.h: Likewise.
12395         * gthr-tpf.h: Likewise.
12396         * gthr-vxworks.h: Likewise.
12397         * gthr-win32.h: Likewise.
12398
12399 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
12400
12401         PR target/39196
12402         * config/i386/i386.md: Restrict the new peephole2 to move
12403         between MMX/SSE registers.
12404
12405 2009-02-15  Richard Guenther  <rguenther@suse.de>
12406
12407         Revert
12408         2009-02-13  Richard Guenther  <rguenther@suse.de>
12409
12410         * configure.ac: Enable LFS.
12411         * configure: Re-generate.
12412         * config.in: Likewise.
12413
12414 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12415
12416         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
12417         spu_srqwbyte, spu_srqwbytebc): Define.
12418         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
12419         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
12420         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
12421         "shrqby_<mode>"): New insn-and-split patterns.
12422         * config/spu/spu.c (expand_builtin_args): Determine and return
12423         number of operands using spu_builtin_description data.
12424         (spu_expand_builtin_1): Use it.
12425
12426 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
12427
12428         PR target/38056
12429         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
12430         TARGET_CONST_GP.
12431
12432 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12433
12434         PR target/39149
12435         * config/i386/i386.c (override_options): Correct warning
12436         messages for -malign-loops, -malign-jumps and -malign-functions.
12437
12438 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12439
12440         PR target/39152
12441         * config/i386/i386.md: Restrict the new peephole2 to move
12442         between the general purpose registers.
12443
12444 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12445
12446         PR target/39162
12447         * config/i386/i386.c (type_natural_mode): Add a new argument.
12448         Return the original mode and warn ABI change if vector size is 32byte.
12449         (function_arg_advance): Updated.
12450         (function_arg): Likewise.
12451         (ix86_function_value): Likewise.
12452         (ix86_return_in_memory): Likewise.
12453         (ix86_sol10_return_in_memory): Likewise.
12454         (ix86_gimplify_va_arg): Likewise.
12455         (function_arg_32): Don't warn ABX ABI change here.
12456         (function_arg_64): Likewise.
12457
12458 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
12459
12460         * loop-iv.c (implies_p): In the final case, test that operands 0
12461         of the two comparisons match.
12462
12463         * config/bfin/bfin.c (find_prev_insn_start): New function.
12464         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
12465         (find_next_insn_start): Move.
12466
12467 2009-02-13  Richard Guenther  <rguenther@suse.de>
12468
12469         * configure.ac: Enable LFS.
12470         * configure: Re-generate.
12471         * config.in: Likewise.
12472
12473 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
12474
12475         PR c/35444
12476         * c-parser.c (c_parser_parms_list_declarator): Discard pending
12477         sizes on syntax error after some arguments have been parsed.
12478
12479 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12480
12481         * doc/invoke.texi (-fira): Remove.
12482
12483 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12484
12485         * caller-save.c: Replace regclass.c with reginfo.c in comments.
12486         * recog.c: Likewise.
12487         * rtl.h: Likewise.
12488
12489 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
12490
12491         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
12492         (umul_ppmm): Likewise.
12493         (count_leading_zeros): Likewise.
12494         (count_trailing_zeros): Likewise.
12495         (UMUL_TIME): Likewise.
12496
12497 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12498
12499         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
12500         soft-fp/t-softfp to tmake_file.
12501
12502         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
12503         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
12504         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
12505         IA64_BUILTIN_INFQ]: New.
12506         (ia64_init_builtins): Initialize __builtin_infq,
12507         __builtin_fabsq and __builtin_copysignq if not HPUX.
12508         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
12509         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
12510
12511         * config/ia64/lib1funcs.asm (__divtf3): Define only if
12512         SHARED is defined.
12513         (__fixtfti): Likewise.
12514         (__fixunstfti): Likewise.
12515         (__floattitf): Likewise.
12516
12517         * config/ia64/libgcc-glibc.ver: New.
12518         * config/ia64/t-fprules-softfp: Likewise.
12519         * config/ia64/sfp-machine.h: Likewise.
12520
12521         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
12522         (LIBGCC2_TF_CEXT): Likewise.
12523         (TF_SIZE): Likewise.
12524         (TARGET_INIT_LIBFUNCS): Likewise.
12525
12526         * config/ia64/t-glibc (SHLINB_MAPFILES):
12527         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
12528
12529 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12530
12531         * config/i386/i386.c (construct_container): Rewrite processing
12532         BLKmode with X86_64_SSE_CLASS.
12533
12534 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
12535
12536         PR target/39152
12537         * config/i386/i386.md: Replace simplify_replace_rtx with
12538         replace_rtx in the new peephole2.
12539
12540 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
12541
12542         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
12543         loop unrolling do not happen at -O2.
12544
12545 2009-02-12  Michael Matz  <matz@suse.de>
12546
12547         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
12548
12549 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12550
12551         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
12552         for -g3.
12553
12554 2009-02-12  Ben Elliston  <bje@au.ibm.com>
12555
12556         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
12557         patterns when updating the back chain.  Missed in the 2009-02-10
12558         change.
12559
12560 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
12561
12562         * doc/extend.texi (Decimal Floating Types): Update identifier of
12563         draft TR and list of missing support.
12564
12565 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
12566
12567         PR middle-end/39154
12568         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
12569         bit to variable length decl's flags, add it also to its
12570         pointer replacement variable.
12571
12572 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
12573             Jakub Jelinek  <jakub@redhat.com>
12574
12575         PR target/39118
12576         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
12577         (memory_blockage): New expander.
12578         (*memory_blockage): New insn pattern.
12579         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
12580         instead of general blockage at the end of function prologue when
12581         frame pointer is used to access red zone area.  Do not emit blockage
12582         when profiling, it is emitted in generic code.
12583         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
12584         function epilogue when frame pointer is used to access red zone area.
12585
12586 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
12587
12588         PR target/38824
12589         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
12590         by arithmetic with memory operands.
12591         * config/i386/predicates.md (commutative_operator): New.
12592
12593 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
12594
12595         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
12596         bulleted lists.
12597
12598 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
12599
12600         * alias.h (record_alias_subset): Declare.
12601         * alias.c (record_alias_subset): Make global.
12602
12603 2009-02-10  Nick Clifton  <nickc@redhat.com>
12604
12605         * tree-parloops.c: Change license to GPLv3.
12606         * ipa-struct-reorg.c: Change license to GPLv3.
12607         * ipa-struct-reorg.h: Change license to GPLv3.
12608
12609 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
12610
12611         PR c/39084
12612         * c-decl.c (start_struct): Return NULL on error.
12613
12614 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
12615
12616         PR middle-end/39124
12617         * cfgloopmanip.c (remove_path): Call remove_bbs after
12618         cancel_loop_tree, not before it.
12619
12620         PR target/39139
12621         * function.h (struct function): Add has_local_explicit_reg_vars bit.
12622         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
12623         VAR_DECLs were seen.
12624         * tree-ssa-live.c (remove_unused_locals): Recompute
12625         cfun->has_local_explicit_reg_vars.
12626         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
12627         copies or clearings if cfun->has_local_explicit_reg_vars.
12628
12629 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
12630
12631         PR target/39118
12632         * config/i386/i386.c (expand_prologue): Emit blockage at the end
12633         of function prologue when frame pointer is used to access
12634         red zone area.
12635
12636 2009-02-10  Richard Guenther  <rguenther@suse.de>
12637
12638         PR middle-end/39127
12639         * gimplify.c (gimple_regimplify_operands): Always look if
12640         we need to create a temporary.
12641
12642 2009-02-10  Richard Guenther  <rguenther@suse.de>
12643
12644         PR tree-optimization/39132
12645         * tree-loop-distribution.c (todo): New global var.
12646         (generate_memset_zero): Trigger TODO_rebuild_alias.
12647         (tree_loop_distribution): Return todo.
12648
12649 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
12650
12651         PR target/39119
12652         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
12653         (x86_64_reg_class_name): Removed.
12654         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
12655         first one isn't X86_64_SSE_CLASS or any other ones aren't
12656         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
12657         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
12658         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
12659         and 3 X86_64_SSEUP_CLASS.
12660         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
12661         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
12662
12663 2009-02-10  Ben Elliston  <bje@au.ibm.com>
12664
12665         * config/rs6000/rs6000.md (allocate_stack): Always use an update
12666         form instruction to update the stack back chain word, even if the
12667         user has disabled the generation of update instructions.
12668         (movdi_<mode>_update_stack): New.
12669         (movsi_update_stack): Likewise.
12670         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
12671         always use an update form instruction to update the stack back
12672         chain word.
12673
12674 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
12675
12676         PR middle-end/38953
12677         * graphite.c (if_region_set_false_region): After moving a region in
12678         the false branch of a condition, remove the empty dummy basic block.
12679         (gloog): Remove wrong fix for PR38953.
12680
12681 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12682
12683         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
12684         generation due to implicit sign extension.
12685
12686 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12687
12688         PR middle-end/38981
12689         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
12690         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
12691
12692 2009-02-09  Richard Guenther  <rguenther@suse.de>
12693
12694         PR middle-end/35202
12695         * convert.c (convert_to_real): Disable (float)fn((double)x)
12696         to fnf(x) conversion if errno differences may occur and
12697         -fmath-errno is set.
12698
12699 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
12700
12701         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
12702         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12703         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12704
12705 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12706
12707         PR c/35434
12708         * c-common.c (handle_alias_attribute): Disallow attribute for
12709         anything not a FUNCTION_DECL or VAR_DECL.
12710
12711 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
12712
12713         PR c/39035
12714         * real.c (do_compare): Special-case compare of zero against
12715         decimal float value.
12716
12717 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12718
12719         PR c/36432
12720         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
12721         as indicating flexible array members unless the field itself is
12722         being declarared as the incomplete array.
12723
12724 2009-02-06  Jan Hubicka  <jh@suse.cz>
12725
12726         PR tree-optimization/38844
12727         * ipa-inline.c (try_inline): Stop inlining recursion when edge
12728         is already inlined.
12729
12730 2009-02-06  Richard Guenther  <rguenther@suse.de>
12731
12732         PR middle-end/38977
12733         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
12734         fork because we may expand it as __gcov_fork.
12735
12736 2009-02-06  Nick Clifton  <nickc@redhat.com>
12737
12738         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
12739
12740 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
12741
12742         PR tree-optimization/35659
12743         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
12744         vn_phi_eq): Shortcut if hashcode does not match.
12745         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
12746         NULL operands.
12747         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
12748         and avoid iterative_hash_expr.
12749         (FOR_EACH_VALUE_ID_IN_SET): New.
12750         (value_id_compare): Remove.
12751         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
12752         sort expressions by value id.
12753
12754 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
12755
12756         PR target/38991
12757         * config/sh/predicates.md (general_movsrc_operand): Don't check
12758         the subreg of system registers here.
12759
12760 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
12761
12762         PR c++/39106
12763         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
12764         on the copied decl.
12765
12766 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
12767
12768         PR rtl-optimization/39110
12769         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
12770         addresses, not aligned ones.
12771
12772 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
12773             Richard Guenther  <rguenther@suse.de>
12774
12775         PR tree-optimization/39100
12776         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
12777         comment says and add edges.
12778
12779 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
12780
12781         PR c/35435
12782         * c-common.c (handle_tls_model_attribute): Ignore attribute for
12783         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
12784
12785 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
12786
12787         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
12788         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
12789         register_bb_in_sese, new_sese, free_sese): Moved.
12790         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
12791         outermost_loop_in_scop, build_scop_iteration_domain,
12792         expand_scalar_variables_ssa_name, get_vdef_before_scop,
12793         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
12794         Use loop_in_sese_p instead of loop_in_scop_p.
12795         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
12796         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
12797         (scopdet_basic_block_info): Fix bug in scop detection.
12798         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
12799         eq_loop_to_cloog_loop): Remove.
12800         (nb_loops_around_loop_in_scop, nb_loop
12801         ref_nb_loops): Moved here...
12802         * graphite.h (ref_nb_loops): ... from here.
12803         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
12804         (loop_domain_dim, loop_iteration_vector_dim): Remove.
12805         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
12806         * testsuite/gcc.dg/graphite/scop-19.c: New
12807
12808 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
12809             Hans-Peter Nilsson  <hp@axis.com>
12810
12811         PR rtl-optimization/37889
12812         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
12813         Move offset handling from PLUS to before the switch.  Use new
12814         arguments when considering SYMBOL_REFs too.
12815         (rtx_addr_can_trap_p): Pass dummy offset and size.
12816         (enum may_trap_p_flags): Remove.
12817         (may_trap_p_1): Pass size from MEM_SIZE.
12818
12819         PR rtl-optimization/38921
12820         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
12821         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
12822         * rtlanal.c (may_trap_after_code_motion_p): Delete.
12823         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
12824
12825 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
12826
12827         AVX Programming Reference (January, 2009)
12828         * config/i386/sse.md (*vpclmulqdq): New.
12829
12830 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
12831
12832         PR tree-optimization/38977
12833         PR gcov-profile/38292
12834         * calls.c (special_function_p): Disregard __builtin_ prefix.
12835
12836 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
12837
12838         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
12839         non-indexable addresses even before reload.
12840
12841 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12842
12843         PR c/29129
12844         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
12845         as having variable size.  Do not give an error for unnamed
12846         parameters with [*] declarators.  Give a warning for type names
12847         with [*] declarators and mark them as variable size.
12848         * c-parser.c (c_parser_sizeof_expression): Do not give an error
12849         for sizeof applied to [*] type names.
12850
12851 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12852
12853         PR C++/36607
12854         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
12855
12856 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12857
12858         * gcc.c (process_command): Update copyright notice dates.
12859         * gcov.c (print_version): Likewise.
12860         * gcov-dump.c (print_version): Likewise.
12861         * mips-tfile.c (main): Likewise.
12862         * mips-tdump.c (main): Likewise.
12863
12864 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12865
12866         PR c/35433
12867         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
12868         for composite type involving a zero-length array type.
12869
12870 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12871
12872         PR target/35318
12873         * function.c (match_asm_constraints_1): Skip over
12874         initial optional % in the constraint.
12875
12876         PR inline-asm/39059
12877         * c-parser.c (c_parser_postfix_expression): If fixed point is not
12878         supported, don't accept FIXED_CSTs.
12879         * c-decl.c (finish_declspecs): Error if fixed point is not supported
12880         and _Sat is used without _Fract/_Accum.  Set specs->type to
12881         integer_type_node for cts_fract/cts_accum if fixed point is not
12882         supported.
12883
12884 2009-02-02  Catherine Moore  <clm@codesourcery.com>
12885
12886         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
12887
12888 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
12889
12890         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
12891         (ABI_HAS_64BIT_SYMBOLS): Use it.
12892         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
12893
12894 2009-02-02  Paul Brook  <paul@codesourcery.com>
12895
12896         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
12897
12898 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
12899
12900         PR inline-asm/39058
12901         * recog.h (asm_operand_ok): Add constraints argument.
12902         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
12903         recurse on matching constraint.
12904         (check_asm_operands): Pass constraints as 3rd argument to
12905         asm_operand_ok.  Don't look up matching constraint here.
12906         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
12907         to asm_operand_ok.
12908
12909 2009-02-02  Ben Elliston  <bje@au.ibm.com>
12910
12911         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
12912         TARGET_NARROW_VOLATILE_BITFIELD macro names.
12913
12914 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12915
12916         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
12917         information.  Remove some obsolete information.  Reorganize.
12918
12919         * config/pa/fptr.c: Revert license to GPL 2.
12920         * config/pa/milli64.S: Likewise.
12921
12922 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12923
12924         PR target/38904
12925         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
12926         LIBRARY name in, instead of hard-coding it.
12927         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
12928         extra target make frag to tmake_files according to EH model.
12929         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
12930         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
12931         frags that define makefile variable EH_MODEL appropriately.
12932         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
12933         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
12934         to "-sjlj" according to type of EH configured.
12935         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12936         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
12937         to "_sjlj" according to type of EH configured.
12938         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12939         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
12940         (SHLIB_LINK):  Add missing semicolon to if-else construct.
12941         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12942         string value of "pe_dll" command-line option.
12943         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
12944         (SHLIB_SONAME):  Use it when overriding t-cygming default.
12945         (SHLIB_IMPLIB):  Override t-cygming default.
12946         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12947         string value of "pe_dll" command-line option.
12948
12949 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12950
12951         PR target/38952
12952         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
12953         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
12954
12955 2009-01-31  Richard Guenther  <rguenther@suse.de>
12956
12957         PR tree-optimization/38937
12958         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
12959         computing the transitive closure.
12960
12961 2009-01-30  Richard Guenther  <rguenther@suse.de>
12962
12963         PR tree-optimization/39041
12964         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
12965         Propagate variable indices only if the types match for this stmt.
12966
12967 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
12968
12969         PR target/39013
12970         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
12971         inline but never defined.
12972
12973 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
12974
12975         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
12976         (*insv_h_di_reg_extimm): New insn.
12977         (*insv_l<mode>_reg_extimm): New insn.
12978
12979 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12980
12981         * config/picochip/picochip.c (flag_conserve_stack): set
12982         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
12983         fconserve-stack. Reduce call-overhead used by inliner.
12984
12985 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12986
12987         PR/38157
12988         * common.opt (flag_conserve_stack): Initialised to zero.
12989
12990 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
12991
12992         PR/39002
12993         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
12994         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
12995         method.
12996
12997 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
12998
12999         * ira-color.c (allocno_reload_assign): Update comments.
13000         * regmove.c (regmove_optimize): Likewise.
13001
13002         * ra.h: Removed.
13003
13004 2009-01-29  Robert Millan  <rmh@aybabtu.com>
13005
13006         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
13007         * config/i386/kopensolaris-gnu.h: New file.  Undefine
13008         `MD_UNWIND_SUPPORT'.
13009         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
13010
13011 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
13012
13013         PR tree-optimization/39007
13014         * tree-loop-distribution.c (generate_builtin): Use
13015         recompute_dominator to compute the immediate dominator of the
13016         basic block just after the loop.
13017
13018 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13019
13020         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
13021         (ASM_OUTPUT_DWARF_PCREL): Define.
13022
13023 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
13024
13025         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
13026         * doc/passes.texi: Remove entries about regclass, local-alloc, and
13027         global.  Modify entries about regmove and IRA.
13028
13029         * ra-conflict.c: Remove the file.
13030
13031         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
13032
13033         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
13034         (pass_regclass_init): Rename to pass_reginfo_init.
13035
13036         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
13037
13038         * toplev.h (flag_ira): Remove.
13039
13040         * caller-save.c (setup_save_areas): Remove flag_ira.
13041
13042         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
13043
13044         * global.c: Remove the file.
13045
13046         * opts.c (decode_options): Remove flag_ira.
13047
13048         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
13049
13050         * regmove.c: Modify file description.
13051         (find_use_as_address, try_auto_increment): Define them only if
13052         AUTO_INC_DEC is defined.
13053         (replacement_quality, replace_in_call_usage, fixup_match_1,
13054         stable_and_no_regs_but_for_p): Remove.
13055         (reg_set_in_bb): Make it static.
13056         (regmove_optimize): Remove flag_ira and code which worked for
13057         !flag_ira.
13058
13059         * local-alloc.c: Remove the file.
13060
13061         * common.opt (fira): Remove.
13062
13063         * ira.c: Include except.h.
13064         (eliminable_regset): Move from global.c.
13065         (mark_elimination): Ditto.  Remove flag_ira.
13066         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
13067         equiv_mem_modified, validate_equiv_mem_from_store,
13068         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
13069         contains_replace_regs, memref_referenced_p, memref_used_between_p,
13070         no_equiv, recorded_label_ref): Move from local-alloc.c.
13071         (update_equiv_regs): Ditto.  Make it static.
13072         (print_insn_chain, print_insn_chains): Move it from global.c.
13073         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
13074         (build_insn_chain): Ditto.  Make it static.
13075         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
13076         Rename to init_live_subregs.
13077         (gate_ira): Remove flag_ira.
13078
13079         * regclass.c: Rename reginfo.c.  Change file description.
13080         (FORBIDDEN_INC_DEC_CLASSES): Remove.
13081         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
13082         (init_reg_sets_1): Remove code for evaluation of
13083         reg_class_superclasses and losing_caller_save_reg_set.
13084         (init_regs): Remove init_reg_autoinc.
13085         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
13086         ok_for_base_p_nonstrict): Remove.
13087         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
13088         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
13089         corresponding entries.
13090         (dump_regclass, record_operand_costs, scan_one_insn,
13091         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
13092         record_address_regs, auto_inc_dec_reg_p): Remove.
13093         (gt-regclass.h): Rename to gt-reginfo.h.
13094
13095         * rtl.h (dump_global_regs, retry_global_alloc,
13096         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
13097
13098         * Makefile.in (RA_H): Remove.
13099         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
13100         Rename regclass.o to reginfo.o.
13101         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
13102         gt-reginfo.h.
13103         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
13104         (GTFILES): Rename regclass.c to reginfo.c.
13105
13106         * passes.c (init_optimization_passes): Remove pass_local_alloc and
13107         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
13108
13109         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
13110         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
13111         Remove flag_ira.
13112         (finish_spills): Ditto.  Remove code for !flag_ira.
13113
13114 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
13115
13116         PR middle-end/35854
13117         * doc/invoke.texi (rtl debug options): Complete rewrite.
13118         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
13119         to auto_inc_dec".
13120         * mode-switching.c (pass_mode_switching): Rename pass from
13121         "mode-sw" to "mode_sw".
13122         * except.c (pass_convert_to_eh_ranges): Rename pass from
13123         "eh-ranges" to "eh_ranges".
13124         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
13125         to "subreg1".
13126
13127
13128 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
13129             Alexander Monakov  <amonakov@ispras.ru>
13130
13131         PR middle-end/38857
13132         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
13133         register.
13134         (move_exprs_to_boundary): Change return type and pass through
13135         should_move from move_op.  Relax assert.  Update usage ...
13136         (schedule_expr_on_boundary): ... here.  Use should_move instead of
13137         cant_move.
13138         (move_op_orig_expr_found): Indicate that insn was disconnected from
13139         stream.
13140         (code_motion_process_successors): Do not call after_merge_succs
13141         callback if original expression was not found when traversing any of
13142         the branches.
13143         (code_motion_path_driver): Change return type.  Update prototype.
13144         (move_op): Update comment.  Add a new parameter (should_move).  Update
13145         prototype.  Set *should_move based on indication provided by
13146         move_op_orig_expr_found.
13147
13148 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
13149
13150         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
13151         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
13152         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
13153         * config/rs6000/rs6000.c (rs6000_override_options): Default
13154         avoid-indexed-addresses on for Power6, off for everything else.
13155         (avoiding_indexed_address_p): New function.
13156         (rs6000_legitimize_address): Use it.
13157         (rs6000_legitimate_address): Likewise.
13158         * config/rs6000/rs6000.md (movXX_updateX): Likewise
13159
13160 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
13161
13162         PR tree-optimization/38997
13163         * tree-loop-distribution.c (generate_memset_zero): Use
13164         POINTER_PLUS_EXPR for a pointer addition.
13165
13166 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13167
13168         * config/s390/s390.md (bswap<mode>2): New pattern added.
13169
13170 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13171
13172         * config/s390/s390.md (*tls_load_31): Added type attribute.
13173
13174 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13175
13176         * config/s390/s390.md: Fix a few comments.
13177
13178 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13179
13180         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
13181         (*tm<mode>_full): Fixed z10prop attribute.
13182         (*tst<mode>_extimm): Fixed z10prop attribute.
13183         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
13184         (*tstqiCCT_cconly): Fixed z10prop attribute.
13185         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
13186         (*movsi_larl): Fixed z10prop attribute.
13187         (*movsi_zarch): Fixed z10prop attribute.
13188         (*movsi_eas): Fixed z10prop attribute.
13189         (*movhi): Fixed z10prop attribute.
13190         (*movqi): Fixed z10prop attribute.
13191         (*movstrictqi): Fixed z10prop attribute.
13192         (*mov<mode>): Fixed z10prop attribute.
13193         (*movcc): Fixed z10prop attribute.
13194         (*sethighpartdi_64): Fixed z10prop attribute.
13195         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
13196         (*negdi2_sign_cc): Fixed z10prop attribute.
13197         (*negdi2_sign): Fixed z10prop attribute.
13198         (*absdi2_sign_cc): Fixed z10prop attribute.
13199         (*absdi2_sign): Fixed z10prop attribute.
13200         (*negabsdi2_sign_cc): Fixed z10prop attribute.
13201         (*negabsdi2_sign): Fixed z10prop attribute.
13202         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
13203         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
13204         (doloop_si64): Fixed z10prop attribute.
13205         (doloop_si31): Fixed z10prop attribute.
13206         (doloop_long): Fixed z10prop attribute.
13207         (indirect_jump): Fixed z10prop attribute.
13208         (nop): Fixed z10prop attribute.
13209         (main_base_64): Fixed z10prop attribute.
13210         (reload_base_64): Fixed z10prop attribute.
13211
13212 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
13213
13214         PR rtl-optimization/38740
13215         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
13216         if !optimize.
13217         * config/mips/mips.c (mips_reorg): Likewise.
13218
13219 2009-01-28  Richard Guenther  <rguenther@suse.de>
13220
13221         PR tree-optimization/38926
13222         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
13223         with the correct value id to a value.
13224         (do_regular_insertion): Use the value number of edoubleprime
13225         for the value number of the expr.
13226
13227         Revert
13228         2008-08-21  Richard Guenther  <rguenther@suse.de>
13229
13230         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
13231         a PHI ask VN if it is already available.
13232         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
13233         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
13234
13235 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
13236
13237         PR middle-end/38934
13238         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
13239         set to varying whenever max has TREE_OVERFLOW set, similarly
13240         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
13241
13242 2009-01-28  Richard Guenther  <rguenther@suse.de>
13243
13244         PR middle-end/38908
13245         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
13246         uninitialized aggregate uses in call arguments.
13247
13248 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
13249
13250         PR tree-optimization/38984
13251         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
13252         the nothing_id variable if -fno-delete-null-pointer-checks.
13253
13254 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
13255
13256         PR target/38988
13257         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
13258         (set_got_offset_rex64): Ditto.
13259
13260 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
13261
13262         PR target/38941
13263         * doc/extend.texi: Improve local variable with asm reg.
13264
13265 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
13266
13267         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
13268         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
13269         was not supplied then set warn_packed_bitfield_compat to the
13270         default value of 1.
13271         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
13272         against 1.
13273
13274 2009-01-27  Richard Guenther  <rguenther@suse.de>
13275
13276         PR tree-optimization/38503
13277         * cfgexpand.c (expand_gimple_basic_block): Ignore
13278         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
13279         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
13280         variables that cannot have TBAA applied.
13281         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
13282         statements.
13283
13284 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
13285
13286         PR middle-end/38969
13287         * calls.c (initialize_argument_information): Do not wrap complex
13288         arguments in SAVE_EXPR.
13289
13290 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
13291
13292         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
13293         (INSTALL_LIBGCC): Revert typo commit.
13294
13295 2009-01-26  Richard Guenther  <rguenther@suse.de>
13296
13297         PR tree-optimization/38745
13298         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
13299         from special handling.
13300
13301 2009-01-26  Richard Guenther  <rguenther@suse.de>
13302
13303         PR tree-optimization/38745
13304         * tree-ssa.c (execute_update_addresses_taken): Do not include
13305         variables that cannot possibly be a register in not_reg_needs.
13306         Do not clear TREE_ADDRESSABLE on vars that may not become
13307         registers.
13308         * tree-ssa.c (update_alias_info_1): Include those in the set
13309         of addressable vars.
13310
13311 2009-01-26  Richard Guenther  <rguenther@suse.de>
13312
13313         PR middle-end/38851
13314         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
13315         * tree-ssa-dse.c: Include langhooks.h
13316         (execute_simple_dse): Remove stores with zero size.
13317
13318 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
13319
13320         PR c/38957
13321         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
13322         as PLUS_EXPR.
13323
13324 2009-01-24  Julian Brown  <julian@codesourcery.com>
13325
13326         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
13327         config/arm/linux-atomic.c.
13328         * config/arm/linux-atomic.c: New.
13329
13330 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
13331
13332         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
13333         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
13334         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
13335
13336 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
13337
13338         PR c/38938
13339         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
13340         properly.
13341
13342 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
13343
13344         PR tree-optimization/38953
13345         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
13346         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
13347         (gloog): Split the exit of the scop when the scop exit is a loop exit.
13348         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
13349         changed the CFG.
13350
13351 2009-01-24  Paul Brook  <paul@codesourcery.com>
13352
13353         * config/arm/neon.md (neon_type): Move to arm.md.
13354         (neon_mov<VSTRUCT>): Add neon_type attribute.
13355         * config/arm/arm.md (neon_type): Move to here.
13356         (conds): Add "unconditioal" and use as default for NEON insns.
13357
13358 2009-01-24  Ben Elliston  <bje@au.ibm.com>
13359
13360         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
13361         void *' warning from -Wc++-compat.
13362         * Makefile.in (dominance.o-warn): Remove.
13363
13364 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
13365
13366         PR tree-optimization/38932
13367         * fold-const.c (fold_unary_ignore_overflow): New.
13368         * tree.h (fold_unary_ignore_overflow): Declare.
13369         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
13370         * tree-ssa-sccvn.c (visit_reference_op_load,
13371         simplify_unary_expression): Likewise.
13372
13373 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
13374
13375         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
13376         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
13377         regardless of their type.
13378         * c-common.c (handle_packed_attribute): Don't ignore packed on
13379         bitfields.
13380         * c.opt (Wpacked-bitfield-compat): New warning option.
13381         * stor-layout.c (place_field): Warn if offset of a field changed.
13382         * doc/extend.texi (packed): Mention the ABI change.
13383         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
13384         (Warning Options): Add it to the list.
13385
13386 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
13387
13388         * c-opts.c (c_common_post_options): Fix a typo in comments.
13389
13390 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
13391
13392         PR middle-end/38615
13393         * gimplify.c (gimplify_init_constructor): Fix promotion of const
13394         variables to static.
13395         * doc/invoke.texi (-fmerge-all-constants): Update description.
13396
13397 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
13398
13399         PR target/38931
13400         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
13401         (*movdi_1_rex64): Use type "mmx" for alternative 5.
13402
13403 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
13404
13405         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
13406         a word boundary.
13407         (LOCAL_ALIGNMENT): Similarly.
13408
13409 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13410             Joseph Myers  <joseph@codesourcery.com>
13411
13412         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
13413         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
13414         * config/arm/arm-tune.md: Regenerate.
13415         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
13416         -march=iwmmxt2.
13417
13418 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13419
13420         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
13421         version number to five.
13422
13423 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13424
13425         PR c++/38930
13426         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
13427         * c-common.c (set_underlying_type): Likewise.
13428         (is_typedef_decl ): Likewise
13429         * tree.h: Likewise
13430         (set_underlying_type): Likewise.
13431         (is_typedef_type): Likewise.
13432
13433 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
13434
13435         PR middle-end/38587
13436         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
13437         crossing setjmps.
13438
13439 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
13440
13441         PR bootstrap/37660
13442         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
13443         (LIBGCC_SPEC):  Don't define.
13444         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
13445
13446 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
13447
13448         PR rtl-optimization/38879
13449         * alias.c (base_alias_check): Unaligned access via AND address can
13450         alias all surrounding object types except those with sizes equal
13451         or wider than the size of unaligned access.
13452
13453 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
13454
13455         PR c++/26693
13456         * c-decl.c (clone_underlying_type): Move this ...
13457         * c-common.c (set_underlying_type): ... here.
13458         Also, make sure the function properly sets TYPE_STUB_DECL() on
13459         the newly created typedef variant type.
13460         (is_typedef_decl ): New entry point.
13461         * tree.h: Added a new member member_types_needing_access_check to
13462         struct tree_decl_non_common.
13463         (set_underlying_type): New entry point.
13464         (is_typedef_type): Likewise.
13465
13466 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
13467
13468         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
13469         Check whether two instructions have memory references that
13470         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
13471         are helper functions for traversing.
13472         * alias.h (insn_alias_sets_confilict_p): New prototypes.
13473         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
13474         not to draw dependency edge for instructions with non-conflicting
13475         alias sets.
13476
13477 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
13478
13479         PR other/38758
13480         * longlong.h: Update copyright years.  Use soft-fp license notice.
13481         Sync __clz_tab declaration with glibc.
13482
13483 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
13484
13485         PR target/30687
13486         * doc/extend.texi (syscall_linkage): New.
13487         (version_id): Modify.
13488
13489 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13490             Richard Guenther  <rguenther@suse.de>
13491
13492         PR tree-optimization/38747
13493         PR tree-optimization/38748
13494         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
13495         conversion if the base address is an indirect reference and the
13496         aliasing sets could cause issues.
13497
13498 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13499
13500         * common.opt (fgraphite, fgraphite-identity): Add comment for
13501         explaining why these options are not documented.
13502
13503 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13504
13505         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
13506         gimple_call_lhs is NULL.
13507
13508 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
13509
13510         PR target/38868
13511         * emit-rtl.c (adjust_address_1): Make sure memref is never
13512         overwritten.
13513
13514 2009-01-20  Ben Elliston  <bje@au.ibm.com>
13515
13516         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13517         const qualifier from arg parameter. Remove unnecessary cast to char *.
13518         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13519         const qualifier from arg 2.
13520
13521 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
13522
13523         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
13524
13525 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
13526
13527         PR c/38869
13528         * rtl.h (reinit_regs): New prototype.
13529         * regclass.c: Include ira.h.
13530         (reinit_regs): New.
13531         * Makefile.in (regclass.o): Add ira.h.
13532         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
13533
13534 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
13535
13536         PR target/38736
13537         * c-common.c (handle_aligned_attribute): Use
13538         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
13539         default alignment value.
13540
13541         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
13542
13543         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
13544         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
13545
13546         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
13547         __BIGGEST_ALIGNMENT__.
13548
13549         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
13550
13551 2009-01-18  Richard Guenther  <rguenther@suse.de>
13552
13553         PR tree-optimization/38819
13554         * tree-flow.h (operation_could_trap_helper_p): Declare.
13555         * tree-eh.c (operation_could_trap_helper_p): Export.
13556         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
13557         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
13558         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
13559         are about to insert a possibly trapping instruction and fail
13560         in this case.
13561
13562 2009-01-18  Andreas Schwab  <schwab@suse.de>
13563
13564         * doc/install.texi (Configuration): Remove obsolete paragraph
13565         about use of --with-gnu-ld with --with-gnu-as.
13566
13567 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
13568
13569         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
13570         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
13571         Follow spelling conventions.
13572
13573 2009-01-18  Ben Elliston  <bje@au.ibm.com>
13574
13575         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
13576         C++ warning about implicit conversion from void * to struct
13577         bitmap_head_def *.
13578         (bitmap_obstack_free): Likewise for bitmap_element *.
13579         * Makefile.in (bitmap.o-warn): Remove.
13580
13581 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
13582
13583         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
13584
13585 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
13586             Tobias Grosser  <tobi.grosser@amd.com>
13587
13588         * graphite.c (graphite_trans_scop_block): Do not block single
13589         nested loops.
13590
13591 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
13592
13593         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
13594         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
13595         test with assertion.
13596
13597 2009-01-16  Richard Guenther  <rguenther@suse.de>
13598
13599         PR tree-optimization/38835
13600         PR middle-end/36227
13601         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
13602         and INT + PTR -> (INT)(PTR p+ INT) folding.
13603         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
13604
13605 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
13606
13607         PR target/38554
13608         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
13609         the subreg from a lowpart subreg if it is also casting the value.
13610
13611 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13612             Tobias Grosser  <tobi.grosser@amd.com>
13613
13614         * graphite.c (compare_prefix_loops): New.
13615         (build_scop_canonical_schedules): Rewritten.
13616         (graphite_transform_loops): Move build_scop_canonical_schedules
13617         after build_scop_iteration_domain.
13618
13619 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13620             Tobias Grosser  <tobi.grosser@amd.com>
13621
13622         * graphite.c (add_conditions_to_domain): Add the loops to
13623         the dimension of the iteration domain.  Do copy the domain
13624         only when it exists.
13625         (build_scop_conditions_1): Do not call add_conditions_to_domain.
13626         (add_conditions_to_constraints): New.
13627         (can_generate_code_stmt, can_generate_code): Removed.
13628         (gloog): Do not call can_generate_code.
13629         (graphite_transform_loops): Call add_conditions_to_constraints
13630         after building the iteration domain.
13631
13632 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
13633
13634         PR tree-optimization/38789
13635         * tree-ssa-threadedge.c
13636         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13637         __builtin_constant_p.
13638
13639 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
13640
13641         * dce.c (delete_unmarked_insns): Reversed the order that insns are
13642         examined before deleting them.
13643
13644 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
13645
13646         * function.c (aggregate_value_p): Correctly extract the function
13647         type from CALL_EXPR_FN lookup.
13648
13649 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13650
13651         * config/picochip/picochip.c (picochip_override_options): Revert
13652         CFI asm flag disable commited previously.
13653
13654 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
13655             Tobias Grosser  <tobi.grosser@amd.com>
13656             Jan Sjodin  <jan.sjodin@amd.com>
13657
13658         * graphite.c (scan_tree_for_params): On substractions negate
13659         all the coefficients of the term.
13660         (clast_to_gcc_expression_red): New.  Handle reduction expressions
13661         of more than two operands.
13662         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
13663         (get_vdef_before_scop): Handle also the case of default definitions.
13664
13665 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
13666
13667         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
13668         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
13669         Also use them when walking CALL_INSN_FUNCTION_USAGE.
13670
13671 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
13672             Joey Ye  <joey.ye@intel.com>
13673
13674         PR middle-end/37843
13675         * cfgexpand.c (expand_stack_alignment): Don't update stack
13676         boundary nor check incoming stack boundary here.
13677         (gimple_expand_cfg): Update stack boundary and check incoming
13678         stack boundary here.
13679
13680 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
13681
13682         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
13683
13684 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
13685
13686         PR rtl-optimization/38245
13687         * calls.c (expand_call): Add stack arguments to
13688         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13689         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
13690         in regs and partially in memory or BLKmode arguments.
13691         (emit_library_call_value_1): Add stack arguments to
13692         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13693         ACCUMULATE_OUTGOING_ARGS).
13694         * dce.c: Include tm_p.h.
13695         (find_call_stack_args): New function.
13696         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
13697         argument.
13698         (mark_insn): Call find_call_stack_args for CALL_Ps.
13699         (prescan_insns_for_dce): Walk insns backwards in bb rather than
13700         forwards.  Allocate and free arg_stores bitmap if needed, pass it
13701         down to deletable_insn_p, don't mark stores set in arg_stores
13702         bitmap, clear the bitmap at the beginning of each bb.
13703         * Makefile.in (dce.o): Depend on $(TM_P_H).
13704
13705 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
13706
13707         PR target/22599
13708         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
13709         to make sure the insn is a conditional test (bug 22599).  Reformat a
13710         few long lines.
13711
13712 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
13713
13714         PR middle-end/38431
13715         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
13716         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
13717         (gloog): Do not call cleanup_tree_cfg.
13718         (graphite_transform_loops): Call cleanup_tree_cfg after all
13719         scops have been code generated.
13720
13721 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
13722         * doc/gty.texi (Invoking the garbage collector): Added new node
13723         and section documenting ggc_collect.
13724
13725 2009-01-14  Richard Guenther  <rguenther@suse.de>
13726
13727         PR tree-optimization/38826
13728         PR middle-end/38477
13729         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
13730         initialization notes only if we actually emitted a warning.
13731         (intra_create_variable_infos): Add constraints for a result decl
13732         that is passed by hidden reference.
13733         (build_pred_graph): Mark all related variables non-direct on
13734         address-taking.
13735
13736 2009-01-14  Nick Clifton  <nickc@redhat.com>
13737
13738         * ira-conflicts.c: Include addresses.h for the definition of
13739         base_reg_class.
13740         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
13741         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
13742
13743 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
13744
13745         PR target/38811
13746         * Makefile.in (ira-lives.o): Add except.h.
13747
13748         * ira-lives.c: Include except.h.
13749         (process_bb_node_lives): Process can_throw_internal.
13750
13751 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
13752
13753         PR rtl-optimization/38774
13754         * combine.c (simplify_set): When undoing cc_use change, don't do
13755         PUT_CODE on the newly created comparison, but instead put back the
13756         old comparison.
13757
13758 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
13759
13760         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
13761         values.  Remove duplicate arm8 entry.
13762
13763 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13764
13765         PR tree-optimization/38786
13766         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
13767         the SSA_NAME case of expand_scalar_variables_expr.
13768         Set the type of an expression to the type of its assign statement.
13769         (expand_scalar_variables_expr): Also gather the scalar computation
13770         used to index the memory access.  Do not pass loop_p.
13771         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
13772         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
13773         the gimple_stmt_iterator where it inserts new code.
13774         Do not pass loop_p.
13775         (copy_bb_and_scalar_dependences): Do not pass loop_p.
13776         (translate_clast): Update call to copy_bb_and_scalar_dependences.
13777
13778 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13779
13780         * graphite.h (debug_value): Removed.
13781         * graphite.c (debug_value): Removed.
13782
13783 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13784
13785         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
13786         ldrd/strd with two 32-bit instructions.
13787
13788 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13789
13790         * config/arm/arm.c (struct processors): Pass for speed down into
13791         cost helper functions.
13792         (const_ok_for_op): Handle COMPARE and inequality nodes.
13793         (arm_rtx_costs_1): Rewrite.
13794         (arm_size_rtx_costs): Update prototype.
13795         (arm_rtx_costs): Pass speed down to helper functions.
13796         (arm_slowmul_rtx_costs): Rework cost calculations.
13797         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
13798         (arm_9e_rtx_costs): Likewise.
13799
13800 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
13801
13802         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
13803         relocations of local symbols wider than UNITS_PER_WORD are not valid.
13804         (alpha_legitimize_address): Do not split local symbols wider than
13805         UNITS_PER_WORD into HIGH/LO_SUM parts.
13806
13807 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
13808
13809         PR bootstrap/38580
13810         * gcc.c (process_command): Replace call to execvp with calls
13811         to pex_one and exit.
13812
13813 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
13814
13815         PR target/29141
13816         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
13817         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
13818         variant for devices with 3-byte PC.
13819         (__tablejump_elpm__): New.
13820
13821 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13822
13823         PR c/32041
13824         * c-parser.c (c_parser_postfix_expression): Allow `->' in
13825         offsetof member-designator, handle it as `[0].'.
13826
13827 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13828
13829         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
13830         function when not using named sections on targets with named sections
13831         if branch distance is less than 262132.
13832
13833 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
13834
13835         * combine.c (combine_instructions):  Recompute
13836         optimize_this_for_speed_p  for each BB in the main combine loop.
13837
13838 2009-01-12  Tomas Bily  <tbily@suse.cz>
13839
13840         PR middlend/38385
13841         * tree-loop-distribution.c (prop_phis): New function.
13842         (generate_builtin): Call prop_phis.
13843         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
13844
13845 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13846
13847         PR tree-optimization/38807
13848         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
13849         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
13850
13851 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
13852
13853         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
13854         subreg of op0 to the original op0.
13855
13856 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
13857
13858         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
13859
13860 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
13861
13862         PR debug/7055
13863         * mips-tfile.c (parse_def): Fix parsing of def strings
13864         starting with digits.
13865
13866 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
13867
13868         PR target/38695
13869         * config/arm/arm.c (arm_is_long_call_p): Don't call
13870         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
13871
13872 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
13873
13874         * regrename.c (regrename_optimize): Fix dumping.
13875         (find_oldest_value_reg): Preserve REG_POINTER.
13876         (copy_hardreg_forward_1): Likewise.
13877
13878 2009-01-09  Diego Novillo  <dnovillo@google.com>
13879
13880         * gimple.h (struct gimple_statement_base) <uid>: Document
13881         the restrictions on its use.
13882         (gimple_uid): Tidy.
13883         (gimple_set_uid): Tidy.
13884
13885 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13886
13887         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
13888         zero guard even if align_bytes != 0 and count is smaller than
13889         size_needed.
13890
13891 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
13892
13893         PR rtl-optimization/38495
13894         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
13895         (add_range_and_copies_from_move_list): Print all added ranges.
13896         Add ranges to memory optimized destination.
13897
13898 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13899
13900         PR target/38686
13901         PR target/38708
13902         * config/i386/i386.c (override_options): Reject
13903         -mstringop-strategy=rep_8byte with -m32.
13904         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
13905         to 1.  Do count comparison against epilogue_size_needed at compile
13906         time even when count_exp was constant forced into register.  For
13907         size_needed don't jump to epilogue, instead just avoid aligning
13908         and invoke the body algorithm.  If need_zero_guard, add zero guard
13909         even if count is non-zero, but smaller than size_needed + number of
13910         bytes that could be stored for alignment.
13911         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
13912         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
13913         but smaller than size_needed + number of bytes that could be stored
13914         for alignment.  Compare size_needed with epilogue_size_needed instead
13915         of desired_align - align, don't adjust size_needed, pass
13916         epilogue_size_needed to the epilogue expanders.
13917
13918         PR c/35742
13919         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
13920
13921 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13922
13923         * pa.c (last_address): Change to unsigned.
13924         (update_total_code_bytes): Change argument to unsigned.  Don't
13925         check if insn addresses are set.
13926         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
13927         addresses are not set.
13928         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
13929
13930 2009-01-09  Nick Clifton  <nickc@redhat.com>
13931
13932         * config/sh/symbian.c: Replace uses of DECL_INLINE with
13933         DECL_DECLARED_INLINE_P.
13934
13935 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13936
13937         PR middle-end/38347
13938         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
13939         GET_MODE (op0) in operand_subword_force calls.
13940
13941         PR middle-end/38771
13942         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
13943         fold_convert arg0 operands to TREE_TYPE (op0) first.
13944
13945 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
13946
13947         * params.def (ira-max-conflict-table-size): Decrease default value
13948         to 1000.
13949
13950 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
13951
13952         PR tree-optimization/37031
13953         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
13954         on parameter_set.
13955         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
13956         allocate it using gc instead of heap, use VEC_quick_push instead of
13957         VEC_safe_push.
13958         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
13959         instead of heap, use VEC_quick_push instead of VEC_safe_push.
13960         * tree-data-ref.h (struct access_matrix): Change matrix to gc
13961         allocated vector from heap allocated.
13962         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
13963         * tree-loop-linear.c (linear_transform_loops): Allocate nest
13964         vector only after perfect_loop_nest_depth call.
13965
13966 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
13967             Jan Sjodin  <jan.sjodin@amd.com>
13968
13969         PR tree-optimization/38559
13970         * graphite.c (debug_value, copy_constraint,
13971         swap_constraint_variables, scale_constraint_variable, ): New.
13972         (get_lower_bound, get_upper_bound): Removed.
13973         (graphite_trans_bb_strip_mine): Clean up this code that works
13974         only for constant number of iterations.  Fully copy upper and
13975         lower bound constraints, not only the constant part of them.
13976         * graphite.h (debug_value): Declared.
13977
13978 2009-01-08  Ira Rosen  <irar@il.ibm.com>
13979
13980         PR tree-optimization/37194
13981         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
13982         Don't add the cost of cost model guard in prologue to scalar
13983         outside cost in case of known number of iterations.
13984
13985 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
13986             Alan Modra  <amodra@bigpond.net.au>
13987
13988         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
13989         non-word-aligned REG+CONST addressing.
13990
13991 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13992
13993         PR target/38706
13994         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
13995         free_after_compilation when outputting a thunk.
13996         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
13997         Do not call free_after_compilation here.
13998
13999 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
14000
14001         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
14002         (ix86_valid_target_attribute_inner_p): Ditto.
14003
14004 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
14005
14006         PR tree-optimization/38492
14007         PR tree-optimization/38498
14008         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
14009         * tree-chrec.h (scev_is_linear_expression): Declared.
14010         * graphite.c (graphite_cannot_represent_loop_niter): New.
14011         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
14012         (graphite_loop_normal_form): Use gcc_assert.
14013         (scan_tree_for_params): Use CASE_CONVERT.
14014         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
14015         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
14016         Use gcc_assert.  Discard scops that contain unhandled cases.
14017         (build_scop_conditions): Return a boolean status for unhandled cases.
14018         (strip_mine_profitable_p): Print the loop number, not its depth.
14019         (is_interchange_valid): Pass the depth of the loop nest, don't
14020         recompute it wrongly.
14021         (graphite_trans_bb_block): Same.
14022         (graphite_trans_bb_block): Print tentative of loop blocking.
14023         (graphite_trans_scop_block): Do not print that the loop has been
14024         blocked.
14025         (graphite_transform_loops): Do not handle scops that contain condition
14026         scalar phi nodes.
14027
14028 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
14029
14030         AVX Programming Reference (December, 2008)
14031         * config/i386/avxintrin.h (_mm256_stream_si256): New.
14032         (_mm256_stream_pd): Likewise.
14033         (_mm256_stream_ps): Likewise.
14034
14035         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
14036         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
14037         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
14038         (bdesc_special_args): Add __builtin_ia32_movntdq256,
14039         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
14040         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
14041         (ix86_expand_special_args_builtin): Likewise.
14042
14043         * config/i386/sse.md (AVXMODEDI): New.
14044         (avx_movnt<mode>): Likewise.
14045         (avx_movnt<mode>): Likewise.
14046         (<sse>_movnt<mode>): Remove AVX support.
14047         (sse2_movntv2di): Likewise.
14048
14049 2009-01-07  Richard Guenther  <rguenther@suse.de>
14050
14051         PR middle-end/38751
14052         * fold-const.c (extract_muldiv): Remove obsolete comment.
14053         (fold_plusminus_mult_expr): Undo MINUS_EXPR
14054         to PLUS_EXPR canonicalization for the canonicalization.
14055
14056 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
14057
14058         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
14059         hosted cross-compilers generating less efficient code.
14060
14061 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
14062
14063         * function.h (rtl_data): Add a dbr_scheduled_p field.
14064         * reorg.c (dbr_schedule): Set it.
14065         (gate_handle_delay_slots): Check it.
14066         * config/mips/mips.c (mips_base_delayed_branch): Delete.
14067         (mips_reorg): Check flag_delayed_branch instead of
14068         mips_base_delayed_branch.
14069         (mips_override_options): Don't set mips_base_delayed_branch
14070         or flag_delayed_branch.
14071
14072 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
14073
14074         PR rtl-optimization/38426.
14075         * ira.c (ira): Set current_function_is_leaf earlier.
14076
14077 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
14078
14079         PR rtl-optimization/38722
14080         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
14081         too early, only set a flag and modify after last possible
14082         undo_all point.
14083
14084 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
14085
14086         PR c/34252
14087         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
14088         * real.c (decimal_single_format): Correct values of emin and emax.
14089         (decimal_double_format): Ditto.
14090         (decimal_quad_format): Ditto.
14091         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
14092         computation of DECnn_MIN and DECnn_MAX for corrected values of
14093         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
14094         __DECnn_MIN__, and adjust its computation for the corrected value
14095         of emin.
14096
14097 2009-01-06  Jan Hubicka  <jh@suse.cz>
14098
14099         PR target/38744
14100         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
14101
14102 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
14103
14104         * doc/contrib.texi (Contributors): Slightly adjust the end note.
14105         Add Robert Clark to the list of testers.
14106
14107 2009-01-06  Jan Hubicka  <jh@suse.cz>
14108             Kai Tietz  <kai.tietz@onevision.com>
14109
14110         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
14111         * config/i386/i386.c (ix86_expand_call): Add clobbers.
14112
14113 2009-01-06  Jan Hubicka  <jh@suse.cz>
14114             Kai Tietz  <kai.tietz@onevision.com>
14115
14116         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
14117         for w64 ABI.
14118         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
14119         (ix86_nsaved_regs): Count only general purpose regs.
14120         (ix86_nsaved_sseregs): New.
14121         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
14122         to 16 for w64; compute padding and size of sse reg save area.
14123         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
14124         general purpose regs.
14125         (ix86_emit_save_sse_regs_using_mov): New.
14126         (ix86_expand_prologue): Save SSE regs if needed.
14127         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
14128         (ix86_emit_restore_sse_regs_using_mov): New.
14129         (ix86_expand_epilogue): Save SSE regs if needed.
14130
14131 2009-01-06  Jan Hubicka  <jh@suse.cz>
14132             Kai Tietz  <kai.tietz@onevision.com>
14133
14134         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
14135         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
14136         functions when accumulate outgoing args is off.
14137
14138 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
14139
14140         PR bootstrap/38742
14141         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
14142         before using pseudos_have_intersected_live_ranges_p.
14143
14144         * ira-int.h (ira_assert): Always define.
14145
14146 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
14147
14148         AVX Programming Reference (December, 2008)
14149         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
14150         (_mm256_permute2_pd): Likewise.
14151         (_mm_permute2_ps): Likewise.
14152         (_mm256_permute2_ps): Likewise.
14153         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
14154         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
14155
14156         * config/i386/i386.c (ix86_builtins): Remove
14157         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
14158         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
14159         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
14160         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
14161         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
14162         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
14163         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
14164         __builtin_ia32_vpermil2ps256.
14165         (ix86_init_mmx_sse_builtins): Updated.
14166         (ix86_expand_args_builtin): Likewise.
14167
14168 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14169
14170         * pa.c (output_call): Relocate non-jump insns in the delay slot of
14171         long absolute calls when generating PA 2.0 code.
14172
14173 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
14174
14175         PR rtl-optimization/38583
14176         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
14177
14178         * params.def (ira-max-conflict-table-size): New.
14179
14180         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
14181
14182         * ira.h (ira_conflicts_p): New external definition.
14183
14184         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
14185         table.  Report this.  Return result of building.
14186         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
14187         building conflict table.
14188
14189         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
14190         (ira_color): Use ira_conflicts_p.
14191
14192         * global.c: Include ira.h.
14193         (pseudo_for_reload_consideration_p, build_insn_chain): Use
14194         ira_conflicts_p.
14195
14196         * Makefile.in (global.o): Add ira.h.
14197
14198         * ira-build.c (mark_all_loops_for_removal,
14199         propagate_some_info_from_allocno): New.
14200         (remove_unnecessary_allocnos): Call
14201         propagate_some_info_from_allocno.
14202         (remove_low_level_allocnos): New.
14203         (remove_unnecessary_regions): Add parameter.  Call
14204         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
14205         parameter to remove_unnecessary_regions.
14206         (ira_build): Remove all regions but root if the conflict table was
14207         not built.  Update conflict hard regs for allocnos crossing calls.
14208
14209         * ira.c (ira_conflicts_p): New global.
14210         (ira): Define and use ira_conflicts_p.
14211
14212         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
14213         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
14214         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
14215
14216 2009-01-06  Ben Elliston  <bje@au.ibm.com>
14217
14218         * gengtype-lex.l (YY_NO_INPUT): Define.
14219
14220 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14221
14222         PR c/34911
14223         * c-common.c (handle_vector_size_attribute): Also reject
14224         BOOLEAN_TYPE types.
14225
14226 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
14227
14228         PR tree-optimization/38492
14229         * graphite.c (rename_map_elt, debug_rename_elt,
14230         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
14231         rename_map_elt_info, eq_rename_map_elts,
14232         get_new_name_from_old_name, bb_in_sese_p): Moved around.
14233         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
14234         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
14235         (sese_build_livein_liveouts): New.
14236         (new_sese, free_sese): New.
14237         (new_scop): Call new_sese.
14238         (free_scop): Call free_sese.
14239         (rename_variables_from_edge, rename_phis_end_scop): Removed.
14240         (register_old_new_names): Renamed register_old_and_new_names.
14241         (register_scop_liveout_renames, add_loop_exit_phis,
14242         insert_loop_close_phis, struct igp,
14243         default_liveout_before_guard, add_guard_exit_phis,
14244         insert_guard_phis, copy_renames): New.
14245         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
14246         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
14247         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
14248         (scop_adjust_phis_for_liveouts): New.
14249         (gloog): Call scop_adjust_phis_for_liveouts.
14250
14251         * graphite.h (struct sese): Documented.  Added fields liveout,
14252         num_ver and livein.
14253         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
14254         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
14255         (struct scop): Added field liveout_renames.
14256         (SCOP_LIVEOUT_RENAMES): New.
14257
14258 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14259
14260         PR tree-optimization/38510
14261         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
14262         (translate_clast): Call recompute_all_dominators before
14263         graphite_verify.
14264         (gloog): Call recompute_all_dominators before graphite_verify.
14265
14266 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14267             Jan Sjodin  <jan.sjodin@amd.com>
14268
14269         PR tree-optimization/38500
14270         * graphite.c (create_sese_edges): Call fix_loop_structure after
14271         splitting blocks.
14272
14273 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
14274
14275         * config.gcc: Add m32r*-*-rtems*.
14276         * config/m32r/rtems.h: New file.
14277
14278 2009-01-05  Ben Elliston  <bje@au.ibm.com>
14279
14280         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
14281         (.po.pox): Likewise.
14282         (po/gcc.pot): Likewise.
14283
14284 2009-01-04  David S. Miller  <davem@davemloft.net>
14285
14286         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
14287         (STARTING_FRAME_OFFSET): Always set to zero.
14288
14289 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
14290
14291         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
14292         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
14293         fixed-point types, and vectors of the same.
14294
14295 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
14296
14297         * config/mips/sync.md (*mb_barrier): Rename to...
14298         (*memory_barrier): ...this.
14299
14300 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
14301
14302         * doc/extend.texi (Function Attributes): Move @cindex after @item
14303         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
14304         and put in alphabetical order. Fix 'target' name and put in order.
14305         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
14306         typos.
14307
14308 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
14309
14310         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
14311         (memory_barrier): Expand as unspec instead of unspec_volatile.
14312         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14313         (*memory_barrier): Define as unspec instead of unspec_volatile.
14314         Use (match_dup 0) as input operand.
14315
14316         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
14317         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
14318         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
14319         scratch register.  Remove operand 1.
14320         (*stbar): Define as unspec instead of unspec_volatile.
14321         Use (match_dup 0) as input operand, remove (const_int 8).
14322         (*membar): Define as unspec instead of unspec_volatile.
14323         Use (match_dup 0) as input operand, remove input operand 2.
14324
14325         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
14326         (memory_barrier): Expand as unspec instead of unspec_volatile.
14327         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14328         (*memory_barrier): Define as unspec instead of unspec_volatile.
14329         Use (match_dup 0) as input operand.
14330
14331         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
14332         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14333         Set volatile flag on operand 0.
14334         (*memory_barrier): New insn pattern.
14335
14336         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
14337         insn operands.
14338         (*memory_barrier): Use (match_dup 0) as input operand.
14339
14340         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
14341         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14342         Set volatile flag on operand 0.
14343         (*mb_internal): New insn pattern.
14344
14345         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
14346
14347 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
14348
14349         PR middle-end/38586
14350         * function.c (struct temp_slot): Move to the section of the file
14351         that deals with temp slots.  Remove field 'address'.
14352         (temp_slot_address_table): New hash table of address -> temp slot.
14353         (struct temp_slot_address_entry): New struct, items for the table.
14354         (temp_slot_address_compute_hash, temp_slot_address_hash,
14355         temp_slot_address_eq, insert_temp_slot_address): Support functions
14356         for the new table.
14357         (find_temp_slot_from_address): Rewrite to use the new hash table.
14358         (remove_unused_temp_slot_addresses): Remove addresses of temp
14359         slots that have been made available.
14360         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
14361         worker function for remove_unused_temp_slot_addresses.
14362         (assign_stack_temp_for_type): Don't clear the temp slot address list.
14363         Add the temp slot address to the address -> temp slot map.
14364         (update_temp_slot_address): Update via insert_temp_slot_address.
14365         (free_temp_slots): Call remove_unused_temp_slot_addresses.
14366         (pop_temp_slots): Likewise.
14367         (init_temp_slots): Allocate the address -> temp slot map, or empty
14368         the map if it is already allocated.
14369         (prepare_function_start): Initialize temp slot processing.
14370
14371 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
14372
14373         PR middle-end/38584
14374         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
14375         Calculate the size of all stack vars assuming no packing of stack
14376         vars will happen, replacing a quadratic algorithm with a linear one.
14377
14378 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14379
14380         PR target/38707
14381         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
14382         can't be used.
14383
14384 2009-01-03  Diego Novillo  <dnovillo@google.com>
14385
14386         * doc/contrib.texi: Update contributions.
14387
14388 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14389
14390         PR c++/38705
14391         * builtins.c (fold_builtin_memory_op): Give up if either operand
14392         is volatile.  Set srctype or desttype to non-qualified version
14393         of the other type.
14394
14395         PR c/38700
14396         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
14397         and FUNCTION_DECLs.
14398
14399 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
14400
14401         PR rtl-optimization/35805
14402         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
14403         problem if fast dce is able to remove any instructions.
14404         * dce.c (dce_process_block): Fix dump message.
14405
14406 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
14407
14408         PR 33649
14409         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
14410
14411 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
14412
14413         PR middle-end/38690
14414         * tree-flow.h (op_code_prio, op_prio): New prototypes.
14415         * tree-pretty-print.c (op_code_prio): New function.
14416         (op_prio): No longer static.  Use op_code_prio.
14417         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
14418         Use op_prio and op_code_prio to determine if () should be
14419         printed around operand(s) or not.
14420
14421         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
14422         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
14423         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
14424         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
14425         pp_character instead of pp_string for single letter printing.
14426
14427 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
14428
14429         * doc/extend.texi: Fix '#pragma GCC option' typo.
14430
14431 2009-01-02  Richard Guenther  <rguenther@suse.de>
14432
14433         * doc/install.texi (--enable-checking): Mention different
14434         default for stage1.
14435         (--enable-stage1-checking): Document.
14436
14437 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
14438
14439         PR middle-end/30142
14440         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
14441         case to be an error.
14442
14443 2009-01-02  Ben Elliston  <bje@au.ibm.com>
14444
14445         * config/fp-bit.h (pack_d): Constify argument.
14446         * config/fp-bit.c (makenan): Constify return type. Remove casts.
14447         (isnan): Constify argument.
14448         (isinf): Likewise.
14449         (iszero): Likewise.
14450         (pack_d): Likewise.
14451         (_fpadd_parts): Constify return type.
14452         (_fpmul_parts): Likewise.
14453         (_fpdiv_parts): Likewise.
14454
14455 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
14456
14457         PR c/36489
14458         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
14459         warn about overwriting initializer with side-effects or
14460         -Woverride-init if !IMPLICIT.
14461         (output_init_element): Likewise.  Pass IMPLICIT down to
14462         add_pending_init.
14463         (process_init_element): Add IMPLICIT argument.  Pass it down
14464         to output_init_element.
14465         (push_init_element, pop_init_level, set_designator): Adjust
14466         process_init_element callers.
14467         (set_nonincremental_init, set_nonincremental_init_from_string):
14468         Adjust add_pending_init callers.
14469         (output_pending_init_elements): Adjust output_init_element callers.
14470         * c-tree.h (process_init_element): Adjust prototype.
14471         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
14472         process_init_element callers.
14473
14474 \f
14475 Copyright (C) 2009 Free Software Foundation, Inc.
14476
14477 Copying and distribution of this file, with or without modification,
14478 are permitted in any medium without royalty provided the copyright
14479 notice and this notice are preserved.