OSDN Git Service

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