OSDN Git Service

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