OSDN Git Service

* tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
2
3         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
4         that have value exprs.
5
6 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
7
8         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
9         declarations for constants until...
10         (dw2_output_indirect_constant_1): ... this point.
11
12 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
13
14         PR target/10242
15         * arm.md (arm_addsi3): Don't try to split an add with an
16         eliminable register until after reload has completed.
17
18 2009-06-03  Ian Lance Taylor  <iant@google.com>
19
20         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
21         * genattrtab.c (write_length_unit_log): Likewise.
22         * genchecksum.c (dosum): Likewise.
23         * gengtype.c (write_rtx_next): Likewise.
24         (finish_root_table, write_roots): Likewise.
25         * gimple.c (gimple_ops_offset_): Likewise.
26         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
27         * config/arc/arc.c (arc_attribute_table): Likewise.
28         * config/arm/arm.c (arm_attribute_table): Likewise.
29         * config/avr/avr.c (avr_attribute_table): Likewise.
30         * config/crx/crx.c (crx_attribute_table): Likewise.
31         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
32         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
33         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
34         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
35         * config/sh/sh.c (sh_attribute_table): Likewise.
36         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
37         * config/spu/spu.c (spu_attribute_table): Likewise.
38         * config/v850/v850.c (v850_attribute_table): Likewise.
39
40         * config/alpha/alpha.c (vms_attribute_table): Make static.
41         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
42         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
43         * config/mips/mips.c (mips_attribute_table): Likewise.
44
45         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
46         $(SYSTEM_H).
47         (cc1-checksum.o): Likewise.
48
49 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
50
51         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
52
53 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
54
55         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
56         insn if it is changing sp.  Use gen_add3_insn instead of
57         conditionally gen_addsi3 and gen_adddi3.
58         (offset_below_red_zone_p): New static inline function.
59         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
60         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
61         * config/rs6000/ppc-asm.h: Include auto-host.h.
62         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
63         CFI_RESTORE): Define.
64         * config/rs6000/crtresxgpr.asm: Add unwind info.
65         * config/rs6000/crtresxfpr.asm: Likewise.
66         * config/rs6000/crtresgpr.asm: Likewise.
67         * config/rs6000/crtresfpr.asm: Likewise.
68         * config/rs6000/crtsavgpr.asm: Likewise.
69         * config/rs6000/crtsavfpr.asm: Likewise.
70
71         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
72         0 to second argument of DWARF2_FRAME_REG_OUT macros.
73
74 2009-06-03  Julian Brown  <julian@codesourcery.com>
75
76         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
77         words or less (including TImode) in core registers.
78
79 2009-06-03  Richard Guenther  <rguenther@suse.de>
80
81         PR middle-end/40328
82         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
83
84 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
85
86         * statistics.c (statistics_counter_event): Do not record event 
87         in pass dump if its number == -1.
88         (curr_statistics_hash): Add assert that we never get passes 
89         with static number == -1.
90
91 2009-06-03  Richard Guenther  <rguenther@suse.de>
92             Andrey Belevantsev  <abel@ispras.ru>
93
94         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
95         non-BLKmode arrays addressable.
96
97 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
98
99         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
100         * config/m68k/m68k.h: ... here.
101         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
102         m68k and fido.
103
104 2009-06-03  Martin Jambor  <mjambor@suse.cz>
105
106         PR tree-optimization/40323
107         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
108         assignment.
109
110 2009-06-03  Richard Guenther  <rguenther@suse.de>
111
112         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
113         consistently.
114
115 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
116
117         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
118         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
119         JUMP_TABLE_DATA_P where applicable.
120         * config/sh/sh.c: Ditto.
121         * config/sh/sh.h: Ditto.
122         * config/sh/sh.md: Ditto.
123         * config/sh/symbian.c: Ditto.
124
125 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
126
127         * config/i386/driver-i386.c (describe_cache): Optimize
128         concatenation of strings.  Use snprintf instead of sprintf.
129         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
130         target when not compiling with GCC.
131
132 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
133
134         * config/sh/sh.c: Revert last change.
135         (sh_expand_epilogue): Emit a blockage insn before the frame
136         pointer adjustment unconditionally.
137
138 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
139
140         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
141         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
142         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
143         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
144         to COLLECT_GCC_OPTIONS.
145
146 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
147
148         * collect2.c (target_system_root): New variable.
149         (main): Handle --sysroot=.
150         (ignore_library): Strip the sysroot from the library path.
151
152 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
153
154         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
155         (collect2.o): Depend on collect2-aix.h.
156         (collect2-aix.o): New rule.
157         * collect2-aix.h: New file.
158         * collect2-aix.c: Likewise.
159         * collect2.c: Include collect2-aix.h.  Don't undefine
160         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
161         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
162         Use TARGET_AIX_VERSION instead of _AIX51.
163         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
164         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
165         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
166         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
167         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
168
169 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
170
171         * collect2.c (ignore_library): Avoid premature post-increment
172         and null deference.
173
174 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
175
176         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
177         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
178         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
179         CROSS_DIRECTORY_STRUCTURE too.
180         (LINK_LIBG_SPEC): Likewise.
181         (LIB_SPEC): Add %R to sysroot paths.
182         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
183         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
184         * config/rs6000/aix51.h: As for aix43.h.
185         * config/rs6000/aix52.h: Likewise.
186         * config/rs6000/aix53.h: Likewise.
187         * config/rs6000/aix61.h: Likewise.
188         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
189         to the beginning of sysroot paths.
190
191 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
192
193         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
194         INSN_LISTs that are out of the REG_NOTE range.
195
196 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
197
198         * loop-unroll.c (struct iv_to_split): Add pointer to next.
199         (struct var_to_expand): Likewise.
200         (struct opt_info): Add head and tail for linked lists of the above.
201         (analyze_insn_to_expand_var): Initialize next.
202         (analyze_iv_to_split_insn): Likewise.
203         (analyze_insns_in_loop): Create linked lists.
204         (allocate_basic_variable): Simplify for use without hash table.
205         (insert_var_expansion_initialization): Likewise, make it type-safer.
206         (combine_var_copies_in_loop_exit): Likewise.
207         (apply_opt_in_copies): Walk lists rather than hash tables.
208         (release_var_copies): Simplified and inlined by hand into...
209         (free_opt_info): ... this function.
210
211 2009-06-02  Richard Guenther  <rguenther@suse.de>
212
213         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
214         for field decls.
215
216 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
217
218         * cfgexpand.c (gimple_expand_cfg): Discard the source location
219         only for builtins that are not overridden.
220
221 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
222
223         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
224         label string.
225
226 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
227
228         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
229
230 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
231
232         * combine.c (move_deaths): Compare LUIDs within the same BB only.
233
234 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
235
236         * common.opt (fdump-unnumbered-links): New.
237         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
238         * print-rtl.c (flag_dump_unnumbered_links): New.
239         (print_rtx): Test it.
240
241 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
242
243         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
244         push/pop multiple to 8-byte alignment.
245
246 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
247
248         * config/i386/i386.c (queued_cfa_restores): New static variable.
249         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
250         functions.
251         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
252         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
253         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
254         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
255         note unconditionally.
256         (ix86_emit_restore_regs_using_mov): Likewise.
257         (ix86_emit_restore_sse_regs_using_mov): Likewise.
258         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
259         it through to ix86_emit_restore_reg_using_pop.
260         (ix86_emit_leave): Add RED_OFFSET argument.  Call
261         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
262         instead of adding REG_CFA_OFFSET note unconditionally.
263         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
264         the above functions.  Call ix86_add_queued_cfa_restore_notes when
265         needed.
266
267         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
268         force output of the label even for dwarf2out_do_cfi_asm.
269         (add_fde_cfi): If -g2 and above and cfi might change CFA,
270         force creation of CFI label and chain DW_CFA_set_loc jumping to it
271         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
272         caller.
273         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
274         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
275         dwarf2out_cfi_label callers.
276         * tree.h (dwarf2out_cfi_label): Adjust prototype.
277         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
278         Adjust dwarf2out_cfi_label callers.
279         * config/vax/vax.c (vax_output_function_prologue): Likewise.
280
281         * config/i386/i386.h (struct machine_cfa_state,
282         struct machine_function): Guard with ifndef USED_FOR_TARGET
283         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
284
285         PR other/40024
286         * emutls.c (__emutls_get_address): Change arr->size to mean number
287         of allocated arr->data entries instead of # of slots + 1.
288
289         PR middle-end/40316
290         * recog.c (peep2_reinit_state): New function.
291         (peephole2_init_state): Use it at the end of a basic block and also
292         when seeing a RTX_FRAME_RELATED_P insn.
293
294 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
295
296         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
297         fixuns_truncrfdi2): New.
298         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
299         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
300         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
301         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
302         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
303         *recip_approx): Remove.
304         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
305         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
306         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
307         move to div.md.
308         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
309         setf_exp_rf): New.
310
311 2009-06-01  Ian Lance Taylor  <iant@google.com>
312
313         * attribs.c (register_attribute): Use CONST_CAST.
314         * collect2.c (main): Use CONST_CAST2.
315         (scan_prog_file): Likewise.
316         * gcc.c (process_command, main): Likewise.
317         * toplev.c (toplev_main): Likewise.
318
319         * c-typeck.c (handle_warn_cast_qual): New static function,
320         partially broken out of build_c_cast.
321         (build_c_cast): Call handle_warn_cast_qual.
322         * doc/invoke.texi (Warning Options): Document new effect of
323         -Wcast-qual.
324
325 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
326
327         * diagnostic.c (diagnostic_build_prefix): Always print columns.
328         (diagnostic_report_current_module): Print columns.
329         * common.opt (flag_show_column): Enable by default.
330
331 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
332
333         * alias.c (find_base_term): Check for NULL term before returning.
334
335 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
336
337         Revert due to PR40320:
338         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
339         * calls.c (emit_library_call_value_1): Don't force_operand for move
340         and push insns.
341
342 2009-06-01  Olivier Hainque  <hainque@adacore.com>
343             Eric Botcazou  <ebotcazou@adacore.com>
344
345         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
346         to be processed as a bitfield for constructor output purposes.
347         * output.h (initializer_constant_valid_for_bitfield_p): Declare
348         new function.
349         * varasm.c (oc_local_state): New type, output_constructor
350         local state to support communication with helpers.
351         (oc_outer_state): New type, output_constructor outer state of
352         relevance in recursive calls.
353         (output_constructor_array_range): New output_constructor helper,
354         extracted code for an array range element.
355         (output_constructor_regular_field): New output_constructor helper,
356         extracted code for an element that is not a bitfield.
357         (output_constructor_bitfield): New output_constructor helper,
358         extracted code for a bitfield element.  Accept an OUTER state
359         argument for recursive processing.  Recurse on record or array
360         CONSTRUCTOR values, possibly past noop conversions.
361         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
362         VALUE is a valid constant-valued expression for use in a static
363         bit-field initializer.
364         (output_constructor): Rework to use helpers.  Accept and honor an
365         OUTER state argument for recursive calls.  Return total size.  Be
366         prepared for nested constructors initializing bitfields.
367         (output_constant): Feed OUTER in calls to output_constructor.
368
369 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
370
371         * calls.c (emit_library_call_value_1): Don't force_operand for move
372         and push insns.
373
374 2009-06-01  Nick Clifton  <nickc@redhat.com>
375
376         * doc/invoke.texi (IA-64 Options): Fix typo.
377
378 2009-06-01  Ira Rosen  <irar@il.ibm.com>
379
380         PR tree-optimization/39129
381         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
382         printed message.
383         (vect_do_peeling_for_loop_bound): Use 
384         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
385         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
386         (vect_loop_versioning): Likewise.
387         (vect_create_cond_for_alias_checks): Fix indentation.
388         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
389         macros.
390         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
391         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
392         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
393         "control flow in loop".
394         (vect_estimate_min_profitable_iters): Use 
395         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
396         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
397         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
398         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
399         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
400         statement belongs to a group of strided accesses with the exact code 
401         check.
402         (vectorizable_load): Likewise.
403         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
404         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
405
406 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
407
408         * config/freebsd-stdint.h: New file.
409         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
410         Add freebsd-stdint.h to tm_file.
411
412 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
413
414         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
415         (thumb2_extendhidi2): Likewise.
416
417 2009-05-31  Ian Lance Taylor  <iant@google.com>
418
419         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
420
421 2009-05-31  Ian Lance Taylor  <iant@google.com>
422
423         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
424         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
425         (ipa-reference.o): Depend upon gt-ipa-reference.h.
426
427 2009-05-31  Jason Merrill  <jason@redhat.com>
428
429         * tree-pretty-print.c (print_call_name): Take the callee, not the
430         call itself.  Make non-static.  Use dump_function_name for functions.
431         (dump_generic_node): Adjust.
432         * diagnostic.h: Declare print_call_name.
433         * gimple-pretty-print.c (dump_gimple_call): Use it.
434
435 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
436
437         * config/sh/sh.md (ashldi3_std): New define_expand.
438         (ashldi3): Use it.
439
440 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
441
442         PR target/40313
443         * config/sh/sh.c: Include debug.h.
444         (sh_expand_epilogue): Emit a blockage insn before the frame
445         pointer adjustment also when dwarf2out_do_frame returns true.
446
447 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
448
449         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
450         (thumb2_extendqidi2): New pattern.
451
452 2009-05-31  Ira Rosen  <irar@il.ibm.com>
453
454         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
455         mark phis for renaming.
456         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
457         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
458         Call mark_sym_for_renaming.
459         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
460         * tree-vect-loop.c (vect_transform_loop): Remove
461         vect_memsyms_to_rename initialization and a call to
462         mark_set_for_renaming.
463
464 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
465
466         PR middle-end/40304
467         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
468         frame related even if !set_cfa && style < 0.
469
470 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
471
472         * config/i386/mingw-tls.c: New file.
473         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
474         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
475         defining _WIN32 but not __CYGWIN__.
476
477 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
478
479         * configure.ac: Add MPC support.
480         
481         * config.in, configure: Regenerate.     
482
483 2009-05-29  Richard Henderson  <rth@redhat.com>
484
485         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
486         NOTE_INSN_BASIC_BLOCK.
487         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
488         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
489         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
490         to be deleted.
491         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
492         add in_use field.
493         (add_cfi): Disable check redefining cfa away from drap.
494         (lookup_cfa_1): Add remember argument; handle remember/restore.
495         (lookup_cfa): Pass remember argument.
496         (cfa_remember): New.
497         (compute_barrier_args_size_1): Remove sibcall check.
498         (dwarf2out_frame_debug_def_cfa): New.
499         (dwarf2out_frame_debug_adjust_cfa): New.
500         (dwarf2out_frame_debug_cfa_offset): New.
501         (dwarf2out_frame_debug_cfa_register): New.
502         (dwarf2out_frame_debug_cfa_restore): New.
503         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
504         (dwarf2out_begin_epilogue): New.
505         (dwarf2out_frame_debug_restore_state): New.
506         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
507         DW_CFA_restore_state.
508         (output_cfi_directive): Likewise.
509         (convert_cfa_to_fb_loc_list): Likewise.
510         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
511         * dwarf2out.h: Update.
512         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
513         (copy_insn_1): Early out for null.
514         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
515         and dwarf2out_frame_debug_restore_state.
516         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
517         (prologue_insn_hash, epilogue_insn_hash): New.
518         (free_after_compilation): Adjust freeing accordingly.
519         (record_insns): Create hash table if needed; push insns into
520         hash instead of array.
521         (maybe_copy_epilogue_insn): New.
522         (contains): Search hash table instead of array.
523         (sibcall_epilogue_contains): Remove.
524         (thread_prologue_and_epilogue_insns): Split eh_return insns
525         and mark them as epilogues.
526         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
527         scanning in terms of basic blocks.
528         * insn-notes.def (CFA_RESTORE_STATE): New.
529         * jump.c (returnjump_p_1): Accept EH_RETURN.
530         (eh_returnjump_p_1, eh_returnjump_p): New.
531         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
532         CFA_REGISTER, CFA_RESTORE): New.
533         * rtl.def (EH_RETURN): New.
534         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
535
536         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
537         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
538
539         * config/i386/i386.c (gen_push): Update cfa state.
540         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
541         add a CFA_ADJUST_CFA note.
542         (ix86_dwarf_handle_frame_unspec): Remove.
543         (ix86_expand_prologue): Update cfa state.
544         (ix86_emit_restore_reg_using_pop): New.
545         (ix86_emit_restore_regs_using_pop): New.
546         (ix86_emit_leave): New.
547         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
548         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
549         * config/i386/i386.h (struct machine_cfa_state): New.
550         (ix86_cfa_state): New.
551         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
552         (eh_return_internal): Merge from eh_return_<mode>,
553         use eh_return rtx, split w/ epilogue.
554
555 2009-05-29  Ian Lance Taylor  <iant@google.com>
556
557         * builtins.c (validate_gimple_arglist): Don't use va_arg with
558         enum type.
559         * calls.c (emit_library_call_value_1): Likewise.
560
561         * c-typeck.c (c_build_va_arg): New function.
562         * c-tree.h (c_build_va_arg): Declare.
563         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
564         instead of build_va_arg.
565
566 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
567
568         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
569         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
570         (ptr_difference_cost): Use affine combinations to compute it.
571         (difference_cost): Likewise.
572         (get_computation_cost_at): Compute more accurate cost for addresses
573         if the ratio is a multiplier allowed in addresses.
574         For non-addresses, consider that an additional offset or symbol is
575         added only once.
576
577 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
578
579         * config/i386/i386.c (ix86_decompose_address): Avoid useless
580         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
581
582         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
583         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
584         (prefix_rex): For UNIT_MMX don't imply the prefix by default
585         if MODE_DI.
586         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
587         to 1 for TYPE_SSE{IADD1,CVT1}.
588         (prefix_vex_imm8): Removed.
589         (length_vex): Only pass 1 as second argument to
590         ix86_attr_length_vex_default if prefix_extra is 0.
591         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
592         (length): For prefix vex computation use length_immediate
593         attribute instead of prefix_vex_imm8.
594         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
595         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
596         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
597         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
598         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
599         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
600         a space in between the operands.
601         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
602         if one operand is 0xff and the other one si, di, bp or sp.
603         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
604         other one si, di, bp or sp.
605         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
606         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
607         type and mode attributes.
608         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
609         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
610         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
611         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
612         prefix_data16 attribute iff MODE_DF.
613         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
614         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
615         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
616         constm128_operand in length_immediate computation.
617         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
618         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
619         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
620         length_immediate attribute to 1.
621         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
622         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
623         for certain alternatives.
624         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
625         prefix_data16 attribute if MODE_V1DF.
626         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
627         length_immediate to 1.
628         (set_got_rex64, set_rip_rex64): Remove length attribute, set
629         length_address to 4, set mode attribute to MODE_DI.
630         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
631         (fxam<mode>2_i387): Set length attribute to 4.
632         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
633         *prefetch_3dnow_rex): Override length_address attribute.
634         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
635         attributes.
636         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
637         (constm128_operand): Removed.
638         * config/i386/i386.c (memory_address_length): For
639         disp && !index && !base in 64-bit mode account for SIB byte if
640         print_operand_address can't optimize disp32 into disp32(%rip)
641         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
642         for fs: or gs: segment.
643         (ix86_attr_length_immediate_default): When checking if shortform
644         is possible, truncate immediate to the length of the non-shortened
645         immediate.
646         (ix86_attr_length_address_default): Ignore MEM_P operands
647         with X constraint.
648         (ix86_attr_length_vex_default): Only check for DImode on
649         GENERAL_REG_P operands.
650         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
651         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
652         (sse_cvttps2pi): Clear prefix_rep attribute.
653         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
654         attribute.
655         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
656         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
657         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
658         iff operand 2 is const_int_operand.
659         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
660         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
661         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
662         instead of vex.
663         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
664         prefix_data16.
665         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
666         prefix_data16 attribute for movlpd and movhpd instructions.
667         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
668         length_immediate for shufpd instruction.
669         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
670         (avx_cmpp<avxmodesuffixf2c><mode>3,
671         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
672         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
673         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
674         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
675         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
676         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
677         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
678         prefix_data16 attribute for the first alternative to 1.
679         (*avx_loadlps): Override length_immediate for the first alternative.
680         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
681         attributes for second alternative.
682         (*vec_concatv2sf_sse4_1): Override length_immediate and
683         prefix_data16 attributes for second alternative.
684         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
685         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
686         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
687         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
688         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
689         prefix_data16 and length_immediate to 1.
690         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
691         to 1.
692         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
693         prefix_extra attribute for variants that don't have 0f prefix alone.
694         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
695         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
696         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
697         *sse4_1_pextrd): Set length_immediate to 1.
698         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
699         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
700         to 1.
701         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
702         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
703         length_immediate to 1 for second alternative.
704         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
705         prefix_extra and length_immediate attributes for the first
706         alternative.
707         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
708         first alternative.
709         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
710         to 1 for the first and third alternative.
711         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
712         alternative.
713         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
714         attribute.
715         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
716         attribute to 0.
717         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
718         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
719         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
720         *avx_psign<mode>3): Set prefix_extra attribute to 1.
721         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
722         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
723         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
724         ssse3_psign<mode>3): Override prefix_rex attribute.
725         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
726         (ssse3_palignrti): Override length_immediate to 1.
727         (ssse3_palignrdi): Override length_immediate to 1, override
728         prefix_rex attribute.
729         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
730         (sse4a_extrqi): Override length_immediate to 2.
731         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
732         (sse4a_insertq): Override prefix_data16 to 0.
733         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
734         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
735         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
736         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
737         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
738         and length_immediate to 1.
739         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
740         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
741         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
742         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
743         and length_immediate to 1.
744         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
745         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
746         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
747         avx_ptest256): Override prefix_extra to 1.
748         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
749         Override prefix_data16 and length_immediate to 1.
750         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
751         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
752         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
753         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
754         prefix_data16 to 0 and prefix_extra to 2.
755         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
756         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
757         attribute.
758         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
759         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
760         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
761         and prefix_extra to 2.
762         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
763         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
764         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
765         avx_vpermilvar<mode>3,
766         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
767         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
768         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
769         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
770         Override prefix_extra to 1.
771         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
772         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
773         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
774         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
775         prefix_extra and length_immediate to 1.
776         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
777         modrm to 0.
778         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
779         to 1 for the first alternative.
780         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
781         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
782         cases.
783         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
784         *movv2sf_internal_avx, *movv2sf_internal): Override
785         prefix_rep attribute for certain alternatives.
786         (*mov<mode>_internal): Override prefix_rep or prefix_data16
787         attributes for certain alternatives.
788         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
789         attributes for certain alternatives.
790         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
791         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
792         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
793         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
794         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
795         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
796         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
797         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
798         length_immediate to 1 if operand 2 is const_int_operand.
799         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
800         *vec_extractv2si_1): Set length_immediate attribute to 1.
801         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
802         using old 3DNOW insn rather than SSE/3DNOW_A.
803         (mmx_emms, mmx_femms): Clear modrm attribute.
804
805 2009-05-29  Martin Jambor  <mjambor@suse.cz>
806
807         * tree-sra.c:  New implementation of SRA.
808
809         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
810         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
811         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
812         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
813         (SRA_MAX_STRUCTURE_COUNT): Removed.
814         (SRA_FIELD_STRUCTURE_RATIO): Removed.
815         * doc/invoke.texi (sra-max-structure-size): Removed.
816         (sra-field-structure-ratio): Removed.
817
818 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
819
820         PR middle-end/40291
821         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
822         before expansion.
823
824 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
825
826         PR rtl-optimization/40101
827         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
828         seqno.  Adjust comment.
829         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
830         inserting bookkeeping before a jump, the jump is not scheduled.
831         When no positive seqno found, provide a value.  Add comment.
832
833 2009-05-29  Richard Guenther  <rguenther@suse.de>
834
835         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
836         short-cutting on the first component.
837
838 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
839
840         PR middle-end/39958
841         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
842         for trees other than decls/types.
843
844 2009-05-29  Richard Guenther  <rguenther@suse.de>
845
846         * tree-ssa-operands.c (get_expr_operands): Do not handle
847         INDIRECT_REFs in the handled-component case.  Remove
848         unused get_ref_base_and_extent case.
849         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
850         tree_low_cst and host_integerp where possible.
851         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
852         codes for equivalence.
853         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
854
855 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
856
857         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
858         to tmake_file for i[34567]86-*-cygwin*. 
859
860 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
861
862         PR target/40017
863         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
864         (altivec_categorize_keyword, init_vector_keywords,
865         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
866         similar to bool.
867
868 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
869
870         * tree.c (handle_dll_attribute): Check if node is
871         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
872
873 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
874
875         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
876         component.
877         (thumb2_zero_extendqidi2): Likewise.
878
879 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
880
881         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
882         instead of gen_movrt.
883         * config/sh/sh.md (movrt): Remove.
884
885 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
886
887         * doc/invoke.texi (IA-64 Options):
888         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
889         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
890         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
891         -msched-prefer-non-control-spec-insns,
892         -msched-stop-bits-after-every-cycle,
893         -msched-count-spec-in-critical-path,
894         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
895         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
896         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
897         and -msched-spec-verbose.
898
899 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
900
901         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
902         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
903         error if used.
904         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
905
906 2009-05-28  Richard Guenther  <rguenther@suse.de>
907
908         * tree-ssa-alias.c (ao_ref_init): New function.
909         (ao_ref_base): Likewise.
910         (ao_ref_base_alias_set): Likewise.
911         (ao_ref_alias_set): Likewise.
912         (refs_may_alias_p_1): Change signature.
913         (refs_may_alias_p): Adjust.
914         (refs_anti_dependent_p): Likewise.
915         (refs_output_dependent_p): Likewise.
916         (call_may_clobber_ref_p_1): Change signature.
917         (call_may_clobber_ref_p): Adjust.
918         (stmt_may_clobber_ref_p_1): New function split out from ...
919         (stmt_may_clobber_ref_p): ... here.
920         (maybe_skip_until): Adjust signature.
921         (get_continuation_for_phi): Likewise.
922         (walk_non_aliased_vuses): Likewise.
923         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
924         (ao_ref_init): Declare.
925         (ao_ref_base): Likewise.
926         (ao_ref_alias_set): Likewise.
927         (stmt_may_clobber_ref_p_1): Likewise.
928         (walk_non_aliased_vuses): Adjust.
929         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
930         (get_ref_from_reference_ops): remove.
931         (vn_reference_lookup_2): Adjust signature.
932         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
933         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
934         (vn_reference_lookup): Adjust.
935         (vn_reference_insert): Likewise.
936         (vn_reference_insert_pieces): Adjust signature.
937         (visit_reference_op_call): Adjust.
938         * tree-ssa-pre.c (get_expr_type): Simplify.
939         (phi_translate_1): Adjust.
940         (compute_avail): Likewise.
941         (translate_vuse_through_block): Do not re-build trees.
942         (value_dies_in_block_x): Likewise.
943         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
944         fields.
945         (vn_reference_lookup_pieces): Adjust declaration.
946         (vn_reference_insert_pieces): Likewise.
947
948 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
949
950         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
951         with checking disabled.
952
953 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
954
955         PR target/37216
956
957         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
958         macro definition for support of three-operand format aligned
959         .comm directive in assembler on cygwin/pe/mingw target OS.
960         * configure:  Regenerate.
961         * config.h:  Regenerate.
962
963         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
964         aligned form of .comm directive if -mpe-aligned-commons is in effect.
965         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
966
967         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
968         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
969
970 2009-05-28  Ira Rosen  <irar@il.ibm.com>
971
972         PR tree-optimization/40254
973         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
974         in analysis of basic blocks.
975
976 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
977
978         PR middle-end/33699
979         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
980         * target-def.h (TARGET_CONST_ANCHOR): New macro.
981         (TARGET_INITIALIZER): Use it.
982         * cse.c (CHEAPER): Move it up to the other macros.
983         (insert): Rename this ...
984         (insert_with_costs): ... to this.  Add cost parameters.  Update
985         function comment.
986         (insert): New function.  Call insert_with_costs.
987         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
988         find_reg_offset_for_const, try_const_anchors): New functions.
989         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
990         when using a const-anchor.  Call insert_const_anchors.
991         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
992         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
993
994 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
995
996         * tree-inline.c (remap_decls): Enable nonlocalized variables
997         when not optimizing.
998
999 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1000
1001         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
1002         Simplify other tests involving optimize.
1003
1004 2009-05-27  Tom Tromey  <tromey@redhat.com>
1005
1006         * unwind-dw2.c (_Unwind_DebugHook): New function.
1007         (uw_install_context): Call _Unwind_DebugHook.
1008
1009 2009-05-27  Tom Tromey  <tromey@redhat.com>
1010
1011         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1012
1013 2009-05-27  Ian Lance Taylor  <iant@google.com>
1014
1015         * Makefile.in (LINKER, LINKER_FLAGS): Define.
1016         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1017         (ALL_LINKERFLAGS): Define.
1018         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1019         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1020         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1021         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1022         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1023         $(LINKER_FOR_BUILD).
1024         (build/gcov-iov$(build_exeext)): Likewise.
1025
1026 2009-05-27  Julian Brown  <julian@codesourcery.com>
1027
1028         * gcse.c (target.h): Include.
1029         (can_assign_to_reg_without_clobbers_p): Check that the target allows
1030         copy of argument to a pseudo register.
1031
1032 2009-05-27  Diego Novillo  <dnovillo@google.com>
1033
1034         * tree-ssa-live.c (dump_scope_block): Document arguments.
1035         (dump_scope_blocks): Document.
1036         (debug_scope_blocks): New.
1037         * tree-flow.h (debug_scope_blocks): Declare.
1038
1039 2009-05-21  Denis Chertykov  <denisc@overta.ru>
1040
1041         * doc/contrib.texi (Contributors): Add myself to the list.
1042
1043 2009-05-27  Olivier Hainque  <hainque@adacore.com>
1044
1045         * expr.c (target_align): New function.  Alignment the TARGET of an
1046         assignment may be assume to have.
1047         (highest_pow2_factor_for_target): Use it instead of relying on
1048         immediate tree attributes of TARGET, not necessarily honored when
1049         intermediate bitfields are involved.
1050         
1051 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1052
1053         PR target/40266
1054         * config/i386/driver-i386.c (host_detect_local_cpu): Support
1055         AVX, SSE4, AES, PCLMUL and POPCNT.
1056
1057 2009-05-27  Diego Novillo  <dnovillo@google.com>
1058
1059         * tree-pretty-print.c (dump_location): New.
1060         (dump_generic_node): Call it.
1061         Factor code to handle BLOCK nodes ...
1062         (dump_block_node): ... here.
1063
1064 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
1065
1066         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
1067         with it.
1068         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
1069         included.
1070         * gcc-plugin.h: Include config.h and system.h.
1071         (IN_GCC): Define if not defined.
1072
1073 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
1074
1075         PR middle-end/40249
1076         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
1077         with -fno-inline.
1078
1079 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
1080
1081         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
1082         applicable.
1083         * config/m32r/m32r.h: Ditto.
1084         * config/m32r/m32r.md: Ditto.
1085         * config/m32r/predicates.md: Ditto.
1086
1087 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
1088
1089         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
1090
1091 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
1092
1093         * doc/plugins.texi
1094         (Loading plugins): typo.
1095         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
1096         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1097         (Interacting with the GCC Garbage Collector): Added new section.
1098         (Giving information about a plugin): Added new section for
1099         PLUGIN_INFO.
1100         * ggc.h (ggc_register_root_tab): Added declaration.
1101         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
1102         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
1103         (register_callback): Improved comment in declaration.
1104         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
1105         (extra_root_vec) Added static variable for dynamic roots registration.
1106         (ggc_register_root_tab) Added new routine.
1107         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
1108         PLUGIN_GGC_MARKING event.
1109         * ggc-zone.c: Include plugin.h.
1110         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1111         * ggc-page.c: Include plugin.h.
1112         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1113         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1114         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1115         (register_callback): check lack of callbacks for
1116         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1117         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1118         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1119         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1120         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1121         dependency on plugin.h.
1122         (plugin.o): Added dependency on ggc.h...
1123
1124 2009-05-26  Richard Guenther  <rguenther@suse.de>
1125
1126         PR middle-end/40248
1127         Revert
1128         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1129         with mismatched comparison modes.
1130
1131         * expr.c (expand_expr_real_1): Expand the operand of a
1132         VIEW_CONVERT_EXPR in its natural mode.
1133
1134 2009-05-26  Ian Lance Taylor  <iant@google.com>
1135
1136         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1137         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1138         (ALL_COMPILERFLAGS): Define.
1139         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1140         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1141         (collect2$(exeext), collect2.o): Likewise.
1142         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1143         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1144         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1145         (libbackend.o, intl.o, cppdefault.o): Likewise.
1146         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1147         (build/%.o): Use $(COMPILER_FOR_BUILD).
1148         (build/gen%$(build_exeext)): Likewise.
1149         (build/gcov-iov$(build_exeext)): LIkewise.
1150         * config/t-darwin (darwin.o): Use $(COMPILER).
1151         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1152         * config/t-sol2 (sol2-c.o): Likewise.
1153         (sol2.o): Likewise.
1154         * config/t-vxworks (vxworks.o): Likewise.
1155         * config/x-darwin (host-darwin.o): Likewise.
1156         * config/x-hpux (host-hpux.o): Likewise.
1157         * config/x-linux (host-linux.o): Likewise.
1158         * config/x-solaris (host-solaris.o): Likewise.
1159         * config/alpha/x-alpha (driver-alpha.o): Likewise.
1160         * config/arm/t-arm (arm-c.o): Likewise.
1161         * config/arm/t-pe (pe.o): Likewise.
1162         * config/arm/t-wince-pe (pe.o): Likewise.
1163         * config/i386/t-cygming (winnt.o): Likewise.
1164         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1165         * config/i386/t-cygwin (cygwin1.o): Likewise.
1166         (cygwin2.o): Likewise.
1167         * config/i386/t-i386 (i386-c.o): Likewise.
1168         * config/i386/t-interix (winnt.o): Likewise.
1169         * config/i386/t-netware (netware.o): Likewise.
1170         * config/i386/t-nwld (nwld.o): Likewise.
1171         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1172         * config/i386/x-i386 (driver-i386.o): Likewise.
1173         * config/i386/x-cygwin (host-cygwin.o): Likewise.
1174         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1175         * config/ia64/t-ia64 (ia64-c.o): Likewise.
1176         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1177         * config/mips/x-native (driver-native.o): Likewise.
1178         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1179         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1180         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1181         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1182         * config/score/t-score-elf (score7.o): Likewise.
1183         (score3.o): Likewise.
1184         * config/sh/t-sh (sh-c.o): Likewise.
1185         * config/sh/t-symbian (sh-c.o): Likewise.
1186         (symbian.o): Likewise.
1187         * config/spu/t-spu-elf (spu-c.o): Likewise.
1188         * config/v850/t-v850 (v850-c.o): Likewise.
1189         * config/v850/t-v850e (v850-c.o): Likewise.
1190
1191 2009-05-26  Richard Guenther  <rguenther@suse.de>
1192
1193         PR tree-optimization/40122
1194         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1195         VECTOR_CSTs if possible.
1196         (fold_gimple_assign): Likewise.
1197
1198 2009-05-26  Richard Guenther  <rguenther@suse.de>
1199
1200         PR middle-end/40252
1201         * fold-const.c (fold_binary): Use the correct types for building
1202         rotates.
1203
1204 2009-05-26  Richard Guenther  <rguenther@suse.de>
1205
1206         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1207         redundant calls to merge_alias_info.
1208         (bump_vector_ptr): Likewise.
1209         * tree-ssa-copy.c (merge_alias_info): Remove.
1210         (replace_exp_1): Remove call to merge_alias_info.
1211         (propagate_tree_value): Likewise.
1212         (fini_copy_prop): Propagate points-to info.
1213         * tree-flow.h (merge_alias_info): Remove.
1214
1215 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1216
1217         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1218
1219 2009-05-25  Jan Hubicka  <jh@suse.cz>
1220
1221         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1222         * cgraph.h (struct inline_summary): New filed self_wize,
1223         size_inlining_benefit, self_time and time_inlining_benefit.
1224         (struct cgraph_global_info): Replace insns by time ans size fields.
1225         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1226         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1227         (ipcp_update_callgraph): Do not touch function bodies.
1228         * ipa-inline.c: Include except.h
1229         (MAX_TIME): New constant.
1230         (overall_insns): Remove.
1231         (leaf_node_p): New.
1232         (overall_size, max_benefit): New static variables.
1233         (cgraph_estimate_time_after_inlining): New function.
1234         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1235         (cgraph_clone_inlined_nodes): Update size.
1236         (cgraph_mark_inline_edge): Update size.
1237         (cgraph_estimate_growth): Use size info.
1238         (cgraph_check_inline_limits): Check size.
1239         (cgraph_default_inline_p): Likewise.
1240         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1241         (cgraph_decide_recursive_inlining): Check size.
1242         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1243         and times.
1244         (cgraph_decide_inlining): Likewise.
1245         (cgraph_decide_inlining_incrementally): Likewise; honor
1246         PARAM_EARLY_INLINING_INSNS.
1247         (likely_eliminated_by_inlining_p): New predicate.
1248         (estimate_function_body_sizes): New function.
1249         (compute_inline_parameters): Use it.
1250         * except.c (must_not_throw_labels): New function.
1251         * except.h (must_not_throw_labels): Declare.
1252         * tree-inline.c (init_inline_once): Kill inlining_weigths
1253         * tree-ssa-structalias.c: Avoid uninitialized warning.
1254         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1255         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1256         (PARAM_INLINE_CALL_COST): Remove.
1257         (PARAM_EARLY_INLINING_INSNS): New.
1258
1259 2009-05-25  Richard Guenther  <rguenther@suse.de>
1260
1261         PR tree-optimization/36327
1262         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1263         callback for reference translation or lookup at the point of may-defs.
1264         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1265         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1266         for union COMPONENT_REFs.
1267         (vn_reference_lookup_3): New callback.  Lookup from memset
1268         and CONSTRUCTOR assignment, translate through struct copies.
1269         (vn_reference_lookup_pieces): Make sure to not free the
1270         passed operands array.  Adjust walk_non_aliased_vuses call.
1271         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1272         make sure we do not leak memory.
1273
1274 2009-05-25  Richard Guenther  <rguenther@suse.de>
1275
1276         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1277         * tree-inline.c (expand_call_inline): Reset the escaped and
1278         callused solutions.
1279         * tree-ssa-structalias.c (pass_build_ealias): New.
1280         * tree-pass.h (pass_build_ealias): Declare.
1281         * passes.c (init_optimization_passes): Add PTA during 
1282         early optimizations.
1283         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1284         and CALLUSED solutions.
1285         (dump_points_to_solution): New function, split out from ...
1286         (dump_points_to_info_for): ... here.
1287         * tree-parloops.c (parallelize_loops): Reset the escaped and
1288         callused solutions.
1289
1290 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1291
1292         PR bootstrap/40027
1293         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1294         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1295
1296 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1297
1298         PR tree-optimization/40238
1299         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1300         statements after basic block's labels.
1301         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1302         to free the allocated memory.
1303
1304 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1305
1306         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1307         return address with a USE.
1308
1309 2009-05-24  Richard Guenther  <rguenther@suse.de>
1310
1311         PR middle-end/40233
1312         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1313         array type from the main variant of the inner type.
1314
1315 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1316
1317         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1318         definition to bool (from int) to un-break build.
1319         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1320
1321 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1322
1323         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1324         discard_stmt_changes): Delete.
1325         * tree-ssa-operands.c (scb_stack): Delete.
1326         (init_ssa_operands): Do not initialize it.
1327         (fini_ssa_operands): Do not free it.
1328         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1329
1330         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1331         update_stmt, remove the others.  Fix comments.
1332         * tree-dfa.c (optimize_stack_restore): Likewise.
1333         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1334         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1335         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1336         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1337         Likewise.
1338         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1339         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1340         (dom_opt_finalize_block): Likewise, adjusting access to
1341         stmts_to_rescan.
1342         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1343         (stmts_to_rescan): Change item type to gimple.
1344         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1345
1346 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1347
1348         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1349         * tree-pass.h (pass_slp_vectorize): New pass.
1350         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1351         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1352         * tree-vectorizer.c (timevar.h): Include.
1353         (user_vect_verbosity_level): Declare.
1354         (vect_location): Fix comment.
1355         (vect_set_verbosity_level): Update user_vect_verbosity_level
1356         instead of vect_verbosity_level.
1357         (vect_set_dump_settings): Add an argument. Ignore user defined
1358         verbosity if dump flags require higher level of verbosity. Print to
1359         stderr only for loop vectorization.
1360         (vectorize_loops): Update call to vect_set_dump_settings.
1361         (execute_vect_slp): New function.
1362         (gate_vect_slp): Likewise.
1363         (struct gimple_opt_pass pass_slp_vectorize): New.
1364         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1365         access its members.
1366         (vec_info_for_bb): New function.
1367         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1368         (VECTORIZATION_ENABLED): New macro.
1369         (SLP_ENABLED, SLP_DISABLED): Likewise.
1370         (vect_is_simple_use): Add bb_vec_info argument.
1371         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1372         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1373         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1374         vect_schedule_slp, vect_analyze_slp): Likewise.
1375         (vect_analyze_stmt): Add slp_tree argument.
1376         (find_bb_location): Declare.
1377         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1378         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1379         (vect_analyze_loop_operations, vect_analyze_loop,
1380         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1381         vect_finalize_reduction, vectorizable_reduction,
1382         vectorizable_live_operation, vect_transform_loop): Likewise.
1383         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1384         skip evolution analysis if analyzing a basic block.
1385         (dr_analyze_indices): Likewise.
1386         (initialize_data_dependence_relation): Skip the test whether the
1387         object is invariant for basic blocks.
1388         (compute_all_dependences): Skip dependence analysis for data
1389         references in basic blocks.
1390         (find_data_references_in_stmt): Don't fail in case of invariant
1391         access in basic block.
1392         (find_data_references_in_bb): New function.
1393         (find_data_references_in_loop): Move code to
1394         find_data_references_in_bb and add a call to it.
1395         (compute_data_dependences_for_bb): New function.
1396         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1397         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1398         that STEP is 0.
1399         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1400         unknown dependence in basic block and fail in case of dependence in
1401         basic block.
1402         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1403         dependence instances from either loop or basic block vectorization
1404         info.
1405         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1406         before calling nested_in_vect_loop_p.
1407         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1408         dependence instances from either loop or basic block vectorization
1409         info.
1410         (vect_verify_datarefs_alignment): Likewise.
1411         (vect_enhance_data_refs_alignment): Adjust function calls.
1412         (vect_analyze_data_refs_alignment): Likewise.
1413         (vect_analyze_group_access): Fix printing. Skip different checks if
1414         DR_STEP is 0. Keep strided stores either in loop or basic block
1415         vectorization data structure. Fix indentation.
1416         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1417         basic blocks.
1418         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1419         dependence instances from either loop or basic block vectorization
1420         info.
1421         (vect_analyze_data_refs): Update comment. Call
1422         compute_data_dependences_for_bb to analyze basic blocks.
1423         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1424         case of loop vectorization. In case of basic block vectorization use
1425         data-ref itself as a base.
1426         (vect_create_data_ref_ptr): In case of basic block vectorization:
1427         don't advance the pointer, add new statements before the current
1428         statement.  Adjust function calls.
1429         (vect_supportable_dr_alignment): Support only aligned accesses in
1430         basic block vectorization.
1431         * common.opt (ftree-slp-vectorize): New flag.
1432         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1433         (vect_pattern_recog_1): Likewise.
1434         * tree-vect-stmts.c (process_use): Likewise.
1435         (vect_init_vector): Add new statements in the beginning of the basic
1436         block in case of basic block SLP.
1437         (vect_get_vec_def_for_operand): Adjust function calls.
1438         (vect_finish_stmt_generation): Likewise.
1439         (vectorizable_call): Add assert that it is loop vectorization, adjust
1440         function calls.
1441         (vectorizable_conversion, vectorizable_assignment): Likewise.
1442         (vectorizable_operation): In case of basic block SLP, take
1443         vectorization factor from statement's type and skip the relevance
1444         check. Adjust function calls.
1445         (vectorizable_type_demotion): Add assert that it is loop
1446         vectorization, adjust function calls.
1447         (vectorizable_type_promotion): Likewise.
1448         (vectorizable_store): Check for outer loop only in case of loop
1449         vectorization. Adjust function calls. For basic blocks, skip the
1450         relevance check and don't advance pointers.
1451         (vectorizable_load): Likewise.
1452         (vectorizable_condition): Add assert that it is loop vectorization,
1453         adjust function calls.
1454         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1455         that it is not reduction, get vector type, call only supported
1456         functions, skip loop specific parts.
1457         (vect_transform_stmt): Check for outer loop only in case of loop
1458         vectorization.
1459         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1460         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1461         for external definition.
1462         * passes.c (pass_slp_vectorize): New pass.
1463         * tree-vect-slp.c (find_bb_location): New function.
1464         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1465         check for patterns only in loops.
1466         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1467         case of multiple types in basic block SLP.
1468         (vect_mark_slp_stmts_relevant): New function.
1469         (vect_supported_load_permutation_p): Fix comment.
1470         (vect_analyze_slp_instance): Add argument. In case of basic block
1471         SLP, take vectorization factor from statement's type, check that
1472         unrolling factor is 1. Adjust function call. Save SLP instance in
1473         either loop or basic block vectorization structure. Return FALSE,
1474         if SLP failed.
1475         (vect_analyze_slp): Add argument. Get strided stores groups from
1476         either loop or basic block vectorization structure. Return FALSE
1477         if basic block SLP failed.
1478         (new_bb_vec_info): New function.
1479         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1480         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1481         (vect_schedule_slp): Add argument. Get SLP instances from either
1482         loop or basic block vectorization structure. Set vectorization factor
1483         to be 1 for basic block SLP.
1484         (vect_slp_transform_bb): New function.
1485         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1486
1487 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1488
1489         * final.c (shorten_branches): Do not align labels for jump tables.
1490         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1491
1492 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1493
1494         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1495         Remove outdated reference to flow.c and fix nits.
1496         * doc/gccint.texi: Tweak RTL description.
1497         * doc/rtl.texi: Likewise.
1498
1499 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1500
1501         * config/avr/avr.c: Change my email address.
1502         * config/avr/avr.h: Likewise.
1503         * config/avr/avr.md: Likewise.
1504         * config/avr/avr-protos.h: Likewise.
1505         * config/avr/libgcc.S: Likewise.
1506
1507 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1508
1509         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1510         (spu_split_load, spu_split_store): Change return type to int.
1511         (spu_split_convert): Declare.
1512         * config/spu/predicates.md (spu_mem_operand): Remove.
1513         (spu_mov_operand): Update.
1514         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1515         * config/spu/spu.c (regno_aligned_for_load): Remove.
1516         (reg_aligned_for_addr, spu_expand_load): Define.
1517         (spu_expand_extv): Reimplement and handle MEM.
1518         (spu_expand_insv): Handle MEM.
1519         (spu_sched_reorder): Handle insn's with length 0.
1520         (spu_legitimate_address_p): Reimplement.
1521         (store_with_one_insn_p): Return TRUE for any mode with size
1522         larger than 16 bytes.
1523         (address_needs_split): Define.
1524         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1525         operands.
1526         (spu_convert_move): Define.
1527         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1528         (spu_split_store): Change all MEM's to TImode.
1529         (spu_init_expanders): Preallocate registers that correspond to
1530         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1531         mark_reg_pointer.
1532         (spu_split_convert): Define.
1533         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1534         (_move<mode>, _movdi, _movti): Update predicate and condition.
1535         (load, store): Change to define_split.
1536         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1537         extend<mode>ti2.
1538         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1539         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1540         define_insn_and_split of lshr<mode>3.
1541         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1542         (<v>ashr<mode>3_imm): Define.
1543         (extv, extzv, insv): Allow MEM operands.
1544         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1545         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1546         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1547         (_spu_convert2): Change to define_insn_and_split and remove the
1548         corresponding define_peephole2.
1549         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1550         Change predicates to memory_operand.
1551
1552 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1553
1554         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1555
1556 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1557
1558         PR tree-optimization/40219
1559         * tree.c (iterative_hash_expr): Make sure the builtin function is
1560         a normal builtin function and not a front end or back end builtin
1561         before indexing into the built_in_decls array.
1562
1563 2009-05-22  Richard Guenther  <rguenther@suse.de>
1564
1565         PR middle-end/38964
1566         * alias.c (write_dependence_p): Do not use TBAA for answering
1567         anti-dependence or output-dependence.
1568         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1569         (emit_pointer_definition): Remove.
1570         (emit_alias_warning): Likewise.
1571         (find_what_var_points_to): Remove TBAA pruning code.
1572         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1573         violations.
1574         (compute_points_to_sets): Remove code computing the set of
1575         dereferenced pointers.
1576         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1577         oracle for querying anti and output dependencies.
1578         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1579         if TBAA may be applied.
1580         (refs_anti_dependent_p): New function.
1581         (refs_output_dependent_p): Likewise.
1582         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1583         (refs_output_dependent_p): Likewise.
1584         * doc/tree-ssa.texi (Memory model): New section.
1585         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1586         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1587         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1588         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1589         * expr.c (expand_expr_real_1): Likewise.
1590         * gimple-low.c (lower_stmt): Likewise.
1591         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1592         (dump_gimple_cdt): Remove.
1593         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1594         (gimple_size): Likewise.
1595         (walk_gimple_op): Likewise.
1596         (is_gimple_stmt): Likewise.
1597         (walk_stmt_load_store_addr_ops): Likewise.
1598         (gimple_build_cdt): Remove.
1599         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1600         * gimple.h (gimple_cdt_new_type): Remove.
1601         (gimple_cdt_new_type_ptr): Likewise.
1602         (gimple_cdt_set_new_type): Likewise.
1603         (gimple_cdt_location): Likewise.
1604         (gimple_cdt_location_ptr): Likewise.
1605         (gimple_cdt_set_location): Likewise.
1606         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1607         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1608         GIMPLE_CHANGE_DYNAMIC_TYPE.
1609         (verify_types_in_gimple_stmt): Likewise.
1610         * tree-inline.c (estimate_num_insns): Likewise.
1611         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1612         (copy_decl_to_var): Likewise.
1613         (copy_result_decl_to_var): Likewise.
1614         * tree-pretty-print.c (dump_generic_node): Do not handle
1615         CHANGE_DYNAMIC_TYPE_EXPR.
1616         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1617         * tree-ssa-operands.c (get_expr_operands): Likewise.
1618         * tree-ssa-structalias.c (struct variable_info): Remove
1619         no_tbaa_pruning member.
1620         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1621         (unify_nodes): Do not copy it.
1622         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1623         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1624         (set_uids_in_ptset): Do not check it.
1625         (find_what_var_points_to): Likewise.
1626         (compute_tbaa_pruning): Remove.
1627         (compute_points_to_sets): Do not call it.
1628         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1629         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1630         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1631         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1632         (DECL_NO_TBAA_P): Likewise.
1633         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1634         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1635         (expand_omp_atomic_pipeline): Do not set it.
1636         * print-tree.c (print_node): Do not dump it.
1637         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1638         redundant check.
1639
1640 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1641
1642         PR target/39856
1643         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1644         for clobber.
1645
1646 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1647
1648         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1649         non-external.
1650
1651 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1652
1653         * Makefile.in (bversion.h, s-bversion): New targets.
1654         (TOPLEV_H): Add bversion.h.
1655         * toplev.h: Include "bversion.h".
1656         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1657         the __format__ attribute only if compiling with the same version
1658         of GCC as the sources (the "build version").
1659
1660 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1661
1662         * c-format.c (handle_format_attribute): Fix comment typo.
1663
1664 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1665
1666         PR target/37846
1667         * config/ia64/ia64.opt (mfused-madd): New.
1668         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1669         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1670         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1671         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1672         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1673         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1674         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1675         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1676         instruction if !TARGET_FUSED_MADD.
1677         (fpma, fpms): Remove colon from name.
1678
1679 2009-05-22  Richard Guenther  <rguenther@suse.de>
1680
1681         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1682         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1683         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1684         TARGET_MEM_REF.
1685         (create_expression_by_pieces): Only convert if necessary.
1686         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1687         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1688
1689 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1690
1691         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1692         regular pattern from a template and rename it ...
1693         (*extzv_truncsi_exts): ... to this.
1694
1695 2009-05-21  Richard Guenther  <rguenther@suse.de>
1696
1697         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1698         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1699         (cgraph_default_inline_p): Likewise.
1700         (cgraph_decide_inlining_incrementally): Likewise.
1701
1702 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1703             Uros Bizjak  <ubizjak@gmail.com>
1704
1705         * config/i386/cpuid.h (bit_MOVBE): New.
1706
1707         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1708
1709         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1710         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1711         (ix86_handle_option): Handle OPT_mmovbe.
1712         (ix86_target_string): Add -mmovbe.
1713         (pta_flags): Add PTA_MOVBE.
1714         (processor_alias_table): Add PTA_MOVBE to "atom".
1715         (override_options): Handle PTA_MOVBE.
1716
1717         * config/i386/i386.h (TARGET_MOVBE): New.
1718
1719         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1720         (*bswapsi_movbe): New.
1721         (*bswapdi_movbe): Likewise.
1722         (bswapdi2): Renamed to ...
1723         (*bswapdi_1): This.
1724         (bswapdi2): New expander.
1725
1726         * config/i386/i386.opt (mmovbe): New.
1727
1728         * doc/invoke.texi: Document -mmovbe.
1729
1730 2009-05-21  Taras Glek  <tglek@mozilla.com>
1731
1732         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1733         * gcc-plugin.h (plugin_init): Updated signature.
1734         * gcc-plugin.h (plugin_name_args): Moved to this header.
1735         * doc/plugins.texi (plugin_init): Updated documention to reflect
1736         API change.
1737         * doc/plugins.texi (plugin_name_args): Added to documention.
1738
1739 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1740
1741         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1742         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1743
1744 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1745
1746         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1747         JUMP_TABLE_DATA_P predicates where applicable.
1748         * config/i386/predicates.md: Ditto.
1749         * config/i386/sse.md: Ditto.
1750
1751 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1752
1753         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1754         operand2 -128 override length_immediate attribute to 1.
1755         * config/i386/predicates.md (constm128_operand): New predicate.
1756
1757         * config/i386/i386.c (memory_address_length): Handle %r12
1758         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1759         also check REGNO.
1760         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1761         mode look through optional ZERO_EXTEND and SUBREG.
1762         * config/i386/i386.md (R12_REG): New define_constant.
1763         (prefix_data16): For sse unit set also for MODE_TI insns.
1764         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1765         insns set if operand 1 is ext_QIreg_operand.
1766         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1767         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1768         immediate.
1769         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1770         mode from MODE_DI to MODE_SI.
1771         (movdi_1_rex64): Override modrm and length_immediate attributes
1772         only for movabs (TYPE_IMOV, alternative 2).
1773         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1774         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1775         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1776         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1777         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1778         prefix_rex attribute if DImode.
1779         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1780         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1781         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1782         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1783         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1784         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1785         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1786         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1787         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1788         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1789         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1790         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1791         or one operand TYPE_ISHIFT.
1792         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1793         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1794         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1795         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1796         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1797         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1798         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1799         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1800         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1801         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1802         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1803         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1804         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1805         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1806         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1807         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1808         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1809         set mode attribute, don't override length attribute.
1810         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1811         to 1.
1812         (return_internal_long): Set length attribute to 2 instead of 1.
1813         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1814         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1815         prefix_rex attribute.
1816         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1817         New predicates.
1818         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1819
1820 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1821
1822         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1823
1824 2009-05-20  Ian Lance Taylor  <iant@google.com>
1825
1826         * tree.c (build_tree_list_vec_stat): New function.
1827         (ctor_to_vec): New function.
1828         (build_nt_call_vec): New function.
1829         (build_call_array): Change args to be a const pointer.
1830         (build_call_vec): New function.
1831         * tree.h (build_nt_call_vec): Declare.
1832         (build_tree_list_vec_stat): Declare.
1833         (build_tree_list_vec): Define.
1834         (build_call_array): Update declaration.
1835         (build_call_vec): Declare.
1836         (ctor_to_vec): Declare.
1837         * c-common.c (tree_vector_cache): New static variable.
1838         (make_tree_vector): New function.
1839         (release_tree_vector): New function.
1840         (make_tree_vector_single): New function.
1841         (make_tree_vector_copy): New function.
1842         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1843         (make_tree_vector_single, make_tree_vector_copy): Declare.
1844         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1845         (c_parser_expr_list): Don't manage cache here, instead call
1846         make_tree_vector.
1847         (c_parser_release_expr_list): Remove static function.
1848         (c_parser_vec_to_tree_list): Remove static function.
1849         (c_parser_attributes): Call build_tree_list_vec instead of
1850         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1851         c_parser_release_expr_list.
1852         (c_parser_postfix_expression_after_primary): Likewise.
1853         (c_parser_objc_keywordexpr): Likewise.
1854
1855 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1856
1857         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1858         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1859         TARGET_CONVERT_TO_TYPE.
1860         * hooks.c (hook_tree_const_tree_null): Define.
1861         * hooks.h (hook_tree_const_tree_null): Declare.
1862         * target.h (struct gcc_target):  Add invalid_parameter_type,
1863         invalid_return_type, promoted_type, and convert_to_type fields.
1864         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1865         (TARGET_INVALID_RETURN_TYPE): Define.
1866         (TARGET_PROMOTED_TYPE): Define.
1867         (TARGET_CONVERT_TO_TYPE): Define.
1868         (TARGET_INITIALIZER): Update for new fields.
1869         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1870         (grokparms): Check targetm.invalid_parameter_type.
1871         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1872         * c-convert.c (convert): Check targetm.convert_to_type.
1873
1874 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1875
1876         * config/mips/mips.md (*extenddi_truncate<mode>,
1877         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1878         defintions.
1879         (*extendhi_truncateqi): New define_insn_and_sptit.
1880
1881 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1882
1883         PR middle-end/40204
1884         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1885         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1886
1887 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1888
1889         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1890         the operand of VIEW_CONVERT_EXPR.
1891
1892 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1893
1894         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1895         extended family and model for Intel processors.  Support Intel Atom.
1896
1897 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1898
1899         * gstab.h (stab_code_type): Define, to be used instead of the
1900         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1901         notice.
1902         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1903         occurrences by stab_code_type.
1904         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1905
1906 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1907
1908         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1909         (sra_insert_before): Likewise.
1910         (sra_insert_after): Likewise.
1911         (sra_init_cache): Likewise.
1912         (sra_type_can_be_decomposed_p): Likewise.
1913         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1914         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1915         (sra_insert_before): Likewise.
1916         (sra_insert_after): Likewise.
1917         (sra_init_cache): Likewise.
1918         (insert_edge_copies_seq): Made static and moved upwards.
1919
1920         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1921         case.
1922
1923         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1924
1925         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1926         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1927         simple copies.
1928
1929 2009-05-20  Richard Guenther  <rguenther@suse.de>
1930
1931         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1932         with mismatched comparison modes.
1933
1934 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1935
1936         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1937         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1938         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1939         with shifts for Thumb2.
1940         (orsi_notsi): New for orn.
1941         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1942         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1943         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1944         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1945         Don't invert remainder for IOR.
1946         
1947 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1948
1949         PR tree-optimization/40087
1950         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1951         number_of_iterations_ne): Rename never_infinite argument.
1952         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1953         number_of_iterations_le): Handle pointer-type ivs when
1954         exit_must_be_taken is false.
1955         (number_of_iterations_cond):  Do not always assume that
1956         exit_must_be_taken if the control variable is a pointer.
1957
1958 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1959
1960         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1961         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1962
1963 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1964
1965         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1966         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1967
1968 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1969
1970         PR c/40172
1971         * c.opt (Wlogical-op): Disabled by default.
1972         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1973         Wextra.
1974         * doc/invoke.texi (Wlogical-op): Likewise.
1975         
1976 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1977
1978         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1979         into CASE_CONVERT.
1980         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1981         Propagate the type of the first operand.
1982         <ASSERT_EXPR>: Simplify.
1983         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1984         Rewrite using the RHS code as discriminant.
1985         <NOP_EXPR>: Turn into CASE_CONVERT.
1986         <PLUS_EXPR>: Propagate the type of the first operand.
1987
1988 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1989
1990         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1991         (ia64_dconst_0_375): New.
1992         * config/ia64/ia64.c (ia64_override_options): Remove
1993         -minline-sqrt-min-latency warning.
1994         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1995         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1996         * config/ia64/ia64.md (*sqrt_approx): Remove.
1997         (sqrtsf2): Remove #if 0.
1998         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1999         (sqrtdf): Remove assert.
2000         (sqrtdf2_internal_thr): Rewrite and move to div.md.
2001         (sqrtxf2): Remove #if 0.
2002         (sqrtxf2_internal_thr): Rewrite and move to div.md.
2003         * div.md (sqrt_approx_rf): New.
2004         (sqrtsf2_internal_thr): New implementation.
2005         (sqrtsf2_internal_lat): New.
2006         (sqrtdf2_internal_thr: New implementation.
2007         (sqrtxf2_internal): New implementation.
2008
2009 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2010             Hans-Peter Nilsson  <hp@axis.com>
2011
2012         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2013         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2014         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2015         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2016         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2017         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2018         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2019         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2020         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2021         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2022         * c-common.c: ...from here.
2023
2024 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2025
2026         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2027
2028 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2029
2030         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2031
2032 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2033
2034         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2035         assignments with memcpy calls.
2036         (add_fdes): Likewise.
2037         (binary_search_unencoded_fdes): Likewise.
2038         (linear_search_fdes): Eliminate type puns.
2039         
2040 2009-05-19  Richard Guenther  <rguenther@suse.de>
2041
2042         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2043         not falsely claim to have propagated into all uses.
2044
2045 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2046
2047         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2048         version to v3.0.
2049
2050 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2051
2052         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2053         * config/sh/sh.c (sh_legitimate_address_p): Make static.
2054         (TARGET_LEGITIMATE_ADDRESS_P): New.
2055         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2056         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2057         
2058 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
2059
2060         PR debug/40109
2061         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
2062         child of the containing namespace's DIE.
2063
2064 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
2065
2066         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
2067         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
2068         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
2069         extend patterns.
2070
2071 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2072
2073         PR target/39942
2074         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
2075         gen_align with gen_pad.
2076         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
2077         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
2078
2079         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
2080         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
2081
2082         * config/i386/i386.md (align): Renamed to ...
2083         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
2084         ASM_OUTPUT_MAX_SKIP_PAD.
2085
2086 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
2087
2088         * config.gcc: Fix variable syntax.
2089
2090         PR target/39531
2091         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
2092         before calling exact_log2.
2093         (output_iorsi3): Likewise.
2094         (output_xorsi3): Likewise.
2095
2096 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2097
2098         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
2099         for the none zero constant operand except for EQ and NE
2100         comprisons even when the first operand is R0.
2101
2102 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2103
2104         * config/s390/2064.md: Remove trailing whitespaces.
2105         * config/s390/2084.md: Likewise.
2106         * config/s390/constraints.md: Likewise.
2107         * config/s390/fixdfdi.h: Likewise.
2108         * config/s390/libgcc-glibc.ver: Likewise.
2109         * config/s390/s390-modes.def: Likewise.
2110         * config/s390/s390-protos.h: Likewise.
2111         * config/s390/s390.c: Likewise.
2112         * config/s390/s390.h: Likewise.
2113         * config/s390/s390.md: Likewise.
2114         * config/s390/tpf-unwind.h: Likewise.
2115
2116 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2117
2118         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2119
2120 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2121
2122         M68K TLS support.
2123         * configure.ac (m68k-*-*): Check if binutils support TLS.
2124         * configure: Regenerate.
2125         * config/m68k/predicates.md (symbolic_operand): Extend comment.
2126         * config/m68k/constraints.md (Cu): New constraint.
2127         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2128         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2129         (movsi): Handle TLS symbols.
2130         (addsi3_5200): Handle XTLS symbols, indent.
2131         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2132         (m68k_tls_reference_p): Declare.
2133         (m68k_legitimize_address): Declare.
2134         (m68k_unwrap_symbol): Declare.
2135         * config/m68k/m68k.opt (mxtls): New option.
2136         * config/m68k/m68k.c (ggc.h): Include.
2137         (m68k_output_dwarf_dtprel): Implement hook.
2138         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2139         (m68k_expand_prologue): Load GOT pointer when function needs it.
2140         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2141         (m68k_legitimate_constant_address_p): Same.
2142         (m68k_decompose_address): Handle TLS references.
2143         (m68k_get_gp): New static function.
2144         (enum m68k_reloc): New contants.
2145         (TLS_RELOC_P): New macro.
2146         (m68k_wrap_symbol): New static function.
2147         (m68k_unwrap_symbol): New function.
2148         (m68k_final_prescan_insn_1): New static function.
2149         (m68k_final_prescan_insn): New function.
2150         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2151         functions.
2152         (legitimize_pic_address): Handle TLS references..
2153         (m68k_tls_get_addr, m68k_get_tls_get_addr)
2154         (m68k_libcall_value_in_a0_p)
2155         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2156         (m68k_call_m68k_read_tp): Helper variables and functions for ...
2157         (m68k_legitimize_tls_address): Handle TLS references.
2158         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2159         New functions.
2160         (m68k_legitimize_address): Handle TLS symbols.
2161         (m68k_get_reloc_decoration): New static function.
2162         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2163         UNSPEC_RELOC32.
2164         (m68k_output_dwarf_dtprel): Implement hook.
2165         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2166         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2167         m68k_call_* routines.
2168         (sched_attr_op_type): Handle TLS symbols.
2169         (gt-m68k.h): Include.
2170         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2171         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2172
2173 2009-05-18  Martin Jambor  <mjambor@suse.cz>
2174
2175         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2176         (visit_store_addr_for_mod_analysis): New function.
2177         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2178         (determine_cst_member_ptr): Use gimple_assign_single_p.
2179         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2180         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2181         operands.  Don't check number of operands of a NOP_EXPR.
2182
2183 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2184
2185         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2186
2187 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2188
2189         PR c/40172
2190         * c-common.c (warn_logical_operator): Don't warn if one of
2191         expression isn't always true or false.
2192
2193 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2194
2195         * config/i386/biarch32.h: New file.
2196         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2197
2198 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2199
2200         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2201         *zero_extend<mode>_truncqi): Merge these into ...
2202         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2203         Name the pattern following this as *zero_extendhi_truncqi.
2204
2205 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2206
2207         PR middle-end/39301
2208         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2209         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2210         (output_info): Make field HOST_WIDEST_INT.
2211         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2212         (dump_bitmat_statistics): Same.
2213
2214 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2215
2216         * config.gcc (use_gcc_stdint):  Set to wrap.
2217         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2218         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2219         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2220         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2221         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2222         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2223         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2224         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2225
2226 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2227
2228         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2229         tune_64.
2230         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2231         Move definitions earlier.
2232         (OPT_ARCH64, OPT_ARCH32): Define.
2233         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2234         and tune_64.
2235
2236 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2237
2238         PR target/40153
2239         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2240         implies.
2241
2242 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2243
2244         * arm.md (movdi2): Copy non-reg values to DImode registers.
2245
2246 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2247
2248         PR target/39942
2249         * final.c (label_to_max_skip): New function.
2250         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2251         CODE_LABEL_NUMBER <= max_labelno.
2252         * output.h (label_to_max_skip): New prototype.
2253         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2254         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2255         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2256         Handle CODE_LABELs with >= 16 byte alignment or with
2257         max_skip == (1 << align) - 1.
2258         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2259         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2260
2261         PR target/39942
2262         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2263         .p2align 3 if MAX_SKIP is smaller than 7.
2264         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2265
2266 2009-05-15  Ian Lance Taylor  <iant@google.com>
2267
2268         * alias.c (struct alias_set_entry_d): Rename from struct
2269         alias_set_entry.  Change all uses.
2270         * except.c (struct call_site_record_d): Rename from struct
2271         call_site_record.  Change all uses.
2272         * except.h (struct eh_region_d): Rename from struct eh_region.
2273         Change all uses.
2274         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2275         Change all uses.
2276         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2277         ivtype_map_elt.  Change all uses.
2278         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2279         Change all uses.
2280         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2281         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2282         Change all uses.
2283         (struct sese_d): Rename from struct sese.  Change all uses.
2284         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2285         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2286         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2287         uses.
2288         (struct convert_optab_d): Rename from struct convert_optab.
2289         Change all uses.
2290         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2291         ipa_opt_pass.  Change all uses.
2292         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2293         all uses.
2294
2295         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2296         defined as a typedef.
2297         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2298         defined as a tag.
2299
2300 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2301
2302         PR 16302
2303         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2304         declaration to...
2305         (merge_ranges): Returns bool. 
2306         * tree.h (make_range): .. to here.
2307         (build_range_check): Likewise.
2308         (merge_ranges): Likewise. Renamed from merge_ranges.
2309         * c-typeck.c (parser_build_binary_op): Update calls to
2310         warn_logical_operator.
2311         * c-common.c (warn_logical_operator): Add new warning.
2312         * c-common.h (warn_logical_operator): Update declaration.
2313         
2314 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2315
2316         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2317         
2318 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2319
2320         * doc/install.texi: Document MPC requirements, flags etc.
2321
2322         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2323         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2324         Evaluate constant arguments.
2325         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2326         (fold_builtin_1): Likewise, also evaluate constant arguments.
2327         Remove superfluous break.
2328         (do_mpc_ckconv): New.
2329         * real.h: Include mpc.h.
2330         * toplev.c (print_version): Output MPC version info if available.
2331
2332 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2333
2334         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2335
2336 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2337
2338         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2339         only once.
2340
2341 2009-05-15  Jan Hubicka  <jh@suse.cz>
2342
2343         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2344         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2345         (try_inline): Fix return value.
2346         (cgraph_decide_inlining_incrementally): Honor new value.
2347         (cgraph_early_inlining): Handle indirect inlining.
2348         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2349
2350 2009-05-15  Jan Hubicka  <jh@suse.cz>
2351
2352         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2353         * cgraphunit.c (cgraph_finalize_function): Set it.
2354         (cgraph_expand_function): Use it.
2355
2356 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2357
2358         * real.c (encode_ieee_half): Define.
2359         (decode_ieee_half): Define.
2360         (ieee_half_format): Define.
2361         (arm_half_format): Define.
2362         * real.h (ieee_half_format): Declare.
2363         (arm_half_format): Declare.
2364
2365 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2366
2367         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2368         swapped, and reversed optabs exist before trying to use them.
2369
2370 2009-05-15  Paul Brook  <paul@codesourcery.com>
2371             Sandra Loosemore  <sandra@codesourcery.com>
2372
2373         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2374         loads.  Allow PRE_DEC.
2375         (output_move_neon): Handle PRE_DEC.
2376         (arm_print_operand): Add 'A' for neon structure loads.
2377         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2378         * config/arm/neon.md (neon_mov): Update comment.
2379         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2380         calls.
2381         (Um): New constraint.
2382
2383 2009-05-15  Jan Hubicka  <jh@suse.cz>
2384
2385         Revert the following patch until testsuite fallout is fixed:
2386         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2387         * cgraph.h (struct inline_summary): New filed self_wize,
2388         size_inlining_benefit, self_time and time_inlining_benefit.
2389         (struct cgraph_global_info): Replace insns by time ans size fields.
2390         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2391         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2392         (ipcp_update_callgraph): Do not touch function bodies.
2393         * ipa-inline.c: Include except.h
2394         (MAX_TIME): New constant.
2395         (overall_insns): Remove
2396         (overall_size, max_benefit): New static variables.
2397         (cgraph_estimate_time_after_inlining): New function.
2398         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2399         (cgraph_clone_inlined_nodes): Update size.
2400         (cgraph_mark_inline_edge): Update size.
2401         (cgraph_estimate_growth): Use size info.
2402         (cgraph_check_inline_limits): Check size.
2403         (cgraph_default_inline_p): Likewise.
2404         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2405         (cgraph_decide_recursive_inlining): Check size.
2406         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2407         and times.
2408         (cgraph_decide_inlining): Likewise.
2409         (cgraph_decide_inlining_incrementally): Likewise; honor
2410         PARAM_EARLY_INLINING_INSNS.
2411         (likely_eliminated_by_inlining_p): New predicate.
2412         (estimate_function_body_sizes): New function.
2413         (compute_inline_parameters): Use it.
2414         * except.c (must_not_throw_labels): New function.
2415         * except.h (must_not_throw_labels): Declare.
2416         * tree-inline.c (init_inline_once): Kill inlining_weigths
2417         * tree-ssa-structalias.c: Avoid uninitialized warning.
2418         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2419         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2420         (PARAM_INLINE_CALL_COST): Remove.
2421         (PARAM_EARLY_INLINING_INSNS): New.
2422
2423 2009-05-15  Richard Guenther  <rguenther@suse.de>
2424
2425         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2426         not TODO_update_ssa.
2427
2428 2009-05-15  Richard Guenther  <rguenther@suse.de>
2429
2430         PR tree-optimization/39999
2431         * gimple.h (gimple_expr_type): Use the expression type looking
2432         through useless conversions.
2433         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2434         (vn_nary_op_insert_stmt): Likewise.
2435         (simplify_binary_expression): Likewise.
2436
2437 2009-05-15  Richard Guenther  <rguenther@suse.de>
2438
2439         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2440         New options, enabled by default.
2441         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2442         Document.
2443         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2444         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2445         * tree-ssa-structalias.c (gate_tree_pta): New function.
2446         (pass_build_alias): Use it.
2447
2448 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2449
2450         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2451         recurse on an invariant address if a conversion from a pointer
2452         type to a wider integer type is involved.
2453
2454 2009-05-15  Jan Hubicka  <jh@suse.cz>
2455
2456         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2457         * cgraph.h (struct inline_summary): New filed self_wize,
2458         size_inlining_benefit, self_time and time_inlining_benefit.
2459         (struct cgraph_global_info): Replace insns by time ans size fields.
2460         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2461         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2462         (ipcp_update_callgraph): Do not touch function bodies.
2463         * ipa-inline.c: Include except.h
2464         (MAX_TIME): New constant.
2465         (overall_insns): Remove
2466         (overall_size, max_benefit): New static variables.
2467         (cgraph_estimate_time_after_inlining): New function.
2468         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2469         (cgraph_clone_inlined_nodes): Update size.
2470         (cgraph_mark_inline_edge): Update size.
2471         (cgraph_estimate_growth): Use size info.
2472         (cgraph_check_inline_limits): Check size.
2473         (cgraph_default_inline_p): Likewise.
2474         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2475         (cgraph_decide_recursive_inlining): Check size.
2476         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2477         and times.
2478         (cgraph_decide_inlining): Likewise.
2479         (cgraph_decide_inlining_incrementally): Likewise; honor
2480         PARAM_EARLY_INLINING_INSNS.
2481         (likely_eliminated_by_inlining_p): New predicate.
2482         (estimate_function_body_sizes): New function.
2483         (compute_inline_parameters): Use it.
2484         * except.c (must_not_throw_labels): New function.
2485         * except.h (must_not_throw_labels): Declare.
2486         * tree-inline.c (init_inline_once): Kill inlining_weigths
2487         * tree-ssa-structalias.c: Avoid uninitialized warning.
2488         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2489         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2490         (PARAM_INLINE_CALL_COST): Remove.
2491         (PARAM_EARLY_INLINING_INSNS): New.
2492         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2493         (inline-call-cost): Remove.
2494         (early-inlining-insns): New.
2495
2496 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2497
2498         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2499         for bounds.
2500         (print_int_cst_bounds_in_octal_p): Likewise.
2501         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2502         with subtypes.
2503         * dwarf2out.c (base_type_die): Likewise.
2504         (is_subrange_type): Delete.
2505         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2506         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2507         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
2508         if the destination type is boolean.
2509         (build_range_check): Do not special-case subtypes.
2510         (fold_sign_changed_comparison): Likewise.
2511         (fold_unary): Likewise.
2512         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2513         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2514         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2515         * tree.c (subrange_type_for_debug_p): New predicate based on the
2516         former is_subrange_type.
2517         * tree.h (subrange_type_for_debug_p): Declare.
2518         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2519         (convert_affine_scev): Remove call to above function.
2520         (chrec_convert_aggressive): Likewise.
2521         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2522         false for conversions involving subtypes.
2523         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2524         (vrp_val_min): Likewise.
2525         (needs_overflow_infinity): Likewise.
2526         (extract_range_from_unary_expr): Likewise.
2527
2528 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2529
2530         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2531         * config/frv/frv.c: Likewise.
2532         * config/s390/s390.c: Likewise.
2533         * config/sparc/sparc.h: Likewise.
2534         * config/i386/i386.h: Likewise.
2535         * config/i386/i386.c: Likewise.
2536         * config/crx/crx.c: Likewise.
2537         * config/m68hc11/m68hc11.h: Likewise.
2538         * config/iq2000/iq2000.c: Likewise.
2539         * config/mn10300/mn10300.h: Likewise.
2540         * config/mn10300/mn10300.c: Likewise.
2541         * config/m68k/m68k.c: Likewise.
2542         * config/rs6000/rs6000.c: Likewise.
2543         * config/rs6000/xcoff.h: Likewise.
2544         * config/rs6000/linux64.h: Likewise.
2545         * config/rs6000/sysv4.h: Likewise.
2546         * config/score/score3.c: Likewise.
2547         * config/score/score7.c: Likewise.
2548         * config/score/score.c: Likewise.
2549         * config/arm/arm.md: Likewise.
2550         * config/mips/mips.c: Likewise.
2551         * config/mips/mips.md: Likewise.
2552         * config/bfin/bfin.h: Likewise.
2553         * config/pa/pa.c: Likewise.
2554         * config/pa/constraints.md: Likewise.
2555
2556         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2557         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2558         * config/pdp11/pdp11.h: Use memory_address_p instead.
2559
2560 2009-05-14  Ian Lance Taylor  <iant@google.com>
2561
2562         * passes.c (finish_optimization_passes): Change i to int.
2563         * plugin.c (plugins_active_p): Change event to int.
2564         (dump_active_plugins): Likewise.
2565         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2566         Add cast.
2567         * tree.c (tree_range_check_failed): Change c to unsigned int.
2568         (omp_clause_range_check_failed): Likewise.
2569         (build_common_builtin_nodes): Change mode to int.  Add cast.
2570         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2571         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2572
2573         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2574         ++ or -- with a variable of enum type.
2575
2576 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2577
2578         PR driver/40144
2579         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2580
2581 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2582
2583         * store-motion.c: Do not include params.h
2584         * Makefile.in: Fix dependencies for various files.
2585
2586 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2587
2588         * auto-inc-dec.c: Fix pass description, remove apparent
2589         accidental duplication.
2590
2591 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2592
2593         PR middle-end/40147
2594         * ipa-utils.h (memory_identifier_string): Moved to ...
2595         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2596
2597 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2598
2599         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2600         in the former documentation of...
2601         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2602         * ira-conflicts.c (get_dup_num): Use address_operand.
2603         * targhooks.c (default_legitimate_address_p): New.
2604         * targhooks.h (default_legitimate_address_p): New.
2605         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2606         Call hook.
2607         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2608         * target.h (struct target): Add legitimate_address_p.
2609         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2610         (TARGET_INITIALIZER): Include it.
2611
2612         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2613         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2614         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2615         (TARGET_LEGITIMATE_ADDRESS_P): New.
2616
2617         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2618         (REG_OK_STRICT_P): Delete.
2619         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2620         (frv_legitimate_address_p_1): ... this.
2621         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2622         (frv_legitimate_address_p_1): ... the renamed old
2623         frv_legitimate_address_p.
2624         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2625         (TARGET_LEGITIMATE_ADDRESS_P): New.
2626
2627         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2628         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2629         * config/s390/s390.c (legitimate_address_p): Rename to...
2630         (s390_legitimate_address_p): ... this, make static.
2631         (legitimize_address): Adjust call.
2632         (TARGET_LEGITIMATE_ADDRESS_P): New.
2633         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2634
2635         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2636         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2637         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2638         (TARGET_LEGITIMATE_ADDRESS_P): New.
2639
2640         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2641         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2642         * config/spu/spu.c (spu_legitimate_address): Rename to...
2643         (spu_legitimate_address_p): ... this, make static.
2644         (TARGET_LEGITIMATE_ADDRESS_P): New.
2645
2646         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2647         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2648         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2649         (sparc_legitimate_address_p): ... this, make static and return bool.
2650         (legitimize_address): Adjust call.
2651         (TARGET_LEGITIMATE_ADDRESS_P): New.
2652
2653         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2654         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2655         * config/i386/i386.c (legitimate_address_p): Rename to...
2656         (ix86_legitimate_address_p): ... this, make static.
2657         (constant_address_p): Move after it, adjust call.
2658         (TARGET_LEGITIMATE_ADDRESS_P): New.
2659
2660         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2661         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2662         * config/avr/avr.c (legitimate_address_p): Rename to...
2663         (avr_legitimate_address_p): ... this, make static.
2664         (legitimize_address): Adjust call.
2665         (TARGET_LEGITIMATE_ADDRESS_P): New.
2666
2667         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2668         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2669         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2670         (TARGET_LEGITIMATE_ADDRESS_P): New.
2671
2672         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2673         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2674         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2675         (TARGET_LEGITIMATE_ADDRESS_P): New.
2676
2677         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2678         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2679         Remove.
2680         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2681         Make static.
2682         (TARGET_LEGITIMATE_ADDRESS_P): New.
2683
2684         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2685         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2686         Remove.
2687         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2688         Rename to...
2689         (m68hc11_legitimate_address_p): ... this, make static.
2690         (go_if_legitimate_address_internal): Rename to...
2691         (m68hc11_legitimate_address_p_1): ... this.
2692         (legitimize_address): Adjust call.
2693         (TARGET_LEGITIMATE_ADDRESS_P): New.
2694
2695         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2696         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2697         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2698         (TARGET_LEGITIMATE_ADDRESS_P): New.
2699
2700         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2701         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2702         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2703         (mn10300_legitimate_address_p): ... this, make static.
2704         (TARGET_LEGITIMATE_ADDRESS_P): New.
2705
2706         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2707         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2708         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2709         (TARGET_LEGITIMATE_ADDRESS_P): New.
2710
2711         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2712         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2713         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2714         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2715         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2716         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2717         (rs6000_legitimate_address_p): ... this, make static.
2718         (TARGET_LEGITIMATE_ADDRESS_P): New.
2719         (REG_MODE_OK_FOR_BASE_P): Delete.
2720         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2721
2722         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2723         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2724         Delete.
2725         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2726         static, adjust types.
2727         (TARGET_LEGITIMATE_ADDRESS_P): New.
2728
2729         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2730         * config/score/score.c (score_address_p): Rename to...
2731         (score_legitimate_address_p): ... this.
2732         (TARGET_LEGITIMATE_ADDRESS_P): New.
2733         * config/score/score3.c (score3_address_p): Rename to...
2734         (score3_legitimate_address_p): ... this.
2735         * config/score/score7.c (score7_address_p): Rename to...
2736         (score7_legitimate_address_p): ... this.
2737
2738         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2739         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2740         GO_IF_LEGITIMATE_ADDRESS): Delete.
2741         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2742         thumb2_legitimate_address_p): Delete.
2743         (arm_legitimate_address_p): Rename to...
2744         (arm_legitimate_address_outer_p): ... this.
2745         * config/arm/constraints.md ("Uq"): Adjust call.
2746         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2747         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
2748         to...
2749         (arm_legitimate_address_outer_p): ... this.
2750         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
2751         static.
2752         (TARGET_LEGITIMATE_ADDRESS_P): New.
2753
2754         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2755         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2756         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2757         (TARGET_LEGITIMATE_ADDRESS_P): New.
2758
2759         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2760         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2761         * config/vax/vax.c (legitimate_address_p): Rename to...
2762         (vax_legitimate_address_p): ... this, make static.
2763         (TARGET_LEGITIMATE_ADDRESS_P): New.
2764
2765         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2766         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2767         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2768         (TARGET_LEGITIMATE_ADDRESS_P): New.
2769
2770         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2771         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2772         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2773         (mmix_legitimate_address_p): ... this, make static.
2774         (TARGET_LEGITIMATE_ADDRESS_P): New.
2775
2776         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2777         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2778         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2779         (TARGET_LEGITIMATE_ADDRESS_P): New.
2780
2781 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2782
2783         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2784         of MODE_COMPLEX_INT.
2785
2786 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2787
2788         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2789         LCT_NORMAL in function call.
2790         * mips-tdump.c (print_file_desc): Add cast to enum type.
2791         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2792         (mark_stabs): Add casts to enum types.
2793         (parse_stabs_common): Add casts to enum types.
2794
2795 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2796
2797         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2798         Check for invalid values of LETTER.
2799
2800 2009-05-13  Taras Glek  <tglek@mozilla.com>
2801
2802         * attribs.c (register_attribute): moved out attribute registration
2803         into register_attribute.
2804         * doc/plugins.texi: Documented register_attribute and
2805         PLUGIN_ATTRIBUTES.
2806         * gcc-plugin.h: Added forward decl for register_attribute.
2807         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2808         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2809         PLUGIN_ATTRIBUTES boilerplate.
2810
2811 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2812
2813         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2814         values even in sentinel and empty entries.
2815         (ms_printf_flag_specs):  Likewise.
2816         (ms_scanf_flag_specs):  Likewise.
2817         (ms_strftime_flag_specs):  Likewise.
2818         (ms_print_char_table):  Likewise.
2819         (ms_scan_char_table):  Likewise.
2820         (ms_time_char_table):  Likewise.
2821
2822 2009-05-13  Doug Kwan  <dougkwan@google.com>
2823
2824         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2825
2826 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2827
2828         * config/mips/mips.md (store): Add attributes for QI and HI.
2829         Update comment.
2830         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2831         (truncdi<mode>2): ... this new pattern.
2832
2833 2009-05-13  Brad Hards  <bradh@kde.org>
2834
2835         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2836
2837 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2838             Ben Elliston <bje@au.ibm.com>
2839
2840         PR middle-end/40035
2841         * dse.c (check_mem_read_rtx): Guard against width == -1.
2842
2843 2009-05-13  Michael Matz  <matz@suse.de>
2844
2845         PR middle-end/39976
2846         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2847         (trivially_conflicts_p): New function.
2848         (insert_backedge_copies): Use it.
2849
2850 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2851
2852         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2853         (handle_stdc_pragma): Use new enum constant names.
2854         (handle_pragma_float_const_decimal64): Ditto.
2855
2856 2009-05-13  Ian Lance Taylor  <iant@google.com>
2857
2858         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2859         tree.def.
2860
2861 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2862
2863         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2864         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2865         multilibs.
2866         * config/m68k/m68k.h (FL_UCLINUX): Define.
2867
2868 2009-05-13  Jan Hubicka  <jh@suse.cz>
2869
2870         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2871
2872 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2873
2874         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2875         unless -fschedule-insns is specified.
2876
2877 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2878
2879         PR target/39561
2880         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2881         TARGET_EXPAND_CBRANCHDI4.
2882         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2883         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2884         (cmpeqdi): Fix comment.
2885
2886 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2887
2888         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2889         (sh_legitimate_address_p): Likewise.
2890         * config/sh/sh.c (sh_legitimate_index_p): New.
2891         (sh_legitimate_address_p): Likewise.
2892         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2893         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2894         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2895         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2896         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2897         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2898         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2899         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2900         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2901
2902 2009-05-12  Jan Hubicka  <jh@suse.cz>
2903
2904         * tree-inline.c (estimate_operator_cost): Add operands;
2905         when division happens by constant, it is cheap.
2906         (estimate_num_insns): Loads and stores are not having cost of 0;
2907         EH magic stuff is cheap; when computing runtime cost of switch,
2908         use log2 base of amount of its cases; builtin_expect has cost of 0;
2909         compute cost for moving return value of call.
2910         (init_inline_once): Initialize time_based flags.
2911         * tree-inline.h (eni_weights_d): Add time_based flag.
2912
2913 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2914
2915         * df-core.c: Update head documentation.
2916
2917 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2918
2919         PR bootstrap/40118
2920         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2921         shadowing exisiting variable op1.
2922
2923 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2924
2925         PR target/37179
2926         * config/i386/driver-i386.c (processor_signatures): New enum.
2927         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2928         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2929         processor signature to detect geode processor.
2930
2931 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2932
2933         Revert:
2934
2935         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2936
2937         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2938         causes spurious differences between trunk and cond-optab branch.
2939
2940 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2941
2942         * dojump.c (compare_from_rtx): Delete.
2943         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2944         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2945         if the comparison does not satisfy the predicate; test predicates for
2946         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2947         further if one existing pattern fails.
2948         * expr.h (compare_from_rtx): Delete.
2949         (prepare_operand): Declare it.
2950         * optabs.c: Change "lib call" to "libcall" throughout.
2951         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2952         HAVE_conditional_trap, emit_cmp_insn): Delete.
2953         (can_compare_p): Delete cmp_optab case.
2954         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2955         Accept other parameters by value.
2956         (prepare_operand): Make non-static.
2957         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2958         other parameters by value.  Try to widen operands here based on
2959         an optab_methods argument and looking at cbranch_optab.
2960         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2961         loop.  Use cbranch_optab directly.
2962         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2963         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2964         assertion.
2965         (emit_conditional_move, emit_conditional_add): Inline what's needed
2966         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2967         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2968         with COMPARE.  Move cmov_optab and cstore_optab above
2969         with cbranch_optab, move cmp_optab down with ucmp_optab,
2970         remove tst_otpab.  Do not initialize trap_rtx.
2971         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2972         for trap code.  Do not check HAVE_conditional_trap.  Use
2973         prepare_cmp_insn.  Accept no predicate for operand 3.
2974         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2975         (OTI_ctrap, ctrap_optab): New.
2976         (tst_optab): Delete.
2977         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2978         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2979         with lookup of ctrap_optab.
2980         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
2981         Delete.
2982         (ctrap_optab): New.
2983
2984         * combine.c (combine_simplify_rtx, simplify_set): Do not
2985         special case comparing against zero for cc0 machines.
2986         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2987         COMPARE on cc0 machines.
2988         (simplify_relational_operation): Return a new expression when
2989         a COMPARE could be removed.
2990         * final.c (final_scan_insn): Compare cc_status values
2991         against LHS of a (compare FOO (const_int 0)) cc0 source.
2992         Also check if cc_status.value is the full compare.
2993
2994         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2995         (cstoreMM4): Document.
2996         (conditional_trap): Document ctrapMM4 instead.
2997         (sync_compare_and_swapMM): Refer to cbranchcc4.
2998         (Dependent Patterns): Eliminate obsolete information referring to
2999         the old jump optimization phase.
3000         (Canonicalization): Include cbranchcc4 case, omit canonicalization
3001         of compares with 0 on cc0 machines.
3002         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
3003         avoiding references to cc0.  Remove text about storing operands
3004         in cmpMM.
3005         * doc/tm.texi (Condition Codes): Include blurb on different
3006         condition code representations, separate into subsections for
3007         CC0, MODE_CC and conditional execution.
3008
3009         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
3010         alpha_emit_setcc): Accept operands and a machine mode.
3011         * config/alpha/alpha.c (alpha_emit_conditional_branch):
3012         Get code/op0/op1 from operands, use machine mode argument
3013         instead of alpha_compare.fp_p.  Emit the branch here.
3014         (alpha_emit_setcc): Likewise, and return boolean.
3015         (alpha_emit_conditional_move): Likewise.  Assert that
3016         cmp_op_mode == cmp_mode, and simplify accordingly.
3017         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
3018         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
3019         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
3020         Delete.
3021         (stack probe test): Use cbranchdi4.
3022         * config/alpha/predicates.md (alpha_cbranch_operator): New.
3023
3024         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
3025         * config/arc/arc.h (movsicc, movsfcc): Use it.
3026         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
3027         (cbranchsi4, cstoresi4): New.
3028         (cmpsi, bCC and sCC expanders): Remove. 
3029
3030         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
3031         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
3032         * config/arm/predicates.md (arm_comparison_operator): Only include
3033         floating-point operators if there is a hardware floating-point unit.
3034         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
3035         deferring to cbranch_cc and cstore_cc respectively.
3036         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
3037         cbranch_cc, cstore_cc): New.
3038         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
3039         arm_compare_op1.
3040         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
3041
3042         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
3043         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
3044         as an argument.
3045         (adjust_insn_length): Adjust calls.
3046         (avr_reorg): Handle (compare (foo) (const_int 0)).
3047         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
3048         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
3049         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
3050         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
3051         (bCC): Remove.
3052         (cbranchqi4, cbranchhi4, cbranchsi4): New.
3053         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
3054
3055         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
3056         (cbranchsi4, cstorebi4, cstoresi4): New.
3057         (movbisi): This insn is duplicate, split it to zero_extend.
3058         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
3059         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
3060         (bfin_optimize_loop): Use cbranch expander.
3061         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
3062         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
3063         (bfin_bimode_comparison_operator): ... this.
3064         (bfin_direct_comparison_operator): New.
3065  
3066         * config/cris/cris.c (cris_normal_notice_update_cc): Look
3067         inside (compare FOO (const_int 0)).
3068         (cris_rtx_costs): Handle ZERO_EXTRACT.
3069         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
3070         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
3071         (*tstdi_v32): Delete.
3072         (*cmpdi_non_v32): Add M alternative for operand 1.
3073         (cmpsi, cmp<mode>): Make private.
3074         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
3075         with COMPARE.
3076         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
3077
3078         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
3079         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
3080         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
3081         (cc_reg_operand): New.
3082         (any_cond): Delete.
3083         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
3084         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
3085         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
3086         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
3087         crx_expand_scond): Delete.
3088
3089         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
3090         (cbranchsi4): New.
3091         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
3092         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
3093
3094         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
3095         cstoresi4, cstoresf4, cstoredf4): New.
3096         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
3097         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3098         Receive the entire operands array.
3099         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
3100         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
3101         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3102         Get test/op0/op1 from the operands array.
3103         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
3104
3105         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
3106         (h8300_expand_store): New.
3107         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
3108         (const_int 0)).
3109         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
3110         (h8300_expand_store): New.
3111         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
3112         or do not try to produce (set (cc0) REG).
3113         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
3114         change a compare into a move to a scratch register.  Disable some
3115         peepholes when comparing with zero.
3116         (tstsi, tsthi, tstsi, cmpqi): Make private.
3117         (cmphi): Delete.
3118         (bCC, sCC): Delete.
3119         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
3120         cstoresi4): New.
3121
3122         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
3123         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
3124         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
3125         (ix86_emit_i387_log1p): Use cbranchxf2.
3126         (ix86_expand_setcc): Return void.
3127         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
3128         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
3129         cmp<MODEF>, cmpcc): Remove.
3130         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
3131         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
3132         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
3133         (sCC and bCC expanders): Remove.
3134         (stack_protect_test): Use cbranchcc4.
3135
3136         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
3137         Delete.
3138         (ia64_expand_compare): Accept three rtx by reference and return void.
3139         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
3140         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
3141         from *expr.  Update *expr with the BImode comparison to do.
3142         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
3143         cmptf, bCC, sCC, conditional_trap): Delete.
3144         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
3145         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
3146         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
3147         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
3148         * config/ia64/predicates.md (ia64_cbranch_operator): New.
3149
3150         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
3151         type of last argument.
3152         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
3153         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
3154         use machine mode argument instead of branch_type.  Remove dead
3155         code for floating-point comparisons.
3156         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
3157         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
3158         Remove.
3159         (cbranchsi4, cstoresi4): New.
3160         * config/iq2000/predicates.md (reg_or_const_operand): New.
3161
3162         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
3163         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
3164         (b<code>_op): Rewrite to...
3165         (bcc_op): ... this, using match_operator.
3166         (s<code>_op): Rewrite to...
3167         (scc_op): ... this, using match_operator.
3168         (s<code>_24_op): Rewrite to...
3169         (scc_op_24): ... this, using match_operator.
3170         (s<code>_<mode>): Rewrite to...
3171         (cstore<mode>4): ... this, using match_operator.
3172         (s<code>_<mode>_24): Rewrite to...
3173         (cstore<mode>4_24): ... this, using match_operator.
3174         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
3175         m32c_unpend_compare, m32c_expand_scc): Delete.
3176         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
3177         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
3178         (m32c_expand_movcc): Change NE to EQ if necessary.
3179         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
3180
3181         * config/m32r/m32r-protos.h (gen_cond_store): New.
3182         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
3183         (gen_cond_store): New, from sCC patterns.
3184         (m32r_expand_block_move): Use cbranchsi4.
3185         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
3186         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
3187         (cbranchsi4, cstoresi4): New.
3188         
3189         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
3190         Delete.
3191         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
3192         (m68hc11_notice_update_cc): Look into a compare with 0.
3193         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
3194         Delete.
3195         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
3196         cmphi, cmpqi, bCC): Delete.
3197         (cbranchsi4, cbranchhi4, cbranchqi4): New.
3198         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
3199         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
3200         sets with COMPARE.
3201
3202         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
3203         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
3204         * config/m68k/constraints.md (H): New.
3205         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3206         the define_insn below.
3207         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3208         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3209         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3210         patterns): Wrap RHS with COMPARE.
3211         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3212         (*cmpdi_internal): Name this pattern.
3213         (cmpdi): Change to define_insn.
3214         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3215         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3216         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3217         predicate.
3218         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3219         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3220         (conditional_trap): Change to...
3221         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3222         (*conditional_trap): Use the ordered_comparison_operator and
3223         const1_operand predicates.
3224         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3225         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3226         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3227         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3228
3229         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3230         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3231         (mcore_gen_compare): New. 
3232         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3233         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3234         (mcore_gen_compare): ... this.
3235         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3236         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3237         (stack probe pattern): Use cbranchsi4.
3238
3239         * config/mips/predicates.md (mips_cstore_operator): New.
3240         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3241         * config/mips/mips.md (any_cond): Delete.
3242         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
3243         always succeed.
3244         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3245         fixuns_truncsfdi2): Use cbranch patterns.
3246         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
3247         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3248         Adjust call to mips_expand_conditional_branch.
3249         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3250         cstore<GPR:mode>4.
3251         * config/mips/mips-protos.h (mips_expand_conditional_branch,
3252         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3253         * config/mips/mips.c (cmp_operands): Delete.
3254         (mips_emit_compare): Get comparison operands from *op0/*op1.
3255         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
3256         that it succeeds.  Use op0/op1 instead of cmp_operands.
3257         (mips_expand_conditional_branch, mips_expand_conditional_move,
3258         mips_expand_conditional_trap): Likewise.
3259         (mips_block_move_loop): Use cbranch patterns. 
3260         * config/mips/mips.h (cmp_operands): Delete.
3261
3262         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3263         (mmix_gen_compare_reg): Just return a register in the right CC mode.
3264         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3265         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3266         (*cmpcc_folded): Rename to...
3267         (*cmpdi_folded): this.
3268         (*cmpcc): Rename to...
3269         (*cmps): ... this.
3270         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3271         (bCC): Remove.
3272         (cbranchdi4): New.
3273         (cbranchdf4): New.  Handle invalid comparisons here.
3274         * config/mmix/predicates.md (float_comparison_operator): New.
3275
3276         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3277         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3278         * config/mn10300/mn10300.md (tst): Delete.
3279         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3280         Name these patterns and wrap RHS in a compare.
3281         (*cmpsi): Make this pattern private.  Include tst.
3282         (*cmpsf): Make this pattern private.
3283         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3284         (compare with zero peepholes): Likewise.
3285         (bCC): Remove.
3286         (cbranchsi4, cbranchsf4): New.
3287         (casesi): Use cbranchsi4.
3288
3289         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3290         hppa_branch_type): Delete.
3291         (return_addr_rtx): Use cbranchsi4.
3292         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
3293         Emit CCFPmode comparison here.
3294         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3295         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3296         hppa_branch_type): Delete.
3297         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3298         (movsicc, movdicc): Remove references to hppa_compare_op0,
3299         hppa_compare_op1 and compare_from_rtx.
3300         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3301         (casesi): Use cbranchsi4.
3302
3303         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3304         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3305         * config/pdp11/pdp11.md (register_or_const0_operand): New.
3306         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
3307         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3308         (bCC): Delete.
3309         (cbranchdf4, cbranchhi4, cbranchqi4): New.
3310         (*branch, *branch_inverted): New.
3311
3312         * config/picochip/picochip.md (cbranchhi4): Use
3313         ordered_comparison_operator.
3314         (cmphi, bCC): Remove.
3315
3316         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3317         (trap_comparison_operator): Delete.
3318         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3319         rs6000_emit_cbranch): Accept mode and operands.
3320         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3321         rs6000_compare_fp_p): Delete.   
3322         (rs6000_generate_compare): Accept mode and comparison.  Extract code
3323         and op0/op1 from there.  Replace references to rs6000_compare_op0
3324         and rs6000_compare_op1.
3325         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3326         extract result from passed operands.
3327         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3328         extract loc from passed operands.
3329         (rs6000_emit_cmove): Likewise.
3330         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3331         rs6000_compare_fp_p): Delete.
3332         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3333         (cbranch<GPR>4, cbranch<FP>4): New.
3334         (cstore<mode>4): New.  Consolidate here all choices about when to use
3335         portable or specialized sCC sequences.
3336         (stack_protect_test): Use cbranchsi4.
3337         (conditional_trap): Replace with ctrap<GPR>4.
3338         (conditional trap insn): Replace trap_comparison_operator with
3339         ordered_comparison_operator. 
3340
3341         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3342         (s390_emit_prologue): Use ctrap.
3343         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3344         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3345         New predicates replacing...
3346         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3347         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3348         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3349         (add<mode>cc): Do not use s390_compare_op0/op1.
3350         (s<code>): Change to...
3351         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3352         (seq): Change to...
3353         (cstorecc4): ... this.  Handle EQ or NE equally.
3354         (*sne): Un-privatize for use in cstorecc4.
3355         (b<code>): Change to...
3356         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3357         (conditional_trap): Replace with...
3358         (ctrap<GPR>4, ctrap<FP>4): ... these.
3359         (stack_protect): Use cbranchcc4.
3360
3361         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3362         * config/score/score-protos.h (score_gen_cmp): Delete.
3363         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3364         (score_block_move-loop): Use cbranchsi4.
3365         * config/score/score.md (cbranchsi4): New.
3366         (cmpsi, bCC): Delete.
3367         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3368         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3369         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3370         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3371         * config/score/score3.h (score3_gen_cmp): Delete.
3372         * config/score/score7.h (score7_gen_cmp): Delete.
3373
3374         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3375         (sh_emit_scc_to_t): ... this.  Return void.
3376         (from_compare): Rename to...
3377         (sh_emit_compare_and_branch): ... this.
3378         (sh_emit_compare_and_set): New.
3379         (sh_expand_t_scc): Accept operands.
3380         * config/sh/predicates.md (sh_float_comparison_operator): New.
3381         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3382         (prepare_scc_operands): Rename to...
3383         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
3384         arguments.
3385         (sh_emit_cheap_store_flag): New.
3386         (sh_emit_set_t_insn): New.
3387         (from_compare): Rename to...
3388         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
3389         handling of TARGET_SH2E floating point to avoid recursive call.
3390         Generate branch here.
3391         (sh_emit_compare_and_set): New.
3392         (sh_expand_t_scc): Get op0/op1 from arguments.
3393         (sh_emit_cheap_store_flag): New.
3394         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3395         cases.
3396         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3397         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3398         (movsicc, movdicc): Do nothing when it recreated operands from
3399         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3400         prepare_scc_operands (now sh_emit_scc_to_t).
3401         (udivdi3): Use cstoresi4.
3402         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3403         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3404         (cbranchint4_media, cbranchfp4_media): New.
3405         (casesi): Use cbranchdi4.
3406         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3407         Delete.
3408         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3409         (movnegt): Remove second operand.
3410         (cbranchsf4, cbranchdf4): New.
3411         (stack_protect): Use cbranchdi4/cbranchsi4.
3412
3413         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3414         (gen_compare_reg): Accept comparison, extract part of it to...
3415         (gen_compare_reg_1): ... this. 
3416         (gen_compare_operator): Delete.
3417         (gen_v9_scc): Accept separate destination, comparison code and arms.
3418         Do not use sparc_compare_op0/sparc_compare_op1.
3419         (emit_scc_insn, emit_conditional_branch_insn): New.
3420         (emit_v9_brxx): Make static.  Remove useless assertion.
3421         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3422         emit_cmp_insn.
3423         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3424         * config/sparc/sparc-protos.h (gen_compare_reg,
3425         sparc_emit_float_lib_cmp): Adjust prototype.
3426         (emit_scc_insn, emit_conditional_branch_insn): New.
3427         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3428         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3429         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3430         iterators to the top.
3431         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3432         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3433         snedi_special_trunc): Delete.
3434         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3435         and snedi_special_trunc.
3436         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3437         cbranchdi4, cbranch<F:mode>4): New.
3438         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3439         here.  Use gen_compare_reg instead of gen_compare_operator.
3440         (conditional_trap): Replace with...
3441         (ctrapsi4, ctrapdi4): ... this.
3442         (stack_protect_test): Use cbranchcc4.
3443
3444         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3445         argument to rtx.
3446         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3447         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3448         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3449         from operands[0] or operands[3] depending on is_set.
3450         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3451         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3452         cmpdf, bCC), sCC: Remove.
3453         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3454         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3455         cstoredf4): New.
3456         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3457         spu_emit_branch_or_set.
3458
3459         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3460         Add two arguments.
3461         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3462         xstormy16_compare_op1): Delete.
3463         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3464         xstormy16_compare_op1): Delete. 
3465         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3466         Adjust calls.
3467         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3468         (cmphi, cmpsi, bCC): Remove.
3469
3470         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3471         (*cmpsi): ... this one.
3472         (cbranchsi4, cstoresi4): New.
3473         (bCC expanders): Delete.
3474         (sCC insns): Fold into...
3475         (*setcc): ... this one.
3476         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3477         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3478         (movsicc): Simplify.
3479         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3480
3481         * config/vax/vax-protos.h (cond_name): New.
3482         (vax_output_conditional_branch): Remove.
3483         * config/vax/vax.c (cond_name): New.
3484         (vax_output_conditional_branch): Remove.
3485         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3486         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3487         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3488         (bit<VAXint>): Wrap source with (compare).
3489         (b<code> and following unnamed pattern): Rename to *branch and
3490         *branch_reversed.  Change macroization to match_operator.
3491         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3492
3493         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3494         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3495         Change last argument to machine_mode.
3496         (xtensa_expand_scc): Add machine_mode argument.
3497         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3498         (gen_conditional_move, xtensa_expand_conditional_branch,
3499         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3500         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3501         Adjust operand numbers.
3502         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3503         Delete.
3504         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3505         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3506         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3507
3508 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3509
3510         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3511         causes spurious differences between trunk and cond-optab branch.
3512
3513 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3514
3515         PR target/37137
3516         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3517
3518 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3519
3520         * tree.c (iterative_hash_pointer): Delete.
3521         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3522         Hash UIDs and versions of SSA names.  Don't special-case built-in
3523         function declarations.
3524
3525 2009-05-11  Ian Lance Taylor  <iant@google.com>
3526
3527         PR bootstrap/40103
3528         * graphite.c: Force -Wc++-compat to only be a warning before
3529         #including "cloog/cloog.h".
3530
3531 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3532
3533         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3534         
3535 2009-05-11  Jan Hubicka  <jh@suse.cz>
3536
3537         * tree-ssa-loop-ivcanon.c: Include target.h
3538         (struct loop_size): new structure.
3539         (constant_after_peeling): New predicate.
3540         (tree_estimate_loop_size): New function.
3541         (estimated_unrolled_size): Rewrite for new estimates.
3542         (try_unroll_loop_completely): Use new estimates.
3543         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3544
3545 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3546
3547         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3548         libcpp interface change.
3549         (spu_macro_to_expand): Likewise.
3550
3551 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3552
3553         PR tree-optimization/40026
3554         * gimplify.c (gimplify_init_constructor): Change initial conditional
3555         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3556         optimize_compound_literals_in_ctor.
3557
3558 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3559
3560         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3561         New devices.
3562         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3563
3564 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3565
3566         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3567         HOST_WIDE_INT for gap.
3568
3569 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3570
3571         PR tree-optimization/40074
3572         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3573         account in group size and step comparison.
3574
3575 2009-05-11  Richard Guenther  <rguenther@suse.de>
3576
3577         * passes.c (init_optimization_passes): Strip now incorrect comment.
3578         (execute_function_todo): Do not set PROP_alias.
3579         * tree-pass.h (PROP_alias): Remove.
3580         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3581         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3582         * tree-nrv.c (pass_return_slot): Likewise.
3583         * tree-object-size.c (pass_object_sizes): Likewise.
3584         * tree-ssa-dom.c (pass_dominator): Likewise.
3585         (pass_phi_only_cprop): Likewise.
3586         * tree-ssa-dse.c (pass_dse): Likewise.
3587         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3588         (pass_cselim): Likewise.
3589         * tree-ssa-pre.c (pass_pre): Likewise.
3590         (pass_fre): Likewise.
3591         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3592         * tree-ssa-sink.c (pass_sink_code): Likewise.
3593         * tree-stdarg.c (pass_stdarg): Likewise.
3594         * tree-tailcall.c (pass_tail_calls): Likewise.
3595         * tree-vrp.c (pass_vrp): Likewise.
3596
3597 2009-05-10  Ian Lance Taylor  <iant@google.com>
3598
3599         * basic-block.h (enum profile_status): Break out of struct
3600         control_flow_graph.
3601         * cgraph.h (struct inline_summary): Break out of struct
3602         cgraph_local_info.
3603         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3604         of struct cgraph_order_sort.
3605         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3606         * cse.c (struct branch_path): Break out of struct
3607         cse_basic_block_data.
3608         * except.h (enum eh_region_type): Break out of struct eh_region.
3609         * gcc.c (enum add_del): Break out of struct modify_target.
3610         * genrecog.c (enum decision_type): Break out of struct decision_test.
3611         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3612         ggc_pch_data.
3613         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3614         * regmove.c (enum match_use): New enum, broken out of struct match.
3615         * sched-int.h (enum post_call_group): New enum, broken out of
3616         struct deps.
3617         (struct deps_reg): Break out of struct deps.
3618         * target.h (struct asm_int_op): Break out of struct gcc_target.
3619         * tree-eh.c (struct goto_queue_node): Break out of struct
3620         leh_tf_state.
3621         * tree-inline.h (enum copy_body_cge_which): Break out of
3622         copy_body_data.
3623         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3624
3625         * c-decl.c (in_struct, struct_types): New static variables.
3626         (pushtag): Add loc parameter.  Change all callers.
3627         (lookup_tag): Add ploc parameter.  Change all callers.
3628         (check_compound_literal_type): New function.
3629         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3630         -Wc++-compat, warn about struct/union/enum types defined within a
3631         struct or union.
3632         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3633         and loc parameters.  Change all callers.  Change error calls to
3634         error_at, using loc.  For a redefinition, if the location of the
3635         original definition is known, report it.  Set in_struct and
3636         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3637         (finish_struct): Add new parameters enclosing_in_struct and
3638         enclosing_struct_types.  Change all callers.  Set
3639         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3640         in the struct.  If in a struct, add this struct to struct_types.
3641         (start_enum): Add loc parameter.  Change all callers.  Use
3642         error_at for errors, using loc.  For a redefinition, if the
3643         location of the original definition is known, report it.  If in a
3644         struct, add this enum type to struct_types.  If -Wc++-compat warn
3645         if in sizeof, typeof, or alignof.
3646         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3647         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3648         (c_parser_enum_specifier): Get enum location for start_enum.
3649         (c_parser_struct_or_union_specifier): Get struct location for
3650         start_struct.  Save in_struct and struct_types status between
3651         start_struct and finish_struct.
3652         (c_parser_cast_expression): Get location of cast.
3653         (c_parser_alignof_expression): Get location of type.
3654         (c_parser_postfix_expression): Likewise.
3655         (c_parser_postfix_expression_after_paren_type): Add type_loc
3656         parameter.  Change all callers.  Call check_compound_literal_type.
3657         Use type_loc for error about variable size type.
3658         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3659         of an enum constant from an enum type defined in a struct or union.
3660         (c_cast_expr): Add loc parameter.  Change all callers.  If
3661         -Wc++-compat, warn about defining a type in a cast.
3662         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3663         (start_enum, start_struct, finish_struct): Update declarations.
3664         (parser_xref_tag, c_cast_expr): Update declarations.
3665         (check_compound_literal_type): Declare.
3666
3667 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3668
3669         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3670         for recent libcpp interface change.
3671         (rs6000_macro_to_expand): Likewise.
3672
3673 2009-05-10  Michael Matz  <matz@suse.de>
3674
3675         PR target/40031
3676         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3677         not at entry of function.
3678
3679 2009-05-10  Richard Guenther  <rguenther@suse.de>
3680
3681         PR tree-optimization/40081
3682         Revert
3683         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3684         using the main variant of the element type.  Do not fiddle with
3685         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3686
3687         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3688         structs with volatile fields.
3689
3690 2009-05-10  Jan Hubicka  <jh@suse.cz>
3691
3692         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3693         (estimate_move_cost): Assert that it does not get called for
3694         VOID_TYPE_P.
3695         (estimate_num_insns): Skip VOID types in argument handling.
3696         (optimize_inline_calls): Delete unreachable blocks and verify that
3697         callgraph is valid.
3698
3699 2009-05-10  Jan Hubicka  <jh@suse.cz>
3700
3701         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3702         * cgraph.c (cgraph_mark_address_taken_node): New function.
3703         (dump_cgraph_node): Dump new flag.
3704         * cgraph.h (struct cgraph_node): Add address_taken.
3705         (cgraph_mark_address_taken_node): New function.
3706         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3707         since new direct calls can be born.
3708
3709 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3710
3711         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3712         tok->val.node.node.
3713
3714 2009-05-10  Jan Hubicka  <jh@suse.cz>
3715
3716         PR middle-end/40084
3717         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3718         argument; rewrite.
3719         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3720         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3721         * tree-inline.c (copy_bb): Set frequency correctly.
3722         (fold_marked_statements): Update call to
3723         cgraph_update_edges_for_call_stmt.
3724
3725 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3726
3727         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3728         identifiers in diagnostics.
3729         * config/arm/arm.c (arm_handle_fndecl_attribute,
3730         arm_handle_isr_attribute): Likewise.
3731         * config/avr/avr.c (avr_handle_progmem_attribute,
3732         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3733         * config/bfin/bfin.c (handle_int_attribute,
3734         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3735         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3736         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3737         Likewise.
3738         * config/darwin.c (darwin_handle_kext_attribute,
3739         darwin_handle_weak_import_attribute): Likewise.
3740         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3741         h8300_handle_eightbit_data_attribute,
3742         h8300_handle_tiny_data_attribute): Likewise.
3743         * config/i386/i386.c (ix86_handle_cconv_attribute,
3744         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3745         * config/i386/winnt.c (ix86_handle_shared_attribute,
3746         ix86_handle_selectany_attribute): Likewise.
3747         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3748         * config/m32c/m32c.c (function_vector_handler): Likewise.
3749         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3750         m68hc11_handle_fntype_attribute): Likewise.
3751         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3752         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3753         * config/mips/mips.c (mips_insert_attributes,
3754         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3755         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3756         rs6000_handle_struct_attribute): Likewise.
3757         * config/sh/sh.c (sh_insert_attributes,
3758         sh_handle_resbank_handler_attribute,
3759         sh_handle_interrupt_handler_attribute,
3760         sh2a_handle_function_vector_handler_attribute,
3761         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3762         Likewise.
3763         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3764         * config/spu/spu.c (spu_handle_fndecl_attribute,
3765         spu_handle_vector_attribute): Likewise.
3766         * config/stormy16/stormy16.c
3767         (xstormy16_handle_interrupt_attribute): Likewise.
3768         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3769         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3770
3771 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3772
3773         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3774         (pp_translate_identifiers): New.
3775         (pp_identifier): Only conditionally translate identifier to locale
3776         character set.
3777         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3778         (pp_base_tree_identifier): Only conditionally translate identifier
3779         to locale character set.
3780         * c-pretty-print.c (M_): Define.
3781         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3782         fragments for conditional translation with M_.
3783         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3784         identifier translation.
3785
3786 2009-05-10  Richard Guenther  <rguenther@suse.de>
3787
3788         PR tree-optimization/40081
3789         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3790         using the main variant of the element type.  Do not fiddle with
3791         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3792
3793 2009-05-09  Jan Hubicka  <jh@suse.cz>
3794
3795         PR middle-end/40080
3796         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3797         indirect calls; verify cgraph afterwards.
3798
3799 2009-05-09  Jan Hubicka  <jh@suse.cz>
3800
3801         PR bootstrap/40082
3802         * ipa.c (update_inlined_to_pointer): New function.
3803         (cgraph_remove_unreachable_nodes): Use it.
3804
3805 2009-05-09  Jan Hubicka  <jh@suse.cz>
3806
3807         * tree-eh.c (struct leh_state): Remove prev_try.
3808         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3809         not track prev_try.
3810         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3811         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3812         remove_eh_handler_and_replace, foreach_reachable_handler,
3813         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3814         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3815         (gen_eh_region_cleanup): Update prototype.
3816
3817 2009-05-09  Jan Hubicka  <jh@suse.cz>
3818
3819         PR middle-end/40043
3820         * except.c (copy_eh_region): Always set prev_try.
3821         (redirect_eh_edge_to_label): Find outer try.
3822         (foreach_reachable_handler): When looking for prev try
3823         handle case where previous try is not going to be taken.
3824
3825 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3826
3827         PR tree-optimization/40049
3828         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3829         only vector/vector shifts, convert the type of the constant to the
3830         appropriate type to avoid building incorrect trees, which
3831         eventually have problems with garbage collection.
3832
3833 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3834
3835         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3836         -1 for complex floating-point types if honoring signed zeros.
3837
3838 2009-05-08  Jan Hubicka  <jh@suse.cz>
3839
3840         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3841         argument; handle correctly when profile is absent.
3842         (build_cgraph_edges): Update.
3843         (rebuild_cgraph_edges): Update.
3844         * cgraph.c: Do not include varray.h.
3845         (cgraph_set_call_stmt_including_clones): New function.
3846         (cgraph_create_edge_including_clones): Likewise
3847         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3848         (cgraph_update_edges_for_call_stmt): Handle clones.
3849         (cgraph_remove_node): Handle clone tree.
3850         (cgraph_remove_node_and_inline_clones): New function.
3851         (dump_cgraph_node): Dump clone tree.
3852         (cgraph_clone_node): Handle clone tree.
3853         (clone_function_name): Bring here from tree-inline.c.
3854         (cgraph_create_virtual_clone): New function.
3855         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3856         (cgraph_clone_info): New function.
3857         (strut cgraph_node): Add clone_info and new clone tree pointers.
3858         (cgraph_remove_node_and_inline_clones,
3859         cgraph_set_call_stmt_including_clones,
3860         cgraph_create_edge_including_clones,
3861         cgraph_create_virtual_clone): Declare.
3862         (cgraph_function_versioning): Use VEC argument.
3863         (compute_call_stmt_bb_frequency): Update prototype.
3864         (cgraph_materialize_all_clones): New function.
3865         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3866         (ipcp_create_replace_map): Update to VECtors.
3867         (ipcp_update_callgraph): Use virtual clones.
3868         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3869         (ipcp_update_profiling): Do not update local profiling.
3870         (ipcp_insert_stage): Use VECtors and virtual clones.
3871         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3872         (clone_of_p): New function.
3873         (cgraph_preserve_function_body_p): Use clone tree.
3874         (cgraph_optimize): Materialize clones.
3875         (cgraph_function_versioning): Update for VECtors.
3876         (save_inline_function_body): Use clone tree.
3877         (cgraph_materialize_clone): New function.
3878         (cgraph_materialize_all_clones): Likewise.
3879         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3880         * ipa.c: Include gimple.h.
3881         (cgraph_remove_unreachable_nodes): Use clone tree.
3882         * ipa-prop.c (ipa_note_param_call): Update call to
3883         compute_call_stmt_bb_frequencycall.
3884         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3885         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3886         (copy_bb): Handle updating of clone tree; add new edge when new call
3887         appears.
3888         (expand_call_inline): Be strict about every call having edge.
3889         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3890         (delete_unreachable_blocks_update_callgraph): New function.
3891         (tree_function_versioning): Use VECtors; always remove unreachable
3892         blocks and fold conditionals.
3893         * tree-inline.h: Do not include varray.h.
3894         (tree_function_versioning): Remove.
3895         * Makefile.in (GTFILES): Remove tree-inline.c
3896         * passes.c (do_per_function): Do only functions having body.
3897         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3898         tree.
3899
3900 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
3901             Andrew Morrow  <acm@google.com>
3902
3903         PR c/36892
3904         * c-common.c (c_common_attribute_table): Permit deprecated
3905         attribute to take an optional argument.
3906         (handle_deprecated_attribute): If the optional argument to
3907         __attribute__((deprecated)) is not a string ignore the attribute
3908         and emit a warning.
3909
3910         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3911         * c-typeck.c (build_component_ref): Likewise.
3912         (build_external_ref): Likewise.
3913
3914         * toplev.c (warn_deprecated_use): Add an attribute argument.
3915         Emit the message associated with __attribute__((deprecated)).
3916
3917         * toplev.h (warn_deprecated_use): Updated.
3918
3919         * doc/extend.texi: Document new optional parameter to
3920         __attribute__((deprecated))
3921
3922 2009-05-08  Michael Eager <eager@eagercon.com>
3923
3924         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3925         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3926
3927 2009-05-08  Richard Guenther  <rguenther@suse.de>
3928
3929         PR tree-optimization/40062
3930         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3931         Avoid exponential behavior.
3932
3933 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3934
3935         PR rtl-optimization/33928
3936         PR 26854
3937         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3938         process_uses, build_single_def_use_links): New.
3939         (update_df): Update use_def_ref.
3940         (forward_propagate_into): Use get_def_for_use instead of use-def
3941         chains.
3942         (fwprop_init): Call build_single_def_use_links and let it initialize
3943         dataflow.
3944         (fwprop_done): Free use_def_ref.
3945         (fwprop_addr): Eliminate duplicate call to df_set_flags.
3946         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
3947         df_rd_simulate_one_insn): New.
3948         (df_rd_bb_local_compute_process_def): Update head comment.
3949         (df_chain_create_bb): Use the new RD simulation functions.
3950         * df.h (df_rd_simulate_artificial_defs_at_top, 
3951         df_rd_simulate_one_insn): New.
3952         * opts.c (decode_options): Enable fwprop at -O1.
3953         * doc/invoke.texi (-fforward-propagate): Document this.
3954
3955 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3956
3957         PR c/24581
3958         * c-typeck.c (build_binary_op): Handle arithmetic between one real
3959         and one complex operand specially.
3960         * tree-complex.c (some_nonzerop): Do not identify a real value as
3961         zero if flag_signed_zeros.
3962
3963 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3964
3965         PR rtl-optimization/33928
3966         * loop-invariant.c (record_use): Fix && vs. || mishap.
3967
3968 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3969
3970         PR rtl-optimization/33928
3971         * loop-invariant.c (struct use): Add addr_use_p.
3972         (struct def): Add n_addr_uses.
3973         (struct invariant): Add cheap_address.
3974         (create_new_invariant): Set cheap_address.
3975         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
3976         (record_uses): Pass df_ref to record_use.
3977         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3978         used only as such.
3979
3980 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3981
3982         * config/sh/sh.c: Do not include c-pragma.h.
3983
3984 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3985
3986         * config/spu/spu.c: Remove include of c-common.h.
3987
3988 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
3989
3990         PR c/39037
3991         * c-common.h (mark_valid_location_for_stdc_pragma,
3992         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3993         clear_float_const_decimal64, float_const_decimal64_p): New.
3994         * c.opt (Wunsuffixed-float-constants): New.
3995         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3996         unsuffixed float constant, handle new warning.
3997         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3998         * c-decl.c (c_scope): New flag float_const_decimal64.
3999         (set_float_const_decimal64, clear_float_const_decimal64,
4000         float_const_decimal64_p): New.
4001         (push_scope): Set new flag.
4002         * c-parser.c (c_parser_translation_unit): Mark when it's valid
4003         to use STDC pragmas.
4004         (c_parser_external_declaration): Ditto.
4005         (c_parser_compound_statement_nostart): Ditto.
4006         * c-pragma.c (valid_location_for_stdc_pragma,
4007         mark_valid_location_for_stdc_pragma,
4008         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
4009         handle_pragma_float_const_decimal64): New.
4010         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
4011         * cp/semantics.c (valid_location_for_stdc_pragma_p,
4012         set_float_const_decimal64, clear_float_const_decimal64,
4013         float_const_decimal64_p): New dummy functions.
4014         * doc/extend.texi (Decimal Float): Remove statement that the
4015         pragma, and suffix for double constants, are not supported.
4016         * doc/invoke.texi (Warning Options): List new option.
4017         (-Wunsuffixed-float-constants): New.
4018
4019 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
4020
4021         * config/i386/i386.c: Do not include c-common.h.
4022
4023 2009-05-07  Mark Heffernan  <meheff@google.com>
4024
4025         * doc/invoke.texi (Debugging Options): Document change of debugging
4026         dump location.
4027         * opts.c (decode_options): Make dump_base_name relative to
4028         aux_base_name directory.
4029
4030 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
4031
4032         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
4033         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
4034
4035 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
4036
4037         * Makefile.in (install-plugin): Simplify a bit.
4038
4039 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
4040
4041         * Makefile.in (OBJS-common): Add regcprop.o.
4042         (regcprop.o): New.
4043         * timevar.def (TV_CPROP_REGISTERS): New.
4044         * regrename.c (regrename_optimize): Return 0.
4045         (rest_of_handle_regrename): Delete.
4046         (pass_rename_registers): Point to regrename_optimize.
4047         (struct value_data_entry, struct value_data, 
4048         kill_value_one_regno, kill_value_regno, kill_value,
4049         set_value_regno, init_value_data, kill_clobbered_value,
4050         kill_set_value, kill_autoinc_value, copy_value,
4051         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
4052         replace_oldest_value_reg, replace_oldest_value_addr,
4053         replace_oldest_value_mem, copyprop_hardreg_forward_1,
4054         debug_value_data, validate_value_data): Move...
4055         * regcprop.c: ... here.
4056         (rest_of_handle_cprop): Delete.
4057         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
4058
4059 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
4060
4061         PR middle-end/40057
4062         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
4063         GEN_INT for 1 << bitnum.
4064         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
4065         build_int_cst_type.
4066
4067 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
4068
4069         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
4070         Remove wrong description of "nand" operation.
4071
4072 2009-05-06  Richard Guenther  <rguenther@suse.de>
4073             Adam Nemet  <anemet@caviumnetworks.com>
4074
4075         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
4076         comment.  Add that if LHS is not a gimple register, then RHS1 has
4077         to be a single object (GIMPLE_SINGLE_RHS).
4078
4079 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
4080
4081         * expr.c (get_def_for_expr): Move it up in the file.
4082         (store_field): When expanding a bit-field store, look at the
4083         defining gimple stmt for the masking conversion.
4084
4085 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
4086
4087         PR middle-end/39986
4088         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
4089         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
4090         32-bit memcpy into long.
4091
4092 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
4093
4094         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
4095         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
4096         new_reg_loc_descr.
4097         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
4098         instead of appending DW_OP_deref*.
4099
4100 2009-05-06  Michael Matz  <matz@suse.de>
4101
4102         PR middle-end/40021
4103         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
4104         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
4105
4106 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
4107
4108         * Makefile.in (install-plugin): Fix srcdir handling.
4109
4110 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
4111
4112         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
4113         when processing for not_regs_needed bitmap.
4114         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
4115         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
4116         handling it for rhs. 
4117
4118 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4119
4120         * config/i386/i386.md (unnamed inc/dec peephole): Use
4121         optimize_insn_for_size_p instead of optimize_size.
4122         * config/i386/predicates.md (incdec_operand): Likewise.
4123         (aligned_operand): Likewise.
4124         * config/i386/sse.md (divv8sf3): Likewise.
4125         (sqrtv8sf2): Likewise.
4126
4127 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4128
4129         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
4130
4131         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
4132
4133 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
4134
4135         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
4136         ssemodesuffixf2c with avxmodesuffixf2c.
4137
4138 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
4139
4140         PR c/40032
4141         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
4142
4143 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
4144
4145         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
4146         (struct tree_base): Adjust spacing for 8 bit boundaries.
4147         (struct tree_decl_common): Add decl_by_reference_flag bit.
4148         (DECL_BY_REFERENCE): Adjust.
4149         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
4150         print DECL_BY_REFERENCE bit.
4151         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
4152         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
4153         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
4154         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
4155         unconditionally.
4156
4157         PR middle-end/39666
4158         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
4159         range of the type, but default label is missing, add it with one
4160         of the existing labels instead of adding a new label for it.
4161
4162 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
4163
4164         * dwarf.h: Remove.
4165
4166 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
4167
4168         * Makefile.in (enable_plugin, plugin_includedir): New.
4169         (install): Depend on install-plugin.
4170         (PLUGIN_HEADERS): New.
4171         (install-plugin): New.
4172         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
4173
4174 2009-05-05  Richard Guenther  <rguenther@suse.de>
4175
4176         PR tree-optimization/40022
4177         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
4178         the only vuse.
4179         (phivn_valid_p): Fix tuplification error, simplify.
4180         (phiprop_insert_phi): Add dumps.
4181         (propagate_with_phi): Simplify.
4182
4183 2009-05-05  Richard Guenther  <rguenther@suse.de>
4184
4185         PR middle-end/40023
4186         * builtins.c (gimplify_va_arg_expr): Properly build the address.
4187
4188 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
4189
4190         * tree.h (strip_float_extensions): Remove duplicate declaration.
4191         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
4192         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
4193         block_ultimate_origin): Rearrange the declarations line to match the
4194         comment that indicates the .c file which the functions are defined.
4195         (dwarf2out_*, set_decl_rtl): Add comment.
4196         (get_base_address): Adjust comment.
4197         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
4198         declarations line and add comment.
4199         (is_builtin_name): Add blank after function name, for clarity.
4200
4201 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4202
4203         * attribs.c (decl_attributes): Use %qE for identifiers in
4204         diagnostics.
4205         * cgraphunit.c (verify_cgraph_node): Translate function names to
4206         locale character set in diagnostics.
4207         * coverage.c (get_coverage_counts): Use %qE for identifiers in
4208         diagnostics.
4209         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
4210         Document that functions are named in UTF-8.
4211         * expr.c (expand_expr_real_1): Translate function names to locale
4212         character set in diagnostics.
4213         * gimplify.c (omp_notice_variable, omp_is_private,
4214         gimplify_scan_omp_clauses): Use %qE for identifiers in
4215         diagnostics.
4216         * langhooks.c (lhd_print_error_function): Translate function names
4217         to locale character set.
4218         * langhooks.h (decl_printable_name): Document that return value is
4219         in internal character set.
4220         * stmt.c: Include pretty-print.h
4221         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
4222         diagnostics.
4223         (resolve_operand_name_1): Translate named operand name to locale
4224         character set.
4225         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
4226         diagnostics.
4227         * toplev.c (announce_function): Translate function names to locale
4228         character set.
4229         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
4230         (default_tree_printer): Use pp_identifier or translate identifiers
4231         to locale character set.  Mark "<anonymous>" for translation.
4232         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
4233         for identifiers in diagnostics.
4234         * tree.c (handle_dll_attribute): Use %qE for identifiers in
4235         diagnostics.
4236         * varasm.c (output_constructor): Use %qE for identifiers in
4237         diagnostics.
4238
4239 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
4240
4241         * configure.ac: use ` ` instead of $()
4242         * configure: Regenerate.
4243
4244 2009-05-05  Ben Elliston  <bje@au.ibm.com>
4245
4246         * config/pa/linux-atomic.c: Eliminate conditional include of
4247         errno.h on non-LP64 systems to simplify build requirements.
4248
4249 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4250
4251         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
4252         diagnostics.
4253         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
4254         and pass value to identifier_to_locale.
4255         (warn_variable_length_array): Make name a tree.
4256         (grokdeclarator): Separate diagnostic texts for named and unnamed
4257         declarators.  Use %qE for named declarators.
4258         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
4259         diagnostics.
4260         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
4261         identifiers in diagnostics.
4262         * c-typeck.c (push_member_name, start_init): Pass identifiers to
4263         identifier_to_locale.  Mark "anonymous" strings for translation.
4264
4265 2009-05-04  Michael Eager <eager@eagercon.com>
4266
4267         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
4268         address for DImode/DFmode only if double-precision FP regs.
4269
4270 2009-05-04  Michael Eager <eager@eagercon.com>
4271
4272         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
4273         TARGET_SINGLE_FLOAT check.
4274
4275 2009-05-04  Michael Eager <eager@eagercon.com>
4276
4277         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
4278
4279 2009-05-04  Michael Eager <eager@eagercon.com>
4280
4281         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
4282         * config/rs6000/t-xilinx: New
4283
4284 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
4285
4286         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
4287         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
4288         * gcc/explow.c (memory_address): Use target hook.
4289         * gcc/targhooks.c (default_legitimize_address): New.
4290         * gcc/targhooks.h (default_legitimize_address): New.
4291         * gcc/target.h (legitimize_address): New.
4292         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
4293         (TARGET_INITIALIZER): Include it.
4294         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
4295
4296         * config/bfin/bfin-protos.h (legitimize_address): Remove.
4297         * config/bfin/bfin.c (legitimize_address): Remove.
4298         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
4299         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
4300         Remove.
4301         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
4302         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
4303
4304         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
4305         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
4306         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
4307         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
4308         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
4309         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
4310         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
4311         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
4312         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
4313         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
4314         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
4315         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
4316         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
4317         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
4318         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
4319         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
4320         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
4321         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
4322         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
4323         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
4324         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
4325         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
4326         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
4327
4328         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
4329         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
4330         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
4331         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
4332         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
4333         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
4334         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
4335         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
4336         (thumb_legitimize_address): Delete.
4337         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
4338         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
4339         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
4340         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
4341         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
4342         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
4343         Delete.
4344         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
4345         Delete.
4346
4347         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
4348         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
4349         * config/m32r/m32r.c (m32r_legitimize_address): New.
4350         * config/m68k/m68k.c (m68k_legitimize_address): New.
4351         * config/score/score.c (score_legitimize_address): Standardize.
4352         * config/score/score3.c (score3_legitimize_address): Standardize.
4353         * config/score/score3.h (score3_legitimize_address): Adjust.
4354         * config/score/score7.c (score7_legitimize_address): Standardize.
4355         * config/score/score7.h (score7_legitimize_address): Adjust.
4356         * config/sh/sh.c (sh_legitimize_address): New.
4357         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
4358
4359         * gcc/config/s390/s390.c (legitimize_address): Rename to...
4360         (s390_legitimize_address): ... this.
4361         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
4362         (sparc_legitimize_address): ... this.
4363         * gcc/config/i386/i386.c (legitimize_address): Rename to...
4364         (ix86_legitimize_address): ... this.
4365         * gcc/config/avr/avr.c (legitimize_address): Rename to...
4366         (avr_legitimize_address): ... this.
4367         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
4368         (mn10300_legitimize_address): ... this.
4369         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
4370         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
4371         (alpha_expand_mov): Adjust call.
4372
4373         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
4374         * config/spu/spu.c (spu_legitimize_address): Likewise.
4375         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
4376         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
4377
4378 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
4379
4380         * intl.c (locale_encoding, locale_utf8): New.
4381         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
4382         * intl.h (locale_encoding, locale_utf8): Declare.
4383         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
4384         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
4385         New.
4386         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
4387         argument.
4388         (pp_tree_identifier): Define to call pp_base_tree_identifier.
4389         (pp_base_tree_identifier): Declare as function.
4390         (identifier_to_locale): Declare.
4391         * Makefile.in (pretty-print.o): Update dependencies.
4392         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
4393
4394 2009-05-04  Richard Guenther  <rguenther@suse.de>
4395
4396         PR middle-end/40015
4397         * builtins.c (fold_builtin_memory_op): Do not decay to element
4398         type if the size matches the whole array.
4399
4400 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4401
4402         * expmed.c (synth_mult): When trying out a shift, pass the result
4403         of a signed shift.
4404
4405 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4406
4407         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
4408         (shiftsub1_cost): New.
4409         (init_expmed): Compute shiftsub1_cost.
4410         (synth_mult): Optimize multiplications by constants of the form
4411         -(2^^m-1) for some constant positive integer m.
4412
4413 2009-05-03  Richard Guenther  <rguenther@suse.de>
4414
4415         PR c/39983
4416         * c-typeck.c (array_to_pointer_conversion): Do not built
4417         ADDR_EXPRs of arrays of pointer-to-element type.
4418         * c-gimplify.c (c_gimplify_expr): Revert change fixing
4419         up wrong ADDR_EXPRs after-the-fact.
4420         * c-common.c (strict_aliasing_warning): Strip pointer
4421         conversions for obtaining the original type.
4422         * builtins.c (fold_builtin_memset): Handle array types.
4423         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
4424         and array types
4425
4426 2009-05-03  Richard Guenther  <rguenther@suse.de>
4427
4428         PR middle-end/23329
4429         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
4430         Do not lose casts from array types with unknown extent to array
4431         types with known extent.
4432         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
4433         alias set compatibility.
4434
4435 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
4436
4437         * flags.h (extra_warnings): Delete.
4438         * toplev.c (process_options): Handle Wuninitialized here.
4439         * opts.c (extra_warnings): Delete.
4440         (set_Wextra): Delete.
4441         (common_handle_option): -Wextra can be handled automatically.
4442         * c-opts.c (c_common_handle_option): Delete obsolete code.
4443         (c_common_post_options): Simplify comment.
4444         * common.opt (W): Add Var.
4445         (Wextra): Add Var.
4446         (Wuninitialized): Initialize to -1.
4447
4448 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
4449             Richard Guenther  <rguenther@suse.de>
4450
4451         * expr.c (get_def_for_expr): New function.
4452         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
4453         SSA rather than trees.
4454         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
4455         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
4456         
4457 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
4458
4459         * c-common.c (reswords): Add _Imaginary.
4460         * c-common.c (enum rid): Add RID_IMAGINARY.
4461
4462 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
4463
4464         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
4465         Patch by Richard Guenther.
4466
4467 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
4468
4469         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
4470         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
4471         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
4472         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
4473         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
4474         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
4475         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
4476         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
4477         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
4478         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
4479         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
4480         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
4481         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
4482         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
4483         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
4484         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
4485         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
4486         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
4487
4488 2009-05-02  Richard Guenther  <rguenther@suse.de>
4489
4490         PR tree-optimization/39940
4491         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
4492         doing so.
4493
4494 2009-05-02  Richard Guenther  <rguenther@suse.de>
4495
4496         PR middle-end/40001
4497         * tree-ssa.c (execute_update_addresses_taken): Properly check
4498         if we can mark a variable DECL_GIMPLE_REG_P.
4499         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
4500         back to the end of the function.
4501         (is_gimple_reg_type): Remove complex type special casing.
4502         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
4503         if not optimizing.
4504
4505 2009-05-02  Ben Elliston  <bje@au.ibm.com>
4506
4507         * doc/collect2.texi (Collect2): Document search path behaviour
4508         when configured with --with-ld.
4509
4510 2009-05-02  Jan Hubicka  <jh@suse.cz>
4511
4512         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
4513         parameter; update callers.
4514         (coalesce_cost_edge): EH edges are costier because they needs
4515         splitting even if not critical and even more costier when there are
4516         multiple EH predecestors.
4517
4518 2009-05-02  Jan Hubicka  <jh@suse.cz>
4519
4520         * except.c (remove_eh_handler_and_replace): Handle updating after
4521         removing TRY blocks.
4522
4523 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
4524
4525         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
4526
4527 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
4528
4529         * varasm.c: Do not include c-pragma.h.
4530         * attribs.c: Do not incude c-common.h.
4531
4532 2009-05-01  Michael Matz  <matz@suse.de>
4533
4534         * calls.c (initialize_argument_information): Handle SSA names like
4535         decls with a non MEM_P DECL_RTL.
4536
4537 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4538
4539         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
4540         * ipa-utils.c: Likewise.
4541         * ipa-type-escape.c: Likewise.
4542         * cgraphunit.c Do not include c-common.h.
4543         * ipa-pure-const.c: Likewise.
4544         * tree-if-conv.c: Likewise.
4545         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
4546         * ipa-struct-reorg.c: Likewise.
4547         * tree-nomudflap.c: Likewise.
4548         * tree-ssa-structalias.c: Likewise.
4549
4550 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4551
4552         * store-motion.c: Many cleanups to make this pass a first-class
4553         citizen instead of an appendix to gcse load motion.  Add TODO list
4554         to make this pass faster/cleaner/better.
4555
4556         (struct ls_expr): Post gcse.c-split cleanups.
4557         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
4558         "stores" field to "avail_stores".
4559         (pre_ldst_mems): Rename to store_motion_mems.
4560         (pre_ldst_table): Rename to store_motion_mems_table.
4561         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
4562         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
4563         (ldst_entry): Rename to st_expr_entry, update users.
4564         (free_ldst_entry): Rename to free_st_expr_entry, update users.
4565         (free_ldst_mems): Rename to free_store_motion_mems, update users.
4566         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
4567         update caller.
4568         (first_ls_expr): Rename to first_st_expr, update users.
4569         (next_ls_expr): Rename to next_st_expr, update users.
4570         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
4571         fields properly for store motion instead of names inherited from load
4572         motion in gcse.c.
4573         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
4574         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
4575         are done with it.
4576
4577         (ae_kill): Rename to st_kill, update users.
4578         (ae_gen): Rename to st_avloc, update users.
4579         (transp): Rename to st_transp, update users.
4580         (pre_insert_map): Rename to st_insert_map, update users.
4581         (pre_delete_map): Rename to st_delete_map, update users.
4582         (insert_store, build_store_vectors, free_store_memory,
4583         one_store_motion_pass): Update for abovementioned changes.
4584
4585         (gcse_subst_count, gcse_create_count): Remove.
4586         (one_store_motion_pass): New statistics counters "n_stores_deleted"
4587         and "n_stores_created", local variables.
4588
4589         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
4590         use for_each_rtx.
4591
4592         (regvec, compute_store_table_current_insn): Remove.
4593         (reg_set_info, reg_clear_last_set): Remove.
4594         (compute_store_table): Use DF caches instead of local dataflow
4595         solvers.
4596
4597 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
4598
4599         * c-objc-common.c (c_tree_printer): Print identifiers with
4600         pp_identifier, not pp_string.  Mark "({anonymous})" for
4601         translation.
4602         * c-pretty-print.c (pp_c_ws_string): New.
4603         (pp_c_cv_qualifier, pp_c_type_specifier,
4604         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
4605         pp_c_storage_class_specifier, pp_c_function_specifier,
4606         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
4607         pp_c_primary_expression, pp_c_postfix_expression,
4608         pp_c_unary_expression, pp_c_shift_expression,
4609         pp_c_relational_expression, pp_c_equality_expression,
4610         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
4611         use pp_string and pp_c_ws_string in place of pp_identifier and
4612         pp_c_identifier for non-identifiers.  Mark English strings for
4613         translation.
4614         * c-pretty-print.h (pp_c_ws_string): Declare.
4615
4616 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
4617             Roland McGrath <roland@redhat.com>
4618
4619         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
4620         (ENABLE_LD_BUILDID): New configuration option.
4621         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
4622         (LINK_BUILDID_SPEC): New macro.
4623         (init_spec): If defined, prepend it between LINK_EH_SPEC and
4624         link_spec.
4625         * doc/install.texi: Document --enable-linker-build-id option.
4626         * configure: Rebuild.
4627         * config.in: Rebuild.
4628
4629 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
4630
4631         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
4632         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
4633         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
4634         MIPS_GP_SAVE_AREA_SIZE.
4635         * config/mips/mips.c (struct mips_frame_info): Update comment
4636         before arg_pointer_offset and hard_frame_pointer_offset.
4637         (mips_compute_frame_info): Update diagram before function: to
4638         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
4639         indicate the position of frame_pointer_rtx with -fstack-protector and
4640         to show args_size.  Don't allocate cprestore area for leaf functions
4641         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
4642         cprestore_size.
4643         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
4644
4645 2009-04-30  Michael Matz  <matz@suse.de>
4646
4647         PR tree-optimization/39955
4648         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
4649
4650 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
4651
4652         * ira.c (setup_cover_and_important_classes):  Use safe macro
4653         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
4654         directly.
4655         * genpreds.c (write_tm_preds_h):  Output suitable definition of
4656         REG_CLASS_FOR_CONSTRAINT.
4657
4658 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4659
4660         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
4661         instead of an int.
4662         * bitmap.c (bitmap_descriptor): Likewise.
4663         * ggc-common.c (loc_descriptor): Likewise.
4664         * varray.c (varray_descriptor): Likewise.
4665         * vec.c (vec_descriptor): Likewise.
4666
4667 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
4668
4669         * Makefile.in (dce.o): Add $(EXCEPT_H).
4670         * dce.c: Include except.h and delete redundant vector definitions.
4671         (deletable_insn_p): Return false for non-call insns that can throw
4672         if DF is running.
4673
4674 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
4675
4676         * gcse.c (ae_gen): Remove.
4677         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
4678         and make non-static function to make it available in store-motion.c.
4679         Update call sites with search-and-replace.
4680         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
4681         extract_mentioned_regs, extract_mentioned_regs_helper,
4682         find_moveable_store, compute_store_table, load_kills_store, find_loads,
4683         store_killed_in_insn, store_killed_after, store_killed_before,
4684         build_store_vectors, insert_insn_start_basic_block, insert-store,
4685         remove_reachable_equiv_notes, replace_store_insn, delete_store,
4686         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
4687         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
4688         * store-motion.c: ...new file.  Also copy data structures from gcse.c
4689         and clean up to remove parts not used by store motion.
4690         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
4691         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
4692
4693 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4694
4695         PR target/38571
4696         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
4697         when optimizing for size.
4698
4699 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
4700
4701         * gcse.c (gcse_constant_p): Fix typo in last change.
4702
4703 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4704
4705         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
4706
4707 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
4708
4709         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
4710
4711 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
4712
4713         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
4714         CONST_HIGH_PART result.
4715
4716 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
4717
4718         * config/avr/avr.c (initial_elimination_offset): Rename to
4719         avr_initial_elimination_offset.
4720         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
4721         change return type to bool.
4722         (avr_can_eliminate): New function.
4723         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
4724         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
4725         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
4726         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
4727         avr_initial_elimination_offset.
4728         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
4729         (avr_initial_elimination_offset): Define.
4730
4731 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
4732             Steven Bosscher  <steven@gcc.gnu.org>
4733
4734         PR rtl-optimization/39938
4735         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
4736         * cfgrtl.c: Include insn-attr.h.
4737         (rest_of_pass_free_cfg): New function.
4738         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
4739         * resource.c (init_resource_info): Remove call to df_analyze.
4740
4741 2009-04-29  Richard Guenther  <rguenther@suse.de>
4742
4743         PR target/39943
4744         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
4745         allow conversion to signed integers.
4746
4747 2009-04-29  Richard Guenther  <rguenther@suse.de>
4748
4749         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
4750         shifts of floating point vectors if the shift amount is
4751         a constant multiple of the element size.
4752
4753 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4754             Michael Matz  <matz@suse.de>
4755
4756         PR middle-end/39927
4757         PR bootstrap/39929
4758         * tree-outof-ssa.c (emit_partition_copy): New function.
4759         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
4760         insert_part_to_rtx_on_edge): Perform the partition base var
4761         copy using emit_partition_copy.
4762         (insert_value_copy_on_edge): Convert constants to the right mode.
4763         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
4764         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
4765
4766 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4767
4768         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
4769         scan backwards to try to find a constant to initialize it.
4770
4771         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
4772         insn before the loop_end instruction, don't look past labels.
4773
4774 2009-04-29  Richard Guenther  <rguenther@suse.de>
4775
4776         PR middle-end/39937
4777         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4778         loose type conversions.
4779         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
4780         stmts only if there are no uses of its definition.
4781
4782 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4783
4784         * config/bfin/bfin.h (splitting_loops): Declare.
4785         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
4786         Reorder bit definitions to be ascending.
4787         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
4788         * config/bfin/bfin.c (splitting_loops): New variable.
4789         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
4790         (struct loop_info): Remove members INIT and LOOP_INIT.
4791         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
4792         the LSETUP sequence.  Allow LC to be loaded from any register, but
4793         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
4794         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
4795         set to 1.
4796         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
4797         of reload_completed.
4798
4799         From Jie Zhang:
4800         * config/bfin/bfin.md (movsi_insn): Refine constraints.
4801
4802 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
4803
4804         * Makefile.in (PLUGIN_VERSION_H): New.
4805         (OBJS-common): Remove plugin-version.o.
4806         (plugin.o): Depend on (PLUGIN_VERSION_H).
4807         (plugin-version.o): Remove.
4808         * configure: Regenerate
4809         * configure.ac: Create plugin-version.h.
4810         * gcc-plugin.h (plugin_gcc_version): Remove.
4811         (plugin_default_version_check): Change signature.
4812         * plugin-version.c: Remove.
4813         * plugin.c: Include plugin-version.h.
4814         (str_plugin_gcc_version_name): Remove.
4815         (try_init_one_plugin): Pass gcc version to plugin_init.
4816         (plugin_default_version_check): Both gcc and plugin versions are now
4817         arguments.
4818
4819 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4820         
4821         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
4822         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
4823         Remove special case testing for last insn of inner loops. Don't fail
4824         if the loop ends with a jump, emit an extra nop instead.
4825
4826         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
4827         DREGS rather than comparing directly.  Remove code that tries to
4828         account for latencies.
4829
4830 2009-04-29  Richard Guenther  <rguenther@suse.de>
4831
4832         PR tree-optimization/39941
4833         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
4834         eliminating an indirect call.
4835
4836 2009-04-29  Richard Guenther  <rguenther@suse.de>
4837
4838         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
4839         parameter.  Allow invariants as base if !require_lvalue.
4840         (verify_gimple_assign_single): Adjust.
4841
4842 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4843
4844         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
4845         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
4846         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
4847         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
4848         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
4849         a VEC_SELECT.
4850         * config/bfin/bfin.c (bfin_expand_builtin,
4851         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
4852
4853 2009-04-28  Richard Guenther  <rguenther@suse.de>
4854
4855         * tree-vect-loop.c (get_initial_def_for_induction): Use
4856         correct types for pointer increment.
4857
4858 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4859
4860         * toplev.c (print_version): Update GMP version string calculation.
4861
4862 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
4863
4864         PR rtl-optimization/39938
4865         * resource.c (init_resource_info): Add call to df_analyze.
4866
4867 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4868
4869         * config/alpha/alpha.md (usegp): Cast the result of
4870         alpha_find_lo_sum_using_gp to enum attr_usegp.
4871         * config/alpha/alpha.c (override_options): Remove end-of-structure
4872         marker element from cpu_table.  Use array size of cpu_table to handle
4873         -mcpu and -mtune options.
4874         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
4875
4876 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
4877
4878         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
4879         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
4880         tune_32 and tune_64.
4881         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
4882         support on PowerPC.
4883         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
4884         * config/rs6000/option-defaults.h: ... here.  New file.
4885         (OPT_64, OPT_32): Define.
4886         (MASK_64BIT): Define to 0 if not already defined.
4887         (OPT_ARCH64, OPT_ARCH32): Define.
4888         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
4889         and tune_64.
4890
4891 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4892
4893         * config/arm/arm.c (arm_override_options): Emit error on using
4894         fpa with AAPCS.
4895
4896 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4897
4898         PR rtl-optimization/39914
4899         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
4900         registers for allocnos created from user-defined variables only
4901         when not optimizing.
4902
4903 2009-04-28  Richard Guenther  <rguenther@suse.de>
4904
4905         PR middle-end/39937
4906         * fold-const.c (fold_binary): Use distribute_real_division only
4907         on float types.
4908
4909 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
4910
4911         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
4912         add hpux-stdint.h to tm_file.
4913         (hppa[12]*-*-hpux11*): Ditto.
4914         (ia64*-*-hpux*): Ditto.
4915         * config/hpux-stdint.h: New.
4916         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
4917         __STDC_EXT__ for all compiles.
4918         * config/pa/pa-hpux.h: Ditto.
4919         * config/pa/pa-hpux10.h: Ditto.
4920         * config/pa/pa-hpux11.h: Ditto.
4921
4922 2009-04-28  Catherine Moore  <clm@codesourcery.com>
4923
4924         * debug.h (set_name): Add comment.
4925
4926 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
4927
4928         PR target/39929
4929         * config/darwin.c (machopic_gen_offset): Check
4930         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
4931         * config/arm/arm.c (require_pic_register): Likewise.
4932
4933 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
4934
4935         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
4936         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
4937         m32c_promote_prototypes): Delete.
4938
4939 2009-04-28  Michael Matz  <matz@suse.de>
4940
4941         PR middle-end/39922
4942         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
4943         constants.
4944
4945 2009-04-28  Richard Guenther  <rguenther@suse.de>
4946
4947         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
4948
4949 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4950
4951         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
4952         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
4953         * config/arm/arm-tune.md: Regenerate.
4954
4955 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
4956
4957         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
4958         block if there are complex incoming edges.
4959         (sel_merge_blocks): Remove useless assert.
4960         (sel_redirect_edge_and_branch): Check that edge was redirected.
4961         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
4962         (sel_find_rgns): Delete declaration.
4963         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
4964         the region when it is not a preheader.
4965
4966 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4967
4968         PR c/39323
4969         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
4970
4971 2009-04-28  Richard Guenther  <rguenther@suse.de>
4972
4973         * tree.h (SSA_NAME_VALUE): Remove.
4974         (struct tree_ssa_name): Remove value_handle member.
4975         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
4976         array for jump threading.
4977         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
4978         SSA_NAME_VALUEs.
4979         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
4980         * tree-flow.h (threadedge_initialize_values): Declare.
4981         (threadedge_finalize_values): Likewise.
4982         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
4983         (SSA_NAME_VALUE): Define.
4984         (threadedge_initialize_values): New function.
4985         (threadedge_finalize_values): Likewise.
4986         * tree-ssa-dom.c (ssa_name_values): New global variable.
4987         (SSA_NAME_VALUE): Define.
4988         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
4989
4990 2009-04-28  Ira Rosen  <irar@il.ibm.com>
4991
4992         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
4993         Use REPORT_VECTORIZED_LOCATIONS instead 
4994         REPORT_VECTORIZED_LOOPS.
4995         * tree-vectorizer.c (vect_verbosity_level): Make static.
4996         (vect_loop_location): Rename to vect_location.
4997         (vect_set_verbosity_level): Update comment.
4998         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
4999         and vect_location.
5000         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
5001         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
5002         instead REPORT_UNVECTORIZED_LOOPS.
5003         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
5004         and vect_loop_def to vect_external_def and vect_internal_def.
5005         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
5006         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
5007         REPORT_UNVECTORIZED_LOCATIONS.
5008         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
5009         and vect_used_in_loop and to vect_unused_in_scope and 
5010         vect_used_in_scope.
5011         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
5012         (vect_verbosity_level): Remove declaration.
5013         (vect_analyze_operations): Likewise.
5014         (vect_analyze_stmt): Declare.
5015         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
5016         REPORT_UNVECTORIZED_LOCATIONS.
5017         (vect_get_loop_niters): Fix indentation.
5018         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
5019         (vect_analyze_loop_operations): New function.
5020         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
5021         vect_analyze_operations.
5022         (vect_is_simple_reduction): Use new names.
5023         (vectorizable_live_operation, vect_transform_loop): Likewise.
5024         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
5025         to specify whether the data references can be a part of interleaving
5026         chain.
5027         (vect_analyze_data_ref_dependence): Use new names.
5028         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
5029         (vect_create_addr_base_for_vector_ref): Remove redundant code.
5030         * tree-vect-patterns.c (widened_name_p): Use new names.
5031         (vect_recog_dot_prod_pattern): Likewise.
5032         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
5033         (process_use, vect_mark_stmts_to_be_vectorized, 
5034         vect_model_simple_cost, vect_model_store_cost,
5035         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
5036         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
5037         vectorizable_operation, vectorizable_type_demotion,
5038         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
5039         vectorizable_condition): Likewise.
5040         (vect_analyze_operations): Split into vect_analyze_loop_operations
5041         and ...
5042         (vect_analyze_stmt): ... new function.
5043         (new_stmt_vec_info): Use new names.
5044         (vect_is_simple_use): Use new names and fix comment.
5045         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
5046         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
5047
5048 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
5049
5050         PR target/39911
5051         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
5052         and integer modes for x87 operands.  Do not ICE for unsupported size,
5053         generate error instead.  Generate error for unsupported operand types.
5054         ['z']: Do not handle HImode memory operands specially.  Warning
5055         for floating-point operands.  Fallthru to 'Z' for unsupported operand
5056         types.  Do not ICE for unsupported size, generate error instead.
5057         (output_387_binary_op): Use %Z to output operands.
5058         (output_fp_compare): Ditto.
5059         (output_387_reg_move): Ditto.
5060
5061 2009-04-28  Ben Elliston  <bje@au.ibm.com>
5062
5063         PR c++/35652
5064         Revert:
5065
5066         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5067
5068         * builtins.c (c_strlen): Do not warn here.
5069         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
5070         * c-common.c (pointer_int_sum): Take an explicit location.
5071         Warn about offsets out of bounds.
5072         * c-common.h (pointer_int_sum): Adjust declaration.
5073
5074 2009-04-27  Ian Lance Taylor  <iant@google.com>
5075
5076         * collect2.c (is_ctor_dtor): Change type of ret field in struct
5077         names to symkind.
5078         * dce.c (run_fast_df_dce): Change type of old_flags to int.
5079         * df-core.c (df_set_flags): Change return type to int.  Change
5080         type of old_flags to int.
5081         (df_clear_flags): Likewise.
5082         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
5083         (df_get_conditional_uses): Likewise.
5084         * df.h (df_set_flags, df_clear_flags): Update declarations.
5085         * dwarf2out.c (struct indirect_string_node): Change type of form
5086         field to enum dwarf_form.
5087         (AT_string_form): Change return type to enum dwarf_form.
5088         * fixed-value.c (fixed_compare): Add cast to enum type.
5089         * fwprop.c (update_df): Change 0 to VOIDmode.
5090         * gensupport.c: Change 0 to UNKNOWN.
5091         * gimple.h (gimple_cond_code): Add cast to enum type.
5092         * haifa-sched.c (reemit_notes): Add cast to enum type.
5093         * hooks.c (hook_int_void_no_regs): Remove function.
5094         * hooks.h (hook_int_void_no_regs): Remove declaration.
5095         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
5096         * predict.c (combine_predictions_for_insn): Add casts to enum type.
5097         * real.c (real_arithmetic): Add cast to enum type.
5098         (real_compare): Likewise.
5099         * target.h (struct gcc_target): Change return type of
5100         branch_target_register_class to enum reg_class.
5101         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
5102         default_branch_target_register_class.
5103         * targhooks.c (default_branch_target_register_class): New function.
5104         * targhooks.h (default_branch_target_register_class): Declare.
5105         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
5106         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
5107         cast to int.
5108         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
5109         ERROR_MARK.
5110         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
5111         vect_uninitialized_def.  Change 0 to ERROR_MARK.
5112         * tree-vect-stmts.c (supportable_widening_operation): Don't
5113         initialize icode1 and icode2.
5114         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
5115         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
5116         and to STD_C89.
5117         (cmn_err_flag_specs): Change 0 to STD_C89.
5118         (cmn_err_char_table): Likewise.
5119         * config/arm/arm.c (get_arm_condition_code): Change type of code
5120         to enum arm_cond_code.
5121         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
5122         (IWMMXT_BUILTIN2): Likewise.
5123         (neon_builtin_type_bits): Don't define typedef.
5124         (neon_builtin_datum): Change type of bits field to int.
5125         (arm_expand_neon_args): Add cast to enum type.
5126         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
5127         TLS_MODEL_NONE.
5128         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
5129         casts to enum type.
5130         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
5131         MIPS_FP_COND_f.
5132         * config/mips/mips.md (jal_macro): Return enum constant.
5133         (single_insn): Likewise.
5134         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
5135         CODE_FOR_nothing.
5136         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
5137         casts to enum type.
5138         * config/s390/s390.c (s390_tune_flags): Change type to int.
5139         (s390_arch_flags): Likewise.
5140         (s390_handle_arch_option): Change flags field of struct pta to int.
5141         * config/s390/s390.h (s390_tune_flags): Update declaration.
5142         (s390_arch_flags): Likewise.
5143         * config/sh/sh.c (prepare_move_operands): Compare
5144         tls_symbolic_operand result with enum constant.
5145         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
5146         (sh_expand_prologue): Add cast to enum type.
5147         (sh_expand_epilogue): Likewise.
5148         (tls_symbolic_operand): Change return type to enum tls_model.
5149         (fpscr_set_from_mem): Add cast to enum type.
5150         (legitimize_pic_address): Compare tls_symbolic_operand result with
5151         enum constant.
5152         (sh_target_reg_class): Change return type to enum reg_class.
5153         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
5154         PROCESSOR_xxx.
5155         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
5156         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
5157         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
5158         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
5159         (delayed_branch, tls_call_delay): Likewise.
5160         (eligible_for_sibcall_delay): Likewise.
5161         (eligible_for_return_delay): Likewise. 
5162         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
5163         (spu_expand_builtin_1): Likewise.
5164
5165         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
5166         for all types of conversions.
5167         (output_init_element): Issue -Wc++-compat warning if needed when
5168         initializing a bitfield with enum type.
5169         * c-parser.c (c_parser_expression): Set original_type to
5170         original_type of right hand operand of comman operator.
5171
5172 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5173
5174         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
5175         grammar nits.
5176         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
5177         * doc/cpp.texi (Standard Predefined Macros)
5178         (Implementation-defined behavior): Likewise.
5179         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
5180         * doc/gimple.texi (GIMPLE Exception Handling)
5181         (@code{GIMPLE_ASSIGN}): Likewise.
5182         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
5183         * doc/invoke.texi (Warning Options, Optimize Options)
5184         (AVR Options, Darwin Options): Likewise.
5185         (Optimize Options): Reformulate -fwhole-program description.
5186         * doc/loop.texi (Lambda): Likewise.
5187         * doc/md.texi (Output Template, Define Constraints)
5188         (Standard Names, Insn Splitting): Likewise.
5189         * doc/options.texi (Option properties): Likewise.
5190         * doc/passes.texi (Tree-SSA passes): Likewise.
5191         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
5192         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
5193         (File Names and DBX): Likewise.
5194         * doc/trouble.texi (Incompatibilities): Likewise.
5195
5196 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5197
5198         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
5199         instruction is correct.
5200
5201 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
5202
5203         Allow non-constant arguments to conversion intrinsics.
5204         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
5205         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
5206         * spu.c (print_operand): Handle 'v' and 'w'.
5207         (exp2_immediate_p, spu_gen_exp2): Define.
5208         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
5209         spu_convtf_1): Update parameter descriptions.
5210         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
5211         * constraints.md ('v', 'w'): New.
5212         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
5213         Remove.
5214         (i2f, I2F): New define_mode_attr.
5215         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
5216         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
5217         fixuns_truncv4sfv4si2):  Update to use mode attribute.
5218         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
5219         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
5220         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
5221         patterns for combine.
5222
5223 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
5224
5225         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
5226         (cprop, hoist, pre, store_motion): New debug counters.
5227         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
5228         is not an RTL pass anymore.
5229         (pass_profiling): Remove extern decl for pass removed in 2005.
5230         (pass_gcse, pass_jump_bypass): Remove.
5231         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
5232         to 0 for clean state.
5233         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
5234         * cse.c (gate_handle_cse_after_global_opts,
5235         rest_of_handle_cse_after_global_opts): New functions.
5236         (pass_cse_after_global_opts): New pass, does local CSE.
5237         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
5238         (TV_CPROP): New timevar.
5239         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
5240         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
5241         (gcse_main, recompute_all_luids): Remove.
5242         (compute_hash_table_work): Call max_reg_num instead of reading
5243         max_gcse_regno.
5244         (cprop_jump): Don't set run_jump_opt_after_gcse.
5245         (constprop_register): Always allow to alter jumps.
5246         (cprop_insn): Likewise.
5247         (do_local_cprop): Likewise.
5248         (local_cprop_pass): Likewise.  Return non-zero if something changed.
5249         (cprop): Remove function, fold interesting bits into one_cprop_pass.
5250         (find_implicit_sets): Add note about missed optimization opportunity.
5251         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
5252         pass_rtl_cprop execute function.
5253         Don't bother tracking the pass number, each pass gets its own dumpfile
5254         now anyway.
5255         Always allow to alter jumpsand bypass jumps.
5256         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
5257         will just find no suitable set.
5258         (pre_edge_insert): Fix dumping, this function is for PRE only.
5259         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
5260         pass_rtl_pre execute function.
5261         (hoist_code): Return non-zero if something changed.  Keep track of
5262         substitutions and insertions for statistics gathering similar to PRE.
5263         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
5264         called from the pass_rtl_hoist execute function.  Show pass statistics.
5265         (compute_store_table): Use max_reg_num directly instead of using the
5266         formerly global max_gcse_regno.
5267         (build_store_vectors): Likewise.
5268         (replace_store_insn): Fix dumping.
5269         (store_motion): Rename to ...
5270         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
5271         pass, called from the pass_rtl_store_motion execute function.  Keep
5272         track of substitutions and insertions for statistics gathering similar
5273         to PRE.
5274         (bypass_jumps): Remove, fold interesting bits into ...
5275         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
5276         from the pass_rtl_cprop execute function.
5277         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
5278         pass_jump_bypass): Remove.
5279         (gate_handle_gcse, rest_of_handle_gcse): Remove.
5280         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
5281         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
5282         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
5283         (gate_rtl_store_motion, execute_rtl_store_motion,
5284         pass_rtl_store_motion): New.
5285         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
5286         make it clear that -fcse-skip-blocks is a no-op for backward compat.
5287         * passes.c (init_optimization_passes): Remove pass_gcse and
5288         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
5289         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
5290         instead of pass_jump_bypass.
5291
5292 2009-04-27  Richard Guenther  <rguenther@suse.de>
5293
5294         PR middle-end/39928
5295         * gimplify.c (gimplify_expr): If we are required to create
5296         a temporary make sure it ends up as register.
5297
5298 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
5299
5300         PR target/39903
5301         * config/i386/i386.c (construct_container): Don't call
5302         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
5303         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
5304
5305 2009-04-27  Michael Matz  <matz@suse.de>
5306
5307         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
5308         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
5309         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
5310         (dump_replaceable_exprs): Take a bitmap.
5311         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
5312         array.
5313         (expand_gimple_basic_block): Likewise.
5314         * tree-ssa-ter.c (struct temp_expr_table_d): Make
5315         replaceable_expressions member a bitmap.
5316         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
5317         (mark_replaceable): Likewise.
5318         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
5319         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
5320
5321 2009-04-27  Richard Guenther  <rguenther@suse.de>
5322
5323         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
5324         (verify_stmts): Dispatch to gimple/type verification code.
5325         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
5326         issue with call argument types.
5327
5328 2009-04-27  Michael Matz  <matz@suse.de>
5329
5330         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
5331         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
5332         to above.
5333
5334 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
5335             Eric Botcazou  <ebotcazou@adacore.com>
5336
5337         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
5338         a label's basic block.
5339         (mark_target_live_regs): Tidy and rework obsolete comments.
5340         Change back DF problem to LIVE.  If a label starts a basic block,
5341         assume that all registers that used to be live then still are.
5342         (init_resource_info): If a label starts a basic block, set its
5343         BLOCK_FOR_INSN accordingly.
5344         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
5345
5346 2009-04-27  Richard Guenther  <rguenther@suse.de>
5347
5348         * tree-flow-inline.h (function_ann): Remove.
5349         (get_function_ann): Likewise.
5350         * tree-dfa.c (create_function_ann): Remove.
5351         * tree-flow.h (struct static_var_ann_d): Remove.
5352         (struct function_ann_d): Likewise.
5353         (union tree_ann_d): Remove fdecl member.
5354         (function_ann_t): Remove.
5355         (function_ann, get_function_ann, create_function_ann): Remove
5356         declarations.
5357
5358 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
5359
5360         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
5361
5362 2009-04-27  Jan Hubicka  <jh@suse.cz>
5363
5364         * ipa-pure-const.c (struct funct_state_d): New fields
5365         state_previously_known, looping_previously_known; remove
5366         state_set_in_source.
5367         (analyze_function): Use new fields.
5368         (propagate): Avoid assumption that state_set_in_source imply
5369         nonlooping.
5370
5371         * tree-ssa-loop-niter.c (finite_loop_p): New function.
5372         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
5373         * cfgloop.h (finite_loop_p): Declare.
5374
5375 2009-04-26  Michael Matz  <matz@suse.de>
5376
5377         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
5378
5379 2009-04-26  Michael Matz  <matz@suse.de>
5380
5381         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
5382         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
5383         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
5384         pass_mark_used_blocks): Remove.
5385         * tree-optimize.c (pass_free_datastructures,
5386         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
5387         * passes.c (init_optimization_passes): Don't call
5388         pass_mark_used_blocks, remove dead code.
5389
5390 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
5391
5392         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
5393         * tree-ssa-live.h (register_ssa_partition): Likewise.
5394
5395 2009-04-26  Michael Matz  <matz@suse.de>
5396
5397         Expand from SSA.
5398         * builtins.c (fold_builtin_next_arg): Handle SSA names.
5399         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
5400         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
5401         SSA names. 
5402         (compare_pairs): Swap cost comparison.
5403         (coalesce_ssa_name): Don't use change_partition_var.
5404         * tree-nrv.c (struct nrv_data): Add modified member.
5405         (finalize_nrv_r): Set it.
5406         (tree_nrv): Use it to update statements.
5407         (pass_nrv): Require PROP_ssa.
5408         * tree-mudflap.c (mf_decl_cache_locals,
5409         mf_build_check_statement_for): Use make_rename_temp.
5410         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
5411         * alias.c (find_base_decl): Handle SSA names.
5412         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
5413         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
5414         * rtl.h (set_reg_attrs_for_parm): Declare.
5415         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
5416         to "optimized", remove unused locals at finish.
5417         (execute_free_datastructures): Make global, call
5418         delete_tree_cfg_annotations.
5419         (execute_free_cfg_annotations): Don't call
5420         delete_tree_cfg_annotations.
5421
5422         * ssaexpand.h: New file.
5423         * expr.c (toplevel): Include ssaexpand.h.
5424         (expand_assignment): Handle SSA names the same as register variables.
5425         (expand_expr_real_1): Expand SSA names.
5426         * cfgexpand.c (toplevel): Include ssaexpand.h.
5427         (SA): New global variable.
5428         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
5429         (SSAVAR): New macro.
5430         (set_rtl): New helper function.
5431         (add_stack_var): Deal with SSA names, use set_rtl.
5432         (expand_one_stack_var_at): Likewise.
5433         (expand_one_stack_var): Deal with SSA names.
5434         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
5435         before unique numbers.
5436         (expand_stack_vars): Use set_rtl.
5437         (expand_one_var): Accept SSA names, add asserts for them, feed them
5438         to above subroutines.
5439         (expand_used_vars): Expand all partitions (without default defs),
5440         then only the local decls (ignoring those expanded already).
5441         (expand_gimple_cond): Remove edges when jumpif() expands an
5442         unconditional jump.
5443         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
5444         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
5445         SSA name.
5446         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
5447         members of SA; deal with PARM_DECL partitions here; expand
5448         all PHI nodes, free tree datastructures and SA.  Commit instructions
5449         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
5450         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
5451         info and statements at start, collect garbage at finish.
5452         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
5453         (VAR_ANN_PARTITION) Remove.
5454         (change_partition_var): Don't declare.
5455         (partition_to_var): Always return SSA names.
5456         (var_to_partition): Only accept SSA names.
5457         (register_ssa_partition): Only check argument.
5458         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
5459         member.
5460         (delete_var_map): Don't free it.
5461         (var_union): Only accept SSA names, simplify.
5462         (partition_view_init): Mark only useful SSA names as used.
5463         (partition_view_fini): Only deal with SSA names.
5464         (change_partition_var): Remove.
5465         (dump_var_map): Use ssa_name instead of partition_to_var member.
5466         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
5467         basic blocks.
5468         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
5469         (struct _elim_graph): New member const_dests; nodes member vector of
5470         ints.
5471         (set_location_for_edge): New static helper.
5472         (create_temp): Remove.
5473         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
5474         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
5475         (new_elim_graph): Allocate const_dests member.
5476         (clean_elim_graph): Truncate const_dests member.
5477         (delete_elim_graph): Free const_dests member.
5478         (elim_graph_size): Adapt to new type of nodes member.
5479         (elim_graph_add_node): Likewise.
5480         (eliminate_name): Likewise.
5481         (eliminate_build): Don't take basic block argument, deal only with
5482         partition numbers, not variables.
5483         (get_temp_reg): New static helper.
5484         (elim_create): Use it, deal with RTL temporaries instead of trees.
5485         (eliminate_phi): Adjust all calls to new signature.
5486         (assign_vars, replace_use_variable, replace_def_variable): Remove.
5487         (rewrite_trees): Only do checking.
5488         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
5489         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
5490         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
5491         contains_tree_r, MAX_STMTS_IN_LATCH,
5492         process_single_block_loop_latch, analyze_edges_for_bb,
5493         perform_edge_inserts): Remove.
5494         (expand_phi_nodes): New global function.
5495         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
5496         functions, initialize new parameter, remember partitions having a
5497         default def.
5498         (finish_out_of_ssa): New global function.
5499         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
5500         don't reset in_ssa_p here, don't disable TER when mudflap.
5501         (pass_del_ssa): Remove.
5502         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
5503         partition members.
5504         (execute_free_datastructures): Declare.
5505         * Makefile.in (SSAEXPAND_H): New variable.
5506         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
5507         * basic-block.h (commit_one_edge_insertion): Declare.
5508         * passes.c (init_optimization_passes): Move pass_nrv and
5509         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
5510         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
5511         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
5512         (redirect_branch_edge): Deal with super block when expanding, split
5513         out jump patching itself into ...
5514         (patch_jump_insn): ... here, new static helper.
5515
5516 2009-04-26  Michael Matz  <matz@suse.de>
5517
5518         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
5519         beyond num_ssa_names.
5520         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
5521         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
5522
5523 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5524
5525         PR inline-asm/39543
5526         * fwprop.c (forward_propagate_asm): New function.
5527         (forward_propagate_and_simplify): Propagate also into __asm, if it
5528         doesn't increase the number of referenced registers.
5529
5530         PR c/39889
5531         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
5532
5533 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5534
5535         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
5536         note_nonlocal_vla_type for nonlocal VLAs.
5537         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
5538         contains_remapped_vars, remap_vla_decls): New functions.
5539         (convert_nonlocal_reference_stmt): If not optimizing, call
5540         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
5541         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
5542         if it wasn't found in var_map.
5543         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
5544         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
5545         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
5546         declare_vars.
5547         * gimplify.c (nonlocal_vlas): New variable.
5548         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
5549         referenced VLAs.
5550         (gimplify_body): Create and destroy nonlocal_vlas.
5551
5552         * dwarf2out.c (loc_descr_plus_const): New function.
5553         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
5554         mem_loc_descriptor, loc_descriptor_from_tree_1,
5555         descr_info_loc, gen_variable_die): Use it.
5556
5557         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
5558         !TREE_STATIC VAR_DECLs.
5559         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
5560         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
5561         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
5562         DECL_BY_REFERENCE is valid.
5563         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
5564         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
5565         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
5566         Copy DECL_BY_REFERENCE.
5567         (struct nesting_copy_body_data): New type.
5568         (nesting_copy_decl): New function.
5569         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
5570         if they have variable length.
5571
5572 2009-04-26  Michael Matz  <matz@suse.de>
5573
5574         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
5575         mark new temporaries for renaming.
5576
5577 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5578
5579         PR c/39581
5580         * c-decl.c (global_bindings_p): Return negative value.
5581         (c_variable_size): New.  Based on variable_size from
5582         stor-layout.c.
5583         (grokdeclarator): Call c_variable_size not variable_size.
5584
5585 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
5586
5587         * config/i386/i386.c (print_operand) ['z']: Fix typo.
5588
5589 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
5590
5591         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
5592         Redefine it to just use mingw/include.
5593         (ASM_SPEC): Rules for -m32 and -m64.
5594         (LINK_SPEC): Use Likewise.
5595         (SPEC_32): New define.
5596         (SPEC_64): Likewise.
5597         (SUB_LINK_SPEC): Likewise.
5598         (MULTILIB_DEFAULTS): New define.
5599         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
5600         Add multilib options.
5601         (MULTILIB_DIRNAMES): Likewise.
5602         (MULTILIB_OSDIRNAMES): Likewise.
5603         (LIBGCC): Likewise.
5604         (INSTALL_LIBGCC): Likewise.
5605
5606 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5607
5608         PR c/39556
5609         * c-tree.h (enum c_inline_static_type): New.
5610         (record_inline_static): Declare.
5611         * c-decl.c (struct c_inline_static, c_inline_statics,
5612         record_inline_static, check_inline_statics): New.
5613         (pop_file_scope): Call check_inline_statics.
5614         (start_decl): Call record_inline_static instead of pedwarning
5615         directly for static in inline function.
5616         * c-typeck.c (build_external_ref): Call record_inline_static
5617         instead of pedwarning directly for static referenced in inline
5618         function.
5619
5620 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
5621
5622         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
5623         not new but only being rescanned.
5624         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
5625         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
5626         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
5627         record_set_info, compute_set, grealloc): Remove.
5628         (recompute_all_luids): New function.
5629         (gcse_main): Don't compute sets, and don't do related memory
5630         allocations/free-ing.  If something changed before the end of the
5631         pass, update LUIDs using recompute_all_luids.
5632         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
5633         (free_gcse_mem): Don't free it either.
5634         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
5635         Use the df insn LUIDs.
5636         (load_killed_in_block): Likewise.
5637         (compute_hash_table_work): Don't compute reg_set_in_block.
5638         (compute_transp): Use DF_REG_DEF_CHAINs.
5639         (local_cprop_pass): Don't use compute_sets and related functions.
5640         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
5641         Use get_max_uid() instead of max_cuid.
5642         (insert_insn_end_basic_block, pre_insert_copy_insn,
5643         update_ld_motion_stores): Don't try to
5644         keep reg_set tables up to date.
5645         (pre_insert_copies): Use df insn LUIDs.
5646         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
5647         (reg_set_info): Don't use extra bitmap argument.
5648         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
5649         information to compute regs_set_in_block.
5650         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
5651         (bypass_jumps): Don't use compute_sets and friends.
5652
5653 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5654
5655         PR testsuite/39710
5656         * opts.c (undocumented_msg): Do not leave blank even with
5657         ENABLE_CHECKING.
5658
5659 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5660
5661         * c-decl.c (build_enumerator): Allow values folding to integer
5662         constants but not integer constant expressions with a pedwarn if
5663         pedantic.
5664
5665 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5666
5667         PR c/39582
5668         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
5669         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
5670         type is an integer constant.
5671
5672 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5673
5674         PR target/39897
5675         * config/i386/i386.c (print_operand) ['z']: Revert handling of
5676         HImode operands.
5677
5678 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5679
5680         PR c/39564
5681         * c-decl.c (grokdeclarator): Diagnose declarations of functions
5682         with variably modified return type and no storage class
5683         specifiers, except for the case of nested functions.  Distinguish
5684         extern declarations of functions with variably modified return
5685         types from those of objects with variably modified types.
5686
5687 2009-04-25  Jan Hubicka  <jh@suse.cz>
5688
5689         * tree.c (list_equal_p): New function.
5690         * tree.h (list_equal_p): Declare.
5691         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5692         basic_block_def, basic_block, const_basic_block): New.
5693         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
5694         (redirect_eh_edge): New function.
5695         (make_eh_edge_update_phi): EH edges are not abnormal.
5696         * except.c: Include tree-flow.h.
5697         (list_match): New function.
5698         (eh_region_replaceable_by_p): New function.
5699         (replace_region): New function.
5700         (hash_type_list): New function.
5701         (hash_eh_region): New function.
5702         (eh_regions_equal_p): New function.
5703         (merge_peers): New function.
5704         (remove_unreachable_regions): Verify EH tree when checking;
5705         merge peers.
5706         (copy_eh_region_1): New function.
5707         (copy_eh_region): New function.
5708         (push_reachable_handler): New function.
5709         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
5710         regions without label but with live RESX.
5711         * except.h (redirect_eh_edge_to_label): New.
5712         * tree-flow.h (redirect_eh_edge): New.
5713         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5714         basic_block_def, basic_block, const_basic_block): Remove.
5715         * Makefile.in (except.o): Add dependency on tree-flow.h
5716         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
5717         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
5718         Remove.
5719
5720 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
5721
5722         PR bootstrap/39645
5723         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
5724         on the destination of memcpy.
5725
5726 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
5727
5728         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
5729         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
5730         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
5731
5732 2009-04-25  Jan Hubicka  <jh@suse.cz>
5733
5734         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
5735         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
5736         to be reached by different label than left.
5737         (update_eh_edges): Update comment; remove edge_to_remove if possible
5738         and return true if suceeded.
5739         (cleanup_empty_eh): Accept sharing map; handle shared regions.
5740         (cleanup_eh): Compute sharing map.
5741         * except.c (remove_eh_handler_and_replace): Add argument if we should
5742         update regions.
5743         (remove_unreachable_regions): Update for label sharing.
5744         (label_to_region_map): Likewise.
5745         (get_next_region_sharing_label): New function.
5746         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
5747         prev_try pointers.
5748         (remove_eh_handler): Update.
5749         (remove_eh_region_and_replace_by_outer_of): New function.
5750         * except.h (struct eh_region): Add next_region_sharing_label.
5751         (remove_eh_region_and_replace_by_outer_of,
5752         get_next_region_sharing_label): Declare.
5753         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
5754
5755 2009-04-25  Jan Hubicka  <jh@suse.cz>
5756
5757         * tree-cfg.c (split_critical_edges): Split also edges where we can't
5758         insert code even if they are not critical.
5759
5760 2009-04-25  Jan Hubicka  <jh@suse.cz>
5761
5762         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5763         (gimple_can_remove_branch_p): EH edges won't remove branch by
5764         redirection.
5765         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
5766         updating of non-abnormal EH edges.
5767         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5768         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
5769         (split_critical_edges): Split also edges where emitting code on them
5770         will lead to splitting later.
5771
5772 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5773             H.J. Lu  <hongjiu.lu@intel.com>
5774
5775         PR target/39590
5776         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
5777         the configured assembler supports fildq and fistpq mnemonics.
5778         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
5779         * configure: Regenerated.
5780         * config.in: Ditto.
5781
5782         * config/i386/i386.c (print_operand): Handle 'Z'.
5783         ['z']: Remove handling of special fild/fist suffixes.
5784         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
5785         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
5786         suffix of fild insn.
5787         (*floatsi<mode>2_vector_mixed): Ditto.
5788         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
5789         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
5790         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
5791         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
5792         * config/i386/gas.h (GAS_MNEMONICS): Remove.
5793
5794 2009-04-25  Ben Elliston  <bje@au.ibm.com>
5795  
5796         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
5797         the source of a set operation.
5798
5799 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
5800
5801         * target.h (struct gcc_target): Add case_values_threshold field.
5802         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
5803         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
5804         * targhooks.c (default_case_values_threshold): New function.
5805         * targhooks.h (default_case_values_threshold): Declare function.
5806         * stmt.c (expand_case): Use case_values_threshold target hook.
5807         * expr.h (case_values_threshold): Remove declartation.
5808         * expr.c (case_values_threshold): Remove function.
5809         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
5810
5811         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
5812         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5813         (avr_case_values_threshold): Declare as static.
5814         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
5815
5816         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
5817         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5818         (mn10300_case_values_threshold): New function.
5819
5820 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5821
5822         * ira.c (setup_cover_and_important_classes): Add enum cast.
5823
5824 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
5825
5826         * genpreds.c (write_enum_constraint_num): Output definition of
5827         CONSTRAINT_NUM_DEFINED_P macro.
5828         * ira.c (setup_cover_and_important_classes): Use
5829         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
5830         
5831 2009-04-24  DJ Delorie  <dj@redhat.com>
5832
5833         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
5834         __SH2A_SINGLE_ONLY__ also.
5835
5836 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
5837
5838         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
5839         (movdf_internal): Ditto.
5840         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
5841         SFmode and DFmode constants.
5842         (ia64_print_operand): Add 'G' format for printing
5843         floating point constants.
5844
5845 2009-04-24  Richard Guenther  <rguenther@suse.de>
5846
5847         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
5848         from unsigned additions.
5849
5850 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
5851
5852         * c-typeck.c (set_init_index): Allow array designators that are
5853         not integer constant expressions with a pedwarn if pedantic.
5854
5855 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5856
5857         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
5858         zero if no overlap in nonzero bits between the operands.
5859
5860 2009-04-24  Ian Lance Taylor  <iant@google.com>
5861
5862         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
5863         (record_dead_and_set_regs): Likewise.
5864         * df.h (struct df_mw_hardreg): Change flags field to int.
5865         (struct df_base_ref): Likewise.
5866         (struct df): Change changeable_flags field to int.
5867         * df-scan.c (df_defs_record): Change clobber_flags to int.
5868         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
5869         constants rather than #define macros.
5870         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
5871         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
5872         (enum dwarf_calling_convention): Likewise.
5873         (enum dwarf_line_number_x_ops): Likewise.
5874         (enum dwarf_call_frame_info): Likewise.
5875         (enum dwarf_source_language): Likewise.
5876         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
5877         (add_calling_convention_attribute): Likewise.
5878         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
5879         (combine_comparisons): Change compcode to int.  Add cast to enum type.
5880         * genrecog.c (maybe_both_true_2): Change c to int.
5881         (write_switch): Likewise.  Add cast to enum type.
5882         * gimplify.c (gimplify_omp_for): Handle return values from
5883         gimplify_expr using MIN rather than bitwise or.
5884         (gimplify_expr): Add cast to enum type.
5885         * ipa-prop.c (update_jump_functions_after_inlining): Change
5886         IPA_BOTTOM to IPA_JF_UNKNOWN.
5887         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
5888         Add casts to enum type.
5889         (setup_cover_and_important_classes): Change cl to int.  Add casts
5890         to enum type.
5891         (setup_class_translate): Change cl and mode to int.
5892         (ira_init_once): Change mode to int.
5893         (free_register_move_costs): Likewise.
5894         (setup_prohibited_mode_move_regs): Add casts to enum type.
5895         * langhooks.c (add_builtin_function_common): Rework assertion that
5896         value fits bitfield.
5897         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
5898         * omega.c (omega_do_elimination): Avoid math on enum types.
5899         * optabs.c (expand_vec_shift_expr): Remove casts to int.
5900         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
5901         int local to handle integral_argment value.
5902         * regmove.c (try_auto_increment): Change PUT_MODE to
5903         PUT_REG_NOTE_KIND.
5904         * reload.c (push_secondary_reload): Add casts to enum type.
5905         (secondary_reload_class, find_valid_class): Likewise.
5906         * reload1.c (emit_input_reload_insns): Likewise.
5907         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
5908         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
5909         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
5910         constant.
5911         * tree.c (build_common_builtin_nodes): Add casts to enum type.
5912         * tree-complex.c (complex_lattice_t): Typedef to int rather than
5913         enum type.
5914         (expand_complex_libcall): Add casts to enum type.
5915         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
5916         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
5917         with ERROR_MARK, not NUM_TREE_CODES.
5918         (vect_create_epilog_for_reduction): Likewise.
5919         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
5920         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
5921         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
5922         enum machine_mode.
5923         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
5924         vect_unused_in_loop.  Change 0 to loop_vect.
5925         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
5926         * var-tracking.c (get_init_value): Change return type to enum
5927         var_init_status.
5928         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
5929         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
5930         arm_fp_model.
5931         (arm_override_options): Add casts to enum type.
5932         (arm_emit_tls_decoration): Likewise.
5933         * config/i386/i386.c (ix86_function_specific_restore): Add casts
5934         to enum type.
5935         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
5936         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
5937         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
5938         enum type.
5939         * config/s390/s390.c (code_for_builtin_64): Change to array of
5940         enum insn_code.
5941         (code_for_builtin_31): Likewise.
5942         (s390_expand_builtin): Change code_for_builtin to enum insn_code
5943         const *.
5944         * config/sparc/sparc.c (sparc_override_options): Change value
5945         field in struct code_model to enum cmodel.  In initializer change
5946         0 to NULL and add cast to enum type.
5947
5948         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
5949         Change all callers.  Issue a -Wc++-compat warning using
5950         lhs_origtype if necessary.
5951         (convert_for_assignment): Issue -Wc++-compat warnings about
5952         invalid conversions to enum type on assignment.
5953         * c-common.h (build_modify_expr): Update declaration.
5954
5955 2009-04-24  Nick Clifton  <nickc@redhat.com>
5956
5957         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
5958         (function_arg_advance): Likewise.
5959         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
5960         5th alternative.
5961
5962 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5963
5964         * config/s390/constraints.md ('I', 'J'): Fix condition.
5965
5966 2009-04-24  Diego Novillo  <dnovillo@google.com>
5967
5968         * gengtype-parse.c (parse_error): Add newline after message.
5969
5970 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5971
5972         * config/i386/sse.md (avxmodesuffixs): Removed.
5973         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
5974         (*avx_pinsr<ssevecsize>): This.
5975
5976 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5977
5978         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
5979         follow chains of regs with a single definition, and allow expressions
5980         that are function_invariant_p.
5981         (simple_rhs_p): Allow expressions that are function_invariant_p.
5982
5983 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
5984
5985         PR middle-end/39867
5986         * fold-const.c (fold_cond_expr_with_comparison): When folding
5987         > and >= to MAX, make sure the MAX uses the same type as the
5988         comparison's operands.
5989
5990 2009-04-24  Nick Clifton  <nickc@redhat.com>
5991
5992         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
5993         addressing for DImode accesses.
5994         (frv_print_operand_address): Handle PLUS case.
5995         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
5996
5997 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
5998
5999         PR rtl-optimization/39794
6000         * alias.c (canon_true_dependence): Add x_addr argument.
6001         * rtl.h (canon_true_dependence): Adjust prototype.
6002         * cse.c (check_dependence): Adjust canon_true_dependence callers.
6003         * cselib.c (cselib_invalidate_mem): Likewise.
6004         * gcse.c (compute_transp): Likewise.
6005         * dse.c (scan_reads_nospill): Likewise.
6006         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
6007         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
6008         canon_base_addr of the group, plus optional offset.
6009         (struct group_info): Rename canon_base_mem to
6010         canon_base_addr.
6011         (get_group_info): Set canon_base_addr to canon_rtx of base, not
6012         canon_rtx of base_mem.
6013
6014 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
6015
6016         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
6017         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
6018
6019 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6020
6021         * config/spu/spu-builtins.h: Delete file.
6022
6023         * config/spu/spu.h (enum spu_builtin_type): Move here from
6024         spu-builtins.h.
6025         (struct spu_builtin_description): Likewise.  Add GTY marker.
6026         Do not use enum spu_function_code or enum insn_code.
6027         (spu_builtins): Add extern declaration.
6028
6029         * config/spu/spu.c: Do not include "spu-builtins.h".
6030         (enum spu_function_code, enum spu_builtin_type_index,
6031         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
6032         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
6033         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
6034         unsigned_V2DI_type_node): Move here from spu-builtins.h.
6035         (spu_builtin_types): Make static.  Add GTY marker.
6036         (spu_builtins): Add extern declaration with GTY marker.
6037         Include "gt-spu.h".
6038
6039         * config/spu/spu-c.c: Do not include "spu-builtins.h".
6040         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
6041         Check programmatically whether all parameters are scalar.
6042
6043         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
6044
6045 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
6046
6047         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
6048         assignment from the constructor either if the target is volatile.
6049
6050 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
6051
6052         * config/arm/arm.md (insv): Do not share operands[0].
6053
6054 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
6055
6056         * config/vxlib-tls.c (active_tls_threads): Delete.
6057         (delete_hook_installed): New.
6058         (tls_delete_hook): Don't delete the delete hook.
6059         (tls_destructor): Delete it here.
6060         (__gthread_set_specific): Adjust installing the delete hook.
6061         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
6062         __gthread_leave_tsd_dtor_context.
6063
6064 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
6065
6066         * c-format.c (gcc_tdiag_char_table): Add support for %E.
6067
6068 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
6069
6070         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
6071         enum type.
6072         (alpha_rtx_costs): Ditto.
6073         (emit_unlikely_jump): Use add_reg_note.
6074         (emit_frame_store_1): Ditto.
6075         (alpha_expand_prologue): Ditto.
6076         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6077         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
6078
6079 2009-04-23  Nick Clifton  <nickc@redhat.com>
6080
6081         * config/v850/v850.md (epilogue): Remove suppressed code.
6082         (return): Rename to return_simple and remove test of frame size.
6083         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
6084         to gen_return_simple.
6085
6086 2009-04-22  Jing Yu  <jingyu@google.com>
6087
6088         PR testsuite/39781
6089         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
6090
6091 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6092
6093         PR C/31499
6094         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
6095         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
6096         value is a VECTOR_CST, the element type is the element type of the
6097         vector.
6098
6099 2009-04-22  DJ Delorie  <dj@redhat.com>
6100
6101         * config/m32c/m32c.h: Update GTY annotations to new syntax.
6102
6103 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
6104
6105         * alias.c (find_base_term): Move around LO_SUM case, so that
6106         CONST falls through into PLUS/MINUS handling.
6107
6108         PR c/39855
6109         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
6110         into 0, use omit_one_operand.
6111
6112 2009-04-23  Ben Elliston  <bje@au.ibm.com>
6113
6114         * config/rs6000/linux-unwind.h (get_regs): Remove type
6115         puns. Change the type of `pc' to an array of unsigned ints and
6116         update all users.  Constify frame24.
6117
6118 2009-04-22  DJ Delorie  <dj@redhat.com>
6119
6120         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
6121         declarations before code.
6122         (current_function_special_page_vector): Likewise.
6123         (m32c_expand_insv): Silence a warning.
6124
6125 2009-04-21  Taras Glek  <tglek@mozilla.com>
6126
6127         * alias.c: Update GTY annotations to new syntax.
6128         * basic-block.h: Likewise.
6129         * bitmap.h: Likewise.
6130         * c-common.h: Likewise.
6131         * c-decl.c: Likewise.
6132         * c-parser.c: Likewise.
6133         * c-pragma.c: Likewise.
6134         * c-tree.h: Likewise.
6135         * cfgloop.h: Likewise.
6136         * cgraph.h: Likewise.
6137         * config/alpha/alpha.c: Likewise.
6138         * config/arm/arm.h: Likewise.
6139         * config/avr/avr.h: Likewise.
6140         * config/bfin/bfin.c: Likewise.
6141         * config/cris/cris.c: Likewise.
6142         * config/darwin.c: Likewise.
6143         * config/frv/frv.c: Likewise.
6144         * config/i386/i386.c: Likewise.
6145         * config/i386/i386.h: Likewise.
6146         * config/i386/winnt.c: Likewise.
6147         * config/ia64/ia64.h: Likewise.
6148         * config/iq2000/iq2000.c: Likewise.
6149         * config/mips/mips.c: Likewise.
6150         * config/mmix/mmix.h: Likewise.
6151         * config/pa/pa.c: Likewise.
6152         * config/pa/pa.h: Likewise.
6153         * config/rs6000/rs6000.c: Likewise.
6154         * config/s390/s390.c: Likewise.
6155         * config/sparc/sparc.c: Likewise.
6156         * config/xtensa/xtensa.c: Likewise.
6157         * cselib.h: Likewise.
6158         * dbxout.c: Likewise.
6159         * dwarf2out.c: Likewise.
6160         * except.c: Likewise.
6161         * except.h: Likewise.
6162         * fixed-value.h: Likewise.
6163         * function.c: Likewise.
6164         * function.h: Likewise.
6165         * gimple.h: Likewise.
6166         * integrate.c: Likewise.
6167         * optabs.c: Likewise.
6168         * output.h: Likewise.
6169         * real.h: Likewise.
6170         * rtl.h: Likewise.
6171         * stringpool.c: Likewise.
6172         * tree-data-ref.c: Likewise.
6173         * tree-flow.h: Likewise.
6174         * tree-scalar-evolution.c: Likewise.
6175         * tree-ssa-address.c: Likewise.
6176         * tree-ssa-alias.h: Likewise.
6177         * tree-ssa-operands.h: Likewise.
6178         * tree.c: Likewise.
6179         * tree.h: Likewise.
6180         * varasm.c: Likewise.
6181         * varray.h: Likewise.
6182         * vec.h: Likewise.
6183         * coretypes.h: Do not define GTY macro if it is already defined.
6184         * doc/gty.texi: Update GTY documentation to new syntax.
6185         * gengtype-lex.l: Enforce attribute-like syntax for GTY
6186         annotations on structs.
6187         * gengtype-parse.c: Likewise.
6188
6189 2009-04-22  Mark Heffernan  <meheff@google.com>
6190
6191         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
6192
6193 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
6194
6195         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
6196         where appropriate.
6197
6198 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
6199
6200         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
6201         the same as a PLUS without a shift.  Increase the cost of a
6202         CONST_INT in MULT.
6203
6204 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6205
6206         * Makefile.in: Update dependencies.
6207         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
6208         * errors.h: Remove bogus comment about compatibility.
6209         (warning): Update declaration.
6210         * genautomata.c: Update all calls to warning.
6211         * gimple.c: Do not include errors.h. Include toplev.h.
6212         * tree-ssa-structalias.c: Do not include errors.h.
6213         * omega.c: Likewise.
6214         * tree-ssa-reassoc.c: Likewise.
6215         * config/spu/spu-c.c: Likewise.
6216         * config/spu/t-spu-elf: Update dependencies.
6217
6218 2009-04-22  Richard Guenther  <rguenther@suse.de>
6219
6220         PR tree-optimization/39824
6221         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
6222         make sure the types are compatible.
6223
6224 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6225
6226         PR c++/14875
6227         * c-common.c (c_parse_error): Take a token_flags parameter.
6228         Use token_type for the token type instead.
6229         Pass token_flags to cpp_type2name.
6230         * c-common.h (c_parse_error): Update declaration.
6231         * c-parser.c (c_parser_error): Pass 0 as token flags.
6232
6233 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
6234
6235         PR rtl-optimization/39580
6236         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
6237         
6238 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6239
6240         * function.c (expand_function_end): Do not emit a jump to the "naked"
6241         return label for fall-through returns.
6242         * except.c (sjlj_emit_function_exit): Always place the call to the
6243         unregister function at the location installed by expand_function_end.
6244
6245 2009-04-22  Richard Guenther  <rguenther@suse.de>
6246
6247         PR tree-optimization/39845
6248         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
6249         (gen_inbound_check): Likewise.
6250
6251 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
6252
6253         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
6254         padding for PPC.
6255         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
6256         * config/vxlib.c (__gthread_once): Add race guard for PPC.
6257
6258 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6259
6260         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
6261         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
6262         shift counts to avoid out-of-bounds array accesses.
6263
6264 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6265
6266         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
6267         (Pmode): Move above.
6268
6269 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
6270
6271         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
6272         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
6273         GET_CODE macro.  Use IN_RANGE macro where appropriate.
6274         * config/alpha/alpha.h: Ditto.
6275         * config/alpha/alpha.md: Ditto.
6276         * config/alpha/constraints.md: Ditto.
6277         * config/alpha/predicates.md: Ditto.
6278         
6279 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
6280
6281         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
6282         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6283         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6284         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6285         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6286         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6287         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6288         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6289         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6290         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6291         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6292         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6293         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6294         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6295         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6296         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6297         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6298         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6299         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6300         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6301         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6302         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6303         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6304         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6305         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6306         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6307         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
6308
6309 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6310
6311         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
6312         references from comments.
6313         * cfgbuild.c: (count_basic_blocks): Delete.
6314         (find_basic_blocks_1): Delete.
6315         (find_basic_blocks): Delete.
6316         * except.c (finish_eh_generation): Make static.  Move comment from
6317         except.h here.  Remove find_basic_blocks references from comments.
6318         * except.h (finish_eh_generation): Delete.
6319         * basic-block.h (find_basic_blocks): Delete.
6320         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
6321
6322 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
6323
6324         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
6325         (sdbout_parms):  Likewise.
6326
6327 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
6328
6329         * config/sh/sh.c (prepare_cbranch_operands): Use
6330         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
6331         (expand_cbranchdi4): Likewise.
6332         (from_compare): Add cast to enum type.
6333         (expand_cbranchsi4): Use add_reg_note.
6334         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
6335         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
6336         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
6337         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6338         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
6339         instead of CODE_FOR_nothing.
6340         (cbranchdi4): Likewise.  Fix the order of arguments for
6341         gen_rtx_fmt_ee.
6342         (push_fpscr): Use add_reg_note.
6343         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
6344         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
6345         
6346 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
6347
6348         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
6349         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6350         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6351         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
6352         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
6353         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
6354         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
6355         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
6356         config/alpha/x-vms, config/arc/t-arc,
6357         config/arm/README-interworking, config/arm/arm-c.c,
6358         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
6359         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
6360         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
6361         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
6362         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
6363         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
6364         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
6365         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
6366         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
6367         config/cris/t-elfmulti, config/crx/t-crx,
6368         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
6369         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
6370         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
6371         config/h8300/t-h8300, config/i386/athlon.md,
6372         config/i386/darwin-libgcc.10.4.ver,
6373         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
6374         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
6375         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
6376         config/i386/t-linux64, config/i386/t-nwld,
6377         config/i386/t-rtems-i386, config/i386/t-sol2-10,
6378         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
6379         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
6380         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
6381         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
6382         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
6383         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
6384         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
6385         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
6386         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
6387         config/m68k/t-uclinux, config/mcore/t-mcore,
6388         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
6389         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
6390         config/mips/crtn.asm, config/mips/irix-crti.asm,
6391         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
6392         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
6393         config/mips/mips-fixed.md, config/mips/sb1.md,
6394         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
6395         config/mips/t-iris6, config/mips/t-isa3264,
6396         config/mips/t-libgcc-mips16, config/mips/t-linux64,
6397         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
6398         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
6399         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
6400         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
6401         config/mn10300/t-linux, config/mn10300/t-mn10300,
6402         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
6403         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
6404         config/picochip/libgccExtras/clzsi2.asm,
6405         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
6406         config/rs6000/darwin-libgcc.10.4.ver,
6407         config/rs6000/darwin-libgcc.10.5.ver,
6408         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
6409         config/rs6000/t-aix43, config/rs6000/t-aix52,
6410         config/rs6000/t-darwin, config/rs6000/t-fprules,
6411         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
6412         config/rs6000/t-lynx, config/rs6000/t-netbsd,
6413         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
6414         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
6415         config/rs6000/t-rtems, config/rs6000/t-spe,
6416         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
6417         config/score/t-score-elf, config/sh/divcost-analysis,
6418         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
6419         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
6420         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
6421         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
6422         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
6423         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
6424         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
6425         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
6426         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
6427         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
6428         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
6429         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
6430         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
6431         limitx.h, version.c, xcoff.h: Add copyright and license notices.
6432         * config/h8300/genmova.sh: Include copyright and license notices
6433         in generated output.
6434         * config/h8300/mova.md: Regenerate.
6435         * doc/install.texi2html: Include word "Copyright" in copyright
6436         notice and use name "Free Software Foundation, Inc.".
6437         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6438         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6439         ChangeLog-2007, ChangeLog-2008: Correct dates.
6440
6441 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
6442
6443         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
6444         NE_EXPR operations as well.
6445         * c-parser.c (c_parser_condition): Do not set location information on
6446         the condition.
6447         (c_parser_conditional_expression): Likewise.
6448         (c_parser_binary_expression): Set location information on operators.
6449         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
6450         TRUTH_NOT_EXPR has been folded.
6451         * fold-const.c (fold_truth_not_expr): Copy location information from
6452         the incoming expression to the outgoing one.
6453         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
6454         recursive calls on the LHS of the operator but pass that of the
6455         operator to recursive calls on the RHS of the operator.  Set it
6456         on the COND_EXPR.
6457         (shortcut_cond_expr): Set the locus of the operator on the second
6458         COND_EXPR and that of the expression on the first in degenerate cases.
6459         Pass the locus of the expression to calls to shortcut_cond_r.
6460         Set the locus of the 'then' block on the associated jump, if any.
6461         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
6462         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
6463         expression to call to gimplify_boolean_expr.
6464
6465 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
6466
6467         * config.gcc: Add additional configuration for
6468         i686-w64-mingw* and x86_64-w64-mingw* triplet.
6469         * config/i386/mingw-w64.h: New mingw-w64 specific header.
6470         (CPP_SPEC): Redefine for allowing -municode option.
6471         (STARTFILE_SPEC): Likewise.
6472         * config/i386/t-mingw-w64: New.
6473         * config/i386/mingw-w64.opt: New.
6474         (municode): Add new target option.
6475         * doc/invoke.texi (municode): Add documentation for new option.
6476
6477 2009-04-21  Ian Lance Taylor  <iant@google.com>
6478
6479         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6480         Correct test for number of arguments.
6481         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
6482
6483 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
6484
6485         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
6486         argument of emit_library_call.
6487
6488 2009-04-21  Richard Guenther  <rguenther@suse.de>
6489
6490         PR middle-end/39829
6491         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
6492         inside VIEW_CONVERT_EXPRs.
6493
6494 2009-04-21  Martin Jambor  <mjambor@suse.cz>
6495
6496         * tree-switch-conversion.c (build_constructors): Split a long line.
6497         (constructor_contains_same_values_p): New function.
6498         (build_one_array): Create assigns of constants if possible, do not
6499         call mark_sym_for_renaming, call update_stmt.
6500         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
6501         make_rename_temp.  Do not call mark_symbols_for_renaming, call
6502         update_stmt.
6503         (gen_def_assigns): Do not call mark_symbols_for_renaming or
6504         find_new_referenced_vars, call update_stmt.
6505         (gen_inbound_check): Use create_tmp_var and create ssa names manually
6506         instead of calling make_rename_temp.  Do not call
6507         find_new_referenced_vars or mark_symbols_for_renaming, call
6508         update_stmt.
6509
6510 2009-04-21  Richard Guenther  <rguenther@suse.de>
6511
6512         PR tree-optimization/39827
6513         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
6514         (tree_ssa_phiprop): Pass the correct array size.
6515
6516 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
6517
6518         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
6519
6520 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6521
6522         PR 16202
6523         * c-typeck.c (lvalue_p): Move declaration ...
6524         * c-common.h (lvalue_p): ... to here.
6525         * c-common.c (candidate_equal_p): New.
6526         (add_tlist): Use it.
6527         (merge_tlist): Use it.
6528         (warn_for_collisions_1): Likewise.
6529         (warning_candidate_p): Accept more candidates.
6530         (verify_tree): A warning candidate can be an expression. Use
6531         candidate_equal_p.
6532
6533 2009-04-21  Ben Elliston  <bje@au.ibm.com>
6534
6535         PR target/5267
6536         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
6537         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
6538         options.  Remove -mcall-solaris documentation.
6539
6540 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6541
6542         PR c++/13358
6543         * doc/invoke.texi (-Wlong-long): Update description.
6544         * c-lex (interpret_integer): Only warn if there was no previous
6545         overflow and -Wlong-long is enabled.
6546         * c-decl.c (declspecs_add_type): Drop redundant flags.
6547         * c.opt (Wlong-long): Init to -1.
6548         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
6549         and front-end warn_long_long. Wlong-long only depends on other
6550         flags if it is uninitialized.
6551         * c-parser.c (disable_extension_diagnostics): warn_long_long is
6552         the same for CPP and FE.
6553         (restore_extension_diagnostics): Likewise.
6554
6555 2009-04-20  Ian Lance Taylor  <iant@google.com>
6556
6557         Fix enum conversions which are invalid in C++:
6558         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
6559         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
6560         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
6561         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
6562         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
6563         (dbxout_parms): Likewise.
6564         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
6565         (df_clear_flags): Likewise.
6566         * df-problems.c (df_rd_bb_local_compute_process_def): Change
6567         top_flag parameter to int.
6568         (df_chain_create_bb_process_use): Likewise.
6569         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
6570         Remove cast.
6571         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
6572         (df_ref_create_structure, df_def_record_1): Likewise.
6573         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
6574         (df_notes_rescan): Change 0 to VOIDmode in function call.
6575         (df_get_call_refs, df_insn_refs_collect): Likewise.
6576         (df_bb_regs_collect): Likewise.
6577         (df_entry_block_defs_collect): Likewise.
6578         (df_exit_block_uses_collect): Likewise.
6579         * df.h: Update declarations.
6580         * double-int.c (double_int_divmod): Add cast to enum type.
6581         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
6582         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
6583         (based_loc_descr): Likewise.
6584         (loc_descriptor_from_tree_1): Change first_op and second_op to
6585         enum dwarf_location_atom.  Add cast to enum type.
6586         * expmed.c (init_expmed): Change 0 to SET in function call.
6587         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
6588         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
6589         (do_store_flag): Likewise.
6590         * fixed-value.h (struct fixed_value): Change mode to enum
6591         machine_mode.
6592         * function.c (assign_parms): Change 0 to VOIDmode in function call.
6593         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
6594         function call.
6595         (insert_insn_decl, insert_decl, insert_state): Likewise.
6596         (automata_list_finish): Likewise.
6597         * genrecog.c (process_define_predicate): Add cast to enum type.
6598         * gensupport.c (init_predicate_table): Add cast to enum type.
6599         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
6600         function call.
6601         (gimple_build_call_1, gimple_build_label): Likewise.
6602         (gimple_build_goto, gimple_build_asm_1): Likewise.
6603         (gimple_build_switch_1, gimple_build_cdt): Likewise.
6604         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
6605         (enum fallback): Rename from enum fallback_t.
6606         (fallback_t): Typedef as int.
6607         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
6608         GSI_SAME_STMT in function call.
6609         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
6610         enum type.
6611         (setup_reg_class_relations): Likewise.
6612         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
6613         (setup_prohibited_class_mode_regs): Add cast to enum type.
6614         (setup_prohibited_mode_move_regs): Likewise.
6615         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
6616         (record_address_regs): Change i to enum reg_class.
6617         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
6618         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
6619         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
6620         (GET_MODE_2XWIDER_MODE): Likewise.
6621         (GET_CLASS_NARROWEST_MODE): Likewise.
6622         * omp-low.c (expand_omp_for): Add cast to enum type.
6623         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
6624         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
6625         * postreload.c (reload_cse_simplify_operands): Change rclass local
6626         to enum reg_class.
6627         * predict.c (combine_predictions_for_insn): Change best_predictor
6628         and predictor to enum br_predictor.
6629         (combine_predictions_for_bb): Likewise.
6630         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
6631         use SET_PREDICT_EXPR_OUTCOME.
6632         * real.c (real_arithmetic): Change icode to code in function call.
6633         * reginfo.c (init_move_cost): Add casts to enum type.
6634         (init_reg_sets_1, init_fake_stack_mems): Likewise.
6635         * regmove.c (regclass_compatible_p): Change class0 and class1 to
6636         enum reg_class.
6637         * reload.c (find_valid_class): Add casts to enum type.
6638         (push_reload): Change 0 to NO_REGS in function call.
6639         (find_reloads): Change this_alternative to array of enum
6640         reg_class.  Remove some now-unnecessary casts.
6641         (make_memloc): Change 0 to VOIDmode in function call.
6642         * reload1.c (reload): Change 0 to VOIDmode in function call.
6643         (eliminate_regs_1, elimination_effects): Likewise.
6644         (eliminate_regs_in_insn): Likewise.
6645         (emit_input_reload_insns): Add cast to enum type.
6646         (delete_output_reload): Change 0 to VOIDmode in function call.
6647         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
6648         to enum type in function call.
6649         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
6650         (SET_PREDICT_EXPR_OUTCOME): Define.
6651         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
6652         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
6653         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
6654         (dump_function): Likewise.
6655         * tree-dump.h: Update declarations.
6656         * tree-pass.h: Update declarations.
6657         * varasm.c (assemble_integer): Change mclass to enum mode_class.
6658         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
6659         enum type.
6660         (arm_rtx_costs_1): Correct parenthesization.
6661         (arm_rtx_costs): Add casts to enum type.
6662         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
6663         (vfp_emit_fstmd): Use add_rg_note.
6664         (emit_multi_reg_push, emit_sfm): Likewise.
6665         (thumb_set_frame_pointer): Likewise.
6666         (arm_expand_prologue): Likewise.
6667         (arm_regno_class): Change return type to enum reg_class.
6668         (thumb1_expand_prologue): Use add_reg_note.
6669         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
6670         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
6671         in function call.
6672         * config/arm/gentune.sh: Add cast to enum type.
6673         * config/arm/arm-tune.md: Rebuild.
6674         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
6675         (ix86_split_fp_branch, predict_jump): Likewise.
6676         (ix86_expand_multi_arg_builtin): Change sub_code from enum
6677         insn_code to enum rtx_code.
6678         (ix86_builtin_vectorized_function): Add cast to enum type.
6679         * config/i386/i386.md (truncdfsf2): Change slot to enum
6680         ix86_stack_slot.
6681         (truncxf<mode>2, isinf<mode>2): Likewise.
6682         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
6683         enum type.
6684         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
6685         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
6686         (insert_bundle_state): Change 1 to INSERT in function call.
6687         (ia64_add_bundle_selector_before): Likewise.
6688         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
6689         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
6690         (restore_stack_nonlocal): Likewise.
6691         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
6692         function call.
6693         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
6694         function call.
6695         (mips_rtx_costs): Likewise.
6696         (mips_override_options): Add casts to enum type.
6697         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
6698         in function call.
6699         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
6700         (store_reg, set_reg_plus_d): Likewise.
6701         (hppa_expand_prologue, hppa_profile_hook): Likewise.
6702         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
6703         cast to enum type.
6704         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
6705         function call.
6706         (emit_unlikely_jump): Use add_reg_note.
6707         (rs6000_emit_allocate_stack): Likewise.
6708         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
6709         (output_toc): Change 1 to INSERT in function call.
6710         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
6711         (rs6000_initialize_trampoline): Likewise.
6712         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
6713         function call.
6714         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
6715         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
6716         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
6717         (save_gprs): Use add_reg_note.
6718         (s390_emit_prologue): Likewise.
6719         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6720         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
6721         (sparc_fold_builtin): Add cast to enum type.
6722         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
6723         enum insn_code.
6724         (spu_expand_prologue): Use add_reg_note.
6725         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
6726
6727 2009-04-20  Ian Lance Taylor  <iant@google.com>
6728
6729         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
6730         (c_parser_postfix_expression_after_primary): Get VEC for list of
6731         arguments.  Get original types of arguments.  Call
6732         build_function_call_vec.
6733         (cached_expr_list_1, cached_expr_list_2): New static variables.
6734         (c_parser_expr_list): Change return type to VEC *.  Add
6735         p_orig_types parameter.  Change all callers.
6736         (c_parser_release_expr): New static function.
6737         (c_parser_vec_to_tree_list): New static function.
6738         * c-typeck.c (build_function_call): Rewrite to build a VEC and
6739         call build_function_call_vec.
6740         (build_function_call_vec): New function, based on old
6741         build_function_call.
6742         (convert_arguments): Remove nargs and argarray parameters.  Change
6743         values to a VEC.  Add origtypes parameter.
6744         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
6745         (convert_for_assignment): Add origtype parameter.  Change all
6746         callers.  If warn_cxx_compat, check for conversion to an enum
6747         type when calling a function.
6748         (store_init_value): Add origtype parameter.  Change all callers.
6749         (digest_init): Likewise.
6750         (struct init_node): Add origtype field.
6751         (add_pending_init): Add origtype parameter.  Change all callers.
6752         (output_init_element): Likewise.
6753         (output_pending_init_elements): Pass origtype from init_node to
6754         output_init_element.
6755         (process_init_element): Pass origtype from c_expr to
6756         output_init_element.
6757         (c_finish_return): Add origtype parameter.  Change all callers.
6758         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
6759         caller.
6760         (sync_resolve_params): Likewise.
6761         (sync_resolve_return): Change params to first_param.  Change caller.
6762         (resolve_overloaded_builtins): Change params to VEC *.  Change
6763         callers.  Save first parameter around call to build_function_call_vec.
6764         * c-decl.c (finish_decl): Add origtype parameter.  Change all
6765         callers.  Call build_function_call_vec rather than
6766         build_function_call for cleanup.
6767         * c-tree.h: Update declarations.
6768         * c-common.h: Update declarations.
6769         * stub-objc.c (objc_rewrite_function_call): Change parameter from
6770         params to first_param.
6771         * target.h (struct gcc_target): Change resolve_overloaded_builtin
6772         params parameter from tree to void *.
6773         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6774         Change arglist parameter to have type void *, and to be a pointer
6775         to a VEC.
6776         * config/rs6000/rs6000-protos.h
6777         (altivec_resolve_overloaded_builtin): Update declaration.
6778         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
6779         fnargs parameter to have type void *, and to be a pointer to a
6780         VEC.  Call build_function_call_vec instead of
6781         build_function_call.
6782         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
6783
6784 2009-04-20  Joey Ye  <joey.ye@intel.com>
6785             Xuepeng Guo  <xuepeng.guo@intel.com>
6786             H.J. Lu  <hongjiu.lu@intel.com>
6787
6788         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
6789
6790         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
6791         (IX86_LEA_PRIORITY): Likewise.
6792         (distance_non_agu_define): New function.
6793         (distance_agu_use): Likewise.
6794         (ix86_lea_for_add_ok): Likewise.
6795         (ix86_dep_by_shift_count): Likewise.
6796
6797         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
6798         should split for LEA.
6799
6800         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
6801         function.
6802         (ix86_dep_by_shift_count): Likewise.
6803
6804 2009-04-20  Richard Guenther  <rguenther@suse.de>
6805
6806         * expr.c (handled_component_p): Move ...
6807         * tree.h (handled_component_p): ... here.
6808         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
6809         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
6810         and REALPART_EXPR to be in one group.
6811
6812 2009-04-20  Richard Guenther  <rguenther@suse.de>
6813
6814         * basic-block.h (get_all_dominated_blocks): Declare.
6815         * dominance.c (get_all_dominated_blocks): New function.
6816         * tree-cfg.c (get_all_dominated_blocks): Remove.
6817         (remove_edge_and_dominated_blocks): Adjust.
6818         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
6819         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
6820         instead of recursing.
6821
6822 2009-04-20  Doug Kwan  <dougkwan@google.com>
6823
6824         * cgraph.h (cgraph_node_ptr): New type for vector functions.
6825         (struct cgraph_node_set_def): New type.
6826         (cgraph_node_set) New type. Also declare vector functions.
6827         (struct cgraph_node_set_element_def): New type.
6828         (cgraph_node_set_element): Ditto.
6829         (cgraph_node_set_iterator): New iterator type.
6830         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
6831         cgraph_node_set_remove, dump_cgraph_node_set,
6832         debug_cgraph_node_set): New prototypes.
6833         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
6834         cgraph_node_set_size): New inlines.
6835         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
6836         including cgraph.h.
6837         (struct ipa_opt_pass): Add struct cgraph_node_set_def
6838         argument to function 'write_summary'.
6839         * ipa.c: Include ggc.h.
6840         (hash_cgraph_node_set_element,
6841         eq_cgraph_node_set_element, cgraph_node_set_new,
6842         cgraph_node_set_add, cgraph_node_set_remove,
6843         cgraph_node_set_find, dump_cgraph_node_set,
6844         debug_cgraph_node_set): New functions.
6845         * Makefile.in (ipa.o): Add dependency on GGC_H.
6846
6847 2009-04-20  Ira Rosen  <irar@il.ibm.com>
6848
6849         PR tree-optimization/39675
6850         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
6851         check of the return code of vect_schedule_slp. Check that
6852         stmt_vec_info still exists for the statement, before checking its
6853         vectorization type.
6854
6855 2009-04-20  Michael Matz  <matz@suse.de>
6856
6857         * Makefile.in (generated_files): Take out $(simple_generated_c).
6858
6859 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
6860
6861         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
6862         (UINTPTR_TYPE):  Likewise.
6863
6864 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6865
6866         PR c/37481
6867         * c-typeck.c (digest_init): Check for initializing an array with a
6868         string literal.
6869
6870 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6871
6872         PR c/19771
6873         * c-semantics.c (pop_stmt_list): Propagate
6874         STATEMENT_LIST_HAS_LABEL to parent statement list.
6875
6876 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
6877
6878         * config/mips/mips.h (mips_tune_attr): New macro.
6879         * config/mips/mips.md (cpu): Use it.
6880
6881 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6882
6883         PR c/38243
6884         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
6885         declaring a tag.
6886
6887 2009-04-19  Diego Novillo  <dnovillo@google.com>
6888
6889         * toplev.c (compile_file): Move call to coverage_finish ...
6890         * cgraphunit.c (ipa_passes): ... here.
6891         Call cgraph_process_new_functions.
6892         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
6893         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
6894
6895 2009-04-19  Jan Hubicka  <jh@suse.cz>
6896
6897         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
6898         cfun.
6899         (dump_cgraph_node): Dump can throw external flag.
6900         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
6901
6902 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6903
6904         PR c/32061
6905         PR c++/36954
6906         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
6907         * common.opt (Wlogical-op): Move from here...
6908         * c.opt (Wlogical-op): ... to here.
6909         * c-typeck.c (parser_build_binary_op): Update call to
6910         warn_logical_operator.
6911         * c-opts.c (c_common_post_options): Enable warn_logical_op with
6912         extra_warnings.
6913         * c-common.c (warn_logical_op): Update.
6914         * c-common.h (warn_logical_op): Update declaration.
6915
6916 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
6917
6918         * tree.c (protected_set_expr_location): Fix formatting.
6919
6920 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6921
6922         PR c/27676
6923         * c-typeck.c (readonly_warning): new.
6924         (build_unary_op, build_modify_expr): Use readonly_warning for
6925         storing into something readonly but not const-qualified.
6926
6927 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6928
6929         PR c/22367
6930         * c-typeck.c (build_unary_op): Check for taking address of
6931         expression of type void.
6932
6933 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6934
6935         PR c/35210
6936         * c-typeck.c (build_function_call): Check for calling a function
6937         with qualified void return types.  Call require_complete_type when
6938         generating a trap.
6939
6940 2009-04-18  Jan Hubicka  <jh@suse.cz>
6941
6942         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
6943         Set nothrow flag.
6944         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
6945         can_throw_external flag.
6946         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
6947         * ipa-pure-const.c (ignore_edge): New function.
6948         (propagate): Compute order for NOTHROW computation; set NOTHROWs
6949         only over can_throw_external edges.
6950         (local_pure_const): Add nothrow flag.
6951         * ipa-utils.c (searchc): Add ignore_edge callback.
6952         (ipa_utils_reduced_inorder): Add ignore_edge callback.
6953         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
6954         (set_nothrow_function_flags): Update cgraph.
6955         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
6956
6957 2009-04-18  Richard Guenther  <rguenther@suse.de>
6958
6959         PR middle-end/39804
6960         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
6961         (fold_stmt): ... this and ...
6962         (fold_stmt_inplace): ... this.
6963         (fold_stmt_1): Fold references in calls and asms.
6964         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
6965
6966 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6967
6968         * tree-vrp.c (ssa_name_nonzero_p): Remove.
6969         * tree.h: Remove the prototype for ssa_name_nonzero_p.
6970
6971 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6972
6973         * tree.c (function_args_count): Remove.
6974         * tree.h: Remove the prototype for function_args_count.
6975
6976 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6977
6978         * tree-iterator.c (expr_only): Remove.
6979         * tree.h: Remove the prototype for expr_only.
6980
6981 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6982
6983         * reginfo.c (cannot_change_mode_set_regs): Remove.
6984         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
6985
6986 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
6987
6988         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
6989         whether operands 0 and 1 overlaps.
6990
6991 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6992
6993         PR middle-end/36902
6994         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
6995         pointer. Use warning_at instead of warning.
6996         (search_for_addr_array): Likewise.
6997         (check_array_bounds): Likewise.
6998         (check_all_array_refs): Check that the incoming edge is not in the
6999         list of edges to be removed.
7000         (check_all_array_refs): Avoid the temporal pointer.
7001         (vrp_visit_cond_stmt): Fix typo.
7002         (simplify_switch_using_ranges): Handle the case where the switch
7003         index is an integer constant.
7004
7005 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
7006
7007         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
7008
7009 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
7010
7011         * doc/extend.texi, doc/invoke.texi: Fix typos.
7012
7013 2009-04-17  Cary Coutant  <ccoutant@google.com>
7014
7015         * tree-flow-inline.h (get_lineno): Fix inverted test.
7016
7017 2009-04-17  Diego Novillo  <dnovillo@google.com>
7018
7019         * tree-ssa-pre.c (create_expression_by_pieces): Remove
7020         assertion for AVAIL_OUT.
7021
7022 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
7023
7024         PR target/38627
7025         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
7026         * config/sh/linux-atomic.asm: Likewise.
7027
7028 2009-04-17  Diego Novillo  <dnovillo@google.com>
7029
7030         * except.c (debug_eh_tree): New.
7031         (struct eh_region, struct eh_status): Move ...
7032         * except.h: ... here.
7033         (add_type_for_runtime): Declare extern.
7034         (lookup_type_for_runtime): Likewise.
7035         (debug_eh_tree): Declare.
7036         * Makefile.in (GTFILES): List except.h before except.c
7037
7038 2009-04-17  Diego Novillo  <dnovillo@google.com>
7039
7040         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
7041         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
7042         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
7043         (find_vars_r): ... here.
7044         * tree-flow.h (find_referenced_vars_in): Declare.
7045         * tree-ssa-pre.c (create_expression_by_pieces): Assert
7046         that AVAIL_OUT exists for BLOCK.
7047         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
7048         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
7049         (tree-parloops.o): Likewise.
7050
7051 2009-04-17  Simon Baldwin  <simonb@google.com>
7052
7053         * toplev.c (default_tree_printer): Add handling for %E format.
7054
7055 2009-04-17  Diego Novillo  <dnovillo@google.com>
7056
7057         * tree-pretty-print.c (dump_generic_node): Add break after
7058         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
7059         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
7060         FUNCTION_TYPE together.  Call print_struct_decl when printing
7061         structures and TDF_SLIM is not given.
7062         (print_struct_decl): Fix logic for detecting recursion.
7063
7064 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
7065
7066         PR 31567
7067         * gcc.c (create_at_file): New.
7068         (compile_input_file_p): New.
7069         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
7070         * main.c (main): Update call to toplev_main.
7071         * toplev.c (toplev_main): Change signature. Call expandargv.
7072         * toplev.h (toplev_main): Change signature.
7073
7074 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
7075
7076         * dwarf2out.c (field_byte_offset): Use the type size as the field size
7077         if the latter is not constant.
7078
7079 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
7080
7081         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
7082
7083 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
7084
7085         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
7086         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
7087
7088 2009-04-17  Richard Guenther  <rguenther@suse.de>
7089
7090         * tree-ssa-structalias.c (get_constraint_for_component_ref):
7091         Handle component references view-converting an invariant address.
7092
7093 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
7094
7095         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
7096         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
7097         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
7098         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
7099         Use @deftypevr rather than @deftypevar.
7100
7101 2009-04-17  Richard Guenther  <rguenther@suse.de>
7102
7103         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
7104         (get_prop_source_stmt): Likewise.
7105         (can_propagate_from): Likewise.
7106
7107 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
7108
7109         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
7110         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
7111         (--with-multilib-list): Add default value.
7112         * configure: Regenerate.
7113         * Makefile.in (TM_ENDIAN_CONFIG): Define.
7114         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
7115         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
7116         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
7117         Don't add default cpu to multilib list unnecessarily, but do enable
7118         the relevant compiler option..
7119         Add support for --with-multilib-list=<blank> and
7120         --with-multilib-list=!<somelib> to supress unwanted multilibs.
7121         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
7122         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
7123         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
7124         TM_MULTILIB_CONFIG.
7125         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
7126         (MULTILIB_OSDIRNAMES): New variable.
7127         * config/sh/t-1e: Delete file.
7128         * config/sh/t-mlib-sh1: Delete file.
7129         * config/sh/t-mlib-sh2: Delete file.
7130         * config/sh/t-mlib-sh2a: Delete file.
7131         * config/sh/t-mlib-sh2a-nofpu: Delete file.
7132         * config/sh/t-mlib-sh2a-single: Delete file.
7133         * config/sh/t-mlib-sh2a-single-only: Delete file.
7134         * config/sh/t-mlib-sh2e: Delete file.
7135         * config/sh/t-mlib-sh3e: Delete file.
7136         * config/sh/t-mlib-sh4: Delete file.
7137         * config/sh/t-mlib-sh4-nofpu: Delete file.
7138         * config/sh/t-mlib-sh4-single: Delete file.
7139         * config/sh/t-mlib-sh4-single-only: Delete file.
7140         * config/sh/t-mlib-sh4a: Delete file.
7141         * config/sh/t-mlib-sh4a-nofpu: Delete file.
7142         * config/sh/t-mlib-sh4a-single: Delete file.
7143         * config/sh/t-mlib-sh4a-single-only: Delete file.
7144         * config/sh/t-mlib-sh4al: Delete file.
7145         * config/sh/t-mlib-sh5-32media: Delete file.
7146         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
7147         * config/sh/t-mlib-sh5-64media: Delete file.
7148         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
7149         * config/sh/t-mlib-sh5-compact: Delete file.
7150         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
7151         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
7152         * doc/install.texi (Options specification): Add
7153         --with-multilib-list and --with-endian.
7154
7155 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
7156
7157         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
7158         REVISION_c.
7159         (OBJS-common): Add plugin-version.o.
7160         (plugin-version.o): New.
7161         * gcc-plugin.h (plugin_gcc_version): New.
7162         (plugin_default_version_check): New.
7163         (plugin_init_func, plugin_init): Add version argument.
7164         * plugin-version.c: New.
7165         * plugin.c (str_plugin_gcc_version_name): New.
7166         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
7167         pass it to the init function.
7168         (plugin_default_version_check): New.
7169
7170 2009-04-17  Richard Guenther  <rguenther@suse.de>
7171
7172         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
7173         for decl-vs-decl disambiguation.
7174
7175 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
7176
7177         * config/s390/s390.h (s390_tune_attr): New macro definition.
7178         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
7179
7180 2009-04-17  Richard Guenther  <rguenther@suse.de>
7181
7182         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
7183         (fold_stmt_r): Likewise.
7184         (maybe_fold_reference): New function.
7185         (fold_gimple_assign): Handle cases fold_stmt_r did.
7186         (fold_stmt): Do not use fold_stmt_r.
7187         (fold_stmt_inplace): Likewise.
7188
7189 2009-04-17  Richard Guenther  <rguenther@suse.de>
7190
7191         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
7192         (record_equivalences_from_stmt): Remove useless checks and
7193         simplifications.
7194         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
7195         the type is already suitable.
7196
7197 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
7198
7199         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
7200
7201 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
7202
7203         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
7204         (CMPtype): Define as __gcc_CMPtype.
7205
7206 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
7207
7208         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
7209         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
7210
7211 2009-04-17  Richard Guenther  <rguenther@suse.de>
7212
7213         PR tree-optimization/39746
7214         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
7215         special-casing for builtins and static variable use/def.
7216         (call_may_clobber_ref_p_1): Likewise.
7217
7218 2009-04-16  Ian Lance Taylor  <iant@google.com>
7219
7220         * df.h: Include "timevar.h".
7221         (struct df_problem): Change tv_id field to timevar_id_t.
7222         * tree-pass.h: Include "timevar.h".
7223         (struct opt_pass): Change tv_id field to timevar_id_t.
7224         * timevar.h (timevar_id_t): Define TV_NONE.
7225         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
7226         TV_NONE rather than tv_id != 0.
7227         (execute_one_pass): Likewise.
7228         * Makefile.in (DF_H): Add $(TIMEVAR_H).
7229         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
7230         dependencies to $(TREE_PASS_H).
7231         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
7232         to TV_NONE.
7233         (pass_branch_target_load_optimize2): Likewise.
7234         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
7235         (pass_outof_cfg_layout_mode): Likewise.
7236         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
7237         (pass_rebuild_cgraph_edges): Likewise.
7238         (pass_remove_cgraph_callee_edges): Likewise.
7239         * df-core.c (pass_df_initialize_opt): Likewise.
7240         (pass_df_initialize_no_opt): Likewise.
7241         (pass_df_finish): Likewise.
7242         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
7243         * except.c (pass_set_nothrow_function_flags): Likewise.
7244         (pass_convert_to_eh_region_ranges): Likewise.
7245         * final.c (pass_compute_alignments): Likewise.
7246         * function.c (pass_instantiate_virtual_regs): Likewise.
7247         (pass_init_function): Likewise.
7248         (pass_leaf_regs): Likewise.
7249         (pass_match_asm_constraints): Likewise.
7250         * gimple-low.c (pass_lower_cf): Likewise.
7251         (pass_mark_used_blocks): Likewise.
7252         * init-regs.c (pass_initialize_regs): Likewise.
7253         * integrate.c (pass_initial_value_sets): Likewise.
7254         * ira.c (pass_ira): Likewise.
7255         * jump.c (pass_cleanup_barriers): Likewise.
7256         * omp-low.c (pass_expand_omp): Likewise.
7257         (pass_lower_omp): Likewise.
7258         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
7259         * recog.c (pass_split_all_insns): Likewise.
7260         (pass_split_after_reload): Likewise.
7261         (pass_split_before_regstack): Likewise.
7262         (pass_split_before_sched2): Likewise.
7263         (pass_split_for_shorten_branches): Likewise.
7264         * reginfo.c (pass_reginfo_init): Likewise.
7265         (pass_subregs_of_mode_init): Likewise.
7266         (pass_subregs_of_mode_finish): Likewise.
7267         * passes.c (pass_postreload): Likewise.
7268         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
7269         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
7270         (pass_warn_function_return): Likewise.
7271         (pass_warn_function_noreturn): Likewise.
7272         * tree-complex.c (pass_lower_complex): Likewise.
7273         (pass_lower_complex_O0): Likewise.
7274         * tree-if-conv.c (pass_if_conversion): Likewise.
7275         * tree-into-ssa.c (pass_build_ssa): Likewise.
7276         * tree-mudflap.c (pass_mudflap_1): Likewise.
7277         (pass_mudflap_2): Likewise.
7278         * tree-nomudflap.c (pass_mudflap_1): Likewise.
7279         (pass_mudflap_2): Likewise.
7280         * tree-nrv.c (pass_return_slot): Likewise.
7281         * tree-object-size.c (pass_object_sizes): Likewise.
7282         * tree-optimize.c (pass_all_optimizations): Likewise.
7283         (pass_early_local_passes): Likewise.
7284         (pass_all_early_optimizations): Likewise.
7285         (pass_cleanup_cfg): Likewise.
7286         (pass_cleanup_cfg_post_optimizing): Likewise.
7287         (pass_free_datastructures): Likewise.
7288         (pass_free_cfg_annotations): Likewise.
7289         (pass_fixup_cfg): Likewise.
7290         (pass_init_datastructures): Likewise.
7291         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
7292         (pass_late_warn_uninitialized): Likewise.
7293         (pass_update_address_taken): Likewise.
7294         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
7295         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
7296         (pass_cse_sincos): Likewise.
7297         (pass_convert_to_rsqrt): Likewise.
7298         * tree-ssa-structalias.c (pass_build_alias): Likewise.
7299         * tree-stdarg.c (pass_stdarg): Likewise.
7300         * tree-tailcall.c (pass_tail_recursion): Likewise.
7301         (pass_tail_calls): Likewise.
7302         * tree-vect-generic.c (pass_lower_vector): Likewise.
7303         (pass_lower_vector_ssa): Likewise.
7304         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
7305
7306 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
7307
7308         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
7309         XLR entry.
7310         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
7311         Handle -march=xlr.
7312         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
7313         logical and signext.
7314
7315 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
7316
7317         PR target/39767
7318         * config/sh/predicates.md (arith_operand): Check if the operand
7319         of TRUNCATE is a REG.
7320
7321 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7322
7323         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
7324         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
7325
7326 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7327
7328         * tree-iterator.c (tsi_split_statement_list_after,
7329         tsi_split_statement_list_before): Remove.
7330         * tree-iterator.h: Remove the prototypes for
7331         tsi_split_statement_list_after and tsi_split_statement_list_before.
7332
7333 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7334
7335         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
7336         * tree-ssa-propagate.h: Remove the prototype for
7337         stmt_makes_single_load.
7338
7339 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7340
7341         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
7342         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
7343
7344 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7345
7346         * tree-iterator.c (EXPR_LAST_BODY): Remove.
7347
7348 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7349
7350         * except.c (eh_region_outer_p): Remove.
7351         * except.h: Remove the prototype for eh_region_outer_p.
7352
7353 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
7354
7355         * function.c (current_function_assembler_name): Remove.
7356         * function.h: Remove the prototype for
7357         current_function_assembler_name.
7358
7359 2009-04-16  Ian Lance Taylor  <iant@google.com>
7360
7361         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
7362         (add_reg_note): Call alloc_reg_note.
7363         * rtl.h (alloc_reg_note): Declare.
7364         * combine.c (try_combine): Use alloc_reg_note.
7365         (recog_for_combine, move_deaths): Likewise.
7366         (distribute_notes): Use alloc_reg_note and add_reg_note.
7367         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
7368         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
7369         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
7370
7371 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
7372
7373         PR rtl-optimization/39762
7374         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
7375         ira_may_move_out_cost): Add comments about way of their usage.
7376         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
7377
7378         * ira-conflicts.c (process_regs_for_copy): Use function
7379         ira_get_register_move_cost instead of global
7380         ira_register_move_cost.
7381
7382         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
7383         color_pass, move_spill_restore, update_curr_costs): Ditto.
7384
7385         * ira-lives.c (process_single_reg_class_operands): Ditto.
7386
7387         * ira-emit.c (emit_move_list): Ditto.
7388
7389         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
7390         (record_reg_classes): Ditto.  Use functions
7391         ira_get_register_move_cost and ira_get_may_move_cost instead of
7392         global vars ira_register_move_cost, ira_may_move_out_cost and
7393         ira_may_move_in_cost.
7394         (record_address_regs): Don't call ira_init_register_move_cost.
7395         Use function ira_get_may_move_cost instead of global
7396         ira_may_move_in_cost.
7397         (process_bb_node_for_hard_reg_moves): Use function
7398         ira_get_register_move_cost instead of global ira_register_move_cost.
7399         (ira_costs): Don't call ira_init_register_move_cost.
7400
7401 2009-04-16  Richard Guenther  <rguenther@suse.de>
7402
7403         * tree-cfg.c (verify_gimple_assign_binary):
7404         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
7405         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
7406         (create_general_new_stmt): Note that this function is broken.
7407
7408 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7409
7410         * common.opt (fhelp): Add Var(help_flag).
7411         * gcc-plugin.h (plugin_info): Add help.
7412         * plugin.c (plugin_name_args): Add help.
7413         (register_plugin_info): Set plugin->help.
7414         (print_help_one_plugin): New.
7415         (print_plugins_help): New.
7416         * plugin.h (print_plugins_help): New.
7417         * toplev.c (toplev_main): Call print_plugins_help if needed.
7418
7419 2009-04-16  Richard Guenther  <rguenther@suse.de>
7420
7421         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
7422         (gimple_ior_addresses_taken_1): New function.
7423         (gimple_ior_addresses_taken): Likewise.
7424         * gimple.h (struct gimple_statement_with_ops_base): Remove
7425         addresses_taken member.
7426         (gimple_ior_addresses_taken): Declare.
7427         (gimple_addresses_taken, gimple_addresses_taken_ptr,
7428         gimple_set_addresses_taken): Remove.
7429         * ipa-reference.c (mark_address): New function.
7430         (scan_stmt_for_static_refs): Use it for marking addresses taken.
7431         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
7432         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
7433         (gimple_add_to_addresses_taken): Remove.
7434         (get_tmr_operands): Call mark_address_taken.
7435         (get_asm_expr_operands): Likewise.
7436         (get_expr_operands): Likewise.
7437         (build_ssa_operands): Do not clear the addresses_taken bitmap.
7438         (free_stmt_operands): Do not free it.
7439         * tree-ssa.c (delete_tree_ssa): Likewise.
7440         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
7441
7442 2009-04-16  Richard Guenther  <rguenther@suse.de>
7443
7444         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
7445         (walk_stmt_load_store_ops): Likewise.
7446         * gimple.c (get_base_loadstore): New function.
7447         (walk_stmt_load_store_addr_ops): Likewise.
7448         (walk_stmt_load_store_ops): Likewise.
7449         * ipa-pure-const.c (check_op): Simplify.
7450         (check_load, check_store): New functions.
7451         (check_stmt): Use walk_stmt_load_store_ops.
7452         * ipa-reference.c (mark_load): Adjust signature.
7453         (mark_store): Likewise.
7454         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
7455
7456 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7457
7458         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
7459         (plugin_info): New.
7460         * opts.c (common_handle_option): Don't call print_version.
7461         * plugin.c (plugin_name_args): Add version.
7462         (register_plugin_info): New.
7463         (register_callback): Handle PLUGIN_INFO.
7464         (try_init_one_plugin): New.
7465         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
7466         if failed to init.
7467         (finalize_one_plugin): New.
7468         (finalize_plugins): New.
7469         (print_one_plugin): New.
7470         (print_plugins_versions): New.
7471         * plugin.h (print_plugins_versions): New.
7472         (finalize_plugins): New.
7473         * toplev.c (compile_file): Don't call initialize_plugins.
7474         (print_version): Call print_plugins_versions.
7475         (toplev_main): Call initialize_plugins. Print version if needed.
7476         Call finalize_plugins.
7477
7478 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7479
7480         * common.opt (fversion): New.
7481         * gcc.c (print_version): New.
7482         (process_command): Don't print the version. Just set print_version.
7483         (main): Print version. Call subprocesses if print_version and
7484         verbose_flag are set.
7485         * opts.c (common_handle_option): Handle OPT_fversion.
7486
7487 2009-04-16  Richard Guenther  <rguenther@suse.de>
7488             Ira Rosen  <irar@il.ibm.com>
7489
7490         PR tree-optimization/39698
7491         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
7492         type of the reduction variable.  Only generate the def if
7493         it is needed.
7494
7495         * omp-low.c (expand_omp_for_generic): When converting to a pointer
7496         make sure to first convert to an integer of the same precision.
7497         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
7498         the type of the evolution correctly in computing the new
7499         induction variable base.
7500
7501 2009-04-16  Richard Guenther  <rguenther@suse.de>
7502
7503         PR middle-end/39625
7504         * tree-cfg.c (make_blocks): Split statements with to-be
7505         abnormal SSA names on the lhs.
7506
7507 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
7508
7509         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
7510         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
7511         * c-typeck.c (really_start_incremental_init): Likewise.
7512         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
7513         (TARGET_INITIALIZER): Remove it.
7514         * target.h (struct target): Remove vector_opaque_p.
7515         * tree.c (build_opaque_vector_type): New.
7516         * tree.h (TYPE_VECTOR_OPAQUE): New.
7517         (build_opaque_vector_type): Declare.
7518         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
7519         * config/rs6000/rs6000.c (build_opaque_vector_type,
7520         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
7521         (rs6000_init_builtins): Use build_opaque_vector_type for
7522         opaque_V4SI_type_node.
7523
7524 2009-04-15  Catherine Moore  <clm@codesourcery.com>
7525
7526         * debug.h (set_name):  Declare.
7527         * dwarf2out.c (dwarf2out_set_name): Declare.
7528         (dwarf2_debug_hooks): Add set_name.
7529         (find_AT_string): New.
7530         (add_AT_string): Call find_AT_string.
7531         (dwarf2out_set_name): New.
7532         * cp/decl.c (grokdeclarator): Call set_name.
7533         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
7534         * debug.c (do_nothing_debug_hooks):  Likewise.
7535         * dbxout.c (dbx_debug_hooks): Likewise.
7536         * sdbout.c (sdb_debug_hooks): Likewise.
7537
7538 2009-04-15  Michael Eager  <eager@eagercon.com>
7539
7540         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
7541         reg for single-precision FPU.
7542         * config/rs6000/rs6000.md (movsi_internal1): Only for
7543         !TARGET_SINGLE_FPU.
7544         (movsi_internal1_single): New. Add pattern to move SI values to/from
7545         single-precision FP regs.
7546
7547 2009-04-15  Richard Guenther  <rguenther@suse.de>
7548
7549         * omp-low.c (lower_rec_input_clauses): Build correct address
7550         expressions.
7551         (expand_omp_for_generic): Fix multiplication type.
7552         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
7553         (generate_memset_zero): Fix types.
7554         * tree-profile.c (prepare_instrumented_value): Correctly
7555         widen a pointer.
7556
7557 2009-04-15  Ian Lance Taylor  <iant@google.com>
7558
7559         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
7560         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
7561         for -Wall and for -Wc++-compat.
7562         (c_common_post_options): For C++, set warn_enum_compare if not
7563         already set.
7564         * c-tree.h (struct c_expr): Add field original_type.
7565         (build_external_ref): Update declaration.
7566         * c-parser.c (c_parser_braced_init): Set original_type.
7567         (c_parser_initelt): Likewise.
7568         (c_parser_expr_no_commas): Likewise.
7569         (c_parser_conditional_expression): Likewise.
7570         (c_parser_cast_expression): Likewise.
7571         (c_parser_unary_expression): Likewise.  Pull setting of
7572         original_code to top of function.
7573         (c_parser_sizeof_expression): Set original_type.
7574         (c_parser_alignof_expression): Likewise.
7575         (c_parser_postfix_expression): Likewise.  Pull setting of
7576         original_code to top of function.
7577         (c_parser_postfix_expression_after_paren_type): Set original_type.
7578         (c_parser_postfix_expression_after_primary): Likewise.
7579         (c_parser_expression): Likewise.
7580         * c-typeck.c (build_external_ref): Add type parameter.  Change all
7581         callers.
7582         (c_expr_sizeof_expr): Set original_type field.
7583         (parser_build_unary_op): Likewise.
7584         (parser_build_binary_op): Likewise.  Optionally warn about
7585         comparisons of enums of different types.
7586         (digest_init): Set original_type field.
7587         (really_start_incremental_init): Likewise.
7588         (push_init_level, pop_init_level): Likewise.
7589         * doc/invoke.texi (Warning Options): -Wenum-compare now
7590         supported in C.
7591
7592 2009-04-15  Richard Guenther  <rguenther@suse.de>
7593
7594         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
7595         out a necessary conversion.
7596         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
7597         names we didn't value number.
7598         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
7599
7600 2009-04-15  Richard Guenther  <rguenther@suse.de>
7601
7602         PR tree-optimization/39764
7603         * tree-ssa-ccp.c (get_value): Canonicalize value with
7604         canonicalize_float_value.
7605
7606 2009-04-15  Jan Hubicka  <jh@suse.cz>
7607
7608         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
7609         Wrong version of patch.
7610
7611 2009-04-15  Jan Hubicka  <jh@suse.cz>
7612
7613         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
7614
7615 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
7616
7617         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
7618         our distinct integral and vector types.
7619
7620 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
7621
7622         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
7623         * init.c (build_vtbl_address): Remove call to assemble_external.
7624
7625 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
7626
7627         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
7628         output for other floating point modes.
7629
7630 2009-04-14  Diego Novillo  <dnovillo@google.com>
7631
7632         * diagnostic.c (diagnostic_report_diagnostic): Do not
7633         warn about loaded plugins for DK_ERROR and DK_WARNING.
7634         * c-decl.c (declspecs_add_type): Move call to
7635         invoke_plugin_callbacks ...
7636         * c-parser.c (c_parser_declspecs): ... here.
7637         * plugin.c (dump_active_plugins): Tidy output.
7638
7639 2009-04-14  Diego Novillo  <dnovillo@google.com>
7640             Le-Chun Wu  <lcwu@google.com>
7641
7642         * configure.ac: Add --enable-plugin support.
7643         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
7644         * Makefile.in (PLUGIN_H): Define.
7645         Export ENABLE_PLUGIN and GMPINC to site.exp.
7646         Add PLUGINLIBS to link command.
7647         Add/modify dependencies for plugin.o and files including plugin.h.
7648         (plugin.o): New.
7649         * config.in: Regenerate.
7650
7651         * opts.c (common_handle_option): Handle OPT_fplugin_ and
7652         OPT_fplugin_arg_.
7653
7654 2009-04-14  Le-Chun Wu  <lcwu@google.com>
7655
7656         * tree-pass.h (register_one_dump_file): Add a prototype for
7657         register_one_dump_file.
7658         * toplev.c (compile_file): Call initialize_plugins.
7659         (do_compile): Call invoke_plugin_callbacks.
7660         (toplev_main): Call invoke_plugin_callbacks.
7661         * common.opt: Add -fplugin= and -fplugin-arg-.
7662         * gcc-plugin.h: New public header file for plugins to include.
7663         * plugin.c: New source file.
7664         * plugin.h: New internal header file.
7665         * passes.c (register_one_dump_file): Make it external.
7666
7667         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
7668
7669 2009-04-14  Diego Novillo  <dnovillo@google.com>
7670
7671         * doc/plugins.texi: New.
7672         * doc/gccint.texi: Add reference to Plugins chapter.
7673         * doc/invoke.texi: Document -fplugin and -fplugin-arg
7674         * diagnostic.c (diagnostic_report_diagnostic): Warn about
7675         loaded plugins, if any.
7676         * timevar.def (TV_PLUGIN_INIT): Define.
7677         (TV_PLUGIN_RUN): Define.
7678         * plugin.c: Include timevar.h
7679         (plugins_active_p): New.
7680         (dump_active_plugins): New.
7681         (debug_active_plugins): New.
7682
7683 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
7684
7685         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
7686         library paths.
7687         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
7688
7689 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
7690
7691         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
7692         the same as a minus without a shift.
7693
7694 2009-04-14  Nick Clifton  <nickc@redhat.com>
7695
7696         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
7697         comparisons with small integers will always produce a short
7698         branch.
7699
7700 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
7701
7702         Merge:
7703         2008-12-19  Diego Novillo  <dnovillo@google.com>
7704
7705         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
7706
7707 2009-04-14  Richard Guenther  <rguenther@suse.de>
7708
7709         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
7710         verification.
7711         (verify_gimple_assign_binary): Likewise.  Handle shifts and
7712         rotates correctly.
7713         (verify_gimple_phi): Print the mismatched argument position.
7714         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
7715         Fix types.
7716         (vect_update_init_of_dr): Likewise.
7717         * matrix-reorg.c (transform_access_sites): Do what the
7718         comment suggests.
7719         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
7720
7721 2009-04-13  Michael Eager  <eager@eagercon.com>
7722
7723         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
7724         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
7725         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
7726         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
7727         remove duplicate config
7728
7729 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7730
7731         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
7732         file_name:line_number type locator of the call site.
7733
7734 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7735
7736         * genautomata.c: Put blank after comma.
7737         (automaton_decls): New.
7738         (struct unit_usage): Add comments to member next.
7739         (store_alt_unit_usage): Keep the list ordered.
7740         (unit_present_on_list_p, equal_alternatives_p): New.
7741         (check_regexp_units_distribution): Check units distribution
7742         correctness correctly.
7743         (main): Don't write automata if error is found.  Return correct
7744         exit code.
7745
7746         * config/m68k/cf.md (cfv4_ds): Remove.
7747         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
7748         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
7749
7750         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
7751         power4-load-ext, power4-store, power4-store-update,
7752         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
7753         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
7754         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
7755         power4-sqrt, power4-isync): Modify reservation to make correct
7756         unit distribution to automata.
7757
7758         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
7759         power5-store-update, power5-two, power5-three, power5-lmul,
7760         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
7761
7762 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
7763
7764         * except.c (pass_set_nothrow_function_flags): Set name and add
7765         TODO_dump_func.
7766         (set_nothrow_function_flags): Mention in the dump file when
7767         changing a function to nothrow.
7768
7769 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
7770
7771         PR/39066
7772         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
7773         instead of unsigned long.
7774
7775 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7776
7777         * config/arm/arm.c (return_used_this_function): Remove.
7778         (arm_output_function_prologue): Remove use of
7779         return_used_this_function.
7780         (output_return_instruction): Replace use of
7781         return_used_this_function
7782         by cfun->machine->return_used_this_function.
7783         (arm_output_epilogue): Likewise.
7784         (arm_output_function_epilogue): Likewise.
7785         (thumb_unexpanded_epilogue): Likewise.
7786         * config/arm/arm.h (struct machine_function):
7787         New member return_used_this_function.
7788
7789 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
7790
7791         * doc/install.texi: Correct description of default directory for
7792         --with-gxx-include-dir.
7793
7794 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7795
7796         * fold-const.c (build_range_check): Properly deal with enumeral and
7797         boolean base types.
7798
7799 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
7800
7801         * doc/invoke.texi (max_gcse_passes): Remove documentation.
7802         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
7803         * params.h (MAX_GCSE_PASSES): Remove.
7804         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
7805         in sequence.  Remove ability to run multiple passes.
7806         (bypass_jumps): Report run as third CPROP pass.
7807
7808 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
7809
7810         PR middle-end/39651
7811         * except.c (can_throw_external): Look at each insn in a SEQUENCE
7812         when deciding whether the whole SEQUENCE can throw.
7813
7814 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
7815
7816         PR target/39740
7817         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
7818         offseted label references.
7819
7820 2009-04-11  Jan Hubicka  <jh@suse.cz>
7821
7822         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
7823
7824 2009-04-11  Richard Guenther  <rguenther@suse.de>
7825
7826         PR middle-end/39732
7827         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
7828         return variables as TREE_ADDRESSABLE.
7829
7830 2009-04-11  Richard Guenther  <rguenther@suse.de>
7831
7832         PR tree-optimization/39713
7833         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
7834         reference trees have SSA_NAME operands.
7835
7836 2009-04-11  Richard Guenther  <rguenther@suse.de>
7837
7838         PR c/39712
7839         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
7840         address expressions.
7841
7842 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
7843
7844         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
7845         match changes in Cygwin 1.7
7846         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
7847         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
7848
7849 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7850
7851         PR tree-optimization/39701
7852         * doc/invoke.texi (Optimization Options): Document change in
7853         meaning and initialization of -fdelete-null-pointer-checks.
7854
7855 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7856
7857         PR middle-end/39701
7858         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
7859
7860         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
7861         here.
7862
7863         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
7864
7865 2009-04-10  Chao-ying Fu  <fu@mips.com>
7866
7867         * doc/tm.texi (Instruction Output): Document
7868         TARGET_ASM_FINAL_POSTSCAN_INSN.
7869         * target.h (final_postscan_insn): New field in asm_out.
7870         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7871         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
7872         * final.c (final_scan_insn): Call
7873         targetm.asm_out.final_postscan_insn after outputting
7874         an asm macro and a normal instruction.
7875
7876         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
7877         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
7878         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
7879         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
7880         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7881
7882 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7883
7884         PR middle-end/39701
7885         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
7886         variables as non-NULL even with -fdelete-null-pointer-checks.
7887
7888 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7889
7890         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
7891
7892 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7893
7894         PR target/39678
7895         * config/i386/i386.c (classify_argument): Handle SCmode with
7896         (bit_offset % 64) != 0.
7897
7898 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
7899
7900         * doc/invoke.texi (Optimize Options): Add cross-reference to
7901         -Q --help=optimizers examples.
7902
7903 2009-04-10  Ben Elliston  <bje@au.ibm.com>
7904
7905         PR target/36800
7906         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
7907         regalign for the reg == fpr and TDmode case.
7908
7909 2009-04-09  David Ayers  <ayers@fsfe.org>
7910
7911         PR objc/29200
7912         * objc/objc-act.c (warn_with_method): Remove helper function.
7913         (check_duplicates): Call warning and inform directly.
7914         (really_start_method): Likewise.
7915
7916 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7917
7918         * expmed.c (expand_divmod): Always use a comparison for a division
7919         by a large unsigned integer.
7920
7921         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
7922         for things others than variables or functions as nonzero.
7923
7924 2009-04-09  Nick Clifton  <nickc@redhat.com>
7925
7926         * unwind-compat.c: Change copyright header to refer to version
7927         3 of the GNU General Public License with version 3.1 of the
7928         GCC Runtime Library Exception and to point readers at the
7929         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
7930         * config/alpha/crtfastmath.c: Likewise.
7931         * config/alpha/linux-unwind.h: Likewise.
7932         * config/alpha/qrnnd.asm: Likewise.
7933         * config/alpha/vms-crt0-64.c: Likewise.
7934         * config/alpha/vms-crt0.c: Likewise.
7935         * config/alpha/vms-dwarf2.asm: Likewise.
7936         * config/alpha/vms-dwarf2eh.asm: Likewise.
7937         * config/alpha/vms-psxcrt0-64.c: Likewise.
7938         * config/alpha/vms-psxcrt0.c: Likewise.
7939         * config/alpha/vms_tramp.asm: Likewise.
7940         * config/arc/initfini.c: Likewise.
7941         * config/arc/lib1funcs.asm: Likewise.
7942         * config/arm/bpabi-v6m.S: Likewise.
7943         * config/arm/bpabi.S: Likewise.
7944         * config/arm/bpabi.c: Likewise.
7945         * config/arm/crti.asm: Likewise.
7946         * config/arm/crtn.asm: Likewise.
7947         * config/arm/ieee754-df.S: Likewise.
7948         * config/arm/ieee754-sf.S: Likewise.
7949         * config/arm/lib1funcs.asm: Likewise.
7950         * config/arm/libunwind.S: Likewise.
7951         * config/arm/linux-atomic.c: Likewise.
7952         * config/arm/mmintrin.h: Likewise.
7953         * config/arm/pr-support.c: Likewise.
7954         * config/arm/unaligned-funcs.c: Likewise.
7955         * config/arm/unwind-arm.c: Likewise.
7956         * config/arm/unwind-arm.h: Likewise.
7957         * config/avr/libgcc.S: Likewise.
7958         * config/bfin/crti.s: Likewise.
7959         * config/bfin/crtlibid.s: Likewise.
7960         * config/bfin/crtn.s: Likewise.
7961         * config/bfin/lib1funcs.asm: Likewise.
7962         * config/bfin/linux-unwind.h: Likewise.
7963         * config/cris/arit.c: Likewise.
7964         * config/cris/cris_abi_symbol.c: Likewise.
7965         * config/darwin-64.c: Likewise.
7966         * config/darwin-crt2.c: Likewise.
7967         * config/darwin-crt3.c: Likewise.
7968         * config/darwin.h: Likewise.
7969         * config/dbxelf.h: Likewise.
7970         * config/dfp-bit.c: Likewise.
7971         * config/dfp-bit.h: Likewise.
7972         * config/elfos.h: Likewise.
7973         * config/fixed-bit.c: Likewise.
7974         * config/fixed-bit.h: Likewise.
7975         * config/fp-bit.c: Likewise.
7976         * config/fp-bit.h: Likewise.
7977         * config/fr30/crti.asm: Likewise.
7978         * config/fr30/crtn.asm: Likewise.
7979         * config/fr30/lib1funcs.asm: Likewise.
7980         * config/freebsd-spec.h: Likewise.
7981         * config/frv/cmovd.c: Likewise.
7982         * config/frv/cmovh.c: Likewise.
7983         * config/frv/cmovw.c: Likewise.
7984         * config/frv/frvbegin.c: Likewise.
7985         * config/frv/frvend.c: Likewise.
7986         * config/frv/lib1funcs.asm: Likewise.
7987         * config/glibc-stdint.h: Likewise.
7988         * config/h8300/clzhi2.c: Likewise.
7989         * config/h8300/crti.asm: Likewise.
7990         * config/h8300/crtn.asm: Likewise.
7991         * config/h8300/ctzhi2.c: Likewise.
7992         * config/h8300/fixunssfsi.c: Likewise.
7993         * config/h8300/lib1funcs.asm: Likewise.
7994         * config/h8300/parityhi2.c: Likewise.
7995         * config/h8300/popcounthi2.c: Likewise.
7996         * config/i386/ammintrin.h: Likewise.
7997         * config/i386/att.h: Likewise.
7998         * config/i386/avxintrin.h: Likewise.
7999         * config/i386/biarch64.h: Likewise.
8000         * config/i386/bmmintrin.h: Likewise.
8001         * config/i386/cpuid.h: Likewise.
8002         * config/i386/cross-stdarg.h: Likewise.
8003         * config/i386/crtfastmath.c: Likewise.
8004         * config/i386/crtprec.c: Likewise.
8005         * config/i386/cygming-crtbegin.c: Likewise.
8006         * config/i386/cygming-crtend.c: Likewise.
8007         * config/i386/cygwin.asm: Likewise.
8008         * config/i386/emmintrin.h: Likewise.
8009         * config/i386/gmm_malloc.h: Likewise.
8010         * config/i386/gthr-win32.c: Likewise.
8011         * config/i386/i386.h: Likewise.
8012         * config/i386/immintrin.h: Likewise.
8013         * config/i386/linux-unwind.h: Likewise.
8014         * config/i386/linux64.h: Likewise.
8015         * config/i386/mm3dnow.h: Likewise.
8016         * config/i386/mmintrin-common.h: Likewise.
8017         * config/i386/mmintrin.h: Likewise.
8018         * config/i386/nmmintrin.h: Likewise.
8019         * config/i386/pmm_malloc.h: Likewise.
8020         * config/i386/pmmintrin.h: Likewise.
8021         * config/i386/smmintrin.h: Likewise.
8022         * config/i386/sol2-c1.asm: Likewise.
8023         * config/i386/sol2-ci.asm: Likewise.
8024         * config/i386/sol2-cn.asm: Likewise.
8025         * config/i386/sol2-gc1.asm: Likewise.
8026         * config/i386/tmmintrin.h: Likewise.
8027         * config/i386/unix.h: Likewise.
8028         * config/i386/w32-unwind.h: Likewise.
8029         * config/i386/wmmintrin.h: Likewise.
8030         * config/i386/x86-64.h: Likewise.
8031         * config/i386/x86intrin.h: Likewise.
8032         * config/i386/xmmintrin.h: Likewise.
8033         * config/ia64/crtbegin.asm: Likewise.
8034         * config/ia64/crtend.asm: Likewise.
8035         * config/ia64/crtfastmath.c: Likewise.
8036         * config/ia64/crti.asm: Likewise.
8037         * config/ia64/crtn.asm: Likewise.
8038         * config/ia64/fde-glibc.c: Likewise.
8039         * config/ia64/lib1funcs.asm: Likewise.
8040         * config/ia64/linux-unwind.h: Likewise.
8041         * config/ia64/quadlib.c: Likewise.
8042         * config/ia64/unwind-ia64.c: Likewise.
8043         * config/linux.h: Likewise.
8044         * config/m32c/m32c-lib1.S: Likewise.
8045         * config/m32c/m32c-lib2-trapv.c: Likewise.
8046         * config/m32c/m32c-lib2.c: Likewise.
8047         * config/m32r/initfini.c: Likewise.
8048         * config/m68hc11/larith.asm: Likewise.
8049         * config/m68hc11/m68hc11-crt0.S: Likewise.
8050         * config/m68k/cf.md: Likewise.
8051         * config/m68k/crti.s: Likewise.
8052         * config/m68k/crtn.s: Likewise.
8053         * config/m68k/lb1sf68.asm: Likewise.
8054         * config/m68k/linux-unwind.h: Likewise.
8055         * config/mcore/crti.asm: Likewise.
8056         * config/mcore/crtn.asm: Likewise.
8057         * config/mcore/lib1.asm: Likewise.
8058         * config/mips/linux-unwind.h: Likewise.
8059         * config/mips/loongson.h: Likewise.
8060         * config/mips/mips16.S: Likewise.
8061         * config/mmix/crti.asm: Likewise.
8062         * config/mmix/crtn.asm: Likewise.
8063         * config/pa/fptr.c: Likewise.
8064         * config/pa/hpux-unwind.h: Likewise.
8065         * config/pa/lib2funcs.asm: Likewise.
8066         * config/pa/linux-atomic.c: Likewise.
8067         * config/pa/linux-unwind.h: Likewise.
8068         * config/pa/milli64.S: Likewise.
8069         * config/pa/quadlib.c: Likewise.
8070         * config/pa/stublib.c: Likewise.
8071         * config/picochip/libgccExtras/adddi3.asm: Likewise.
8072         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
8073         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
8074         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
8075         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
8076         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
8077         * config/picochip/libgccExtras/divmod15.asm: Likewise.
8078         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
8079         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
8080         * config/picochip/libgccExtras/longjmp.asm: Likewise.
8081         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
8082         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
8083         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
8084         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
8085         * config/picochip/libgccExtras/setjmp.asm: Likewise.
8086         * config/picochip/libgccExtras/subdi3.asm: Likewise.
8087         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
8088         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
8089         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
8090         * config/rs6000/750cl.h: Likewise.
8091         * config/rs6000/altivec.h: Likewise.
8092         * config/rs6000/biarch64.h: Likewise.
8093         * config/rs6000/crtresfpr.asm: Likewise.
8094         * config/rs6000/crtresgpr.asm: Likewise.
8095         * config/rs6000/crtresxfpr.asm: Likewise.
8096         * config/rs6000/crtresxgpr.asm: Likewise.
8097         * config/rs6000/crtsavfpr.asm: Likewise.
8098         * config/rs6000/crtsavgpr.asm: Likewise.
8099         * config/rs6000/darwin-asm.h: Likewise.
8100         * config/rs6000/darwin-fallback.c: Likewise.
8101         * config/rs6000/darwin-fpsave.asm: Likewise.
8102         * config/rs6000/darwin-ldouble.c: Likewise.
8103         * config/rs6000/darwin-tramp.asm: Likewise.
8104         * config/rs6000/darwin-unwind.h: Likewise.
8105         * config/rs6000/darwin-vecsave.asm: Likewise.
8106         * config/rs6000/darwin-world.asm: Likewise.
8107         * config/rs6000/e500crtres32gpr.asm: Likewise.
8108         * config/rs6000/e500crtres64gpr.asm: Likewise.
8109         * config/rs6000/e500crtres64gprctr.asm: Likewise.
8110         * config/rs6000/e500crtrest32gpr.asm: Likewise.
8111         * config/rs6000/e500crtrest64gpr.asm: Likewise.
8112         * config/rs6000/e500crtresx32gpr.asm: Likewise.
8113         * config/rs6000/e500crtresx64gpr.asm: Likewise.
8114         * config/rs6000/e500crtsav32gpr.asm: Likewise.
8115         * config/rs6000/e500crtsav64gpr.asm: Likewise.
8116         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
8117         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
8118         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
8119         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
8120         * config/rs6000/eabi-ci.asm: Likewise.
8121         * config/rs6000/eabi-cn.asm: Likewise.
8122         * config/rs6000/eabi.asm: Likewise.
8123         * config/rs6000/linux-unwind.h: Likewise.
8124         * config/rs6000/linux64.h: Likewise.
8125         * config/rs6000/paired.h: Likewise.
8126         * config/rs6000/paired.md: Likewise.
8127         * config/rs6000/ppc64-fp.c: Likewise.
8128         * config/rs6000/ppu_intrinsics.h: Likewise.
8129         * config/rs6000/rs6000.h: Likewise.
8130         * config/rs6000/si2vmx.h: Likewise.
8131         * config/rs6000/sol-ci.asm: Likewise.
8132         * config/rs6000/sol-cn.asm: Likewise.
8133         * config/rs6000/spe.h: Likewise.
8134         * config/rs6000/spu2vmx.h: Likewise.
8135         * config/rs6000/sysv4.h: Likewise.
8136         * config/rs6000/tramp.asm: Likewise.
8137         * config/rs6000/vec_types.h: Likewise.
8138         * config/s390/linux-unwind.h: Likewise.
8139         * config/s390/tpf-unwind.h: Likewise.
8140         * config/score/crti.asm: Likewise.
8141         * config/score/crtn.asm: Likewise.
8142         * config/sh/crt1.asm: Likewise.
8143         * config/sh/crti.asm: Likewise.
8144         * config/sh/crtn.asm: Likewise.
8145         * config/sh/divtab-sh4-300.c: Likewise.
8146         * config/sh/divtab-sh4.c: Likewise.
8147         * config/sh/divtab.c: Likewise.
8148         * config/sh/lib1funcs-4-300.asm: Likewise.
8149         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
8150         * config/sh/lib1funcs.asm: Likewise.
8151         * config/sh/lib1funcs.h: Likewise.
8152         * config/sh/linux-atomic.asm: Likewise.
8153         * config/sh/linux-unwind.h: Likewise.
8154         * config/sh/shmedia.h: Likewise.
8155         * config/sh/sshmedia.h: Likewise.
8156         * config/sh/ushmedia.h: Likewise.
8157         * config/sparc/crtfastmath.c: Likewise.
8158         * config/sparc/linux-unwind.h: Likewise.
8159         * config/sparc/sol2-c1.asm: Likewise.
8160         * config/sparc/sol2-ci.asm: Likewise.
8161         * config/sparc/sol2-cn.asm: Likewise.
8162         * config/spu/divmodti4.c: Likewise.
8163         * config/spu/divv2df3.c: Likewise.
8164         * config/spu/float_disf.c: Likewise.
8165         * config/spu/float_unsdidf.c: Likewise.
8166         * config/spu/float_unsdisf.c: Likewise.
8167         * config/spu/float_unssidf.c: Likewise.
8168         * config/spu/mfc_multi_tag_release.c: Likewise.
8169         * config/spu/mfc_multi_tag_reserve.c: Likewise.
8170         * config/spu/mfc_tag_release.c: Likewise.
8171         * config/spu/mfc_tag_reserve.c: Likewise.
8172         * config/spu/mfc_tag_table.c: Likewise.
8173         * config/spu/multi3.c: Likewise.
8174         * config/spu/spu_internals.h: Likewise.
8175         * config/spu/spu_intrinsics.h: Likewise.
8176         * config/spu/spu_mfcio.h: Likewise.
8177         * config/spu/vec_types.h: Likewise.
8178         * config/spu/vmx2spu.h: Likewise.
8179         * config/stormy16/stormy16-lib2.c: Likewise.
8180         * config/svr4.h: Likewise.
8181         * config/sync.c: Likewise.
8182         * config/v850/lib1funcs.asm: Likewise.
8183         * config/vxlib-tls.c: Likewise.
8184         * config/vxlib.c: Likewise.
8185         * config/vxworks-dummy.h: Likewise.
8186         * config/xtensa/crti.asm: Likewise.
8187         * config/xtensa/crtn.asm: Likewise.
8188         * config/xtensa/ieee754-df.S: Likewise.
8189         * config/xtensa/ieee754-sf.S: Likewise.
8190         * config/xtensa/lib1funcs.asm: Likewise.
8191         * config/xtensa/lib2funcs.S: Likewise.
8192         * config/xtensa/linux-unwind.h: Likewise.
8193         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
8194         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
8195         * coretypes.h: Likewise.
8196         * crtstuff.c: Likewise.
8197         * defaults.h: Likewise.
8198         * dwarf2.h: Likewise.
8199         * emutls.c: Likewise.
8200         * gbl-ctors.h: Likewise.
8201         * gcov-io.h: Likewise.
8202         * ginclude/float.h: Likewise.
8203         * ginclude/iso646.h: Likewise.
8204         * ginclude/stdarg.h: Likewise.
8205         * ginclude/stdbool.h: Likewise.
8206         * ginclude/stddef.h: Likewise.
8207         * ginclude/stdfix.h: Likewise.
8208         * ginclude/stdint-gcc.h: Likewise.
8209         * ginclude/tgmath.h: Likewise.
8210         * gthr-aix.h: Likewise.
8211         * gthr-dce.h: Likewise.
8212         * gthr-gnat.c: Likewise.
8213         * gthr-gnat.h: Likewise.
8214         * gthr-lynx.h: Likewise.
8215         * gthr-mipssde.h: Likewise.
8216         * gthr-nks.h: Likewise.
8217         * gthr-posix.c: Likewise.
8218         * gthr-posix.h: Likewise.
8219         * gthr-posix95.h: Likewise.
8220         * gthr-rtems.h: Likewise.
8221         * gthr-single.h: Likewise.
8222         * gthr-solaris.h: Likewise.
8223         * gthr-tpf.h: Likewise.
8224         * gthr-vxworks.h: Likewise.
8225         * gthr-win32.h: Likewise.
8226         * gthr.h: Likewise.
8227         * libgcc2.c: Likewise.
8228         * libgcc2.h: Likewise.
8229         * libgcov.c: Likewise.
8230         * tsystem.h: Likewise.
8231         * typeclass.h: Likewise.
8232         * unwind-c.c: Likewise.
8233         * unwind-compat.h: Likewise.
8234         * unwind-dw2-fde-compat.c: Likewise.
8235         * unwind-dw2-fde-darwin.c: Likewise.
8236         * unwind-dw2-fde-glibc.c: Likewise.
8237         * unwind-dw2-fde.c: Likewise.
8238         * unwind-dw2-fde.h: Likewise.
8239         * unwind-dw2.c: Likewise.
8240         * unwind-dw2.h: Likewise.
8241         * unwind-generic.h: Likewise.
8242         * unwind-pe.h: Likewise.
8243         * unwind-sjlj.c: Likewise.
8244         * unwind.inc: Likewise.
8245         * config/arm/neon-gen.ml: Change generated copyright header to
8246         refer to version 3 of the GNU General Public License with
8247         version 3.1 of the GCC Runtime Library Exception and to point
8248         readers at the COPYING3 and COPYING3.RUNTIME files and the
8249         FSF's license web page.
8250         * config/arm/arm_neon.h: Regenerate.
8251
8252 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
8253
8254         * config/cris/cris.md: Change copyright header to refer to version
8255         3 of the GNU General Public License.
8256         * doc/install.texi2html: Change copyright header to refer to version
8257         3 of the GNU General Public License and to point readers at the
8258         COPYING3 file and the FSF's license web page.
8259         * config/vax/linux.h: Likewise.
8260
8261 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
8262
8263         * config/i386/i386.md (cmpcc): New.
8264         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
8265         (sync_compare_and_swap_cc*): Delete.
8266
8267         * config/s390/s390.c (s390_compare_emitted): Remove.
8268         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
8269         s390_compare_emitted used to be handled.  Assert that modes match.
8270         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
8271         refer to sync_compare_and_swap_ccsi.
8272         * config/s390/s390.h (s390_compare_emitted): Remove.
8273         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
8274         instead of s390_compare_emitted.
8275         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
8276         instead of s390_compare_emitted.
8277         * config/s390/s390.md (cmpcc): New.
8278         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
8279         CC_REGNUM, do not pretend it's set.
8280         (sync_compare_and_swap_cc*): Delete.
8281         * config/s390/predicates.md (cc_reg_operand): New.
8282
8283         * expr.c (sync_compare_and_swap_cc): Delete.
8284         * optabs.h (sync_compare_and_swap_cc): Delete.
8285         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
8286         is being used with can_compare_p.
8287         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
8288         (find_cc_set): New.
8289         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
8290         look for a MODE_CC set instead.  Use emit_store_flag.
8291         (expand_compare_and_swap_loop): Likewise, with some additional
8292         complication to avoid a force_reg when useless.  Use
8293         emit_cmp_and_jump_insns.
8294         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
8295         * doc/md.texi (sync_compare_and_swap_cc): Merge with
8296         sync_compare_and_swap documentation.
8297
8298 2009-04-09  Jan Hubicka  <jh@suse.cz>
8299
8300         * except.c (find_prev_try): Break out from ....
8301         (duplicate_eh_regions): ... here; properly update prev_try pointers
8302         when duplication part of tree.
8303         (dump_eh_tree): Improve dumping.
8304         (verify_eh_region): New.
8305         (verify_eh_tree): Use it.
8306
8307 2009-04-06  Richard Guenther  <rguenther@suse.de>
8308
8309         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
8310         &ARRAY addresses by adjusting their types and prepending
8311         a conversion.
8312         * tree-cfg.c (verify_gimple_assign_single): Verify that
8313         addresses are correct.
8314
8315 2009-04-09  Richard Guenther  <rguenther@suse.de>
8316
8317         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
8318         indices into an array reference if possible.
8319         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
8320         Fold POINTER_PLUS_EXPR statements with invariant address.
8321
8322 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
8323
8324         PR target/39634
8325         * config.gcc (powerpc64-*-linux*): Always build biarch.
8326
8327 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
8328
8329         PR c/39613
8330         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
8331         it and pedwarn if this results in an INTEGER_CST.
8332
8333 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8334
8335         * doc/install.texi: Update minimum GMP version.  Remove obsolete
8336         text in MPFR section.
8337
8338 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
8339
8340         * dwarf2out.c (class_scope_p): New static inline.
8341         (class_or_namespace_scope_p): Use it.
8342         (gen_variable_die): Use DW_TAG_member tag for static data member
8343         declarations instead of DW_TAG_variable.
8344
8345         PR middle-end/39573
8346         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
8347         variables.
8348
8349 2009-04-08  Richard Guenther  <rguenther@suse.de>
8350
8351         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
8352         valueize random data.
8353
8354 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
8355
8356         * config.gcc (aix tm_file):  Add aix-stdint.h.
8357         (aix tm clause use_gcc_stdint):  Set to wrap.
8358         * config/rs6000/aix-stdint.h:  New file.
8359
8360 2009-04-08  Richard Guenther  <rguenther@suse.de>
8361
8362         PR middle-end/36291
8363         * tree-dfa.c (add_referenced_var): Do not recurse into
8364         global initializers.
8365         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
8366         exposed variables.
8367         (fold_const_aggregate_ref): Likewise.
8368
8369 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8370
8371         * recog.c (ordered_comparison_operator): New.
8372         * gensupport.c (std_preds): Add it.
8373         * doc/md.texi (Machine-Independent Predicates): Document it.
8374
8375 2009-04-08  Jan Hubicka  <jh@suse.cz>
8376
8377         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
8378         * function.h (rtl_eh): Remove exception_handler_label_map.
8379         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
8380         remove_exception_handler_label, for_each_eh_label_1): Remove.
8381         (rtl_remove_unreachable_regions): Remove.
8382         (convert_from_eh_region_ranges): Do not remove unreachable regions.
8383         (find_exception_handler_labels): Don't build the hashtable.
8384         (maybe_remove_eh_handler): Remove.
8385         (for_each_eh_label): Rewrite to walk the tree.
8386         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
8387         * except.h (maybe_remove_eh_handler): Remove.
8388         * passes.c (init_optimization_passes): Schedule second EH cleanup
8389         before out-of-ssa.
8390         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
8391         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
8392
8393 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8394
8395         * genoutput.c (validate_optab_operands): New.
8396         (gen_insn, gen_expand): Call it.
8397
8398         * genflags.c (gen_insn): Detect misused iterators.
8399         (main): Pass line_no to gen_insn, exit with status 1 on error.
8400
8401         * genextract.c (line_no): Make global.
8402         (VEC_safe_set_locstr): Change assertion to error message.
8403         (main): Exit with status 1 on error.
8404
8405 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
8406
8407         PR c/39614
8408         PR c/39673
8409         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
8410         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
8411         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
8412         * c-convert.c (convert): Do not call fold on results of conversion
8413         functions when the result is a C_MAYBE_CONST_EXPR.
8414         * c-parser.c (c_parser_postfix_expression): Do not fold condition
8415         of __builtin_choose_expr.
8416         * c-typeck.c (remove_c_maybe_const_expr): New.
8417         (build_unary_op, build_conditional_expr, build_compound_expr,
8418         build_binary_op, c_objc_common_truthvalue_conversion): Call
8419         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
8420         integer operands.
8421
8422 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
8423
8424         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
8425         CODE to produce a new one. Add a prototype to use fold_convert_const
8426
8427 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
8428
8429         PR bootstrap/39660
8430         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
8431         mix declarations and code.
8432
8433 2009-04-08  Ben Elliston  <bje@au.ibm.com>
8434
8435         * gcc.c: Replace `CC' with `GCC' throughout.
8436
8437 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8438
8439         * doc/invoke.texi: Document Atom support.
8440
8441 2009-04-07  Jason Merrill  <jason@redhat.com>
8442
8443         PR c++/25185
8444         * c-common.h, c-common.c: Add flag_pretty_templates.
8445         * c-opts.c (c_common_handle_option): Set it.
8446         * c.opt: Add -fno-pretty-templates.
8447         * doc/invoke.texi (C++ Dialect Options): Likewise.
8448
8449 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
8450
8451         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
8452         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
8453         (ia64_expand_builtin): Likewise.
8454
8455 2009-04-07  Martin Jambor  <mjambor@suse.cz>
8456
8457         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
8458         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
8459         ADDR_EXPRS are include too.
8460
8461 2009-04-07  Richard Guenther  <rguenther@suse.de>
8462
8463         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
8464         decls are only used if passes as parameters or if they are
8465         local statics and the call is not to a builtin.
8466         (call_may_clobber_ref_p_1): Likewise.
8467
8468 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8469
8470         * expr.c (do_store_flag): Remove last argument.  Simplify code
8471         to avoid duplication of tests already done by can_compare_p.
8472         (expand_expr_real_1): Adjust caller.
8473
8474 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8475
8476         * optabs.c (can_compare_p): Test the predicate of a
8477         cbranch and cstore pattern.
8478
8479 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8480
8481         * expr.c (convert_move): Use emit_store_flag instead of
8482         "emulating" it.
8483
8484 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8485
8486         * config/i386/i386.c (ix86_compare_emitted): Remove.
8487         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
8488         ix86_compare_op0 like ix86_compare_emitted used to be handled.
8489         * config/i386/i386.h (ix86_compare_emitted): Remove.
8490         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
8491         instead of ix86_compare_emitted.
8492         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
8493
8494 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
8495
8496         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
8497         Add t-sysroot-suffix to tmake_file.
8498         * config/print-sysroot-suffix.sh: New file.
8499         * config/t-sysroot-suffix: New file.
8500
8501 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8502
8503         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
8504         as the latter produces a warning when the target does not support
8505         infinity.
8506
8507 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8508
8509         * dfp.c: Replace type punning assignments with memcpy throughout.
8510         * Makefile.in (dfp.o-warn): Remove.
8511
8512 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
8513
8514         PR target/39634
8515         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
8516         Include soft-fp/t-softfp after rs6000/t-linux64.
8517
8518 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8519
8520         * stor-layout.c (set_sizetype): Use the full precision of their
8521         machine mode for bitsize types.
8522
8523 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
8524
8525         * config/i386/i386.md: Revert 2 accidental checkins.
8526
8527 2009-04-06  Joey Ye  <joey.ye@intel.com>
8528             Xuepeng Guo  <xuepeng.guo@intel.com>
8529             H.J. Lu  <hongjiu.lu@intel.com>
8530
8531         Atom pipeline model, tuning and insn selection.
8532         * config.gcc (atom): Add atom config options and target.
8533
8534         * config/i386/atom.md: New.
8535
8536         * config/i386/i386.c (atom_cost): New cost.
8537         (m_ATOM): New macro flag.
8538         (initial_ix86_tune_features): Set m_ATOM.
8539         (x86_accumulate_outgoing_args): Likewise.
8540         (x86_arch_always_fancy_math_387): Likewise.
8541         (processor_target): Add Atom cost.
8542         (cpu_names): Add Atom cpu name.
8543         (override_options): Set Atom ISA.
8544         (ix86_issue_rate): New case PROCESSOR_ATOM.
8545         (ix86_adjust_cost): Likewise.
8546
8547         * config/i386/i386.h (TARGET_ATOM): New target macro.
8548         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
8549         (TARGET_OPT_AGU): New target option.
8550         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
8551         (processor_type): Add PROCESSOR_ATOM.
8552
8553         * config/i386/i386.md (cpu): Add new value "atom".
8554         (use_carry, movu): New attr.
8555         (atom.md): Include atom.md.
8556         (adddi3_carry_rex64): Set attr "use_carry".
8557         (addqi3_carry): Likewise.
8558         (addhi3_carry): Likewise.
8559         (addsi3_carry): Likewise.
8560         (*addsi3_carry_zext): Likewise.
8561         (subdi3_carry_rex64): Likewise.
8562         (subqi3_carry): Likewise.
8563         (subhi3_carry): Likewise.
8564         (subsi3_carry): Likewise.
8565         (x86_movdicc_0_m1_rex64): Likewise.
8566         (*x86_movdicc_0_m1_se): Likewise.
8567         (x86_movsicc_0_m1): Likewise.
8568         (*x86_movsicc_0_m1_se): Likewise.
8569         (*adddi_1_rex64): Emit add insn as much as possible.
8570         (*addsi_1): Likewise.
8571         (return_internal): Set atom_unit.
8572         (return_internal_long): Likewise.
8573         (return_pop_internal): Likewise.
8574         (*rcpsf2_sse): Set atom_sse_attr attr.
8575         (*qrt<mode>2_sse): Likewise.
8576         (*prefetch_sse): Likewise.
8577
8578         * config/i386/i386-c.c (ix86_target_macros_internal): New case
8579         PROCESSOR_ATOM.
8580         (ix86_target_macros_internal): Likewise.
8581
8582         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
8583         (*prefetch_sse_rex): Likewise.
8584         (sse_rcpv4sf2): Likewise.
8585         (sse_vmrcpv4sf2): Likewise.
8586         (sse_sqrtv4sf2): Likewise.
8587         (<sse>_vmsqrt<mode>2): Likewise.
8588         (sse_ldmxcsr): Likewise.
8589         (sse_stmxcsr): Likewise.
8590         (*sse_sfence): Likewise.
8591         (sse2_clflush): Likewise.
8592         (*sse2_mfence): Likewise.
8593         (*sse2_lfence): Likewise.
8594         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
8595         (<sse>_movup<ssemodesuffixf2c>): Likewise.
8596         (avx_movdqu<avxmodesuffix>): Likewise.
8597         (avx_lddqu<avxmodesuffix>): Likewise.
8598         (sse2_movntv2di): Change attr "type" to "ssemov".
8599         (sse2_movntsi): Likewise.
8600         (rsqrtv8sf2): Change attr "type" to "sseadd".
8601         (sse3_addsubv2df3): Set attr "atom_unit".
8602         (sse3_h<plusminus_insn>v4sf3): Likewise.
8603         (*sse2_pmaddwd): Likewise.
8604         (*vec_extractv2di_1_rex64): Likewise.
8605         (*vec_extractv2di_1_avx): Likewise.
8606         (sse2_psadbw): Likewise.
8607         (ssse3_phaddwv8hi3): Likewise.
8608         (ssse3_phaddwv4hi3): Likewise.
8609         (ssse3_phadddv4si3): Likewise.
8610         (ssse3_phadddv2si3): Likewise.
8611         (ssse3_phaddswv8hi3): Likewise.
8612         (ssse3_phaddswv4hi3): Likewise.
8613         (ssse3_phsubwv8hi3): Likewise.
8614         (ssse3_phsubwv4hi3): Likewise.
8615         (ssse3_phsubdv4si3): Likewise.
8616         (ssse3_phsubdv2si3): Likewise.
8617         (ssse3_phsubswv8hi3): Likewise.
8618         (ssse3_phsubswv4hi3): Likewise.
8619         (ssse3_pmaddubsw128): Likewise.
8620         (sse3_pmaddubsw: Likewise.
8621         (ssse3_palignrti): Likewise.
8622         (ssse3_palignrdi): Likewise.
8623
8624 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
8625
8626         * doc/install.texi (Specific): Fix two cross-references to MinGW.
8627
8628 2009-04-06  Richard Guenther  <rguenther@suse.de>
8629
8630         PR tree-optimization/28868
8631         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
8632         of which PHI results we inserted.
8633         (insert_into_preds_of_block): Record inserted PHIs.
8634         (eliminate): Eliminate redundant PHI nodes.
8635         (init_pre): Init inserted_phi_names.
8636
8637 2009-04-06  Richard Guenther  <rguenther@suse.de>
8638
8639         PR tree-optimization/39643
8640         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
8641         IMAGPART_EXPRs of complex constants.
8642         (execute_fold_all_builtins): If we folded a call queue
8643         TODO_update_address_taken.
8644
8645 2009-04-06  Jan Hubicka  <jh@suse.cz>
8646
8647         PR middle-end/39659
8648         * except.c (remove_unreachable_regions): Propagate may_contain_throw
8649         flag.
8650
8651 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
8652
8653         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
8654         delay slot.
8655         (ic_invalidate_array): Likewise.
8656
8657 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
8658
8659         * calls.c (emit_library_call_value_1): Fix a problem with parameter
8660         alignment for library calls.
8661
8662 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
8663
8664         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
8665         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
8666         * config/i386/mingw-stdint.h:  New file.
8667
8668 2009-04-05  Richard Guenther  <rguenther@suse.de>
8669
8670         PR tree-optimization/39648
8671         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
8672         our &A vs. &A[0] IL deficiencies.
8673
8674 2009-04-04  Jan Hubicka  <jh@suse.cz>
8675
8676         * except.c (sjlj_find_directly_reachable_regions): Be ready for
8677         removed toplevel regions.
8678         (sjlj_mark_call_sites): Likewise.
8679
8680 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
8681
8682         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
8683         (cygwin tm clause use_gcc_stdint):  Set to wrap.
8684         * config/i386/cygwin-stdint.h:  New file.
8685
8686 2009-04-04  Richard Guenther  <rguenther@suse.de>
8687
8688         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
8689         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
8690         single-argument PHIs if we are in loop-closed SSA form.
8691         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
8692         for the pre-condition.
8693         (slpeel_tree_peel_loop_to_edge): Likewise.
8694         (vect_build_loop_niters): Take an optional sequence to append stmts.
8695         (vect_generate_tmps_on_preheader): Likewise.
8696         (vect_do_peeling_for_loop_bound): Take extra guards for the
8697         pre-condition.
8698         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
8699         the cost model check.
8700         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
8701         guards if we are going to peel.  Do not apply versioning in that case.
8702         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
8703         (vect_do_peeling_for_loop_bound): Likewise.
8704         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
8705         loop bound only record extra pre-conditions, do not apply loop
8706         versioning.
8707
8708 2009-04-04  Richard Guenther  <rguenther@suse.de>
8709
8710         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
8711         renaming code.
8712
8713 2009-04-04  Jan Hubicka  <jh@suse.cz>
8714
8715         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
8716         last_basic_block for size of bb->index indexed array.
8717         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
8718         compute_out, link_btr_uses, build_btr_def_use_webs,
8719         build_btr_def_use_webs, migrate_btr_defs): Likewise.
8720
8721 2009-04-04  Jan Hubicka  <jh@suse.cz>
8722
8723         * except.c (remove_eh_handler_and_replace): Break out from ...
8724         (remove_eh_handler): ... here.
8725         (bring_to_root): New function.
8726         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
8727         handled ones, bring others to root of tree.
8728
8729 2009-04-04  Jan Hubicka  <jh@suse.cz>
8730
8731         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
8732         (all_phis_safe_to_merge): New function.
8733         (update_info): New structure.
8734         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
8735         (cleanup_empty_eh): Update SSA if possible.
8736
8737 2009-04-04  Richard Guenther  <rguenther@suse.de>
8738
8739         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
8740         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
8741         (append_vuse): Likewise.
8742
8743 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
8744
8745         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
8746         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
8747         instead of REG_UNSAVED for DW_CFA_undefined.
8748         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
8749         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
8750         outermost frame.
8751
8752 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
8753
8754         PR target/39501
8755         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
8756         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
8757         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
8758
8759 2009-04-04  Richard Guenther  <rguenther@suse.de>
8760
8761         PR tree-optimization/8781
8762         PR tree-optimization/37892
8763         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
8764         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
8765         (valueize_refs): Call it for *& valueizations.
8766         (shared_reference_ops_from_ref): Rename to ...
8767         (valueize_shared_reference_ops_from_ref): ... this and valueize.
8768         (shared_reference_ops_from_call): Rename to ...
8769         (valueize_shared_reference_ops_from_call): ... this and valueize.
8770         (vn_reference_lookup): Update.
8771         (visit_reference_op_call): Likewise.
8772         * tree-ssa-pre.c (phi_translate_1): Fold *&.
8773         (eliminate): Value-replace the call address in call statements.
8774
8775 2009-04-04  Richard Guenther  <rguenther@suse.de>
8776
8777         PR tree-optimization/39636
8778         * tree-ssa-forwprop.c
8779         (forward_propagate_addr_into_variable_array_index): Check for
8780         GIMPLE_ASSIGN before accessing the rhs code.
8781
8782 2009-04-03  Jason Merrill  <jason@redhat.com>
8783
8784         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
8785
8786 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
8787
8788         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
8789         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
8790         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
8791         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
8792         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
8793         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
8794         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
8795         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
8796         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
8797         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
8798         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
8799         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
8800         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
8801         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
8802         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
8803         Use fr_reg_or_fp01_operand instead of fr_register_operand
8804
8805         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
8806         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
8807         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
8808
8809 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
8810
8811         PR rtl-optimization/39607
8812         PR rtl-optimization/39631
8813
8814         Revert:
8815
8816         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
8817         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
8818         instead of DF_LR_OUT.
8819         * ira-lives.c (process_bb_node_lives): Ditto.
8820         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
8821         instead of DF_LR_{OUT,IN}.
8822         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
8823         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
8824
8825 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
8826
8827         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
8828         (execute_lower_omp): Always run but take the short way out if -fopenmp
8829         is not given.
8830         (gate_lower_omp): Remove, forcing the pass manager to always run the
8831         pass and always set PROP_gimple_lomp.
8832         (pass_lower_omp): Remove gate function.
8833         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
8834         PROP_trees.  Instead, require it.
8835         * ipa-cp.c (pass_ipa_cp): Likewise.
8836         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
8837         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
8838         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
8839         and PROP_gimple_leh.
8840
8841 2009-04-03  Richard Guenther  <rguenther@suse.de>
8842
8843         PR middle-end/13146
8844         PR tree-optimization/23940
8845         PR tree-optimization/33237
8846         PR middle-end/33974
8847         PR middle-end/34093
8848         PR tree-optimization/36201
8849         PR tree-optimization/36230
8850         PR tree-optimization/38049
8851         PR tree-optimization/38207
8852         PR tree-optimization/38230
8853         PR tree-optimization/38301
8854         PR tree-optimization/38585
8855         PR middle-end/38895
8856         PR tree-optimization/38985
8857         PR tree-optimization/39299
8858         * tree-ssa-structalias.h: Remove.
8859         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
8860         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
8861         (struct vuse_element_d): Remove.
8862         (struct vuse_vec_d): Likewise.
8863         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
8864         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
8865         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
8866         VUSE_ELEMENT_VAR): Likewise.
8867         (struct voptype_d): Likewise.
8868         (NUM_VOP_FREE_BUCKETS): Likewise.
8869         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
8870         (struct stmt_operands_d): Remove.
8871         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
8872         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
8873         VDEF_NUM, VDEF_VECT): Likewise.
8874         (copy_virtual_operands): Remove.
8875         (operand_build_cmp): Likewise.
8876         (create_ssa_artificial_load_stmt): Likewise.
8877         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
8878         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
8879         vuse_index and mayuse_index members.  Pack and move done and iter_type
8880         members to the front.
8881         (SSA_OP_VMAYUSE): Remove.
8882         (SSA_OP_VIRTUAL_USES): Adjust.
8883         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
8884         (unlink_stmt_vdef): Declare.
8885         (add_to_addressable_set): Remove.
8886         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
8887         (vrp_visit_stmt): Likewise.
8888         * doc/tree-ssa.texi (Alias analysis): Update.
8889         * doc/invoke.texi (max-aliased-vops): Remove docs.
8890         (avg-aliased-vops): Likewise.
8891         * tree-into-ssa.c (syms_to_rename): Remove.
8892         (need_to_update_vops_p): Likewise.
8893         (need_to_initialize_update_ssa_p): Rename to ...
8894         (update_ssa_initialized_fn): ... this.  Track function we are
8895         initialized for.
8896         (symbol_marked_for_renaming): Simplify.
8897         (add_new_name_mapping): Do not set need_to_update_vops_p.
8898         (dump_currdefs): Use SYMS_TO_RENAME.
8899         (rewrite_update_stmt): Always walk all uses/defs.
8900         (dump_update_ssa): Adjust.
8901         (init_update_ssa): Take function argument.  Track what we are
8902         initialized for.
8903         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
8904         (create_new_def_for): Initialize for cfun, assert we are initialized
8905         for cfun.
8906         (mark_sym_for_renaming): Simplify.
8907         (mark_set_for_renaming): Do not initialize update-ssa.
8908         (need_ssa_update_p): Simplify.  Take function argument.
8909         (name_mappings_registered_p): Assert we ask for the correct function.
8910         (name_registered_for_update_p): Likewise.
8911         (ssa_names_to_replace): Likewise.
8912         (release_ssa_name_after_update_ssa): Likewise.
8913         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
8914         (dump_decl_set): Do not print a newline.
8915         (debug_decl_set): Do it here.
8916         (dump_update_ssa): And here.
8917         * tree-ssa-loop-im.c (move_computations): Adjust.
8918         (movement_possibility): Likewise.
8919         (determine_max_movement): Likewise.
8920         (gather_mem_refs_stmt): Likewise.
8921         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
8922         or NAME_MEMORY_TAG.
8923         * tree-complex.c (update_all_vops): Remove.
8924         (expand_complex_move): Adjust.
8925         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
8926         Simplify test for memory referencing statement.  Exclude
8927         non-invariant ADDR_EXPRs.
8928         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
8929         * tree-loop-distribution.c (generate_memset_zero): Adjust.
8930         (rdg_flag_uses): Likewise.
8931         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
8932         related code.
8933         (tree_optimize_tail_calls_1): Also split the
8934         edge from the entry block if we have degenerate PHI nodes in
8935         the first basic block.
8936         * tree.c (init_ttree): Remove memory-tag related code.
8937         (tree_code_size): Likewise.
8938         (tree_node_structure): Likewise.
8939         (build7_stat): Re-write to be build6_stat.
8940         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
8941         (SSA_VAR_P): Adjust.
8942         (struct tree_memory_tag): Remove.
8943         (struct tree_memory_partition_tag): Likewise.
8944         (union tree_node): Adjust.
8945         (build7): Re-write to be build6.
8946         * tree-pass.h (pass_reset_cc_flags): Remove.
8947         (TODO_update_address_taken): New flag.
8948         (pass_simple_dse): Remove.
8949         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
8950         * params.h (MAX_ALIASED_VOPS): Remove.
8951         (AVG_ALIASED_VOPS): Likewise.
8952         * omp-low.c (expand_omp_taskreg): Update SSA form.
8953         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
8954         aliases the lhs in a copy stmt.
8955         * tree-ssa-dse.c (struct address_walk_data): Remove.
8956         (memory_ssa_name_same): Likewise.
8957         (memory_address_same): Likewise.
8958         (get_kill_of_stmt_lhs): Likewise.
8959         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
8960         unused stores.  Look through PHI nodes into post-dominated regions.
8961         (dse_optimize_stmt): Simplify.  Properly remove stores.
8962         (tree_ssa_dse): Compute dominators.
8963         (execute_simple_dse): Remove.
8964         (pass_simple_dse): Likewise.
8965         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
8966         gimple_loaded_syms and gimple_stored_syms computation.
8967         * toplev.c (dump_memory_report): Dump alias and pta stats.
8968         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
8969         (vn_reference_eq): Likewise.
8970         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
8971         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
8972         valueize_vuses): Remove.
8973         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
8974         (get_def_ref_stmt_vuse): ... this.
8975         (vn_reference_lookup_2): New function.
8976         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
8977         walking equivalent vuses.  Simplify.
8978         (vn_reference_lookup): Likewise.
8979         (vn_reference_insert): Likewise.
8980         (vn_reference_insert_pieces): Likewise.
8981         (visit_reference_op_call): Simplify.
8982         (visit_reference_op_load): Likewise.
8983         (visit_reference_op_store): Likewise.
8984         (init_scc_vn): Remove shared_lookup_vuses initialization.
8985         (free_scc_vn): Remove shared_lookup_vuses freeing.
8986         (sort_vuses, sort_vuses_heap): Remove.
8987         (get_ref_from_reference_ops): Export.
8988         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
8989         vector with single vuse pointer.
8990         (vn_reference_lookup_pieces, vn_reference_lookup,
8991         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
8992         (shared_vuses_from_stmt): Remove.
8993         (get_ref_from_reference_ops): Declare.
8994         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
8995         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8996         memory-tag related code.
8997         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
8998         (likely_value): Add comment, skip static-chain of call statements.
8999         (surely_varying_stmt_p): Adjust.
9000         (gimplify_and_update_call_from_tree): Likewise.
9001         (execute_fold_all_builtins): Do not rebuild alias info.
9002         (gimplify_and_update_call_from_tree): Properly update VOPs.
9003         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
9004         (copy_ref_info): Remove memory-tag related code.
9005         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
9006         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
9007         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
9008         computation.
9009         * tree-ssa-dom.c (gimple_p): Remove typedef.
9010         (eliminate_redundant_computations): Adjust.
9011         (record_equivalences_from_stmt): Likewise.
9012         (avail_expr_hash): Likewise.
9013         (avail_expr_eq): Likewise.
9014         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
9015         (stmt_makes_single_load): Likewise.
9016         (stmt_makes_single_store): Likewise.
9017         * tree-ssa-alias.c: Rewrite completely.
9018         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
9019         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
9020         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
9021         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
9022         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
9023         Remove public functions.
9024         (pass_reset_cc_flags): Remove.
9025         (pass_build_alias): Move ...
9026         * tree-ssa-structalias.c (pass_build_alias): ... here.
9027         * tree-ssa-alias.c (may_be_aliased): Move ...
9028         * tree-flow-inline.h (may_be_aliased): ... here.
9029         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
9030         count_uses_and_derefs): Move ...
9031         * gimple.c: ... here.
9032         * gimple.h (count_uses_and_derefs): Declare.
9033         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
9034         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
9035         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
9036         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
9037         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
9038         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
9039         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
9040         New functions.
9041         * tree-dfa.c (refs_may_alias_p): Move ...
9042         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
9043         * tree-ssa-alias.h: New file.
9044         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
9045         (statement_sink_location): Likewise.
9046         * opts.c (decode_options): Do not adjust max-aliased-vops or
9047         avg-aliased-vops values.
9048         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
9049         (TV_CALL_CLOBBER): Likewise.
9050         (TV_FLOW_SENSITIVE): Likewise.
9051         (TV_FLOW_INSENSITIVE): Likewise.
9052         (TV_MEMORY_PARTITIONING): Likewise.
9053         (TV_ALIAS_STMT_WALK): New timevar.
9054         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
9055         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
9056         (get_address_description): Remove memory-tag related code.
9057         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
9058         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
9059         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
9060         and immediate uses in statements.  Document.
9061         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
9062         (dump_symbols): Remove.
9063         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
9064         * alias.c (get_deref_alias_set): New function split out from ...
9065         (get_alias_set): ... here.
9066         * alias.h (get_deref_alias_set): Declare.
9067         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
9068         type parameter.  Remove restrict pointer handling.  Create a
9069         ref-all pointer in case type-based alias sets do not conflict.
9070         (vect_analyze_data_refs): Remove SMT related code.
9071         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
9072         (vectorizable_load): Likewise.
9073         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
9074         (DR_SYMBOL_TAG, DR_VOPS): Remove.
9075         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
9076         Ignore vops and SMTs.
9077         (dr_analyze_alias): Likewise..
9078         (free_data_ref): Likewise.
9079         (create_data_ref): Likewise.
9080         (analyze_all_data_dependences): Likewise.
9081         (get_references_in_stmt): Adjust.
9082         * tree-flow-inline.h (gimple_aliases_computed_p,
9083         gimple_addressable_vars, gimple_call_clobbered_vars,
9084         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
9085         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
9086         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
9087         gimple_mem_ref_stats): Remove.
9088         (gimple_vop): New function.
9089         (op_iter_next_use): Remove vuses and mayuses cases.
9090         (op_iter_next_def): Remove vdefs case.
9091         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
9092         (clear_and_done_ssa_iter): Do not set removed fields.
9093         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
9094         Assert we are not iterating over vuses or vdefs if not also
9095         iterating over uses or defs.
9096         (op_iter_init_use): Likewise.
9097         (op_iter_init_def): Likewise.
9098         (op_iter_next_vdef): Remove.
9099         (op_iter_next_mustdef): Likewise.
9100         (op_iter_init_vdef): Likewise.
9101         (compare_ssa_operands_equal): Likewise.
9102         (link_use_stmts_after): Handle vuse operand.
9103         (is_call_used): Use is_call_clobbered.
9104         (is_call_clobbered): Global variables are always call clobbered,
9105         query the call-clobbers bitmap.
9106         (mark_call_clobbered): Ignore global variables.
9107         (clear_call_clobbered): Likewise.
9108         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
9109         virtual operands sanity check.
9110         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
9111         Remove.
9112         (TARGET_MEM_REF): Remove TMR_TAG operand.
9113         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
9114         Remove call-clobber related code.
9115         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
9116         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
9117         partitions or escape reason.
9118         (get_single_def_stmt, get_single_def_stmt_from_phi,
9119         get_single_def_stmt_with_phi): Remove.
9120         (dump_referenced_vars): Tidy.
9121         (get_ref_base_and_extent): Allow bare decls.
9122         (collect_dfa_stats): Adjust.
9123         * graphite.c (rename_variables_in_stmt): Adjust.
9124         (graphite_copy_stmts_from_block): Likewise.
9125         (translate_clast): Likewise.
9126         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
9127         (EXPR_DIES): New.
9128         (translate_vuse_through_block): Use the oracle.
9129         (phi_translate_1): Adjust.
9130         (value_dies_in_block_x): Use the oracle.  Cache the outcome
9131         in EXPR_DIES.
9132         (valid_in_sets): Check if the VUSE for
9133         a REFERENCE is available.
9134         (eliminate): Do not remove stmts during elimination,
9135         instead queue and remove them afterwards.
9136         (do_pre): Do not rebuild alias info.
9137         (pass_pre): Run TODO_rebuild_alias before PRE.
9138         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
9139         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
9140         (mark_all_v_defs_stmt): Remove.
9141         (mark_all_v_defs_seq): Adjust.
9142         (sra_replace): Likewise.
9143         (scalarize_use): Likewise.
9144         (scalarize_copy): Likewise.
9145         (scalarize_init): Likewise.
9146         (scalarize_ldst): Likewise.
9147         (todoflags): Remove.
9148         (tree_sra): Do not rebuild alias info.
9149         (tree_sra_early): Adjust.
9150         (pass_sra): Run TODO_update_address_taken before SRA.
9151         * tree-predcom.c (set_alias_info): Remove.
9152         (prepare_initializers_chain): Do not call it.
9153         (mark_virtual_ops_for_renaming): Adjust.
9154         (mark_virtual_ops_for_renaming_list): Remove.
9155         (initialize_root_vars): Adjust.
9156         (initialize_root_vars_lm): Likewise.
9157         (prepare_initializers_chain): Likewise.
9158         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
9159         (may_propagate_copy_into_stmt): Likewise.
9160         (merge_alias_info): Do nothing for now.
9161         (propagate_tree_value_into_stmt): Adjust.
9162         (stmt_may_generate_copy): Likewise.
9163         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
9164         not mark symbols for renaming.
9165         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
9166         with the same statement, make sure to update the new pointed-to one.
9167         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
9168         call statements, do not mark symbols for renaming.
9169         (mark_operand_necessary): Dump something.
9170         (ref_may_be_aliased): New function.
9171         (mark_aliased_reaching_defs_necessary_1): New helper function.
9172         (mark_aliased_reaching_defs_necessary): Likewise.
9173         (mark_all_reaching_defs_necessary_1): Likewise.
9174         (mark_all_reaching_defs_necessary): Likewise.
9175         (propagate_necessity): Do not process virtual PHIs.  For
9176         non-aliased loads mark all reaching definitions as necessary.
9177         For aliased loads and stores mark the immediate dominating
9178         aliased clobbers as necessary.
9179         (visited): New global static.
9180         (perform_tree_ssa_dce): Free visited bitmap after propagating
9181         necessity.
9182         (remove_dead_phis): Perform simple dead virtual PHI removal.
9183         (remove_dead_stmt): Properly unlink virtual operands when
9184         removing stores.
9185         (eliminate_unnecessary_stmts): Schedule PHI removal after
9186         stmt removal.
9187         * tree-ssa-ter.c (is_replaceable_p): Adjust.
9188         (process_replaceable): Likewise.
9189         (find_replaceable_in_bb): Likewise.
9190         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
9191         based on the single gimple vop.
9192         (verify_flow_insensitive_alias_info): Remove.
9193         (verify_flow_sensitive_alias_info): Likewise.
9194         (verify_call_clobbering): Likewise.
9195         (verify_memory_partitions): Likewise.
9196         (verify_alias_info): Likewise.
9197         (verify_ssa): Adjust..
9198         (execute_update_addresses_taken): Export.  Update SSA
9199         manually.  Optimize only when optimizing.  Use a local bitmap.
9200         (pass_update_address_taken): Remove TODO_update_ssa, add
9201         TODO_dump_func.
9202         (pass_update_address_taken): Just use TODO_update_address_taken.
9203         (init_tree_ssa): Do not initialize addressable_vars.
9204         (verify_ssa): Verify new VUSE / VDEF properties.
9205         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
9206         Do not call verify_alias_info.
9207         (delete_tree_ssa): Clear the VUSE, VDEF operands.
9208         Do not free the loaded and stored syms bitmaps.  Reset the escaped
9209         and callused solutions.  Do not free addressable_vars.
9210         Remove memory-tag related code.
9211         (warn_uninitialized_var): Aliases are always available.
9212         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
9213         * lambda-code.c (can_put_in_inner_loop): Adjust.
9214         (can_put_after_inner_loop): Likewise.
9215         (perfect_nestify): Likewise.
9216         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
9217         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
9218         (vectorizable_conversion): Do not mark symbols for renaming.
9219         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
9220         (expand_call_inline): Unlink the calls virtual operands before
9221         replacing it.
9222         (tree_function_versioning): Do not call update_ssa if we are not
9223         updating clones.  Simplify.
9224         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
9225         (propagate_with_phi): Likewise..
9226         * tree-outof-ssa.c (create_temp): Remove memory tag and call
9227         clobber code.  Assert we are not aliased or global.
9228         * tree-flow.h: Include tree-ssa-alias.h
9229         (enum escape_type): Remove.
9230         (struct mem_sym_stats_d): Likewise.
9231         (struct mem_ref_stats_d): Likewise.
9232         (struct gimple_df): Add vop member.  Remove global_var,
9233         call_clobbered_vars, call_used_vars, addressable_vars,
9234         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
9235         escaped and callused members.
9236         (struct ptr_info_def): Remove all members, add points-to solution
9237         member pt.
9238         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
9239         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
9240         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
9241         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
9242         (tree-ssa-alias.o): Likewise.
9243         (toplev.o): Add tree-ssa-alias.h
9244         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
9245         * gimple.c (gimple_set_bb): Fix off-by-one error.
9246         (is_gimple_reg): Do not handle memory tags.
9247         (gimple_copy): Also copy virtual operands.
9248         Delay updating the statement.  Do not reset loaded and stored syms.
9249         (gimple_set_stored_syms): Remove.
9250         (gimple_set_loaded_syms): Likewise.
9251         (gimple_call_copy_skip_args): Copy the virtual operands
9252         and mark the new statement modified.
9253         * tree-ssa-structalias.c (may_alias_p): Remove.
9254         (set_uids_in_ptset): Take the alias set to prune with as
9255         parameter.  Fold in the alias test of may_alias_p.
9256         (compute_points_to_sets): Compute whether a ptr is dereferenced
9257         in a local sbitmap.
9258         (process_constraint): Deal with &ANYTHING on the lhs, reject all
9259         other ADDRESSOF constraints on the lhs.
9260         (get_constraint_for_component_ref): Assert that we don't get
9261         ADDRESSOF constraints from the base of the reference.
9262         Properly generate UNKNOWN_OFFSET for DEREF if needed.
9263         (struct variable_info): Remove collapsed_to member.
9264         (get_varinfo_fc): Remove.
9265         (new_var_info): Do not set collapsed_to.
9266         (dump_constraint): Do not follow cycles.
9267         (dump_constraint_graph): Likewise.
9268         (build_pred_graph): Likewise.
9269         (build_succ_graph): Likewise.
9270         (rewrite_constraints): Likewise.
9271         (do_simple_structure_copy): Remove.
9272         (do_rhs_deref_structure_copy): Remove.
9273         (do_lhs_deref_structure_copy): Remove.
9274         (collapse_rest_of_var): Remove.
9275         (do_structure_copy): Re-implement.
9276         (pta_stats): New global variable.
9277         (dump_pta_stats): New function.
9278         (struct constraint_expr): Make offset signed.
9279         (UNKNOWN_OFFSET): Define special value.
9280         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
9281         (solution_set_expand): New helper function split out from ...
9282         (do_sd_constraint): ... here.
9283         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
9284         (do_ds_constraint): Likewise.
9285         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
9286         and CALLUSED = *CALLUSED.
9287         (set_union_with_increment): Make inc argument signed.
9288         (type_safe): Remove.
9289         (get_constraint_for_ptr_offset): Handle unknown and negative
9290         constant offsets.
9291         (first_vi_for_offset): Handle offsets before start.  Bail
9292         out early for offsets beyond the variable extent.
9293         (first_or_preceding_vi_for_offset): New function.
9294         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
9295         Together with ESCAPED = *ESCAPED this properly computes reachability.
9296         (find_what_var_points_to): New function.
9297         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
9298         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
9299         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
9300         pt_solutions_intersect): New functions.
9301         (compute_call_used_vars): Remove.
9302         (compute_may_aliases): New main entry into PTA computation.
9303         * gimple.h (gimple_p): New typedef.
9304         (struct gimple_statement_base): Remove references_memory_p.
9305         (struct gimple_statement_with_memory_ops_base): Remove
9306         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
9307         members.
9308         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
9309         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
9310         gimple_set_references_memory): Remove.
9311         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
9312         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
9313         New functions.
9314         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
9315         (verify_expr): Allow RESULT_DECL.
9316         (gimple_duplicate_bb): Do not copy virtual operands.
9317         (gimple_duplicate_sese_region): Adjust.
9318         (gimple_duplicate_sese_tail): Likewise.
9319         (mark_virtual_ops_in_region): Remove.
9320         (move_sese_region_to_fn): Do not call it.
9321         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
9322         and pass_simple_dse.
9323         (execute_function_todo): Handle TODO_update_address_taken,
9324         call execute_update_addresses_taken for TODO_rebuild_alias.
9325         (execute_todo): Adjust.
9326         (execute_one_pass): Init dump files early.
9327         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
9328         call-clobbered.
9329         (create_general_new_stmt): Clear vops.
9330         * tree-ssa-reassoc.c (get_rank): Adjust.
9331         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
9332         symbols for renaming.
9333         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
9334         (PARAM_AVG_ALIASED_VOPS): Likewise.
9335         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
9336         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
9337         * tree-ssa-operands.c: Simplify for new virtual operand representation.
9338         (operand_build_cmp, copy_virtual_operands,
9339         create_ssa_artificial_load_stmt, add_to_addressable_set,
9340         gimple_add_to_addresses_taken): Remove public functions.
9341         (unlink_stmt_vdef): New function.
9342
9343 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9344
9345         * config.gcc (powerpc-*-linux*): Merge variants.
9346
9347 2009-04-02  Chao-ying Fu  <fu@mips.com>
9348             James Grosbach  <james.grosbach@microchip.com>
9349
9350         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
9351         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
9352         cop0_sp_offset.
9353         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
9354         keep_interrupts_masked_p, use_debug_exception_return_p.
9355         (mips_attribute_table): Add interrupt, use_shadow_register_set,
9356         keep_interrupts_masked, use_debug_exception_return.
9357         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
9358         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
9359         New functions.
9360         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
9361         (mips_print_operand): Process COP0 registers to print $0 .. $31
9362         correctly for GAS to process.
9363         (mips_interrupt_extra_call_saved_reg_p): New function.
9364         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
9365         extra registers.
9366         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
9367         (mips_compute_frame_info): Add supports for interrupt context that
9368         includes doubleword accumulators and COP0 registers.
9369         (mips_for_each_saved_acc): New function.
9370         (mips_for_each_saved_gpr_and_fpr): Change the function name from
9371         mips_for_each_saved_reg.
9372         (mips_save_reg): Save accumulators.
9373         (mips_kernel_reg_p): A new for_each_rtx callback.
9374         (mips_expand_prologue): Support interrupt handlers.
9375         (mips_restore_reg): Restore accumulators.
9376         (mips_expand_epilogue): Support interrupt handlers.
9377         (mips_can_use_return_insn): Return false for interrupt handlers.
9378         (mips_epilogue_uses): New function.
9379         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
9380         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
9381         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
9382         cop0_move): New instructions.
9383         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
9384         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
9385         defines.
9386         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
9387         New defines.
9388         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
9389         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
9390         interrupt handlers, we use K0 as the temporary register.
9391         (EPILOGUE_USES): Change to a function call.
9392         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
9393         handlers, we use K0 as the temporary register.
9394
9395         * doc/extend.texi (Function Attributes): Document interrupt,
9396         use_shadow_register_set, keep_interrupts_masked,
9397         use_debug_exception_return for MIPS attributes.
9398
9399 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9400
9401         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
9402         Remove a number of t-files from tmake_file.
9403         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
9404         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
9405         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
9406         target_prototype, not TARGET_PROTOTYPE.
9407         (LINK_OS_GNU_SPEC): Define.
9408         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
9409         and darwin-ldoubdle.c.
9410
9411 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
9412
9413         PR driver/39293
9414         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
9415         (cpp_options): Ditto.
9416         (default_compilers): Ditto.
9417         (display_help): Ditto.
9418         (process_command): Ditto.
9419         (do_spec_1): Ditto.
9420         (set_input): Use lbasename instead of duplicate code.
9421         (save_temps_prefix): New static for -save-temps=obj.
9422         (save_temps_length): Ditto.
9423
9424         * doc/invoke.texi (-save-temps=obj): Document new variant to
9425         -save-temps switch.
9426
9427 2009-04-02  Jeff Law  <law@redhat.com>
9428
9429         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
9430         variable.
9431
9432 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9433
9434         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
9435         * configure: Regenerated.
9436
9437 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9438
9439         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
9440         share the argument list.
9441
9442 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9443
9444         Merge
9445
9446         2009-02-12  Diego Novillo  <dnovillo@google.com>
9447
9448         * varpool.c (debug_varpool): New.
9449         * cgraph.h (debug_varpool): Declare.
9450
9451 2009-04-02  Jan Hubicka  <jh@suse.cz>
9452
9453         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
9454         pass.
9455
9456 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9457
9458         * config/i386/i386.c (ix86_abi): Move initialization to ...
9459         (override_options): Here.
9460
9461 2009-04-02  Christian Bruel  <christian.bruel@st.com>
9462
9463         * config/sh/sh.c (sh_dwarf_register_span): New function.
9464         (TARGET_DWARF_REGISTER_SPAN): Define.
9465         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
9466
9467 2009-04-02  Ira Rosen  <irar@il.ibm.com>
9468
9469         PR tree-optimization/39595
9470         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
9471         interleaved loads group is not  greater than the SLP group size.
9472
9473 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9474
9475         * builtins.c (is_builtin_name): New.
9476         (called_as_built_in): Use is_builtin_name.
9477         * tree.h (is_builtin_name): New.
9478         * varasm.c (incorporeal_function_p): Use is_builtin_name
9479
9480 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
9481
9482         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
9483
9484 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
9485
9486         PR c++/26693
9487         * c-decl.c (clone_underlying_type): Move this ...
9488         * c-common.c (set_underlying_type): ... here.
9489         Also, make sure the function properly sets TYPE_STUB_DECL() on
9490         the newly created typedef variant type.
9491         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
9492         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
9493         points.
9494
9495 2009-04-02  Richard Guenther  <rguenther@suse.de>
9496
9497         PR tree-optimization/37221
9498         * tree-flow.h (degenerate_phi_result): Declare.
9499         * tree-ssa-dom.c (degenerate_phi_result): Export.
9500         * tree-scalar-evolution.c (analyze_initial_condition): If
9501         the initial condition is defined by a degenerate PHI node
9502         use the degenerate value.
9503
9504 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
9505
9506         PR rtl-optimization/39588
9507         * combine.c (merge_outer_ops): Do not set the constant when this
9508         is not necessary.
9509         (simplify_shift_const_1): Do not modify it either in this case.
9510
9511 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9512
9513         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
9514         tuning is deprecated if -mtune value is set to an Itanium1 variant.
9515
9516 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
9517
9518         PR c/29027
9519         * c-lex.c (interpret_float): Default (no suffix) is double.
9520
9521 2009-04-1  Xinliang David Li  <davidxl@google.com>
9522
9523         * config/i386/i386.c (legitimate_constant_p): Recognize
9524         all one vector constant.
9525
9526 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9527
9528         * config/vax/vax.c: Add #includes to silence warnings.
9529         Change #include order to silence two warnings.
9530
9531 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9532
9533         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
9534         (ASM_SPEC): Pass -k to the assembler for PIC code.
9535
9536 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9537
9538         * config.gcc: Add vax-*-linux* to the switch.
9539         * config/vax/linux.h: New file. (TARGET_VERSION,
9540         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
9541
9542 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9543
9544         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
9545         Use predicate macros instead of GET_CODE() == foo.
9546         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
9547         ashlsi3, rotrsi3, <unnamed>): Likewise.
9548
9549 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9550
9551         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
9552         jbbccihi, jbbccisi): Remova trailing whitespace.
9553         * config/vax/constraints.md: Likewise.
9554         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
9555         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
9556         * config/vax/predicates.md: Likewise.
9557         * config/vax/vax.c (print_operand_address, vax_output_int_move,
9558         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
9559         * config/vax/vax.h: Likewise.
9560         * config/vax/vax.md (nonlocal_goto): Likewise.
9561
9562 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9563
9564         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
9565         (indirectable_address_p, adjacent_operands_p): Add spaces around
9566         braces.
9567         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
9568
9569 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9570
9571         * config/vax/vax.c (legitimate_constant_address_p,
9572         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
9573         index_term_p, reg_plus_index_p, legitimate_address_p,
9574         vax_mode_dependent_address_p): Update comments to match functions
9575         modified by the recent int->bool conversion.
9576
9577 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9578
9579         * config/vax/builtins.md: Update copyright message.
9580         * config/vax/constraints.md: Likewise.
9581         * config/vax/netbsd-elf.h: Likewise.
9582         * config/vax/predicates.md: Likewise.
9583         * config/vax/vax-protos.h: Likewise.
9584         * config/vax/vax.c: Likewise.
9585         * config/vax/vax.h: Likewise.
9586         * config/vax/vax.md: Likewise.
9587         * config/vax/vax.opt: Likewise.
9588
9589 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9590
9591         * config/vax/builtins.md (ffssi2, ffssi2_internal,
9592         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
9593         * config/vax/constraints.md (B, R): Likewise.
9594         * config/vax/predicates.md (external_memory_operand,
9595         nonimmediate_addsub_di_operand): Likewise.
9596         * config/vax/vax.c (vax_output_int_add): Likewise.
9597         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
9598         untyped_call): Likewise.
9599
9600 2009-04-01  Matt Thomas  <matt@3am-software.com>
9601
9602         * config/vax/predicates.md: New file.
9603         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
9604         external_const_operand, nonsymbolic_operand, external_memory_operand,
9605         indirect_memory_operand, indexed_memory_operand,
9606         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
9607         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
9608         predicate.
9609         * config/vax/constraints.md: New file.
9610         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
9611         New constraint.
9612         * config/vax/builtins.md: New file.
9613         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
9614         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
9615         jbbccisi): Define.
9616         * config/vax/vax.opt (mqmath): Add option.
9617         * config/vax/vax.md (isfx): Extend with DI.
9618         (VAXintQH, VAXintQHSD): Define.
9619         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
9620         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
9621         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
9622         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
9623         (movdi): Update constraints and use vax_output_int_move().
9624         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
9625         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
9626         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
9627         nonlocal_goto): New.
9628         (mov<mode>): Extend accepted operand types.
9629         (subdi3_old): Rename from subdi3, change update constraints and use
9630         a new implementation.
9631         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
9632         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
9633         MOVE_RATIO, CLEAR_RATIO): Define.
9634         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
9635         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
9636         (PRINT_OPERAND): Redefine using a function instead of inlined code.
9637         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
9638         (split_quadword_operands): Make static and really allow variable
9639         splitting.
9640         (print_operand_address): Update for PIC generation.
9641         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
9642         indexable_address_p, fixup_mathdi_operand,
9643         vax_expand_addsub_di_operands, adjacent_operands_p): New.
9644         (vax_float_literal, legitimate_constant_p,
9645         indirectable_constant_address_p, index_term_p,
9646         reg_plus_index_p): Return bool instead of int.
9647         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
9648         where needed.
9649         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
9650         generation.
9651         (vax_output_conditional_branch): Indent.
9652         (legitimate_constant_address_p, indirectable_constant_address_p,
9653         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
9654         vax_mode_dependent_address_p): Return bool instead of int, update for
9655         PIC generation.
9656         * config/vax/vax-protos.h (legitimate_constant_address_p,
9657         legitimate_constant_p, legitimate_address_p,
9658         vax_mode_dependent_address_p): Change declaration to bool.
9659         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
9660         vax_expand_addsub_di_operands, vax_output_int_subtract,
9661         vax_output_movmemsi): Declare.
9662         (split_quadword_operands, vax_float_literal): Delete declaration.
9663         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
9664         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
9665         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
9666         ASM_OUTPUT_DWARF_PCREL): Define.
9667         (ASM_SPEC): Change definition to allow PIC generation.
9668
9669 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
9670
9671         * doc/sourcebuild.texi: Update front-end requirements.
9672
9673 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9674
9675         PR target/39226
9676         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
9677         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
9678         (booldi3_internal3): Use boolean_or_operator instead of
9679         boolean_operator.
9680
9681 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
9682
9683         PR c/39605
9684         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
9685         declarator whose size is not an integer constant expression but
9686         folds to an integer constant, then treat it as a constant
9687         subsequently.
9688
9689 2009-04-01  Richard Guenther  <rguenther@suse.de>
9690
9691         * fold-const.c (fold_plusminus_mult_expr): Do not fold
9692         i * 4 + 2 to (i * 2 + 1) * 2.
9693
9694 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9695
9696         PR c/37772
9697         * c-parser.c (c_parser_asm_statement): Skip until close paren and
9698         return if c_parser_asm_string_literal returned NULL.
9699
9700 2009-04-01  Nick Clifton  <nickc@redhat.com>
9701
9702         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
9703         already defined.
9704         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
9705         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
9706         other typedefs to avoid conflicts with libgcc2.c.  Define labels
9707         to gain 16-bit bit-manipulation functions from libgcc2.c and then
9708         include it.
9709         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
9710         to gain 16-bit trapping arithmetic functions from libgcc2.c and
9711         then include it.
9712
9713 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
9714
9715         * varasm.c (default_function_rodata_section): Declare DOT as
9716         const char*.
9717
9718 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
9719             Andrey Galkin  <agalkin@hypercom.com>
9720
9721         PR/39492
9722         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
9723         Make object_name unique for each process.
9724
9725 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9726
9727         PR other/39591
9728         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
9729         addressable variables in the parallel that could go out of scope while
9730         running queued tasks.
9731
9732 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
9733
9734         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
9735         (CASE_VALUES_THRESHOLD): Redefine.
9736         * config/avr/avr.c (avr_override_options): Remove initialization of
9737         avr_case_values_threshold variable.
9738         (avr_case_values_threshold): Remove variable. Add new function.
9739         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
9740         * config/avr/avr.opt (mno-tablejump): Remove option.
9741         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
9742
9743 2009-04-01  DJ Delorie  <dj@redhat.com>
9744
9745         * varasm.c (default_function_rodata_section): Don't assume
9746         anything about where the first '.' in the section name is.
9747
9748 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
9749
9750         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
9751         rs6000_emit_stack_tie.
9752
9753 2009-03-31  Ian Lance Taylor  <iant@google.com>
9754
9755         * tree-eh.c (tree_remove_unreachable_handlers): Compare
9756         gimple_code with GIMPLE_RESX, not RESX.
9757
9758 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9759
9760         * c-common.c (c_get_ident): New.
9761         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
9762
9763 2009-04-01  Ben Elliston  <bje@au.ibm.com>
9764
9765         * config/rs6000/sysv4.opt (msdata): Improve option description.
9766
9767 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
9768
9769         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
9770         (divdf3_internal_lat): Remove.
9771         (divxf3_internal_lat): Remove.
9772         (divxf3_internal_thr): Remove.
9773         (divxf): Use divxf3_internal.
9774         * config/ia64/div.md (divsf3_internal_lat): New.
9775         (divdf3_internal_lat): New.
9776         (divxf3_internal): New.
9777
9778 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9779
9780         PR c/448
9781         * Makefile.in (USE_GCC_STDINT): Define.
9782         (stmp-int-hdrs): Install stdint.h if applicable.
9783         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
9784         if known.
9785         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
9786         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
9787         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9788         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9789         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9790         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9791         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9792         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9793         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9794         (c_common_nodes_and_builtins): Initialize
9795         underlying_wchar_type_node.  Do not initialize
9796         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
9797         nodes for new types.
9798         (c_stddef_cpp_builtins): Define macros for new types.
9799         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
9800         Remove.
9801         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
9802         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
9803         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
9804         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
9805         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
9806         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
9807         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
9808         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
9809         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
9810         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
9811         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
9812         int16_type_node, int32_type_node, int64_type_node,
9813         uint8_type_node, uint16_type_node, c_uint32_type_node,
9814         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
9815         int_least32_type_node, int_least64_type_node,
9816         uint_least8_type_node, uint_least16_type_node,
9817         uint_least32_type_node, uint_least64_type_node,
9818         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
9819         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
9820         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
9821         uintptr_type_node): Define.
9822         * c-cppbuiltin.c (builtin_define_constants,
9823         builtin_define_type_minmax): New.
9824         (builtin_define_stdint_macros): Define more macros.
9825         (c_cpp_builtins): Define more limit macros.
9826         (type_suffix): New.
9827         (builtin_define_type_max): Define in terms of
9828         builtin_define_type_minmax.  Remove is_long parameter.  All
9829         callers changed.
9830         * config.gcc (use_gcc_stdint): Define.
9831         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
9832         Add newlib-stdint.h for generic targets.
9833         * config/glibc-stdint.h, config/newlib-stdint.h,
9834         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
9835         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
9836         * config/score/score.h (UINTPTR_TYPE): Define.
9837         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
9838         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
9839         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9840         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9841         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9842         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9843         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9844         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9845         * config/spu/spu.h (STDINT_LONG32): Define.
9846         * configure.ac (use_gcc_stdint): Substitute.
9847         * configure: Regenerate.
9848         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
9849         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
9850         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
9851         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
9852         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
9853         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
9854         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
9855         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
9856         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
9857         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
9858         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
9859         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
9860         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
9861         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
9862         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
9863         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
9864         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
9865         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
9866         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
9867         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
9868         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
9869         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
9870         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9871         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9872         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9873         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9874         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9875         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9876         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
9877
9878 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9879
9880         * loop-iv.c (suitable_set_for_replacement): Renamed from
9881         simplify_using_assignment; changed to return bool and to accept new
9882         args DEST and SRC.  Return true iff we find a source/destination pair
9883         that can be used to make a replacement, and fill SRC and DEST if so.
9884         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
9885         changed.
9886         (simplify_using_initial_values): Deal with altered regs here and track
9887         more precisely the effect they have on the validity of our expression.
9888
9889         * loop-iv.c (simplify_using_condition): A condition of the form
9890         (EQ REG CONST) can be used to simply make a substitution.
9891         (simplify_using_initial_values): Keep track of conditions we have seen
9892         and keep using them to simplify new expressions, while applying the
9893         same substitutions to them as to the expression.
9894
9895         * simplify-rtx.c (simplify_relational_operation_1): Simplify
9896         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
9897         GEU/LTU reversed.
9898
9899         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
9900         changed.  Use this when trying to improve the upper bound.
9901         Generate the comparison by using simplify_gen_relational.
9902
9903         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
9904
9905         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
9906         functions.
9907         (simplify_using_assignment, simplify_using_initial_values): Call
9908         replace_in_expr to make replacements.  Call replace_single_def_regs
9909         once on the initial version of the expression.
9910
9911 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9912
9913         PR target/27237
9914         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
9915
9916 2009-03-31  Richard Guenther  <rguenther@suse.de>
9917
9918         PR middle-end/31029
9919         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
9920         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
9921
9922 2009-03-31  Richard Guenther  <rguenther@suse.de>
9923
9924         * tree.h (div_if_zero_remainder): Declare.
9925         * fold-const.c (div_if_zero_remainder): Export.
9926         * tree-ssa-forwprop.c
9927         (forward_propagate_addr_into_variable_array_index): Handle
9928         constant array index addition outside of the variable index.
9929
9930 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9931
9932         PR target/39592
9933         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
9934         define_splits, floatunssi<mode>2): Require x87 conversions from
9935         DImode to be permitted.
9936
9937 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9938
9939         PR preprocessor/15638
9940         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
9941
9942 2009-03-31  Richard Guenther  <rguenther@suse.de>
9943
9944         PR middle-end/23401
9945         PR middle-end/27810
9946         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
9947         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
9948         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
9949         a separate statement.
9950         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
9951         (lookup_tmp_var): Likewise.
9952         (is_gimple_formal_tmp_or_call_rhs): Remove.
9953         (is_gimple_reg_or_call_rhs): Rename to ...
9954         (is_gimple_reg_rhs_or_call): ... this.
9955         (is_gimple_mem_or_call_rhs): Rename to ...
9956         (is_gimple_mem_rhs_or_call): ... this.
9957         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
9958         DECL_GIMPLE_REG_P only if is_formal is true.
9959         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
9960         for non-proper post-modify expression gimplification.
9961         (gimplify_self_mod_expr): For post-modify expressions gimplify
9962         the lvalue to a minimal lvalue.
9963         (rhs_predicate_for): Remove formal temp case.
9964         (gimplify_modify_expr_rhs): Likewise.
9965         (gimplify_addr_expr): Use is_gimple_reg.
9966         (gimplify_expr): Remove formal temp cases.
9967         (gimple_regimplify_operands): Likewise.
9968         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
9969         and FILTER_EXPR like constants.
9970         * gimple.c (walk_gimple_op): Fix val_only initialization, use
9971         is_gimple_reg.
9972         (is_gimple_formal_tmp_rhs): Remove.
9973         (is_gimple_reg_rhs): Remove special casing.
9974         (is_gimple_mem_rhs): Fix.
9975         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
9976         (is_gimple_formal_tmp_var): Remove.
9977         (is_gimple_formal_tmp_reg): Likewise.
9978         (is_gimple_min_lval): Allow invariant component ref parts.
9979         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
9980         is_gimple_formal_tmp_reg): Remove declarations.
9981         * tree-cfg.c (verify_expr): Verify that variables with address
9982         taken do not have DECL_GIMPLE_REG_P set.
9983         * tree-mudflap.c (mf_build_check_statement_for): Use
9984         force_gimple_operand instead of gimplify_expr.
9985
9986 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
9987
9988         * modulo-sched.c (sms_schedule_by_order): Pass the actual
9989         schedulable rows to compute_split_row.
9990
9991 2009-03-31  Ben Elliston  <bje@au.ibm.com>
9992
9993         PR target/31635
9994         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
9995         OPT_mvrsave.
9996
9997 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9998
9999         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
10000         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
10001         * configure: Regenerate.
10002         * config.in: Regenerate.
10003         * config/rs6000/rs6000.opt (mtls-markers): Add.
10004         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
10005         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
10006         (tls_ld_aix, tls_ld_sysv): Likewise.
10007         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
10008         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
10009
10010 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
10011
10012         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
10013
10014 2009-03-30  Jan Hubicka  <jh@suse.cz>
10015
10016         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
10017         out of RESX.
10018         (tree_remove_unreachable_handlers): Cleanup EH predecestor
10019         detection and label handling.
10020
10021 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
10022
10023         * ira-int.h (ira_allocno): Rename left_conflicts_num to
10024         left_conflicts_size.
10025         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
10026         ALLOCNO_LEFT_CONFLICTS_SIZE.
10027
10028         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
10029         remove_allocno_from_bucket_and_push,
10030         allocno_spill_priority_compare, push_allocnos_to_stack,
10031         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
10032         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
10033         (setup_allocno_left_conflicts_num): Ditto.  Rename to
10034         setup_allocno_left_conflicts_size.
10035         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
10036         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
10037         setup_allocno_left_conflicts_size instead of
10038         setup_allocno_left_conflicts_num.
10039
10040         * ira-build.c (ira_create_allocno): Use
10041         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
10042         ALLOCNO_LEFT_CONFLICTS_NUM.
10043
10044 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
10045
10046         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
10047         instead of DF_LR_OUT.
10048
10049         * ira-lives.c (process_bb_node_lives): Ditto.
10050
10051         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
10052         instead of DF_LR_{OUT,IN}.
10053
10054         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
10055
10056         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
10057
10058 2009-03-30  Jan Hubicka  <jh@suse.cz>
10059
10060         * except.c (label_to_region_map): Fix thinko.
10061
10062 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
10063
10064         PR middle-end/38237
10065         * tree.h (tree_find_value): New declaration.
10066         * tree.c (tree_find_value): New function.
10067         * varasm.c (assemble_external): Avoid duplicate entries on lists.
10068
10069 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
10070
10071         PR debug/39563
10072         * c-decl.c (struct c_binding): Add locus field.
10073         (bind): Add locus argument, set locus field from it.
10074         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
10075         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
10076         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
10077         implicitly_declare, undeclared_variable, lookup_label,
10078         declare_label, c_make_fname_decl, c_builtin_function,
10079         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
10080         bind callers.
10081
10082 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
10083
10084         PR target/38781
10085         * config/i386/i386.c (classify_argument): Check total size of
10086         structure.
10087
10088 2009-03-30  Martin Jambor  <mjambor@suse.cz>
10089
10090         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
10091         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
10092         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
10093         respectively.
10094
10095         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
10096         seen_variable_array_ref while also traversing a union.
10097
10098         * tree-inline.c (optimize_inline_calls): Do not call
10099         cgraph_node_remove_callees.
10100         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
10101         (pass_remove_cgraph_callee_edges): New variable.
10102         * passes.c (init_optimization_passes): Add
10103         pass_remove_cgraph_callee_edges after early inlining and before all
10104         late intraprocedural passes.
10105
10106         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
10107
10108 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10109
10110         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
10111         Fix typos in names.
10112
10113 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10114
10115         * combine.c (simplify_comparison): Use have_insn_for.
10116         * dojump.c (do_jump): Likewise.
10117
10118 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10119
10120         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
10121         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
10122         sparc_compare_op0 like sparc_compare_emitted used to be handled.
10123         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
10124         instead of sparc_compare_emitted.
10125         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
10126         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
10127         instead of sparc_compare_emitted.
10128
10129 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10130
10131         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
10132         enter/exit cfglayout mode.
10133         (pass_partition_block): Require it.
10134         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
10135         (combine_instructions): Track basic blocks instead of labels.
10136         (update_cfg_for_uncondjump): New.
10137         (try_combine): Use it.  Update jumps after rescanning.
10138         (pass_combine): Require PROP_cfglayout.
10139         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
10140
10141 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10142
10143         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
10144         Provide/destroy PROP_cfglayout respectively.
10145         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
10146         * tree-pass.h (PROP_cfglayout): New.
10147
10148 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
10149
10150         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
10151         fold_convert_const_fixed_from_fixed,
10152         fold_convert_const_fixed_from_int,
10153         fold_convert_const_fixed_from_real, fold_negate_const): Do not
10154         set TREE_CONSTANT_OVERFLOW.
10155         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
10156         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
10157
10158 2009-03-30  Ira Rosen  <irar@il.ibm.com>
10159
10160         * tree-vect-loop-manip.c: New file.
10161         * tree-vectorizer.c: Update documentation and included files.
10162         (vect_loop_location): Make extern.
10163         (rename_use_op): Move to tree-vect-loop-manip.c
10164         (rename_variables_in_bb, rename_variables_in_loop,
10165         slpeel_update_phis_for_duplicate_loop,
10166         slpeel_update_phi_nodes_for_guard1,
10167         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
10168         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
10169         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
10170         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
10171         find_loop_location): Likewise.
10172         (new_stmt_vec_info): Move to tree-vect-stmts.c.
10173         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
10174         get_vectype_for_scalar_type, vect_is_simple_use,
10175         supportable_widening_operation, supportable_narrowing_operation):
10176         Likewise.
10177         (bb_in_loop_p): Move to tree-vect-loop.c.
10178         (new_loop_vec_info, destroy_loop_vec_info,
10179         reduction_code_for_scalar_code, report_vect_op,
10180         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
10181         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
10182         (vect_supportable_dr_alignment): Likewise.
10183         * tree-vectorizer.h (tree-data-ref.h): Include.
10184         (vect_loop_location): Declare.
10185         Reorganize function declarations according to the new file structure.
10186         * tree-vect-loop.c: New file.
10187         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
10188         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
10189         * tree-vect-data-refs.c: New file.
10190         * tree-vect-patterns.c (timevar.h): Don't include.
10191         * tree-vect-stmts.c: New file.
10192         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
10193         tree-vect-slp.c, tree-vect-loop.c.
10194         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
10195         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
10196         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
10197         (tree-vect-analyze.o): Remove.
10198         (tree-vect-transform.o): Likewise.
10199         (tree-vect-data-refs.o): Add rule.
10200         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
10201         tree-vect-slp.o): Likewise.
10202         (tree-vect-patterns.o): Remove redundant dependencies.
10203         (tree-vectorizer.o): Likewise.
10204         * tree-vect-slp.c: New file.
10205
10206 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10207
10208         * optc-gen.awk: Warn if an option flag has multiple different
10209         help strings.
10210
10211 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
10212
10213         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
10214         -floop-block): Document dependences on PPL, CLooG and Graphite.
10215
10216 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
10217
10218         PR rtl-optimization/323
10219         * c-common.c (c_fully_fold, convert_and_check,
10220         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
10221         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
10222         * c-common.def (EXCESS_PRECISION_EXPR): New.
10223         * c-cppbuiltin.c (builtin_define_float_constants): Define
10224         constants with enough digits for long double.
10225         * c-lex.c (interpret_float): Interpret constant with excess
10226         precision where appropriate.
10227         * c-opts.c (c_common_post_options): Set
10228         flag_excess_precision_cmdline.  Give an error for
10229         -fexcess-precision=standard for C++ for processors where the
10230         option is significant.
10231         * c-parser.c (c_parser_conditional_expression): Handle excess
10232         precision in condition.
10233         * c-typeck.c (convert_arguments): Handle arguments with excess
10234         precision.
10235         (build_unary_op): Move excess precision outside operation.
10236         (build_conditional_expr): Likewise.
10237         (build_compound_expr): Likewise.
10238         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
10239         (build_modify_expr): Handle excess precision in RHS.
10240         (convert_for_assignment): Handle excess precision in converted
10241         value.
10242         (digest_init, output_init_element, process_init_element): Handle
10243         excess precision in initializer.
10244         (c_finish_return): Handle excess precision in return value.
10245         (build_binary_op): Handle excess precision in operands and add
10246         excess precision as needed for operation.
10247         * common.opt (-fexcess-precision=): New option.
10248         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
10249         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
10250         For standard excess precision, output explicit conversion to and
10251         truncation from XFmode.
10252         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
10253         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
10254         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
10255         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
10256         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
10257         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
10258         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
10259         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
10260         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
10261         define_splits, sqrt<mode>2): Disable where appropriate for
10262         standard excess precision.
10263         * convert.c (convert_to_real): Do not shorten arithmetic to type
10264         for which excess precision would be used.
10265         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
10266         * doc/invoke.texi (-fexcess-precision=): Document option.
10267         (-mfpmath=): Correct index entry.
10268         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
10269         flag_excess_precision): New.
10270         * langhooks.c (lhd_post_options): Set
10271         flag_excess_precision_cmdline.
10272         * opts.c (common_handle_option): Handle -fexcess-precision=.
10273         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
10274         init_excess_precision): New.
10275         (lang_dependent_init_target): Call init_excess_precision.
10276         * tree.c (excess_precision_type): New.
10277         * tree.h (excess_precision_type): Declare.
10278
10279 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
10280
10281         PR c/35235
10282         * c-typeck.c (build_component_ref): Do not copy qualifiers from
10283         non-lvalue to component.
10284
10285 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
10286
10287         PR preprocessor/34695
10288         * Makefile.in (c-opts.o): Depend on c-tree.h.
10289         * c-common.c: Move down include of diagnostic.h.
10290         (done_lexing, c_cpp_error): New.
10291         * c-common.h (done_lexing): Declare.
10292         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
10293         (parse_in).
10294         * c-opts.c: Include c-tree.h.
10295         (c_common_init_options): Set preprocessor error callback.
10296         (c_common_handle_option): Do not set preprocessor
10297         inhibit_warnings, warnings_are_errors, warn_system_headers,
10298         pedantic_errors or inhibit_warnings flags.
10299         (c_common_post_options): Do not check cpp_errors (parse_in).
10300         (c_common_finish): Do not output dependencies if there were
10301         errors.  Do not check return value of cpp_finish.
10302         * c-ppoutput.c (pp_file_change): Set input_location.
10303         * c-tree.h (c_cpp_error): Declare.
10304         * diagnostic.c (diagnostic_set_info_translated): Also initialize
10305         override_column.
10306         (diagnostic_build_prefix): Check override_column.
10307         * diagnostic.h (diagnostic_info): Add override_column field.
10308         (diagnostic_override_column): Define.
10309
10310 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
10311
10312         * c-common.c (c_expand_expr, c_staticp): Remove.
10313         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
10314         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
10315         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
10316         * c-gimplify.c (gimplify_compound_literal_expr,
10317         optimize_compound_literals_in_ctor): Remove.
10318         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
10319         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
10320         * c-semantics.c (emit_local_var): Remove.
10321
10322         * langhooks-def.h (lhd_expand_expr): Remove.
10323         * langhooks.c (lhd_expand_expr): Remove.
10324         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
10325
10326         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
10327         handling from c-semantics.c; don't call into langhook.
10328         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
10329         * gimplify.c (gimplify_compound_literal_expr,
10330         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
10331         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
10332         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
10333         as was done in c-gimplify.c.
10334         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
10335         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
10336         Move from c-common.h.
10337         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
10338
10339         * tree.c (staticp): Do not call langhook.
10340         * langhooks.c (lhd_staticp): Delete.
10341         * langhooks-def.h (lhd_staticp): Delete prototype.
10342         (LANG_HOOKS_STATICP): Delete.
10343         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
10344
10345         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
10346         instead of DECL_STMTs.
10347
10348 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
10349
10350         PR c/456
10351         PR c/5675
10352         PR c/19976
10353         PR c/29116
10354         PR c/31871
10355         PR c/35198
10356         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
10357         void_type_node.
10358         (fold_call_expr): Return a NOP_EXPR from folding rather than the
10359         contained expression.
10360         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
10361         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
10362         conditional expressions for C.
10363         (decl_constant_value_for_optimization): Move from
10364         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
10365         whether optimizing and that the expression is a VAR_DECL not of
10366         array type instead of doing such checks in the caller.  Do not
10367         check pedantic.  Call gcc_unreachable for C++.
10368         * c-common.def (C_MAYBE_CONST_EXPR): New.
10369         * c-common.h (c_fully_fold, c_save_expr,
10370         decl_constant_value_for_optimization): New prototypes.
10371         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
10372         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
10373         EXPR_INT_CONST_OPERANDS): Define.
10374         * c-convert.c (convert): Strip nops from expression.
10375         * c-decl.c (groktypename): Take extra parameters expr and
10376         expr_const_operands.  Update call to grokdeclarator.
10377         (start_decl): Update call to grokdeclarator.  Add statement for
10378         expressions used in type of decl.
10379         (grokparm): Update call to grokdeclarator.
10380         (push_parm_decl): Update call to grokdeclarator.
10381         (build_compound_literal): Add parameter non_const and build a
10382         C_MAYBE_COSNT_EXPR if applicable.
10383         (grokdeclarator): Take extra parameters expr and
10384         expr_const_operands.  Track expressions used in declaration
10385         specifiers and declarators.  Fold array sizes and track whether
10386         they are constant expressions and whether they are integer
10387         constant expressions.
10388         (parser_xref_tag): Set expr and expr_const_operands fields in
10389         return value.
10390         (grokfield): Update call to grokdeclarator.
10391         (start_function): Update call to grokdeclarator.
10392         (build_null_declspecs): Set expr and expr_const_operands fields in
10393         return value.
10394         (declspecs_add_type): Handle expressions in typeof specifiers.
10395         * c-parser.c (c_parser_declspecs): Set expr and
10396         expr_const_operands fields for declaration specifiers.
10397         (c_parser_enum_specifier): Likewise.
10398         (c_parser_struct_or_union_specifier): Likewise.
10399         (c_parser_typeof_specifier): Likewise.  Update call to
10400         groktypename.  Fold expression as needed.  Return expressions with
10401         type instead of adding statements.
10402         (c_parser_attributes): Update calls to c_parser_expr_list.
10403         (c_parser_statement_after_labels): Fold expression before passing
10404         to objc_build_throw_stmt.
10405         (c_parser_condition): Fold expression.
10406         (c_parser_asm_operands): Fold expression.
10407         (c_parser_conditional_expression): Use c_save_expr.  Update call
10408         to build_conditional_expr.
10409         (c_parser_alignof_expression): Update call to groktypename.
10410         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
10411         original_code.  Fold expression argument of va_arg.  Create
10412         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
10413         argument to va_arg.  Update calls to groktypename.  Fold array
10414         index for offsetof.  Verify that first argument to
10415         __builtin_choose_expr has integer type.
10416         (c_parser_postfix_expression_after_paren_type): Update calls to
10417         groktypename and build_compound_literal.  Handle expressions with
10418         side effects in type name.
10419         (c_parser_postfix_expression_after_primary): Update call to
10420         c_parser_expr_list.  Set original_code for calls to
10421         __builtin_constant_p.
10422         (c_parser_expr_list): Take extra parameter fold_p.  Fold
10423         expressions if requested.
10424         (c_parser_objc_type_name): Update call to groktypename.
10425         (c_parser_objc_synchronized_statement): Fold expression.
10426         (c_parser_objc_receiver): Fold expression.
10427         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
10428         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
10429         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
10430         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
10431         (struct c_typespec): Add elements expr and expr_const_operands.
10432         (struct c_declspecs): Add elements expr and expr_const_operands.
10433         (groktypename, build_conditional_expr, build_compound_literal):
10434         Update prototypes.
10435         (in_late_binary_op): Declare.
10436         * c-typeck.c (note_integer_operands): New function.
10437         (in_late_binary_op): New variable.
10438         (decl_constant_value_for_broken_optimization): Move to c-common.c
10439         and rename to decl_constant_value_for_optimization.
10440         (default_function_array_conversion): Do not strip nops.
10441         (default_conversion): Do not call
10442         decl_constant_value_for_broken_optimization.
10443         (build_array_ref): Do not fold result.
10444         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
10445         result when operand is a VLA.
10446         (c_expr_sizeof_type): Update call to groktypename.  Handle
10447         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
10448         result when operand names a VLA type.
10449         (build_function_call): Update call to build_compound_literal.
10450         Only fold result for calls to __builtin_* functions.  Strip
10451         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
10452         the function designator.
10453         (convert_arguments): Fold arguments.  Update call to
10454         convert_for_assignment.
10455         (build_unary_op): Handle increment and decrement of
10456         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
10457         decrement earlier.  Fold operand of increment and decrement.
10458         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
10459         built for integer operand.  Wrap returns that are INTEGER_CSTs
10460         without being integer constant expressions or that have integer
10461         constant operands without being INTEGER_CSTs.
10462         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
10463         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
10464         result is an integer constant expression or can be used in
10465         unevaluated parts of one and avoid folding and wrap as
10466         appropriate.  Fold operands before possibly doing -Wsign-compare
10467         warnings.
10468         (build_compound_expr): Wrap result for C99 if operands can be used
10469         in integer constant expressions.
10470         (build_c_cast): Update call to digest_init.  Do not ignore
10471         overflow from casting floating-point constants to integers.  Wrap
10472         results that could be confused with integer constant expressions,
10473         null pointer constants or floating-point constants.
10474         (c_cast_expr): Update call to groktypename.  Handle expressions
10475         included in type name.
10476         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
10477         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
10478         Update calls to convert_for_assignment.
10479         (convert_for_assignment): Take new parameter
10480         null_pointer_constant.  Do not strip nops or call
10481         decl_constant_value_for_broken_optimization.  Set
10482         in_late_binary_op for conversions to boolean.
10483         (store_init_value): Update call to digest_init.
10484         (digest_init): Take new parameter null_pointer_constant.  Do not
10485         call decl_constant_value_for_broken_optimization.  pedwarn for
10486         initializers not constant expressions.  Update calls to
10487         convert_for_assignment.
10488         (constructor_nonconst): New.
10489         (struct constructor_stack): Add nonconst element.
10490         (really_start_incremental_init, push_init_level, pop_init_level):
10491         Handle constructor_nonconst and nonconst element.
10492         (set_init_index): Call constant_expression_warning for array
10493         designators.
10494         (output_init_element): Fold value.  Set constructor_nonconst as
10495         applicable.  pedwarn for initializers not constant expressions.
10496         Update call to digest_init.  Call constant_expression_warning
10497         where constant initializers are required.
10498         (process_init_element): Use c_save_expr.
10499         (c_finish_goto_ptr): Fold expression.
10500         (c_finish_return): Fold return value.  Update call to
10501         convert_for_assignment.
10502         (c_start_case): Fold switch expression.
10503         (c_process_expr_stmt): Fold expression.
10504         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
10505         ensure statement expression is not evaluated in constant expression.
10506         (build_binary_op): Track whether results are integer constant
10507         expressions or may occur in such, disable folding and wrap results
10508         as applicable.  Fold operands for -Wsign-compare warnings unless
10509         in_late_binary_op.
10510         (c_objc_common_truthvalue_conversion): Handle results folded to
10511         integer constants that are not integer constant expressions.
10512         * doc/extend.texi: Document when typeof operands are evaluated,
10513         that condition of __builtin_choose_expr is an integer constant
10514         expression, and more about use of __builtin_constant_p in
10515         initializers.
10516
10517 2009-03-29  Richard Guenther  <rguenther@suse.de>
10518
10519         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
10520         propagate addresses of array references.
10521
10522 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
10523
10524         * regmove.c (perhaps_ends_bb_p): Remove.
10525         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
10526         from INSN and check that the main loop stays within that basic block.
10527         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
10528         (regmove_forward_pass): Split out from regmove_optimize.  Use
10529         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
10530         (regmove_backward_pass): Split out from regmove_optimize.  Use
10531         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
10532         (regmove_optimize): Simplify.
10533
10534 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10535
10536         PR target/39545
10537         * config/i386/i386.c (classify_argument): Ignore flexible array
10538         member in struct and warn ABI change.
10539
10540 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10541
10542         * config/i386/i386-protos.h (ix86_agi_dependent): New.
10543
10544         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
10545         (ix86_adjust_cost): Updated.
10546
10547 2009-03-29  Jan Hubicka  <jh@suse.cz>
10548
10549         PR middle-end/28850
10550         * tree-pass.h (pass_cleanup_eh): New function.
10551         (remove_unreachable_regions): Break code handling RTL
10552         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
10553         that can not be reached by runtime.
10554         (can_be_reached_by_runtime): New function.
10555         (label_to_region_map): New function.
10556         (num_eh_regions): New function.
10557         (rtl_remove_unreachable_regions): New function.
10558         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
10559         (remove_eh_region): New function.
10560         * except.h: Include sbitmap and vecprim.
10561         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
10562         num_eh_regions): Declare.
10563         * passes.c (init_optimization_passes): Schedule cleanup_eh.
10564         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
10565         * tree-eh.c (tree_remove_unreachable_handlers): New function.
10566         (tree_empty_eh_handler_p): New function.
10567         (cleanup_empty_eh): New function.
10568         (cleanup_eh): New function.
10569         (pass_cleanup_eh): New function.
10570
10571 2009-03-29  Jan Hubicka  <jh@suse.cz>
10572
10573         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
10574         for removed regions.
10575
10576 2009-03-29  Jan Hubicka  <jh@suse.cz>
10577
10578         * except.c (dump_eh_tree): Dump all datastructures.
10579
10580 2009-03-29  Jan Hubicka  <jh@suse.cz>
10581
10582         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
10583         (duplicate_eh_regions_1): Likewise.
10584         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
10585         vector; call EH verification.
10586         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10587         Be ready for region being removed.
10588
10589 2009-03-29  Jan Hubicka  <jh@suse.cz>
10590
10591         * bitmap.c (bitmap_last_set_bit): New function.
10592         * bitmap.h (bitmap_last_set_bit): Declare.
10593
10594 2009-03-29  David Ayers  <ayers@fsfe.org>
10595
10596         PR objc/27377
10597         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
10598         by calling objc_compare_types and surpress warnings about
10599         incompatible C pointers that are compatible ObjC pointers.
10600
10601 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
10602
10603         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
10604         call initialize_inline_failed.
10605         (initialize_inline_failed): Move it from here ...
10606         * cgraph.c (initialize_inline_failed): ... to here.
10607         (cgraph_create_edge): Call initialize_inline_failed rather than
10608         setting inline_failed directly.
10609
10610 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10611
10612         PR target/32542
10613         * sysv4.opt (msdata): Improve comment.
10614         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
10615         * sysv4.h (SVR4_ASM_SPEC): Likewise.
10616
10617 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10618
10619         PR target/30451
10620         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
10621         load and store attributes.
10622
10623 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10624
10625         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
10626         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
10627         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
10628         * doc/extend.texi (X86 Built-in Functions): Add index entries for
10629         __builtin_infq and __builtin_huge_valq.
10630
10631 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
10632
10633         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
10634         atmega8m1 devices.
10635         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10636         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
10637
10638 2009-03-28  Xinliang David Li  <davidxl@google.com>
10639
10640         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
10641         (do_dbg_cnt): New function.
10642
10643 2009-03-28  Jan Hubicka  <jh@suse.cz>
10644
10645         Merge from pretty-ipa:
10646
10647         2009-03-27  Jan Hubicka  <jh@suse.cz>
10648
10649         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10650         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
10651         * passes.c (function_called_by_processed_nodes_p): New.
10652         * ipa-pure-const.c (check_call): Fix handling of operands.
10653         (analyze_function): Dump debug output for skipped bodies.
10654         (local_pure_const): Use function_called_by_processed_nodes_p.
10655         * dwarf2out.c (reference_to_unused): Use output.
10656         * passes.c (do_per_function_toporder): Likewise.
10657
10658         2008-11-12  Jan Hubicka  <jh@suse.cz>
10659
10660         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
10661         * ipa-pure-const.c (funct_state_d): Add can throw field; make
10662         state_set_in_source enum
10663         (check_decl): Ignore memory tags; do not set fake looping flags;
10664         dump diagnostics.
10665         (check_operand, check_tree, check_rhs_var, check_lhs_var,
10666         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
10667         (check_call, analyze_function): Rewrite.
10668         (check_stmt): New.
10669         (add_new_function): Update call of analyze_function.
10670         (generate_summary): Add call of analyze_function.
10671         (propagate): Propagate can_throw; handle state_set_in_source correctly.
10672         (local_pure_const): New function.
10673         (pass_local_pure_const): New pass.
10674         * ipa-inline.c (inline_transform): Set after_inlining.
10675         * tree-eh.c (stmt_can_throw_external): New.
10676         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
10677         work with aliasing built.
10678         * tree-flow.h (stmt_can_throw_external): New.
10679         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
10680         and local pure/const pass in early and late optimization queue.
10681
10682 2009-03-28  Martin Jambor  <mjambor@suse.cz>
10683
10684         * fold-const.c (get_pointer_modulus_and_residue): New parameter
10685         allow_func_align.
10686         (fold_binary): Allow function decl aligment consideration is the
10687         second argument is integer constant one.
10688         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
10689         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
10690         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
10691
10692 2009-03-28  Jan Hubicka  <jh@suse.cz>
10693
10694         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
10695         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
10696         * function.h (rtl_data): Add nothrow flag.
10697         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
10698         set DECL_NOTHROW for AVAILABLE functions.
10699
10700 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
10701
10702         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
10703         following vector keyword has expansion starting with pixel or bool
10704         keyword, expand vector to __vector and pixel or bool to __pixel or
10705         __bool.
10706
10707         PR c++/39554
10708         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
10709         warn_if_disallowed_function_p): Removed.
10710         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
10711         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
10712         warning_if_disallowed_function_p.
10713         * flags.h (warn_if_disallowed_function_p,
10714         warn_disallowed_functions): Removed.
10715         * common.opt (Wdisallowed-function-list=): Removed.
10716         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
10717
10718 2009-03-28  Richard Guenther  <rguenther@suse.de>
10719
10720         PR tree-optimization/38723
10721         * tree-ssa-pre.c (compute_avail): Add all default definitions to
10722         the entry block.
10723
10724 2009-03-28  Jan Hubicka  <jh@suse.cz>
10725
10726         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
10727         test introduced by my previous patch.
10728
10729 2009-03-28  Richard Guenther  <rguenther@suse.de>
10730
10731         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
10732         the PHIs value undefined.
10733
10734 2009-03-28  Jan Hubicka  <jh@suse.cz>
10735
10736         * tree-pass.h (pass_fixup_cfg): New pass.
10737         * ipa-inline.c (inline_transform): Set
10738         always_inline_functions_inlined/after_inlining.
10739         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
10740         (pass_fixup_cfg): New pass.
10741         * passes.c (init_optimization_passes): Add fixup_cfg.
10742
10743 2009-03-28  Richard Guenther  <rguenther@suse.de>
10744
10745         PR tree-optimization/38458
10746         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
10747         argument use the arguments copy-of value.
10748
10749 2009-03-28  Richard Guenther  <rguenther@suse.de>
10750
10751         PR tree-optimization/38180
10752         * tree-ssa-ccp.c (get_default_value): Simplify.
10753         (likely_value): Likewise.
10754         (surely_varying_stmt_p): Properly handle VOP case.
10755         (ccp_initialize): Likewise.
10756         (ccp_fold): Handle propagating through *&.
10757         (fold_const_aggregate_ref): Also handle decls.
10758
10759 2009-03-28  Jan Hubicka  <jh@suse.cz>
10760
10761         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10762         * cgraph.h (cgraph_node): Likewise.
10763         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
10764         (cgraph_reset_node): Use process flag.
10765         (cgraph_mark_functions_to_output): Likewise.
10766         (cgraph_expand_function): Likewise.
10767         (cgraph_expand_all_functions): Likewise.
10768         (cgraph_output_in_order): Likewise.
10769         * dwarf2out.c (reference_to_unused): Likewise.
10770         * passes.c do_per_function_toporder): Likewise.
10771
10772 2009-03-28  Jan Hubicka  <jh@suse.cz>
10773
10774         Bring from lto-branch:
10775
10776         2008-09-03  Doug Kwan  <dougkwan@google.com>
10777
10778         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
10779         enums instead of reason strings.
10780         * cgraph.c (cgraph_create_edge): Same.
10781         (cgraph_inline_failed_string): New function.
10782         * cgraph.h (cgraph_inline_failed_t): New enum type.
10783         (cgraph_inline_failed_string): New prototype.
10784         (struct cgraph_edge): Change type of INLINED_FAILED from constant
10785         char pointer to cgraph_inline_failed_t.
10786         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
10787         (cgraph_default_inline_p): Ditto.
10788         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
10789         to cgraph_inline_failed_t pointer.
10790         * cif-code.def: New file.
10791         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
10792         reason string.
10793         (cgraph_check_inline_limits): Change type of REASON to pointer to
10794         cgraph_inline_failed_t.  Replace reason strings with enums.
10795         (cgraph_default_inline_p): Ditto.
10796         (cgraph_recursive_inlining_p): Ditto.
10797         (update_caller_keys): Change type of FAILED_REASON to
10798         cgraph_inline_failed_t.
10799         (cgraph_set_inline_failed): Change type of REASON to pointer to
10800         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
10801         convert enums to strings for text output.
10802         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
10803         to be of type cgraph_inline_failed_t.  Replace reason strings with
10804         enums.  Call cgraph_inline_failed_string to covert enums
10805         to strings for text output.
10806         (cgraph_decide_inlining): Replace reason strings with enums.
10807         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
10808         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
10809         for text output.
10810         * tree-inline.c (expand_call_inline): Change type of REASON
10811         to cgraph_inline_failed_t.  Replace reason strings with enums.
10812         Call cgraph_inline_failed_string for text output.
10813         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
10814         (cgraph.o): Ditto.
10815
10816 2009-03-28  Jan Hubicka  <jh@suse.cz>
10817
10818         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
10819         cgraph_clone_node): Remove master clone handling.
10820         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10821         * cgraph.h (master_clone): Remove.
10822         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10823         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
10824         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
10825
10826 2009-03-28  Jan Hubicka  <jh@suse.cz>
10827
10828         * cgraph.c (cgraph_function_body_availability): Functions declared
10829         inline are always safe to assume that it is not going to be replaced.
10830
10831 2009-03-28  Richard Guenther  <rguenther@suse.de>
10832
10833         PR tree-optimization/38513
10834         * tree-ssa-pre.c (eliminate): Remove redundant stores.
10835         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
10836         EXC_PTR_EXPR and FILTER_EXPR.
10837         (get_ref_from_reference_ops): Likewise.
10838
10839 2009-03-28  Richard Guenther  <rguenther@suse.de>
10840
10841         PR tree-optimization/38968
10842         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
10843         Use FLOOR_MOD_EXPR to compute misalignment.
10844
10845 2009-03-28  Richard Guenther  <rguenther@suse.de>
10846
10847         PR tree-optimization/37795
10848         * tree.h (combine_comparisons): Declare.
10849         * fold-const.c (combine_comparisons): Export.
10850         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
10851         comparisons.
10852         (ifcombine_iforif): Use combine_comparisons.
10853
10854 2009-03-28  Jan Hubicka  <jh@suse.cz>
10855
10856         * tree-eh.c (inlinable_call_p): New function.
10857         (make_eh_edges): Use it.
10858         (verify_eh_edges): Use it.
10859         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
10860         * except.c (reachable_next_level): Add inlinable_function argument
10861         (sjlj_find_directly_reachable_regions): Update.
10862         (add_reachable_handler): Do not set saw_any_handlers.
10863         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
10864         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10865         Add new inlinable call parameter.
10866         (can_throw_internal, can_throw_external): Update.
10867         * except.h (can_throw_internal_1, can_throw_external_1,
10868         foreach_reachable_handler): Update declaration.
10869
10870 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
10871
10872         * config/arm/t-arm-coff, config/h8300/coff.h,
10873         config/i386/i386-aout.h, config/i386/i386-coff.h,
10874         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
10875         config/pdp11/2bsd.h, config/rs6000/aix41.h,
10876         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
10877         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
10878         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
10879         sys-types.h: Remove.
10880         * Makefile.in: Remove protoize and fixproto support and references
10881         in comments.
10882         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
10883         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
10884         Remove.
10885         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
10886         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
10887         unprotoize$(exeext).
10888         (rest.encap): Don't depend on $(STMP_FIXPROTO)
10889         (.PHONY): Don't depend on proto.
10890         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
10891         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
10892         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
10893         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
10894         build/gen-protos.o, build/scan.o, xsys-protos.h,
10895         build/fix-header$(build_exeext), build/fix-header.o,
10896         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
10897         stmp-install-fixproto): Remove.
10898         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
10899         SYSCALLS.c or fixproto files.
10900         (install-common): Don't install protoize.
10901         (install-headers-tar, install-headers-cpio, install-headers-cp):
10902         Don't depend on $(STMP_FIXPROTO).
10903         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
10904         install fixproto files or write out fixproto settings.
10905         (uninstall): Don't uninstall protoize.
10906         * config.gcc (use_fixproto): Remove.
10907         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
10908         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
10909         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
10910         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
10911         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
10912         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
10913         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
10914         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
10915         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
10916         * config/t-vxworks (STMP_FIXPROTO): Remove.
10917         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
10918         STMP_FIXPROTO): Remove.
10919         * config.in, configure: Regenerate.
10920         * crtstuff.c (gid_t, uid_t): Don't undefine.
10921         * doc/install.texi: Change m68k-coff to m68k-elf in example.
10922         (arm-*-coff, arm-*-aout: Remove target entries.
10923         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
10924         Remove mention of AIX 4.1.
10925         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
10926         * doc/invoke.texi (Running Protoize): Remove.
10927         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
10928         (Protoize Caveats): Remove.
10929         * tsystem.h: Update comments on headers assumed to exist.
10930
10931 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
10932
10933         * genautomata.c: Add a new year to the copyright.  Add a new
10934         reference.
10935         (struct insn_reserv_decl): Add comments for member bypass_list.
10936         (find_bypass): Remove.
10937         (insert_bypass): New.
10938         (process_decls): Use insert_bypass.
10939         (output_internal_insn_latency_func): Output all bypasses with the
10940         same input insn in one switch case.
10941
10942         * rtl.def (define_bypass): Describe bypass choice.
10943         * doc/md.texi (define_bypass): Ditto.
10944
10945 2009-03-27  Richard Guenther  <rguenther@suse.de>
10946
10947         * gimplify.c (mark_addressable): Export.
10948         * tree-flow.h (mark_addressable): Declare.
10949         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
10950         * tree-ssa.c (verify_phi_args): Verify that address taken
10951         variables have TREE_ADDRESSABLE set.
10952
10953 2009-03-27  Richard Guenther  <rguenther@suse.de>
10954
10955         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
10956         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
10957         Do not mark decls TREE_ADDRESSABLE.
10958         (build_fold_addr_expr): Adjust.
10959         (fold_addr_expr): Remove.
10960         (fold_unary): Use build_fold_addr_expr.
10961         (fold_comparison): Likewise.
10962         (split_address_to_core_and_offset): Likewise.
10963         * coverage.c (tree_coverage_counter_addr): Mark the array decl
10964         TREE_ADDRESSABLE.
10965         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
10966         (gimplify_modify_expr_to_memcpy): Mark source and destination
10967         addressable.
10968         * omp-low.c (create_omp_child_function): Mark the object decl
10969         TREE_ADDRESSABLE.
10970         (lower_rec_input_clauses): Mark the var we take the address of
10971         TREE_ADDRESSABLE.
10972         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
10973
10974 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10975
10976         PR middle-end/39315
10977         * cfgexpand.c (expand_one_stack_var_at): Change alignment
10978         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
10979
10980 2009-03-27  Richard Guenther  <rguenther@suse.de>
10981
10982         PR tree-optimization/39120
10983         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
10984         constraints.
10985         (handle_lhs_call): Process return constraints.  Add escape
10986         constraints if necessary.
10987         (handle_const_call): Fill out return constraints.  Make nested
10988         case more precise.  Avoid consttmp if possible.
10989         (handle_pure_call): Fill out return constraints.  Avoid
10990         callused if possible.
10991         (find_func_aliases): Simplify call handling.
10992
10993 2009-03-27  Richard Guenther  <rguenther@suse.de>
10994
10995         PR tree-optimization/39120
10996         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
10997         as a representative.
10998         (solve_graph): Do propagate CALLUSED.
10999         (handle_pure_call): Use a scalar constraint from CALLUSED for
11000         the return value.
11001         (find_what_p_points_to): CALLUSED shall not appear in poins-to
11002         solutions.
11003
11004 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11005
11006         PR c/39323
11007         * c-common.c (handle_aligned_attribute): Properly check alignment
11008         overflow.  Use (1U << i) instead of (1 << i).
11009
11010         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
11011
11012         * expr.h (get_mem_align_offset): Updated.
11013
11014         * tree.h (tree_decl_common): Change align to "unsigned int" and
11015         move it before pointer_alias_set.
11016
11017 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11018             Jakub Jelinek  <jakub@redhat.com>
11019
11020         PR target/38034
11021         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
11022         gr_register_operand with gr_reg_or_0_operand.
11023         (cmpxchg_rel_di): Likewise.
11024         (sync_lock_test_and_set<mode>): Likewise.
11025
11026 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11027
11028         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
11029         (true_regnum): Likewise.
11030
11031         * rtlanal.c (subreg_info): Moved to ...
11032         * rtl.h (subreg_info): Here.  New.
11033         (subreg_get_info): New.
11034
11035         * rtlanal.c (subreg_get_info): Make it extern.
11036
11037 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11038
11039         PR target/39472
11040         * config/i386/i386.c (ix86_abi): New.
11041         (override_options): Handle -mabi=.
11042         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
11043         (ix86_call_abi_override): Likewise.
11044         (init_cumulative_args): Likewise.
11045         (function_arg_advance): Likewise.
11046         (function_arg_64): Likewise.
11047         (function_arg): Likewise.
11048         (ix86_pass_by_reference): Likewise.
11049         (ix86_function_value_regno_p): Likewise.
11050         (ix86_build_builtin_va_list_abi): Likewise.
11051         (setup_incoming_varargs_64): Likewise.
11052         (is_va_list_char_pointer): Likewise.
11053         (ix86_init_machine_status): Likewise.
11054         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
11055         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
11056         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
11057         (ix86_function_abi): Make it static and return enum calling_abi.
11058         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
11059         with ix86_abi.
11060         (ix86_fn_abi_va_list): Updated.
11061
11062         * config/i386/i386.h (ix86_abi): New.
11063         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
11064         (CONDITIONAL_REGISTER_USAGE): Likewise.
11065         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
11066         (machine_function): Likewise.
11067
11068         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
11069         with ix86_abi.
11070         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
11071         (STACK_BOUNDARY): Likewise.
11072         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
11073
11074         * config/i386/i386.opt (mabi=): New.
11075
11076         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
11077         return enum calling_abi.
11078         (ix86_function_type_abi): Likewise.
11079         (ix86_function_abi): Removed.
11080
11081         * doc/invoke.texi: Document -mabi= option for x86.
11082
11083 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11084
11085         * builtins.c (real_dconstp): Delete.
11086         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
11087
11088 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
11089             Jakub Jelinek  <jakub@redhat.com>
11090
11091         PR debug/37959
11092         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
11093         (gen_subprogram_die): When a function is explicit, generate the
11094         DW_AT_explicit attribute.
11095         * langhooks.h (struct lang_hooks_for_decls): Add
11096         function_decl_explicit_p langhook.
11097         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
11098         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
11099
11100 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
11101
11102         * builtins.c (fold_builtin_memory_op): Optimize memmove
11103         into memcpy if we can prove source and destination don't overlap.
11104
11105         * tree-inline.c: Include gt-tree-inline.h.
11106         (clone_fn_id_num): New variable.
11107         (clone_function_name): New function.
11108         (tree_function_versioning): Use it.
11109         * Makefile.in (GTFILES): Add tree-inline.c.
11110
11111 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
11112
11113         * BASE-VER: Change to 4.5.0.
11114
11115 2009-03-27  Xinliang David Li  <davidxl@google.com>
11116
11117         PR tree-optimization/39557
11118         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
11119
11120 2009-03-27  Xinliang David Li  <davidxl@google.com>
11121
11122         PR tree-optimization/39548
11123         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
11124         candidate check.
11125
11126 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11127
11128         * c-common.c (pointer_int_sum): Use %wd on return from
11129         tree_low_cst.
11130
11131 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
11132
11133         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
11134         on return from tree_low_cst.
11135
11136 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11137
11138         PR c++/36799
11139         * ginclude/stdarg.h (va_copy): Define also for
11140         __GXX_EXPERIMENTAL_CXX0X__.
11141
11142 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11143
11144         PR c++/35652
11145         * builtins.h (c_strlen): Do not warn here.
11146         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
11147         * c-common.c (pointer_int_sum): Take an explicit location.
11148         Warn about offsets out of bounds.
11149         * c-common.h (pointer_int_sum): Adjust declaration.
11150
11151 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11152
11153         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
11154         markup glitch.
11155
11156 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
11157
11158         PR c++/39554
11159         * opts.c (warn_if_disallowed_function_p): Don't assume
11160         get_callee_fndecl must return non-NULL.
11161
11162 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
11163
11164         PR rtl-optimization/39522
11165         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
11166         when reg_reloaded_valid is set.
11167
11168 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11169
11170         * config/spu/divv2df3.c: New file.
11171         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
11172         (DPBIT_FUNCS): Filter out _div_df.
11173
11174 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
11175
11176         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
11177         a jump insn, count that jump in the distance to the loop start.
11178
11179 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
11180
11181         PR target/39523
11182         * config/sh/sh.c (calc_live_regs): Fix condition for global
11183         registers except PIC_OFFSET_TABLE_REGNUM.
11184
11185 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
11186
11187         PR/39518
11188         * doc/invoke.texi (-mconsole): New.
11189         (-mcygwin): New.
11190         (-mno-cygwin): New.
11191         (-mdll): New.
11192         (-mnop-fun-dllimport): New.
11193         (-mthread): New.
11194         (-mwin32): New.
11195         (-mwindows): New.
11196         (sub section "i386 and x86-64 Windows Options"): New.
11197
11198 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
11199
11200         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
11201         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
11202
11203 2009-03-25  Richard Guenther  <rguenther@suse.de>
11204
11205         PR middle-end/39497
11206         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
11207         of -Wno-error.
11208
11209 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
11210
11211         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
11212         neither of haifa/selective schedulers are working.
11213
11214 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11215
11216         * doc/invoke.texi (Debugging Options): Fix description of
11217         -fno-merge-debug-strings.
11218
11219 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
11220
11221         * config/cris/libgcc.ver: New version-script.
11222         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
11223
11224         * configure.ac <GAS features, nop mnemonic>: Add pattern
11225         crisv32-*-* for "nop".
11226         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
11227         * configure: Regenerate.
11228
11229 2009-03-24  Ira Rosen  <irar@il.ibm.com>
11230
11231         PR tree-optimization/39529
11232         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
11233         mark_sym_for_renaming for the tag copied to the new vector
11234         pointer.
11235
11236 2009-03-24  Arthur Loiret  <aloiret@debian.org>
11237
11238         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
11239         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
11240         EXTRA_SPEC_FUNCTIONS.
11241         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
11242         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
11243         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
11244         -march and -mtune options.
11245
11246 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
11247
11248         * config/m68k/t-rtems: Add m5329 multilib.
11249
11250 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
11251             Jakub Jelinek  <jakub@redhat.com>
11252
11253         PR debug/39524
11254         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
11255         nodes.
11256
11257 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
11258
11259         PR c/39495
11260         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
11261         instead of c_parser_expression_conv, if original_code isn't one of the
11262         4 allowed comparison codes, fail.
11263
11264 2009-03-23  Richard Guenther  <rguenther@suse.de>
11265
11266         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
11267         * tree.h (struct tree_type): Likewise.
11268         * reload.h (struct insn_chain): Likewise.
11269         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
11270         * function.h (struct function): Likewise.
11271         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
11272
11273 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
11274
11275         PR tree-optimization/39516
11276         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
11277
11278 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
11279
11280         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
11281         should be set true if BITS_PER_WORD of target is bigger than 32
11282
11283 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
11284
11285         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
11286         Translate -B-options to -rpath-link.  Correct existing
11287         rpath-link and conditionalize on !nostdlib.
11288
11289 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11290
11291         * doc/extend.texi (Function Attributes, Variable Attributes):
11292         Fix typos.
11293         * doc/invoke.texi (Debugging Options, Optimize Options)
11294         (i386 and x86-64 Options, MCore Options): Likewise.
11295
11296 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
11297
11298         PR debug/37890
11299         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
11300         it for block local namespace aliases.
11301         (gen_decl_die): Pass context_die to gen_namespace_die.
11302
11303 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
11304
11305         PR c/39495
11306         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
11307         minimum or maximum value.
11308
11309 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
11310
11311         * reginfo.c (globalize_reg): Recompute derived reg sets.
11312
11313 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
11314
11315         PR target/39063
11316         * libgcc2.c (mprotect): Do not use signed arguments for
11317         VirtualProtect, use DWORD arguments.  Also fix the 'may
11318         be used uninitialized' warning for the np variable.
11319
11320 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
11321
11322         PR target/39496
11323         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
11324         functions using regparm calling conventions when not optimizing.
11325         (ix86_function_sseregparm): Similarly for sseregparm calling
11326         conventions.
11327
11328 2009-03-19  Li Feng  <nemokingdom@gmail.com>
11329
11330         PR middle-end/39500
11331         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
11332         dependence if the first conflict is after niter iterations.
11333
11334 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
11335
11336         PR middle-end/38609
11337         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
11338         functions with dynamic stack-pointer adjustments.
11339
11340 2009-03-19  Ben Elliston  <bje@au.ibm.com>
11341
11342         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
11343         option; change to -msdata=data.
11344
11345 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11346
11347         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
11348         and -fopenmp.
11349
11350 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
11351
11352         PR target/35180
11353         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
11354
11355 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
11356
11357         * doc/invoke.texi (Code Gen Options): Expand discussion of
11358         -fno-common.
11359
11360 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
11361
11362         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
11363         * matrix-reorg.c (struct matrix_info): Likewise.
11364         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
11365         * rtl.h (struct mem_attrs): Likewise.
11366         * df.h (struct df): Likewise.
11367         * tree-data-ref.h (struct data_dependence_relation): Likewise.
11368         * ira-int.h (struct ira_allocno): Likewise.
11369         * df-scan.c (struct df_collection_rec): Likewise.
11370         * ira.c (struct equivalence): Likewise.
11371         * function.c (struct temp_slot): Likewise.
11372         * cfgloop.h (struct loop): Likewise.
11373
11374         PR debug/39485
11375         * function.c (use_register_for_decl): When not optimizing, disregard
11376         register keyword for variables with types containing methods.
11377
11378 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
11379
11380         PR middle-end/39447
11381         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
11382         (is_simple_operand): Call contains_component_ref_p before calling data
11383         reference analysis that would fail on COMPONENT_REFs.
11384
11385         * tree-vrp.c (search_for_addr_array): Fix formatting.
11386
11387 2009-03-18  Richard Guenther  <rguenther@suse.de>
11388
11389         * tree-vect-transform.c (vect_loop_versioning): Fold the
11390         generated comparisons.
11391         * tree-vectorizer.c (set_prologue_iterations): Likewise.
11392         (slpeel_tree_peel_loop_to_edge): Likewise.
11393
11394 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11395
11396         PR middle-end/37805
11397         * opts.c (print_specific_help): In addition to `undocumented',
11398         accept `separate' and `joined' flags if passed alone.  Describe
11399         output by the first matched one of those.
11400         (common_handle_option): Skip over empty strings.
11401         * gcc.c (display_help): Fix help string for `--help='.
11402         * doc/invoke.texi (Option Summary, Overall Options): With
11403         `--help=', classes and qualifiers can both be repeated, but
11404         only the latter can be negated.  One should not pass only
11405         negated qualifiers.  Fix markup and examples.
11406
11407         Revert
11408         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
11409         PR middle-end/37805
11410         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
11411         and -fhelp=separate.
11412
11413 2009-03-17  Jing Yu  <jingyu@google.com>
11414
11415         PR middle-end/39378
11416         * function.h (struct rtl_data): Move is_thunk from here...
11417         (struct function): ...to here.
11418         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
11419         * varasm.c (assemble_start_function): Change is_thunk from crtl to
11420         cfun.
11421         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
11422         cfun.
11423         (alpha_does_function_need_gp, alpha_start_function): Likewise.
11424         (alpha_output_function_end_prologue): Likewise.
11425         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
11426         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
11427         (rs6000_output_function_epilogue): Likewise.
11428         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
11429
11430 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
11431
11432         PR target/39482
11433         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
11434         from different units in a single alternative.
11435         (*truncdfsf_i387): Ditto.
11436         (*truncxfsf2_mixed): Ditto.
11437         (*truncxfdf2_mixed): Ditto.
11438
11439 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
11440
11441         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
11442         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
11443
11444         PR debug/39474
11445         * tree-ssa-live.c (remove_unused_locals): Don't remove local
11446         unused non-artificial variables when not optimizing.
11447
11448         PR debug/39471
11449         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
11450         DW_TAG_imported_module even if decl is IMPORTED_DECL with
11451         NAMESPACE_DECL in its DECL_INITIAL.
11452
11453         PR middle-end/39443
11454         * optabs.c (set_user_assembler_libfunc): New function.
11455         * expr.h (set_user_assembler_libfunc): New prototype.
11456         * c-common.c: Include libfuncs.h.
11457         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
11458         for memcmp, memset, memcpy, memmove and abort.
11459         * Makefile.in (c-common.o): Depend on libfuncs.h.
11460
11461         PR debug/39412
11462         * dwarf2out.c (gen_inlined_enumeration_type_die,
11463         gen_inlined_structure_type_die, gen_inlined_union_type_die,
11464         gen_tagged_type_instantiation_die): Removed.
11465         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
11466         do nothing.
11467
11468 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
11469
11470         PR testsuite/38526
11471         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
11472         its use.
11473         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
11474         (check-parallel-%): Ditto.
11475         (check-consistency): Ditto.
11476
11477 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
11478
11479         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
11480         local variable rhs by NULL_TREE.
11481
11482 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11483
11484         PR target/39477
11485         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
11486
11487 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11488
11489         PR target/39476
11490         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
11491
11492 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11493
11494         PR target/39473
11495         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
11496         for ms->sysv ABI calls only in 64bit mode.
11497
11498         * config/i386/i386.md (untyped_call): Support 32bit.
11499
11500 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
11501
11502         * doc/extend.texi: Replace x86_65 with x86_64.
11503
11504 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
11505
11506         PR tree-optimization/39455
11507         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
11508         mismatches for POINTER_TYPE_P (type).
11509         (number_of_iterations_le): Likewise.
11510
11511 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11512
11513         * config/picochip/picochip.c: Removed profiling support.
11514         * config/picochip/picochip.md: Removed profiling instruction.
11515         * config/picochip/picochip.h: Removed profiling builtin.
11516
11517 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
11518
11519         * doc/install.texi (--with-host-libstdcxx): Document.
11520
11521 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
11522
11523         PR target/34299
11524         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
11525         generate a warning if the function name does not begin with
11526         "__vector" and the function has either the 'signal' or 'interrupt'
11527         attribute, from here to ...
11528         (avr_declare_function_name): ...here. New function.
11529         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
11530         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
11531
11532 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
11533
11534         PR bootstrap/39454
11535         * cse.c (fold_rtx): Don't modify original const_arg1 when
11536         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
11537         separate variable instead.
11538         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
11539         from out of range shift counts.
11540         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
11541
11542 2009-03-13  Catherine Moore  <clm@codesourcery.com>
11543
11544         * config/i386/x-mingw32 (host-mingw32.o): Replace
11545         diagnostic.h with $(DIAGNOSTIC_H).
11546
11547 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
11548
11549         PR target/39431
11550         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
11551         predicate.
11552         * config/i386/sync.md (sync_compare_and_swap<mode>,
11553         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
11554         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
11555         into a register.
11556         (sync_double_compare_and_swapdi_pic,
11557         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
11558         cmpxchg8b_pic_memory_operand instead of just memory_operand.
11559
11560 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11561
11562         PR target/39445
11563         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
11564
11565 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11566
11567         PR target/39327
11568         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11569         (avx_addsubv4df3): Likewise.
11570         (*avx_addsubv4sf3): Likewise.
11571         (sse3_addsubv4sf3): Likewise.
11572
11573 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11574
11575         PR target/38824
11576         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
11577
11578 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
11579
11580         PR debug/39432
11581         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
11582         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11583         registers for allocnos created from user-defined variables.
11584
11585 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11586
11587         PR target/39181
11588         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
11589         of non-integer mode as well.
11590
11591 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
11592
11593         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
11594         for functions for which the parameter types are unknown.
11595
11596 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
11597
11598         PR target/39137
11599         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
11600         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
11601         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
11602         * config/i386/i386.c (ix86_local_alignment): For
11603         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
11604         long long variables on the stack to avoid dynamic realignment.
11605         Allow the first argument to be a decl rather than type.
11606         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
11607
11608 2009-03-11  Nick Clifton  <nickc@redhat.com>
11609
11610         PR target/5362
11611         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
11612         options.
11613         Add description to mno-lsim option.
11614         * config/mcore/mcore.h: Remove comment about deprecated m4align
11615         option.
11616         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
11617         * doc/invoke.texi: Add description of mno-lsim and
11618         mstack-increment options.
11619
11620         * config/fr30/fr30.opt: Document the -mno-lsim option.
11621         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
11622         and -mno-lsim options.
11623
11624 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11625
11626         * fold-const.c (fold_comparison): Only call fold_inf_compare
11627         if the mode supports infinities.
11628
11629 2009-03-11  Jason Merrill  <jason@redhat.com>
11630
11631         PR debug/39086
11632         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
11633         end already did.  Notice GIMPLE_CALL modifications of the result.
11634         Don't copy debug information from an ignored decl or a decl from
11635         another function.
11636
11637 2009-03-10  Richard Guenther  <rguenther@suse.de>
11638             Nathan Froyd  <froydnj@codesourcery.com>
11639
11640         PR middle-end/37850
11641         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
11642         (__divMODE3): Likewise.
11643
11644 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
11645
11646         PR tree-optimization/39394
11647         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
11648         DECL_SIZE_UNIT of variable length FIELD_DECLs.
11649
11650 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11651
11652         * recog.c (verfiy_changes): Disallow renaming of hard regs in
11653         inline asms for register asm ("") declarations.
11654
11655 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11656
11657         * fold-const.c (fold_unary): Fix comment.
11658
11659 2009-03-07  Jan Hubicka  <jh@suse.cz>
11660
11661         PR target/39361
11662         * tree-inline.c (setup_one_parameter): Do replacement of const
11663         argument by constant in SSA form.
11664
11665 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11666
11667         PR middle-end/38028
11668         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
11669         determine alignment passed to assign_stack_local.
11670         (assign_parms_unsplit_complex): Likewise.
11671         * except.c (sjlj_build_landing_pads): Likewise.
11672
11673 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11674
11675         PR middle-end/39360
11676         * tree-flow.h (add_referenced_var): Return bool instead of void.
11677         * tree-dfa.c (add_referenced_var): Return result of
11678         referenced_var_check_and_insert call.
11679         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
11680         of referenced_var_check_and_insert.
11681
11682         PR debug/39372
11683         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
11684         (gen_variable_die): Emit DW_AT_location on abstract static variable's
11685         DIE, don't emit it if abstract origin already has it.
11686         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
11687         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
11688
11689 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11690
11691         * genpreds.c (needs_variable): Fix parentheses at variable name
11692         detection.
11693         (write_tm_constrs_h): Indent generated code.
11694
11695 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11696
11697         * doc/extend.texi (Function Attributes): Add documentation
11698         for isr attributes.
11699
11700 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11701
11702         PR debug/39387
11703         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
11704         take locus from its DECL_SOURCE_LOCATION instead of input_location.
11705
11706 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11707
11708         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
11709         the loop as bad.
11710
11711 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
11712
11713         PR debug/39379
11714         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
11715         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
11716
11717 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
11718
11719         * config/i386/i386.md (R8_REG, R9_REG): New constants.
11720         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
11721         constants instead of magic numbers.
11722         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11723         (QI_REG_P): Ditto.
11724         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
11725         (x86_64_ms_abi_int_parameter_registers): Ditto.
11726         (x86_64_int_return_registers): Ditto.
11727         (ix86_maybe_switch_abi): Ditto.
11728         (ix86_expand_call): Ditto for clobbered_registers array.
11729         (ix86_hard_regno_mode_ok): Ditto.
11730         (x86_extended_QIreg_mentioned_p): Ditto.
11731
11732 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
11733
11734         PR tree-optimization/39349
11735         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
11736
11737         * combine.c (gen_lowpart_for_combine): Use omode when generating
11738         clobber.
11739
11740 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
11741
11742         PR rtl-optimization/39235
11743         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
11744
11745 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11746
11747         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
11748
11749 2009-03-04  Richard Guenther  <rguenther@suse.de>
11750
11751         PR tree-optimization/39362
11752         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
11753         that occur in abnormal PHIs should be varying.
11754
11755 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11756
11757         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
11758         Extend comments.
11759         (simple_iv):  Take loop as an argument instead of statement.
11760         * tree-scalar-evolution.h (simple_iv): Declaration changed.
11761         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
11762         to simple_iv.
11763         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
11764         Ditto.
11765         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
11766         * matrix-reorg.c (analyze_transpose): Ditto.
11767         * tree-data-ref.c (dr_analyze_innermost): Ditto.
11768         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
11769         * tree-predcom.c (ref_at_iteration): Ditto.
11770         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
11771
11772 2009-03-04  Richard Guenther  <rguenther@suse.de>
11773
11774         PR tree-optimization/39358
11775         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
11776         escaped_id and callused_id.
11777         (solve_graph): Likewise.
11778
11779 2009-03-04  Richard Guenther  <rguenther@suse.de>
11780
11781         PR tree-optimization/39339
11782         * tree-sra.c (try_instantiate_multiple_fields): Make it
11783         no longer ICE on the above.
11784
11785 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
11786
11787         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
11788         that fits within Pmode.
11789
11790 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11791
11792         PR middle-end/10109
11793         * tm.texi (LIBCALL_VALUE): Update description.
11794
11795 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11796
11797         PR middle-end/34443
11798         * doc/extend.texi (section): Update description.
11799
11800 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
11801
11802         PR middle-end/39345
11803         * tree-inline.c (remapped_type): New.
11804         (can_be_nonlocal): Call remapped_type instead of remap_type.
11805
11806 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11807
11808         PR fortran/39354
11809         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
11810         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
11811
11812 2009-03-03  Richard Guenther  <rguenther@suse.de>
11813
11814         PR middle-end/39272
11815         * tree.c (tree_nonartificial_location): New function.
11816         * tree.h (tree_nonartificial_location): Declare.
11817         * builtins.c (expand_builtin_memory_chk): Provide location
11818         of the call location for artificial function pieces.
11819         (maybe_emit_chk_warning): Likewise.
11820         (maybe_emit_sprintf_chk_warning): Likewise.
11821         (maybe_emit_free_warning): Likewise.
11822         * expr.c (expand_expr_real_1): Likewise.
11823
11824 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11825
11826         PR tree-optimization/39343
11827         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
11828         COMPONENT_REF t has ARRAY_TYPE.
11829
11830 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
11831
11832         PR middle-end/39335
11833         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
11834         when the type precision of the induction variable should be
11835         larger than the type precision of nit.
11836         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
11837         * graphite.c (graphite_loop_normal_form): Same.
11838         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
11839
11840 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11841
11842         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
11843         (*call_1_rex64_ms_sysv): Use named constants instead of magic
11844         numbers to describe clobbered registers.
11845         (*call_value_0_rex64_ms_sysv): Ditto.
11846         * config/i386/mmx.md (mmx_emms): Ditto.
11847         (mmx_femms): Ditto.
11848
11849 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
11850
11851         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
11852         of ABI_64.
11853
11854 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11855
11856         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
11857         (spu_section_type_flags): New function.
11858
11859 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11860
11861         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
11862         reg_class_contents of FLOAT_REGS into a temporary.
11863
11864 2009-03-02  Richard Guenther  <rguenther@suse.de>
11865             Ira Rosen  <irar@il.ibm.com>
11866
11867         PR tree-optimization/39318
11868         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
11869         information to the vectorized statement.
11870
11871 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
11872
11873         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
11874         variable.  Use defined names instead of magic constants for REX SSE
11875         registers.
11876
11877 2009-03-01  Richard Guenther  <rguenther@suse.de>
11878
11879         PR tree-optimization/39331
11880         * omp-low.c (lower_send_shared_vars): Do not receive new
11881         values for the reference of DECL_BY_REFERENCE parms or results.
11882
11883 2009-03-01  Jan Hubicka  <jh@suse.cz>
11884
11885         PR debug/39267
11886         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
11887         BLOCK_NONLOCALIZED_VAR): New macros.
11888         (tree_block): Add nonlocalized_vars.
11889         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
11890         gen_decl_die): Add origin argument.  Allow generation of die with
11891         origin at hand only.
11892         (gen_member_die, gen_type_die_with_usage, force_decl_die,
11893         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
11894         of gen_*.
11895         (gen_block_die): Fix checking for unused blocks.
11896         (process_scope_var): Break out from .... ; work with origins only.
11897         (decls_for_scope) ... here; process nonlocalized list.
11898         (dwarf2out_ignore_block): Look for nonlocalized vars.
11899         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
11900         vars.
11901         (dump_scope_block): Dump them.
11902         * tree-inline.c (remap_decls): Handle nonlocalized vars.
11903         (remap_block): Likewise.
11904         (can_be_nonlocal): New predicate.
11905         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
11906
11907 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11908
11909         * configure: Regenerate.
11910
11911 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11912
11913         * optc-gen.awk: No need to duplicate option flags twice.
11914         Reuse help texts for duplicate options which do not have any.
11915
11916         * gcc.c (display_help): Document --version.
11917
11918         * gcc.c (main): If print_help_list and verbose_flag, ensure
11919         driver output comes before subprocess output.
11920
11921         * optc-gen.awk: Assign all remaining fields to help string,
11922         space-separated, for multi-line help in *.opt.
11923
11924         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
11925         -Wno-pedantic-ms-format is for MinGW targets only.
11926
11927         * doc/options.texi (Option file format): Fix bad indentation,
11928         restoring dropped sentence.
11929
11930 2009-02-28  Jan Hubicka  <jh@suse.cz>
11931
11932         * tree-inline.c (tree_function_versioning): Output debug info.
11933
11934 2009-02-28  Jan Hubicka  <jh@suse.cz>
11935
11936         PR debug/39267
11937         * tree-inline.c (setup_one_parameter): Do not copy propagate
11938         arguments when not optimizing.
11939
11940 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
11941
11942         PR target/39327
11943         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11944         (avx_addsubv4df3): Likewise.
11945         (*avx_addsubv4sf3): Likewise.
11946         (sse3_addsubv4sf3): Likewise.
11947         (*avx_addsubv2df3): Likewise.
11948         (sse3_addsubv2df3): Likewise.
11949         (avx_unpckhps256): Correct item selectors.
11950         (avx_unpcklps256): Likewise.
11951         (avx_unpckhpd256): Likewise.
11952         (avx_unpcklpd256): Likewise.
11953
11954 2009-02-28  Jan Hubicka  <jh@suse.cz>
11955
11956         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
11957         static vars.
11958         (copy_arguments_for_versioning): If var is declared don't declare it.
11959         (tree_function_versioning): First setup substitutions and then copy
11960         args.
11961
11962 2009-02-27  Jan Hubicka  <jh@suse.cz>
11963
11964         PR debug/39267
11965         * cgraph.h (varpool_output_debug_info): Remove.
11966         * cgraphunit.c (varpool_output_debug_info): Remove.
11967         * dwarf2out.c (deferred_locations_struct): New struct
11968         (deferred_locations): New type.
11969         (deferred_locations_list): New static var.
11970         (deffer_location): New function.
11971         (gen_variable_die): Use it.
11972         (decls_for_scope): Output info on local static vars.
11973         (dwarf2out_finish): Process deferred locations.
11974         * varpool.c (varpool_output_debug_info): Remove.
11975
11976 2009-02-27  Jan Hubicka  <jh@suse.cz>
11977
11978         PR debug/39267
11979         * tree.h (TREE_PROTECTED): Fix comment.
11980         (BLOCK_HANDLER_BLOCK): Remove.
11981         (struct tree_block): Remove handler_block add body_block.
11982         (inlined_function_outer_scope_p): New.
11983         (is_body_block): Remove.
11984         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
11985         * dwarf2out.c (is_inlined_entry_point): Remove.
11986         (add_high_low_attributes): Use inlined_function_outer_scope_p.
11987         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
11988         code.
11989         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
11990         * gimplify.c (gimplify_expr): Gimplify body blocks.
11991         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
11992         block with multiple subblocks.
11993         (dump_scope_block): Prettier output; dump more flags and info.
11994         (dump_scope_blocks): New.
11995         (remove_unused_locals): Use dump_scope_blocks.
11996         * tree-flow.h (dump_scope_blocks): Declare.
11997         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
11998         * stmt.c (is_body_block): Remove.
11999         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
12000         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
12001
12002 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
12003
12004         PR middle-end/39308
12005         * graphite.c (graphite_loop_normal_form): Do not call
12006         number_of_iterations_exit from a gcc_assert.
12007
12008 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
12009
12010         * config/s390/s390.c (s390_swap_cmp): Look for conditional
12011         jumps if COND is NULL.
12012         (find_cond_jump): New function.
12013         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
12014         * config/s390/s390.md: Remove z10_cobra attribute value.
12015
12016 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
12017
12018         * config/alpha/alpha.h (alpha_expand_mov): Return false if
12019         force_const_mem returns NULL_RTX.
12020
12021 2009-02-26  Jan Hubicka  <jh@suse.cz>
12022
12023         PR debug/39267
12024         * cgraph.h (varpool_output_debug_info): Remove.
12025         * cgraphunit.c (varpool_output_debug_info): Remove.
12026         * dwarf2out.c (deferred_locations_struct): New struct
12027         (deferred_locations): New type.
12028         (deferred_locations_list): New static var.
12029         (deffer_location): New function.
12030         (gen_variable_die): Use it.
12031         (decls_for_scope): Output info on local static vars.
12032         (dwarf2out_finish): Process deferred locations.
12033         * varpool.c (varpool_output_debug_info): Remove.
12034
12035 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
12036
12037         PR rtl-optimization/39241
12038         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
12039         to subreg_offset_representable_p.
12040
12041 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
12042
12043         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
12044         execute function prototype.  Get f and nregs from max_reg_num
12045         and get_insns.  Remove the first backward pass as it's dead,
12046         guard the forward pass by flag_expensive_optimizations.
12047         (rest_of_handle_regmove): Delete.
12048         (pass_regmove): Replace it with regmove_optimize.
12049
12050 2009-02-25  Martin Jambor  <mjambor@suse.cz>
12051
12052         PR tree-optimization/39259
12053         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
12054         calls_alloca function flags.
12055         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
12056         calls are detected.
12057
12058 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
12059
12060         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
12061         flags_set_1_rtx, flags_set_1_set): Delete.
12062         (regmove_optimize): Do not call mark_flags_life_zones.
12063
12064 2009-02-24  Julian Brown  <julian@codesourcery.com>
12065
12066         PR target/35965
12067         * config/arm/arm.c (require_pic_register): Only set
12068         cfun->machine->pic_reg once per function.
12069
12070 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
12071
12072         * doc/invoke.texi (Link Options): Document an easier way to pass
12073         options that take arguments to the GNU linker using -Xlinker and -Wl.
12074
12075 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
12076
12077         PR target/33785
12078         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
12079
12080 2009-02-24  Richard Guenther  <rguenther@suse.de>
12081
12082         PR debug/39285
12083         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
12084
12085 2009-02-24  Richard Guenther  <rguenther@suse.de>
12086             Zdenek Dvorak  <ook@ucw.cz>
12087
12088         PR tree-optimization/39233
12089         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
12090         from converting them to a generic type.
12091
12092 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
12093
12094         PR tree-optimization/39260
12095         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
12096         contains a condition with a real type.
12097         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
12098
12099 2009-02-23  Jason Merrill  <jason@redhat.com>
12100
12101         PR c++/38880
12102         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
12103         narrowing_initializer_constant_valid_p.
12104         (narrowing_initializer_constant_valid_p): Don't return
12105         null_pointer_node for adding a pointer to itself.
12106
12107 2009-02-23  Jan Hubicka  <jh@suse.cz>
12108
12109         PR c/12245
12110         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
12111         resizing.
12112
12113 2009-02-23  Jan Hubicka  <jh@suse.cz>
12114
12115         PR tree-optimization/37709
12116         * tree.c (block_ultimate_origin): Move here from dwarf2out.
12117         * tree.h (block_ultimate_origin): Declare.
12118         * dwarf2out.c (block_ultimate_origin): Move to tree.c
12119         * tree-ssa-live.c (remove_unused_scope_block_p):
12120         Eliminate blocks containig no instructions nor live variables nor
12121         nested blocks.
12122         (dump_scope_block): New function.
12123         (remove_unused_locals): Enable removal of dead blocks by default;
12124         enable dumping at TDF_DETAILS.
12125
12126 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12127
12128         * config/i386/i386.c (classify_argument): Don't allow COImode
12129         and OImode.
12130         (function_arg_advance_32): Don't allow OImode.
12131         (function_arg_32): Likewise.
12132         (function_value_32): Likewise.
12133         (return_in_memory_32): Likewise.
12134         (function_arg_64): Remove OImode comment.
12135
12136 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12137
12138         PR target/39261
12139         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
12140         ix86_expand_vector_set for V4DImode in 64bit mode only.
12141         (ix86_expand_vector_init_one_var): Likewise.
12142
12143 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
12144
12145         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
12146
12147 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
12148
12149         PR bootstrap/39257
12150         * loop-iv.c: Revert last change.
12151         * emit-rtl.c: Likewise.
12152
12153 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
12154
12155         PR target/39256
12156         * config/i386/i386.c (type_natural_mode): Remove an extra
12157         space in the warning message.
12158         (function_value_32): Handle 32-byte vector modes.
12159         (return_in_memory_32): Likewise.
12160
12161 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
12162
12163         * loop-iv.c (truncate_value): New function.
12164         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
12165         of lowpart_subreg.
12166         (lowpart_subreg): Move to...
12167         * emit-rtl.c: ...here.
12168
12169 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
12170
12171         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
12172         accidental and undocumented change at revision 140860.
12173
12174 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
12175
12176         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
12177         take gimple_seq * arguments.
12178         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
12179         types_compatible_p langhook.
12180
12181 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
12182             Joseph Myers  <joseph@codesourcery.com>
12183
12184         * config/arm/arm.c (arm_builtin_va_list): New function.
12185         (arm_expand_builtin_va_start): Likewise.
12186         (arm_gimplify_va_arg_expr): Likewise.
12187         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
12188         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
12189         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
12190         (va_list_type): New variable.
12191         (arm_mangle_type): Mangle va_list_type appropriately.
12192
12193 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
12194
12195         PR middle-end/39157
12196         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
12197         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
12198         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
12199         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
12200         parameter to 1000 for -O1 by default.
12201         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
12202         parameter.
12203         * loop-invariant.c: Include params.h.
12204         (move_loop_invariants): Don't call move_single_loop_invariants on
12205         very large loops.
12206
12207 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
12208
12209         * calls.c (emit_library_call_value_1): Use slot_offset instead of
12210         offset when calculating bounds for indexing stack_usage_map.  Fixes
12211         a buffer overflow with certain target setups.
12212
12213 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
12214
12215         PR target/39240
12216         * calls.c (expand_call): Clear try_tail_call if caller and callee
12217         disagree in promotion of function return value.
12218
12219 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
12220
12221         PR target/39175
12222         * c-common.c (c_determine_visibility): If visibility changed and
12223         DECL_RTL has been already set, call make_decl_rtl to update symbol
12224         flags.
12225
12226 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
12227
12228         PR c++/39188
12229         * varasm.c (assemble_variable): Don't check DECL_NAME when
12230         globalizing a variable.
12231
12232 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
12233
12234         PR c/38483
12235         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
12236         expression before any __builtin_trap call.
12237         * c-typeck.c (build_function_call): Convert and check function
12238         arguments before generating a call to a trap.  Evaluate the
12239         function arguments before the trap.
12240
12241 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
12242
12243         PR target/39228
12244         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
12245         (UNSPEC_FXAM_MEM): New unspec.
12246         (fxam<mode>2_i387_with_temp): New insn and split pattern.
12247         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
12248         memory using fxam<mode>2_i387_with_temp to remove excess precision.
12249
12250 2009-02-19  Richard Guenther  <rguenther@suse.de>
12251
12252         PR tree-optimization/39207
12253         PR tree-optimization/39074
12254         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
12255         storedanything_tree): New.
12256         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
12257         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
12258         (build_succ_graph): Add edges from STOREDANYTHING to all
12259         non-direct nodes.
12260         (init_base_vars): Initialize STOREDANYTHING.
12261         (compute_points_to_sets): Free substitution info after
12262         building the succ graph.
12263         (ipa_pta_execute): Likewise.
12264
12265         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
12266         field.
12267         (do_ds_constraint): Do not add to special var or non-pointer
12268         field solutions.
12269         (type_could_have_pointers): Split out from ...
12270         (could_have_pointers): ... here.  For arrays use the element type.
12271         (create_variable_info_for): Initialize may_have_pointers.
12272         (new_var_info): Likewise.
12273         (handle_lhs_call): Make the HEAP variable unknown-sized.
12274         (intra_create_variable_infos): Use a type with pointers for
12275         PARM_NOALIAS, make it unknown-sized.
12276
12277 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
12278
12279         PR target/39224
12280         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
12281
12282 2009-02-18  Jason Merrill  <jason@redhat.com>
12283
12284         PR target/39179
12285         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
12286         value if DECL_EXTERNAL.
12287         * tree-sra.c (sra_walk_gimple_assign): Likewise.
12288         * target.h (gcc_target::binds_local_p): Clarify "module".
12289         * tree.h (TREE_PUBLIC): Clarify "module".
12290
12291 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
12292
12293         PR target/38891
12294         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
12295         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
12296
12297 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
12298
12299         PR target/39082
12300         * c.opt (Wabi): Support C and ObjC.
12301         (Wpsabi): New.
12302
12303         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
12304
12305         * config/i386/i386.c (classify_argument): Warn once about the ABI
12306         change when passing union with long double.
12307
12308         * doc/invoke.texi: Update -Wabi for warning psABI changes.
12309
12310 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
12311
12312         PR c/35447
12313         * c-parser.c (c_parser_compound_statement): Always enter and leave
12314         a scope.
12315
12316 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12317
12318         PR target/34587
12319         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
12320
12321 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
12322
12323         PR tree-optimization/36922
12324         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
12325         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
12326         Likewise.
12327
12328 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12329
12330         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
12331         to 0 for EABI64.
12332
12333 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12334
12335         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
12336
12337 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
12338
12339         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
12340         tree sharing.
12341
12342 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
12343             Richard Sandiford  <rdsandiford@googlemail.com>
12344
12345         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
12346         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
12347         (loongson_biadd): ...this.
12348
12349 2009-02-17  Richard Guenther  <rguenther@suse.de>
12350
12351         PR tree-optimization/39202
12352         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
12353         a var make sure to follow existing collapses.
12354
12355 2009-02-17  Richard Guenther  <rguenther@suse.de>
12356
12357         PR middle-end/39214
12358         * langhooks.c (lhd_print_error_function): Check for NULL block.
12359
12360 2009-02-17  Richard Guenther  <rguenther@suse.de>
12361
12362         PR tree-optimization/39204
12363         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
12364         of the PHI arg.
12365
12366 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
12367
12368         * config/soft-fp/double.h: Update from glibc CVS.
12369
12370 2009-02-17  Richard Guenther  <rguenther@suse.de>
12371
12372         PR tree-optimization/39207
12373         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
12374         strict-aliasing warnings for pointers pointing to NULL.
12375
12376 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
12377
12378         PR c/35446
12379         * c-parser.c (c_parser_braced_init): Call pop_init_level when
12380         skipping until next close brace.
12381
12382 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
12383
12384         PR target/37049
12385         * config/i386/i386.c (ix86_expand_push): Set memory alignment
12386         to function argument boundary.
12387
12388 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
12389
12390         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
12391         in the lea_add. Reload eventually constraints it properly.
12392         * config/picochip/constraints.md: Remove the target constraint
12393         "b", since it is not needed anymore.
12394
12395 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
12396
12397         * gthr-dce.h: Uglify function parameter and local variable names.
12398         * gthr-gnat.h: Likewise.
12399         * gthr-mipssde.h: Likewise.
12400         * gthr-nks.h: Likewise.
12401         * gthr-posix95.h: Likewise.
12402         * gthr-posix.h: Likewise.
12403         * gthr-rtems.h: Likewise.
12404         * gthr-single.h: Likewise.
12405         * gthr-solaris.h: Likewise.
12406         * gthr-tpf.h: Likewise.
12407         * gthr-vxworks.h: Likewise.
12408         * gthr-win32.h: Likewise.
12409
12410 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
12411
12412         PR target/39196
12413         * config/i386/i386.md: Restrict the new peephole2 to move
12414         between MMX/SSE registers.
12415
12416 2009-02-15  Richard Guenther  <rguenther@suse.de>
12417
12418         Revert
12419         2009-02-13  Richard Guenther  <rguenther@suse.de>
12420
12421         * configure.ac: Enable LFS.
12422         * configure: Re-generate.
12423         * config.in: Likewise.
12424
12425 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12426
12427         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
12428         spu_srqwbyte, spu_srqwbytebc): Define.
12429         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
12430         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
12431         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
12432         "shrqby_<mode>"): New insn-and-split patterns.
12433         * config/spu/spu.c (expand_builtin_args): Determine and return
12434         number of operands using spu_builtin_description data.
12435         (spu_expand_builtin_1): Use it.
12436
12437 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
12438
12439         PR target/38056
12440         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
12441         TARGET_CONST_GP.
12442
12443 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12444
12445         PR target/39149
12446         * config/i386/i386.c (override_options): Correct warning
12447         messages for -malign-loops, -malign-jumps and -malign-functions.
12448
12449 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12450
12451         PR target/39152
12452         * config/i386/i386.md: Restrict the new peephole2 to move
12453         between the general purpose registers.
12454
12455 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12456
12457         PR target/39162
12458         * config/i386/i386.c (type_natural_mode): Add a new argument.
12459         Return the original mode and warn ABI change if vector size is 32byte.
12460         (function_arg_advance): Updated.
12461         (function_arg): Likewise.
12462         (ix86_function_value): Likewise.
12463         (ix86_return_in_memory): Likewise.
12464         (ix86_sol10_return_in_memory): Likewise.
12465         (ix86_gimplify_va_arg): Likewise.
12466         (function_arg_32): Don't warn ABX ABI change here.
12467         (function_arg_64): Likewise.
12468
12469 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
12470
12471         * loop-iv.c (implies_p): In the final case, test that operands 0
12472         of the two comparisons match.
12473
12474         * config/bfin/bfin.c (find_prev_insn_start): New function.
12475         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
12476         (find_next_insn_start): Move.
12477
12478 2009-02-13  Richard Guenther  <rguenther@suse.de>
12479
12480         * configure.ac: Enable LFS.
12481         * configure: Re-generate.
12482         * config.in: Likewise.
12483
12484 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
12485
12486         PR c/35444
12487         * c-parser.c (c_parser_parms_list_declarator): Discard pending
12488         sizes on syntax error after some arguments have been parsed.
12489
12490 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12491
12492         * doc/invoke.texi (-fira): Remove.
12493
12494 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12495
12496         * caller-save.c: Replace regclass.c with reginfo.c in comments.
12497         * recog.c: Likewise.
12498         * rtl.h: Likewise.
12499
12500 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
12501
12502         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
12503         (umul_ppmm): Likewise.
12504         (count_leading_zeros): Likewise.
12505         (count_trailing_zeros): Likewise.
12506         (UMUL_TIME): Likewise.
12507
12508 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12509
12510         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
12511         soft-fp/t-softfp to tmake_file.
12512
12513         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
12514         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
12515         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
12516         IA64_BUILTIN_INFQ]: New.
12517         (ia64_init_builtins): Initialize __builtin_infq,
12518         __builtin_fabsq and __builtin_copysignq if not HPUX.
12519         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
12520         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
12521
12522         * config/ia64/lib1funcs.asm (__divtf3): Define only if
12523         SHARED is defined.
12524         (__fixtfti): Likewise.
12525         (__fixunstfti): Likewise.
12526         (__floattitf): Likewise.
12527
12528         * config/ia64/libgcc-glibc.ver: New.
12529         * config/ia64/t-fprules-softfp: Likewise.
12530         * config/ia64/sfp-machine.h: Likewise.
12531
12532         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
12533         (LIBGCC2_TF_CEXT): Likewise.
12534         (TF_SIZE): Likewise.
12535         (TARGET_INIT_LIBFUNCS): Likewise.
12536
12537         * config/ia64/t-glibc (SHLINB_MAPFILES):
12538         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
12539
12540 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12541
12542         * config/i386/i386.c (construct_container): Rewrite processing
12543         BLKmode with X86_64_SSE_CLASS.
12544
12545 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
12546
12547         PR target/39152
12548         * config/i386/i386.md: Replace simplify_replace_rtx with
12549         replace_rtx in the new peephole2.
12550
12551 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
12552
12553         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
12554         loop unrolling do not happen at -O2.
12555
12556 2009-02-12  Michael Matz  <matz@suse.de>
12557
12558         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
12559
12560 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12561
12562         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
12563         for -g3.
12564
12565 2009-02-12  Ben Elliston  <bje@au.ibm.com>
12566
12567         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
12568         patterns when updating the back chain.  Missed in the 2009-02-10
12569         change.
12570
12571 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
12572
12573         * doc/extend.texi (Decimal Floating Types): Update identifier of
12574         draft TR and list of missing support.
12575
12576 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
12577
12578         PR middle-end/39154
12579         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
12580         bit to variable length decl's flags, add it also to its
12581         pointer replacement variable.
12582
12583 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
12584             Jakub Jelinek  <jakub@redhat.com>
12585
12586         PR target/39118
12587         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
12588         (memory_blockage): New expander.
12589         (*memory_blockage): New insn pattern.
12590         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
12591         instead of general blockage at the end of function prologue when
12592         frame pointer is used to access red zone area.  Do not emit blockage
12593         when profiling, it is emitted in generic code.
12594         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
12595         function epilogue when frame pointer is used to access red zone area.
12596
12597 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
12598
12599         PR target/38824
12600         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
12601         by arithmetic with memory operands.
12602         * config/i386/predicates.md (commutative_operator): New.
12603
12604 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
12605
12606         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
12607         bulleted lists.
12608
12609 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
12610
12611         * alias.h (record_alias_subset): Declare.
12612         * alias.c (record_alias_subset): Make global.
12613
12614 2009-02-10  Nick Clifton  <nickc@redhat.com>
12615
12616         * tree-parloops.c: Change license to GPLv3.
12617         * ipa-struct-reorg.c: Change license to GPLv3.
12618         * ipa-struct-reorg.h: Change license to GPLv3.
12619
12620 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
12621
12622         PR c/39084
12623         * c-decl.c (start_struct): Return NULL on error.
12624
12625 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
12626
12627         PR middle-end/39124
12628         * cfgloopmanip.c (remove_path): Call remove_bbs after
12629         cancel_loop_tree, not before it.
12630
12631         PR target/39139
12632         * function.h (struct function): Add has_local_explicit_reg_vars bit.
12633         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
12634         VAR_DECLs were seen.
12635         * tree-ssa-live.c (remove_unused_locals): Recompute
12636         cfun->has_local_explicit_reg_vars.
12637         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
12638         copies or clearings if cfun->has_local_explicit_reg_vars.
12639
12640 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
12641
12642         PR target/39118
12643         * config/i386/i386.c (expand_prologue): Emit blockage at the end
12644         of function prologue when frame pointer is used to access
12645         red zone area.
12646
12647 2009-02-10  Richard Guenther  <rguenther@suse.de>
12648
12649         PR middle-end/39127
12650         * gimplify.c (gimple_regimplify_operands): Always look if
12651         we need to create a temporary.
12652
12653 2009-02-10  Richard Guenther  <rguenther@suse.de>
12654
12655         PR tree-optimization/39132
12656         * tree-loop-distribution.c (todo): New global var.
12657         (generate_memset_zero): Trigger TODO_rebuild_alias.
12658         (tree_loop_distribution): Return todo.
12659
12660 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
12661
12662         PR target/39119
12663         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
12664         (x86_64_reg_class_name): Removed.
12665         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
12666         first one isn't X86_64_SSE_CLASS or any other ones aren't
12667         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
12668         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
12669         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
12670         and 3 X86_64_SSEUP_CLASS.
12671         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
12672         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
12673
12674 2009-02-10  Ben Elliston  <bje@au.ibm.com>
12675
12676         * config/rs6000/rs6000.md (allocate_stack): Always use an update
12677         form instruction to update the stack back chain word, even if the
12678         user has disabled the generation of update instructions.
12679         (movdi_<mode>_update_stack): New.
12680         (movsi_update_stack): Likewise.
12681         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
12682         always use an update form instruction to update the stack back
12683         chain word.
12684
12685 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
12686
12687         PR middle-end/38953
12688         * graphite.c (if_region_set_false_region): After moving a region in
12689         the false branch of a condition, remove the empty dummy basic block.
12690         (gloog): Remove wrong fix for PR38953.
12691
12692 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12693
12694         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
12695         generation due to implicit sign extension.
12696
12697 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12698
12699         PR middle-end/38981
12700         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
12701         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
12702
12703 2009-02-09  Richard Guenther  <rguenther@suse.de>
12704
12705         PR middle-end/35202
12706         * convert.c (convert_to_real): Disable (float)fn((double)x)
12707         to fnf(x) conversion if errno differences may occur and
12708         -fmath-errno is set.
12709
12710 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
12711
12712         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
12713         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12714         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12715
12716 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12717
12718         PR c/35434
12719         * c-common.c (handle_alias_attribute): Disallow attribute for
12720         anything not a FUNCTION_DECL or VAR_DECL.
12721
12722 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
12723
12724         PR c/39035
12725         * real.c (do_compare): Special-case compare of zero against
12726         decimal float value.
12727
12728 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12729
12730         PR c/36432
12731         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
12732         as indicating flexible array members unless the field itself is
12733         being declarared as the incomplete array.
12734
12735 2009-02-06  Jan Hubicka  <jh@suse.cz>
12736
12737         PR tree-optimization/38844
12738         * ipa-inline.c (try_inline): Stop inlining recursion when edge
12739         is already inlined.
12740
12741 2009-02-06  Richard Guenther  <rguenther@suse.de>
12742
12743         PR middle-end/38977
12744         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
12745         fork because we may expand it as __gcov_fork.
12746
12747 2009-02-06  Nick Clifton  <nickc@redhat.com>
12748
12749         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
12750
12751 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
12752
12753         PR tree-optimization/35659
12754         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
12755         vn_phi_eq): Shortcut if hashcode does not match.
12756         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
12757         NULL operands.
12758         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
12759         and avoid iterative_hash_expr.
12760         (FOR_EACH_VALUE_ID_IN_SET): New.
12761         (value_id_compare): Remove.
12762         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
12763         sort expressions by value id.
12764
12765 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
12766
12767         PR target/38991
12768         * config/sh/predicates.md (general_movsrc_operand): Don't check
12769         the subreg of system registers here.
12770
12771 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
12772
12773         PR c++/39106
12774         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
12775         on the copied decl.
12776
12777 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
12778
12779         PR rtl-optimization/39110
12780         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
12781         addresses, not aligned ones.
12782
12783 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
12784             Richard Guenther  <rguenther@suse.de>
12785
12786         PR tree-optimization/39100
12787         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
12788         comment says and add edges.
12789
12790 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
12791
12792         PR c/35435
12793         * c-common.c (handle_tls_model_attribute): Ignore attribute for
12794         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
12795
12796 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
12797
12798         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
12799         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
12800         register_bb_in_sese, new_sese, free_sese): Moved.
12801         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
12802         outermost_loop_in_scop, build_scop_iteration_domain,
12803         expand_scalar_variables_ssa_name, get_vdef_before_scop,
12804         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
12805         Use loop_in_sese_p instead of loop_in_scop_p.
12806         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
12807         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
12808         (scopdet_basic_block_info): Fix bug in scop detection.
12809         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
12810         eq_loop_to_cloog_loop): Remove.
12811         (nb_loops_around_loop_in_scop, nb_loop
12812         ref_nb_loops): Moved here...
12813         * graphite.h (ref_nb_loops): ... from here.
12814         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
12815         (loop_domain_dim, loop_iteration_vector_dim): Remove.
12816         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
12817         * testsuite/gcc.dg/graphite/scop-19.c: New
12818
12819 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
12820             Hans-Peter Nilsson  <hp@axis.com>
12821
12822         PR rtl-optimization/37889
12823         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
12824         Move offset handling from PLUS to before the switch.  Use new
12825         arguments when considering SYMBOL_REFs too.
12826         (rtx_addr_can_trap_p): Pass dummy offset and size.
12827         (enum may_trap_p_flags): Remove.
12828         (may_trap_p_1): Pass size from MEM_SIZE.
12829
12830         PR rtl-optimization/38921
12831         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
12832         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
12833         * rtlanal.c (may_trap_after_code_motion_p): Delete.
12834         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
12835
12836 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
12837
12838         AVX Programming Reference (January, 2009)
12839         * config/i386/sse.md (*vpclmulqdq): New.
12840
12841 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
12842
12843         PR tree-optimization/38977
12844         PR gcov-profile/38292
12845         * calls.c (special_function_p): Disregard __builtin_ prefix.
12846
12847 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
12848
12849         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
12850         non-indexable addresses even before reload.
12851
12852 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12853
12854         PR c/29129
12855         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
12856         as having variable size.  Do not give an error for unnamed
12857         parameters with [*] declarators.  Give a warning for type names
12858         with [*] declarators and mark them as variable size.
12859         * c-parser.c (c_parser_sizeof_expression): Do not give an error
12860         for sizeof applied to [*] type names.
12861
12862 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12863
12864         PR C++/36607
12865         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
12866
12867 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12868
12869         * gcc.c (process_command): Update copyright notice dates.
12870         * gcov.c (print_version): Likewise.
12871         * gcov-dump.c (print_version): Likewise.
12872         * mips-tfile.c (main): Likewise.
12873         * mips-tdump.c (main): Likewise.
12874
12875 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12876
12877         PR c/35433
12878         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
12879         for composite type involving a zero-length array type.
12880
12881 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12882
12883         PR target/35318
12884         * function.c (match_asm_constraints_1): Skip over
12885         initial optional % in the constraint.
12886
12887         PR inline-asm/39059
12888         * c-parser.c (c_parser_postfix_expression): If fixed point is not
12889         supported, don't accept FIXED_CSTs.
12890         * c-decl.c (finish_declspecs): Error if fixed point is not supported
12891         and _Sat is used without _Fract/_Accum.  Set specs->type to
12892         integer_type_node for cts_fract/cts_accum if fixed point is not
12893         supported.
12894
12895 2009-02-02  Catherine Moore  <clm@codesourcery.com>
12896
12897         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
12898
12899 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
12900
12901         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
12902         (ABI_HAS_64BIT_SYMBOLS): Use it.
12903         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
12904
12905 2009-02-02  Paul Brook  <paul@codesourcery.com>
12906
12907         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
12908
12909 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
12910
12911         PR inline-asm/39058
12912         * recog.h (asm_operand_ok): Add constraints argument.
12913         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
12914         recurse on matching constraint.
12915         (check_asm_operands): Pass constraints as 3rd argument to
12916         asm_operand_ok.  Don't look up matching constraint here.
12917         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
12918         to asm_operand_ok.
12919
12920 2009-02-02  Ben Elliston  <bje@au.ibm.com>
12921
12922         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
12923         TARGET_NARROW_VOLATILE_BITFIELD macro names.
12924
12925 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12926
12927         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
12928         information.  Remove some obsolete information.  Reorganize.
12929
12930         * config/pa/fptr.c: Revert license to GPL 2.
12931         * config/pa/milli64.S: Likewise.
12932
12933 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12934
12935         PR target/38904
12936         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
12937         LIBRARY name in, instead of hard-coding it.
12938         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
12939         extra target make frag to tmake_files according to EH model.
12940         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
12941         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
12942         frags that define makefile variable EH_MODEL appropriately.
12943         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
12944         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
12945         to "-sjlj" according to type of EH configured.
12946         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12947         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
12948         to "_sjlj" according to type of EH configured.
12949         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12950         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
12951         (SHLIB_LINK):  Add missing semicolon to if-else construct.
12952         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12953         string value of "pe_dll" command-line option.
12954         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
12955         (SHLIB_SONAME):  Use it when overriding t-cygming default.
12956         (SHLIB_IMPLIB):  Override t-cygming default.
12957         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12958         string value of "pe_dll" command-line option.
12959
12960 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12961
12962         PR target/38952
12963         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
12964         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
12965
12966 2009-01-31  Richard Guenther  <rguenther@suse.de>
12967
12968         PR tree-optimization/38937
12969         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
12970         computing the transitive closure.
12971
12972 2009-01-30  Richard Guenther  <rguenther@suse.de>
12973
12974         PR tree-optimization/39041
12975         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
12976         Propagate variable indices only if the types match for this stmt.
12977
12978 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
12979
12980         PR target/39013
12981         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
12982         inline but never defined.
12983
12984 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
12985
12986         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
12987         (*insv_h_di_reg_extimm): New insn.
12988         (*insv_l<mode>_reg_extimm): New insn.
12989
12990 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12991
12992         * config/picochip/picochip.c (flag_conserve_stack): set
12993         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
12994         fconserve-stack. Reduce call-overhead used by inliner.
12995
12996 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12997
12998         PR/38157
12999         * common.opt (flag_conserve_stack): Initialised to zero.
13000
13001 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
13002
13003         PR/39002
13004         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
13005         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
13006         method.
13007
13008 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
13009
13010         * ira-color.c (allocno_reload_assign): Update comments.
13011         * regmove.c (regmove_optimize): Likewise.
13012
13013         * ra.h: Removed.
13014
13015 2009-01-29  Robert Millan  <rmh@aybabtu.com>
13016
13017         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
13018         * config/i386/kopensolaris-gnu.h: New file.  Undefine
13019         `MD_UNWIND_SUPPORT'.
13020         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
13021
13022 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
13023
13024         PR tree-optimization/39007
13025         * tree-loop-distribution.c (generate_builtin): Use
13026         recompute_dominator to compute the immediate dominator of the
13027         basic block just after the loop.
13028
13029 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13030
13031         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
13032         (ASM_OUTPUT_DWARF_PCREL): Define.
13033
13034 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
13035
13036         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
13037         * doc/passes.texi: Remove entries about regclass, local-alloc, and
13038         global.  Modify entries about regmove and IRA.
13039
13040         * ra-conflict.c: Remove the file.
13041
13042         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
13043
13044         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
13045         (pass_regclass_init): Rename to pass_reginfo_init.
13046
13047         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
13048
13049         * toplev.h (flag_ira): Remove.
13050
13051         * caller-save.c (setup_save_areas): Remove flag_ira.
13052
13053         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
13054
13055         * global.c: Remove the file.
13056
13057         * opts.c (decode_options): Remove flag_ira.
13058
13059         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
13060
13061         * regmove.c: Modify file description.
13062         (find_use_as_address, try_auto_increment): Define them only if
13063         AUTO_INC_DEC is defined.
13064         (replacement_quality, replace_in_call_usage, fixup_match_1,
13065         stable_and_no_regs_but_for_p): Remove.
13066         (reg_set_in_bb): Make it static.
13067         (regmove_optimize): Remove flag_ira and code which worked for
13068         !flag_ira.
13069
13070         * local-alloc.c: Remove the file.
13071
13072         * common.opt (fira): Remove.
13073
13074         * ira.c: Include except.h.
13075         (eliminable_regset): Move from global.c.
13076         (mark_elimination): Ditto.  Remove flag_ira.
13077         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
13078         equiv_mem_modified, validate_equiv_mem_from_store,
13079         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
13080         contains_replace_regs, memref_referenced_p, memref_used_between_p,
13081         no_equiv, recorded_label_ref): Move from local-alloc.c.
13082         (update_equiv_regs): Ditto.  Make it static.
13083         (print_insn_chain, print_insn_chains): Move it from global.c.
13084         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
13085         (build_insn_chain): Ditto.  Make it static.
13086         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
13087         Rename to init_live_subregs.
13088         (gate_ira): Remove flag_ira.
13089
13090         * regclass.c: Rename reginfo.c.  Change file description.
13091         (FORBIDDEN_INC_DEC_CLASSES): Remove.
13092         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
13093         (init_reg_sets_1): Remove code for evaluation of
13094         reg_class_superclasses and losing_caller_save_reg_set.
13095         (init_regs): Remove init_reg_autoinc.
13096         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
13097         ok_for_base_p_nonstrict): Remove.
13098         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
13099         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
13100         corresponding entries.
13101         (dump_regclass, record_operand_costs, scan_one_insn,
13102         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
13103         record_address_regs, auto_inc_dec_reg_p): Remove.
13104         (gt-regclass.h): Rename to gt-reginfo.h.
13105
13106         * rtl.h (dump_global_regs, retry_global_alloc,
13107         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
13108
13109         * Makefile.in (RA_H): Remove.
13110         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
13111         Rename regclass.o to reginfo.o.
13112         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
13113         gt-reginfo.h.
13114         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
13115         (GTFILES): Rename regclass.c to reginfo.c.
13116
13117         * passes.c (init_optimization_passes): Remove pass_local_alloc and
13118         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
13119
13120         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
13121         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
13122         Remove flag_ira.
13123         (finish_spills): Ditto.  Remove code for !flag_ira.
13124
13125 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
13126
13127         PR middle-end/35854
13128         * doc/invoke.texi (rtl debug options): Complete rewrite.
13129         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
13130         to auto_inc_dec".
13131         * mode-switching.c (pass_mode_switching): Rename pass from
13132         "mode-sw" to "mode_sw".
13133         * except.c (pass_convert_to_eh_ranges): Rename pass from
13134         "eh-ranges" to "eh_ranges".
13135         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
13136         to "subreg1".
13137
13138
13139 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
13140             Alexander Monakov  <amonakov@ispras.ru>
13141
13142         PR middle-end/38857
13143         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
13144         register.
13145         (move_exprs_to_boundary): Change return type and pass through
13146         should_move from move_op.  Relax assert.  Update usage ...
13147         (schedule_expr_on_boundary): ... here.  Use should_move instead of
13148         cant_move.
13149         (move_op_orig_expr_found): Indicate that insn was disconnected from
13150         stream.
13151         (code_motion_process_successors): Do not call after_merge_succs
13152         callback if original expression was not found when traversing any of
13153         the branches.
13154         (code_motion_path_driver): Change return type.  Update prototype.
13155         (move_op): Update comment.  Add a new parameter (should_move).  Update
13156         prototype.  Set *should_move based on indication provided by
13157         move_op_orig_expr_found.
13158
13159 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
13160
13161         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
13162         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
13163         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
13164         * config/rs6000/rs6000.c (rs6000_override_options): Default
13165         avoid-indexed-addresses on for Power6, off for everything else.
13166         (avoiding_indexed_address_p): New function.
13167         (rs6000_legitimize_address): Use it.
13168         (rs6000_legitimate_address): Likewise.
13169         * config/rs6000/rs6000.md (movXX_updateX): Likewise
13170
13171 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
13172
13173         PR tree-optimization/38997
13174         * tree-loop-distribution.c (generate_memset_zero): Use
13175         POINTER_PLUS_EXPR for a pointer addition.
13176
13177 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
13178
13179         * config/s390/s390.md (bswap<mode>2): New pattern added.
13180
13181 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13182
13183         * config/s390/s390.md (*tls_load_31): Added type attribute.
13184
13185 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13186
13187         * config/s390/s390.md: Fix a few comments.
13188
13189 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
13190
13191         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
13192         (*tm<mode>_full): Fixed z10prop attribute.
13193         (*tst<mode>_extimm): Fixed z10prop attribute.
13194         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
13195         (*tstqiCCT_cconly): Fixed z10prop attribute.
13196         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
13197         (*movsi_larl): Fixed z10prop attribute.
13198         (*movsi_zarch): Fixed z10prop attribute.
13199         (*movsi_eas): Fixed z10prop attribute.
13200         (*movhi): Fixed z10prop attribute.
13201         (*movqi): Fixed z10prop attribute.
13202         (*movstrictqi): Fixed z10prop attribute.
13203         (*mov<mode>): Fixed z10prop attribute.
13204         (*movcc): Fixed z10prop attribute.
13205         (*sethighpartdi_64): Fixed z10prop attribute.
13206         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
13207         (*negdi2_sign_cc): Fixed z10prop attribute.
13208         (*negdi2_sign): Fixed z10prop attribute.
13209         (*absdi2_sign_cc): Fixed z10prop attribute.
13210         (*absdi2_sign): Fixed z10prop attribute.
13211         (*negabsdi2_sign_cc): Fixed z10prop attribute.
13212         (*negabsdi2_sign): Fixed z10prop attribute.
13213         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
13214         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
13215         (doloop_si64): Fixed z10prop attribute.
13216         (doloop_si31): Fixed z10prop attribute.
13217         (doloop_long): Fixed z10prop attribute.
13218         (indirect_jump): Fixed z10prop attribute.
13219         (nop): Fixed z10prop attribute.
13220         (main_base_64): Fixed z10prop attribute.
13221         (reload_base_64): Fixed z10prop attribute.
13222
13223 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
13224
13225         PR rtl-optimization/38740
13226         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
13227         if !optimize.
13228         * config/mips/mips.c (mips_reorg): Likewise.
13229
13230 2009-01-28  Richard Guenther  <rguenther@suse.de>
13231
13232         PR tree-optimization/38926
13233         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
13234         with the correct value id to a value.
13235         (do_regular_insertion): Use the value number of edoubleprime
13236         for the value number of the expr.
13237
13238         Revert
13239         2008-08-21  Richard Guenther  <rguenther@suse.de>
13240
13241         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
13242         a PHI ask VN if it is already available.
13243         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
13244         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
13245
13246 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
13247
13248         PR middle-end/38934
13249         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
13250         set to varying whenever max has TREE_OVERFLOW set, similarly
13251         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
13252
13253 2009-01-28  Richard Guenther  <rguenther@suse.de>
13254
13255         PR middle-end/38908
13256         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
13257         uninitialized aggregate uses in call arguments.
13258
13259 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
13260
13261         PR tree-optimization/38984
13262         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
13263         the nothing_id variable if -fno-delete-null-pointer-checks.
13264
13265 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
13266
13267         PR target/38988
13268         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
13269         (set_got_offset_rex64): Ditto.
13270
13271 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
13272
13273         PR target/38941
13274         * doc/extend.texi: Improve local variable with asm reg.
13275
13276 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
13277
13278         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
13279         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
13280         was not supplied then set warn_packed_bitfield_compat to the
13281         default value of 1.
13282         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
13283         against 1.
13284
13285 2009-01-27  Richard Guenther  <rguenther@suse.de>
13286
13287         PR tree-optimization/38503
13288         * cfgexpand.c (expand_gimple_basic_block): Ignore
13289         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
13290         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
13291         variables that cannot have TBAA applied.
13292         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
13293         statements.
13294
13295 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
13296
13297         PR middle-end/38969
13298         * calls.c (initialize_argument_information): Do not wrap complex
13299         arguments in SAVE_EXPR.
13300
13301 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
13302
13303         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
13304         (INSTALL_LIBGCC): Revert typo commit.
13305
13306 2009-01-26  Richard Guenther  <rguenther@suse.de>
13307
13308         PR tree-optimization/38745
13309         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
13310         from special handling.
13311
13312 2009-01-26  Richard Guenther  <rguenther@suse.de>
13313
13314         PR tree-optimization/38745
13315         * tree-ssa.c (execute_update_addresses_taken): Do not include
13316         variables that cannot possibly be a register in not_reg_needs.
13317         Do not clear TREE_ADDRESSABLE on vars that may not become
13318         registers.
13319         * tree-ssa.c (update_alias_info_1): Include those in the set
13320         of addressable vars.
13321
13322 2009-01-26  Richard Guenther  <rguenther@suse.de>
13323
13324         PR middle-end/38851
13325         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
13326         * tree-ssa-dse.c: Include langhooks.h
13327         (execute_simple_dse): Remove stores with zero size.
13328
13329 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
13330
13331         PR c/38957
13332         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
13333         as PLUS_EXPR.
13334
13335 2009-01-24  Julian Brown  <julian@codesourcery.com>
13336
13337         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
13338         config/arm/linux-atomic.c.
13339         * config/arm/linux-atomic.c: New.
13340
13341 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
13342
13343         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
13344         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
13345         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
13346
13347 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
13348
13349         PR c/38938
13350         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
13351         properly.
13352
13353 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
13354
13355         PR tree-optimization/38953
13356         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
13357         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
13358         (gloog): Split the exit of the scop when the scop exit is a loop exit.
13359         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
13360         changed the CFG.
13361
13362 2009-01-24  Paul Brook  <paul@codesourcery.com>
13363
13364         * config/arm/neon.md (neon_type): Move to arm.md.
13365         (neon_mov<VSTRUCT>): Add neon_type attribute.
13366         * config/arm/arm.md (neon_type): Move to here.
13367         (conds): Add "unconditioal" and use as default for NEON insns.
13368
13369 2009-01-24  Ben Elliston  <bje@au.ibm.com>
13370
13371         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
13372         void *' warning from -Wc++-compat.
13373         * Makefile.in (dominance.o-warn): Remove.
13374
13375 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
13376
13377         PR tree-optimization/38932
13378         * fold-const.c (fold_unary_ignore_overflow): New.
13379         * tree.h (fold_unary_ignore_overflow): Declare.
13380         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
13381         * tree-ssa-sccvn.c (visit_reference_op_load,
13382         simplify_unary_expression): Likewise.
13383
13384 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
13385
13386         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
13387         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
13388         regardless of their type.
13389         * c-common.c (handle_packed_attribute): Don't ignore packed on
13390         bitfields.
13391         * c.opt (Wpacked-bitfield-compat): New warning option.
13392         * stor-layout.c (place_field): Warn if offset of a field changed.
13393         * doc/extend.texi (packed): Mention the ABI change.
13394         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
13395         (Warning Options): Add it to the list.
13396
13397 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
13398
13399         * c-opts.c (c_common_post_options): Fix a typo in comments.
13400
13401 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
13402
13403         PR middle-end/38615
13404         * gimplify.c (gimplify_init_constructor): Fix promotion of const
13405         variables to static.
13406         * doc/invoke.texi (-fmerge-all-constants): Update description.
13407
13408 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
13409
13410         PR target/38931
13411         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
13412         (*movdi_1_rex64): Use type "mmx" for alternative 5.
13413
13414 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
13415
13416         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
13417         a word boundary.
13418         (LOCAL_ALIGNMENT): Similarly.
13419
13420 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13421             Joseph Myers  <joseph@codesourcery.com>
13422
13423         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
13424         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
13425         * config/arm/arm-tune.md: Regenerate.
13426         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
13427         -march=iwmmxt2.
13428
13429 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13430
13431         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
13432         version number to five.
13433
13434 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13435
13436         PR c++/38930
13437         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
13438         * c-common.c (set_underlying_type): Likewise.
13439         (is_typedef_decl ): Likewise
13440         * tree.h: Likewise
13441         (set_underlying_type): Likewise.
13442         (is_typedef_type): Likewise.
13443
13444 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
13445
13446         PR middle-end/38587
13447         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
13448         crossing setjmps.
13449
13450 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
13451
13452         PR bootstrap/37660
13453         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
13454         (LIBGCC_SPEC):  Don't define.
13455         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
13456
13457 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
13458
13459         PR rtl-optimization/38879
13460         * alias.c (base_alias_check): Unaligned access via AND address can
13461         alias all surrounding object types except those with sizes equal
13462         or wider than the size of unaligned access.
13463
13464 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
13465
13466         PR c++/26693
13467         * c-decl.c (clone_underlying_type): Move this ...
13468         * c-common.c (set_underlying_type): ... here.
13469         Also, make sure the function properly sets TYPE_STUB_DECL() on
13470         the newly created typedef variant type.
13471         (is_typedef_decl ): New entry point.
13472         * tree.h: Added a new member member_types_needing_access_check to
13473         struct tree_decl_non_common.
13474         (set_underlying_type): New entry point.
13475         (is_typedef_type): Likewise.
13476
13477 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
13478
13479         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
13480         Check whether two instructions have memory references that
13481         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
13482         are helper functions for traversing.
13483         * alias.h (insn_alias_sets_confilict_p): New prototypes.
13484         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
13485         not to draw dependency edge for instructions with non-conflicting
13486         alias sets.
13487
13488 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
13489
13490         PR other/38758
13491         * longlong.h: Update copyright years.  Use soft-fp license notice.
13492         Sync __clz_tab declaration with glibc.
13493
13494 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
13495
13496         PR target/30687
13497         * doc/extend.texi (syscall_linkage): New.
13498         (version_id): Modify.
13499
13500 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13501             Richard Guenther  <rguenther@suse.de>
13502
13503         PR tree-optimization/38747
13504         PR tree-optimization/38748
13505         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
13506         conversion if the base address is an indirect reference and the
13507         aliasing sets could cause issues.
13508
13509 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13510
13511         * common.opt (fgraphite, fgraphite-identity): Add comment for
13512         explaining why these options are not documented.
13513
13514 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13515
13516         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
13517         gimple_call_lhs is NULL.
13518
13519 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
13520
13521         PR target/38868
13522         * emit-rtl.c (adjust_address_1): Make sure memref is never
13523         overwritten.
13524
13525 2009-01-20  Ben Elliston  <bje@au.ibm.com>
13526
13527         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13528         const qualifier from arg parameter. Remove unnecessary cast to char *.
13529         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13530         const qualifier from arg 2.
13531
13532 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
13533
13534         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
13535
13536 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
13537
13538         PR c/38869
13539         * rtl.h (reinit_regs): New prototype.
13540         * regclass.c: Include ira.h.
13541         (reinit_regs): New.
13542         * Makefile.in (regclass.o): Add ira.h.
13543         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
13544
13545 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
13546
13547         PR target/38736
13548         * c-common.c (handle_aligned_attribute): Use
13549         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
13550         default alignment value.
13551
13552         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
13553
13554         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
13555         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
13556
13557         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
13558         __BIGGEST_ALIGNMENT__.
13559
13560         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
13561
13562 2009-01-18  Richard Guenther  <rguenther@suse.de>
13563
13564         PR tree-optimization/38819
13565         * tree-flow.h (operation_could_trap_helper_p): Declare.
13566         * tree-eh.c (operation_could_trap_helper_p): Export.
13567         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
13568         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
13569         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
13570         are about to insert a possibly trapping instruction and fail
13571         in this case.
13572
13573 2009-01-18  Andreas Schwab  <schwab@suse.de>
13574
13575         * doc/install.texi (Configuration): Remove obsolete paragraph
13576         about use of --with-gnu-ld with --with-gnu-as.
13577
13578 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
13579
13580         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
13581         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
13582         Follow spelling conventions.
13583
13584 2009-01-18  Ben Elliston  <bje@au.ibm.com>
13585
13586         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
13587         C++ warning about implicit conversion from void * to struct
13588         bitmap_head_def *.
13589         (bitmap_obstack_free): Likewise for bitmap_element *.
13590         * Makefile.in (bitmap.o-warn): Remove.
13591
13592 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
13593
13594         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
13595
13596 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
13597             Tobias Grosser  <tobi.grosser@amd.com>
13598
13599         * graphite.c (graphite_trans_scop_block): Do not block single
13600         nested loops.
13601
13602 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
13603
13604         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
13605         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
13606         test with assertion.
13607
13608 2009-01-16  Richard Guenther  <rguenther@suse.de>
13609
13610         PR tree-optimization/38835
13611         PR middle-end/36227
13612         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
13613         and INT + PTR -> (INT)(PTR p+ INT) folding.
13614         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
13615
13616 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
13617
13618         PR target/38554
13619         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
13620         the subreg from a lowpart subreg if it is also casting the value.
13621
13622 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13623             Tobias Grosser  <tobi.grosser@amd.com>
13624
13625         * graphite.c (compare_prefix_loops): New.
13626         (build_scop_canonical_schedules): Rewritten.
13627         (graphite_transform_loops): Move build_scop_canonical_schedules
13628         after build_scop_iteration_domain.
13629
13630 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13631             Tobias Grosser  <tobi.grosser@amd.com>
13632
13633         * graphite.c (add_conditions_to_domain): Add the loops to
13634         the dimension of the iteration domain.  Do copy the domain
13635         only when it exists.
13636         (build_scop_conditions_1): Do not call add_conditions_to_domain.
13637         (add_conditions_to_constraints): New.
13638         (can_generate_code_stmt, can_generate_code): Removed.
13639         (gloog): Do not call can_generate_code.
13640         (graphite_transform_loops): Call add_conditions_to_constraints
13641         after building the iteration domain.
13642
13643 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
13644
13645         PR tree-optimization/38789
13646         * tree-ssa-threadedge.c
13647         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13648         __builtin_constant_p.
13649
13650 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
13651
13652         * dce.c (delete_unmarked_insns): Reversed the order that insns are
13653         examined before deleting them.
13654
13655 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
13656
13657         * function.c (aggregate_value_p): Correctly extract the function
13658         type from CALL_EXPR_FN lookup.
13659
13660 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13661
13662         * config/picochip/picochip.c (picochip_override_options): Revert
13663         CFI asm flag disable commited previously.
13664
13665 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
13666             Tobias Grosser  <tobi.grosser@amd.com>
13667             Jan Sjodin  <jan.sjodin@amd.com>
13668
13669         * graphite.c (scan_tree_for_params): On substractions negate
13670         all the coefficients of the term.
13671         (clast_to_gcc_expression_red): New.  Handle reduction expressions
13672         of more than two operands.
13673         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
13674         (get_vdef_before_scop): Handle also the case of default definitions.
13675
13676 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
13677
13678         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
13679         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
13680         Also use them when walking CALL_INSN_FUNCTION_USAGE.
13681
13682 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
13683             Joey Ye  <joey.ye@intel.com>
13684
13685         PR middle-end/37843
13686         * cfgexpand.c (expand_stack_alignment): Don't update stack
13687         boundary nor check incoming stack boundary here.
13688         (gimple_expand_cfg): Update stack boundary and check incoming
13689         stack boundary here.
13690
13691 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
13692
13693         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
13694
13695 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
13696
13697         PR rtl-optimization/38245
13698         * calls.c (expand_call): Add stack arguments to
13699         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13700         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
13701         in regs and partially in memory or BLKmode arguments.
13702         (emit_library_call_value_1): Add stack arguments to
13703         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13704         ACCUMULATE_OUTGOING_ARGS).
13705         * dce.c: Include tm_p.h.
13706         (find_call_stack_args): New function.
13707         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
13708         argument.
13709         (mark_insn): Call find_call_stack_args for CALL_Ps.
13710         (prescan_insns_for_dce): Walk insns backwards in bb rather than
13711         forwards.  Allocate and free arg_stores bitmap if needed, pass it
13712         down to deletable_insn_p, don't mark stores set in arg_stores
13713         bitmap, clear the bitmap at the beginning of each bb.
13714         * Makefile.in (dce.o): Depend on $(TM_P_H).
13715
13716 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
13717
13718         PR target/22599
13719         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
13720         to make sure the insn is a conditional test (bug 22599).  Reformat a
13721         few long lines.
13722
13723 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
13724
13725         PR middle-end/38431
13726         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
13727         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
13728         (gloog): Do not call cleanup_tree_cfg.
13729         (graphite_transform_loops): Call cleanup_tree_cfg after all
13730         scops have been code generated.
13731
13732 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
13733         * doc/gty.texi (Invoking the garbage collector): Added new node
13734         and section documenting ggc_collect.
13735
13736 2009-01-14  Richard Guenther  <rguenther@suse.de>
13737
13738         PR tree-optimization/38826
13739         PR middle-end/38477
13740         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
13741         initialization notes only if we actually emitted a warning.
13742         (intra_create_variable_infos): Add constraints for a result decl
13743         that is passed by hidden reference.
13744         (build_pred_graph): Mark all related variables non-direct on
13745         address-taking.
13746
13747 2009-01-14  Nick Clifton  <nickc@redhat.com>
13748
13749         * ira-conflicts.c: Include addresses.h for the definition of
13750         base_reg_class.
13751         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
13752         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
13753
13754 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
13755
13756         PR target/38811
13757         * Makefile.in (ira-lives.o): Add except.h.
13758
13759         * ira-lives.c: Include except.h.
13760         (process_bb_node_lives): Process can_throw_internal.
13761
13762 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
13763
13764         PR rtl-optimization/38774
13765         * combine.c (simplify_set): When undoing cc_use change, don't do
13766         PUT_CODE on the newly created comparison, but instead put back the
13767         old comparison.
13768
13769 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
13770
13771         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
13772         values.  Remove duplicate arm8 entry.
13773
13774 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13775
13776         PR tree-optimization/38786
13777         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
13778         the SSA_NAME case of expand_scalar_variables_expr.
13779         Set the type of an expression to the type of its assign statement.
13780         (expand_scalar_variables_expr): Also gather the scalar computation
13781         used to index the memory access.  Do not pass loop_p.
13782         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
13783         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
13784         the gimple_stmt_iterator where it inserts new code.
13785         Do not pass loop_p.
13786         (copy_bb_and_scalar_dependences): Do not pass loop_p.
13787         (translate_clast): Update call to copy_bb_and_scalar_dependences.
13788
13789 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13790
13791         * graphite.h (debug_value): Removed.
13792         * graphite.c (debug_value): Removed.
13793
13794 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13795
13796         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
13797         ldrd/strd with two 32-bit instructions.
13798
13799 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13800
13801         * config/arm/arm.c (struct processors): Pass for speed down into
13802         cost helper functions.
13803         (const_ok_for_op): Handle COMPARE and inequality nodes.
13804         (arm_rtx_costs_1): Rewrite.
13805         (arm_size_rtx_costs): Update prototype.
13806         (arm_rtx_costs): Pass speed down to helper functions.
13807         (arm_slowmul_rtx_costs): Rework cost calculations.
13808         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
13809         (arm_9e_rtx_costs): Likewise.
13810
13811 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
13812
13813         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
13814         relocations of local symbols wider than UNITS_PER_WORD are not valid.
13815         (alpha_legitimize_address): Do not split local symbols wider than
13816         UNITS_PER_WORD into HIGH/LO_SUM parts.
13817
13818 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
13819
13820         PR bootstrap/38580
13821         * gcc.c (process_command): Replace call to execvp with calls
13822         to pex_one and exit.
13823
13824 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
13825
13826         PR target/29141
13827         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
13828         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
13829         variant for devices with 3-byte PC.
13830         (__tablejump_elpm__): New.
13831
13832 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13833
13834         PR c/32041
13835         * c-parser.c (c_parser_postfix_expression): Allow `->' in
13836         offsetof member-designator, handle it as `[0].'.
13837
13838 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13839
13840         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
13841         function when not using named sections on targets with named sections
13842         if branch distance is less than 262132.
13843
13844 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
13845
13846         * combine.c (combine_instructions):  Recompute
13847         optimize_this_for_speed_p  for each BB in the main combine loop.
13848
13849 2009-01-12  Tomas Bily  <tbily@suse.cz>
13850
13851         PR middlend/38385
13852         * tree-loop-distribution.c (prop_phis): New function.
13853         (generate_builtin): Call prop_phis.
13854         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
13855
13856 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13857
13858         PR tree-optimization/38807
13859         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
13860         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
13861
13862 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
13863
13864         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
13865         subreg of op0 to the original op0.
13866
13867 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
13868
13869         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
13870
13871 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
13872
13873         PR debug/7055
13874         * mips-tfile.c (parse_def): Fix parsing of def strings
13875         starting with digits.
13876
13877 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
13878
13879         PR target/38695
13880         * config/arm/arm.c (arm_is_long_call_p): Don't call
13881         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
13882
13883 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
13884
13885         * regrename.c (regrename_optimize): Fix dumping.
13886         (find_oldest_value_reg): Preserve REG_POINTER.
13887         (copy_hardreg_forward_1): Likewise.
13888
13889 2009-01-09  Diego Novillo  <dnovillo@google.com>
13890
13891         * gimple.h (struct gimple_statement_base) <uid>: Document
13892         the restrictions on its use.
13893         (gimple_uid): Tidy.
13894         (gimple_set_uid): Tidy.
13895
13896 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13897
13898         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
13899         zero guard even if align_bytes != 0 and count is smaller than
13900         size_needed.
13901
13902 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
13903
13904         PR rtl-optimization/38495
13905         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
13906         (add_range_and_copies_from_move_list): Print all added ranges.
13907         Add ranges to memory optimized destination.
13908
13909 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13910
13911         PR target/38686
13912         PR target/38708
13913         * config/i386/i386.c (override_options): Reject
13914         -mstringop-strategy=rep_8byte with -m32.
13915         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
13916         to 1.  Do count comparison against epilogue_size_needed at compile
13917         time even when count_exp was constant forced into register.  For
13918         size_needed don't jump to epilogue, instead just avoid aligning
13919         and invoke the body algorithm.  If need_zero_guard, add zero guard
13920         even if count is non-zero, but smaller than size_needed + number of
13921         bytes that could be stored for alignment.
13922         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
13923         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
13924         but smaller than size_needed + number of bytes that could be stored
13925         for alignment.  Compare size_needed with epilogue_size_needed instead
13926         of desired_align - align, don't adjust size_needed, pass
13927         epilogue_size_needed to the epilogue expanders.
13928
13929         PR c/35742
13930         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
13931
13932 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13933
13934         * pa.c (last_address): Change to unsigned.
13935         (update_total_code_bytes): Change argument to unsigned.  Don't
13936         check if insn addresses are set.
13937         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
13938         addresses are not set.
13939         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
13940
13941 2009-01-09  Nick Clifton  <nickc@redhat.com>
13942
13943         * config/sh/symbian.c: Replace uses of DECL_INLINE with
13944         DECL_DECLARED_INLINE_P.
13945
13946 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13947
13948         PR middle-end/38347
13949         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
13950         GET_MODE (op0) in operand_subword_force calls.
13951
13952         PR middle-end/38771
13953         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
13954         fold_convert arg0 operands to TREE_TYPE (op0) first.
13955
13956 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
13957
13958         * params.def (ira-max-conflict-table-size): Decrease default value
13959         to 1000.
13960
13961 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
13962
13963         PR tree-optimization/37031
13964         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
13965         on parameter_set.
13966         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
13967         allocate it using gc instead of heap, use VEC_quick_push instead of
13968         VEC_safe_push.
13969         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
13970         instead of heap, use VEC_quick_push instead of VEC_safe_push.
13971         * tree-data-ref.h (struct access_matrix): Change matrix to gc
13972         allocated vector from heap allocated.
13973         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
13974         * tree-loop-linear.c (linear_transform_loops): Allocate nest
13975         vector only after perfect_loop_nest_depth call.
13976
13977 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
13978             Jan Sjodin  <jan.sjodin@amd.com>
13979
13980         PR tree-optimization/38559
13981         * graphite.c (debug_value, copy_constraint,
13982         swap_constraint_variables, scale_constraint_variable, ): New.
13983         (get_lower_bound, get_upper_bound): Removed.
13984         (graphite_trans_bb_strip_mine): Clean up this code that works
13985         only for constant number of iterations.  Fully copy upper and
13986         lower bound constraints, not only the constant part of them.
13987         * graphite.h (debug_value): Declared.
13988
13989 2009-01-08  Ira Rosen  <irar@il.ibm.com>
13990
13991         PR tree-optimization/37194
13992         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
13993         Don't add the cost of cost model guard in prologue to scalar
13994         outside cost in case of known number of iterations.
13995
13996 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
13997             Alan Modra  <amodra@bigpond.net.au>
13998
13999         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
14000         non-word-aligned REG+CONST addressing.
14001
14002 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
14003
14004         PR target/38706
14005         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
14006         free_after_compilation when outputting a thunk.
14007         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
14008         Do not call free_after_compilation here.
14009
14010 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
14011
14012         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
14013         (ix86_valid_target_attribute_inner_p): Ditto.
14014
14015 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
14016
14017         PR tree-optimization/38492
14018         PR tree-optimization/38498
14019         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
14020         * tree-chrec.h (scev_is_linear_expression): Declared.
14021         * graphite.c (graphite_cannot_represent_loop_niter): New.
14022         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
14023         (graphite_loop_normal_form): Use gcc_assert.
14024         (scan_tree_for_params): Use CASE_CONVERT.
14025         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
14026         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
14027         Use gcc_assert.  Discard scops that contain unhandled cases.
14028         (build_scop_conditions): Return a boolean status for unhandled cases.
14029         (strip_mine_profitable_p): Print the loop number, not its depth.
14030         (is_interchange_valid): Pass the depth of the loop nest, don't
14031         recompute it wrongly.
14032         (graphite_trans_bb_block): Same.
14033         (graphite_trans_bb_block): Print tentative of loop blocking.
14034         (graphite_trans_scop_block): Do not print that the loop has been
14035         blocked.
14036         (graphite_transform_loops): Do not handle scops that contain condition
14037         scalar phi nodes.
14038
14039 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
14040
14041         AVX Programming Reference (December, 2008)
14042         * config/i386/avxintrin.h (_mm256_stream_si256): New.
14043         (_mm256_stream_pd): Likewise.
14044         (_mm256_stream_ps): Likewise.
14045
14046         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
14047         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
14048         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
14049         (bdesc_special_args): Add __builtin_ia32_movntdq256,
14050         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
14051         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
14052         (ix86_expand_special_args_builtin): Likewise.
14053
14054         * config/i386/sse.md (AVXMODEDI): New.
14055         (avx_movnt<mode>): Likewise.
14056         (avx_movnt<mode>): Likewise.
14057         (<sse>_movnt<mode>): Remove AVX support.
14058         (sse2_movntv2di): Likewise.
14059
14060 2009-01-07  Richard Guenther  <rguenther@suse.de>
14061
14062         PR middle-end/38751
14063         * fold-const.c (extract_muldiv): Remove obsolete comment.
14064         (fold_plusminus_mult_expr): Undo MINUS_EXPR
14065         to PLUS_EXPR canonicalization for the canonicalization.
14066
14067 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
14068
14069         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
14070         hosted cross-compilers generating less efficient code.
14071
14072 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
14073
14074         * function.h (rtl_data): Add a dbr_scheduled_p field.
14075         * reorg.c (dbr_schedule): Set it.
14076         (gate_handle_delay_slots): Check it.
14077         * config/mips/mips.c (mips_base_delayed_branch): Delete.
14078         (mips_reorg): Check flag_delayed_branch instead of
14079         mips_base_delayed_branch.
14080         (mips_override_options): Don't set mips_base_delayed_branch
14081         or flag_delayed_branch.
14082
14083 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
14084
14085         PR rtl-optimization/38426.
14086         * ira.c (ira): Set current_function_is_leaf earlier.
14087
14088 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
14089
14090         PR rtl-optimization/38722
14091         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
14092         too early, only set a flag and modify after last possible
14093         undo_all point.
14094
14095 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
14096
14097         PR c/34252
14098         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
14099         * real.c (decimal_single_format): Correct values of emin and emax.
14100         (decimal_double_format): Ditto.
14101         (decimal_quad_format): Ditto.
14102         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
14103         computation of DECnn_MIN and DECnn_MAX for corrected values of
14104         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
14105         __DECnn_MIN__, and adjust its computation for the corrected value
14106         of emin.
14107
14108 2009-01-06  Jan Hubicka  <jh@suse.cz>
14109
14110         PR target/38744
14111         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
14112
14113 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
14114
14115         * doc/contrib.texi (Contributors): Slightly adjust the end note.
14116         Add Robert Clark to the list of testers.
14117
14118 2009-01-06  Jan Hubicka  <jh@suse.cz>
14119             Kai Tietz  <kai.tietz@onevision.com>
14120
14121         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
14122         * config/i386/i386.c (ix86_expand_call): Add clobbers.
14123
14124 2009-01-06  Jan Hubicka  <jh@suse.cz>
14125             Kai Tietz  <kai.tietz@onevision.com>
14126
14127         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
14128         for w64 ABI.
14129         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
14130         (ix86_nsaved_regs): Count only general purpose regs.
14131         (ix86_nsaved_sseregs): New.
14132         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
14133         to 16 for w64; compute padding and size of sse reg save area.
14134         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
14135         general purpose regs.
14136         (ix86_emit_save_sse_regs_using_mov): New.
14137         (ix86_expand_prologue): Save SSE regs if needed.
14138         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
14139         (ix86_emit_restore_sse_regs_using_mov): New.
14140         (ix86_expand_epilogue): Save SSE regs if needed.
14141
14142 2009-01-06  Jan Hubicka  <jh@suse.cz>
14143             Kai Tietz  <kai.tietz@onevision.com>
14144
14145         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
14146         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
14147         functions when accumulate outgoing args is off.
14148
14149 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
14150
14151         PR bootstrap/38742
14152         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
14153         before using pseudos_have_intersected_live_ranges_p.
14154
14155         * ira-int.h (ira_assert): Always define.
14156
14157 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
14158
14159         AVX Programming Reference (December, 2008)
14160         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
14161         (_mm256_permute2_pd): Likewise.
14162         (_mm_permute2_ps): Likewise.
14163         (_mm256_permute2_ps): Likewise.
14164         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
14165         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
14166
14167         * config/i386/i386.c (ix86_builtins): Remove
14168         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
14169         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
14170         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
14171         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
14172         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
14173         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
14174         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
14175         __builtin_ia32_vpermil2ps256.
14176         (ix86_init_mmx_sse_builtins): Updated.
14177         (ix86_expand_args_builtin): Likewise.
14178
14179 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14180
14181         * pa.c (output_call): Relocate non-jump insns in the delay slot of
14182         long absolute calls when generating PA 2.0 code.
14183
14184 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
14185
14186         PR rtl-optimization/38583
14187         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
14188
14189         * params.def (ira-max-conflict-table-size): New.
14190
14191         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
14192
14193         * ira.h (ira_conflicts_p): New external definition.
14194
14195         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
14196         table.  Report this.  Return result of building.
14197         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
14198         building conflict table.
14199
14200         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
14201         (ira_color): Use ira_conflicts_p.
14202
14203         * global.c: Include ira.h.
14204         (pseudo_for_reload_consideration_p, build_insn_chain): Use
14205         ira_conflicts_p.
14206
14207         * Makefile.in (global.o): Add ira.h.
14208
14209         * ira-build.c (mark_all_loops_for_removal,
14210         propagate_some_info_from_allocno): New.
14211         (remove_unnecessary_allocnos): Call
14212         propagate_some_info_from_allocno.
14213         (remove_low_level_allocnos): New.
14214         (remove_unnecessary_regions): Add parameter.  Call
14215         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
14216         parameter to remove_unnecessary_regions.
14217         (ira_build): Remove all regions but root if the conflict table was
14218         not built.  Update conflict hard regs for allocnos crossing calls.
14219
14220         * ira.c (ira_conflicts_p): New global.
14221         (ira): Define and use ira_conflicts_p.
14222
14223         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
14224         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
14225         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
14226
14227 2009-01-06  Ben Elliston  <bje@au.ibm.com>
14228
14229         * gengtype-lex.l (YY_NO_INPUT): Define.
14230
14231 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14232
14233         PR c/34911
14234         * c-common.c (handle_vector_size_attribute): Also reject
14235         BOOLEAN_TYPE types.
14236
14237 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
14238
14239         PR tree-optimization/38492
14240         * graphite.c (rename_map_elt, debug_rename_elt,
14241         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
14242         rename_map_elt_info, eq_rename_map_elts,
14243         get_new_name_from_old_name, bb_in_sese_p): Moved around.
14244         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
14245         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
14246         (sese_build_livein_liveouts): New.
14247         (new_sese, free_sese): New.
14248         (new_scop): Call new_sese.
14249         (free_scop): Call free_sese.
14250         (rename_variables_from_edge, rename_phis_end_scop): Removed.
14251         (register_old_new_names): Renamed register_old_and_new_names.
14252         (register_scop_liveout_renames, add_loop_exit_phis,
14253         insert_loop_close_phis, struct igp,
14254         default_liveout_before_guard, add_guard_exit_phis,
14255         insert_guard_phis, copy_renames): New.
14256         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
14257         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
14258         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
14259         (scop_adjust_phis_for_liveouts): New.
14260         (gloog): Call scop_adjust_phis_for_liveouts.
14261
14262         * graphite.h (struct sese): Documented.  Added fields liveout,
14263         num_ver and livein.
14264         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
14265         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
14266         (struct scop): Added field liveout_renames.
14267         (SCOP_LIVEOUT_RENAMES): New.
14268
14269 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14270
14271         PR tree-optimization/38510
14272         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
14273         (translate_clast): Call recompute_all_dominators before
14274         graphite_verify.
14275         (gloog): Call recompute_all_dominators before graphite_verify.
14276
14277 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
14278             Jan Sjodin  <jan.sjodin@amd.com>
14279
14280         PR tree-optimization/38500
14281         * graphite.c (create_sese_edges): Call fix_loop_structure after
14282         splitting blocks.
14283
14284 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
14285
14286         * config.gcc: Add m32r*-*-rtems*.
14287         * config/m32r/rtems.h: New file.
14288
14289 2009-01-05  Ben Elliston  <bje@au.ibm.com>
14290
14291         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
14292         (.po.pox): Likewise.
14293         (po/gcc.pot): Likewise.
14294
14295 2009-01-04  David S. Miller  <davem@davemloft.net>
14296
14297         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
14298         (STARTING_FRAME_OFFSET): Always set to zero.
14299
14300 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
14301
14302         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
14303         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
14304         fixed-point types, and vectors of the same.
14305
14306 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
14307
14308         * config/mips/sync.md (*mb_barrier): Rename to...
14309         (*memory_barrier): ...this.
14310
14311 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
14312
14313         * doc/extend.texi (Function Attributes): Move @cindex after @item
14314         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
14315         and put in alphabetical order. Fix 'target' name and put in order.
14316         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
14317         typos.
14318
14319 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
14320
14321         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
14322         (memory_barrier): Expand as unspec instead of unspec_volatile.
14323         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14324         (*memory_barrier): Define as unspec instead of unspec_volatile.
14325         Use (match_dup 0) as input operand.
14326
14327         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
14328         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
14329         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
14330         scratch register.  Remove operand 1.
14331         (*stbar): Define as unspec instead of unspec_volatile.
14332         Use (match_dup 0) as input operand, remove (const_int 8).
14333         (*membar): Define as unspec instead of unspec_volatile.
14334         Use (match_dup 0) as input operand, remove input operand 2.
14335
14336         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
14337         (memory_barrier): Expand as unspec instead of unspec_volatile.
14338         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14339         (*memory_barrier): Define as unspec instead of unspec_volatile.
14340         Use (match_dup 0) as input operand.
14341
14342         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
14343         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14344         Set volatile flag on operand 0.
14345         (*memory_barrier): New insn pattern.
14346
14347         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
14348         insn operands.
14349         (*memory_barrier): Use (match_dup 0) as input operand.
14350
14351         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
14352         Remove mem:BLK from insn operands.  Use Pmode scratch register.
14353         Set volatile flag on operand 0.
14354         (*mb_internal): New insn pattern.
14355
14356         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
14357
14358 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
14359
14360         PR middle-end/38586
14361         * function.c (struct temp_slot): Move to the section of the file
14362         that deals with temp slots.  Remove field 'address'.
14363         (temp_slot_address_table): New hash table of address -> temp slot.
14364         (struct temp_slot_address_entry): New struct, items for the table.
14365         (temp_slot_address_compute_hash, temp_slot_address_hash,
14366         temp_slot_address_eq, insert_temp_slot_address): Support functions
14367         for the new table.
14368         (find_temp_slot_from_address): Rewrite to use the new hash table.
14369         (remove_unused_temp_slot_addresses): Remove addresses of temp
14370         slots that have been made available.
14371         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
14372         worker function for remove_unused_temp_slot_addresses.
14373         (assign_stack_temp_for_type): Don't clear the temp slot address list.
14374         Add the temp slot address to the address -> temp slot map.
14375         (update_temp_slot_address): Update via insert_temp_slot_address.
14376         (free_temp_slots): Call remove_unused_temp_slot_addresses.
14377         (pop_temp_slots): Likewise.
14378         (init_temp_slots): Allocate the address -> temp slot map, or empty
14379         the map if it is already allocated.
14380         (prepare_function_start): Initialize temp slot processing.
14381
14382 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
14383
14384         PR middle-end/38584
14385         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
14386         Calculate the size of all stack vars assuming no packing of stack
14387         vars will happen, replacing a quadratic algorithm with a linear one.
14388
14389 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14390
14391         PR target/38707
14392         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
14393         can't be used.
14394
14395 2009-01-03  Diego Novillo  <dnovillo@google.com>
14396
14397         * doc/contrib.texi: Update contributions.
14398
14399 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14400
14401         PR c++/38705
14402         * builtins.c (fold_builtin_memory_op): Give up if either operand
14403         is volatile.  Set srctype or desttype to non-qualified version
14404         of the other type.
14405
14406         PR c/38700
14407         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
14408         and FUNCTION_DECLs.
14409
14410 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
14411
14412         PR rtl-optimization/35805
14413         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
14414         problem if fast dce is able to remove any instructions.
14415         * dce.c (dce_process_block): Fix dump message.
14416
14417 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
14418
14419         PR 33649
14420         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
14421
14422 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
14423
14424         PR middle-end/38690
14425         * tree-flow.h (op_code_prio, op_prio): New prototypes.
14426         * tree-pretty-print.c (op_code_prio): New function.
14427         (op_prio): No longer static.  Use op_code_prio.
14428         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
14429         Use op_prio and op_code_prio to determine if () should be
14430         printed around operand(s) or not.
14431
14432         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
14433         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
14434         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
14435         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
14436         pp_character instead of pp_string for single letter printing.
14437
14438 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
14439
14440         * doc/extend.texi: Fix '#pragma GCC option' typo.
14441
14442 2009-01-02  Richard Guenther  <rguenther@suse.de>
14443
14444         * doc/install.texi (--enable-checking): Mention different
14445         default for stage1.
14446         (--enable-stage1-checking): Document.
14447
14448 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
14449
14450         PR middle-end/30142
14451         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
14452         case to be an error.
14453
14454 2009-01-02  Ben Elliston  <bje@au.ibm.com>
14455
14456         * config/fp-bit.h (pack_d): Constify argument.
14457         * config/fp-bit.c (makenan): Constify return type. Remove casts.
14458         (isnan): Constify argument.
14459         (isinf): Likewise.
14460         (iszero): Likewise.
14461         (pack_d): Likewise.
14462         (_fpadd_parts): Constify return type.
14463         (_fpmul_parts): Likewise.
14464         (_fpdiv_parts): Likewise.
14465
14466 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
14467
14468         PR c/36489
14469         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
14470         warn about overwriting initializer with side-effects or
14471         -Woverride-init if !IMPLICIT.
14472         (output_init_element): Likewise.  Pass IMPLICIT down to
14473         add_pending_init.
14474         (process_init_element): Add IMPLICIT argument.  Pass it down
14475         to output_init_element.
14476         (push_init_element, pop_init_level, set_designator): Adjust
14477         process_init_element callers.
14478         (set_nonincremental_init, set_nonincremental_init_from_string):
14479         Adjust add_pending_init callers.
14480         (output_pending_init_elements): Adjust output_init_element callers.
14481         * c-tree.h (process_init_element): Adjust prototype.
14482         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
14483         process_init_element callers.
14484
14485 \f
14486 Copyright (C) 2009 Free Software Foundation, Inc.
14487
14488 Copying and distribution of this file, with or without modification,
14489 are permitted in any medium without royalty provided the copyright
14490 notice and this notice are preserved.