OSDN Git Service

9c3de317f309ea1ba17e8fc74420aba2d3c4cad3
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2
3         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
4         val after checking for integers.
5
6 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
7
8         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
9         X64_REGPARM_MAX.
10         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
11         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
12         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
13         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
14         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
15         X64_SSE_REGPARM_MAX.
16         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
17         X64_SSE_REGPARM_MAX.
18
19 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
20
21         * gcc.c (report_times_to_file): New.
22         (execute): Implement it.
23         (process_command): Support -time=.
24         * doc/invoke.texi: Document it.
25
26 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
27
28         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
29         that have value exprs.
30
31 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
32
33         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
34         declarations for constants until...
35         (dw2_output_indirect_constant_1): ... this point.
36
37 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
38
39         PR target/10242
40         * arm.md (arm_addsi3): Don't try to split an add with an
41         eliminable register until after reload has completed.
42
43 2009-06-03  Ian Lance Taylor  <iant@google.com>
44
45         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
46         * genattrtab.c (write_length_unit_log): Likewise.
47         * genchecksum.c (dosum): Likewise.
48         * gengtype.c (write_rtx_next): Likewise.
49         (finish_root_table, write_roots): Likewise.
50         * gimple.c (gimple_ops_offset_): Likewise.
51         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
52         * config/arc/arc.c (arc_attribute_table): Likewise.
53         * config/arm/arm.c (arm_attribute_table): Likewise.
54         * config/avr/avr.c (avr_attribute_table): Likewise.
55         * config/crx/crx.c (crx_attribute_table): Likewise.
56         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
57         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
58         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
59         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
60         * config/sh/sh.c (sh_attribute_table): Likewise.
61         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
62         * config/spu/spu.c (spu_attribute_table): Likewise.
63         * config/v850/v850.c (v850_attribute_table): Likewise.
64
65         * config/alpha/alpha.c (vms_attribute_table): Make static.
66         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
67         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
68         * config/mips/mips.c (mips_attribute_table): Likewise.
69
70         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
71         $(SYSTEM_H).
72         (cc1-checksum.o): Likewise.
73
74 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
75
76         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
77
78 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
79
80         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
81         insn if it is changing sp.  Use gen_add3_insn instead of
82         conditionally gen_addsi3 and gen_adddi3.
83         (offset_below_red_zone_p): New static inline function.
84         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
85         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
86         * config/rs6000/ppc-asm.h: Include auto-host.h.
87         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
88         CFI_RESTORE): Define.
89         * config/rs6000/crtresxgpr.asm: Add unwind info.
90         * config/rs6000/crtresxfpr.asm: Likewise.
91         * config/rs6000/crtresgpr.asm: Likewise.
92         * config/rs6000/crtresfpr.asm: Likewise.
93         * config/rs6000/crtsavgpr.asm: Likewise.
94         * config/rs6000/crtsavfpr.asm: Likewise.
95
96         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
97         0 to second argument of DWARF2_FRAME_REG_OUT macros.
98
99 2009-06-03  Julian Brown  <julian@codesourcery.com>
100
101         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
102         words or less (including TImode) in core registers.
103
104 2009-06-03  Richard Guenther  <rguenther@suse.de>
105
106         PR middle-end/40328
107         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
108
109 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
110
111         * statistics.c (statistics_counter_event): Do not record event 
112         in pass dump if its number == -1.
113         (curr_statistics_hash): Add assert that we never get passes 
114         with static number == -1.
115
116 2009-06-03  Richard Guenther  <rguenther@suse.de>
117             Andrey Belevantsev  <abel@ispras.ru>
118
119         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
120         non-BLKmode arrays addressable.
121
122 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
123
124         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
125         * config/m68k/m68k.h: ... here.
126         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
127         m68k and fido.
128
129 2009-06-03  Martin Jambor  <mjambor@suse.cz>
130
131         PR tree-optimization/40323
132         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
133         assignment.
134
135 2009-06-03  Richard Guenther  <rguenther@suse.de>
136
137         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
138         consistently.
139
140 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
141
142         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
143         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
144         JUMP_TABLE_DATA_P where applicable.
145         * config/sh/sh.c: Ditto.
146         * config/sh/sh.h: Ditto.
147         * config/sh/sh.md: Ditto.
148         * config/sh/symbian.c: Ditto.
149
150 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
151
152         * config/i386/driver-i386.c (describe_cache): Optimize
153         concatenation of strings.  Use snprintf instead of sprintf.
154         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
155         target when not compiling with GCC.
156
157 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
158
159         * config/sh/sh.c: Revert last change.
160         (sh_expand_epilogue): Emit a blockage insn before the frame
161         pointer adjustment unconditionally.
162
163 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
164
165         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
166         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
167         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
168         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
169         to COLLECT_GCC_OPTIONS.
170
171 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
172
173         * collect2.c (target_system_root): New variable.
174         (main): Handle --sysroot=.
175         (ignore_library): Strip the sysroot from the library path.
176
177 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
178
179         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
180         (collect2.o): Depend on collect2-aix.h.
181         (collect2-aix.o): New rule.
182         * collect2-aix.h: New file.
183         * collect2-aix.c: Likewise.
184         * collect2.c: Include collect2-aix.h.  Don't undefine
185         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
186         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
187         Use TARGET_AIX_VERSION instead of _AIX51.
188         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
189         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
190         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
191         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
192         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
193
194 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
195
196         * collect2.c (ignore_library): Avoid premature post-increment
197         and null deference.
198
199 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
200
201         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
202         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
203         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
204         CROSS_DIRECTORY_STRUCTURE too.
205         (LINK_LIBG_SPEC): Likewise.
206         (LIB_SPEC): Add %R to sysroot paths.
207         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
208         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
209         * config/rs6000/aix51.h: As for aix43.h.
210         * config/rs6000/aix52.h: Likewise.
211         * config/rs6000/aix53.h: Likewise.
212         * config/rs6000/aix61.h: Likewise.
213         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
214         to the beginning of sysroot paths.
215
216 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
217
218         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
219         INSN_LISTs that are out of the REG_NOTE range.
220
221 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
222
223         * loop-unroll.c (struct iv_to_split): Add pointer to next.
224         (struct var_to_expand): Likewise.
225         (struct opt_info): Add head and tail for linked lists of the above.
226         (analyze_insn_to_expand_var): Initialize next.
227         (analyze_iv_to_split_insn): Likewise.
228         (analyze_insns_in_loop): Create linked lists.
229         (allocate_basic_variable): Simplify for use without hash table.
230         (insert_var_expansion_initialization): Likewise, make it type-safer.
231         (combine_var_copies_in_loop_exit): Likewise.
232         (apply_opt_in_copies): Walk lists rather than hash tables.
233         (release_var_copies): Simplified and inlined by hand into...
234         (free_opt_info): ... this function.
235
236 2009-06-02  Richard Guenther  <rguenther@suse.de>
237
238         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
239         for field decls.
240
241 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
242
243         * cfgexpand.c (gimple_expand_cfg): Discard the source location
244         only for builtins that are not overridden.
245
246 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
247
248         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
249         label string.
250
251 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
252
253         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
254
255 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
256
257         * combine.c (move_deaths): Compare LUIDs within the same BB only.
258
259 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
260
261         * common.opt (fdump-unnumbered-links): New.
262         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
263         * print-rtl.c (flag_dump_unnumbered_links): New.
264         (print_rtx): Test it.
265
266 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
267
268         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
269         push/pop multiple to 8-byte alignment.
270
271 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
272
273         * config/i386/i386.c (queued_cfa_restores): New static variable.
274         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
275         functions.
276         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
277         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
278         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
279         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
280         note unconditionally.
281         (ix86_emit_restore_regs_using_mov): Likewise.
282         (ix86_emit_restore_sse_regs_using_mov): Likewise.
283         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
284         it through to ix86_emit_restore_reg_using_pop.
285         (ix86_emit_leave): Add RED_OFFSET argument.  Call
286         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
287         instead of adding REG_CFA_OFFSET note unconditionally.
288         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
289         the above functions.  Call ix86_add_queued_cfa_restore_notes when
290         needed.
291
292         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
293         force output of the label even for dwarf2out_do_cfi_asm.
294         (add_fde_cfi): If -g2 and above and cfi might change CFA,
295         force creation of CFI label and chain DW_CFA_set_loc jumping to it
296         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
297         caller.
298         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
299         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
300         dwarf2out_cfi_label callers.
301         * tree.h (dwarf2out_cfi_label): Adjust prototype.
302         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
303         Adjust dwarf2out_cfi_label callers.
304         * config/vax/vax.c (vax_output_function_prologue): Likewise.
305
306         * config/i386/i386.h (struct machine_cfa_state,
307         struct machine_function): Guard with ifndef USED_FOR_TARGET
308         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
309
310         PR other/40024
311         * emutls.c (__emutls_get_address): Change arr->size to mean number
312         of allocated arr->data entries instead of # of slots + 1.
313
314         PR middle-end/40316
315         * recog.c (peep2_reinit_state): New function.
316         (peephole2_init_state): Use it at the end of a basic block and also
317         when seeing a RTX_FRAME_RELATED_P insn.
318
319 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
320
321         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
322         fixuns_truncrfdi2): New.
323         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
324         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
325         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
326         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
327         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
328         *recip_approx): Remove.
329         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
330         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
331         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
332         move to div.md.
333         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
334         setf_exp_rf): New.
335
336 2009-06-01  Ian Lance Taylor  <iant@google.com>
337
338         * attribs.c (register_attribute): Use CONST_CAST.
339         * collect2.c (main): Use CONST_CAST2.
340         (scan_prog_file): Likewise.
341         * gcc.c (process_command, main): Likewise.
342         * toplev.c (toplev_main): Likewise.
343
344         * c-typeck.c (handle_warn_cast_qual): New static function,
345         partially broken out of build_c_cast.
346         (build_c_cast): Call handle_warn_cast_qual.
347         * doc/invoke.texi (Warning Options): Document new effect of
348         -Wcast-qual.
349
350 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
351
352         * diagnostic.c (diagnostic_build_prefix): Always print columns.
353         (diagnostic_report_current_module): Print columns.
354         * common.opt (flag_show_column): Enable by default.
355
356 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
357
358         * alias.c (find_base_term): Check for NULL term before returning.
359
360 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
361
362         Revert due to PR40320:
363         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
364         * calls.c (emit_library_call_value_1): Don't force_operand for move
365         and push insns.
366
367 2009-06-01  Olivier Hainque  <hainque@adacore.com>
368             Eric Botcazou  <ebotcazou@adacore.com>
369
370         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
371         to be processed as a bitfield for constructor output purposes.
372         * output.h (initializer_constant_valid_for_bitfield_p): Declare
373         new function.
374         * varasm.c (oc_local_state): New type, output_constructor
375         local state to support communication with helpers.
376         (oc_outer_state): New type, output_constructor outer state of
377         relevance in recursive calls.
378         (output_constructor_array_range): New output_constructor helper,
379         extracted code for an array range element.
380         (output_constructor_regular_field): New output_constructor helper,
381         extracted code for an element that is not a bitfield.
382         (output_constructor_bitfield): New output_constructor helper,
383         extracted code for a bitfield element.  Accept an OUTER state
384         argument for recursive processing.  Recurse on record or array
385         CONSTRUCTOR values, possibly past noop conversions.
386         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
387         VALUE is a valid constant-valued expression for use in a static
388         bit-field initializer.
389         (output_constructor): Rework to use helpers.  Accept and honor an
390         OUTER state argument for recursive calls.  Return total size.  Be
391         prepared for nested constructors initializing bitfields.
392         (output_constant): Feed OUTER in calls to output_constructor.
393
394 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
395
396         * calls.c (emit_library_call_value_1): Don't force_operand for move
397         and push insns.
398
399 2009-06-01  Nick Clifton  <nickc@redhat.com>
400
401         * doc/invoke.texi (IA-64 Options): Fix typo.
402
403 2009-06-01  Ira Rosen  <irar@il.ibm.com>
404
405         PR tree-optimization/39129
406         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
407         printed message.
408         (vect_do_peeling_for_loop_bound): Use 
409         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
410         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
411         (vect_loop_versioning): Likewise.
412         (vect_create_cond_for_alias_checks): Fix indentation.
413         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
414         macros.
415         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
416         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
417         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
418         "control flow in loop".
419         (vect_estimate_min_profitable_iters): Use 
420         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
421         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
422         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
423         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
424         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
425         statement belongs to a group of strided accesses with the exact code 
426         check.
427         (vectorizable_load): Likewise.
428         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
429         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
430
431 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
432
433         * config/freebsd-stdint.h: New file.
434         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
435         Add freebsd-stdint.h to tm_file.
436
437 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
438
439         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
440         (thumb2_extendhidi2): Likewise.
441
442 2009-05-31  Ian Lance Taylor  <iant@google.com>
443
444         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
445
446 2009-05-31  Ian Lance Taylor  <iant@google.com>
447
448         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
449         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
450         (ipa-reference.o): Depend upon gt-ipa-reference.h.
451
452 2009-05-31  Jason Merrill  <jason@redhat.com>
453
454         * tree-pretty-print.c (print_call_name): Take the callee, not the
455         call itself.  Make non-static.  Use dump_function_name for functions.
456         (dump_generic_node): Adjust.
457         * diagnostic.h: Declare print_call_name.
458         * gimple-pretty-print.c (dump_gimple_call): Use it.
459
460 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
461
462         * config/sh/sh.md (ashldi3_std): New define_expand.
463         (ashldi3): Use it.
464
465 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
466
467         PR target/40313
468         * config/sh/sh.c: Include debug.h.
469         (sh_expand_epilogue): Emit a blockage insn before the frame
470         pointer adjustment also when dwarf2out_do_frame returns true.
471
472 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
473
474         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
475         (thumb2_extendqidi2): New pattern.
476
477 2009-05-31  Ira Rosen  <irar@il.ibm.com>
478
479         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
480         mark phis for renaming.
481         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
482         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
483         Call mark_sym_for_renaming.
484         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
485         * tree-vect-loop.c (vect_transform_loop): Remove
486         vect_memsyms_to_rename initialization and a call to
487         mark_set_for_renaming.
488
489 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
490
491         PR middle-end/40304
492         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
493         frame related even if !set_cfa && style < 0.
494
495 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
496
497         * config/i386/mingw-tls.c: New file.
498         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
499         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
500         defining _WIN32 but not __CYGWIN__.
501
502 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
503
504         * configure.ac: Add MPC support.
505         
506         * config.in, configure: Regenerate.     
507
508 2009-05-29  Richard Henderson  <rth@redhat.com>
509
510         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
511         NOTE_INSN_BASIC_BLOCK.
512         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
513         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
514         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
515         to be deleted.
516         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
517         add in_use field.
518         (add_cfi): Disable check redefining cfa away from drap.
519         (lookup_cfa_1): Add remember argument; handle remember/restore.
520         (lookup_cfa): Pass remember argument.
521         (cfa_remember): New.
522         (compute_barrier_args_size_1): Remove sibcall check.
523         (dwarf2out_frame_debug_def_cfa): New.
524         (dwarf2out_frame_debug_adjust_cfa): New.
525         (dwarf2out_frame_debug_cfa_offset): New.
526         (dwarf2out_frame_debug_cfa_register): New.
527         (dwarf2out_frame_debug_cfa_restore): New.
528         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
529         (dwarf2out_begin_epilogue): New.
530         (dwarf2out_frame_debug_restore_state): New.
531         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
532         DW_CFA_restore_state.
533         (output_cfi_directive): Likewise.
534         (convert_cfa_to_fb_loc_list): Likewise.
535         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
536         * dwarf2out.h: Update.
537         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
538         (copy_insn_1): Early out for null.
539         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
540         and dwarf2out_frame_debug_restore_state.
541         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
542         (prologue_insn_hash, epilogue_insn_hash): New.
543         (free_after_compilation): Adjust freeing accordingly.
544         (record_insns): Create hash table if needed; push insns into
545         hash instead of array.
546         (maybe_copy_epilogue_insn): New.
547         (contains): Search hash table instead of array.
548         (sibcall_epilogue_contains): Remove.
549         (thread_prologue_and_epilogue_insns): Split eh_return insns
550         and mark them as epilogues.
551         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
552         scanning in terms of basic blocks.
553         * insn-notes.def (CFA_RESTORE_STATE): New.
554         * jump.c (returnjump_p_1): Accept EH_RETURN.
555         (eh_returnjump_p_1, eh_returnjump_p): New.
556         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
557         CFA_REGISTER, CFA_RESTORE): New.
558         * rtl.def (EH_RETURN): New.
559         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
560
561         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
562         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
563
564         * config/i386/i386.c (gen_push): Update cfa state.
565         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
566         add a CFA_ADJUST_CFA note.
567         (ix86_dwarf_handle_frame_unspec): Remove.
568         (ix86_expand_prologue): Update cfa state.
569         (ix86_emit_restore_reg_using_pop): New.
570         (ix86_emit_restore_regs_using_pop): New.
571         (ix86_emit_leave): New.
572         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
573         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
574         * config/i386/i386.h (struct machine_cfa_state): New.
575         (ix86_cfa_state): New.
576         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
577         (eh_return_internal): Merge from eh_return_<mode>,
578         use eh_return rtx, split w/ epilogue.
579
580 2009-05-29  Ian Lance Taylor  <iant@google.com>
581
582         * builtins.c (validate_gimple_arglist): Don't use va_arg with
583         enum type.
584         * calls.c (emit_library_call_value_1): Likewise.
585
586         * c-typeck.c (c_build_va_arg): New function.
587         * c-tree.h (c_build_va_arg): Declare.
588         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
589         instead of build_va_arg.
590
591 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
592
593         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
594         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
595         (ptr_difference_cost): Use affine combinations to compute it.
596         (difference_cost): Likewise.
597         (get_computation_cost_at): Compute more accurate cost for addresses
598         if the ratio is a multiplier allowed in addresses.
599         For non-addresses, consider that an additional offset or symbol is
600         added only once.
601
602 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
603
604         * config/i386/i386.c (ix86_decompose_address): Avoid useless
605         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
606
607         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
608         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
609         (prefix_rex): For UNIT_MMX don't imply the prefix by default
610         if MODE_DI.
611         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
612         to 1 for TYPE_SSE{IADD1,CVT1}.
613         (prefix_vex_imm8): Removed.
614         (length_vex): Only pass 1 as second argument to
615         ix86_attr_length_vex_default if prefix_extra is 0.
616         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
617         (length): For prefix vex computation use length_immediate
618         attribute instead of prefix_vex_imm8.
619         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
620         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
621         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
622         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
623         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
624         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
625         a space in between the operands.
626         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
627         if one operand is 0xff and the other one si, di, bp or sp.
628         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
629         other one si, di, bp or sp.
630         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
631         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
632         type and mode attributes.
633         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
634         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
635         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
636         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
637         prefix_data16 attribute iff MODE_DF.
638         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
639         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
640         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
641         constm128_operand in length_immediate computation.
642         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
643         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
644         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
645         length_immediate attribute to 1.
646         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
647         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
648         for certain alternatives.
649         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
650         prefix_data16 attribute if MODE_V1DF.
651         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
652         length_immediate to 1.
653         (set_got_rex64, set_rip_rex64): Remove length attribute, set
654         length_address to 4, set mode attribute to MODE_DI.
655         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
656         (fxam<mode>2_i387): Set length attribute to 4.
657         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
658         *prefetch_3dnow_rex): Override length_address attribute.
659         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
660         attributes.
661         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
662         (constm128_operand): Removed.
663         * config/i386/i386.c (memory_address_length): For
664         disp && !index && !base in 64-bit mode account for SIB byte if
665         print_operand_address can't optimize disp32 into disp32(%rip)
666         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
667         for fs: or gs: segment.
668         (ix86_attr_length_immediate_default): When checking if shortform
669         is possible, truncate immediate to the length of the non-shortened
670         immediate.
671         (ix86_attr_length_address_default): Ignore MEM_P operands
672         with X constraint.
673         (ix86_attr_length_vex_default): Only check for DImode on
674         GENERAL_REG_P operands.
675         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
676         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
677         (sse_cvttps2pi): Clear prefix_rep attribute.
678         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
679         attribute.
680         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
681         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
682         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
683         iff operand 2 is const_int_operand.
684         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
685         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
686         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
687         instead of vex.
688         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
689         prefix_data16.
690         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
691         prefix_data16 attribute for movlpd and movhpd instructions.
692         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
693         length_immediate for shufpd instruction.
694         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
695         (avx_cmpp<avxmodesuffixf2c><mode>3,
696         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
697         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
698         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
699         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
700         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
701         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
702         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
703         prefix_data16 attribute for the first alternative to 1.
704         (*avx_loadlps): Override length_immediate for the first alternative.
705         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
706         attributes for second alternative.
707         (*vec_concatv2sf_sse4_1): Override length_immediate and
708         prefix_data16 attributes for second alternative.
709         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
710         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
711         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
712         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
713         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
714         prefix_data16 and length_immediate to 1.
715         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
716         to 1.
717         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
718         prefix_extra attribute for variants that don't have 0f prefix alone.
719         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
720         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
721         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
722         *sse4_1_pextrd): Set length_immediate to 1.
723         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
724         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
725         to 1.
726         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
727         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
728         length_immediate to 1 for second alternative.
729         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
730         prefix_extra and length_immediate attributes for the first
731         alternative.
732         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
733         first alternative.
734         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
735         to 1 for the first and third alternative.
736         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
737         alternative.
738         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
739         attribute.
740         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
741         attribute to 0.
742         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
743         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
744         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
745         *avx_psign<mode>3): Set prefix_extra attribute to 1.
746         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
747         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
748         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
749         ssse3_psign<mode>3): Override prefix_rex attribute.
750         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
751         (ssse3_palignrti): Override length_immediate to 1.
752         (ssse3_palignrdi): Override length_immediate to 1, override
753         prefix_rex attribute.
754         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
755         (sse4a_extrqi): Override length_immediate to 2.
756         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
757         (sse4a_insertq): Override prefix_data16 to 0.
758         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
759         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
760         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
761         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
762         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
763         and length_immediate to 1.
764         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
765         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
766         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
767         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
768         and length_immediate to 1.
769         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
770         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
771         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
772         avx_ptest256): Override prefix_extra to 1.
773         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
774         Override prefix_data16 and length_immediate to 1.
775         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
776         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
777         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
778         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
779         prefix_data16 to 0 and prefix_extra to 2.
780         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
781         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
782         attribute.
783         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
784         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
785         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
786         and prefix_extra to 2.
787         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
788         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
789         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
790         avx_vpermilvar<mode>3,
791         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
792         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
793         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
794         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
795         Override prefix_extra to 1.
796         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
797         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
798         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
799         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
800         prefix_extra and length_immediate to 1.
801         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
802         modrm to 0.
803         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
804         to 1 for the first alternative.
805         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
806         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
807         cases.
808         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
809         *movv2sf_internal_avx, *movv2sf_internal): Override
810         prefix_rep attribute for certain alternatives.
811         (*mov<mode>_internal): Override prefix_rep or prefix_data16
812         attributes for certain alternatives.
813         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
814         attributes for certain alternatives.
815         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
816         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
817         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
818         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
819         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
820         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
821         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
822         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
823         length_immediate to 1 if operand 2 is const_int_operand.
824         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
825         *vec_extractv2si_1): Set length_immediate attribute to 1.
826         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
827         using old 3DNOW insn rather than SSE/3DNOW_A.
828         (mmx_emms, mmx_femms): Clear modrm attribute.
829
830 2009-05-29  Martin Jambor  <mjambor@suse.cz>
831
832         * tree-sra.c:  New implementation of SRA.
833
834         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
835         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
836         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
837         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
838         (SRA_MAX_STRUCTURE_COUNT): Removed.
839         (SRA_FIELD_STRUCTURE_RATIO): Removed.
840         * doc/invoke.texi (sra-max-structure-size): Removed.
841         (sra-field-structure-ratio): Removed.
842
843 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
844
845         PR middle-end/40291
846         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
847         before expansion.
848
849 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
850
851         PR rtl-optimization/40101
852         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
853         seqno.  Adjust comment.
854         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
855         inserting bookkeeping before a jump, the jump is not scheduled.
856         When no positive seqno found, provide a value.  Add comment.
857
858 2009-05-29  Richard Guenther  <rguenther@suse.de>
859
860         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
861         short-cutting on the first component.
862
863 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
864
865         PR middle-end/39958
866         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
867         for trees other than decls/types.
868
869 2009-05-29  Richard Guenther  <rguenther@suse.de>
870
871         * tree-ssa-operands.c (get_expr_operands): Do not handle
872         INDIRECT_REFs in the handled-component case.  Remove
873         unused get_ref_base_and_extent case.
874         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
875         tree_low_cst and host_integerp where possible.
876         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
877         codes for equivalence.
878         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
879
880 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
881
882         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
883         to tmake_file for i[34567]86-*-cygwin*. 
884
885 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
886
887         PR target/40017
888         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
889         (altivec_categorize_keyword, init_vector_keywords,
890         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
891         similar to bool.
892
893 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
894
895         * tree.c (handle_dll_attribute): Check if node is
896         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
897
898 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
899
900         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
901         component.
902         (thumb2_zero_extendqidi2): Likewise.
903
904 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
905
906         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
907         instead of gen_movrt.
908         * config/sh/sh.md (movrt): Remove.
909
910 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
911
912         * doc/invoke.texi (IA-64 Options):
913         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
914         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
915         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
916         -msched-prefer-non-control-spec-insns,
917         -msched-stop-bits-after-every-cycle,
918         -msched-count-spec-in-critical-path,
919         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
920         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
921         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
922         and -msched-spec-verbose.
923
924 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
925
926         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
927         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
928         error if used.
929         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
930
931 2009-05-28  Richard Guenther  <rguenther@suse.de>
932
933         * tree-ssa-alias.c (ao_ref_init): New function.
934         (ao_ref_base): Likewise.
935         (ao_ref_base_alias_set): Likewise.
936         (ao_ref_alias_set): Likewise.
937         (refs_may_alias_p_1): Change signature.
938         (refs_may_alias_p): Adjust.
939         (refs_anti_dependent_p): Likewise.
940         (refs_output_dependent_p): Likewise.
941         (call_may_clobber_ref_p_1): Change signature.
942         (call_may_clobber_ref_p): Adjust.
943         (stmt_may_clobber_ref_p_1): New function split out from ...
944         (stmt_may_clobber_ref_p): ... here.
945         (maybe_skip_until): Adjust signature.
946         (get_continuation_for_phi): Likewise.
947         (walk_non_aliased_vuses): Likewise.
948         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
949         (ao_ref_init): Declare.
950         (ao_ref_base): Likewise.
951         (ao_ref_alias_set): Likewise.
952         (stmt_may_clobber_ref_p_1): Likewise.
953         (walk_non_aliased_vuses): Adjust.
954         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
955         (get_ref_from_reference_ops): remove.
956         (vn_reference_lookup_2): Adjust signature.
957         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
958         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
959         (vn_reference_lookup): Adjust.
960         (vn_reference_insert): Likewise.
961         (vn_reference_insert_pieces): Adjust signature.
962         (visit_reference_op_call): Adjust.
963         * tree-ssa-pre.c (get_expr_type): Simplify.
964         (phi_translate_1): Adjust.
965         (compute_avail): Likewise.
966         (translate_vuse_through_block): Do not re-build trees.
967         (value_dies_in_block_x): Likewise.
968         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
969         fields.
970         (vn_reference_lookup_pieces): Adjust declaration.
971         (vn_reference_insert_pieces): Likewise.
972
973 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
974
975         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
976         with checking disabled.
977
978 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
979
980         PR target/37216
981
982         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
983         macro definition for support of three-operand format aligned
984         .comm directive in assembler on cygwin/pe/mingw target OS.
985         * configure:  Regenerate.
986         * config.h:  Regenerate.
987
988         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
989         aligned form of .comm directive if -mpe-aligned-commons is in effect.
990         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
991
992         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
993         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
994
995 2009-05-28  Ira Rosen  <irar@il.ibm.com>
996
997         PR tree-optimization/40254
998         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
999         in analysis of basic blocks.
1000
1001 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
1002
1003         PR middle-end/33699
1004         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
1005         * target-def.h (TARGET_CONST_ANCHOR): New macro.
1006         (TARGET_INITIALIZER): Use it.
1007         * cse.c (CHEAPER): Move it up to the other macros.
1008         (insert): Rename this ...
1009         (insert_with_costs): ... to this.  Add cost parameters.  Update
1010         function comment.
1011         (insert): New function.  Call insert_with_costs.
1012         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
1013         find_reg_offset_for_const, try_const_anchors): New functions.
1014         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
1015         when using a const-anchor.  Call insert_const_anchors.
1016         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
1017         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
1018
1019 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1020
1021         * tree-inline.c (remap_decls): Enable nonlocalized variables
1022         when not optimizing.
1023
1024 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1025
1026         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
1027         Simplify other tests involving optimize.
1028
1029 2009-05-27  Tom Tromey  <tromey@redhat.com>
1030
1031         * unwind-dw2.c (_Unwind_DebugHook): New function.
1032         (uw_install_context): Call _Unwind_DebugHook.
1033
1034 2009-05-27  Tom Tromey  <tromey@redhat.com>
1035
1036         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1037
1038 2009-05-27  Ian Lance Taylor  <iant@google.com>
1039
1040         * Makefile.in (LINKER, LINKER_FLAGS): Define.
1041         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1042         (ALL_LINKERFLAGS): Define.
1043         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1044         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1045         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1046         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1047         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1048         $(LINKER_FOR_BUILD).
1049         (build/gcov-iov$(build_exeext)): Likewise.
1050
1051 2009-05-27  Julian Brown  <julian@codesourcery.com>
1052
1053         * gcse.c (target.h): Include.
1054         (can_assign_to_reg_without_clobbers_p): Check that the target allows
1055         copy of argument to a pseudo register.
1056
1057 2009-05-27  Diego Novillo  <dnovillo@google.com>
1058
1059         * tree-ssa-live.c (dump_scope_block): Document arguments.
1060         (dump_scope_blocks): Document.
1061         (debug_scope_blocks): New.
1062         * tree-flow.h (debug_scope_blocks): Declare.
1063
1064 2009-05-21  Denis Chertykov  <denisc@overta.ru>
1065
1066         * doc/contrib.texi (Contributors): Add myself to the list.
1067
1068 2009-05-27  Olivier Hainque  <hainque@adacore.com>
1069
1070         * expr.c (target_align): New function.  Alignment the TARGET of an
1071         assignment may be assume to have.
1072         (highest_pow2_factor_for_target): Use it instead of relying on
1073         immediate tree attributes of TARGET, not necessarily honored when
1074         intermediate bitfields are involved.
1075         
1076 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1077
1078         PR target/40266
1079         * config/i386/driver-i386.c (host_detect_local_cpu): Support
1080         AVX, SSE4, AES, PCLMUL and POPCNT.
1081
1082 2009-05-27  Diego Novillo  <dnovillo@google.com>
1083
1084         * tree-pretty-print.c (dump_location): New.
1085         (dump_generic_node): Call it.
1086         Factor code to handle BLOCK nodes ...
1087         (dump_block_node): ... here.
1088
1089 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
1090
1091         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
1092         with it.
1093         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
1094         included.
1095         * gcc-plugin.h: Include config.h and system.h.
1096         (IN_GCC): Define if not defined.
1097
1098 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
1099
1100         PR middle-end/40249
1101         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
1102         with -fno-inline.
1103
1104 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
1105
1106         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
1107         applicable.
1108         * config/m32r/m32r.h: Ditto.
1109         * config/m32r/m32r.md: Ditto.
1110         * config/m32r/predicates.md: Ditto.
1111
1112 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
1113
1114         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
1115
1116 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
1117
1118         * doc/plugins.texi
1119         (Loading plugins): typo.
1120         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
1121         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1122         (Interacting with the GCC Garbage Collector): Added new section.
1123         (Giving information about a plugin): Added new section for
1124         PLUGIN_INFO.
1125         * ggc.h (ggc_register_root_tab): Added declaration.
1126         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
1127         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
1128         (register_callback): Improved comment in declaration.
1129         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
1130         (extra_root_vec) Added static variable for dynamic roots registration.
1131         (ggc_register_root_tab) Added new routine.
1132         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
1133         PLUGIN_GGC_MARKING event.
1134         * ggc-zone.c: Include plugin.h.
1135         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1136         * ggc-page.c: Include plugin.h.
1137         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1138         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1139         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1140         (register_callback): check lack of callbacks for
1141         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1142         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1143         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1144         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1145         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1146         dependency on plugin.h.
1147         (plugin.o): Added dependency on ggc.h...
1148
1149 2009-05-26  Richard Guenther  <rguenther@suse.de>
1150
1151         PR middle-end/40248
1152         Revert
1153         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1154         with mismatched comparison modes.
1155
1156         * expr.c (expand_expr_real_1): Expand the operand of a
1157         VIEW_CONVERT_EXPR in its natural mode.
1158
1159 2009-05-26  Ian Lance Taylor  <iant@google.com>
1160
1161         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1162         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1163         (ALL_COMPILERFLAGS): Define.
1164         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1165         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1166         (collect2$(exeext), collect2.o): Likewise.
1167         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1168         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1169         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1170         (libbackend.o, intl.o, cppdefault.o): Likewise.
1171         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1172         (build/%.o): Use $(COMPILER_FOR_BUILD).
1173         (build/gen%$(build_exeext)): Likewise.
1174         (build/gcov-iov$(build_exeext)): LIkewise.
1175         * config/t-darwin (darwin.o): Use $(COMPILER).
1176         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1177         * config/t-sol2 (sol2-c.o): Likewise.
1178         (sol2.o): Likewise.
1179         * config/t-vxworks (vxworks.o): Likewise.
1180         * config/x-darwin (host-darwin.o): Likewise.
1181         * config/x-hpux (host-hpux.o): Likewise.
1182         * config/x-linux (host-linux.o): Likewise.
1183         * config/x-solaris (host-solaris.o): Likewise.
1184         * config/alpha/x-alpha (driver-alpha.o): Likewise.
1185         * config/arm/t-arm (arm-c.o): Likewise.
1186         * config/arm/t-pe (pe.o): Likewise.
1187         * config/arm/t-wince-pe (pe.o): Likewise.
1188         * config/i386/t-cygming (winnt.o): Likewise.
1189         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1190         * config/i386/t-cygwin (cygwin1.o): Likewise.
1191         (cygwin2.o): Likewise.
1192         * config/i386/t-i386 (i386-c.o): Likewise.
1193         * config/i386/t-interix (winnt.o): Likewise.
1194         * config/i386/t-netware (netware.o): Likewise.
1195         * config/i386/t-nwld (nwld.o): Likewise.
1196         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1197         * config/i386/x-i386 (driver-i386.o): Likewise.
1198         * config/i386/x-cygwin (host-cygwin.o): Likewise.
1199         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1200         * config/ia64/t-ia64 (ia64-c.o): Likewise.
1201         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1202         * config/mips/x-native (driver-native.o): Likewise.
1203         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1204         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1205         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1206         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1207         * config/score/t-score-elf (score7.o): Likewise.
1208         (score3.o): Likewise.
1209         * config/sh/t-sh (sh-c.o): Likewise.
1210         * config/sh/t-symbian (sh-c.o): Likewise.
1211         (symbian.o): Likewise.
1212         * config/spu/t-spu-elf (spu-c.o): Likewise.
1213         * config/v850/t-v850 (v850-c.o): Likewise.
1214         * config/v850/t-v850e (v850-c.o): Likewise.
1215
1216 2009-05-26  Richard Guenther  <rguenther@suse.de>
1217
1218         PR tree-optimization/40122
1219         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1220         VECTOR_CSTs if possible.
1221         (fold_gimple_assign): Likewise.
1222
1223 2009-05-26  Richard Guenther  <rguenther@suse.de>
1224
1225         PR middle-end/40252
1226         * fold-const.c (fold_binary): Use the correct types for building
1227         rotates.
1228
1229 2009-05-26  Richard Guenther  <rguenther@suse.de>
1230
1231         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1232         redundant calls to merge_alias_info.
1233         (bump_vector_ptr): Likewise.
1234         * tree-ssa-copy.c (merge_alias_info): Remove.
1235         (replace_exp_1): Remove call to merge_alias_info.
1236         (propagate_tree_value): Likewise.
1237         (fini_copy_prop): Propagate points-to info.
1238         * tree-flow.h (merge_alias_info): Remove.
1239
1240 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1241
1242         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1243
1244 2009-05-25  Jan Hubicka  <jh@suse.cz>
1245
1246         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1247         * cgraph.h (struct inline_summary): New filed self_wize,
1248         size_inlining_benefit, self_time and time_inlining_benefit.
1249         (struct cgraph_global_info): Replace insns by time ans size fields.
1250         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1251         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1252         (ipcp_update_callgraph): Do not touch function bodies.
1253         * ipa-inline.c: Include except.h
1254         (MAX_TIME): New constant.
1255         (overall_insns): Remove.
1256         (leaf_node_p): New.
1257         (overall_size, max_benefit): New static variables.
1258         (cgraph_estimate_time_after_inlining): New function.
1259         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1260         (cgraph_clone_inlined_nodes): Update size.
1261         (cgraph_mark_inline_edge): Update size.
1262         (cgraph_estimate_growth): Use size info.
1263         (cgraph_check_inline_limits): Check size.
1264         (cgraph_default_inline_p): Likewise.
1265         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1266         (cgraph_decide_recursive_inlining): Check size.
1267         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1268         and times.
1269         (cgraph_decide_inlining): Likewise.
1270         (cgraph_decide_inlining_incrementally): Likewise; honor
1271         PARAM_EARLY_INLINING_INSNS.
1272         (likely_eliminated_by_inlining_p): New predicate.
1273         (estimate_function_body_sizes): New function.
1274         (compute_inline_parameters): Use it.
1275         * except.c (must_not_throw_labels): New function.
1276         * except.h (must_not_throw_labels): Declare.
1277         * tree-inline.c (init_inline_once): Kill inlining_weigths
1278         * tree-ssa-structalias.c: Avoid uninitialized warning.
1279         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1280         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1281         (PARAM_INLINE_CALL_COST): Remove.
1282         (PARAM_EARLY_INLINING_INSNS): New.
1283
1284 2009-05-25  Richard Guenther  <rguenther@suse.de>
1285
1286         PR tree-optimization/36327
1287         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1288         callback for reference translation or lookup at the point of may-defs.
1289         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1290         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1291         for union COMPONENT_REFs.
1292         (vn_reference_lookup_3): New callback.  Lookup from memset
1293         and CONSTRUCTOR assignment, translate through struct copies.
1294         (vn_reference_lookup_pieces): Make sure to not free the
1295         passed operands array.  Adjust walk_non_aliased_vuses call.
1296         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1297         make sure we do not leak memory.
1298
1299 2009-05-25  Richard Guenther  <rguenther@suse.de>
1300
1301         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1302         * tree-inline.c (expand_call_inline): Reset the escaped and
1303         callused solutions.
1304         * tree-ssa-structalias.c (pass_build_ealias): New.
1305         * tree-pass.h (pass_build_ealias): Declare.
1306         * passes.c (init_optimization_passes): Add PTA during 
1307         early optimizations.
1308         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1309         and CALLUSED solutions.
1310         (dump_points_to_solution): New function, split out from ...
1311         (dump_points_to_info_for): ... here.
1312         * tree-parloops.c (parallelize_loops): Reset the escaped and
1313         callused solutions.
1314
1315 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1316
1317         PR bootstrap/40027
1318         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1319         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1320
1321 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1322
1323         PR tree-optimization/40238
1324         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1325         statements after basic block's labels.
1326         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1327         to free the allocated memory.
1328
1329 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1330
1331         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1332         return address with a USE.
1333
1334 2009-05-24  Richard Guenther  <rguenther@suse.de>
1335
1336         PR middle-end/40233
1337         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1338         array type from the main variant of the inner type.
1339
1340 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1341
1342         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1343         definition to bool (from int) to un-break build.
1344         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1345
1346 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1347
1348         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1349         discard_stmt_changes): Delete.
1350         * tree-ssa-operands.c (scb_stack): Delete.
1351         (init_ssa_operands): Do not initialize it.
1352         (fini_ssa_operands): Do not free it.
1353         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1354
1355         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1356         update_stmt, remove the others.  Fix comments.
1357         * tree-dfa.c (optimize_stack_restore): Likewise.
1358         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1359         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1360         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1361         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1362         Likewise.
1363         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1364         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1365         (dom_opt_finalize_block): Likewise, adjusting access to
1366         stmts_to_rescan.
1367         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1368         (stmts_to_rescan): Change item type to gimple.
1369         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1370
1371 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1372
1373         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1374         * tree-pass.h (pass_slp_vectorize): New pass.
1375         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1376         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1377         * tree-vectorizer.c (timevar.h): Include.
1378         (user_vect_verbosity_level): Declare.
1379         (vect_location): Fix comment.
1380         (vect_set_verbosity_level): Update user_vect_verbosity_level
1381         instead of vect_verbosity_level.
1382         (vect_set_dump_settings): Add an argument. Ignore user defined
1383         verbosity if dump flags require higher level of verbosity. Print to
1384         stderr only for loop vectorization.
1385         (vectorize_loops): Update call to vect_set_dump_settings.
1386         (execute_vect_slp): New function.
1387         (gate_vect_slp): Likewise.
1388         (struct gimple_opt_pass pass_slp_vectorize): New.
1389         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1390         access its members.
1391         (vec_info_for_bb): New function.
1392         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1393         (VECTORIZATION_ENABLED): New macro.
1394         (SLP_ENABLED, SLP_DISABLED): Likewise.
1395         (vect_is_simple_use): Add bb_vec_info argument.
1396         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1397         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1398         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1399         vect_schedule_slp, vect_analyze_slp): Likewise.
1400         (vect_analyze_stmt): Add slp_tree argument.
1401         (find_bb_location): Declare.
1402         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1403         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1404         (vect_analyze_loop_operations, vect_analyze_loop,
1405         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1406         vect_finalize_reduction, vectorizable_reduction,
1407         vectorizable_live_operation, vect_transform_loop): Likewise.
1408         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1409         skip evolution analysis if analyzing a basic block.
1410         (dr_analyze_indices): Likewise.
1411         (initialize_data_dependence_relation): Skip the test whether the
1412         object is invariant for basic blocks.
1413         (compute_all_dependences): Skip dependence analysis for data
1414         references in basic blocks.
1415         (find_data_references_in_stmt): Don't fail in case of invariant
1416         access in basic block.
1417         (find_data_references_in_bb): New function.
1418         (find_data_references_in_loop): Move code to
1419         find_data_references_in_bb and add a call to it.
1420         (compute_data_dependences_for_bb): New function.
1421         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1422         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1423         that STEP is 0.
1424         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1425         unknown dependence in basic block and fail in case of dependence in
1426         basic block.
1427         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1428         dependence instances from either loop or basic block vectorization
1429         info.
1430         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1431         before calling nested_in_vect_loop_p.
1432         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1433         dependence instances from either loop or basic block vectorization
1434         info.
1435         (vect_verify_datarefs_alignment): Likewise.
1436         (vect_enhance_data_refs_alignment): Adjust function calls.
1437         (vect_analyze_data_refs_alignment): Likewise.
1438         (vect_analyze_group_access): Fix printing. Skip different checks if
1439         DR_STEP is 0. Keep strided stores either in loop or basic block
1440         vectorization data structure. Fix indentation.
1441         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1442         basic blocks.
1443         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1444         dependence instances from either loop or basic block vectorization
1445         info.
1446         (vect_analyze_data_refs): Update comment. Call
1447         compute_data_dependences_for_bb to analyze basic blocks.
1448         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1449         case of loop vectorization. In case of basic block vectorization use
1450         data-ref itself as a base.
1451         (vect_create_data_ref_ptr): In case of basic block vectorization:
1452         don't advance the pointer, add new statements before the current
1453         statement.  Adjust function calls.
1454         (vect_supportable_dr_alignment): Support only aligned accesses in
1455         basic block vectorization.
1456         * common.opt (ftree-slp-vectorize): New flag.
1457         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1458         (vect_pattern_recog_1): Likewise.
1459         * tree-vect-stmts.c (process_use): Likewise.
1460         (vect_init_vector): Add new statements in the beginning of the basic
1461         block in case of basic block SLP.
1462         (vect_get_vec_def_for_operand): Adjust function calls.
1463         (vect_finish_stmt_generation): Likewise.
1464         (vectorizable_call): Add assert that it is loop vectorization, adjust
1465         function calls.
1466         (vectorizable_conversion, vectorizable_assignment): Likewise.
1467         (vectorizable_operation): In case of basic block SLP, take
1468         vectorization factor from statement's type and skip the relevance
1469         check. Adjust function calls.
1470         (vectorizable_type_demotion): Add assert that it is loop
1471         vectorization, adjust function calls.
1472         (vectorizable_type_promotion): Likewise.
1473         (vectorizable_store): Check for outer loop only in case of loop
1474         vectorization. Adjust function calls. For basic blocks, skip the
1475         relevance check and don't advance pointers.
1476         (vectorizable_load): Likewise.
1477         (vectorizable_condition): Add assert that it is loop vectorization,
1478         adjust function calls.
1479         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1480         that it is not reduction, get vector type, call only supported
1481         functions, skip loop specific parts.
1482         (vect_transform_stmt): Check for outer loop only in case of loop
1483         vectorization.
1484         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1485         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1486         for external definition.
1487         * passes.c (pass_slp_vectorize): New pass.
1488         * tree-vect-slp.c (find_bb_location): New function.
1489         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1490         check for patterns only in loops.
1491         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1492         case of multiple types in basic block SLP.
1493         (vect_mark_slp_stmts_relevant): New function.
1494         (vect_supported_load_permutation_p): Fix comment.
1495         (vect_analyze_slp_instance): Add argument. In case of basic block
1496         SLP, take vectorization factor from statement's type, check that
1497         unrolling factor is 1. Adjust function call. Save SLP instance in
1498         either loop or basic block vectorization structure. Return FALSE,
1499         if SLP failed.
1500         (vect_analyze_slp): Add argument. Get strided stores groups from
1501         either loop or basic block vectorization structure. Return FALSE
1502         if basic block SLP failed.
1503         (new_bb_vec_info): New function.
1504         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1505         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1506         (vect_schedule_slp): Add argument. Get SLP instances from either
1507         loop or basic block vectorization structure. Set vectorization factor
1508         to be 1 for basic block SLP.
1509         (vect_slp_transform_bb): New function.
1510         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1511
1512 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1513
1514         * final.c (shorten_branches): Do not align labels for jump tables.
1515         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1516
1517 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1518
1519         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1520         Remove outdated reference to flow.c and fix nits.
1521         * doc/gccint.texi: Tweak RTL description.
1522         * doc/rtl.texi: Likewise.
1523
1524 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1525
1526         * config/avr/avr.c: Change my email address.
1527         * config/avr/avr.h: Likewise.
1528         * config/avr/avr.md: Likewise.
1529         * config/avr/avr-protos.h: Likewise.
1530         * config/avr/libgcc.S: Likewise.
1531
1532 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1533
1534         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1535         (spu_split_load, spu_split_store): Change return type to int.
1536         (spu_split_convert): Declare.
1537         * config/spu/predicates.md (spu_mem_operand): Remove.
1538         (spu_mov_operand): Update.
1539         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1540         * config/spu/spu.c (regno_aligned_for_load): Remove.
1541         (reg_aligned_for_addr, spu_expand_load): Define.
1542         (spu_expand_extv): Reimplement and handle MEM.
1543         (spu_expand_insv): Handle MEM.
1544         (spu_sched_reorder): Handle insn's with length 0.
1545         (spu_legitimate_address_p): Reimplement.
1546         (store_with_one_insn_p): Return TRUE for any mode with size
1547         larger than 16 bytes.
1548         (address_needs_split): Define.
1549         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1550         operands.
1551         (spu_convert_move): Define.
1552         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1553         (spu_split_store): Change all MEM's to TImode.
1554         (spu_init_expanders): Preallocate registers that correspond to
1555         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1556         mark_reg_pointer.
1557         (spu_split_convert): Define.
1558         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1559         (_move<mode>, _movdi, _movti): Update predicate and condition.
1560         (load, store): Change to define_split.
1561         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1562         extend<mode>ti2.
1563         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1564         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1565         define_insn_and_split of lshr<mode>3.
1566         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1567         (<v>ashr<mode>3_imm): Define.
1568         (extv, extzv, insv): Allow MEM operands.
1569         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1570         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1571         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1572         (_spu_convert2): Change to define_insn_and_split and remove the
1573         corresponding define_peephole2.
1574         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1575         Change predicates to memory_operand.
1576
1577 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1578
1579         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1580
1581 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1582
1583         PR tree-optimization/40219
1584         * tree.c (iterative_hash_expr): Make sure the builtin function is
1585         a normal builtin function and not a front end or back end builtin
1586         before indexing into the built_in_decls array.
1587
1588 2009-05-22  Richard Guenther  <rguenther@suse.de>
1589
1590         PR middle-end/38964
1591         * alias.c (write_dependence_p): Do not use TBAA for answering
1592         anti-dependence or output-dependence.
1593         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1594         (emit_pointer_definition): Remove.
1595         (emit_alias_warning): Likewise.
1596         (find_what_var_points_to): Remove TBAA pruning code.
1597         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1598         violations.
1599         (compute_points_to_sets): Remove code computing the set of
1600         dereferenced pointers.
1601         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1602         oracle for querying anti and output dependencies.
1603         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1604         if TBAA may be applied.
1605         (refs_anti_dependent_p): New function.
1606         (refs_output_dependent_p): Likewise.
1607         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1608         (refs_output_dependent_p): Likewise.
1609         * doc/tree-ssa.texi (Memory model): New section.
1610         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1611         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1612         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1613         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1614         * expr.c (expand_expr_real_1): Likewise.
1615         * gimple-low.c (lower_stmt): Likewise.
1616         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1617         (dump_gimple_cdt): Remove.
1618         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1619         (gimple_size): Likewise.
1620         (walk_gimple_op): Likewise.
1621         (is_gimple_stmt): Likewise.
1622         (walk_stmt_load_store_addr_ops): Likewise.
1623         (gimple_build_cdt): Remove.
1624         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1625         * gimple.h (gimple_cdt_new_type): Remove.
1626         (gimple_cdt_new_type_ptr): Likewise.
1627         (gimple_cdt_set_new_type): Likewise.
1628         (gimple_cdt_location): Likewise.
1629         (gimple_cdt_location_ptr): Likewise.
1630         (gimple_cdt_set_location): Likewise.
1631         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1632         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1633         GIMPLE_CHANGE_DYNAMIC_TYPE.
1634         (verify_types_in_gimple_stmt): Likewise.
1635         * tree-inline.c (estimate_num_insns): Likewise.
1636         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1637         (copy_decl_to_var): Likewise.
1638         (copy_result_decl_to_var): Likewise.
1639         * tree-pretty-print.c (dump_generic_node): Do not handle
1640         CHANGE_DYNAMIC_TYPE_EXPR.
1641         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1642         * tree-ssa-operands.c (get_expr_operands): Likewise.
1643         * tree-ssa-structalias.c (struct variable_info): Remove
1644         no_tbaa_pruning member.
1645         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1646         (unify_nodes): Do not copy it.
1647         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1648         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1649         (set_uids_in_ptset): Do not check it.
1650         (find_what_var_points_to): Likewise.
1651         (compute_tbaa_pruning): Remove.
1652         (compute_points_to_sets): Do not call it.
1653         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1654         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1655         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1656         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1657         (DECL_NO_TBAA_P): Likewise.
1658         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1659         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1660         (expand_omp_atomic_pipeline): Do not set it.
1661         * print-tree.c (print_node): Do not dump it.
1662         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1663         redundant check.
1664
1665 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1666
1667         PR target/39856
1668         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1669         for clobber.
1670
1671 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1672
1673         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1674         non-external.
1675
1676 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1677
1678         * Makefile.in (bversion.h, s-bversion): New targets.
1679         (TOPLEV_H): Add bversion.h.
1680         * toplev.h: Include "bversion.h".
1681         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1682         the __format__ attribute only if compiling with the same version
1683         of GCC as the sources (the "build version").
1684
1685 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1686
1687         * c-format.c (handle_format_attribute): Fix comment typo.
1688
1689 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1690
1691         PR target/37846
1692         * config/ia64/ia64.opt (mfused-madd): New.
1693         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1694         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1695         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1696         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1697         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1698         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1699         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1700         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1701         instruction if !TARGET_FUSED_MADD.
1702         (fpma, fpms): Remove colon from name.
1703
1704 2009-05-22  Richard Guenther  <rguenther@suse.de>
1705
1706         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1707         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1708         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1709         TARGET_MEM_REF.
1710         (create_expression_by_pieces): Only convert if necessary.
1711         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1712         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1713
1714 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1715
1716         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1717         regular pattern from a template and rename it ...
1718         (*extzv_truncsi_exts): ... to this.
1719
1720 2009-05-21  Richard Guenther  <rguenther@suse.de>
1721
1722         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1723         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1724         (cgraph_default_inline_p): Likewise.
1725         (cgraph_decide_inlining_incrementally): Likewise.
1726
1727 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1728             Uros Bizjak  <ubizjak@gmail.com>
1729
1730         * config/i386/cpuid.h (bit_MOVBE): New.
1731
1732         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1733
1734         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1735         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1736         (ix86_handle_option): Handle OPT_mmovbe.
1737         (ix86_target_string): Add -mmovbe.
1738         (pta_flags): Add PTA_MOVBE.
1739         (processor_alias_table): Add PTA_MOVBE to "atom".
1740         (override_options): Handle PTA_MOVBE.
1741
1742         * config/i386/i386.h (TARGET_MOVBE): New.
1743
1744         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1745         (*bswapsi_movbe): New.
1746         (*bswapdi_movbe): Likewise.
1747         (bswapdi2): Renamed to ...
1748         (*bswapdi_1): This.
1749         (bswapdi2): New expander.
1750
1751         * config/i386/i386.opt (mmovbe): New.
1752
1753         * doc/invoke.texi: Document -mmovbe.
1754
1755 2009-05-21  Taras Glek  <tglek@mozilla.com>
1756
1757         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1758         * gcc-plugin.h (plugin_init): Updated signature.
1759         * gcc-plugin.h (plugin_name_args): Moved to this header.
1760         * doc/plugins.texi (plugin_init): Updated documention to reflect
1761         API change.
1762         * doc/plugins.texi (plugin_name_args): Added to documention.
1763
1764 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1765
1766         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1767         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1768
1769 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1770
1771         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1772         JUMP_TABLE_DATA_P predicates where applicable.
1773         * config/i386/predicates.md: Ditto.
1774         * config/i386/sse.md: Ditto.
1775
1776 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1777
1778         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1779         operand2 -128 override length_immediate attribute to 1.
1780         * config/i386/predicates.md (constm128_operand): New predicate.
1781
1782         * config/i386/i386.c (memory_address_length): Handle %r12
1783         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1784         also check REGNO.
1785         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1786         mode look through optional ZERO_EXTEND and SUBREG.
1787         * config/i386/i386.md (R12_REG): New define_constant.
1788         (prefix_data16): For sse unit set also for MODE_TI insns.
1789         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1790         insns set if operand 1 is ext_QIreg_operand.
1791         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1792         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1793         immediate.
1794         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1795         mode from MODE_DI to MODE_SI.
1796         (movdi_1_rex64): Override modrm and length_immediate attributes
1797         only for movabs (TYPE_IMOV, alternative 2).
1798         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1799         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1800         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1801         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1802         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1803         prefix_rex attribute if DImode.
1804         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1805         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1806         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1807         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1808         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1809         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1810         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1811         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1812         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1813         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1814         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1815         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1816         or one operand TYPE_ISHIFT.
1817         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1818         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1819         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1820         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1821         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1822         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1823         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1824         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1825         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1826         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1827         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1828         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1829         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1830         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1831         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1832         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1833         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1834         set mode attribute, don't override length attribute.
1835         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1836         to 1.
1837         (return_internal_long): Set length attribute to 2 instead of 1.
1838         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1839         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1840         prefix_rex attribute.
1841         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1842         New predicates.
1843         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1844
1845 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1846
1847         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1848
1849 2009-05-20  Ian Lance Taylor  <iant@google.com>
1850
1851         * tree.c (build_tree_list_vec_stat): New function.
1852         (ctor_to_vec): New function.
1853         (build_nt_call_vec): New function.
1854         (build_call_array): Change args to be a const pointer.
1855         (build_call_vec): New function.
1856         * tree.h (build_nt_call_vec): Declare.
1857         (build_tree_list_vec_stat): Declare.
1858         (build_tree_list_vec): Define.
1859         (build_call_array): Update declaration.
1860         (build_call_vec): Declare.
1861         (ctor_to_vec): Declare.
1862         * c-common.c (tree_vector_cache): New static variable.
1863         (make_tree_vector): New function.
1864         (release_tree_vector): New function.
1865         (make_tree_vector_single): New function.
1866         (make_tree_vector_copy): New function.
1867         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1868         (make_tree_vector_single, make_tree_vector_copy): Declare.
1869         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1870         (c_parser_expr_list): Don't manage cache here, instead call
1871         make_tree_vector.
1872         (c_parser_release_expr_list): Remove static function.
1873         (c_parser_vec_to_tree_list): Remove static function.
1874         (c_parser_attributes): Call build_tree_list_vec instead of
1875         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1876         c_parser_release_expr_list.
1877         (c_parser_postfix_expression_after_primary): Likewise.
1878         (c_parser_objc_keywordexpr): Likewise.
1879
1880 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1881
1882         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1883         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1884         TARGET_CONVERT_TO_TYPE.
1885         * hooks.c (hook_tree_const_tree_null): Define.
1886         * hooks.h (hook_tree_const_tree_null): Declare.
1887         * target.h (struct gcc_target):  Add invalid_parameter_type,
1888         invalid_return_type, promoted_type, and convert_to_type fields.
1889         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1890         (TARGET_INVALID_RETURN_TYPE): Define.
1891         (TARGET_PROMOTED_TYPE): Define.
1892         (TARGET_CONVERT_TO_TYPE): Define.
1893         (TARGET_INITIALIZER): Update for new fields.
1894         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1895         (grokparms): Check targetm.invalid_parameter_type.
1896         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1897         * c-convert.c (convert): Check targetm.convert_to_type.
1898
1899 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1900
1901         * config/mips/mips.md (*extenddi_truncate<mode>,
1902         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1903         defintions.
1904         (*extendhi_truncateqi): New define_insn_and_sptit.
1905
1906 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1907
1908         PR middle-end/40204
1909         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1910         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1911
1912 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1913
1914         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1915         the operand of VIEW_CONVERT_EXPR.
1916
1917 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1918
1919         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1920         extended family and model for Intel processors.  Support Intel Atom.
1921
1922 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1923
1924         * gstab.h (stab_code_type): Define, to be used instead of the
1925         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1926         notice.
1927         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1928         occurrences by stab_code_type.
1929         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1930
1931 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1932
1933         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1934         (sra_insert_before): Likewise.
1935         (sra_insert_after): Likewise.
1936         (sra_init_cache): Likewise.
1937         (sra_type_can_be_decomposed_p): Likewise.
1938         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1939         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1940         (sra_insert_before): Likewise.
1941         (sra_insert_after): Likewise.
1942         (sra_init_cache): Likewise.
1943         (insert_edge_copies_seq): Made static and moved upwards.
1944
1945         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1946         case.
1947
1948         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1949
1950         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1951         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1952         simple copies.
1953
1954 2009-05-20  Richard Guenther  <rguenther@suse.de>
1955
1956         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1957         with mismatched comparison modes.
1958
1959 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1960
1961         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1962         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1963         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1964         with shifts for Thumb2.
1965         (orsi_notsi): New for orn.
1966         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1967         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1968         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1969         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1970         Don't invert remainder for IOR.
1971         
1972 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1973
1974         PR tree-optimization/40087
1975         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1976         number_of_iterations_ne): Rename never_infinite argument.
1977         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1978         number_of_iterations_le): Handle pointer-type ivs when
1979         exit_must_be_taken is false.
1980         (number_of_iterations_cond):  Do not always assume that
1981         exit_must_be_taken if the control variable is a pointer.
1982
1983 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1984
1985         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1986         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1987
1988 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1989
1990         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1991         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1992
1993 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1994
1995         PR c/40172
1996         * c.opt (Wlogical-op): Disabled by default.
1997         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1998         Wextra.
1999         * doc/invoke.texi (Wlogical-op): Likewise.
2000         
2001 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
2002
2003         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
2004         into CASE_CONVERT.
2005         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
2006         Propagate the type of the first operand.
2007         <ASSERT_EXPR>: Simplify.
2008         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
2009         Rewrite using the RHS code as discriminant.
2010         <NOP_EXPR>: Turn into CASE_CONVERT.
2011         <PLUS_EXPR>: Propagate the type of the first operand.
2012
2013 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
2014
2015         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
2016         (ia64_dconst_0_375): New.
2017         * config/ia64/ia64.c (ia64_override_options): Remove
2018         -minline-sqrt-min-latency warning.
2019         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
2020         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
2021         * config/ia64/ia64.md (*sqrt_approx): Remove.
2022         (sqrtsf2): Remove #if 0.
2023         (sqrtsf2_internal_thr): Rewrite and move to div.md.
2024         (sqrtdf): Remove assert.
2025         (sqrtdf2_internal_thr): Rewrite and move to div.md.
2026         (sqrtxf2): Remove #if 0.
2027         (sqrtxf2_internal_thr): Rewrite and move to div.md.
2028         * div.md (sqrt_approx_rf): New.
2029         (sqrtsf2_internal_thr): New implementation.
2030         (sqrtsf2_internal_lat): New.
2031         (sqrtdf2_internal_thr: New implementation.
2032         (sqrtxf2_internal): New implementation.
2033
2034 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2035             Hans-Peter Nilsson  <hp@axis.com>
2036
2037         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2038         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2039         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2040         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2041         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2042         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2043         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2044         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2045         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2046         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2047         * c-common.c: ...from here.
2048
2049 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2050
2051         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2052
2053 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2054
2055         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2056
2057 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2058
2059         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2060         assignments with memcpy calls.
2061         (add_fdes): Likewise.
2062         (binary_search_unencoded_fdes): Likewise.
2063         (linear_search_fdes): Eliminate type puns.
2064         
2065 2009-05-19  Richard Guenther  <rguenther@suse.de>
2066
2067         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2068         not falsely claim to have propagated into all uses.
2069
2070 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2071
2072         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2073         version to v3.0.
2074
2075 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2076
2077         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2078         * config/sh/sh.c (sh_legitimate_address_p): Make static.
2079         (TARGET_LEGITIMATE_ADDRESS_P): New.
2080         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2081         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2082         
2083 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
2084
2085         PR debug/40109
2086         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
2087         child of the containing namespace's DIE.
2088
2089 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
2090
2091         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
2092         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
2093         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
2094         extend patterns.
2095
2096 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2097
2098         PR target/39942
2099         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
2100         gen_align with gen_pad.
2101         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
2102         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
2103
2104         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
2105         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
2106
2107         * config/i386/i386.md (align): Renamed to ...
2108         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
2109         ASM_OUTPUT_MAX_SKIP_PAD.
2110
2111 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
2112
2113         * config.gcc: Fix variable syntax.
2114
2115         PR target/39531
2116         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
2117         before calling exact_log2.
2118         (output_iorsi3): Likewise.
2119         (output_xorsi3): Likewise.
2120
2121 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2122
2123         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
2124         for the none zero constant operand except for EQ and NE
2125         comprisons even when the first operand is R0.
2126
2127 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2128
2129         * config/s390/2064.md: Remove trailing whitespaces.
2130         * config/s390/2084.md: Likewise.
2131         * config/s390/constraints.md: Likewise.
2132         * config/s390/fixdfdi.h: Likewise.
2133         * config/s390/libgcc-glibc.ver: Likewise.
2134         * config/s390/s390-modes.def: Likewise.
2135         * config/s390/s390-protos.h: Likewise.
2136         * config/s390/s390.c: Likewise.
2137         * config/s390/s390.h: Likewise.
2138         * config/s390/s390.md: Likewise.
2139         * config/s390/tpf-unwind.h: Likewise.
2140
2141 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2142
2143         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2144
2145 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2146
2147         M68K TLS support.
2148         * configure.ac (m68k-*-*): Check if binutils support TLS.
2149         * configure: Regenerate.
2150         * config/m68k/predicates.md (symbolic_operand): Extend comment.
2151         * config/m68k/constraints.md (Cu): New constraint.
2152         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2153         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2154         (movsi): Handle TLS symbols.
2155         (addsi3_5200): Handle XTLS symbols, indent.
2156         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2157         (m68k_tls_reference_p): Declare.
2158         (m68k_legitimize_address): Declare.
2159         (m68k_unwrap_symbol): Declare.
2160         * config/m68k/m68k.opt (mxtls): New option.
2161         * config/m68k/m68k.c (ggc.h): Include.
2162         (m68k_output_dwarf_dtprel): Implement hook.
2163         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2164         (m68k_expand_prologue): Load GOT pointer when function needs it.
2165         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2166         (m68k_legitimate_constant_address_p): Same.
2167         (m68k_decompose_address): Handle TLS references.
2168         (m68k_get_gp): New static function.
2169         (enum m68k_reloc): New contants.
2170         (TLS_RELOC_P): New macro.
2171         (m68k_wrap_symbol): New static function.
2172         (m68k_unwrap_symbol): New function.
2173         (m68k_final_prescan_insn_1): New static function.
2174         (m68k_final_prescan_insn): New function.
2175         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2176         functions.
2177         (legitimize_pic_address): Handle TLS references..
2178         (m68k_tls_get_addr, m68k_get_tls_get_addr)
2179         (m68k_libcall_value_in_a0_p)
2180         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2181         (m68k_call_m68k_read_tp): Helper variables and functions for ...
2182         (m68k_legitimize_tls_address): Handle TLS references.
2183         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2184         New functions.
2185         (m68k_legitimize_address): Handle TLS symbols.
2186         (m68k_get_reloc_decoration): New static function.
2187         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2188         UNSPEC_RELOC32.
2189         (m68k_output_dwarf_dtprel): Implement hook.
2190         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2191         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2192         m68k_call_* routines.
2193         (sched_attr_op_type): Handle TLS symbols.
2194         (gt-m68k.h): Include.
2195         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2196         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2197
2198 2009-05-18  Martin Jambor  <mjambor@suse.cz>
2199
2200         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2201         (visit_store_addr_for_mod_analysis): New function.
2202         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2203         (determine_cst_member_ptr): Use gimple_assign_single_p.
2204         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2205         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2206         operands.  Don't check number of operands of a NOP_EXPR.
2207
2208 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2209
2210         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2211
2212 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2213
2214         PR c/40172
2215         * c-common.c (warn_logical_operator): Don't warn if one of
2216         expression isn't always true or false.
2217
2218 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2219
2220         * config/i386/biarch32.h: New file.
2221         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2222
2223 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2224
2225         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2226         *zero_extend<mode>_truncqi): Merge these into ...
2227         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2228         Name the pattern following this as *zero_extendhi_truncqi.
2229
2230 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2231
2232         PR middle-end/39301
2233         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2234         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2235         (output_info): Make field HOST_WIDEST_INT.
2236         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2237         (dump_bitmat_statistics): Same.
2238
2239 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2240
2241         * config.gcc (use_gcc_stdint):  Set to wrap.
2242         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2243         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2244         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2245         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2246         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2247         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2248         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2249         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2250
2251 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2252
2253         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2254         tune_64.
2255         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2256         Move definitions earlier.
2257         (OPT_ARCH64, OPT_ARCH32): Define.
2258         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2259         and tune_64.
2260
2261 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2262
2263         PR target/40153
2264         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2265         implies.
2266
2267 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2268
2269         * arm.md (movdi2): Copy non-reg values to DImode registers.
2270
2271 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2272
2273         PR target/39942
2274         * final.c (label_to_max_skip): New function.
2275         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2276         CODE_LABEL_NUMBER <= max_labelno.
2277         * output.h (label_to_max_skip): New prototype.
2278         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2279         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2280         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2281         Handle CODE_LABELs with >= 16 byte alignment or with
2282         max_skip == (1 << align) - 1.
2283         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2284         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2285
2286         PR target/39942
2287         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2288         .p2align 3 if MAX_SKIP is smaller than 7.
2289         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2290
2291 2009-05-15  Ian Lance Taylor  <iant@google.com>
2292
2293         * alias.c (struct alias_set_entry_d): Rename from struct
2294         alias_set_entry.  Change all uses.
2295         * except.c (struct call_site_record_d): Rename from struct
2296         call_site_record.  Change all uses.
2297         * except.h (struct eh_region_d): Rename from struct eh_region.
2298         Change all uses.
2299         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2300         Change all uses.
2301         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2302         ivtype_map_elt.  Change all uses.
2303         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2304         Change all uses.
2305         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2306         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2307         Change all uses.
2308         (struct sese_d): Rename from struct sese.  Change all uses.
2309         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2310         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2311         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2312         uses.
2313         (struct convert_optab_d): Rename from struct convert_optab.
2314         Change all uses.
2315         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2316         ipa_opt_pass.  Change all uses.
2317         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2318         all uses.
2319
2320         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2321         defined as a typedef.
2322         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2323         defined as a tag.
2324
2325 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2326
2327         PR 16302
2328         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2329         declaration to...
2330         (merge_ranges): Returns bool. 
2331         * tree.h (make_range): .. to here.
2332         (build_range_check): Likewise.
2333         (merge_ranges): Likewise. Renamed from merge_ranges.
2334         * c-typeck.c (parser_build_binary_op): Update calls to
2335         warn_logical_operator.
2336         * c-common.c (warn_logical_operator): Add new warning.
2337         * c-common.h (warn_logical_operator): Update declaration.
2338         
2339 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2340
2341         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2342         
2343 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2344
2345         * doc/install.texi: Document MPC requirements, flags etc.
2346
2347         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2348         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2349         Evaluate constant arguments.
2350         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2351         (fold_builtin_1): Likewise, also evaluate constant arguments.
2352         Remove superfluous break.
2353         (do_mpc_ckconv): New.
2354         * real.h: Include mpc.h.
2355         * toplev.c (print_version): Output MPC version info if available.
2356
2357 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2358
2359         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2360
2361 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2362
2363         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2364         only once.
2365
2366 2009-05-15  Jan Hubicka  <jh@suse.cz>
2367
2368         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2369         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2370         (try_inline): Fix return value.
2371         (cgraph_decide_inlining_incrementally): Honor new value.
2372         (cgraph_early_inlining): Handle indirect inlining.
2373         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2374
2375 2009-05-15  Jan Hubicka  <jh@suse.cz>
2376
2377         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2378         * cgraphunit.c (cgraph_finalize_function): Set it.
2379         (cgraph_expand_function): Use it.
2380
2381 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2382
2383         * real.c (encode_ieee_half): Define.
2384         (decode_ieee_half): Define.
2385         (ieee_half_format): Define.
2386         (arm_half_format): Define.
2387         * real.h (ieee_half_format): Declare.
2388         (arm_half_format): Declare.
2389
2390 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2391
2392         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2393         swapped, and reversed optabs exist before trying to use them.
2394
2395 2009-05-15  Paul Brook  <paul@codesourcery.com>
2396             Sandra Loosemore  <sandra@codesourcery.com>
2397
2398         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2399         loads.  Allow PRE_DEC.
2400         (output_move_neon): Handle PRE_DEC.
2401         (arm_print_operand): Add 'A' for neon structure loads.
2402         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2403         * config/arm/neon.md (neon_mov): Update comment.
2404         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2405         calls.
2406         (Um): New constraint.
2407
2408 2009-05-15  Jan Hubicka  <jh@suse.cz>
2409
2410         Revert the following patch until testsuite fallout is fixed:
2411         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2412         * cgraph.h (struct inline_summary): New filed self_wize,
2413         size_inlining_benefit, self_time and time_inlining_benefit.
2414         (struct cgraph_global_info): Replace insns by time ans size fields.
2415         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2416         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2417         (ipcp_update_callgraph): Do not touch function bodies.
2418         * ipa-inline.c: Include except.h
2419         (MAX_TIME): New constant.
2420         (overall_insns): Remove
2421         (overall_size, max_benefit): New static variables.
2422         (cgraph_estimate_time_after_inlining): New function.
2423         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2424         (cgraph_clone_inlined_nodes): Update size.
2425         (cgraph_mark_inline_edge): Update size.
2426         (cgraph_estimate_growth): Use size info.
2427         (cgraph_check_inline_limits): Check size.
2428         (cgraph_default_inline_p): Likewise.
2429         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2430         (cgraph_decide_recursive_inlining): Check size.
2431         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2432         and times.
2433         (cgraph_decide_inlining): Likewise.
2434         (cgraph_decide_inlining_incrementally): Likewise; honor
2435         PARAM_EARLY_INLINING_INSNS.
2436         (likely_eliminated_by_inlining_p): New predicate.
2437         (estimate_function_body_sizes): New function.
2438         (compute_inline_parameters): Use it.
2439         * except.c (must_not_throw_labels): New function.
2440         * except.h (must_not_throw_labels): Declare.
2441         * tree-inline.c (init_inline_once): Kill inlining_weigths
2442         * tree-ssa-structalias.c: Avoid uninitialized warning.
2443         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2444         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2445         (PARAM_INLINE_CALL_COST): Remove.
2446         (PARAM_EARLY_INLINING_INSNS): New.
2447
2448 2009-05-15  Richard Guenther  <rguenther@suse.de>
2449
2450         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2451         not TODO_update_ssa.
2452
2453 2009-05-15  Richard Guenther  <rguenther@suse.de>
2454
2455         PR tree-optimization/39999
2456         * gimple.h (gimple_expr_type): Use the expression type looking
2457         through useless conversions.
2458         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2459         (vn_nary_op_insert_stmt): Likewise.
2460         (simplify_binary_expression): Likewise.
2461
2462 2009-05-15  Richard Guenther  <rguenther@suse.de>
2463
2464         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2465         New options, enabled by default.
2466         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2467         Document.
2468         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2469         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2470         * tree-ssa-structalias.c (gate_tree_pta): New function.
2471         (pass_build_alias): Use it.
2472
2473 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2474
2475         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2476         recurse on an invariant address if a conversion from a pointer
2477         type to a wider integer type is involved.
2478
2479 2009-05-15  Jan Hubicka  <jh@suse.cz>
2480
2481         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2482         * cgraph.h (struct inline_summary): New filed self_wize,
2483         size_inlining_benefit, self_time and time_inlining_benefit.
2484         (struct cgraph_global_info): Replace insns by time ans size fields.
2485         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2486         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2487         (ipcp_update_callgraph): Do not touch function bodies.
2488         * ipa-inline.c: Include except.h
2489         (MAX_TIME): New constant.
2490         (overall_insns): Remove
2491         (overall_size, max_benefit): New static variables.
2492         (cgraph_estimate_time_after_inlining): New function.
2493         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2494         (cgraph_clone_inlined_nodes): Update size.
2495         (cgraph_mark_inline_edge): Update size.
2496         (cgraph_estimate_growth): Use size info.
2497         (cgraph_check_inline_limits): Check size.
2498         (cgraph_default_inline_p): Likewise.
2499         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2500         (cgraph_decide_recursive_inlining): Check size.
2501         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2502         and times.
2503         (cgraph_decide_inlining): Likewise.
2504         (cgraph_decide_inlining_incrementally): Likewise; honor
2505         PARAM_EARLY_INLINING_INSNS.
2506         (likely_eliminated_by_inlining_p): New predicate.
2507         (estimate_function_body_sizes): New function.
2508         (compute_inline_parameters): Use it.
2509         * except.c (must_not_throw_labels): New function.
2510         * except.h (must_not_throw_labels): Declare.
2511         * tree-inline.c (init_inline_once): Kill inlining_weigths
2512         * tree-ssa-structalias.c: Avoid uninitialized warning.
2513         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2514         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2515         (PARAM_INLINE_CALL_COST): Remove.
2516         (PARAM_EARLY_INLINING_INSNS): New.
2517         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2518         (inline-call-cost): Remove.
2519         (early-inlining-insns): New.
2520
2521 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2522
2523         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2524         for bounds.
2525         (print_int_cst_bounds_in_octal_p): Likewise.
2526         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2527         with subtypes.
2528         * dwarf2out.c (base_type_die): Likewise.
2529         (is_subrange_type): Delete.
2530         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2531         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2532         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
2533         if the destination type is boolean.
2534         (build_range_check): Do not special-case subtypes.
2535         (fold_sign_changed_comparison): Likewise.
2536         (fold_unary): Likewise.
2537         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2538         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2539         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2540         * tree.c (subrange_type_for_debug_p): New predicate based on the
2541         former is_subrange_type.
2542         * tree.h (subrange_type_for_debug_p): Declare.
2543         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2544         (convert_affine_scev): Remove call to above function.
2545         (chrec_convert_aggressive): Likewise.
2546         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2547         false for conversions involving subtypes.
2548         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2549         (vrp_val_min): Likewise.
2550         (needs_overflow_infinity): Likewise.
2551         (extract_range_from_unary_expr): Likewise.
2552
2553 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2554
2555         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2556         * config/frv/frv.c: Likewise.
2557         * config/s390/s390.c: Likewise.
2558         * config/sparc/sparc.h: Likewise.
2559         * config/i386/i386.h: Likewise.
2560         * config/i386/i386.c: Likewise.
2561         * config/crx/crx.c: Likewise.
2562         * config/m68hc11/m68hc11.h: Likewise.
2563         * config/iq2000/iq2000.c: Likewise.
2564         * config/mn10300/mn10300.h: Likewise.
2565         * config/mn10300/mn10300.c: Likewise.
2566         * config/m68k/m68k.c: Likewise.
2567         * config/rs6000/rs6000.c: Likewise.
2568         * config/rs6000/xcoff.h: Likewise.
2569         * config/rs6000/linux64.h: Likewise.
2570         * config/rs6000/sysv4.h: Likewise.
2571         * config/score/score3.c: Likewise.
2572         * config/score/score7.c: Likewise.
2573         * config/score/score.c: Likewise.
2574         * config/arm/arm.md: Likewise.
2575         * config/mips/mips.c: Likewise.
2576         * config/mips/mips.md: Likewise.
2577         * config/bfin/bfin.h: Likewise.
2578         * config/pa/pa.c: Likewise.
2579         * config/pa/constraints.md: Likewise.
2580
2581         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2582         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2583         * config/pdp11/pdp11.h: Use memory_address_p instead.
2584
2585 2009-05-14  Ian Lance Taylor  <iant@google.com>
2586
2587         * passes.c (finish_optimization_passes): Change i to int.
2588         * plugin.c (plugins_active_p): Change event to int.
2589         (dump_active_plugins): Likewise.
2590         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2591         Add cast.
2592         * tree.c (tree_range_check_failed): Change c to unsigned int.
2593         (omp_clause_range_check_failed): Likewise.
2594         (build_common_builtin_nodes): Change mode to int.  Add cast.
2595         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2596         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2597
2598         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2599         ++ or -- with a variable of enum type.
2600
2601 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2602
2603         PR driver/40144
2604         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2605
2606 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2607
2608         * store-motion.c: Do not include params.h
2609         * Makefile.in: Fix dependencies for various files.
2610
2611 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2612
2613         * auto-inc-dec.c: Fix pass description, remove apparent
2614         accidental duplication.
2615
2616 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2617
2618         PR middle-end/40147
2619         * ipa-utils.h (memory_identifier_string): Moved to ...
2620         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2621
2622 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2623
2624         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2625         in the former documentation of...
2626         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2627         * ira-conflicts.c (get_dup_num): Use address_operand.
2628         * targhooks.c (default_legitimate_address_p): New.
2629         * targhooks.h (default_legitimate_address_p): New.
2630         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2631         Call hook.
2632         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2633         * target.h (struct target): Add legitimate_address_p.
2634         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2635         (TARGET_INITIALIZER): Include it.
2636
2637         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2638         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2639         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2640         (TARGET_LEGITIMATE_ADDRESS_P): New.
2641
2642         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2643         (REG_OK_STRICT_P): Delete.
2644         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2645         (frv_legitimate_address_p_1): ... this.
2646         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2647         (frv_legitimate_address_p_1): ... the renamed old
2648         frv_legitimate_address_p.
2649         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2650         (TARGET_LEGITIMATE_ADDRESS_P): New.
2651
2652         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2653         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2654         * config/s390/s390.c (legitimate_address_p): Rename to...
2655         (s390_legitimate_address_p): ... this, make static.
2656         (legitimize_address): Adjust call.
2657         (TARGET_LEGITIMATE_ADDRESS_P): New.
2658         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2659
2660         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2661         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2662         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2663         (TARGET_LEGITIMATE_ADDRESS_P): New.
2664
2665         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2666         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2667         * config/spu/spu.c (spu_legitimate_address): Rename to...
2668         (spu_legitimate_address_p): ... this, make static.
2669         (TARGET_LEGITIMATE_ADDRESS_P): New.
2670
2671         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2672         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2673         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2674         (sparc_legitimate_address_p): ... this, make static and return bool.
2675         (legitimize_address): Adjust call.
2676         (TARGET_LEGITIMATE_ADDRESS_P): New.
2677
2678         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2679         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2680         * config/i386/i386.c (legitimate_address_p): Rename to...
2681         (ix86_legitimate_address_p): ... this, make static.
2682         (constant_address_p): Move after it, adjust call.
2683         (TARGET_LEGITIMATE_ADDRESS_P): New.
2684
2685         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2686         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2687         * config/avr/avr.c (legitimate_address_p): Rename to...
2688         (avr_legitimate_address_p): ... this, make static.
2689         (legitimize_address): Adjust call.
2690         (TARGET_LEGITIMATE_ADDRESS_P): New.
2691
2692         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2693         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2694         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2695         (TARGET_LEGITIMATE_ADDRESS_P): New.
2696
2697         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2698         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2699         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2700         (TARGET_LEGITIMATE_ADDRESS_P): New.
2701
2702         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2703         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2704         Remove.
2705         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2706         Make static.
2707         (TARGET_LEGITIMATE_ADDRESS_P): New.
2708
2709         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2710         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2711         Remove.
2712         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2713         Rename to...
2714         (m68hc11_legitimate_address_p): ... this, make static.
2715         (go_if_legitimate_address_internal): Rename to...
2716         (m68hc11_legitimate_address_p_1): ... this.
2717         (legitimize_address): Adjust call.
2718         (TARGET_LEGITIMATE_ADDRESS_P): New.
2719
2720         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2721         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2722         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2723         (TARGET_LEGITIMATE_ADDRESS_P): New.
2724
2725         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2726         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2727         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2728         (mn10300_legitimate_address_p): ... this, make static.
2729         (TARGET_LEGITIMATE_ADDRESS_P): New.
2730
2731         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2732         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2733         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2734         (TARGET_LEGITIMATE_ADDRESS_P): New.
2735
2736         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2737         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2738         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2739         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2740         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2741         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2742         (rs6000_legitimate_address_p): ... this, make static.
2743         (TARGET_LEGITIMATE_ADDRESS_P): New.
2744         (REG_MODE_OK_FOR_BASE_P): Delete.
2745         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2746
2747         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2748         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2749         Delete.
2750         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2751         static, adjust types.
2752         (TARGET_LEGITIMATE_ADDRESS_P): New.
2753
2754         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2755         * config/score/score.c (score_address_p): Rename to...
2756         (score_legitimate_address_p): ... this.
2757         (TARGET_LEGITIMATE_ADDRESS_P): New.
2758         * config/score/score3.c (score3_address_p): Rename to...
2759         (score3_legitimate_address_p): ... this.
2760         * config/score/score7.c (score7_address_p): Rename to...
2761         (score7_legitimate_address_p): ... this.
2762
2763         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2764         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2765         GO_IF_LEGITIMATE_ADDRESS): Delete.
2766         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2767         thumb2_legitimate_address_p): Delete.
2768         (arm_legitimate_address_p): Rename to...
2769         (arm_legitimate_address_outer_p): ... this.
2770         * config/arm/constraints.md ("Uq"): Adjust call.
2771         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2772         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
2773         to...
2774         (arm_legitimate_address_outer_p): ... this.
2775         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
2776         static.
2777         (TARGET_LEGITIMATE_ADDRESS_P): New.
2778
2779         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2780         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2781         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2782         (TARGET_LEGITIMATE_ADDRESS_P): New.
2783
2784         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2785         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2786         * config/vax/vax.c (legitimate_address_p): Rename to...
2787         (vax_legitimate_address_p): ... this, make static.
2788         (TARGET_LEGITIMATE_ADDRESS_P): New.
2789
2790         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2791         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2792         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2793         (TARGET_LEGITIMATE_ADDRESS_P): New.
2794
2795         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2796         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2797         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2798         (mmix_legitimate_address_p): ... this, make static.
2799         (TARGET_LEGITIMATE_ADDRESS_P): New.
2800
2801         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2802         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2803         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2804         (TARGET_LEGITIMATE_ADDRESS_P): New.
2805
2806 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2807
2808         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2809         of MODE_COMPLEX_INT.
2810
2811 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2812
2813         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2814         LCT_NORMAL in function call.
2815         * mips-tdump.c (print_file_desc): Add cast to enum type.
2816         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2817         (mark_stabs): Add casts to enum types.
2818         (parse_stabs_common): Add casts to enum types.
2819
2820 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2821
2822         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2823         Check for invalid values of LETTER.
2824
2825 2009-05-13  Taras Glek  <tglek@mozilla.com>
2826
2827         * attribs.c (register_attribute): moved out attribute registration
2828         into register_attribute.
2829         * doc/plugins.texi: Documented register_attribute and
2830         PLUGIN_ATTRIBUTES.
2831         * gcc-plugin.h: Added forward decl for register_attribute.
2832         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2833         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2834         PLUGIN_ATTRIBUTES boilerplate.
2835
2836 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2837
2838         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2839         values even in sentinel and empty entries.
2840         (ms_printf_flag_specs):  Likewise.
2841         (ms_scanf_flag_specs):  Likewise.
2842         (ms_strftime_flag_specs):  Likewise.
2843         (ms_print_char_table):  Likewise.
2844         (ms_scan_char_table):  Likewise.
2845         (ms_time_char_table):  Likewise.
2846
2847 2009-05-13  Doug Kwan  <dougkwan@google.com>
2848
2849         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2850
2851 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2852
2853         * config/mips/mips.md (store): Add attributes for QI and HI.
2854         Update comment.
2855         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2856         (truncdi<mode>2): ... this new pattern.
2857
2858 2009-05-13  Brad Hards  <bradh@kde.org>
2859
2860         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2861
2862 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2863             Ben Elliston <bje@au.ibm.com>
2864
2865         PR middle-end/40035
2866         * dse.c (check_mem_read_rtx): Guard against width == -1.
2867
2868 2009-05-13  Michael Matz  <matz@suse.de>
2869
2870         PR middle-end/39976
2871         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2872         (trivially_conflicts_p): New function.
2873         (insert_backedge_copies): Use it.
2874
2875 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2876
2877         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2878         (handle_stdc_pragma): Use new enum constant names.
2879         (handle_pragma_float_const_decimal64): Ditto.
2880
2881 2009-05-13  Ian Lance Taylor  <iant@google.com>
2882
2883         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2884         tree.def.
2885
2886 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2887
2888         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2889         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2890         multilibs.
2891         * config/m68k/m68k.h (FL_UCLINUX): Define.
2892
2893 2009-05-13  Jan Hubicka  <jh@suse.cz>
2894
2895         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2896
2897 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2898
2899         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2900         unless -fschedule-insns is specified.
2901
2902 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2903
2904         PR target/39561
2905         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2906         TARGET_EXPAND_CBRANCHDI4.
2907         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2908         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2909         (cmpeqdi): Fix comment.
2910
2911 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2912
2913         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2914         (sh_legitimate_address_p): Likewise.
2915         * config/sh/sh.c (sh_legitimate_index_p): New.
2916         (sh_legitimate_address_p): Likewise.
2917         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2918         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2919         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2920         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2921         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2922         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2923         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2924         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2925         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2926
2927 2009-05-12  Jan Hubicka  <jh@suse.cz>
2928
2929         * tree-inline.c (estimate_operator_cost): Add operands;
2930         when division happens by constant, it is cheap.
2931         (estimate_num_insns): Loads and stores are not having cost of 0;
2932         EH magic stuff is cheap; when computing runtime cost of switch,
2933         use log2 base of amount of its cases; builtin_expect has cost of 0;
2934         compute cost for moving return value of call.
2935         (init_inline_once): Initialize time_based flags.
2936         * tree-inline.h (eni_weights_d): Add time_based flag.
2937
2938 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2939
2940         * df-core.c: Update head documentation.
2941
2942 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2943
2944         PR bootstrap/40118
2945         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2946         shadowing exisiting variable op1.
2947
2948 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2949
2950         PR target/37179
2951         * config/i386/driver-i386.c (processor_signatures): New enum.
2952         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2953         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2954         processor signature to detect geode processor.
2955
2956 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2957
2958         Revert:
2959
2960         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2961
2962         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2963         causes spurious differences between trunk and cond-optab branch.
2964
2965 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2966
2967         * dojump.c (compare_from_rtx): Delete.
2968         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2969         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2970         if the comparison does not satisfy the predicate; test predicates for
2971         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2972         further if one existing pattern fails.
2973         * expr.h (compare_from_rtx): Delete.
2974         (prepare_operand): Declare it.
2975         * optabs.c: Change "lib call" to "libcall" throughout.
2976         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2977         HAVE_conditional_trap, emit_cmp_insn): Delete.
2978         (can_compare_p): Delete cmp_optab case.
2979         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2980         Accept other parameters by value.
2981         (prepare_operand): Make non-static.
2982         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2983         other parameters by value.  Try to widen operands here based on
2984         an optab_methods argument and looking at cbranch_optab.
2985         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2986         loop.  Use cbranch_optab directly.
2987         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2988         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2989         assertion.
2990         (emit_conditional_move, emit_conditional_add): Inline what's needed
2991         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2992         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2993         with COMPARE.  Move cmov_optab and cstore_optab above
2994         with cbranch_optab, move cmp_optab down with ucmp_optab,
2995         remove tst_otpab.  Do not initialize trap_rtx.
2996         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2997         for trap code.  Do not check HAVE_conditional_trap.  Use
2998         prepare_cmp_insn.  Accept no predicate for operand 3.
2999         * optabs.h (OTI_cmp): Mark as used only for libcalls.
3000         (OTI_ctrap, ctrap_optab): New.
3001         (tst_optab): Delete.
3002         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
3003         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
3004         with lookup of ctrap_optab.
3005         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
3006         Delete.
3007         (ctrap_optab): New.
3008
3009         * combine.c (combine_simplify_rtx, simplify_set): Do not
3010         special case comparing against zero for cc0 machines.
3011         * simplify-rtx.c (simplify_binary_operation_1): Never remove
3012         COMPARE on cc0 machines.
3013         (simplify_relational_operation): Return a new expression when
3014         a COMPARE could be removed.
3015         * final.c (final_scan_insn): Compare cc_status values
3016         against LHS of a (compare FOO (const_int 0)) cc0 source.
3017         Also check if cc_status.value is the full compare.
3018
3019         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
3020         (cstoreMM4): Document.
3021         (conditional_trap): Document ctrapMM4 instead.
3022         (sync_compare_and_swapMM): Refer to cbranchcc4.
3023         (Dependent Patterns): Eliminate obsolete information referring to
3024         the old jump optimization phase.
3025         (Canonicalization): Include cbranchcc4 case, omit canonicalization
3026         of compares with 0 on cc0 machines.
3027         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
3028         avoiding references to cc0.  Remove text about storing operands
3029         in cmpMM.
3030         * doc/tm.texi (Condition Codes): Include blurb on different
3031         condition code representations, separate into subsections for
3032         CC0, MODE_CC and conditional execution.
3033
3034         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
3035         alpha_emit_setcc): Accept operands and a machine mode.
3036         * config/alpha/alpha.c (alpha_emit_conditional_branch):
3037         Get code/op0/op1 from operands, use machine mode argument
3038         instead of alpha_compare.fp_p.  Emit the branch here.
3039         (alpha_emit_setcc): Likewise, and return boolean.
3040         (alpha_emit_conditional_move): Likewise.  Assert that
3041         cmp_op_mode == cmp_mode, and simplify accordingly.
3042         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
3043         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
3044         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
3045         Delete.
3046         (stack probe test): Use cbranchdi4.
3047         * config/alpha/predicates.md (alpha_cbranch_operator): New.
3048
3049         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
3050         * config/arc/arc.h (movsicc, movsfcc): Use it.
3051         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
3052         (cbranchsi4, cstoresi4): New.
3053         (cmpsi, bCC and sCC expanders): Remove. 
3054
3055         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
3056         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
3057         * config/arm/predicates.md (arm_comparison_operator): Only include
3058         floating-point operators if there is a hardware floating-point unit.
3059         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
3060         deferring to cbranch_cc and cstore_cc respectively.
3061         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
3062         cbranch_cc, cstore_cc): New.
3063         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
3064         arm_compare_op1.
3065         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
3066
3067         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
3068         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
3069         as an argument.
3070         (adjust_insn_length): Adjust calls.
3071         (avr_reorg): Handle (compare (foo) (const_int 0)).
3072         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
3073         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
3074         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
3075         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
3076         (bCC): Remove.
3077         (cbranchqi4, cbranchhi4, cbranchsi4): New.
3078         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
3079
3080         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
3081         (cbranchsi4, cstorebi4, cstoresi4): New.
3082         (movbisi): This insn is duplicate, split it to zero_extend.
3083         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
3084         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
3085         (bfin_optimize_loop): Use cbranch expander.
3086         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
3087         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
3088         (bfin_bimode_comparison_operator): ... this.
3089         (bfin_direct_comparison_operator): New.
3090  
3091         * config/cris/cris.c (cris_normal_notice_update_cc): Look
3092         inside (compare FOO (const_int 0)).
3093         (cris_rtx_costs): Handle ZERO_EXTRACT.
3094         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
3095         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
3096         (*tstdi_v32): Delete.
3097         (*cmpdi_non_v32): Add M alternative for operand 1.
3098         (cmpsi, cmp<mode>): Make private.
3099         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
3100         with COMPARE.
3101         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
3102
3103         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
3104         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
3105         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
3106         (cc_reg_operand): New.
3107         (any_cond): Delete.
3108         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
3109         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
3110         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
3111         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
3112         crx_expand_scond): Delete.
3113
3114         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
3115         (cbranchsi4): New.
3116         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
3117         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
3118
3119         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
3120         cstoresi4, cstoresf4, cstoredf4): New.
3121         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
3122         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3123         Receive the entire operands array.
3124         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
3125         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
3126         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
3127         Get test/op0/op1 from the operands array.
3128         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
3129
3130         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
3131         (h8300_expand_store): New.
3132         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
3133         (const_int 0)).
3134         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
3135         (h8300_expand_store): New.
3136         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
3137         or do not try to produce (set (cc0) REG).
3138         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
3139         change a compare into a move to a scratch register.  Disable some
3140         peepholes when comparing with zero.
3141         (tstsi, tsthi, tstsi, cmpqi): Make private.
3142         (cmphi): Delete.
3143         (bCC, sCC): Delete.
3144         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
3145         cstoresi4): New.
3146
3147         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
3148         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
3149         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
3150         (ix86_emit_i387_log1p): Use cbranchxf2.
3151         (ix86_expand_setcc): Return void.
3152         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
3153         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
3154         cmp<MODEF>, cmpcc): Remove.
3155         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
3156         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
3157         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
3158         (sCC and bCC expanders): Remove.
3159         (stack_protect_test): Use cbranchcc4.
3160
3161         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
3162         Delete.
3163         (ia64_expand_compare): Accept three rtx by reference and return void.
3164         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
3165         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
3166         from *expr.  Update *expr with the BImode comparison to do.
3167         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
3168         cmptf, bCC, sCC, conditional_trap): Delete.
3169         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
3170         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
3171         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
3172         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
3173         * config/ia64/predicates.md (ia64_cbranch_operator): New.
3174
3175         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
3176         type of last argument.
3177         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
3178         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
3179         use machine mode argument instead of branch_type.  Remove dead
3180         code for floating-point comparisons.
3181         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
3182         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
3183         Remove.
3184         (cbranchsi4, cstoresi4): New.
3185         * config/iq2000/predicates.md (reg_or_const_operand): New.
3186
3187         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
3188         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
3189         (b<code>_op): Rewrite to...
3190         (bcc_op): ... this, using match_operator.
3191         (s<code>_op): Rewrite to...
3192         (scc_op): ... this, using match_operator.
3193         (s<code>_24_op): Rewrite to...
3194         (scc_op_24): ... this, using match_operator.
3195         (s<code>_<mode>): Rewrite to...
3196         (cstore<mode>4): ... this, using match_operator.
3197         (s<code>_<mode>_24): Rewrite to...
3198         (cstore<mode>4_24): ... this, using match_operator.
3199         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
3200         m32c_unpend_compare, m32c_expand_scc): Delete.
3201         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
3202         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
3203         (m32c_expand_movcc): Change NE to EQ if necessary.
3204         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
3205
3206         * config/m32r/m32r-protos.h (gen_cond_store): New.
3207         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
3208         (gen_cond_store): New, from sCC patterns.
3209         (m32r_expand_block_move): Use cbranchsi4.
3210         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
3211         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
3212         (cbranchsi4, cstoresi4): New.
3213         
3214         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
3215         Delete.
3216         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
3217         (m68hc11_notice_update_cc): Look into a compare with 0.
3218         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
3219         Delete.
3220         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
3221         cmphi, cmpqi, bCC): Delete.
3222         (cbranchsi4, cbranchhi4, cbranchqi4): New.
3223         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
3224         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
3225         sets with COMPARE.
3226
3227         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
3228         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
3229         * config/m68k/constraints.md (H): New.
3230         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
3231         the define_insn below.
3232         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
3233         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
3234         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
3235         patterns): Wrap RHS with COMPARE.
3236         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
3237         (*cmpdi_internal): Name this pattern.
3238         (cmpdi): Change to define_insn.
3239         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
3240         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
3241         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
3242         predicate.
3243         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
3244         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
3245         (conditional_trap): Change to...
3246         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
3247         (*conditional_trap): Use the ordered_comparison_operator and
3248         const1_operand predicates.
3249         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
3250         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
3251         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
3252         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
3253
3254         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
3255         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
3256         (mcore_gen_compare): New. 
3257         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
3258         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
3259         (mcore_gen_compare): ... this.
3260         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
3261         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
3262         (stack probe pattern): Use cbranchsi4.
3263
3264         * config/mips/predicates.md (mips_cstore_operator): New.
3265         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
3266         * config/mips/mips.md (any_cond): Delete.
3267         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
3268         always succeed.
3269         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
3270         fixuns_truncsfdi2): Use cbranch patterns.
3271         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
3272         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
3273         Adjust call to mips_expand_conditional_branch.
3274         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
3275         cstore<GPR:mode>4.
3276         * config/mips/mips-protos.h (mips_expand_conditional_branch,
3277         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
3278         * config/mips/mips.c (cmp_operands): Delete.
3279         (mips_emit_compare): Get comparison operands from *op0/*op1.
3280         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
3281         that it succeeds.  Use op0/op1 instead of cmp_operands.
3282         (mips_expand_conditional_branch, mips_expand_conditional_move,
3283         mips_expand_conditional_trap): Likewise.
3284         (mips_block_move_loop): Use cbranch patterns. 
3285         * config/mips/mips.h (cmp_operands): Delete.
3286
3287         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
3288         (mmix_gen_compare_reg): Just return a register in the right CC mode.
3289         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
3290         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
3291         (*cmpcc_folded): Rename to...
3292         (*cmpdi_folded): this.
3293         (*cmpcc): Rename to...
3294         (*cmps): ... this.
3295         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
3296         (bCC): Remove.
3297         (cbranchdi4): New.
3298         (cbranchdf4): New.  Handle invalid comparisons here.
3299         * config/mmix/predicates.md (float_comparison_operator): New.
3300
3301         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
3302         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
3303         * config/mn10300/mn10300.md (tst): Delete.
3304         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
3305         Name these patterns and wrap RHS in a compare.
3306         (*cmpsi): Make this pattern private.  Include tst.
3307         (*cmpsf): Make this pattern private.
3308         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
3309         (compare with zero peepholes): Likewise.
3310         (bCC): Remove.
3311         (cbranchsi4, cbranchsf4): New.
3312         (casesi): Use cbranchsi4.
3313
3314         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
3315         hppa_branch_type): Delete.
3316         (return_addr_rtx): Use cbranchsi4.
3317         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
3318         Emit CCFPmode comparison here.
3319         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
3320         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
3321         hppa_branch_type): Delete.
3322         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
3323         (movsicc, movdicc): Remove references to hppa_compare_op0,
3324         hppa_compare_op1 and compare_from_rtx.
3325         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
3326         (casesi): Use cbranchsi4.
3327
3328         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
3329         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
3330         * config/pdp11/pdp11.md (register_or_const0_operand): New.
3331         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
3332         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
3333         (bCC): Delete.
3334         (cbranchdf4, cbranchhi4, cbranchqi4): New.
3335         (*branch, *branch_inverted): New.
3336
3337         * config/picochip/picochip.md (cbranchhi4): Use
3338         ordered_comparison_operator.
3339         (cmphi, bCC): Remove.
3340
3341         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
3342         (trap_comparison_operator): Delete.
3343         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
3344         rs6000_emit_cbranch): Accept mode and operands.
3345         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
3346         rs6000_compare_fp_p): Delete.   
3347         (rs6000_generate_compare): Accept mode and comparison.  Extract code
3348         and op0/op1 from there.  Replace references to rs6000_compare_op0
3349         and rs6000_compare_op1.
3350         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
3351         extract result from passed operands.
3352         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
3353         extract loc from passed operands.
3354         (rs6000_emit_cmove): Likewise.
3355         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
3356         rs6000_compare_fp_p): Delete.
3357         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
3358         (cbranch<GPR>4, cbranch<FP>4): New.
3359         (cstore<mode>4): New.  Consolidate here all choices about when to use
3360         portable or specialized sCC sequences.
3361         (stack_protect_test): Use cbranchsi4.
3362         (conditional_trap): Replace with ctrap<GPR>4.
3363         (conditional trap insn): Replace trap_comparison_operator with
3364         ordered_comparison_operator. 
3365
3366         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
3367         (s390_emit_prologue): Use ctrap.
3368         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
3369         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
3370         New predicates replacing...
3371         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
3372         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
3373         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
3374         (add<mode>cc): Do not use s390_compare_op0/op1.
3375         (s<code>): Change to...
3376         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
3377         (seq): Change to...
3378         (cstorecc4): ... this.  Handle EQ or NE equally.
3379         (*sne): Un-privatize for use in cstorecc4.
3380         (b<code>): Change to...
3381         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
3382         (conditional_trap): Replace with...
3383         (ctrap<GPR>4, ctrap<FP>4): ... these.
3384         (stack_protect): Use cbranchcc4.
3385
3386         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
3387         * config/score/score-protos.h (score_gen_cmp): Delete.
3388         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
3389         (score_block_move-loop): Use cbranchsi4.
3390         * config/score/score.md (cbranchsi4): New.
3391         (cmpsi, bCC): Delete.
3392         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
3393         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3394         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
3395         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
3396         * config/score/score3.h (score3_gen_cmp): Delete.
3397         * config/score/score7.h (score7_gen_cmp): Delete.
3398
3399         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
3400         (sh_emit_scc_to_t): ... this.  Return void.
3401         (from_compare): Rename to...
3402         (sh_emit_compare_and_branch): ... this.
3403         (sh_emit_compare_and_set): New.
3404         (sh_expand_t_scc): Accept operands.
3405         * config/sh/predicates.md (sh_float_comparison_operator): New.
3406         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
3407         (prepare_scc_operands): Rename to...
3408         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
3409         arguments.
3410         (sh_emit_cheap_store_flag): New.
3411         (sh_emit_set_t_insn): New.
3412         (from_compare): Rename to...
3413         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
3414         handling of TARGET_SH2E floating point to avoid recursive call.
3415         Generate branch here.
3416         (sh_emit_compare_and_set): New.
3417         (sh_expand_t_scc): Get op0/op1 from arguments.
3418         (sh_emit_cheap_store_flag): New.
3419         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3420         cases.
3421         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3422         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3423         (movsicc, movdicc): Do nothing when it recreated operands from
3424         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3425         prepare_scc_operands (now sh_emit_scc_to_t).
3426         (udivdi3): Use cstoresi4.
3427         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3428         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3429         (cbranchint4_media, cbranchfp4_media): New.
3430         (casesi): Use cbranchdi4.
3431         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3432         Delete.
3433         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3434         (movnegt): Remove second operand.
3435         (cbranchsf4, cbranchdf4): New.
3436         (stack_protect): Use cbranchdi4/cbranchsi4.
3437
3438         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3439         (gen_compare_reg): Accept comparison, extract part of it to...
3440         (gen_compare_reg_1): ... this. 
3441         (gen_compare_operator): Delete.
3442         (gen_v9_scc): Accept separate destination, comparison code and arms.
3443         Do not use sparc_compare_op0/sparc_compare_op1.
3444         (emit_scc_insn, emit_conditional_branch_insn): New.
3445         (emit_v9_brxx): Make static.  Remove useless assertion.
3446         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3447         emit_cmp_insn.
3448         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3449         * config/sparc/sparc-protos.h (gen_compare_reg,
3450         sparc_emit_float_lib_cmp): Adjust prototype.
3451         (emit_scc_insn, emit_conditional_branch_insn): New.
3452         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3453         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3454         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3455         iterators to the top.
3456         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3457         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3458         snedi_special_trunc): Delete.
3459         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3460         and snedi_special_trunc.
3461         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3462         cbranchdi4, cbranch<F:mode>4): New.
3463         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3464         here.  Use gen_compare_reg instead of gen_compare_operator.
3465         (conditional_trap): Replace with...
3466         (ctrapsi4, ctrapdi4): ... this.
3467         (stack_protect_test): Use cbranchcc4.
3468
3469         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3470         argument to rtx.
3471         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3472         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3473         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3474         from operands[0] or operands[3] depending on is_set.
3475         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3476         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3477         cmpdf, bCC), sCC: Remove.
3478         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3479         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3480         cstoredf4): New.
3481         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3482         spu_emit_branch_or_set.
3483
3484         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3485         Add two arguments.
3486         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3487         xstormy16_compare_op1): Delete.
3488         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3489         xstormy16_compare_op1): Delete. 
3490         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3491         Adjust calls.
3492         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3493         (cmphi, cmpsi, bCC): Remove.
3494
3495         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3496         (*cmpsi): ... this one.
3497         (cbranchsi4, cstoresi4): New.
3498         (bCC expanders): Delete.
3499         (sCC insns): Fold into...
3500         (*setcc): ... this one.
3501         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3502         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3503         (movsicc): Simplify.
3504         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3505
3506         * config/vax/vax-protos.h (cond_name): New.
3507         (vax_output_conditional_branch): Remove.
3508         * config/vax/vax.c (cond_name): New.
3509         (vax_output_conditional_branch): Remove.
3510         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3511         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3512         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3513         (bit<VAXint>): Wrap source with (compare).
3514         (b<code> and following unnamed pattern): Rename to *branch and
3515         *branch_reversed.  Change macroization to match_operator.
3516         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3517
3518         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3519         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3520         Change last argument to machine_mode.
3521         (xtensa_expand_scc): Add machine_mode argument.
3522         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3523         (gen_conditional_move, xtensa_expand_conditional_branch,
3524         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3525         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3526         Adjust operand numbers.
3527         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3528         Delete.
3529         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3530         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3531         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3532
3533 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3534
3535         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3536         causes spurious differences between trunk and cond-optab branch.
3537
3538 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3539
3540         PR target/37137
3541         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3542
3543 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3544
3545         * tree.c (iterative_hash_pointer): Delete.
3546         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3547         Hash UIDs and versions of SSA names.  Don't special-case built-in
3548         function declarations.
3549
3550 2009-05-11  Ian Lance Taylor  <iant@google.com>
3551
3552         PR bootstrap/40103
3553         * graphite.c: Force -Wc++-compat to only be a warning before
3554         #including "cloog/cloog.h".
3555
3556 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3557
3558         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3559         
3560 2009-05-11  Jan Hubicka  <jh@suse.cz>
3561
3562         * tree-ssa-loop-ivcanon.c: Include target.h
3563         (struct loop_size): new structure.
3564         (constant_after_peeling): New predicate.
3565         (tree_estimate_loop_size): New function.
3566         (estimated_unrolled_size): Rewrite for new estimates.
3567         (try_unroll_loop_completely): Use new estimates.
3568         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3569
3570 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3571
3572         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3573         libcpp interface change.
3574         (spu_macro_to_expand): Likewise.
3575
3576 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3577
3578         PR tree-optimization/40026
3579         * gimplify.c (gimplify_init_constructor): Change initial conditional
3580         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3581         optimize_compound_literals_in_ctor.
3582
3583 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3584
3585         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3586         New devices.
3587         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3588
3589 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3590
3591         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3592         HOST_WIDE_INT for gap.
3593
3594 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3595
3596         PR tree-optimization/40074
3597         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3598         account in group size and step comparison.
3599
3600 2009-05-11  Richard Guenther  <rguenther@suse.de>
3601
3602         * passes.c (init_optimization_passes): Strip now incorrect comment.
3603         (execute_function_todo): Do not set PROP_alias.
3604         * tree-pass.h (PROP_alias): Remove.
3605         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3606         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3607         * tree-nrv.c (pass_return_slot): Likewise.
3608         * tree-object-size.c (pass_object_sizes): Likewise.
3609         * tree-ssa-dom.c (pass_dominator): Likewise.
3610         (pass_phi_only_cprop): Likewise.
3611         * tree-ssa-dse.c (pass_dse): Likewise.
3612         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3613         (pass_cselim): Likewise.
3614         * tree-ssa-pre.c (pass_pre): Likewise.
3615         (pass_fre): Likewise.
3616         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3617         * tree-ssa-sink.c (pass_sink_code): Likewise.
3618         * tree-stdarg.c (pass_stdarg): Likewise.
3619         * tree-tailcall.c (pass_tail_calls): Likewise.
3620         * tree-vrp.c (pass_vrp): Likewise.
3621
3622 2009-05-10  Ian Lance Taylor  <iant@google.com>
3623
3624         * basic-block.h (enum profile_status): Break out of struct
3625         control_flow_graph.
3626         * cgraph.h (struct inline_summary): Break out of struct
3627         cgraph_local_info.
3628         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3629         of struct cgraph_order_sort.
3630         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3631         * cse.c (struct branch_path): Break out of struct
3632         cse_basic_block_data.
3633         * except.h (enum eh_region_type): Break out of struct eh_region.
3634         * gcc.c (enum add_del): Break out of struct modify_target.
3635         * genrecog.c (enum decision_type): Break out of struct decision_test.
3636         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3637         ggc_pch_data.
3638         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3639         * regmove.c (enum match_use): New enum, broken out of struct match.
3640         * sched-int.h (enum post_call_group): New enum, broken out of
3641         struct deps.
3642         (struct deps_reg): Break out of struct deps.
3643         * target.h (struct asm_int_op): Break out of struct gcc_target.
3644         * tree-eh.c (struct goto_queue_node): Break out of struct
3645         leh_tf_state.
3646         * tree-inline.h (enum copy_body_cge_which): Break out of
3647         copy_body_data.
3648         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3649
3650         * c-decl.c (in_struct, struct_types): New static variables.
3651         (pushtag): Add loc parameter.  Change all callers.
3652         (lookup_tag): Add ploc parameter.  Change all callers.
3653         (check_compound_literal_type): New function.
3654         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3655         -Wc++-compat, warn about struct/union/enum types defined within a
3656         struct or union.
3657         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3658         and loc parameters.  Change all callers.  Change error calls to
3659         error_at, using loc.  For a redefinition, if the location of the
3660         original definition is known, report it.  Set in_struct and
3661         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3662         (finish_struct): Add new parameters enclosing_in_struct and
3663         enclosing_struct_types.  Change all callers.  Set
3664         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3665         in the struct.  If in a struct, add this struct to struct_types.
3666         (start_enum): Add loc parameter.  Change all callers.  Use
3667         error_at for errors, using loc.  For a redefinition, if the
3668         location of the original definition is known, report it.  If in a
3669         struct, add this enum type to struct_types.  If -Wc++-compat warn
3670         if in sizeof, typeof, or alignof.
3671         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3672         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3673         (c_parser_enum_specifier): Get enum location for start_enum.
3674         (c_parser_struct_or_union_specifier): Get struct location for
3675         start_struct.  Save in_struct and struct_types status between
3676         start_struct and finish_struct.
3677         (c_parser_cast_expression): Get location of cast.
3678         (c_parser_alignof_expression): Get location of type.
3679         (c_parser_postfix_expression): Likewise.
3680         (c_parser_postfix_expression_after_paren_type): Add type_loc
3681         parameter.  Change all callers.  Call check_compound_literal_type.
3682         Use type_loc for error about variable size type.
3683         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3684         of an enum constant from an enum type defined in a struct or union.
3685         (c_cast_expr): Add loc parameter.  Change all callers.  If
3686         -Wc++-compat, warn about defining a type in a cast.
3687         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3688         (start_enum, start_struct, finish_struct): Update declarations.
3689         (parser_xref_tag, c_cast_expr): Update declarations.
3690         (check_compound_literal_type): Declare.
3691
3692 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3693
3694         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3695         for recent libcpp interface change.
3696         (rs6000_macro_to_expand): Likewise.
3697
3698 2009-05-10  Michael Matz  <matz@suse.de>
3699
3700         PR target/40031
3701         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3702         not at entry of function.
3703
3704 2009-05-10  Richard Guenther  <rguenther@suse.de>
3705
3706         PR tree-optimization/40081
3707         Revert
3708         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3709         using the main variant of the element type.  Do not fiddle with
3710         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3711
3712         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3713         structs with volatile fields.
3714
3715 2009-05-10  Jan Hubicka  <jh@suse.cz>
3716
3717         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3718         (estimate_move_cost): Assert that it does not get called for
3719         VOID_TYPE_P.
3720         (estimate_num_insns): Skip VOID types in argument handling.
3721         (optimize_inline_calls): Delete unreachable blocks and verify that
3722         callgraph is valid.
3723
3724 2009-05-10  Jan Hubicka  <jh@suse.cz>
3725
3726         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3727         * cgraph.c (cgraph_mark_address_taken_node): New function.
3728         (dump_cgraph_node): Dump new flag.
3729         * cgraph.h (struct cgraph_node): Add address_taken.
3730         (cgraph_mark_address_taken_node): New function.
3731         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3732         since new direct calls can be born.
3733
3734 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3735
3736         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3737         tok->val.node.node.
3738
3739 2009-05-10  Jan Hubicka  <jh@suse.cz>
3740
3741         PR middle-end/40084
3742         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3743         argument; rewrite.
3744         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3745         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3746         * tree-inline.c (copy_bb): Set frequency correctly.
3747         (fold_marked_statements): Update call to
3748         cgraph_update_edges_for_call_stmt.
3749
3750 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3751
3752         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3753         identifiers in diagnostics.
3754         * config/arm/arm.c (arm_handle_fndecl_attribute,
3755         arm_handle_isr_attribute): Likewise.
3756         * config/avr/avr.c (avr_handle_progmem_attribute,
3757         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3758         * config/bfin/bfin.c (handle_int_attribute,
3759         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3760         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3761         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3762         Likewise.
3763         * config/darwin.c (darwin_handle_kext_attribute,
3764         darwin_handle_weak_import_attribute): Likewise.
3765         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3766         h8300_handle_eightbit_data_attribute,
3767         h8300_handle_tiny_data_attribute): Likewise.
3768         * config/i386/i386.c (ix86_handle_cconv_attribute,
3769         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3770         * config/i386/winnt.c (ix86_handle_shared_attribute,
3771         ix86_handle_selectany_attribute): Likewise.
3772         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3773         * config/m32c/m32c.c (function_vector_handler): Likewise.
3774         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3775         m68hc11_handle_fntype_attribute): Likewise.
3776         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3777         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3778         * config/mips/mips.c (mips_insert_attributes,
3779         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3780         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3781         rs6000_handle_struct_attribute): Likewise.
3782         * config/sh/sh.c (sh_insert_attributes,
3783         sh_handle_resbank_handler_attribute,
3784         sh_handle_interrupt_handler_attribute,
3785         sh2a_handle_function_vector_handler_attribute,
3786         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3787         Likewise.
3788         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3789         * config/spu/spu.c (spu_handle_fndecl_attribute,
3790         spu_handle_vector_attribute): Likewise.
3791         * config/stormy16/stormy16.c
3792         (xstormy16_handle_interrupt_attribute): Likewise.
3793         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3794         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3795
3796 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3797
3798         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3799         (pp_translate_identifiers): New.
3800         (pp_identifier): Only conditionally translate identifier to locale
3801         character set.
3802         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3803         (pp_base_tree_identifier): Only conditionally translate identifier
3804         to locale character set.
3805         * c-pretty-print.c (M_): Define.
3806         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3807         fragments for conditional translation with M_.
3808         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3809         identifier translation.
3810
3811 2009-05-10  Richard Guenther  <rguenther@suse.de>
3812
3813         PR tree-optimization/40081
3814         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3815         using the main variant of the element type.  Do not fiddle with
3816         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3817
3818 2009-05-09  Jan Hubicka  <jh@suse.cz>
3819
3820         PR middle-end/40080
3821         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3822         indirect calls; verify cgraph afterwards.
3823
3824 2009-05-09  Jan Hubicka  <jh@suse.cz>
3825
3826         PR bootstrap/40082
3827         * ipa.c (update_inlined_to_pointer): New function.
3828         (cgraph_remove_unreachable_nodes): Use it.
3829
3830 2009-05-09  Jan Hubicka  <jh@suse.cz>
3831
3832         * tree-eh.c (struct leh_state): Remove prev_try.
3833         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3834         not track prev_try.
3835         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3836         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3837         remove_eh_handler_and_replace, foreach_reachable_handler,
3838         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3839         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3840         (gen_eh_region_cleanup): Update prototype.
3841
3842 2009-05-09  Jan Hubicka  <jh@suse.cz>
3843
3844         PR middle-end/40043
3845         * except.c (copy_eh_region): Always set prev_try.
3846         (redirect_eh_edge_to_label): Find outer try.
3847         (foreach_reachable_handler): When looking for prev try
3848         handle case where previous try is not going to be taken.
3849
3850 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3851
3852         PR tree-optimization/40049
3853         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3854         only vector/vector shifts, convert the type of the constant to the
3855         appropriate type to avoid building incorrect trees, which
3856         eventually have problems with garbage collection.
3857
3858 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3859
3860         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3861         -1 for complex floating-point types if honoring signed zeros.
3862
3863 2009-05-08  Jan Hubicka  <jh@suse.cz>
3864
3865         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3866         argument; handle correctly when profile is absent.
3867         (build_cgraph_edges): Update.
3868         (rebuild_cgraph_edges): Update.
3869         * cgraph.c: Do not include varray.h.
3870         (cgraph_set_call_stmt_including_clones): New function.
3871         (cgraph_create_edge_including_clones): Likewise
3872         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3873         (cgraph_update_edges_for_call_stmt): Handle clones.
3874         (cgraph_remove_node): Handle clone tree.
3875         (cgraph_remove_node_and_inline_clones): New function.
3876         (dump_cgraph_node): Dump clone tree.
3877         (cgraph_clone_node): Handle clone tree.
3878         (clone_function_name): Bring here from tree-inline.c.
3879         (cgraph_create_virtual_clone): New function.
3880         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3881         (cgraph_clone_info): New function.
3882         (strut cgraph_node): Add clone_info and new clone tree pointers.
3883         (cgraph_remove_node_and_inline_clones,
3884         cgraph_set_call_stmt_including_clones,
3885         cgraph_create_edge_including_clones,
3886         cgraph_create_virtual_clone): Declare.
3887         (cgraph_function_versioning): Use VEC argument.
3888         (compute_call_stmt_bb_frequency): Update prototype.
3889         (cgraph_materialize_all_clones): New function.
3890         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3891         (ipcp_create_replace_map): Update to VECtors.
3892         (ipcp_update_callgraph): Use virtual clones.
3893         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3894         (ipc