OSDN Git Service

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