OSDN Git Service

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