OSDN Git Service

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