OSDN Git Service

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