OSDN Git Service

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