OSDN Git Service

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