OSDN Git Service

60c4c9d45a2303efa92664ce7608e341f05e9924
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-05-31  Ian Lance Taylor  <iant@google.com>
2
3         * Makefile.in (except.o): Depent upon gt-except.h, not
4         gt-$(EXCEPT_H).
5         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
6         (ipa-reference.o): Depend upon gt-ipa-reference.h.
7
8 2009-05-31  Jason Merrill  <jason@redhat.com>
9
10         * tree-pretty-print.c (print_call_name): Take the callee, not the
11         call itself.  Make non-static.  Use dump_function_name for
12         functions.
13         (dump_generic_node): Adjust.
14         * diagnostic.h: Declare print_call_name.
15         * gimple-pretty-print.c (dump_gimple_call): Use it.
16
17 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
18
19         * config/sh/sh.md (ashldi3_std): New define_expand.
20         (ashldi3): Use it.
21
22 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
23
24         PR target/40313
25         * config/sh/sh.c: Include debug.h.
26         (sh_expand_epilogue): Emit a blockage insn before the frame
27         pointer adjustment also when dwarf2out_do_frame returns true.
28
29 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
30
31         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
32         (thumb2_extendqidi2): New pattern.
33
34 2009-05-31  Ira Rosen  <irar@il.ibm.com>
35
36         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
37         mark phis for renaming.
38         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
39         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
40         Call mark_sym_for_renaming.
41         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
42         * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
43         initialization and a call to mark_set_for_renaming.
44
45 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
46
47         PR middle-end/40304
48         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
49         frame related even if !set_cfa && style < 0.
50
51 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
52
53         * config/i386/mingw-tls.c: New file.
54         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
55         mingw-tls.c file.
56         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
57         it for targets defining _WIN32 but not __CYGWIN__.
58
59 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
60
61         * configure.ac: Add MPC support.
62         
63         * config.in, configure: Regenerate.     
64
65 2009-05-29  Richard Henderson  <rth@redhat.com>
66
67         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
68         NOTE_INSN_BASIC_BLOCK.
69         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
70         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
71         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
72         to be deleted.
73         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
74         add in_use field.
75         (add_cfi): Disable check redefining cfa away from drap.
76         (lookup_cfa_1): Add remember argument; handle remember/restore.
77         (lookup_cfa): Pass remember argument.
78         (cfa_remember): New.
79         (compute_barrier_args_size_1): Remove sibcall check.
80         (dwarf2out_frame_debug_def_cfa): New.
81         (dwarf2out_frame_debug_adjust_cfa): New.
82         (dwarf2out_frame_debug_cfa_offset): New.
83         (dwarf2out_frame_debug_cfa_register): New.
84         (dwarf2out_frame_debug_cfa_restore): New.
85         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
86         (dwarf2out_begin_epilogue): New.
87         (dwarf2out_frame_debug_restore_state): New.
88         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
89         DW_CFA_restore_state.
90         (output_cfi_directive): Likewise.
91         (convert_cfa_to_fb_loc_list): Likewise.
92         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
93         * dwarf2out.h: Update.
94         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
95         (copy_insn_1): Early out for null.
96         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
97         and dwarf2out_frame_debug_restore_state.
98         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
99         (prologue_insn_hash, epilogue_insn_hash): New.
100         (free_after_compilation): Adjust freeing accordingly.
101         (record_insns): Create hash table if needed; push insns into
102         hash instead of array.
103         (maybe_copy_epilogue_insn): New.
104         (contains): Search hash table instead of array.
105         (sibcall_epilogue_contains): Remove.
106         (thread_prologue_and_epilogue_insns): Split eh_return insns
107         and mark them as epilogues.
108         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
109         scanning in terms of basic blocks.
110         * insn-notes.def (CFA_RESTORE_STATE): New.
111         * jump.c (returnjump_p_1): Accept EH_RETURN.
112         (eh_returnjump_p_1, eh_returnjump_p): New.
113         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
114         CFA_REGISTER, CFA_RESTORE): New.
115         * rtl.def (EH_RETURN): New.
116         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
117
118         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
119         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
120
121         * config/i386/i386.c (gen_push): Update cfa state.
122         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
123         add a CFA_ADJUST_CFA note.
124         (ix86_dwarf_handle_frame_unspec): Remove.
125         (ix86_expand_prologue): Update cfa state.
126         (ix86_emit_restore_reg_using_pop): New.
127         (ix86_emit_restore_regs_using_pop): New.
128         (ix86_emit_leave): New.
129         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
130         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
131         * config/i386/i386.h (struct machine_cfa_state): New.
132         (ix86_cfa_state): New.
133         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
134         (eh_return_internal): Merge from eh_return_<mode>,
135         use eh_return rtx, split w/ epilogue.
136
137 2009-05-29  Ian Lance Taylor  <iant@google.com>
138
139         * builtins.c (validate_gimple_arglist): Don't use va_arg with
140         enum type.
141         * calls.c (emit_library_call_value_1): Likewise.
142
143         * c-typeck.c (c_build_va_arg): New function.
144         * c-tree.h (c_build_va_arg): Declare.
145         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
146         instead of build_va_arg.
147
148 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
149
150         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
151         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
152         (ptr_difference_cost): Use affine combinations to compute it.
153         (difference_cost): Likewise.
154         (get_computation_cost_at): Compute more accurate cost for addresses
155         if the ratio is a multiplier allowed in addresses.
156         For non-addresses, consider that an additional offset or symbol is
157         added only once.
158
159 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
160
161         * config/i386/i386.c (ix86_decompose_address): Avoid useless
162         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
163
164         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
165         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
166         (prefix_rex): For UNIT_MMX don't imply the prefix by default
167         if MODE_DI.
168         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
169         to 1 for TYPE_SSE{IADD1,CVT1}.
170         (prefix_vex_imm8): Removed.
171         (length_vex): Only pass 1 as second argument to
172         ix86_attr_length_vex_default if prefix_extra is 0.
173         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
174         (length): For prefix vex computation use length_immediate
175         attribute instead of prefix_vex_imm8.
176         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
177         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
178         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
179         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
180         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
181         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
182         a space in between the operands.
183         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
184         if one operand is 0xff and the other one si, di, bp or sp.
185         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
186         other one si, di, bp or sp.
187         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
188         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
189         type and mode attributes.
190         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
191         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
192         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
193         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
194         prefix_data16 attribute iff MODE_DF.
195         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
196         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
197         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
198         constm128_operand in length_immediate computation.
199         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
200         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
201         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
202         length_immediate attribute to 1.
203         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
204         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
205         for certain alternatives.
206         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
207         prefix_data16 attribute if MODE_V1DF.
208         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
209         length_immediate to 1.
210         (set_got_rex64, set_rip_rex64): Remove length attribute, set
211         length_address to 4, set mode attribute to MODE_DI.
212         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
213         (fxam<mode>2_i387): Set length attribute to 4.
214         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
215         *prefetch_3dnow_rex): Override length_address attribute.
216         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
217         attributes.
218         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
219         (constm128_operand): Removed.
220         * config/i386/i386.c (memory_address_length): For
221         disp && !index && !base in 64-bit mode account for SIB byte if
222         print_operand_address can't optimize disp32 into disp32(%rip)
223         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
224         for fs: or gs: segment.
225         (ix86_attr_length_immediate_default): When checking if shortform
226         is possible, truncate immediate to the length of the non-shortened
227         immediate.
228         (ix86_attr_length_address_default): Ignore MEM_P operands
229         with X constraint.
230         (ix86_attr_length_vex_default): Only check for DImode on
231         GENERAL_REG_P operands.
232         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
233         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
234         (sse_cvttps2pi): Clear prefix_rep attribute.
235         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
236         attribute.
237         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
238         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
239         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
240         iff operand 2 is const_int_operand.
241         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
242         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
243         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
244         instead of vex.
245         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
246         prefix_data16.
247         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
248         prefix_data16 attribute for movlpd and movhpd instructions.
249         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
250         length_immediate for shufpd instruction.
251         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
252         (avx_cmpp<avxmodesuffixf2c><mode>3,
253         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
254         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
255         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
256         *vec_dupv4sf_avx, *vec_dupv4sf): Set
257         length_immediate attribute to 1.
258         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
259         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
260         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
261         prefix_data16 attribute for the first alternative to 1.
262         (*avx_loadlps): Override length_immediate for the first alternative.
263         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
264         attributes for second alternative.
265         (*vec_concatv2sf_sse4_1): Override length_immediate and
266         prefix_data16 attributes for second alternative.
267         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
268         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
269         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
270         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
271         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
272         prefix_data16 and length_immediate to 1.
273         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
274         to 1.
275         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
276         prefix_extra attribute for variants that don't have 0f prefix
277         alone.
278         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
279         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
280         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
281         *sse4_1_pextrd): Set length_immediate to 1.
282         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
283         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
284         to 1.
285         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
286         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
287         length_immediate to 1 for second alternative.
288         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
289         prefix_extra and length_immediate attributes for the first
290         alternative.
291         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
292         first alternative.
293         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
294         to 1 for the first and third alternative.
295         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
296         alternative.
297         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
298         attribute.
299         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
300         attribute to 0.
301         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
302         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
303         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
304         *avx_psign<mode>3): Set prefix_extra attribute to 1.
305         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
306         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
307         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
308         ssse3_psign<mode>3): Override prefix_rex attribute.
309         (*avx_palignrti): Override prefix_extra and length_immediate
310         to 1.
311         (ssse3_palignrti): Override length_immediate to 1.
312         (ssse3_palignrdi): Override length_immediate to 1, override
313         prefix_rex attribute.
314         (abs<mode>2): Override prefix_rep to 0, override prefix_rex
315         attribute.
316         (sse4a_extrqi): Override length_immediate to 2.
317         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
318         (sse4a_insertq): Override prefix_data16 to 0.
319         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
320         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
321         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
322         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
323         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
324         and length_immediate to 1.
325         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
326         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
327         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
328         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
329         and length_immediate to 1.
330         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
331         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
332         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
333         avx_ptest256): Override prefix_extra to 1.
334         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
335         Override prefix_data16 and length_immediate to 1.
336         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
337         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
338         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
339         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
340         prefix_data16 to 0 and prefix_extra to 2.
341         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
342         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
343         attribute.
344         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
345         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
346         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
347         and prefix_extra to 2.
348         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
349         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
350         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
351         avx_vpermilvar<mode>3,
352         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
353         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
354         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
355         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
356         Override prefix_extra to 1.
357         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
358         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
359         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
360         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
361         prefix_extra and length_immediate to 1.
362         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
363         modrm to 0.
364         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
365         to 1 for the first alternative.
366         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
367         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
368         cases.
369         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
370         *movv2sf_internal_avx, *movv2sf_internal): Override
371         prefix_rep attribute for certain alternatives.
372         (*mov<mode>_internal): Override prefix_rep or prefix_data16
373         attributes for certain alternatives.
374         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
375         attributes for certain alternatives.
376         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
377         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
378         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
379         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
380         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
381         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
382         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
383         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
384         length_immediate to 1 if operand 2 is const_int_operand.
385         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
386         *vec_extractv2si_1): Set length_immediate
387         attribute to 1.
388         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
389         using old 3DNOW insn rather than SSE/3DNOW_A.
390         (mmx_emms, mmx_femms): Clear modrm attribute.
391
392 2009-05-29  Martin Jambor  <mjambor@suse.cz>
393
394         * tree-sra.c:  New implementation of SRA.
395
396         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
397         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
398         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
399         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
400         (SRA_MAX_STRUCTURE_COUNT): Removed.
401         (SRA_FIELD_STRUCTURE_RATIO): Removed.
402         * doc/invoke.texi (sra-max-structure-size): Removed.
403         (sra-field-structure-ratio): Removed.
404
405 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
406
407         PR middle-end/40291
408         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
409         before expansion.
410
411 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
412
413         PR rtl-optimization/40101
414         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
415         seqno.  Adjust comment.
416         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
417         inserting bookkeeping before a jump, the jump is not scheduled.
418         When no positive seqno found, provide a value.  Add comment.
419
420 2009-05-29  Richard Guenther  <rguenther@suse.de>
421
422         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
423         short-cutting on the first component.
424
425 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
426
427         PR middle-end/39958
428         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
429         for trees other than decls/types.
430
431 2009-05-29  Richard Guenther  <rguenther@suse.de>
432
433         * tree-ssa-operands.c (get_expr_operands): Do not handle
434         INDIRECT_REFs in the handled-component case.  Remove
435         unused get_ref_base_and_extent case.
436         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
437         tree_low_cst and host_integerp where possible.
438         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
439         codes for equivalence.
440         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
441
442 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
443
444         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
445         to tmake_file for i[34567]86-*-cygwin*. 
446
447 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
448
449         PR target/40017
450         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
451         (altivec_categorize_keyword, init_vector_keywords,
452         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
453         similar to bool.
454
455 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
456
457         * tree.c (handle_dll_attribute): Check if node is
458         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
459
460 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
461
462         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
463         component.
464         (thumb2_zero_extendqidi2): Likewise.
465
466 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
467
468         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
469         instead of gen_movrt.
470         * config/sh/sh.md (movrt): Remove.
471
472 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
473
474         * doc/invoke.texi (IA-64 Options)
475         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
476         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
477         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
478         -msched-prefer-non-control-spec-insns,
479         -msched-stop-bits-after-every-cycle,
480         -msched-count-spec-in-critical-path,
481         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
482         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
483         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
484         and -msched-spec-verbose.
485
486 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
487
488         * config/arm/lib1funcs.asm (__clear_cache): Define if
489         L_clear_cache.
490         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
491         error if used.
492         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
493
494 2009-05-28  Richard Guenther  <rguenther@suse.de>
495
496         * tree-ssa-alias.c (ao_ref_init): New function.
497         (ao_ref_base): Likewise.
498         (ao_ref_base_alias_set): Likewise.
499         (ao_ref_alias_set): Likewise.
500         (refs_may_alias_p_1): Change signature.
501         (refs_may_alias_p): Adjust.
502         (refs_anti_dependent_p): Likewise.
503         (refs_output_dependent_p): Likewise.
504         (call_may_clobber_ref_p_1): Change signature.
505         (call_may_clobber_ref_p): Adjust.
506         (stmt_may_clobber_ref_p_1): New function split out from ...
507         (stmt_may_clobber_ref_p): ... here.
508         (maybe_skip_until): Adjust signature.
509         (get_continuation_for_phi): Likewise.
510         (walk_non_aliased_vuses): Likewise.
511         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
512         (ao_ref_init): Declare.
513         (ao_ref_base): Likewise.
514         (ao_ref_alias_set): Likewise.
515         (stmt_may_clobber_ref_p_1): Likewise.
516         (walk_non_aliased_vuses): Adjust.
517         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
518         (get_ref_from_reference_ops): remove.
519         (vn_reference_lookup_2): Adjust signature.
520         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
521         (vn_reference_lookup_pieces): Adjust signature, do not re-build
522         trees.
523         (vn_reference_lookup): Adjust.
524         (vn_reference_insert): Likewise.
525         (vn_reference_insert_pieces): Adjust signature.
526         (visit_reference_op_call): Adjust.
527         * tree-ssa-pre.c (get_expr_type): Simplify.
528         (phi_translate_1): Adjust.
529         (compute_avail): Likewise.
530         (translate_vuse_through_block): Do not re-build trees.
531         (value_dies_in_block_x): Likewise.
532         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
533         fields.
534         (vn_reference_lookup_pieces): Adjust declaration.
535         (vn_reference_insert_pieces): Likewise.
536
537 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
538
539         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
540         with checking disabled.
541
542 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
543
544         PR target/37216
545
546         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
547         macro definition for support of three-operand format aligned
548         .comm directive in assembler on cygwin/pe/mingw target OS.
549         * configure:  Regenerate.
550         * config.h:  Regenerate.
551
552         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
553         aligned form of .comm directive if -mpe-aligned-commons is in effect.
554         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
555
556         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
557         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
558
559 2009-05-28  Ira Rosen  <irar@il.ibm.com>
560
561         PR tree-optimization/40254
562         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
563         in analysis of basic blocks.
564
565 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
566
567         PR middle-end/33699
568         * target.h (struct gcc_target): Fix indentation.  Add
569         const_anchor.
570         * target-def.h (TARGET_CONST_ANCHOR): New macro.
571         (TARGET_INITIALIZER): Use it.
572         * cse.c (CHEAPER): Move it up to the other macros.
573         (insert): Rename this ...
574         (insert_with_costs): ... to this.  Add cost parameters.  Update
575         function comment.
576         (insert): New function.  Call insert_with_costs.
577         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
578         find_reg_offset_for_const, try_const_anchors): New functions.
579         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
580         when using a const-anchor.  Call insert_const_anchors.
581         * config/mips/mips.c (mips_set_mips16_mode): Set
582         targetm.const_anchor.
583         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
584
585 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
586
587         * tree-inline.c (remap_decls): Enable nonlocalized variables
588         when not optimizing.
589
590 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
591
592         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
593         Simplify other tests involving optimize.
594
595 2009-05-27  Tom Tromey  <tromey@redhat.com>
596
597         * unwind-dw2.c (_Unwind_DebugHook): New function.
598         (uw_install_context): Call _Unwind_DebugHook.
599
600 2009-05-27  Tom Tromey  <tromey@redhat.com>
601
602         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
603
604 2009-05-27  Ian Lance Taylor  <iant@google.com>
605
606         * Makefile.in (LINKER, LINKER_FLAGS): Define.
607         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
608         (ALL_LINKERFLAGS): Define.
609         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
610         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
611         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
612         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
613         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
614         $(LINKER_FOR_BUILD).
615         (build/gcov-iov$(build_exeext)): Likewise.
616
617 2009-05-27  Julian Brown  <julian@codesourcery.com>
618
619         * gcse.c (target.h): Include.
620         (can_assign_to_reg_without_clobbers_p): Check that the target allows
621         copy of argument to a pseudo register.
622
623 2009-05-27  Diego Novillo  <dnovillo@google.com>
624
625         * tree-ssa-live.c (dump_scope_block): Document arguments.
626         (dump_scope_blocks): Document.
627         (debug_scope_blocks): New.
628         * tree-flow.h (debug_scope_blocks): Declare.
629
630 2009-05-21  Denis Chertykov  <denisc@overta.ru>
631
632         * doc/contrib.texi (Contributors): add myself to the list.
633
634 2009-05-27  Olivier Hainque  <hainque@adacore.com>
635
636         * expr.c (target_align): New function.  Alignment the TARGET of an
637         assignment may be assume to have.
638         (highest_pow2_factor_for_target): Use it instead of relying on
639         immediate tree attributes of TARGET, not necessarily honored when
640         intermediate bitfields are involved.
641         
642 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
643
644         PR target/40266
645         * config/i386/driver-i386.c (host_detect_local_cpu): Support
646         AVX, SSE4, AES, PCLMUL and POPCNT.
647
648 2009-05-27  Diego Novillo  <dnovillo@google.com>
649
650         * tree-pretty-print.c (dump_location): New.
651         (dump_generic_node): Call it.
652         Factor code to handle BLOCK nodes ...
653         (dump_block_node): ... here.
654
655 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
656
657         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
658         it.
659         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
660         included.
661         * gcc-plugin.h: Include config.h and system.h.
662         (IN_GCC): Define if not defined.
663
664 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
665
666         PR middle-end/40249
667         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
668         with -fno-inline.
669
670 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
671
672         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
673         applicable.
674         * config/m32r/m32r.h: Ditto.
675         * config/m32r/m32r.md: Ditto.
676         * config/m32r/predicates.md: Ditto.
677
678 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
679
680         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
681
682 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
683
684         * doc/plugins.texi
685         (Loading plugins): typo.
686         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
687         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
688         (Interacting with the GCC Garbage Collector): Added new section.
689         (Giving information about a plugin): Added new section for
690         PLUGIN_INFO.
691         * ggc.h (ggc_register_root_tab): Added declaration.
692         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
693         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
694         (register_callback): Improved comment in declaration.
695         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
696         vectors.
697         (extra_root_vec) Added static variable for dynamic roots
698         registration.
699         (ggc_register_root_tab) Added new routine.
700         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
701         PLUGIN_GGC_MARKING event.
702         * ggc-zone.c: Include plugin.h.
703         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
704         * ggc-page.c: Include plugin.h.
705         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
706         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
707         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
708         (register_callback): check lack of callbacks for
709         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
710         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
711         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
712         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
713         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
714         dependency on plugin.h.
715         (plugin.o): Added dependency on ggc.h...
716
717 2009-05-26  Richard Guenther  <rguenther@suse.de>
718
719         PR middle-end/40248
720         Revert
721         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
722         with mismatched comparison modes.
723
724         * expr.c (expand_expr_real_1): Expand the operand of a
725         VIEW_CONVERT_EXPR in its natural mode.
726
727 2009-05-26  Ian Lance Taylor  <iant@google.com>
728
729         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
730         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
731         (ALL_COMPILERFLAGS): Define.
732         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
733         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
734         (collect2$(exeext), collect2.o): Likewise.
735         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
736         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
737         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
738         (libbackend.o, intl.o, cppdefault.o): Likewise.
739         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
740         (build/%.o): Use $(COMPILER_FOR_BUILD).
741         (build/gen%$(build_exeext)): Likewise.
742         (build/gcov-iov$(build_exeext)): LIkewise.
743         * config/t-darwin (darwin.o): Use $(COMPILER).
744         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
745         * config/t-sol2 (sol2-c.o): Likewise.
746         (sol2.o): Likewise.
747         * config/t-vxworks (vxworks.o): Likewise.
748         * config/x-darwin (host-darwin.o): Likewise.
749         * config/x-hpux (host-hpux.o): Likewise.
750         * config/x-linux (host-linux.o): Likewise.
751         * config/x-solaris (host-solaris.o): Likewise.
752         * config/alpha/x-alpha (driver-alpha.o): Likewise.
753         * config/arm/t-arm (arm-c.o): Likewise.
754         * config/arm/t-pe (pe.o): Likewise.
755         * config/arm/t-wince-pe (pe.o): Likewise.
756         * config/i386/t-cygming (winnt.o): Likewise.
757         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
758         * config/i386/t-cygwin (cygwin1.o): Likewise.
759         (cygwin2.o): Likewise.
760         * config/i386/t-i386 (i386-c.o): Likewise.
761         * config/i386/t-interix (winnt.o): Likewise.
762         * config/i386/t-netware (netware.o): Likewise.
763         * config/i386/t-nwld (nwld.o): Likewise.
764         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
765         * config/i386/x-i386 (driver-i386.o): Likewise.
766         * config/i386/x-cygwin (host-cygwin.o): Likewise.
767         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
768         * config/ia64/t-ia64 (ia64-c.o): Likewise.
769         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
770         * config/mips/x-native (driver-native.o): Likewise.
771         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
772         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
773         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
774         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
775         * config/score/t-score-elf (score7.o): Likewise.
776         (score3.o): Likewise.
777         * config/sh/t-sh (sh-c.o): Likewise.
778         * config/sh/t-symbian (sh-c.o): Likewise.
779         (symbian.o): Likewise.
780         * config/spu/t-spu-elf (spu-c.o): Likewise.
781         * config/v850/t-v850 (v850-c.o): Likewise.
782         * config/v850/t-v850e (v850-c.o): Likewise.
783
784 2009-05-26  Richard Guenther  <rguenther@suse.de>
785
786         PR tree-optimization/40122
787         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
788         VECTOR_CSTs if possible.
789         (fold_gimple_assign): Likewise.
790
791 2009-05-26  Richard Guenther  <rguenther@suse.de>
792
793         PR middle-end/40252
794         * fold-const.c (fold_binary): Use the correct types for building
795         rotates.
796
797 2009-05-26  Richard Guenther  <rguenther@suse.de>
798
799         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
800         redundant calls to merge_alias_info.
801         (bump_vector_ptr): Likewise.
802         * tree-ssa-copy.c (merge_alias_info): Remove.
803         (replace_exp_1): Remove call to merge_alias_info.
804         (propagate_tree_value): Likewise.
805         (fini_copy_prop): Propagate points-to info.
806         * tree-flow.h (merge_alias_info): Remove.
807
808 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
809
810         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
811
812 2009-05-25  Jan Hubicka  <jh@suse.cz>
813
814         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
815         * cgraph.h (struct inline_summary): New filed self_wize,
816         size_inlining_benefit, self_time and time_inlining_benefit.
817         (struct cgraph_global_info): Replace insns by time ans size fields.
818         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
819         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
820         (ipcp_update_callgraph): Do not touch function bodies.
821         * ipa-inline.c: Include except.h
822         (MAX_TIME): New constant.
823         (overall_insns): Remove.
824         (leaf_node_p): New.
825         (overall_size, max_benefit): New static variables.
826         (cgraph_estimate_time_after_inlining): New function.
827         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
828         (cgraph_clone_inlined_nodes): Update size.
829         (cgraph_mark_inline_edge): Update size.
830         (cgraph_estimate_growth): Use size info.
831         (cgraph_check_inline_limits): Check size.
832         (cgraph_default_inline_p): Likewise.
833         (cgraph_edge_badness): Compute badness based on benefit and size cost.
834         (cgraph_decide_recursive_inlining): Check size.
835         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
836         times.
837         (cgraph_decide_inlining): Likewise.
838         (cgraph_decide_inlining_incrementally): Likewise; honor
839         PARAM_EARLY_INLINING_INSNS.
840         (likely_eliminated_by_inlining_p): New predicate.
841         (estimate_function_body_sizes): New function.
842         (compute_inline_parameters): Use it.
843         * except.c (must_not_throw_labels): New function.
844         * except.h (must_not_throw_labels): Declare.
845         * tree-inline.c (init_inline_once): Kill inlining_weigths
846         * tree-ssa-structalias.c: Avoid uninitialized warning.
847         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
848         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
849         (PARAM_INLINE_CALL_COST): Remove.
850         (PARAM_EARLY_INLINING_INSNS): New.
851
852 2009-05-25  Richard Guenther  <rguenther@suse.de>
853
854         PR tree-optimization/36327
855         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
856         callback for reference translation or lookup at the point
857         of may-defs.
858         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
859         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
860         for union COMPONENT_REFs.
861         (vn_reference_lookup_3): New callback.  Lookup from memset
862         and CONSTRUCTOR assignment, translate through struct copies.
863         (vn_reference_lookup_pieces): Make sure to not free the
864         passed operands array.  Adjust walk_non_aliased_vuses call.
865         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
866         make sure we do not leak memory.
867
868 2009-05-25  Richard Guenther  <rguenther@suse.de>
869
870         * tree-ssa-alias.h (dump_points_to_solution): Declare.
871         * tree-inline.c (expand_call_inline): Reset the escaped and
872         callused solutions.
873         * tree-ssa-structalias.c (pass_build_ealias): New.
874         * tree-pass.h (pass_build_ealias): Declare.
875         * passes.c (init_optimization_passes): Add PTA during 
876         early optimizations.
877         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
878         and CALLUSED solutions.
879         (dump_points_to_solution): New function, split out from ...
880         (dump_points_to_info_for): ... here.
881         * tree-parloops.c (parallelize_loops): Reset the escaped and
882         callused solutions.
883
884 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
885
886         PR bootstrap/40027
887         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
888         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
889
890 2009-05-25  Ira Rosen  <irar@il.ibm.com>
891
892         PR tree-optimization/40238
893         * tree-vect-stmts.c (vect_init_vector): Insert initialization
894         statements after basic block's labels.
895         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
896         to free the allocated memory.
897
898 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
899
900         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
901         return address with a USE.
902
903 2009-05-24  Richard Guenther  <rguenther@suse.de>
904
905         PR middle-end/40233
906         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
907         array type from the main variant of the inner type.
908
909 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
910
911         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
912         definition to bool (from int) to un-break build.
913         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
914
915 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
916
917         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
918         discard_stmt_changes): Delete.
919         * tree-ssa-operands.c (scb_stack): Delete.
920         (init_ssa_operands): Do not initialize it.
921         (fini_ssa_operands): Do not free it.
922         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
923
924         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
925         update_stmt, remove the others.  Fix comments.
926         * tree-dfa.c (optimize_stack_restore): Likewise.
927         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
928         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
929         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
930         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
931         Likewise.
932         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
933         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
934         (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
935         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
936         (stmts_to_rescan): Change item type to gimple.
937         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
938
939 2009-05-24  Ira Rosen  <irar@il.ibm.com>
940
941         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
942         * tree-pass.h (pass_slp_vectorize): New pass.
943         * params.h (SLP_MAX_INSNS_IN_BB): Define.
944         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
945         * tree-vectorizer.c (timevar.h): Include.
946         (user_vect_verbosity_level): Declare.
947         (vect_location): Fix comment.
948         (vect_set_verbosity_level): Update user_vect_verbosity_level
949         instead of vect_verbosity_level.
950         (vect_set_dump_settings): Add an argument. Ignore user defined
951         verbosity if dump flags require higher level of verbosity. Print to
952         stderr only for loop vectorization.
953         (vectorize_loops): Update call to vect_set_dump_settings.
954         (execute_vect_slp): New function.
955         (gate_vect_slp): Likewise.
956         (struct gimple_opt_pass pass_slp_vectorize): New.
957         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
958         access its members.
959         (vec_info_for_bb): New function.
960         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
961         (VECTORIZATION_ENABLED): New macro.
962         (SLP_ENABLED, SLP_DISABLED): Likewise.
963         (vect_is_simple_use): Add bb_vec_info argument.
964         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
965         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
966         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
967         vect_schedule_slp, vect_analyze_slp): Likewise.
968         (vect_analyze_stmt): Add slp_tree argument.
969         (find_bb_location): Declare.
970         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
971         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
972         (vect_analyze_loop_operations, vect_analyze_loop,
973         get_initial_def_for_induction, vect_create_epilog_for_reduction,
974         vect_finalize_reduction, vectorizable_reduction,
975         vectorizable_live_operation, vect_transform_loop): Likewise.
976         * tree-data-ref.c (dr_analyze_innermost): Update comment,
977         skip evolution analysis if analyzing a basic block.
978         (dr_analyze_indices): Likewise.
979         (initialize_data_dependence_relation): Skip the test whether the
980         object is invariant for basic blocks.
981         (compute_all_dependences): Skip dependence analysis for data
982         references in basic blocks.
983         (find_data_references_in_stmt): Don't fail in case of invariant
984         access in basic block.
985         (find_data_references_in_bb): New function.
986         (find_data_references_in_loop): Move code to
987         find_data_references_in_bb and add a call to it.
988         (compute_data_dependences_for_bb): New function.
989         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
990         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
991         that STEP is 0.
992         (vect_analyze_data_ref_dependence): Check for interleaving in case of
993         unknown dependence in basic block and fail in case of dependence in
994         basic block.
995         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
996         dependence instances from either loop or basic block vectorization
997         info.
998         (vect_compute_data_ref_alignment): Check if it is loop vectorization
999         before calling nested_in_vect_loop_p.
1000         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1001         dependence instances from either loop or basic block vectorization
1002         info.
1003         (vect_verify_datarefs_alignment): Likewise.
1004         (vect_enhance_data_refs_alignment): Adjust function calls.
1005         (vect_analyze_data_refs_alignment): Likewise.
1006         (vect_analyze_group_access): Fix printing. Skip different checks if
1007         DR_STEP is 0. Keep strided stores either in loop or basic block
1008         vectorization data structure. Fix indentation.
1009         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1010         basic blocks.
1011         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1012         dependence instances from either loop or basic block vectorization
1013         info.
1014         (vect_analyze_data_refs): Update comment. Call
1015         compute_data_dependences_for_bb to analyze basic blocks.
1016         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1017         case of loop vectorization. In case of basic block vectorization use
1018         data-ref itself as a base.
1019         (vect_create_data_ref_ptr): In case of basic block vectorization:
1020         don't advance the pointer, add new statements before the current
1021         statement.  Adjust function calls.
1022         (vect_supportable_dr_alignment): Support only aligned accesses in
1023         basic block vectorization.
1024         * common.opt (ftree-slp-vectorize): New flag.
1025         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1026         (vect_pattern_recog_1): Likewise.
1027         * tree-vect-stmts.c (process_use): Likewise.
1028         (vect_init_vector): Add new statements in the beginning of the basic
1029         block in case of basic block SLP.
1030         (vect_get_vec_def_for_operand): Adjust function calls.
1031         (vect_finish_stmt_generation): Likewise.
1032         (vectorizable_call): Add assert that it is loop vectorization, adjust
1033         function calls.
1034         (vectorizable_conversion, vectorizable_assignment): Likewise.
1035         (vectorizable_operation): In case of basic block SLP, take
1036         vectorization factor from statement's type and skip the relevance
1037         check. Adjust function calls.
1038         (vectorizable_type_demotion): Add assert that it is loop
1039         vectorization, adjust function calls.
1040         (vectorizable_type_promotion): Likewise.
1041         (vectorizable_store): Check for outer loop only in case of loop
1042         vectorization. Adjust function calls. For basic blocks, skip the
1043         relevance check and don't advance pointers.
1044         (vectorizable_load): Likewise.
1045         (vectorizable_condition): Add assert that it is loop vectorization,
1046         adjust function calls.
1047         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1048         that it is not reduction, get vector type, call only supported
1049         functions, skip loop specific parts.
1050         (vect_transform_stmt): Check for outer loop only in case of loop
1051         vectorization.
1052         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1053         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1054         for external definition.
1055         * passes.c (pass_slp_vectorize): New pass.
1056         * tree-vect-slp.c (find_bb_location): New function.
1057         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1058         check for patterns only in loops.
1059         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1060         case of multiple types in basic block SLP.
1061         (vect_mark_slp_stmts_relevant): New function.
1062         (vect_supported_load_permutation_p): Fix comment.
1063         (vect_analyze_slp_instance): Add argument. In case of basic block
1064         SLP, take vectorization factor from statement's type, check that
1065         unrolling factor is 1. Adjust function call. Save SLP instance in
1066         either loop or basic block vectorization structure. Return FALSE,
1067         if SLP failed.
1068         (vect_analyze_slp): Add argument. Get strided stores groups from
1069         either loop or basic block vectorization structure. Return FALSE
1070         if basic block SLP failed.
1071         (new_bb_vec_info): New function.
1072         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1073         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1074         (vect_schedule_slp): Add argument. Get SLP instances from either
1075         loop or basic block vectorization structure. Set vectorization factor
1076         to be 1 for basic block SLP.
1077         (vect_slp_transform_bb): New function.
1078         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1079
1080 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1081
1082         * final.c (shorten_branches): Do not align labels for jump tables.
1083         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1084
1085 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1086
1087         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1088         Remove outdated reference to flow.c and fix nits.
1089         * doc/gccint.texi: Tweak RTL description.
1090         * doc/rtl.texi: Likewise.
1091
1092 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1093
1094         * config/avr/avr.c: Change my email address.
1095         * config/avr/avr.h: Likewise.
1096         * config/avr/avr.md: Likewise.
1097         * config/avr/avr-protos.h: Likewise.
1098         * config/avr/libgcc.S: Likewise.
1099
1100 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1101
1102         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1103         (spu_split_load, spu_split_store): Change return type to int.
1104         (spu_split_convert): Declare.
1105         * config/spu/predicates.md (spu_mem_operand): Remove.
1106         (spu_mov_operand): Update.
1107         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1108         * config/spu/spu.c (regno_aligned_for_load): Remove.
1109         (reg_aligned_for_addr, spu_expand_load): Define.
1110         (spu_expand_extv): Reimplement and handle MEM.
1111         (spu_expand_insv): Handle MEM.
1112         (spu_sched_reorder): Handle insn's with length 0.
1113         (spu_legitimate_address_p): Reimplement.
1114         (store_with_one_insn_p): Return TRUE for any mode with size
1115         larger than 16 bytes.
1116         (address_needs_split): Define.
1117         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1118         operands.
1119         (spu_convert_move): Define.
1120         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1121         (spu_split_store): Change all MEM's to TImode.
1122         (spu_init_expanders): Preallocate registers that correspond to
1123         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1124         mark_reg_pointer.
1125         (spu_split_convert): Define.
1126         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1127         (_move<mode>, _movdi, _movti): Update predicate and condition.
1128         (load, store): Change to define_split.
1129         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1130         extend<mode>ti2.
1131         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1132         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1133         define_insn_and_split of lshr<mode>3.
1134         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1135         (<v>ashr<mode>3_imm): Define.
1136         (extv, extzv, insv): Allow MEM operands.
1137         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1138         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1139         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1140         (_spu_convert2): Change to define_insn_and_split and remove the
1141         corresponding define_peephole2.
1142         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1143         Change predicates to memory_operand.
1144
1145 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1146
1147         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1148
1149 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1150
1151         PR tree-optimization/40219
1152         * tree.c (iterative_hash_expr): Make sure the builtin function is
1153         a normal builtin function and not a front end or back end builtin
1154         before indexing into the built_in_decls array.
1155
1156 2009-05-22  Richard Guenther  <rguenther@suse.de>
1157
1158         PR middle-end/38964
1159         * alias.c (write_dependence_p): Do not use TBAA for answering
1160         anti-dependence or output-dependence.
1161         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1162         (emit_pointer_definition): Remove.
1163         (emit_alias_warning): Likewise.
1164         (find_what_var_points_to): Remove TBAA pruning code.
1165         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1166         violations.
1167         (compute_points_to_sets): Remove code computing the set of
1168         dereferenced pointers.
1169         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1170         oracle for querying anti and output dependencies.
1171         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1172         if TBAA may be applied.
1173         (refs_anti_dependent_p): New function.
1174         (refs_output_dependent_p): Likewise.
1175         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1176         (refs_output_dependent_p): Likewise.
1177         * doc/tree-ssa.texi (Memory model): New section.
1178         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1179         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1180         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1181         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1182         * expr.c (expand_expr_real_1): Likewise.
1183         * gimple-low.c (lower_stmt): Likewise.
1184         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1185         (dump_gimple_cdt): Remove.
1186         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1187         (gimple_size): Likewise.
1188         (walk_gimple_op): Likewise.
1189         (is_gimple_stmt): Likewise.
1190         (walk_stmt_load_store_addr_ops): Likewise.
1191         (gimple_build_cdt): Remove.
1192         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1193         * gimple.h (gimple_cdt_new_type): Remove.
1194         (gimple_cdt_new_type_ptr): Likewise.
1195         (gimple_cdt_set_new_type): Likewise.
1196         (gimple_cdt_location): Likewise.
1197         (gimple_cdt_location_ptr): Likewise.
1198         (gimple_cdt_set_location): Likewise.
1199         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1200         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1201         GIMPLE_CHANGE_DYNAMIC_TYPE.
1202         (verify_types_in_gimple_stmt): Likewise.
1203         * tree-inline.c (estimate_num_insns): Likewise.
1204         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1205         (copy_decl_to_var): Likewise.
1206         (copy_result_decl_to_var): Likewise.
1207         * tree-pretty-print.c (dump_generic_node): Do not handle
1208         CHANGE_DYNAMIC_TYPE_EXPR.
1209         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1210         * tree-ssa-operands.c (get_expr_operands): Likewise.
1211         * tree-ssa-structalias.c (struct variable_info): Remove
1212         no_tbaa_pruning member.
1213         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1214         (unify_nodes): Do not copy it.
1215         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1216         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1217         (set_uids_in_ptset): Do not check it.
1218         (find_what_var_points_to): Likewise.
1219         (compute_tbaa_pruning): Remove.
1220         (compute_points_to_sets): Do not call it.
1221         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1222         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1223         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1224         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1225         (DECL_NO_TBAA_P): Likewise.
1226         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1227         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1228         (expand_omp_atomic_pipeline): Do not set it.
1229         * print-tree.c (print_node): Do not dump it.
1230         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1231         redundant check.
1232
1233 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1234
1235         PR target/39856
1236         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1237         for clobber.
1238
1239 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1240
1241         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1242         non-external.
1243
1244 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1245
1246         * Makefile.in (bversion.h, s-bversion): New targets.
1247         (TOPLEV_H): Add bversion.h.
1248         * toplev.h: Include "bversion.h".
1249         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1250         the __format__ attribute only if compiling with the same version
1251         of GCC as the sources (the "build version").
1252
1253 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1254
1255         * c-format.c (handle_format_attribute): Fix comment typo.
1256
1257 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1258
1259         PR target/37846
1260         * config/ia64/ia64.opt (mfused-madd): New.
1261         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1262         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1263         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1264         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1265         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1266         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1267         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1268         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1269         instruction if !TARGET_FUSED_MADD.
1270         (fpma, fpms): Remove colon from name.
1271
1272 2009-05-22  Richard Guenther  <rguenther@suse.de>
1273
1274         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1275         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1276         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1277         TARGET_MEM_REF.
1278         (create_expression_by_pieces): Only convert if necessary.
1279         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1280         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1281
1282 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1283
1284         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1285         regular pattern from a template and rename it ...
1286         (*extzv_truncsi_exts): ... to this.
1287
1288 2009-05-21  Richard Guenther  <rguenther@suse.de>
1289
1290         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1291         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1292         (cgraph_default_inline_p): Likewise.
1293         (cgraph_decide_inlining_incrementally): Likewise.
1294
1295 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1296             Uros Bizjak  <ubizjak@gmail.com>
1297
1298         * config/i386/cpuid.h (bit_MOVBE): New.
1299
1300         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1301
1302         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1303         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1304         (ix86_handle_option): Handle OPT_mmovbe.
1305         (ix86_target_string): Add -mmovbe.
1306         (pta_flags): Add PTA_MOVBE.
1307         (processor_alias_table): Add PTA_MOVBE to "atom".
1308         (override_options): Handle PTA_MOVBE.
1309
1310         * config/i386/i386.h (TARGET_MOVBE): New.
1311
1312         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1313         (*bswapsi_movbe): New.
1314         (*bswapdi_movbe): Likewise.
1315         (bswapdi2): Renamed to ...
1316         (*bswapdi_1): This.
1317         (bswapdi2): New expander.
1318
1319         * config/i386/i386.opt (mmovbe): New.
1320
1321         * doc/invoke.texi: Document -mmovbe.
1322
1323 2009-05-21  Taras Glek  <tglek@mozilla.com>
1324
1325         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1326         * gcc-plugin.h (plugin_init): Updated signature.
1327         * gcc-plugin.h (plugin_name_args): Moved to this header.
1328         * doc/plugins.texi (plugin_init): Updated documention to reflect
1329         API change.
1330         * doc/plugins.texi (plugin_name_args): Added to documention.
1331
1332 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1333
1334         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1335         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1336
1337 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1338
1339         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1340         JUMP_TABLE_DATA_P predicates where applicable.
1341         * config/i386/predicates.md: Ditto.
1342         * config/i386/sse.md: Ditto.
1343
1344 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1345
1346         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1347         operand2 -128 override length_immediate attribute to 1.
1348         * config/i386/predicates.md (constm128_operand): New predicate.
1349
1350         * config/i386/i386.c (memory_address_length): Handle %r12
1351         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1352         also check REGNO.
1353         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1354         mode look through optional ZERO_EXTEND and SUBREG.
1355         * config/i386/i386.md (R12_REG): New define_constant.
1356         (prefix_data16): For sse unit set also for MODE_TI insns.
1357         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1358         insns set if operand 1 is ext_QIreg_operand.
1359         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1360         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1361         immediate.
1362         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1363         mode from MODE_DI to MODE_SI.
1364         (movdi_1_rex64): Override modrm and length_immediate attributes
1365         only for movabs (TYPE_IMOV, alternative 2).
1366         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1367         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1368         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1369         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1370         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1371         prefix_rex attribute if DImode.
1372         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1373         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1374         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1375         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1376         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1377         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1378         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1379         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1380         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1381         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1382         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1383         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1384         or one operand TYPE_ISHIFT.
1385         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1386         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1387         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1388         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1389         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1390         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1391         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1392         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1393         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1394         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1395         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1396         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1397         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1398         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1399         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1400         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1401         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1402         set mode attribute, don't override length attribute.
1403         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1404         to 1.
1405         (return_internal_long): Set length attribute to 2 instead of 1.
1406         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1407         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1408         prefix_rex attribute.
1409         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1410         New predicates.
1411         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1412
1413 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1414
1415         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1416
1417 2009-05-20  Ian Lance Taylor  <iant@google.com>
1418
1419         * tree.c (build_tree_list_vec_stat): New function.
1420         (ctor_to_vec): New function.
1421         (build_nt_call_vec): New function.
1422         (build_call_array): Change args to be a const pointer.
1423         (build_call_vec): New function.
1424         * tree.h (build_nt_call_vec): Declare.
1425         (build_tree_list_vec_stat): Declare.
1426         (build_tree_list_vec): Define.
1427         (build_call_array): Update declaration.
1428         (build_call_vec): Declare.
1429         (ctor_to_vec): Declare.
1430         * c-common.c (tree_vector_cache): New static variable.
1431         (make_tree_vector): New function.
1432         (release_tree_vector): New function.
1433         (make_tree_vector_single): New function.
1434         (make_tree_vector_copy): New function.
1435         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1436         (make_tree_vector_single, make_tree_vector_copy): Declare.
1437         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1438         (c_parser_expr_list): Don't manage cache here, instead call
1439         make_tree_vector.
1440         (c_parser_release_expr_list): Remove static function.
1441         (c_parser_vec_to_tree_list): Remove static function.
1442         (c_parser_attributes): Call build_tree_list_vec instead of
1443         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1444         c_parser_release_expr_list.
1445         (c_parser_postfix_expression_after_primary): Likewise.
1446         (c_parser_objc_keywordexpr): Likewise.
1447
1448 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1449
1450         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1451         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1452         TARGET_CONVERT_TO_TYPE.
1453         * hooks.c (hook_tree_const_tree_null): Define.
1454         * hooks.h (hook_tree_const_tree_null): Declare.
1455         * target.h (struct gcc_target):  Add invalid_parameter_type,
1456         invalid_return_type, promoted_type, and convert_to_type fields.
1457         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1458         (TARGET_INVALID_RETURN_TYPE): Define.
1459         (TARGET_PROMOTED_TYPE): Define.
1460         (TARGET_CONVERT_TO_TYPE): Define.
1461         (TARGET_INITIALIZER): Update for new fields.
1462         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1463         (grokparms): Check targetm.invalid_parameter_type.
1464         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1465         * c-convert.c (convert): Check targetm.convert_to_type.
1466
1467 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1468
1469         * config/mips/mips.md (*extenddi_truncate<mode>,
1470         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1471         defintions.
1472         (*extendhi_truncateqi): New define_insn_and_sptit.
1473
1474 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1475
1476         PR middle-end/40204
1477         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1478         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1479
1480 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1481
1482         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1483         the operand of VIEW_CONVERT_EXPR.
1484
1485 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1486
1487         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1488         extended family and model for Intel processors.  Support Intel
1489         Atom.
1490
1491 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1492
1493         * gstab.h (stab_code_type): Define, to be used instead of the
1494         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1495         notice.
1496         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1497         occurrences by stab_code_type.
1498         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1499
1500 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1501
1502         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1503         (sra_insert_before): Likewise.
1504         (sra_insert_after): Likewise.
1505         (sra_init_cache): Likewise.
1506         (sra_type_can_be_decomposed_p): Likewise.
1507         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1508         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1509         (sra_insert_before): Likewise.
1510         (sra_insert_after): Likewise.
1511         (sra_init_cache): Likewise.
1512         (insert_edge_copies_seq): Made static and moved upwards.
1513
1514         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1515         case.
1516
1517         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1518
1519         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1520         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1521         simple copies.
1522
1523 2009-05-20  Richard Guenther  <rguenther@suse.de>
1524
1525         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1526         with mismatched comparison modes.
1527
1528 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1529
1530         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1531         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1532         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1533         with shifts for Thumb2.
1534         (orsi_notsi): New for orn.
1535         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1536         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1537         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1538         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1539         Don't invert remainder for IOR.
1540         
1541 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1542
1543         PR tree-optimization/40087
1544         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1545         number_of_iterations_ne): Rename never_infinite argument.
1546         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1547         number_of_iterations_le): Handle pointer-type ivs when
1548         exit_must_be_taken is false.
1549         (number_of_iterations_cond):  Do not always assume that
1550         exit_must_be_taken if the control variable is a pointer.
1551
1552 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1553
1554         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1555         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1556
1557 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1558
1559         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1560         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1561
1562 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1563
1564         PR c/40172
1565         * c.opt (Wlogical-op): Disabled by default.
1566         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1567         Wextra.
1568         * doc/invoke.texi (Wlogical-op): Likewise.
1569         
1570 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1571
1572         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1573         into CASE_CONVERT.
1574         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1575         Propagate the type of the first operand.
1576         <ASSERT_EXPR>: Simplify.
1577         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1578         Rewrite using the RHS code as discriminant.
1579         <NOP_EXPR>: Turn into CASE_CONVERT.
1580         <PLUS_EXPR>: Propagate the type of the first operand.
1581
1582 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1583
1584         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1585         (ia64_dconst_0_375): New.
1586         * config/ia64/ia64.c (ia64_override_options): Remove
1587         -minline-sqrt-min-latency warning.
1588         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1589         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1590         * config/ia64/ia64.md (*sqrt_approx): Remove.
1591         (sqrtsf2): Remove #if 0.
1592         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1593         (sqrtdf): Remove assert.
1594         (sqrtdf2_internal_thr): Rewrite and move to div.md.
1595         (sqrtxf2): Remove #if 0.
1596         (sqrtxf2_internal_thr): Rewrite and move to div.md.
1597         * div.md (sqrt_approx_rf): New.
1598         (sqrtsf2_internal_thr): New implementation.
1599         (sqrtsf2_internal_lat): New.
1600         (sqrtdf2_internal_thr: New implementation.
1601         (sqrtxf2_internal): New implementation.
1602
1603 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1604             Hans-Peter Nilsson  <hp@axis.com>
1605
1606         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1607         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1608         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1609         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1610         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1611         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1612         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1613         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1614         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1615         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1616         * c-common.c: ...from here.
1617
1618 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1619
1620         * c-common.c (warn_logical_operator): Remove unnecessary
1621         conditionals.
1622
1623 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1624
1625         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1626
1627 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1628
1629         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1630         assignments with memcpy calls.
1631         (add_fdes): Likewise.
1632         (binary_search_unencoded_fdes): Likewise.
1633         (linear_search_fdes): Eliminate type puns.
1634         
1635 2009-05-19  Richard Guenther  <rguenther@suse.de>
1636
1637         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1638         not falsely claim to have propagated into all uses.
1639
1640 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1641
1642         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1643         version to v3.0.
1644
1645 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1646
1647         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1648         * config/sh/sh.c (sh_legitimate_address_p): Make static.
1649         (TARGET_LEGITIMATE_ADDRESS_P): New.
1650         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1651         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1652         
1653 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
1654
1655         PR debug/40109
1656         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1657         child of the containing namespace's DIE.
1658
1659 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
1660
1661         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1662         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
1663         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1664         extend patterns.
1665
1666 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1667
1668         PR target/39942
1669         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1670         gen_align with gen_pad.
1671         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1672         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1673
1674         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1675         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1676
1677         * config/i386/i386.md (align): Renamed to ...
1678         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1679         ASM_OUTPUT_MAX_SKIP_PAD.
1680
1681 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
1682
1683         * config.gcc: Fix variable syntax.
1684
1685         PR target/39531
1686         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1687         before calling exact_log2.
1688         (output_iorsi3): Likewise.
1689         (output_xorsi3): Likewise.
1690
1691 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1692
1693         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1694         for the none zero constant operand except for EQ and NE
1695         comprisons even when the first operand is R0.
1696
1697 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
1698
1699         * config/s390/2064.md: Remove trailing whitespaces.
1700         * config/s390/2084.md: Likewise.
1701         * config/s390/constraints.md: Likewise.
1702         * config/s390/fixdfdi.h: Likewise.
1703         * config/s390/libgcc-glibc.ver: Likewise.
1704         * config/s390/s390-modes.def: Likewise.
1705         * config/s390/s390-protos.h: Likewise.
1706         * config/s390/s390.c: Likewise.
1707         * config/s390/s390.h: Likewise.
1708         * config/s390/s390.md: Likewise.
1709         * config/s390/tpf-unwind.h: Likewise.
1710
1711 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1712
1713         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1714
1715 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1716
1717         M68K TLS support.
1718         * configure.ac (m68k-*-*): Check if binutils support TLS.
1719         * configure: Regenerate.
1720         * config/m68k/predicates.md (symbolic_operand): Extend comment.
1721         * config/m68k/constraints.md (Cu): New constraint.
1722         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1723         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1724         (movsi): Handle TLS symbols.
1725         (addsi3_5200): Handle XTLS symbols, indent.
1726         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1727         (m68k_tls_reference_p): Declare.
1728         (m68k_legitimize_address): Declare.
1729         (m68k_unwrap_symbol): Declare.
1730         * config/m68k/m68k.opt (mxtls): New option.
1731         * config/m68k/m68k.c (ggc.h): Include.
1732         (m68k_output_dwarf_dtprel): Implement hook.
1733         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1734         (m68k_expand_prologue): Load GOT pointer when function needs it.
1735         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1736         (m68k_legitimate_constant_address_p): Same.
1737         (m68k_decompose_address): Handle TLS references.
1738         (m68k_get_gp): New static function.
1739         (enum m68k_reloc): New contants.
1740         (TLS_RELOC_P): New macro.
1741         (m68k_wrap_symbol): New static function.
1742         (m68k_unwrap_symbol): New function.
1743         (m68k_final_prescan_insn_1): New static function.
1744         (m68k_final_prescan_insn): New function.
1745         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1746         functions.
1747         (legitimize_pic_address): Handle TLS references..
1748         (m68k_tls_get_addr, m68k_get_tls_get_addr)
1749         (m68k_libcall_value_in_a0_p)
1750         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1751         (m68k_call_m68k_read_tp): Helper variables and functions for ...
1752         (m68k_legitimize_tls_address): Handle TLS references.
1753         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1754         New functions.
1755         (m68k_legitimize_address): Handle TLS symbols.
1756         (m68k_get_reloc_decoration): New static function.
1757         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1758         UNSPEC_RELOC32.
1759         (m68k_output_dwarf_dtprel): Implement hook.
1760         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1761         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1762         m68k_call_* routines.
1763         (sched_attr_op_type): Handle TLS symbols.
1764         (gt-m68k.h): Include.
1765         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1766         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1767
1768 2009-05-18  Martin Jambor  <mjambor@suse.cz>
1769
1770         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1771         (visit_store_addr_for_mod_analysis): New function.
1772         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
1773         (determine_cst_member_ptr): Use gimple_assign_single_p.
1774         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
1775         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
1776         operands.  Don't check number of operands of a NOP_EXPR.
1777
1778 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
1779
1780         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
1781
1782 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1783
1784         PR c/40172
1785         * c-common.c (warn_logical_operator): Don't warn if one of
1786         expression isn't always true or false.
1787
1788 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
1789
1790         * config/i386/biarch32.h: New file.
1791         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
1792
1793 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
1794
1795         * config/mips/mips.md (*zero_extend<mode>_trunchi,
1796         *zero_extend<mode>_truncqi): Merge these into ...
1797         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
1798         Name the pattern following this as *zero_extendhi_truncqi.
1799
1800 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
1801
1802         PR middle-end/39301
1803         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
1804         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
1805         (output_info): Make field HOST_WIDEST_INT.
1806         (print_statistics): Use HOST_WIDEST_INT_PRINT.
1807         (dump_bitmat_statistics): Same.
1808
1809 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1810
1811         * config.gcc (use_gcc_stdint):  Set to wrap.
1812         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
1813         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
1814         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1815         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
1816         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
1817         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
1818         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1819         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
1820
1821 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
1822
1823         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
1824         tune_64.
1825         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
1826         Move definitions earlier.
1827         (OPT_ARCH64, OPT_ARCH32): Define.
1828         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
1829         and tune_64.
1830
1831 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
1832
1833         PR target/40153
1834         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
1835         implies.
1836
1837 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
1838
1839         * arm.md (movdi2): Copy non-reg values to DImode registers.
1840
1841 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
1842
1843         PR target/39942
1844         * final.c (label_to_max_skip): New function.
1845         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
1846         CODE_LABEL_NUMBER <= max_labelno.
1847         * output.h (label_to_max_skip): New prototype.
1848         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
1849         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
1850         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
1851         Handle CODE_LABELs with >= 16 byte alignment or with
1852         max_skip == (1 << align) - 1.
1853         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
1854         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
1855
1856         PR target/39942
1857         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
1858         .p2align 3 if MAX_SKIP is smaller than 7.
1859         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1860
1861 2009-05-15  Ian Lance Taylor  <iant@google.com>
1862
1863         * alias.c (struct alias_set_entry_d): Rename from struct
1864         alias_set_entry.  Change all uses.
1865         * except.c (struct call_site_record_d): Rename from struct
1866         call_site_record.  Change all uses.
1867         * except.h (struct eh_region_d): Rename from struct eh_region.
1868         Change all uses.
1869         * gcse.c (struct hash_table_d): Rename from struct hash_table.
1870         Change all uses.
1871         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
1872         ivtype_map_elt.  Change all uses.
1873         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
1874         Change all uses.
1875         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
1876         * graphite.h (struct name_tree_d): Rename from struct name_tree.
1877         Change all uses.
1878         (struct sese_d): Rename from struct sese.  Change all uses.
1879         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
1880         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
1881         * optabs.h (struct optab_d): Rename from struct optab.  Change all
1882         uses.
1883         (struct convert_optab_d): Rename from struct convert_optab.
1884         Change all uses.
1885         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
1886         ipa_opt_pass.  Change all uses.
1887         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
1888         all uses.
1889
1890         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
1891         defined as a typedef.
1892         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
1893         defined as a tag.
1894
1895 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1896
1897         PR 16302
1898         * fold-const.c (make_range,build_range_check,merge_ranges): Move
1899         declaration to...
1900         (merge_ranges): Returns bool. 
1901         * tree.h (make_range): .. to here.
1902         (build_range_check): Likewise.
1903         (merge_ranges): Likewise. Renamed from merge_ranges.
1904         * c-typeck.c (parser_build_binary_op): Update calls to
1905         warn_logical_operator.
1906         * c-common.c (warn_logical_operator): Add new warning.
1907         * c-common.h (warn_logical_operator): Update declaration.
1908         
1909 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1910
1911         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
1912         
1913 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1914
1915         * doc/install.texi: Document MPC requirements, flags etc.
1916
1917         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
1918         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
1919         Evaluate constant arguments.
1920         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
1921         (fold_builtin_1): Likewise, also evaluate constant arguments.
1922         Remove superfluous break.
1923         (do_mpc_ckconv): New.
1924         * real.h: Include mpc.h.
1925         * toplev.c (print_version): Output MPC version info if available.
1926
1927 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1928
1929         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
1930
1931 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
1932
1933         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
1934         only once.
1935
1936 2009-05-15  Jan Hubicka  <jh@suse.cz>
1937
1938         * doc/invoke.texi (max-early-inliner-iterations): New flag.
1939         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
1940         (try_inline): Fix return value.
1941         (cgraph_decide_inlining_incrementally): Honor new value.
1942         (cgraph_early_inlining): Handle indirect inlining.
1943         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
1944
1945 2009-05-15  Jan Hubicka  <jh@suse.cz>
1946
1947         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
1948         * cgraphunit.c (cgraph_finalize_function): Set it.
1949         (cgraph_expand_function): Use it.
1950
1951 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1952
1953         * real.c (encode_ieee_half): Define.
1954         (decode_ieee_half): Define.
1955         (ieee_half_format): Define.
1956         (arm_half_format): Define.
1957         * real.h (ieee_half_format): Declare.
1958         (arm_half_format): Declare.
1959
1960 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1961
1962         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
1963         swapped, and reversed optabs exist before trying to use them.
1964
1965 2009-05-15  Paul Brook  <paul@codesourcery.com>
1966             Sandra Loosemore  <sandra@codesourcery.com>
1967
1968         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
1969         loads.  Allow PRE_DEC.
1970         (output_move_neon): Handle PRE_DEC.
1971         (arm_print_operand): Add 'A' for neon structure loads.
1972         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
1973         * config/arm/neon.md (neon_mov): Update comment.
1974         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
1975         calls.
1976         (Um): New constraint.
1977
1978 2009-05-15  Jan Hubicka  <jh@suse.cz>
1979
1980         Revert the following patch until testsuite fallout is fixed:
1981         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1982         * cgraph.h (struct inline_summary): New filed self_wize,
1983         size_inlining_benefit, self_time and time_inlining_benefit.
1984         (struct cgraph_global_info): Replace insns by time ans size fields.
1985         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1986         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1987         (ipcp_update_callgraph): Do not touch function bodies.
1988         * ipa-inline.c: Include except.h
1989         (MAX_TIME): New constant.
1990         (overall_insns): Remove
1991         (overall_size, max_benefit): New static variables.
1992         (cgraph_estimate_time_after_inlining): New function.
1993         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1994         (cgraph_clone_inlined_nodes): Update size.
1995         (cgraph_mark_inline_edge): Update size.
1996         (cgraph_estimate_growth): Use size info.
1997         (cgraph_check_inline_limits): Check size.
1998         (cgraph_default_inline_p): Likewise.
1999         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2000         (cgraph_decide_recursive_inlining): Check size.
2001         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2002         times.
2003         (cgraph_decide_inlining): Likewise.
2004         (cgraph_decide_inlining_incrementally): Likewise; honor
2005         PARAM_EARLY_INLINING_INSNS.
2006         (likely_eliminated_by_inlining_p): New predicate.
2007         (estimate_function_body_sizes): New function.
2008         (compute_inline_parameters): Use it.
2009         * except.c (must_not_throw_labels): New function.
2010         * except.h (must_not_throw_labels): Declare.
2011         * tree-inline.c (init_inline_once): Kill inlining_weigths
2012         * tree-ssa-structalias.c: Avoid uninitialized warning.
2013         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2014         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2015         (PARAM_INLINE_CALL_COST): Remove.
2016         (PARAM_EARLY_INLINING_INSNS): New.
2017
2018 2009-05-15  Richard Guenther  <rguenther@suse.de>
2019
2020         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2021         not TODO_update_ssa.
2022
2023 2009-05-15  Richard Guenther  <rguenther@suse.de>
2024
2025         PR tree-optimization/39999
2026         * gimple.h (gimple_expr_type): Use the expression type looking
2027         through useless conversions.
2028         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2029         (vn_nary_op_insert_stmt): Likewise.
2030         (simplify_binary_expression): Likewise.
2031
2032 2009-05-15  Richard Guenther  <rguenther@suse.de>
2033
2034         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2035         New options, enabled by default.
2036         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2037         Document.
2038         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2039         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2040         * tree-ssa-structalias.c (gate_tree_pta): New function.
2041         (pass_build_alias): Use it.
2042
2043 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2044
2045         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2046         recurse on an invariant address if a conversion from a pointer
2047         type to a wider integer type is involved.
2048
2049 2009-05-15  Jan Hubicka  <jh@suse.cz>
2050
2051         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2052         * cgraph.h (struct inline_summary): New filed self_wize,
2053         size_inlining_benefit, self_time and time_inlining_benefit.
2054         (struct cgraph_global_info): Replace insns by time ans size fields.
2055         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2056         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2057         (ipcp_update_callgraph): Do not touch function bodies.
2058         * ipa-inline.c: Include except.h
2059         (MAX_TIME): New constant.
2060         (overall_insns): Remove
2061         (overall_size, max_benefit): New static variables.
2062         (cgraph_estimate_time_after_inlining): New function.
2063         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2064         (cgraph_clone_inlined_nodes): Update size.
2065         (cgraph_mark_inline_edge): Update size.
2066         (cgraph_estimate_growth): Use size info.
2067         (cgraph_check_inline_limits): Check size.
2068         (cgraph_default_inline_p): Likewise.
2069         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2070         (cgraph_decide_recursive_inlining): Check size.
2071         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2072         times.
2073         (cgraph_decide_inlining): Likewise.
2074         (cgraph_decide_inlining_incrementally): Likewise; honor
2075         PARAM_EARLY_INLINING_INSNS.
2076         (likely_eliminated_by_inlining_p): New predicate.
2077         (estimate_function_body_sizes): New function.
2078         (compute_inline_parameters): Use it.
2079         * except.c (must_not_throw_labels): New function.
2080         * except.h (must_not_throw_labels): Declare.
2081         * tree-inline.c (init_inline_once): Kill inlining_weigths
2082         * tree-ssa-structalias.c: Avoid uninitialized warning.
2083         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2084         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2085         (PARAM_INLINE_CALL_COST): Remove.
2086         (PARAM_EARLY_INLINING_INSNS): New.
2087         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2088         (inline-call-cost): Remove.
2089         (early-inlining-insns): New.
2090
2091 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2092
2093         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2094         for bounds.
2095         (print_int_cst_bounds_in_octal_p): Likewise.
2096         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2097         with subtypes.
2098         * dwarf2out.c (base_type_die): Likewise.
2099         (is_subrange_type): Delete.
2100         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2101         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2102         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
2103         the destination type is boolean.
2104         (build_range_check): Do not special-case subtypes.
2105         (fold_sign_changed_comparison): Likewise.
2106         (fold_unary): Likewise.
2107         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2108         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2109         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2110         * tree.c (subrange_type_for_debug_p): New predicate based on the former
2111         is_subrange_type.
2112         * tree.h (subrange_type_for_debug_p): Declare.
2113         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2114         (convert_affine_scev): Remove call to above function.
2115         (chrec_convert_aggressive): Likewise.
2116         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2117         false for conversions involving subtypes.
2118         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2119         (vrp_val_min): Likewise.
2120         (needs_overflow_infinity): Likewise.
2121         (extract_range_from_unary_expr): Likewise.
2122
2123 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2124
2125         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2126         * config/frv/frv.c: Likewise.
2127         * config/s390/s390.c: Likewise.
2128         * config/sparc/sparc.h: Likewise.
2129         * config/i386/i386.h: Likewise.
2130         * config/i386/i386.c: Likewise.
2131         * config/crx/crx.c: Likewise.
2132         * config/m68hc11/m68hc11.h: Likewise.
2133         * config/iq2000/iq2000.c: Likewise.
2134         * config/mn10300/mn10300.h: Likewise.
2135         * config/mn10300/mn10300.c: Likewise.
2136         * config/m68k/m68k.c: Likewise.
2137         * config/rs6000/rs6000.c: Likewise.
2138         * config/rs6000/xcoff.h: Likewise.
2139         * config/rs6000/linux64.h: Likewise.
2140         * config/rs6000/sysv4.h: Likewise.
2141         * config/score/score3.c: Likewise.
2142         * config/score/score7.c: Likewise.
2143         * config/score/score.c: Likewise.
2144         * config/arm/arm.md: Likewise.
2145         * config/mips/mips.c: Likewise.
2146         * config/mips/mips.md: Likewise.
2147         * config/bfin/bfin.h: Likewise.
2148         * config/pa/pa.c: Likewise.
2149         * config/pa/constraints.md: Likewise.
2150
2151         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2152         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2153         * config/pdp11/pdp11.h: Use memory_address_p instead.
2154
2155 2009-05-14  Ian Lance Taylor  <iant@google.com>
2156
2157         * passes.c (finish_optimization_passes): Change i to int.
2158         * plugin.c (plugins_active_p): Change event to int.
2159         (dump_active_plugins): Likewise.
2160         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2161         Add cast.
2162         * tree.c (tree_range_check_failed): Change c to unsigned int.
2163         (omp_clause_range_check_failed): Likewise.
2164         (build_common_builtin_nodes): Change mode to int.  Add cast.
2165         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2166         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2167
2168         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2169         ++ or -- with a variable of enum type.
2170
2171 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2172
2173         PR driver/40144
2174         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2175
2176 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2177
2178         * store-motion.c: Do not include params.h
2179         * Makefile.in: Fix dependencies for various files.
2180
2181 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2182
2183         * auto-inc-dec.c: Fix pass description, remove apparent
2184         accidental duplication.
2185
2186 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2187
2188         PR middle-end/40147
2189         * ipa-utils.h (memory_identifier_string): Moved to ...
2190         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2191
2192 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2193
2194         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2195         in the former documentation of...
2196         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2197         * ira-conflicts.c (get_dup_num): Use address_operand.
2198         * targhooks.c (default_legitimate_address_p): New.
2199         * targhooks.h (default_legitimate_address_p): New.
2200         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2201         Call hook.
2202         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2203         * target.h (struct target): Add legitimate_address_p.
2204         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2205         (TARGET_INITIALIZER): Include it.
2206
2207         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2208         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2209         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2210         (TARGET_LEGITIMATE_ADDRESS_P): New.
2211
2212         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2213         (REG_OK_STRICT_P): Delete.
2214         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2215         (frv_legitimate_address_p_1): ... this.
2216         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2217         (frv_legitimate_address_p_1): ... the renamed old
2218         frv_legitimate_address_p.
2219         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2220         (TARGET_LEGITIMATE_ADDRESS_P): New.
2221
2222         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2223         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2224         * config/s390/s390.c (legitimate_address_p): Rename to...
2225         (s390_legitimate_address_p): ... this, make static.
2226         (legitimize_address): Adjust call.
2227         (TARGET_LEGITIMATE_ADDRESS_P): New.
2228         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2229
2230         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2231         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2232         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2233         (TARGET_LEGITIMATE_ADDRESS_P): New.
2234
2235         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2236         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2237         * config/spu/spu.c (spu_legitimate_address): Rename to...
2238         (spu_legitimate_address_p): ... this, make static.
2239         (TARGET_LEGITIMATE_ADDRESS_P): New.
2240
2241         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2242         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2243         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2244         (sparc_legitimate_address_p): ... this, make static and return bool.
2245         (legitimize_address): Adjust call.
2246         (TARGET_LEGITIMATE_ADDRESS_P): New.
2247
2248         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2249         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2250         * config/i386/i386.c (legitimate_address_p): Rename to...
2251         (ix86_legitimate_address_p): ... this, make static.
2252         (constant_address_p): Move after it, adjust call.
2253         (TARGET_LEGITIMATE_ADDRESS_P): New.
2254
2255         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2256         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2257         * config/avr/avr.c (legitimate_address_p): Rename to...
2258         (avr_legitimate_address_p): ... this, make static.
2259         (legitimize_address): Adjust call.
2260         (TARGET_LEGITIMATE_ADDRESS_P): New.
2261
2262         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2263         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2264         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2265         (TARGET_LEGITIMATE_ADDRESS_P): New.
2266
2267         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2268         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2269         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2270         (TARGET_LEGITIMATE_ADDRESS_P): New.
2271
2272         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2273         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2274         Remove.
2275         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2276         Make static.
2277         (TARGET_LEGITIMATE_ADDRESS_P): New.
2278
2279         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2280         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2281         Remove.
2282         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2283         Rename to...
2284         (m68hc11_legitimate_address_p): ... this, make static.
2285         (go_if_legitimate_address_internal): Rename to...
2286         (m68hc11_legitimate_address_p_1): ... this.
2287         (legitimize_address): Adjust call.
2288         (TARGET_LEGITIMATE_ADDRESS_P): New.
2289
2290         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2291         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2292         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2293         (TARGET_LEGITIMATE_ADDRESS_P): New.
2294
2295         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2296         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2297         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2298         (mn10300_legitimate_address_p): ... this, make static.
2299         (TARGET_LEGITIMATE_ADDRESS_P): New.
2300
2301         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2302         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2303         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2304         (TARGET_LEGITIMATE_ADDRESS_P): New.
2305
2306         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2307         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2308         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2309         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2310         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2311         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2312         (rs6000_legitimate_address_p): ... this, make static.
2313         (TARGET_LEGITIMATE_ADDRESS_P): New.
2314         (REG_MODE_OK_FOR_BASE_P): Delete.
2315         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2316
2317         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2318         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2319         Delete.
2320         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2321         static, adjust types.
2322         (TARGET_LEGITIMATE_ADDRESS_P): New.
2323
2324         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2325         * config/score/score.c (score_address_p): Rename to...
2326         (score_legitimate_address_p): ... this.
2327         (TARGET_LEGITIMATE_ADDRESS_P): New.
2328         * config/score/score3.c (score3_address_p): Rename to...
2329         (score3_legitimate_address_p): ... this.
2330         * config/score/score7.c (score7_address_p): Rename to...
2331         (score7_legitimate_address_p): ... this.
2332
2333         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2334         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2335         GO_IF_LEGITIMATE_ADDRESS): Delete.
2336         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2337         thumb2_legitimate_address_p): Delete.
2338         (arm_legitimate_address_p): Rename to...
2339         (arm_legitimate_address_outer_p): ... this.
2340         * config/arm/constraints.md ("Uq"): Adjust call.
2341         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2342         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
2343         (arm_legitimate_address_outer_p): ... this.
2344         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
2345         (TARGET_LEGITIMATE_ADDRESS_P): New.
2346
2347         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2348         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2349         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2350         (TARGET_LEGITIMATE_ADDRESS_P): New.
2351
2352         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2353         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2354         * config/vax/vax.c (legitimate_address_p): Rename to...
2355         (vax_legitimate_address_p): ... this, make static.
2356         (TARGET_LEGITIMATE_ADDRESS_P): New.
2357
2358         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2359         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2360         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2361         (TARGET_LEGITIMATE_ADDRESS_P): New.
2362
2363         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2364         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2365         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2366         (mmix_legitimate_address_p): ... this, make static.
2367         (TARGET_LEGITIMATE_ADDRESS_P): New.
2368
2369         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2370         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2371         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2372         (TARGET_LEGITIMATE_ADDRESS_P): New.
2373
2374 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2375
2376         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2377         of MODE_COMPLEX_INT.
2378
2379 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2380
2381         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2382         LCT_NORMAL in function call.
2383         * mips-tdump.c (print_file_desc): Add cast to enum type.
2384         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2385         (mark_stabs): Add casts to enum types.
2386         (parse_stabs_common): Add casts to enum types.
2387
2388 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2389
2390         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2391         Check for invalid values of LETTER.
2392
2393 2009-05-13  Taras Glek  <tglek@mozilla.com>
2394
2395         * attribs.c (register_attribute): moved out attribute registration into
2396         register_attribute.
2397         * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
2398         * gcc-plugin.h: Added forward decl for register_attribute.
2399         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2400         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2401         PLUGIN_ATTRIBUTES boilerplate.
2402
2403 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2404
2405         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2406         values even in sentinel and empty entries.
2407         (ms_printf_flag_specs):  Likewise.
2408         (ms_scanf_flag_specs):  Likewise.
2409         (ms_strftime_flag_specs):  Likewise.
2410         (ms_print_char_table):  Likewise.
2411         (ms_scan_char_table):  Likewise.
2412         (ms_time_char_table):  Likewise.
2413
2414 2009-05-13  Doug Kwan  <dougkwan@google.com>
2415
2416         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2417
2418 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2419
2420         * config/mips/mips.md (store): Add attributes for QI and HI.
2421         Update comment.
2422         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2423         (truncdi<mode>2): ... this new pattern.
2424
2425 2009-05-13  Brad Hards  <bradh@kde.org>
2426
2427         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2428
2429 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2430             Ben Elliston <bje@au.ibm.com>
2431
2432         PR middle-end/40035
2433         * dse.c (check_mem_read_rtx): Guard against width == -1.
2434
2435 2009-05-13  Michael Matz  <matz@suse.de>
2436
2437         PR middle-end/39976
2438         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2439         (trivially_conflicts_p): New function.
2440         (insert_backedge_copies): Use it.
2441
2442 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2443
2444         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2445         (handle_stdc_pragma): Use new enum constant names.
2446         (handle_pragma_float_const_decimal64): Ditto.
2447
2448 2009-05-13  Ian Lance Taylor  <iant@google.com>
2449
2450         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2451         tree.def.
2452
2453 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2454
2455         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2456         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2457         multilibs.
2458         * config/m68k/m68k.h (FL_UCLINUX): Define.
2459
2460 2009-05-13  Jan Hubicka  <jh@suse.cz>
2461
2462         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2463
2464 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2465
2466         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2467         unless -fschedule-insns is specified.
2468
2469 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2470
2471         PR target/39561
2472         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2473         TARGET_EXPAND_CBRANCHDI4.
2474         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2475         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2476         (cmpeqdi): Fix comment.
2477
2478 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2479
2480         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2481         (sh_legitimate_address_p): Likewise.
2482         * config/sh/sh.c (sh_legitimate_index_p): New.
2483         (sh_legitimate_address_p): Likewise.
2484         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2485         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2486         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2487         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2488         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2489         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2490         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2491         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2492         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2493
2494 2009-05-12  Jan Hubicka  <jh@suse.cz>
2495
2496         * tree-inline.c (estimate_operator_cost): Add operands;
2497         when division happens by constant, it is cheap.
2498         (estimate_num_insns): Loads and stores are not having cost of 0;
2499         EH magic stuff is cheap; when computing runtime cost of switch,
2500         use log2 base of amount of its cases; builtin_expect has cost of 0;
2501         compute cost for moving return value of call.
2502         (init_inline_once): Initialize time_based flags.
2503         * tree-inline.h (eni_weights_d): Add time_based flag.
2504
2505 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2506
2507         * df-core.c: Update head documentation.
2508
2509 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2510
2511         PR bootstrap/40118
2512         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2513         shadowing exisiting variable op1.
2514
2515 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2516
2517         PR target/37179
2518         * config/i386/driver-i386.c (processor_signatures): New enum.
2519         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2520         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2521         processor signature to detect geode processor.
2522
2523 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2524
2525         Revert:
2526
2527         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2528
2529         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2530         causes spurious differences between trunk and cond-optab branch.
2531
2532 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2533
2534         * dojump.c (compare_from_rtx): Delete.
2535         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2536         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2537         if the comparison does not satisfy the predicate; test predicates for
2538         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2539         further if one existing pattern fails.
2540         * expr.h (compare_from_rtx): Delete.
2541         (prepare_operand): Declare it.
2542         * optabs.c: Change "lib call" to "libcall" throughout.
2543         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2544         HAVE_conditional_trap, emit_cmp_insn): Delete.
2545         (can_compare_p): Delete cmp_optab case.
2546         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2547         Accept other parameters by value.
2548         (prepare_operand): Make non-static.
2549         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2550         other parameters by value.  Try to widen operands here based on
2551         an optab_methods argument and looking at cbranch_optab.
2552         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2553         loop.  Use cbranch_optab directly.
2554         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2555         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2556         assertion.
2557         (emit_conditional_move, emit_conditional_add): Inline what's needed
2558         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2559         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2560         with COMPARE.  Move cmov_optab and cstore_optab above
2561         with cbranch_optab, move cmp_optab down with ucmp_optab,
2562         remove tst_otpab.  Do not initialize trap_rtx.
2563         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2564         for trap code.  Do not check HAVE_conditional_trap.  Use
2565         prepare_cmp_insn.  Accept no predicate for operand 3.
2566         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2567         (OTI_ctrap, ctrap_optab): New.
2568         (tst_optab): Delete.
2569         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2570         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2571         with lookup of ctrap_optab.
2572         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
2573         setcc_gen_code): Delete.
2574         (ctrap_optab): New.
2575
2576         * combine.c (combine_simplify_rtx, simplify_set): Do not
2577         special case comparing against zero for cc0 machines.
2578         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2579         COMPARE on cc0 machines.
2580         (simplify_relational_operation): Return a new expression when
2581         a COMPARE could be removed.
2582         * final.c (final_scan_insn): Compare cc_status values
2583         against LHS of a (compare FOO (const_int 0)) cc0 source.
2584         Also check if cc_status.value is the full compare.
2585
2586         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2587         (cstoreMM4): Document.
2588         (conditional_trap): Document ctrapMM4 instead.
2589         (sync_compare_and_swapMM): Refer to cbranchcc4.
2590         (Dependent Patterns): Eliminate obsolete information referring to
2591         the old jump optimization phase.
2592         (Canonicalization): Include cbranchcc4 case, omit canonicalization
2593         of compares with 0 on cc0 machines.
2594         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2595         avoiding references to cc0.  Remove text about storing operands
2596         in cmpMM.
2597         * doc/tm.texi (Condition Codes): Include blurb on different
2598         condition code representations, separate into subsections for
2599         CC0, MODE_CC and conditional execution.
2600
2601         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2602         alpha_emit_setcc): Accept operands and a machine mode.
2603         * config/alpha/alpha.c (alpha_emit_conditional_branch):
2604         Get code/op0/op1 from operands, use machine mode argument
2605         instead of alpha_compare.fp_p.  Emit the branch here.
2606         (alpha_emit_setcc): Likewise, and return boolean.
2607         (alpha_emit_conditional_move): Likewise.  Assert that
2608         cmp_op_mode == cmp_mode, and simplify accordingly.
2609         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2610         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2611         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2612         Delete.
2613         (stack probe test): Use cbranchdi4.
2614         * config/alpha/predicates.md (alpha_cbranch_operator): New.
2615
2616         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
2617         * config/arc/arc.h (movsicc, movsfcc): Use it.
2618         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2619         (cbranchsi4, cstoresi4): New.
2620         (cmpsi, bCC and sCC expanders): Remove. 
2621
2622         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2623         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2624         * config/arm/predicates.md (arm_comparison_operator): Only include
2625         floating-point operators if there is a hardware floating-point unit.
2626         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2627         deferring to cbranch_cc and cstore_cc respectively.
2628         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2629         cbranch_cc, cstore_cc): New.
2630         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2631         arm_compare_op1.
2632         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2633
2634         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2635         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2636         as an argument.
2637         (adjust_insn_length): Adjust calls.
2638         (avr_reorg): Handle (compare (foo) (const_int 0)).
2639         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2640         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2641         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2642         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2643         (bCC): Remove.
2644         (cbranchqi4, cbranchhi4, cbranchsi4): New.
2645         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2646
2647         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2648         (cbranchsi4, cstorebi4, cstoresi4): New.
2649         (movbisi): This insn is duplicate, split it to zero_extend.
2650         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2651         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
2652         (bfin_optimize_loop): Use cbranch expander.
2653         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2654         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2655         (bfin_bimode_comparison_operator): ... this.
2656         (bfin_direct_comparison_operator): New.
2657  
2658         * config/cris/cris.c (cris_normal_notice_update_cc): Look
2659         inside (compare FOO (const_int 0)).
2660         (cris_rtx_costs): Handle ZERO_EXTRACT.
2661         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2662         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2663         (*tstdi_v32): Delete.
2664         (*cmpdi_non_v32): Add M alternative for operand 1.
2665         (cmpsi, cmp<mode>): Make private.
2666         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2667         with COMPARE.
2668         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2669
2670         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2671         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2672         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2673         (cc_reg_operand): New.
2674         (any_cond): Delete.
2675         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2676         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2677         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2678         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2679         crx_expand_scond): Delete.
2680
2681         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2682         (cbranchsi4): New.
2683         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2684         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2685
2686         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2687         cstoresi4, cstoresf4, cstoredf4): New.
2688         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2689         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2690         Receive the entire operands array.
2691         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2692         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2693         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2694         Get test/op0/op1 from the operands array.
2695         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2696
2697         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2698         (h8300_expand_store): New.
2699         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2700         (const_int 0)).
2701         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
2702         (h8300_expand_store): New.
2703         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2704         or do not try to produce (set (cc0) REG).
2705         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
2706         change a compare into a move to a scratch register.  Disable some
2707         peepholes when comparing with zero.
2708         (tstsi, tsthi, tstsi, cmpqi): Make private.
2709         (cmphi): Delete.
2710         (bCC, sCC): Delete.
2711         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2712         cstoresi4): New.
2713
2714         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2715         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2716         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2717         (ix86_emit_i387_log1p): Use cbranchxf2.
2718         (ix86_expand_setcc): Return void.
2719         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2720         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2721         cmp<MODEF>, cmpcc): Remove.
2722         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2723         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2724         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2725         (sCC and bCC expanders): Remove.
2726         (stack_protect_test): Use cbranchcc4.
2727
2728         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2729         Delete.
2730         (ia64_expand_compare): Accept three rtx by reference and return void.
2731         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2732         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
2733         from *expr.  Update *expr with the BImode comparison to do.
2734         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2735         cmptf, bCC, sCC, conditional_trap): Delete.
2736         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
2737         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2738         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2739         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2740         * config/ia64/predicates.md (ia64_cbranch_operator): New.
2741
2742         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2743         type of last argument.
2744         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2745         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2746         use machine mode argument instead of branch_type.  Remove dead
2747         code for floating-point comparisons.
2748         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2749         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2750         Remove.
2751         (cbranchsi4, cstoresi4): New.
2752         * config/iq2000/predicates.md (reg_or_const_operand): New.
2753
2754         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2755         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2756         (b<code>_op): Rewrite to...
2757         (bcc_op): ... this, using match_operator.
2758         (s<code>_op): Rewrite to...
2759         (scc_op): ... this, using match_operator.
2760         (s<code>_24_op): Rewrite to...
2761         (scc_op_24): ... this, using match_operator.
2762         (s<code>_<mode>): Rewrite to...
2763         (cstore<mode>4): ... this, using match_operator.
2764         (s<code>_<mode>_24): Rewrite to...
2765         (cstore<mode>4_24): ... this, using match_operator.
2766         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2767         m32c_unpend_compare, m32c_expand_scc): Delete.
2768         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2769         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2770         (m32c_expand_movcc): Change NE to EQ if necessary.
2771         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2772
2773         * config/m32r/m32r-protos.h (gen_cond_store): New.
2774         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
2775         (gen_cond_store): New, from sCC patterns.
2776         (m32r_expand_block_move): Use cbranchsi4.
2777         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
2778         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
2779         (cbranchsi4, cstoresi4): New.
2780         
2781         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
2782         Delete.
2783         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
2784         (m68hc11_notice_update_cc): Look into a compare with 0.
2785         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
2786         Delete.
2787         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
2788         cmphi, cmpqi, bCC): Delete.
2789         (cbranchsi4, cbranchhi4, cbranchqi4): New.
2790         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
2791         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
2792         sets with COMPARE.
2793
2794         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
2795         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
2796         * config/m68k/constraints.md (H): New.
2797         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
2798         the define_insn below.
2799         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
2800         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
2801         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
2802         patterns): Wrap RHS with COMPARE.
2803         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
2804         (*cmpdi_internal): Name this pattern.
2805         (cmpdi): Change to define_insn.
2806         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
2807         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
2808         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
2809         predicate.
2810         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
2811         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
2812         (conditional_trap): Change to...
2813         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
2814         (*conditional_trap): Use the ordered_comparison_operator and
2815         const1_operand predicates.
2816         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
2817         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
2818         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
2819         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
2820
2821         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
2822         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
2823         (mcore_gen_compare): New. 
2824         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
2825         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
2826         (mcore_gen_compare): ... this.
2827         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
2828         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
2829         (stack probe pattern): Use cbranchsi4.
2830
2831         * config/mips/predicates.md (mips_cstore_operator): New.
2832         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
2833         * config/mips/mips.md (any_cond): Delete.
2834         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
2835         always succeed.
2836         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
2837         fixuns_truncsfdi2): Use cbranch patterns.
2838         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
2839         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
2840         Adjust call to mips_expand_conditional_branch.
2841         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
2842         cstore<GPR:mode>4.
2843         * config/mips/mips-protos.h (mips_expand_conditional_branch,
2844         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
2845         * config/mips/mips.c (cmp_operands): Delete.
2846         (mips_emit_compare): Get comparison operands from *op0/*op1.
2847         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
2848         that it succeeds.  Use op0/op1 instead of cmp_operands.
2849         (mips_expand_conditional_branch, mips_expand_conditional_move,
2850         mips_expand_conditional_trap): Likewise.
2851         (mips_block_move_loop): Use cbranch patterns. 
2852         * config/mips/mips.h (cmp_operands): Delete.
2853
2854         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
2855         (mmix_gen_compare_reg): Just return a register in the right CC mode.
2856         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
2857         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
2858         (*cmpcc_folded): Rename to...
2859         (*cmpdi_folded): this.
2860         (*cmpcc): Rename to...
2861         (*cmps): ... this.
2862         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
2863         (bCC): Remove.
2864         (cbranchdi4): New.
2865         (cbranchdf4): New.  Handle invalid comparisons here.
2866         * config/mmix/predicates.md (float_comparison_operator): New.
2867
2868         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
2869         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
2870         * config/mn10300/mn10300.md (tst): Delete.
2871         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
2872         Name these patterns and wrap RHS in a compare.
2873         (*cmpsi): Make this pattern private.  Include tst.
2874         (*cmpsf): Make this pattern private.
2875         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
2876         (compare with zero peepholes): Likewise.
2877         (bCC): Remove.
2878         (cbranchsi4, cbranchsf4): New.
2879         (casesi): Use cbranchsi4.
2880
2881         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
2882         hppa_branch_type): Delete.
2883         (return_addr_rtx): Use cbranchsi4.
2884         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
2885         Emit CCFPmode comparison here.
2886         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
2887         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
2888         hppa_branch_type): Delete.
2889         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
2890         (movsicc, movdicc): Remove references to hppa_compare_op0,
2891         hppa_compare_op1 and compare_from_rtx.
2892         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
2893         (casesi): Use cbranchsi4.
2894
2895         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
2896         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
2897         * config/pdp11/pdp11.md (register_or_const0_operand): New.
2898         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
2899         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
2900         (bCC): Delete.
2901         (cbranchdf4, cbranchhi4, cbranchqi4): New.
2902         (*branch, *branch_inverted): New.
2903
2904         * config/picochip/picochip.md (cbranchhi4): Use
2905         ordered_comparison_operator.
2906         (cmphi, bCC): Remove.
2907
2908         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
2909         (trap_comparison_operator): Delete.
2910         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
2911         rs6000_emit_cbranch): Accept mode and operands.
2912         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
2913         rs6000_compare_fp_p): Delete.   
2914         (rs6000_generate_compare): Accept mode and comparison.  Extract code
2915         and op0/op1 from there.  Replace references to rs6000_compare_op0
2916         and rs6000_compare_op1.
2917         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
2918         extract result from passed operands.
2919         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
2920         extract loc from passed operands.
2921         (rs6000_emit_cmove): Likewise.
2922         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
2923         rs6000_compare_fp_p): Delete.
2924         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
2925         (cbranch<GPR>4, cbranch<FP>4): New.
2926         (cstore<mode>4): New.  Consolidate here all choices about when to use
2927         portable or specialized sCC sequences.
2928         (stack_protect_test): Use cbranchsi4.
2929         (conditional_trap): Replace with ctrap<GPR>4.
2930         (conditional trap insn): Replace trap_comparison_operator with
2931         ordered_comparison_operator. 
2932
2933         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
2934         (s390_emit_prologue): Use ctrap.
2935         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
2936         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
2937         New predicates replacing...
2938         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
2939         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
2940         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
2941         (add<mode>cc): Do not use s390_compare_op0/op1.
2942         (s<code>): Change to...
2943         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
2944         (seq): Change to...
2945         (cstorecc4): ... this.  Handle EQ or NE equally.
2946         (*sne): Un-privatize for use in cstorecc4.
2947         (b<code>): Change to...
2948         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
2949         (conditional_trap): Replace with...
2950         (ctrap<GPR>4, ctrap<FP>4): ... these.
2951         (stack_protect): Use cbranchcc4.
2952
2953         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
2954         * config/score/score-protos.h (score_gen_cmp): Delete.
2955         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
2956         (score_block_move-loop): Use cbranchsi4.
2957         * config/score/score.md (cbranchsi4): New.
2958         (cmpsi, bCC): Delete.
2959         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
2960         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2961         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
2962         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2963         * config/score/score3.h (score3_gen_cmp): Delete.
2964         * config/score/score7.h (score7_gen_cmp): Delete.
2965
2966         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
2967         (sh_emit_scc_to_t): ... this.  Return void.
2968         (from_compare): Rename to...
2969         (sh_emit_compare_and_branch): ... this.
2970         (sh_emit_compare_and_set): New.
2971         (sh_expand_t_scc): Accept operands.
2972         * config/sh/predicates.md (sh_float_comparison_operator): New.
2973         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
2974         (prepare_scc_operands): Rename to...
2975         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
2976         arguments.
2977         (sh_emit_cheap_store_flag): New.
2978         (sh_emit_set_t_insn): New.
2979         (from_compare): Rename to...
2980         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
2981         handling of TARGET_SH2E floating point to avoid recursive call.
2982         Generate branch here.
2983         (sh_emit_compare_and_set): New.
2984         (sh_expand_t_scc): Get op0/op1 from arguments.
2985         (sh_emit_cheap_store_flag): New.
2986         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
2987         cases.
2988         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
2989         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
2990         (movsicc, movdicc): Do nothing when it recreated operands from
2991         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
2992         prepare_scc_operands (now sh_emit_scc_to_t).
2993         (udivdi3): Use cstoresi4.
2994         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
2995         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
2996         (cbranchint4_media, cbranchfp4_media): New.
2997         (casesi): Use cbranchdi4.
2998         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
2999         Delete.
3000         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3001         (movnegt): Remove second operand.
3002         (cbranchsf4, cbranchdf4): New.
3003         (stack_protect): Use cbranchdi4/cbranchsi4.
3004
3005         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3006         (gen_compare_reg): Accept comparison, extract part of it to...
3007         (gen_compare_reg_1): ... this. 
3008         (gen_compare_operator): Delete.
3009         (gen_v9_scc): Accept separate destination, comparison code and arms.
3010         Do not use sparc_compare_op0/sparc_compare_op1.
3011         (emit_scc_insn, emit_conditional_branch_insn): New.
3012         (emit_v9_brxx): Make static.  Remove useless assertion.
3013         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3014         emit_cmp_insn.
3015         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3016         * config/sparc/sparc-protos.h (gen_compare_reg,
3017         sparc_emit_float_lib_cmp): Adjust prototype.
3018         (emit_scc_insn, emit_conditional_branch_insn): New.
3019         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3020         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3021         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3022         iterators to the top.
3023         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3024         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3025         snedi_special_trunc): Delete.
3026         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3027         and snedi_special_trunc.
3028         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3029         cbranchdi4, cbranch<F:mode>4): New.
3030         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3031         here.  Use gen_compare_reg instead of gen_compare_operator.
3032         (conditional_trap): Replace with...
3033         (ctrapsi4, ctrapdi4): ... this.
3034         (stack_protect_test): Use cbranchcc4.
3035
3036         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3037         argument to rtx.
3038         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3039         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3040         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3041         from operands[0] or operands[3] depending on is_set.
3042         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3043         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3044         cmpdf, bCC), sCC: Remove.
3045         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3046         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3047         cstoredf4): New.
3048         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3049         spu_emit_branch_or_set.
3050
3051         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3052         Add two arguments.
3053         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3054         xstormy16_compare_op1): Delete.
3055         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3056         xstormy16_compare_op1): Delete. 
3057         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3058         Adjust calls.
3059         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3060         (cmphi, cmpsi, bCC): Remove.
3061
3062         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3063         (*cmpsi): ... this one.
3064         (cbranchsi4, cstoresi4): New.
3065         (bCC expanders): Delete.
3066         (sCC insns): Fold into...
3067         (*setcc): ... this one.
3068         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3069         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3070         (movsicc): Simplify.
3071         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3072
3073         * config/vax/vax-protos.h (cond_name): New.
3074         (vax_output_conditional_branch): Remove.
3075         * config/vax/vax.c (cond_name): New.
3076         (vax_output_conditional_branch): Remove.
3077         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3078         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3079         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3080         (bit<VAXint>): Wrap source with (compare).
3081         (b<code> and following unnamed pattern): Rename to *branch and
3082         *branch_reversed.  Change macroization to match_operator.
3083         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3084
3085         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3086         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3087         Change last argument to machine_mode.
3088         (xtensa_expand_scc): Add machine_mode argument.
3089         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3090         (gen_conditional_move, xtensa_expand_conditional_branch,
3091         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3092         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3093         Adjust operand numbers.
3094         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3095         Delete.
3096         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3097         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3098         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3099
3100 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3101
3102         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3103         causes spurious differences between trunk and cond-optab branch.
3104
3105 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3106
3107         PR target/37137
3108         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3109
3110 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3111
3112         * tree.c (iterative_hash_pointer): Delete.
3113         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3114         Hash UIDs and versions of SSA names.  Don't special-case built-in
3115         function declarations.
3116
3117 2009-05-11  Ian Lance Taylor  <iant@google.com>
3118
3119         PR bootstrap/40103
3120         * graphite.c: Force -Wc++-compat to only be a warning before
3121         #including "cloog/cloog.h".
3122
3123 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3124
3125         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3126         
3127 2009-05-11  Jan Hubicka  <jh@suse.cz>
3128
3129         * tree-ssa-loop-ivcanon.c: Include target.h
3130         (struct loop_size): new structure.
3131         (constant_after_peeling): New predicate.
3132         (tree_estimate_loop_size): New function.
3133         (estimated_unrolled_size): Rewrite for new estimates.
3134         (try_unroll_loop_completely): Use new estimates.
3135         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3136
3137 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3138
3139         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3140         libcpp interface change.
3141         (spu_macro_to_expand): Likewise.
3142
3143 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3144
3145         PR tree-optimization/40026
3146         * gimplify.c (gimplify_init_constructor): Change initial conditional
3147         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3148         optimize_compound_literals_in_ctor.
3149
3150 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3151
3152         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3153         New devices.
3154         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3155
3156 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3157
3158         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3159         HOST_WIDE_INT for gap.
3160
3161 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3162
3163         PR tree-optimization/40074
3164         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3165         account in group size and step comparison.
3166
3167 2009-05-11  Richard Guenther  <rguenther@suse.de>
3168
3169         * passes.c (init_optimization_passes): Strip now incorrect comment.
3170         (execute_function_todo): Do not set PROP_alias.
3171         * tree-pass.h (PROP_alias): Remove.
3172         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3173         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3174         * tree-nrv.c (pass_return_slot): Likewise.
3175         * tree-object-size.c (pass_object_sizes): Likewise.
3176         * tree-ssa-dom.c (pass_dominator): Likewise.
3177         (pass_phi_only_cprop): Likewise.
3178         * tree-ssa-dse.c (pass_dse): Likewise.
3179         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3180         (pass_cselim): Likewise.
3181         * tree-ssa-pre.c (pass_pre): Likewise.
3182         (pass_fre): Likewise.
3183         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3184         * tree-ssa-sink.c (pass_sink_code): Likewise.
3185         * tree-stdarg.c (pass_stdarg): Likewise.
3186         * tree-tailcall.c (pass_tail_calls): Likewise.
3187         * tree-vrp.c (pass_vrp): Likewise.
3188
3189 2009-05-10  Ian Lance Taylor  <iant@google.com>
3190
3191         * basic-block.h (enum profile_status): Break out of struct
3192         control_flow_graph.
3193         * cgraph.h (struct inline_summary): Break out of struct
3194         cgraph_local_info.
3195         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3196         of struct cgraph_order_sort.
3197         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3198         * cse.c (struct branch_path): Break out of struct
3199         cse_basic_block_data.
3200         * except.h (enum eh_region_type): Break out of struct eh_region.
3201         * gcc.c (enum add_del): Break out of struct modify_target.
3202         * genrecog.c (enum decision_type): Break out of struct decision_test.
3203         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3204         ggc_pch_data.
3205         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3206         * regmove.c (enum match_use): New enum, broken out of struct match.
3207         * sched-int.h (enum post_call_group): New enum, broken out of
3208         struct deps.
3209         (struct deps_reg): Break out of struct deps.
3210         * target.h (struct asm_int_op): Break out of struct gcc_target.
3211         * tree-eh.c (struct goto_queue_node): Break out of struct
3212         leh_tf_state.
3213         * tree-inline.h (enum copy_body_cge_which): Break out of
3214         copy_body_data.
3215         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3216
3217         * c-decl.c (in_struct, struct_types): New static variables.
3218         (pushtag): Add loc parameter.  Change all callers.
3219         (lookup_tag): Add ploc parameter.  Change all callers.
3220         (check_compound_literal_type): New function.
3221         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3222         -Wc++-compat, warn about struct/union/enum types defined within a
3223         struct or union.
3224         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3225         and loc parameters.  Change all callers.  Change error calls to
3226         error_at, using loc.  For a redefinition, if the location of the
3227         original definition is known, report it.  Set in_struct and
3228         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3229         (finish_struct): Add new parameters enclosing_in_struct and
3230         enclosing_struct_types.  Change all callers.  Set
3231         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3232         in the struct.  If in a struct, add this struct to struct_types.
3233         (start_enum): Add loc parameter.  Change all callers.  Use
3234         error_at for errors, using loc.  For a redefinition, if the
3235         location of the original definition is known, report it.  If in a
3236         struct, add this enum type to struct_types.  If -Wc++-compat warn
3237         if in sizeof, typeof, or alignof.
3238         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3239         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3240         (c_parser_enum_specifier): Get enum location for start_enum.
3241         (c_parser_struct_or_union_specifier): Get struct location for
3242         start_struct.  Save in_struct and struct_types status between
3243         start_struct and finish_struct.
3244         (c_parser_cast_expression): Get location of cast.
3245         (c_parser_alignof_expression): Get location of type.
3246         (c_parser_postfix_expression): Likewise.
3247         (c_parser_postfix_expression_after_paren_type): Add type_loc
3248         parameter.  Change all callers.  Call check_compound_literal_type.
3249         Use type_loc for error about variable size type.
3250         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3251         of an enum constant from an enum type defined in a struct or union.
3252         (c_cast_expr): Add loc parameter.  Change all callers.  If
3253         -Wc++-compat, warn about defining a type in a cast.
3254         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3255         (start_enum, start_struct, finish_struct): Update declarations.
3256         (parser_xref_tag, c_cast_expr): Update declarations.
3257         (check_compound_literal_type): Declare.
3258
3259 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3260
3261         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3262         for recent libcpp interface change.
3263         (rs6000_macro_to_expand): Likewise.
3264
3265 2009-05-10  Michael Matz  <matz@suse.de>
3266
3267         PR target/40031
3268         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3269         not at entry of function.
3270
3271 2009-05-10  Richard Guenther  <rguenther@suse.de>
3272
3273         PR tree-optimization/40081
3274         Revert
3275         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3276         using the main variant of the element type.  Do not fiddle with
3277         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3278
3279         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3280         structs with volatile fields.
3281
3282 2009-05-10  Jan Hubicka  <jh@suse.cz>
3283
3284         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3285         (estimate_move_cost): Assert that it does not get called for
3286         VOID_TYPE_P.
3287         (estimate_num_insns): Skip VOID types in argument handling.
3288         (optimize_inline_calls): Delete unreachable blocks and verify that
3289         callgraph is valid.
3290
3291 2009-05-10  Jan Hubicka  <jh@suse.cz>
3292
3293         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3294         * cgraph.c (cgraph_mark_address_taken_node): New function.
3295         (dump_cgraph_node): Dump new flag.
3296         * cgraph.h (struct cgraph_node): Add address_taken.
3297         (cgraph_mark_address_taken_node): New function.
3298         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3299         since new direct calls can be born.
3300
3301 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3302
3303         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3304         tok->val.node.node.
3305
3306 2009-05-10  Jan Hubicka  <jh@suse.cz>
3307
3308         PR middle-end/40084
3309         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3310         argument; rewrite.
3311         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3312         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3313         * tree-inline.c (copy_bb): Set frequency correctly.
3314         (fold_marked_statements): Update call to
3315         cgraph_update_edges_for_call_stmt.
3316
3317 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3318
3319         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3320         identifiers in diagnostics.
3321         * config/arm/arm.c (arm_handle_fndecl_attribute,
3322         arm_handle_isr_attribute): Likewise.
3323         * config/avr/avr.c (avr_handle_progmem_attribute,
3324         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3325         * config/bfin/bfin.c (handle_int_attribute,
3326         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3327         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3328         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3329         Likewise.
3330         * config/darwin.c (darwin_handle_kext_attribute,
3331         darwin_handle_weak_import_attribute): Likewise.
3332         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3333         h8300_handle_eightbit_data_attribute,
3334         h8300_handle_tiny_data_attribute): Likewise.
3335         * config/i386/i386.c (ix86_handle_cconv_attribute,
3336         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3337         * config/i386/winnt.c (ix86_handle_shared_attribute,
3338         ix86_handle_selectany_attribute): Likewise.
3339         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3340         * config/m32c/m32c.c (function_vector_handler): Likewise.
3341         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3342         m68hc11_handle_fntype_attribute): Likewise.
3343         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3344         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3345         * config/mips/mips.c (mips_insert_attributes,
3346         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3347         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3348         rs6000_handle_struct_attribute): Likewise.
3349         * config/sh/sh.c (sh_insert_attributes,
3350         sh_handle_resbank_handler_attribute,
3351         sh_handle_interrupt_handler_attribute,
3352         sh2a_handle_function_vector_handler_attribute,
3353         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3354         Likewise.
3355         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3356         * config/spu/spu.c (spu_handle_fndecl_attribute,
3357         spu_handle_vector_attribute): Likewise.
3358         * config/stormy16/stormy16.c
3359         (xstormy16_handle_interrupt_attribute): Likewise.
3360         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3361         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3362
3363 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3364
3365         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3366         (pp_translate_identifiers): New.
3367         (pp_identifier): Only conditionally translate identifier to locale
3368         character set.
3369         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3370         (pp_base_tree_identifier): Only conditionally translate identifier
3371         to locale character set.
3372         * c-pretty-print.c (M_): Define.
3373         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3374         fragments for conditional translation with M_.
3375         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3376         identifier translation.
3377
3378 2009-05-10  Richard Guenther  <rguenther@suse.de>
3379
3380         PR tree-optimization/40081
3381         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3382         using the main variant of the element type.  Do not fiddle with
3383         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3384
3385 2009-05-09  Jan Hubicka  <jh@suse.cz>
3386
3387         PR middle-end/40080
3388         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3389         indirect calls; verify cgraph afterwards.
3390
3391 2009-05-09  Jan Hubicka  <jh@suse.cz>
3392
3393         PR bootstrap/40082
3394         * ipa.c (update_inlined_to_pointer): New function.
3395         (cgraph_remove_unreachable_nodes): Use it.
3396
3397 2009-05-09  Jan Hubicka  <jh@suse.cz>
3398
3399         * tree-eh.c (struct leh_state): Remove prev_try.
3400         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3401         not track prev_try.
3402         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3403         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3404         remove_eh_handler_and_replace, foreach_reachable_handler,
3405         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3406         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3407         (gen_eh_region_cleanup): Update prototype.
3408
3409 2009-05-09  Jan Hubicka  <jh@suse.cz>
3410
3411         PR middle-end/40043
3412         * except.c (copy_eh_region): Always set prev_try.
3413         (redirect_eh_edge_to_label): Find outer try.
3414         (foreach_reachable_handler): When looking for prev try
3415         handle case where previous try is not going to be taken.
3416
3417 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3418
3419         PR tree-optimization/40049
3420         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3421         only vector/vector shifts, convert the type of the constant to the
3422         appropriate type to avoid building incorrect trees, which
3423         eventually have problems with garbage collection.
3424
3425 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3426
3427         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3428         -1 for complex floating-point types if honoring signed zeros.
3429
3430 2009-05-08  Jan Hubicka  <jh@suse.cz>
3431
3432         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3433         argument; handle correctly when profile is absent.
3434         (build_cgraph_edges): Update.
3435         (rebuild_cgraph_edges): Update.
3436         * cgraph.c: Do not include varray.h.
3437         (cgraph_set_call_stmt_including_clones): New function.
3438         (cgraph_create_edge_including_clones): Likewise
3439         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3440         (cgraph_update_edges_for_call_stmt): Handle clones.
3441         (cgraph_remove_node): Handle clone tree.
3442         (cgraph_remove_node_and_inline_clones): New function.
3443         (dump_cgraph_node): Dump clone tree.
3444         (cgraph_clone_node): Handle clone tree.
3445         (clone_function_name): Bring here from tree-inline.c.
3446         (cgraph_create_virtual_clone): New function.
3447         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3448         (cgraph_clone_info): New function.
3449         (strut cgraph_node): Add clone_info and new clone tree pointers.
3450         (cgraph_remove_node_and_inline_clones,
3451         cgraph_set_call_stmt_including_clones,
3452         cgraph_create_edge_including_clones,
3453         cgraph_create_virtual_clone): Declare.
3454         (cgraph_function_versioning): Use VEC argument.
3455         (compute_call_stmt_bb_frequency): Update prototype.
3456         (cgraph_materialize_all_clones): New function.
3457         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3458         (ipcp_create_replace_map): Update to VECtors.
3459         (ipcp_update_callgraph): Use virtual clones.
3460         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3461         (ipcp_update_profiling): Do not update local profiling.
3462         (ipcp_insert_stage): Use VECtors and virtual clones.
3463         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3464         (clone_of_p): New function.
3465         (cgraph_preserve_function_body_p): Use clone tree.
3466         (cgraph_optimize): Materialize clones.
3467         (cgraph_function_versioning): Update for VECtors.
3468         (save_inline_function_body): Use clone tree.
3469         (cgraph_materialize_clone): New function.
3470         (cgraph_materialize_all_clones): Likewise.
3471         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3472         * ipa.c: Include gimple.h.
3473         (cgraph_remove_unreachable_nodes): Use clone tree.
3474         * ipa-prop.c (ipa_note_param_call): Update call to
3475         compute_call_stmt_bb_frequencycall.
3476         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3477         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3478         (copy_bb): Handle updating of clone tree; add new edge when new call
3479         appears.
3480         (expand_call_inline): Be strict about every call having edge.
3481         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3482         (delete_unreachable_blocks_update_callgraph): New function.
3483         (tree_function_versioning): Use VECtors; always remove unreachable
3484         blocks and fold conditionals.
3485         * tree-inline.h: Do not include varray.h.
3486         (tree_function_versioning): Remove.
3487         * Makefile.in (GTFILES): Remove tree-inline.c
3488         * passes.c (do_per_function): Do only functions having body.
3489         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3490         tree.
3491
3492 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
3493             Andrew Morrow  <acm@google.com>
3494
3495         PR c/36892
3496         * c-common.c (c_common_attribute_table): Permit deprecated
3497         attribute to take an optional argument.
3498         (handle_deprecated_attribute): If the optional argument to
3499         __attribute__((deprecated)) is not a string ignore the attribute
3500         and emit a warning.
3501
3502         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3503         * c-typeck.c (build_component_ref): Likewise.
3504         (build_external_ref): Likewise.
3505
3506         * toplev.c (warn_deprecated_use): Add an attribute argument.
3507         Emit the message associated with __attribute__((deprecated)).
3508
3509         * toplev.h (warn_deprecated_use): Updated.
3510
3511         * doc/extend.texi: Document new optional parameter to
3512         __attribute__((deprecated))
3513
3514 2009-05-08  Michael Eager <eager@eagercon.com>
3515
3516         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3517         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3518
3519 2009-05-08  Richard Guenther  <rguenther@suse.de>
3520
3521         PR tree-optimization/40062
3522         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3523         Avoid exponential behavior.
3524
3525 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3526
3527         PR rtl-optimization/33928
3528         PR 26854
3529         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3530         process_uses, build_single_def_use_links): New.
3531         (update_df): Update use_def_ref.
3532         (forward_propagate_into): Use get_def_for_use instead of use-def
3533         chains.
3534         (fwprop_init): Call build_single_def_use_links and let it initialize
3535         dataflow.
3536         (fwprop_done): Free use_def_ref.
3537         (fwprop_addr): Eliminate duplicate call to df_set_flags.
3538         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
3539         df_rd_simulate_one_insn): New.
3540         (df_rd_bb_local_compute_process_def): Update head comment.
3541         (df_chain_create_bb): Use the new RD simulation functions.
3542         * df.h (df_rd_simulate_artificial_defs_at_top, 
3543         df_rd_simulate_one_insn): New.
3544         * opts.c (decode_options): Enable fwprop at -O1.
3545         * doc/invoke.texi (-fforward-propagate): Document this.
3546
3547 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3548
3549         PR c/24581
3550         * c-typeck.c (build_binary_op): Handle arithmetic between one real
3551         and one complex operand specially.
3552         * tree-complex.c (some_nonzerop): Do not identify a real value as
3553         zero if flag_signed_zeros.
3554
3555 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3556
3557         PR rtl-optimization/33928
3558         * loop-invariant.c (record_use): Fix && vs. || mishap.
3559
3560 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3561
3562         PR rtl-optimization/33928
3563         * loop-invariant.c (struct use): Add addr_use_p.
3564         (struct def): Add n_addr_uses.
3565         (struct invariant): Add cheap_address.
3566         (create_new_invariant): Set cheap_address.
3567         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
3568         (record_uses): Pass df_ref to record_use.
3569         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3570         used only as such.
3571
3572 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3573
3574         * config/sh/sh.c: Do not include c-pragma.h.
3575
3576 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3577
3578         * config/spu/spu.c: Remove include of c-common.h.
3579
3580 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
3581
3582         PR c/39037
3583         * c-common.h (mark_valid_location_for_stdc_pragma,
3584         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3585         clear_float_const_decimal64, float_const_decimal64_p): New.
3586         * c.opt (Wunsuffixed-float-constants): New.
3587         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3588         unsuffixed float constant, handle new warning.
3589         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3590         * c-decl.c (c_scope): New flag float_const_decimal64.
3591         (set_float_const_decimal64, clear_float_const_decimal64,
3592         float_const_decimal64_p): New.
3593         (push_scope): Set new flag.
3594         * c-parser.c (c_parser_translation_unit): Mark when it's valid
3595         to use STDC pragmas.
3596         (c_parser_external_declaration): Ditto.
3597         (c_parser_compound_statement_nostart): Ditto.
3598         * c-pragma.c (valid_location_for_stdc_pragma,
3599         mark_valid_location_for_stdc_pragma,
3600         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
3601         handle_pragma_float_const_decimal64): New.
3602         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
3603         * cp/semantics.c (valid_location_for_stdc_pragma_p,
3604         set_float_const_decimal64, clear_float_const_decimal64,
3605         float_const_decimal64_p): New dummy functions.
3606         * doc/extend.texi (Decimal Float): Remove statement that the
3607         pragma, and suffix for double constants, are not supported.
3608         * doc/invoke.texi (Warning Options): List new option.
3609         (-Wunsuffixed-float-constants): New.
3610
3611 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
3612
3613         * config/i386/i386.c: Do not include c-common.h.
3614
3615 2009-05-07  Mark Heffernan  <meheff@google.com>
3616
3617         * doc/invoke.texi (Debugging Options): Document change of debugging
3618         dump location.
3619         * opts.c (decode_options): Make dump_base_name relative to
3620         aux_base_name directory.
3621
3622 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
3623
3624         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
3625         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
3626
3627 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
3628
3629         * Makefile.in (install-plugin): Simplify a bit.
3630
3631 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
3632
3633         * Makefile.in (OBJS-common): Add regcprop.o.
3634         (regcprop.o): New.
3635         * timevar.def (TV_CPROP_REGISTERS): New.
3636         * regrename.c (regrename_optimize): Return 0.
3637         (rest_of_handle_regrename): Delete.
3638         (pass_rename_registers): Point to regrename_optimize.
3639         (struct value_data_entry, struct value_data, 
3640         kill_value_one_regno, kill_value_regno, kill_value,
3641         set_value_regno, init_value_data, kill_clobbered_value,
3642         kill_set_value, kill_autoinc_value, copy_value,
3643         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
3644         replace_oldest_value_reg, replace_oldest_value_addr,
3645         replace_oldest_value_mem, copyprop_hardreg_forward_1,
3646         debug_value_data, validate_value_data): Move...
3647         * regcprop.c: ... here.
3648         (rest_of_handle_cprop): Delete.
3649         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
3650
3651 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
3652
3653         PR middle-end/40057
3654         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
3655         GEN_INT for 1 << bitnum.
3656         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
3657         build_int_cst_type.
3658
3659 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
3660
3661         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
3662         Remove wrong description of "nand" operation.
3663
3664 2009-05-06  Richard Guenther  <rguenther@suse.de>
3665             Adam Nemet  <anemet@caviumnetworks.com>
3666
3667         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
3668         comment.  Add that if LHS is not a gimple register, then RHS1 has
3669         to be a single object (GIMPLE_SINGLE_RHS).
3670
3671 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
3672
3673         * expr.c (get_def_for_expr): Move it up in the file.
3674         (store_field): When expanding a bit-field store, look at the
3675         defining gimple stmt for the masking conversion.
3676
3677 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
3678
3679         PR middle-end/39986
3680         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
3681         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
3682         32-bit memcpy into long.
3683
3684 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
3685
3686         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
3687         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
3688         new_reg_loc_descr.
3689         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
3690         instead of appending DW_OP_deref*.
3691
3692 2009-05-06  Michael Matz  <matz@suse.de>
3693
3694         PR middle-end/40021
3695         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
3696         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
3697
3698 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
3699
3700         * Makefile.in (install-plugin): Fix srcdir handling.
3701
3702 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
3703
3704         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
3705         when processing for not_regs_needed bitmap.
3706         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
3707         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
3708         handling it for rhs. 
3709
3710 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3711
3712         * config/i386/i386.md (unnamed inc/dec peephole): Use
3713         optimize_insn_for_size_p instead of optimize_size.
3714         * config/i386/predicates.md (incdec_operand): Likewise.
3715         (aligned_operand): Likewise.
3716         * config/i386/sse.md (divv8sf3): Likewise.
3717         (sqrtv8sf2): Likewise.
3718
3719 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3720
3721         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
3722
3723         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
3724
3725 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3726
3727         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
3728         ssemodesuffixf2c with avxmodesuffixf2c.
3729
3730 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
3731
3732         PR c/40032
3733         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
3734
3735 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
3736
3737         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
3738         (struct tree_base): Adjust spacing for 8 bit boundaries.
3739         (struct tree_decl_common): Add decl_by_reference_flag bit.
3740         (DECL_BY_REFERENCE): Adjust.
3741         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
3742         print DECL_BY_REFERENCE bit.
3743         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
3744         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
3745         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
3746         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
3747         unconditionally.
3748
3749         PR middle-end/39666
3750         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
3751         range of the type, but default label is missing, add it with one
3752         of the existing labels instead of adding a new label for it.
3753
3754 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
3755
3756         * dwarf.h: Remove.
3757
3758 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
3759
3760         * Makefile.in (enable_plugin, plugin_includedir): New.
3761         (install): Depend on install-plugin.
3762         (PLUGIN_HEADERS): New.
3763         (install-plugin): New.
3764         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
3765
3766 2009-05-05  Richard Guenther  <rguenther@suse.de>
3767
3768         PR tree-optimization/40022
3769         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
3770         the only vuse.
3771         (phivn_valid_p): Fix tuplification error, simplify.
3772         (phiprop_insert_phi): Add dumps.
3773         (propagate_with_phi): Simplify.
3774
3775 2009-05-05  Richard Guenther  <rguenther@suse.de>
3776
3777         PR middle-end/40023
3778         * builtins.c (gimplify_va_arg_expr): Properly build the address.
3779
3780 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
3781
3782         * tree.h (strip_float_extensions): Remove duplicate declaration.
3783         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
3784         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
3785         block_ultimate_origin): Rearrange the declarations line to match the
3786         comment that indicates the .c file which the functions are defined.
3787         (dwarf2out_*, set_decl_rtl): Add comment.
3788         (get_base_address): Adjust comment.
3789         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
3790         declarations line and add comment.
3791         (is_builtin_name): Add blank after function name, for clarity.
3792
3793 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3794
3795         * attribs.c (decl_attributes): Use %qE for identifiers in
3796         diagnostics.
3797         * cgraphunit.c (verify_cgraph_node): Translate function names to
3798         locale character set in diagnostics.
3799         * coverage.c (get_coverage_counts): Use %qE for identifiers in
3800         diagnostics.
3801         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
3802         Document that functions are named in UTF-8.
3803         * expr.c (expand_expr_real_1): Translate function names to locale
3804         character set in diagnostics.
3805         * gimplify.c (omp_notice_variable, omp_is_private,
3806         gimplify_scan_omp_clauses): Use %qE for identifiers in
3807         diagnostics.
3808         * langhooks.c (lhd_print_error_function): Translate function names
3809         to locale character set.
3810         * langhooks.h (decl_printable_name): Document that return value is
3811         in internal character set.
3812         * stmt.c: Include pretty-print.h
3813         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
3814         diagnostics.
3815         (resolve_operand_name_1): Translate named operand name to locale
3816         character set.
3817         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
3818         diagnostics.
3819         * toplev.c (announce_function): Translate function names to locale
3820         character set.
3821         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
3822         (default_tree_printer): Use pp_identifier or translate identifiers
3823         to locale character set.  Mark "<anonymous>" for translation.
3824         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
3825         for identifiers in diagnostics.
3826         * tree.c (handle_dll_attribute): Use %qE for identifiers in
3827         diagnostics.
3828         * varasm.c (output_constructor): Use %qE for identifiers in
3829         diagnostics.
3830
3831 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
3832
3833         * configure.ac: use ` ` instead of $()
3834         * configure: Regenerate.
3835
3836 2009-05-05  Ben Elliston  <bje@au.ibm.com>
3837
3838         * config/pa/linux-atomic.c: Eliminate conditional include of
3839         errno.h on non-LP64 systems to simplify build requirements.
3840
3841 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3842
3843         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
3844         diagnostics.
3845         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
3846         and pass value to identifier_to_locale.
3847         (warn_variable_length_array): Make name a tree.
3848         (grokdeclarator): Separate diagnostic texts for named and unnamed
3849         declarators.  Use %qE for named declarators.
3850         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
3851         diagnostics.
3852         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
3853         identifiers in diagnostics.
3854         * c-typeck.c (push_member_name, start_init): Pass identifiers to
3855         identifier_to_locale.  Mark "anonymous" strings for translation.
3856
3857 2009-05-04  Michael Eager <eager@eagercon.com>
3858
3859         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
3860         address for DImode/DFmode only if double-precision FP regs.
3861
3862 2009-05-04  Michael Eager <eager@eagercon.com>
3863
3864         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
3865         TARGET_SINGLE_FLOAT check.
3866
3867 2009-05-04  Michael Eager <eager@eagercon.com>
3868
3869         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
3870
3871 2009-05-04  Michael Eager <eager@eagercon.com>
3872
3873         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
3874         * config/rs6000/t-xilinx: New
3875
3876 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
3877
3878         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
3879         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
3880         * gcc/explow.c (memory_address): Use target hook.
3881         * gcc/targhooks.c (default_legitimize_address): New.
3882         * gcc/targhooks.h (default_legitimize_address): New.
3883         * gcc/target.h (legitimize_address): New.
3884         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
3885         (TARGET_INITIALIZER): Include it.
3886         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
3887
3888         * config/bfin/bfin-protos.h (legitimize_address): Remove.
3889         * config/bfin/bfin.c (legitimize_address): Remove.
3890         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
3891         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
3892         Remove.
3893         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
3894         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
3895
3896         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
3897         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
3898         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
3899         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
3900         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
3901         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
3902         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
3903         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
3904         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
3905         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
3906         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
3907         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
3908         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
3909         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
3910         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
3911         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
3912         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
3913         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
3914         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
3915         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
3916         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
3917         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
3918         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
3919
3920         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
3921         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
3922         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
3923         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
3924         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
3925         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
3926         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
3927         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
3928         (thumb_legitimize_address): Delete.
3929         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
3930         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
3931         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
3932         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
3933         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
3934         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
3935         Delete.
3936         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
3937         Delete.
3938
3939         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
3940         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
3941         * config/m32r/m32r.c (m32r_legitimize_address): New.
3942         * config/m68k/m68k.c (m68k_legitimize_address): New.
3943         * config/score/score.c (score_legitimize_address): Standardize.
3944         * config/score/score3.c (score3_legitimize_address): Standardize.
3945         * config/score/score3.h (score3_legitimize_address): Adjust.
3946         * config/score/score7.c (score7_legitimize_address): Standardize.
3947         * config/score/score7.h (score7_legitimize_address): Adjust.
3948         * config/sh/sh.c (sh_legitimize_address): New.
3949         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
3950
3951         * gcc/config/s390/s390.c (legitimize_address): Rename to...
3952         (s390_legitimize_address): ... this.
3953         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
3954         (sparc_legitimize_address): ... this.
3955         * gcc/config/i386/i386.c (legitimize_address): Rename to...
3956         (ix86_legitimize_address): ... this.
3957         * gcc/config/avr/avr.c (legitimize_address): Rename to...
3958         (avr_legitimize_address): ... this.
3959         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
3960         (mn10300_legitimize_address): ... this.
3961         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
3962         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
3963         (alpha_expand_mov): Adjust call.
3964
3965         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
3966         * config/spu/spu.c (spu_legitimize_address): Likewise.
3967         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
3968         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
3969
3970 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3971
3972         * intl.c (locale_encoding, locale_utf8): New.
3973         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
3974         * intl.h (locale_encoding, locale_utf8): Declare.
3975         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
3976         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
3977         New.
3978         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
3979         argument.
3980         (pp_tree_identifier): Define to call pp_base_tree_identifier.
3981         (pp_base_tree_identifier): Declare as function.
3982         (identifier_to_locale): Declare.
3983         * Makefile.in (pretty-print.o): Update dependencies.
3984         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
3985
3986 2009-05-04  Richard Guenther  <rguenther@suse.de>
3987
3988         PR middle-end/40015
3989         * builtins.c (fold_builtin_memory_op): Do not decay to element
3990         type if the size matches the whole array.
3991
3992 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
3993
3994         * expmed.c (synth_mult): When trying out a shift, pass the result
3995         of a signed shift.
3996
3997 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
3998
3999         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
4000         (shiftsub1_cost): New.
4001         (init_expmed): Compute shiftsub1_cost.
4002         (synth_mult): Optimize multiplications by constants of the form
4003         -(2^^m-1) for some constant positive integer m.
4004
4005 2009-05-03  Richard Guenther  <rguenther@suse.de>
4006
4007         PR c/39983
4008         * c-typeck.c (array_to_pointer_conversion): Do not built
4009         ADDR_EXPRs of arrays of pointer-to-element type.
4010         * c-gimplify.c (c_gimplify_expr): Revert change fixing
4011         up wrong ADDR_EXPRs after-the-fact.
4012         * c-common.c (strict_aliasing_warning): Strip pointer
4013         conversions for obtaining the original type.
4014         * builtins.c (fold_builtin_memset): Handle array types.
4015         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
4016         and array types
4017
4018 2009-05-03  Richard Guenther  <rguenther@suse.de>
4019
4020         PR middle-end/23329
4021         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
4022         Do not lose casts from array types with unknown extent to array
4023         types with known extent.
4024         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
4025         alias set compatibility.
4026
4027 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
4028
4029         * flags.h (extra_warnings): Delete.
4030         * toplev.c (process_options): Handle Wuninitialized here.
4031         * opts.c (extra_warnings): Delete.
4032         (set_Wextra): Delete.
4033         (common_handle_option): -Wextra can be handled automatically.
4034         * c-opts.c (c_common_handle_option): Delete obsolete code.
4035         (c_common_post_options): Simplify comment.
4036         * common.opt (W): Add Var.
4037         (Wextra): Add Var.
4038         (Wuninitialized): Initialize to -1.
4039
4040 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
4041             Richard Guenther  <rguenther@suse.de>
4042
4043         * expr.c (get_def_for_expr): New function.
4044         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
4045         SSA rather than trees.
4046         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
4047         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
4048         
4049 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
4050
4051         * c-common.c (reswords): Add _Imaginary.
4052         * c-common.c (enum rid): Add RID_IMAGINARY.
4053
4054 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
4055
4056         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
4057         Patch by Richard Guenther.
4058
4059 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
4060
4061         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
4062         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
4063         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
4064         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
4065         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
4066         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
4067         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
4068         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
4069         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
4070         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
4071         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
4072         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
4073         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
4074         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
4075         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
4076         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
4077         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
4078         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
4079
4080 2009-05-02  Richard Guenther  <rguenther@suse.de>
4081
4082         PR tree-optimization/39940
4083         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
4084         doing so.
4085
4086 2009-05-02  Richard Guenther  <rguenther@suse.de>
4087
4088         PR middle-end/40001
4089         * tree-ssa.c (execute_update_addresses_taken): Properly check
4090         if we can mark a variable DECL_GIMPLE_REG_P.
4091         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
4092         back to the end of the function.
4093         (is_gimple_reg_type): Remove complex type special casing.
4094         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
4095         if not optimizing.
4096
4097 2009-05-02  Ben Elliston  <bje@au.ibm.com>
4098
4099         * doc/collect2.texi (Collect2): Document search path behaviour
4100         when configured with --with-ld.
4101
4102 2009-05-02  Jan Hubicka  <jh@suse.cz>
4103
4104         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
4105         parameter; update callers.
4106         (coalesce_cost_edge): EH edges are costier because they needs
4107         splitting even if not critical and even more costier when there are
4108         multiple EH predecestors.
4109
4110 2009-05-02  Jan Hubicka  <jh@suse.cz>
4111
4112         * except.c (remove_eh_handler_and_replace): Handle updating after
4113         removing TRY blocks.
4114
4115 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
4116
4117         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
4118
4119 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
4120
4121         * varasm.c: Do not include c-pragma.h.
4122         * attribs.c: Do not incude c-common.h.
4123
4124 2009-05-01  Michael Matz  <matz@suse.de>
4125
4126         * calls.c (initialize_argument_information): Handle SSA names like
4127         decls with a non MEM_P DECL_RTL.
4128
4129 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4130
4131         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
4132         * ipa-utils.c: Likewise.
4133         * ipa-type-escape.c: Likewise.
4134         * cgraphunit.c Do not include c-common.h.
4135         * ipa-pure-const.c: Likewise.
4136         * tree-if-conv.c: Likewise.
4137         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
4138         * ipa-struct-reorg.c: Likewise.
4139         * tree-nomudflap.c: Likewise.
4140         * tree-ssa-structalias.c: Likewise.
4141
4142 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4143
4144         * store-motion.c: Many cleanups to make this pass a first-class
4145         citizen instead of an appendix to gcse load motion.  Add TODO list
4146         to make this pass faster/cleaner/better.
4147
4148         (struct ls_expr): Post gcse.c-split cleanups.
4149         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
4150         "stores" field to "avail_stores".
4151         (pre_ldst_mems): Rename to store_motion_mems.
4152         (pre_ldst_table): Rename to store_motion_mems_table.
4153         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
4154         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
4155         (ldst_entry): Rename to st_expr_entry, update users.
4156         (free_ldst_entry): Rename to free_st_expr_entry, update users.
4157         (free_ldst_mems): Rename to free_store_motion_mems, update users.
4158         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
4159         update caller.
4160         (first_ls_expr): Rename to first_st_expr, update users.
4161         (next_ls_expr): Rename to next_st_expr, update users.
4162         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
4163         fields properly for store motion instead of names inherited from load
4164         motion in gcse.c.
4165         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
4166         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
4167         are done with it.
4168
4169         (ae_kill): Rename to st_kill, update users.
4170         (ae_gen): Rename to st_avloc, update users.
4171         (transp): Rename to st_transp, update users.
4172         (pre_insert_map): Rename to st_insert_map, update users.
4173         (pre_delete_map): Rename to st_delete_map, update users.
4174         (insert_store, build_store_vectors, free_store_memory,
4175         one_store_motion_pass): Update for abovementioned changes.
4176
4177         (gcse_subst_count, gcse_create_count): Remove.
4178         (one_store_motion_pass): New statistics counters "n_stores_deleted"
4179         and "n_stores_created", local variables.
4180
4181         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
4182         use for_each_rtx.
4183
4184         (regvec, compute_store_table_current_insn): Remove.
4185         (reg_set_info, reg_clear_last_set): Remove.
4186         (compute_store_table): Use DF caches instead of local dataflow
4187         solvers.
4188
4189 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
4190
4191         * c-objc-common.c (c_tree_printer): Print identifiers with
4192         pp_identifier, not pp_string.  Mark "({anonymous})" for
4193         translation.
4194         * c-pretty-print.c (pp_c_ws_string): New.
4195         (pp_c_cv_qualifier, pp_c_type_specifier,
4196         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
4197         pp_c_storage_class_specifier, pp_c_function_specifier,
4198         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
4199         pp_c_primary_expression, pp_c_postfix_expression,
4200         pp_c_unary_expression, pp_c_shift_expression,
4201         pp_c_relational_expression, pp_c_equality_expression,
4202         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
4203         use pp_string and pp_c_ws_string in place of pp_identifier and
4204         pp_c_identifier for non-identifiers.  Mark English strings for
4205         translation.
4206         * c-pretty-print.h (pp_c_ws_string): Declare.
4207
4208 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
4209             Roland McGrath <roland@redhat.com>
4210
4211         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
4212         (ENABLE_LD_BUILDID): New configuration option.
4213         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
4214         (LINK_BUILDID_SPEC): New macro.
4215         (init_spec): If defined, prepend it between LINK_EH_SPEC and
4216         link_spec.
4217         * doc/install.texi: Document --enable-linker-build-id option.
4218         * configure: Rebuild.
4219         * config.in: Rebuild.
4220
4221 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
4222
4223         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
4224         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
4225         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
4226         MIPS_GP_SAVE_AREA_SIZE.
4227         * config/mips/mips.c (struct mips_frame_info): Update comment
4228         before arg_pointer_offset and hard_frame_pointer_offset.
4229         (mips_compute_frame_info): Update diagram before function: to
4230         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
4231         indicate the position of frame_pointer_rtx with -fstack-protector and
4232         to show args_size.  Don't allocate cprestore area for leaf functions
4233         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
4234         cprestore_size.
4235         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
4236
4237 2009-04-30  Michael Matz  <matz@suse.de>
4238
4239         PR tree-optimization/39955
4240         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
4241
4242 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
4243
4244         * ira.c (setup_cover_and_important_classes):  Use safe macro
4245         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
4246         directly.
4247         * genpreds.c (write_tm_preds_h):  Output suitable definition of
4248         REG_CLASS_FOR_CONSTRAINT.
4249
4250 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4251
4252         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
4253         instead of an int.
4254         * bitmap.c (bitmap_descriptor): Likewise.
4255         * ggc-common.c (loc_descriptor): Likewise.
4256         * varray.c (varray_descriptor): Likewise.
4257         * vec.c (vec_descriptor): Likewise.
4258
4259 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
4260
4261         * Makefile.in (dce.o): Add $(EXCEPT_H).
4262         * dce.c: Include except.h and delete redundant vector definitions.
4263         (deletable_insn_p): Return false for non-call insns that can throw
4264         if DF is running.
4265
4266 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
4267
4268         * gcse.c (ae_gen): Remove.
4269         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
4270         and make non-static function to make it available in store-motion.c.
4271         Update call sites with search-and-replace.
4272         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
4273         extract_mentioned_regs, extract_mentioned_regs_helper,
4274         find_moveable_store, compute_store_table, load_kills_store, find_loads,
4275         store_killed_in_insn, store_killed_after, store_killed_before,
4276         build_store_vectors, insert_insn_start_basic_block, insert-store,
4277         remove_reachable_equiv_notes, replace_store_insn, delete_store,
4278         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
4279         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
4280         * store-motion.c: ...new file.  Also copy data structures from gcse.c
4281         and clean up to remove parts not used by store motion.
4282         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
4283         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
4284
4285 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4286
4287         PR target/38571
4288         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
4289         when optimizing for size.
4290
4291 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
4292
4293         * gcse.c (gcse_constant_p): Fix typo in last change.
4294
4295 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4296
4297         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
4298
4299 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
4300
4301         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
4302
4303 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
4304
4305         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
4306         CONST_HIGH_PART result.
4307
4308 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
4309
4310         * config/avr/avr.c (initial_elimination_offset): Rename to
4311         avr_initial_elimination_offset.
4312         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
4313         change return type to bool.
4314         (avr_can_eliminate): New function.
4315         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
4316         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
4317         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
4318         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
4319         avr_initial_elimination_offset.
4320         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
4321         (avr_initial_elimination_offset): Define.
4322
4323 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
4324             Steven Bosscher  <steven@gcc.gnu.org>
4325
4326         PR rtl-optimization/39938
4327         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
4328         * cfgrtl.c: Include insn-attr.h.
4329         (rest_of_pass_free_cfg): New function.
4330         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
4331         * resource.c (init_resource_info): Remove call to df_analyze.
4332
4333 2009-04-29  Richard Guenther  <rguenther@suse.de>
4334
4335         PR target/39943
4336         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
4337         allow conversion to signed integers.
4338
4339 2009-04-29  Richard Guenther  <rguenther@suse.de>
4340
4341         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
4342         shifts of floating point vectors if the shift amount is
4343         a constant multiple of the element size.
4344
4345 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4346             Michael Matz  <matz@suse.de>
4347
4348         PR middle-end/39927
4349         PR bootstrap/39929
4350         * tree-outof-ssa.c (emit_partition_copy): New function.
4351         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
4352         insert_part_to_rtx_on_edge): Perform the partition base var
4353         copy using emit_partition_copy.
4354         (insert_value_copy_on_edge): Convert constants to the right mode.
4355         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
4356         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
4357
4358 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4359
4360         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
4361         scan backwards to try to find a constant to initialize it.
4362
4363         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
4364         insn before the loop_end instruction, don't look past labels.
4365
4366 2009-04-29  Richard Guenther  <rguenther@suse.de>
4367
4368         PR middle-end/39937
4369         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4370         loose type conversions.
4371         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
4372         stmts only if there are no uses of its definition.
4373
4374 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4375
4376         * config/bfin/bfin.h (splitting_loops): Declare.
4377         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
4378         Reorder bit definitions to be ascending.
4379         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
4380         * config/bfin/bfin.c (splitting_loops): New variable.
4381         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
4382         (struct loop_info): Remove members INIT and LOOP_INIT.
4383         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
4384         the LSETUP sequence.  Allow LC to be loaded from any register, but
4385         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
4386         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
4387         set to 1.
4388         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
4389         of reload_completed.
4390
4391         From Jie Zhang:
4392         * config/bfin/bfin.md (movsi_insn): Refine constraints.
4393
4394 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
4395
4396         * Makefile.in (PLUGIN_VERSION_H): New.
4397         (OBJS-common): Remove plugin-version.o.
4398         (plugin.o): Depend on (PLUGIN_VERSION_H).
4399         (plugin-version.o): Remove.
4400         * configure: Regenerate
4401         * configure.ac: Create plugin-version.h.
4402         * gcc-plugin.h (plugin_gcc_version): Remove.
4403         (plugin_default_version_check): Change signature.
4404         * plugin-version.c: Remove.
4405         * plugin.c: Include plugin-version.h.
4406         (str_plugin_gcc_version_name): Remove.
4407         (try_init_one_plugin): Pass gcc version to plugin_init.
4408         (plugin_default_version_check): Both gcc and plugin versions are now
4409         arguments.
4410
4411 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4412         
4413         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
4414         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
4415         Remove special case testing for last insn of inner loops. Don't fail
4416         if the loop ends with a jump, emit an extra nop instead.
4417
4418         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
4419         DREGS rather than comparing directly.  Remove code that tries to
4420         account for latencies.
4421
4422 2009-04-29  Richard Guenther  <rguenther@suse.de>
4423
4424         PR tree-optimization/39941
4425         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
4426         eliminating an indirect call.
4427
4428 2009-04-29  Richard Guenther  <rguenther@suse.de>
4429
4430         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
4431         parameter.  Allow invariants as base if !require_lvalue.
4432         (verify_gimple_assign_single): Adjust.
4433
4434 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4435
4436         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
4437         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
4438         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
4439         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
4440         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
4441         a VEC_SELECT.
4442         * config/bfin/bfin.c (bfin_expand_builtin,
4443         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
4444
4445 2009-04-28  Richard Guenther  <rguenther@suse.de>
4446
4447         * tree-vect-loop.c (get_initial_def_for_induction): Use
4448         correct types for pointer increment.
4449
4450 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4451
4452         * toplev.c (print_version): Update GMP version string calculation.
4453
4454 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
4455
4456         PR rtl-optimization/39938
4457         * resource.c (init_resource_info): Add call to df_analyze.
4458
4459 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4460
4461         * config/alpha/alpha.md (usegp): Cast the result of
4462         alpha_find_lo_sum_using_gp to enum attr_usegp.
4463         * config/alpha/alpha.c (override_options): Remove end-of-structure
4464         marker element from cpu_table.  Use array size of cpu_table to handle
4465         -mcpu and -mtune options.
4466         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
4467
4468 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
4469
4470         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
4471         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
4472         tune_32 and tune_64.
4473         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
4474         support on PowerPC.
4475         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
4476         * config/rs6000/option-defaults.h: ... here.  New file.
4477         (OPT_64, OPT_32): Define.
4478         (MASK_64BIT): Define to 0 if not already defined.
4479         (OPT_ARCH64, OPT_ARCH32): Define.
4480         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
4481         and tune_64.
4482
4483 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4484
4485         * config/arm/arm.c (arm_override_options): Emit error on using
4486         fpa with AAPCS.
4487
4488 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4489
4490         PR rtl-optimization/39914
4491         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
4492         registers for allocnos created from user-defined variables only
4493         when not optimizing.
4494
4495 2009-04-28  Richard Guenther  <rguenther@suse.de>
4496
4497         PR middle-end/39937
4498         * fold-const.c (fold_binary): Use distribute_real_division only
4499         on float types.
4500
4501 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
4502
4503         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
4504         add hpux-stdint.h to tm_file.
4505         (hppa[12]*-*-hpux11*): Ditto.
4506         (ia64*-*-hpux*): Ditto.
4507         * config/hpux-stdint.h: New.
4508         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
4509         __STDC_EXT__ for all compiles.
4510         * config/pa/pa-hpux.h: Ditto.
4511         * config/pa/pa-hpux10.h: Ditto.
4512         * config/pa/pa-hpux11.h: Ditto.
4513
4514 2009-04-28  Catherine Moore  <clm@codesourcery.com>
4515
4516         * debug.h (set_name): Add comment.
4517
4518 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
4519
4520         PR target/39929
4521         * config/darwin.c (machopic_gen_offset): Check
4522         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
4523         * config/arm/arm.c (require_pic_register): Likewise.
4524
4525 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
4526
4527         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
4528         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
4529         m32c_promote_prototypes): Delete.
4530
4531 2009-04-28  Michael Matz  <matz@suse.de>
4532
4533         PR middle-end/39922
4534         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
4535         constants.
4536
4537 2009-04-28  Richard Guenther  <rguenther@suse.de>
4538
4539         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
4540
4541 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4542
4543         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
4544         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
4545         * config/arm/arm-tune.md: Regenerate.
4546
4547 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
4548
4549         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
4550         block if there are complex incoming edges.
4551         (sel_merge_blocks): Remove useless assert.
4552         (sel_redirect_edge_and_branch): Check that edge was redirected.
4553         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
4554         (sel_find_rgns): Delete declaration.
4555         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
4556         the region when it is not a preheader.
4557
4558 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4559
4560         PR c/39323
4561         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
4562
4563 2009-04-28  Richard Guenther  <rguenther@suse.de>
4564
4565         * tree.h (SSA_NAME_VALUE): Remove.
4566         (struct tree_ssa_name): Remove value_handle member.
4567         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
4568         array for jump threading.
4569         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
4570         SSA_NAME_VALUEs.
4571         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
4572         * tree-flow.h (threadedge_initialize_values): Declare.
4573         (threadedge_finalize_values): Likewise.
4574         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
4575         (SSA_NAME_VALUE): Define.
4576         (threadedge_initialize_values): New function.
4577         (threadedge_finalize_values): Likewise.
4578         * tree-ssa-dom.c (ssa_name_values): New global variable.
4579         (SSA_NAME_VALUE): Define.
4580         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
4581
4582 2009-04-28  Ira Rosen  <irar@il.ibm.com>
4583
4584         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
4585         Use REPORT_VECTORIZED_LOCATIONS instead 
4586         REPORT_VECTORIZED_LOOPS.
4587         * tree-vectorizer.c (vect_verbosity_level): Make static.
4588         (vect_loop_location): Rename to vect_location.
4589         (vect_set_verbosity_level): Update comment.
4590         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
4591         and vect_location.
4592         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
4593         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
4594         instead REPORT_UNVECTORIZED_LOOPS.
4595         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
4596         and vect_loop_def to vect_external_def and vect_internal_def.
4597         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
4598         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
4599         REPORT_UNVECTORIZED_LOCATIONS.
4600         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
4601         and vect_used_in_loop and to vect_unused_in_scope and 
4602         vect_used_in_scope.
4603         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
4604         (vect_verbosity_level): Remove declaration.
4605         (vect_analyze_operations): Likewise.
4606         (vect_analyze_stmt): Declare.
4607         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
4608         REPORT_UNVECTORIZED_LOCATIONS.
4609         (vect_get_loop_niters): Fix indentation.
4610         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
4611         (vect_analyze_loop_operations): New function.
4612         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
4613         vect_analyze_operations.
4614         (vect_is_simple_reduction): Use new names.
4615         (vectorizable_live_operation, vect_transform_loop): Likewise.
4616         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
4617         to specify whether the data references can be a part of interleaving
4618         chain.
4619         (vect_analyze_data_ref_dependence): Use new names.
4620         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
4621         (vect_create_addr_base_for_vector_ref): Remove redundant code.
4622         * tree-vect-patterns.c (widened_name_p): Use new names.
4623         (vect_recog_dot_prod_pattern): Likewise.
4624         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
4625         (process_use, vect_mark_stmts_to_be_vectorized, 
4626         vect_model_simple_cost, vect_model_store_cost,
4627         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
4628         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
4629         vectorizable_operation, vectorizable_type_demotion,
4630         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
4631         vectorizable_condition): Likewise.
4632         (vect_analyze_operations): Split into vect_analyze_loop_operations
4633         and ...
4634         (vect_analyze_stmt): ... new function.
4635         (new_stmt_vec_info): Use new names.
4636         (vect_is_simple_use): Use new names and fix comment.
4637         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
4638         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
4639
4640 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4641
4642         PR target/39911
4643         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
4644         and integer modes for x87 operands.  Do not ICE for unsupported size,
4645         generate error instead.  Generate error for unsupported operand types.
4646         ['z']: Do not handle HImode memory operands specially.  Warning
4647         for floating-point operands.  Fallthru to 'Z' for unsupported operand
4648         types.  Do not ICE for unsupported size, generate error instead.
4649         (output_387_binary_op): Use %Z to output operands.
4650         (output_fp_compare): Ditto.
4651         (output_387_reg_move): Ditto.
4652
4653 2009-04-28  Ben Elliston  <bje@au.ibm.com>
4654
4655         PR c++/35652
4656         Revert:
4657
4658         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4659
4660         * builtins.c (c_strlen): Do not warn here.
4661         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
4662         * c-common.c (pointer_int_sum): Take an explicit location.
4663         Warn about offsets out of bounds.
4664         * c-common.h (pointer_int_sum): Adjust declaration.
4665
4666 2009-04-27  Ian Lance Taylor  <iant@google.com>
4667
4668         * collect2.c (is_ctor_dtor): Change type of ret field in struct
4669         names to symkind.
4670         * dce.c (run_fast_df_dce): Change type of old_flags to int.
4671         * df-core.c (df_set_flags): Change return type to int.  Change
4672         type of old_flags to int.
4673         (df_clear_flags): Likewise.
4674         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
4675         (df_get_conditional_uses): Likewise.
4676         * df.h (df_set_flags, df_clear_flags): Update declarations.
4677         * dwarf2out.c (struct indirect_string_node): Change type of form
4678         field to enum dwarf_form.
4679         (AT_string_form): Change return type to enum dwarf_form.
4680         * fixed-value.c (fixed_compare): Add cast to enum type.
4681         * fwprop.c (update_df): Change 0 to VOIDmode.
4682         * gensupport.c: Change 0 to UNKNOWN.
4683         * gimple.h (gimple_cond_code): Add cast to enum type.
4684         * haifa-sched.c (reemit_notes): Add cast to enum type.
4685         * hooks.c (hook_int_void_no_regs): Remove function.
4686         * hooks.h (hook_int_void_no_regs): Remove declaration.
4687         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
4688         * predict.c (combine_predictions_for_insn): Add casts to enum type.
4689         * real.c (real_arithmetic): Add cast to enum type.
4690         (real_compare): Likewise.
4691         * target.h (struct gcc_target): Change return type of
4692         branch_target_register_class to enum reg_class.
4693         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
4694         default_branch_target_register_class.
4695         * targhooks.c (default_branch_target_register_class): New function.
4696         * targhooks.h (default_branch_target_register_class): Declare.
4697         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
4698         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
4699         cast to int.
4700         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
4701         ERROR_MARK.
4702         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
4703         vect_uninitialized_def.  Change 0 to ERROR_MARK.
4704         * tree-vect-stmts.c (supportable_widening_operation): Don't
4705         initialize icode1 and icode2.
4706         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
4707         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
4708         and to STD_C89.
4709         (cmn_err_flag_specs): Change 0 to STD_C89.
4710         (cmn_err_char_table): Likewise.
4711         * config/arm/arm.c (get_arm_condition_code): Change type of code
4712         to enum arm_cond_code.
4713         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
4714         (IWMMXT_BUILTIN2): Likewise.
4715         (neon_builtin_type_bits): Don't define typedef.
4716         (neon_builtin_datum): Change type of bits field to int.
4717         (arm_expand_neon_args): Add cast to enum type.
4718         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
4719         TLS_MODEL_NONE.
4720         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
4721         casts to enum type.
4722         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
4723         MIPS_FP_COND_f.
4724         * config/mips/mips.md (jal_macro): Return enum constant.
4725         (single_insn): Likewise.
4726         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
4727         CODE_FOR_nothing.
4728         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
4729         casts to enum type.
4730         * config/s390/s390.c (s390_tune_flags): Change type to int.
4731         (s390_arch_flags): Likewise.
4732         (s390_handle_arch_option): Change flags field of struct pta to int.
4733         * config/s390/s390.h (s390_tune_flags): Update declaration.
4734         (s390_arch_flags): Likewise.
4735         * config/sh/sh.c (prepare_move_operands): Compare
4736         tls_symbolic_operand result with enum constant.
4737         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
4738         (sh_expand_prologue): Add cast to enum type.
4739         (sh_expand_epilogue): Likewise.
4740         (tls_symbolic_operand): Change return type to enum tls_model.
4741         (fpscr_set_from_mem): Add cast to enum type.
4742         (legitimize_pic_address): Compare tls_symbolic_operand result with
4743         enum constant.
4744         (sh_target_reg_class): Change return type to enum reg_class.
4745         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
4746         PROCESSOR_xxx.
4747         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
4748         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
4749         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
4750         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
4751         (delayed_branch, tls_call_delay): Likewise.
4752         (eligible_for_sibcall_delay): Likewise.
4753         (eligible_for_return_delay): Likewise. 
4754         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
4755         (spu_expand_builtin_1): Likewise.
4756
4757         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
4758         for all types of conversions.
4759         (output_init_element): Issue -Wc++-compat warning if needed when
4760         initializing a bitfield with enum type.
4761         * c-parser.c (c_parser_expression): Set original_type to
4762         original_type of right hand operand of comman operator.
4763
4764 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4765
4766         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
4767         grammar nits.
4768         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
4769         * doc/cpp.texi (Standard Predefined Macros)
4770         (Implementation-defined behavior): Likewise.
4771         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
4772         * doc/gimple.texi (GIMPLE Exception Handling)
4773         (@code{GIMPLE_ASSIGN}): Likewise.
4774         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
4775         * doc/invoke.texi (Warning Options, Optimize Options)
4776         (AVR Options, Darwin Options): Likewise.
4777         (Optimize Options): Reformulate -fwhole-program description.
4778         * doc/loop.texi (Lambda): Likewise.
4779         * doc/md.texi (Output Template, Define Constraints)
4780         (Standard Names, Insn Splitting): Likewise.
4781         * doc/options.texi (Option properties): Likewise.
4782         * doc/passes.texi (Tree-SSA passes): Likewise.
4783         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
4784         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
4785         (File Names and DBX): Likewise.
4786         * doc/trouble.texi (Incompatibilities): Likewise.
4787
4788 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4789
4790         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
4791         instruction is correct.
4792
4793 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4794
4795         Allow non-constant arguments to conversion intrinsics.
4796         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
4797         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
4798         * spu.c (print_operand): Handle 'v' and 'w'.
4799         (exp2_immediate_p, spu_gen_exp2): Define.
4800         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
4801         spu_convtf_1): Update parameter descriptions.
4802         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
4803         * constraints.md ('v', 'w'): New.
4804         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
4805         Remove.
4806         (i2f, I2F): New define_mode_attr.
4807         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
4808         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
4809         fixuns_truncv4sfv4si2):  Update to use mode attribute.
4810         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
4811         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
4812         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
4813         patterns for combine.
4814
4815 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
4816
4817         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
4818         (cprop, hoist, pre, store_motion): New debug counters.
4819         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
4820         is not an RTL pass anymore.
4821         (pass_profiling): Remove extern decl for pass removed in 2005.
4822         (pass_gcse, pass_jump_bypass): Remove.
4823         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
4824         to 0 for clean state.
4825         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
4826         * cse.c (gate_handle_cse_after_global_opts,
4827         rest_of_handle_cse_after_global_opts): New functions.
4828         (pass_cse_after_global_opts): New pass, does local CSE.
4829         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
4830         (TV_CPROP): New timevar.
4831         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
4832         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
4833         (gcse_main, recompute_all_luids): Remove.
4834         (compute_hash_table_work): Call max_reg_num instead of reading
4835         max_gcse_regno.
4836         (cprop_jump): Don't set run_jump_opt_after_gcse.
4837         (constprop_register): Always allow to alter jumps.
4838         (cprop_insn): Likewise.
4839         (do_local_cprop): Likewise.
4840         (local_cprop_pass): Likewise.  Return non-zero if something changed.
4841         (cprop): Remove function, fold interesting bits into one_cprop_pass.
4842         (find_implicit_sets): Add note about missed optimization opportunity.
4843         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
4844         pass_rtl_cprop execute function.
4845         Don't bother tracking the pass number, each pass gets its own dumpfile
4846         now anyway.
4847         Always allow to alter jumpsand bypass jumps.
4848         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
4849         will just find no suitable set.
4850         (pre_edge_insert): Fix dumping, this function is for PRE only.
4851         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
4852         pass_rtl_pre execute function.
4853         (hoist_code): Return non-zero if something changed.  Keep track of
4854         substitutions and insertions for statistics gathering similar to PRE.
4855         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
4856         called from the pass_rtl_hoist execute function.  Show pass statistics.
4857         (compute_store_table): Use max_reg_num directly instead of using the
4858         formerly global max_gcse_regno.
4859         (build_store_vectors): Likewise.
4860         (replace_store_insn): Fix dumping.
4861         (store_motion): Rename to ...
4862         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
4863         pass, called from the pass_rtl_store_motion execute function.  Keep
4864         track of substitutions and insertions for statistics gathering similar
4865         to PRE.
4866         (bypass_jumps): Remove, fold interesting bits into ...
4867         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
4868         from the pass_rtl_cprop execute function.
4869         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
4870         pass_jump_bypass): Remove.
4871         (gate_handle_gcse, rest_of_handle_gcse): Remove.
4872         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
4873         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
4874         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
4875         (gate_rtl_store_motion, execute_rtl_store_motion,
4876         pass_rtl_store_motion): New.
4877         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
4878         make it clear that -fcse-skip-blocks is a no-op for backward compat.
4879         * passes.c (init_optimization_passes): Remove pass_gcse and
4880         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
4881         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
4882         instead of pass_jump_bypass.
4883
4884 2009-04-27  Richard Guenther  <rguenther@suse.de>
4885
4886         PR middle-end/39928
4887         * gimplify.c (gimplify_expr): If we are required to create
4888         a temporary make sure it ends up as register.
4889
4890 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
4891
4892         PR target/39903
4893         * config/i386/i386.c (construct_container): Don't call
4894         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
4895         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
4896
4897 2009-04-27  Michael Matz  <matz@suse.de>
4898
4899         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
4900         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
4901         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
4902         (dump_replaceable_exprs): Take a bitmap.
4903         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
4904         array.
4905         (expand_gimple_basic_block): Likewise.
4906         * tree-ssa-ter.c (struct temp_expr_table_d): Make
4907         replaceable_expressions member a bitmap.
4908         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
4909         (mark_replaceable): Likewise.
4910         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
4911         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
4912
4913 2009-04-27  Richard Guenther  <rguenther@suse.de>
4914
4915         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
4916         (verify_stmts): Dispatch to gimple/type verification code.
4917         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
4918         issue with call argument types.
4919
4920 2009-04-27  Michael Matz  <matz@suse.de>
4921
4922         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
4923         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
4924         to above.
4925
4926 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
4927             Eric Botcazou  <ebotcazou@adacore.com>
4928
4929         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
4930         a label's basic block.
4931         (mark_target_live_regs): Tidy and rework obsolete comments.
4932         Change back DF problem to LIVE.  If a label starts a basic block,
4933         assume that all registers that used to be live then still are.
4934         (init_resource_info): If a label starts a basic block, set its
4935         BLOCK_FOR_INSN accordingly.
4936         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
4937
4938 2009-04-27  Richard Guenther  <rguenther@suse.de>
4939
4940         * tree-flow-inline.h (function_ann): Remove.
4941         (get_function_ann): Likewise.
4942         * tree-dfa.c (create_function_ann): Remove.
4943         * tree-flow.h (struct static_var_ann_d): Remove.
4944         (struct function_ann_d): Likewise.
4945         (union tree_ann_d): Remove fdecl member.
4946         (function_ann_t): Remove.
4947         (function_ann, get_function_ann, create_function_ann): Remove
4948         declarations.
4949
4950 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
4951
4952         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
4953
4954 2009-04-27  Jan Hubicka  <jh@suse.cz>
4955
4956         * ipa-pure-const.c (struct funct_state_d): New fields
4957         state_previously_known, looping_previously_known; remove
4958         state_set_in_source.
4959         (analyze_function): Use new fields.
4960         (propagate): Avoid assumption that state_set_in_source imply
4961         nonlooping.
4962
4963         * tree-ssa-loop-niter.c (finite_loop_p): New function.
4964         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
4965         * cfgloop.h (finite_loop_p): Declare.
4966
4967 2009-04-26  Michael Matz  <matz@suse.de>
4968
4969         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
4970
4971 2009-04-26  Michael Matz  <matz@suse.de>
4972
4973         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
4974         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
4975         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
4976         pass_mark_used_blocks): Remove.
4977         * tree-optimize.c (pass_free_datastructures,
4978         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
4979         * passes.c (init_optimization_passes): Don't call
4980         pass_mark_used_blocks, remove dead code.
4981
4982 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
4983
4984         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
4985         * tree-ssa-live.h (register_ssa_partition): Likewise.
4986
4987 2009-04-26  Michael Matz  <matz@suse.de>
4988
4989         Expand from SSA.
4990         * builtins.c (fold_builtin_next_arg): Handle SSA names.
4991         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
4992         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
4993         SSA names. 
4994         (compare_pairs): Swap cost comparison.
4995         (coalesce_ssa_name): Don't use change_partition_var.
4996         * tree-nrv.c (struct nrv_data): Add modified member.
4997         (finalize_nrv_r): Set it.
4998         (tree_nrv): Use it to update statements.
4999         (pass_nrv): Require PROP_ssa.
5000         * tree-mudflap.c (mf_decl_cache_locals,
5001         mf_build_check_statement_for): Use make_rename_temp.
5002         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
5003         * alias.c (find_base_decl): Handle SSA names.
5004         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
5005         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
5006         * rtl.h (set_reg_attrs_for_parm): Declare.
5007         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
5008         to "optimized", remove unused locals at finish.
5009         (execute_free_datastructures): Make global, call
5010         delete_tree_cfg_annotations.
5011         (execute_free_cfg_annotations): Don't call
5012         delete_tree_cfg_annotations.
5013
5014         * ssaexpand.h: New file.
5015         * expr.c (toplevel): Include ssaexpand.h.
5016         (expand_assignment): Handle SSA names the same as register variables.
5017         (expand_expr_real_1): Expand SSA names.
5018         * cfgexpand.c (toplevel): Include ssaexpand.h.
5019         (SA): New global variable.
5020         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
5021         (SSAVAR): New macro.
5022         (set_rtl): New helper function.
5023         (add_stack_var): Deal with SSA names, use set_rtl.
5024         (expand_one_stack_var_at): Likewise.
5025         (expand_one_stack_var): Deal with SSA names.
5026         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
5027         before unique numbers.
5028         (expand_stack_vars): Use set_rtl.
5029         (expand_one_var): Accept SSA names, add asserts for them, feed them
5030         to above subroutines.
5031         (expand_used_vars): Expand all partitions (without default defs),
5032         then only the local decls (ignoring those expanded already).
5033         (expand_gimple_cond): Remove edges when jumpif() expands an
5034         unconditional jump.
5035         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
5036         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
5037         SSA name.
5038         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
5039         members of SA; deal with PARM_DECL partitions here; expand
5040         all PHI nodes, free tree datastructures and SA.  Commit instructions
5041         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
5042         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
5043         info and statements at start, collect garbage at finish.
5044         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
5045         (VAR_ANN_PARTITION) Remove.
5046         (change_partition_var): Don't declare.
5047         (partition_to_var): Always return SSA names.
5048         (var_to_partition): Only accept SSA names.
5049         (register_ssa_partition): Only check argument.
5050         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
5051         member.
5052         (delete_var_map): Don't free it.
5053         (var_union): Only accept SSA names, simplify.
5054         (partition_view_init): Mark only useful SSA names as used.
5055         (partition_view_fini): Only deal with SSA names.
5056         (change_partition_var): Remove.
5057         (dump_var_map): Use ssa_name instead of partition_to_var member.
5058         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
5059         basic blocks.
5060         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
5061         (struct _elim_graph): New member const_dests; nodes member vector of
5062         ints.
5063         (set_location_for_edge): New static helper.
5064         (create_temp): Remove.
5065         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
5066         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
5067         (new_elim_graph): Allocate const_dests member.
5068         (clean_elim_graph): Truncate const_dests member.
5069         (delete_elim_graph): Free const_dests member.
5070         (elim_graph_size): Adapt to new type of nodes member.
5071         (elim_graph_add_node): Likewise.
5072         (eliminate_name): Likewise.
5073         (eliminate_build): Don't take basic block argument, deal only with
5074         partition numbers, not variables.
5075         (get_temp_reg): New static helper.
5076         (elim_create): Use it, deal with RTL temporaries instead of trees.
5077         (eliminate_phi): Adjust all calls to new signature.
5078         (assign_vars, replace_use_variable, replace_def_variable): Remove.
5079         (rewrite_trees): Only do checking.
5080         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
5081         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
5082         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
5083         contains_tree_r, MAX_STMTS_IN_LATCH,
5084         process_single_block_loop_latch, analyze_edges_for_bb,
5085         perform_edge_inserts): Remove.
5086         (expand_phi_nodes): New global function.
5087         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
5088         functions, initialize new parameter, remember partitions having a
5089         default def.
5090         (finish_out_of_ssa): New global function.
5091         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
5092         don't reset in_ssa_p here, don't disable TER when mudflap.
5093         (pass_del_ssa): Remove.
5094         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
5095         partition members.
5096         (execute_free_datastructures): Declare.
5097         * Makefile.in (SSAEXPAND_H): New variable.
5098         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
5099         * basic-block.h (commit_one_edge_insertion): Declare.
5100         * passes.c (init_optimization_passes): Move pass_nrv and
5101         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
5102         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
5103         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
5104         (redirect_branch_edge): Deal with super block when expanding, split
5105         out jump patching itself into ...
5106         (patch_jump_insn): ... here, new static helper.
5107
5108 2009-04-26  Michael Matz  <matz@suse.de>
5109
5110         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
5111         beyond num_ssa_names.
5112         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
5113         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
5114
5115 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5116
5117         PR inline-asm/39543
5118         * fwprop.c (forward_propagate_asm): New function.
5119         (forward_propagate_and_simplify): Propagate also into __asm, if it
5120         doesn't increase the number of referenced registers.
5121
5122         PR c/39889
5123         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
5124
5125 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5126
5127         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
5128         note_nonlocal_vla_type for nonlocal VLAs.
5129         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
5130         contains_remapped_vars, remap_vla_decls): New functions.
5131         (convert_nonlocal_reference_stmt): If not optimizing, call
5132         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
5133         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
5134         if it wasn't found in var_map.
5135         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
5136         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
5137         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
5138         declare_vars.
5139         * gimplify.c (nonlocal_vlas): New variable.
5140         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
5141         referenced VLAs.
5142         (gimplify_body): Create and destroy nonlocal_vlas.
5143
5144         * dwarf2out.c (loc_descr_plus_const): New function.
5145         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
5146         mem_loc_descriptor, loc_descriptor_from_tree_1,
5147         descr_info_loc, gen_variable_die): Use it.
5148
5149         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
5150         !TREE_STATIC VAR_DECLs.
5151         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
5152         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
5153         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
5154         DECL_BY_REFERENCE is valid.
5155         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
5156         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
5157         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
5158         Copy DECL_BY_REFERENCE.
5159         (struct nesting_copy_body_data): New type.
5160         (nesting_copy_decl): New function.
5161         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
5162         if they have variable length.
5163
5164 2009-04-26  Michael Matz  <matz@suse.de>
5165
5166         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
5167         mark new temporaries for renaming.
5168
5169 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5170
5171         PR c/39581
5172         * c-decl.c (global_bindings_p): Return negative value.
5173         (c_variable_size): New.  Based on variable_size from
5174         stor-layout.c.
5175         (grokdeclarator): Call c_variable_size not variable_size.
5176
5177 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
5178
5179         * config/i386/i386.c (print_operand) ['z']: Fix typo.
5180
5181 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
5182
5183         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
5184         Redefine it to just use mingw/include.
5185         (ASM_SPEC): Rules for -m32 and -m64.
5186         (LINK_SPEC): Use Likewise.
5187         (SPEC_32): New define.
5188         (SPEC_64): Likewise.
5189         (SUB_LINK_SPEC): Likewise.
5190         (MULTILIB_DEFAULTS): New define.
5191         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
5192         Add multilib options.
5193         (MULTILIB_DIRNAMES): Likewise.
5194         (MULTILIB_OSDIRNAMES): Likewise.
5195         (LIBGCC): Likewise.
5196         (INSTALL_LIBGCC): Likewise.
5197
5198 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5199
5200         PR c/39556
5201         * c-tree.h (enum c_inline_static_type): New.
5202         (record_inline_static): Declare.
5203         * c-decl.c (struct c_inline_static, c_inline_statics,
5204         record_inline_static, check_inline_statics): New.
5205         (pop_file_scope): Call check_inline_statics.
5206         (start_decl): Call record_inline_static instead of pedwarning
5207         directly for static in inline function.
5208         * c-typeck.c (build_external_ref): Call record_inline_static
5209         instead of pedwarning directly for static referenced in inline
5210         function.
5211
5212 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
5213
5214         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
5215         not new but only being rescanned.
5216         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
5217         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
5218         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
5219         record_set_info, compute_set, grealloc): Remove.
5220         (recompute_all_luids): New function.
5221         (gcse_main): Don't compute sets, and don't do related memory
5222         allocations/free-ing.  If something changed before the end of the
5223         pass, update LUIDs using recompute_all_luids.
5224         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
5225         (free_gcse_mem): Don't free it either.
5226         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
5227         Use the df insn LUIDs.
5228         (load_killed_in_block): Likewise.
5229         (compute_hash_table_work): Don't compute reg_set_in_block.
5230         (compute_transp): Use DF_REG_DEF_CHAINs.
5231         (local_cprop_pass): Don't use compute_sets and related functions.
5232         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
5233         Use get_max_uid() instead of max_cuid.
5234         (insert_insn_end_basic_block, pre_insert_copy_insn,
5235         update_ld_motion_stores): Don't try to
5236         keep reg_set tables up to date.
5237         (pre_insert_copies): Use df insn LUIDs.
5238         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
5239         (reg_set_info): Don't use extra bitmap argument.
5240         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
5241         information to compute regs_set_in_block.
5242         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
5243         (bypass_jumps): Don't use compute_sets and friends.
5244
5245 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5246
5247         PR testsuite/39710
5248         * opts.c (undocumented_msg): Do not leave blank even with
5249         ENABLE_CHECKING.
5250
5251 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5252
5253         * c-decl.c (build_enumerator): Allow values folding to integer
5254         constants but not integer constant expressions with a pedwarn if
5255         pedantic.
5256
5257 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5258
5259         PR c/39582
5260         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
5261         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
5262         type is an integer constant.
5263
5264 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5265
5266         PR target/39897
5267         * config/i386/i386.c (print_operand) ['z']: Revert handling of
5268         HImode operands.
5269
5270 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5271
5272         PR c/39564
5273         * c-decl.c (grokdeclarator): Diagnose declarations of functions
5274         with variably modified return type and no storage class
5275         specifiers, except for the case of nested functions.  Distinguish
5276         extern declarations of functions with variably modified return
5277         types from those of objects with variably modified types.
5278
5279 2009-04-25  Jan Hubicka  <jh@suse.cz>
5280
5281         * tree.c (list_equal_p): New function.
5282         * tree.h (list_equal_p): Declare.
5283         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5284         basic_block_def, basic_block, const_basic_block): New.
5285         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
5286         (redirect_eh_edge): New function.
5287         (make_eh_edge_update_phi): EH edges are not abnormal.
5288         * except.c: Include tree-flow.h.
5289         (list_match): New function.
5290         (eh_region_replaceable_by_p): New function.
5291         (replace_region): New function.
5292         (hash_type_list): New function.
5293         (hash_eh_region): New function.
5294         (eh_regions_equal_p): New function.
5295         (merge_peers): New function.
5296         (remove_unreachable_regions): Verify EH tree when checking;
5297         merge peers.
5298         (copy_eh_region_1): New function.
5299         (copy_eh_region): New function.
5300         (push_reachable_handler): New function.
5301         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
5302         regions without label but with live RESX.
5303         * except.h (redirect_eh_edge_to_label): New.
5304         * tree-flow.h (redirect_eh_edge): New.
5305         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5306         basic_block_def, basic_block, const_basic_block): Remove.
5307         * Makefile.in (except.o): Add dependency on tree-flow.h
5308         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
5309         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
5310         Remove.
5311
5312 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
5313
5314         PR bootstrap/39645
5315         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
5316         on the destination of memcpy.
5317
5318 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
5319
5320         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
5321         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
5322         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
5323
5324 2009-04-25  Jan Hubicka  <jh@suse.cz>
5325
5326         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
5327         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
5328         to be reached by different label than left.
5329         (update_eh_edges): Update comment; remove edge_to_remove if possible
5330         and return true if suceeded.
5331         (cleanup_empty_eh): Accept sharing map; handle shared regions.
5332         (cleanup_eh): Compute sharing map.
5333         * except.c (remove_eh_handler_and_replace): Add argument if we should
5334         update regions.
5335         (remove_unreachable_regions): Update for label sharing.
5336         (label_to_region_map): Likewise.
5337         (get_next_region_sharing_label): New function.
5338         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
5339         prev_try pointers.
5340         (remove_eh_handler): Update.
5341         (remove_eh_region_and_replace_by_outer_of): New function.
5342         * except.h (struct eh_region): Add next_region_sharing_label.
5343         (remove_eh_region_and_replace_by_outer_of,
5344         get_next_region_sharing_label): Declare.
5345         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
5346
5347 2009-04-25  Jan Hubicka  <jh@suse.cz>
5348
5349         * tree-cfg.c (split_critical_edges): Split also edges where we can't
5350         insert code even if they are not critical.
5351
5352 2009-04-25  Jan Hubicka  <jh@suse.cz>
5353
5354         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5355         (gimple_can_remove_branch_p): EH edges won't remove branch by
5356         redirection.
5357         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
5358         updating of non-abnormal EH edges.
5359         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5360         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
5361         (split_critical_edges): Split also edges where emitting code on them
5362         will lead to splitting later.
5363
5364 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5365             H.J. Lu  <hongjiu.lu@intel.com>
5366
5367         PR target/39590
5368         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
5369         the configured assembler supports fildq and fistpq mnemonics.
5370         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
5371         * configure: Regenerated.
5372         * config.in: Ditto.
5373
5374         * config/i386/i386.c (print_operand): Handle 'Z'.
5375         ['z']: Remove handling of special fild/fist suffixes.
5376         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
5377         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
5378         suffix of fild insn.
5379         (*floatsi<mode>2_vector_mixed): Ditto.
5380         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
5381         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
5382         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
5383         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
5384         * config/i386/gas.h (GAS_MNEMONICS): Remove.
5385
5386 2009-04-25  Ben Elliston  <bje@au.ibm.com>
5387  
5388         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
5389         the source of a set operation.
5390
5391 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
5392
5393         * target.h (struct gcc_target): Add case_values_threshold field.
5394         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
5395         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
5396         * targhooks.c (default_case_values_threshold): New function.
5397         * targhooks.h (default_case_values_threshold): Declare function.
5398         * stmt.c (expand_case): Use case_values_threshold target hook.
5399         * expr.h (case_values_threshold): Remove declartation.
5400         * expr.c (case_values_threshold): Remove function.
5401         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
5402
5403         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
5404         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5405         (avr_case_values_threshold): Declare as static.
5406         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
5407
5408         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
5409         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5410         (mn10300_case_values_threshold): New function.
5411
5412 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5413
5414         * ira.c (setup_cover_and_important_classes): Add enum cast.
5415
5416 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
5417
5418         * genpreds.c (write_enum_constraint_num): Output definition of
5419         CONSTRAINT_NUM_DEFINED_P macro.
5420         * ira.c (setup_cover_and_important_classes): Use
5421         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
5422         
5423 2009-04-24  DJ Delorie  <dj@redhat.com>
5424
5425         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
5426         __SH2A_SINGLE_ONLY__ also.
5427
5428 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
5429
5430         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
5431         (movdf_internal): Ditto.
5432         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
5433         SFmode and DFmode constants.
5434         (ia64_print_operand): Add 'G' format for printing
5435         floating point constants.
5436
5437 2009-04-24  Richard Guenther  <rguenther@suse.de>
5438
5439         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
5440         from unsigned additions.
5441
5442 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
5443
5444         * c-typeck.c (set_init_index): Allow array designators that are
5445         not integer constant expressions with a pedwarn if pedantic.
5446
5447 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5448
5449         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
5450         zero if no overlap in nonzero bits between the operands.
5451
5452 2009-04-24  Ian Lance Taylor  <iant@google.com>
5453
5454         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
5455         (record_dead_and_set_regs): Likewise.
5456         * df.h (struct df_mw_hardreg): Change flags field to int.
5457         (struct df_base_ref): Likewise.
5458         (struct df): Change changeable_flags field to int.
5459         * df-scan.c (df_defs_record): Change clobber_flags to int.
5460         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
5461         constants rather than #define macros.
5462         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
5463         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
5464         (enum dwarf_calling_convention): Likewise.
5465         (enum dwarf_line_number_x_ops): Likewise.
5466         (enum dwarf_call_frame_info): Likewise.
5467         (enum dwarf_source_language): Likewise.
5468         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
5469         (add_calling_convention_attribute): Likewise.
5470         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
5471         (combine_comparisons): Change compcode to int.  Add cast to enum type.
5472         * genrecog.c (maybe_both_true_2): Change c to int.
5473         (write_switch): Likewise.  Add cast to enum type.
5474         * gimplify.c (gimplify_omp_for): Handle return values from
5475         gimplify_expr using MIN rather than bitwise or.
5476         (gimplify_expr): Add cast to enum type.
5477         * ipa-prop.c (update_jump_functions_after_inlining): Change
5478         IPA_BOTTOM to IPA_JF_UNKNOWN.
5479         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
5480         Add casts to enum type.
5481         (setup_cover_and_important_classes): Change cl to int.  Add casts
5482         to enum type.
5483         (setup_class_translate): Change cl and mode to int.
5484         (ira_init_once): Change mode to int.
5485         (free_register_move_costs): Likewise.
5486         (setup_prohibited_mode_move_regs): Add casts to enum type.
5487         * langhooks.c (add_builtin_function_common): Rework assertion that
5488         value fits bitfield.
5489         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
5490         * omega.c (omega_do_elimination): Avoid math on enum types.
5491         * optabs.c (expand_vec_shift_expr): Remove casts to int.
5492         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
5493         int local to handle integral_argment value.
5494         * regmove.c (try_auto_increment): Change PUT_MODE to
5495         PUT_REG_NOTE_KIND.
5496         * reload.c (push_secondary_reload): Add casts to enum type.
5497         (secondary_reload_class, find_valid_class): Likewise.
5498         * reload1.c (emit_input_reload_insns): Likewise.
5499         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
5500         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
5501         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
5502         constant.
5503         * tree.c (build_common_builtin_nodes): Add casts to enum type.
5504         * tree-complex.c (complex_lattice_t): Typedef to int rather than
5505         enum type.
5506         (expand_complex_libcall): Add casts to enum type.
5507         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
5508         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
5509         with ERROR_MARK, not NUM_TREE_CODES.
5510         (vect_create_epilog_for_reduction): Likewise.
5511         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
5512         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
5513         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
5514         enum machine_mode.
5515         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
5516         vect_unused_in_loop.  Change 0 to loop_vect.
5517         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
5518         * var-tracking.c (get_init_value): Change return type to enum
5519         var_init_status.
5520         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
5521         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
5522         arm_fp_model.
5523         (arm_override_options): Add casts to enum type.
5524         (arm_emit_tls_decoration): Likewise.
5525         * config/i386/i386.c (ix86_function_specific_restore): Add casts
5526         to enum type.
5527         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
5528         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
5529         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
5530         enum type.
5531         * config/s390/s390.c (code_for_builtin_64): Change to array of
5532         enum insn_code.
5533         (code_for_builtin_31): Likewise.
5534         (s390_expand_builtin): Change code_for_builtin to enum insn_code
5535         const *.
5536         * config/sparc/sparc.c (sparc_override_options): Change value
5537         field in struct code_model to enum cmodel.  In initializer change
5538         0 to NULL and add cast to enum type.
5539
5540         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
5541         Change all callers.  Issue a -Wc++-compat warning using
5542         lhs_origtype if necessary.
5543         (convert_for_assignment): Issue -Wc++-compat warnings about
5544         invalid conversions to enum type on assignment.
5545         * c-common.h (build_modify_expr): Update declaration.
5546
5547 2009-04-24  Nick Clifton  <nickc@redhat.com>
5548
5549         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
5550         (function_arg_advance): Likewise.
5551         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
5552         5th alternative.
5553
5554 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5555
5556         * config/s390/constraints.md ('I', 'J'): Fix condition.
5557
5558 2009-04-24  Diego Novillo  <dnovillo@google.com>
5559
5560         * gengtype-parse.c (parse_error): Add newline after message.
5561
5562 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5563
5564         * config/i386/sse.md (avxmodesuffixs): Removed.
5565         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
5566         (*avx_pinsr<ssevecsize>): This.
5567
5568 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5569
5570         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
5571         follow chains of regs with a single definition, and allow expressions
5572         that are function_invariant_p.
5573         (simple_rhs_p): Allow expressions that are function_invariant_p.
5574
5575 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
5576
5577         PR middle-end/39867
5578         * fold-const.c (fold_cond_expr_with_comparison): When folding
5579         > and >= to MAX, make sure the MAX uses the same type as the
5580         comparison's operands.
5581
5582 2009-04-24  Nick Clifton  <nickc@redhat.com>
5583
5584         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
5585         addressing for DImode accesses.
5586         (frv_print_operand_address): Handle PLUS case.
5587         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
5588
5589 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
5590
5591         PR rtl-optimization/39794
5592         * alias.c (canon_true_dependence): Add x_addr argument.
5593         * rtl.h (canon_true_dependence): Adjust prototype.
5594         * cse.c (check_dependence): Adjust canon_true_dependence callers.
5595         * cselib.c (cselib_invalidate_mem): Likewise.
5596         * gcse.c (compute_transp): Likewise.
5597         * dse.c (scan_reads_nospill): Likewise.
5598         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
5599         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
5600         canon_base_addr of the group, plus optional offset.
5601         (struct group_info): Rename canon_base_mem to
5602         canon_base_addr.
5603         (get_group_info): Set canon_base_addr to canon_rtx of base, not
5604         canon_rtx of base_mem.
5605
5606 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
5607
5608         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
5609         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
5610
5611 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5612
5613         * config/spu/spu-builtins.h: Delete file.
5614
5615         * config/spu/spu.h (enum spu_builtin_type): Move here from
5616         spu-builtins.h.
5617         (struct spu_builtin_description): Likewise.  Add GTY marker.
5618         Do not use enum spu_function_code or enum insn_code.
5619         (spu_builtins): Add extern declaration.
5620
5621         * config/spu/spu.c: Do not include "spu-builtins.h".
5622         (enum spu_function_code, enum spu_builtin_type_index,
5623         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
5624         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
5625         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
5626         unsigned_V2DI_type_node): Move here from spu-builtins.h.
5627         (spu_builtin_types): Make static.  Add GTY marker.
5628         (spu_builtins): Add extern declaration with GTY marker.
5629         Include "gt-spu.h".
5630
5631         * config/spu/spu-c.c: Do not include "spu-builtins.h".
5632         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
5633         Check programmatically whether all parameters are scalar.
5634
5635         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
5636
5637 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
5638
5639         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
5640         assignment from the constructor either if the target is volatile.
5641
5642 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
5643
5644         * config/arm/arm.md (insv): Do not share operands[0].
5645
5646 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
5647
5648         * config/vxlib-tls.c (active_tls_threads): Delete.
5649         (delete_hook_installed): New.
5650         (tls_delete_hook): Don't delete the delete hook.
5651         (tls_destructor): Delete it here.
5652         (__gthread_set_specific): Adjust installing the delete hook.
5653         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
5654         __gthread_leave_tsd_dtor_context.
5655
5656 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
5657
5658         * c-format.c (gcc_tdiag_char_table): Add support for %E.
5659
5660 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
5661
5662         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
5663         enum type.
5664         (alpha_rtx_costs): Ditto.
5665         (emit_unlikely_jump): Use add_reg_note.
5666         (emit_frame_store_1): Ditto.
5667         (alpha_expand_prologue): Ditto.
5668         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5669         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
5670
5671 2009-04-23  Nick Clifton  <nickc@redhat.com>
5672
5673         * config/v850/v850.md (epilogue): Remove suppressed code.
5674         (return): Rename to return_simple and remove test of frame size.
5675         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
5676         to gen_return_simple.
5677
5678 2009-04-22  Jing Yu  <jingyu@google.com>
5679
5680         PR testsuite/39781
5681         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
5682
5683 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5684
5685         PR C/31499
5686         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
5687         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
5688         value is a VECTOR_CST, the element type is the element type of the
5689         vector.
5690
5691 2009-04-22  DJ Delorie  <dj@redhat.com>
5692
5693         * config/m32c/m32c.h: Update GTY annotations to new syntax.
5694
5695 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
5696
5697         * alias.c (find_base_term): Move around LO_SUM case, so that
5698         CONST falls through into PLUS/MINUS handling.
5699
5700         PR c/39855
5701         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
5702         into 0, use omit_one_operand.
5703
5704 2009-04-23  Ben Elliston  <bje@au.ibm.com>
5705
5706         * config/rs6000/linux-unwind.h (get_regs): Remove type
5707         puns. Change the type of `pc' to an array of unsigned ints and
5708         update all users.  Constify frame24.
5709
5710 2009-04-22  DJ Delorie  <dj@redhat.com>
5711
5712         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
5713         declarations before code.
5714         (current_function_special_page_vector): Likewise.
5715         (m32c_expand_insv): Silence a warning.
5716
5717 2009-04-21  Taras Glek  <tglek@mozilla.com>
5718
5719         * alias.c: Update GTY annotations to new syntax.
5720         * basic-block.h: Likewise.
5721         * bitmap.h: Likewise.
5722         * c-common.h: Likewise.
5723         * c-decl.c: Likewise.
5724         * c-parser.c: Likewise.
5725         * c-pragma.c: Likewise.
5726         * c-tree.h: Likewise.
5727         * cfgloop.h: Likewise.
5728         * cgraph.h: Likewise.
5729         * config/alpha/alpha.c: Likewise.
5730         * config/arm/arm.h: Likewise.
5731         * config/avr/avr.h: Likewise.
5732         * config/bfin/bfin.c: Likewise.
5733         * config/cris/cris.c: Likewise.
5734         * config/darwin.c: Likewise.
5735         * config/frv/frv.c: Likewise.
5736         * config/i386/i386.c: Likewise.
5737         * config/i386/i386.h: Likewise.
5738         * config/i386/winnt.c: Likewise.
5739         * config/ia64/ia64.h: Likewise.
5740         * config/iq2000/iq2000.c: Likewise.
5741         * config/mips/mips.c: Likewise.
5742         * config/mmix/mmix.h: Likewise.
5743         * config/pa/pa.c: Likewise.
5744         * config/pa/pa.h: Likewise.
5745         * config/rs6000/rs6000.c: Likewise.
5746         * config/s390/s390.c: Likewise.
5747         * config/sparc/sparc.c: Likewise.
5748         * config/xtensa/xtensa.c: Likewise.
5749         * cselib.h: Likewise.
5750         * dbxout.c: Likewise.
5751         * dwarf2out.c: Likewise.
5752         * except.c: Likewise.
5753         * except.h: Likewise.
5754         * fixed-value.h: Likewise.
5755         * function.c: Likewise.
5756         * function.h: Likewise.
5757         * gimple.h: Likewise.
5758         * integrate.c: Likewise.
5759         * optabs.c: Likewise.
5760         * output.h: Likewise.
5761         * real.h: Likewise.
5762         * rtl.h: Likewise.
5763         * stringpool.c: Likewise.
5764         * tree-data-ref.c: Likewise.
5765         * tree-flow.h: Likewise.
5766         * tree-scalar-evolution.c: Likewise.
5767         * tree-ssa-address.c: Likewise.
5768         * tree-ssa-alias.h: Likewise.
5769         * tree-ssa-operands.h: Likewise.
5770         * tree.c: Likewise.
5771         * tree.h: Likewise.
5772         * varasm.c: Likewise.
5773         * varray.h: Likewise.
5774         * vec.h: Likewise.
5775         * coretypes.h: Do not define GTY macro if it is already defined.
5776         * doc/gty.texi: Update GTY documentation to new syntax.
5777         * gengtype-lex.l: Enforce attribute-like syntax for GTY
5778         annotations on structs.
5779         * gengtype-parse.c: Likewise.
5780
5781 2009-04-22  Mark Heffernan  <meheff@google.com>
5782
5783         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
5784
5785 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
5786
5787         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
5788         where appropriate.
5789
5790 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
5791
5792         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
5793         the same as a PLUS without a shift.  Increase the cost of a
5794         CONST_INT in MULT.
5795
5796 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5797
5798         * Makefile.in: Update dependencies.
5799         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
5800         * errors.h: Remove bogus comment about compatibility.
5801         (warning): Update declaration.
5802         * genautomata.c: Update all calls to warning.
5803         * gimple.c: Do not include errors.h. Include toplev.h.
5804         * tree-ssa-structalias.c: Do not include errors.h.
5805         * omega.c: Likewise.
5806         * tree-ssa-reassoc.c: Likewise.
5807         * config/spu/spu-c.c: Likewise.
5808         * config/spu/t-spu-elf: Update dependencies.
5809
5810 2009-04-22  Richard Guenther  <rguenther@suse.de>
5811
5812         PR tree-optimization/39824
5813         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
5814         make sure the types are compatible.
5815
5816 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5817
5818         PR c++/14875
5819         * c-common.c (c_parse_error): Take a token_flags parameter.
5820         Use token_type for the token type instead.
5821         Pass token_flags to cpp_type2name.
5822         * c-common.h (c_parse_error): Update declaration.
5823         * c-parser.c (c_parser_error): Pass 0 as token flags.
5824
5825 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
5826
5827         PR rtl-optimization/39580
5828         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
5829         
5830 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5831
5832         * function.c (expand_function_end): Do not emit a jump to the "naked"
5833         return label for fall-through returns.
5834         * except.c (sjlj_emit_function_exit): Always place the call to the
5835         unregister function at the location installed by expand_function_end.
5836
5837 2009-04-22  Richard Guenther  <rguenther@suse.de>
5838
5839         PR tree-optimization/39845
5840         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
5841         (gen_inbound_check): Likewise.
5842
5843 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
5844
5845         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
5846         padding for PPC.
5847         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
5848         * config/vxlib.c (__gthread_once): Add race guard for PPC.
5849
5850 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5851
5852         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
5853         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
5854         shift counts to avoid out-of-bounds array accesses.
5855
5856 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5857
5858         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
5859         (Pmode): Move above.
5860
5861 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
5862
5863         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
5864         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
5865         GET_CODE macro.  Use IN_RANGE macro where appropriate.
5866         * config/alpha/alpha.h: Ditto.
5867         * config/alpha/alpha.md: Ditto.
5868         * config/alpha/constraints.md: Ditto.
5869         * config/alpha/predicates.md: Ditto.
5870         
5871 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5872
5873         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
5874         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5875         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5876         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5877         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5878         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5879         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5880         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5881         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5882         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5883         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5884         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5885         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5886         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5887         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5888         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5889         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5890         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5891         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5892         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5893         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5894         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5895         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5896         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5897         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5898         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5899         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5900
5901 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5902
5903         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
5904         references from comments.
5905         * cfgbuild.c: (count_basic_blocks): Delete.
5906         (find_basic_blocks_1): Delete.
5907         (find_basic_blocks): Delete.
5908         * except.c (finish_eh_generation): Make static.  Move comment from
5909         except.h here.  Remove find_basic_blocks references from comments.
5910         * except.h (finish_eh_generation): Delete.
5911         * basic-block.h (find_basic_blocks): Delete.
5912         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
5913
5914 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5915
5916         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
5917         (sdbout_parms):  Likewise.
5918
5919 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
5920
5921         * config/sh/sh.c (prepare_cbranch_operands): Use
5922         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
5923         (expand_cbranchdi4): Likewise.
5924         (from_compare): Add cast to enum type.
5925         (expand_cbranchsi4): Use add_reg_note.
5926         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
5927         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
5928         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
5929         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5930         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
5931         instead of CODE_FOR_nothing.
5932         (cbranchdi4): Likewise.  Fix the order of arguments for
5933         gen_rtx_fmt_ee.
5934         (push_fpscr): Use add_reg_note.
5935         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
5936         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
5937         
5938 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
5939
5940         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
5941         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
5942         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
5943         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
5944         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
5945         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
5946         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
5947         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
5948         config/alpha/x-vms, config/arc/t-arc,
5949         config/arm/README-interworking, config/arm/arm-c.c,
5950         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
5951         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
5952         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
5953         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
5954         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
5955         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
5956         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
5957         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
5958         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
5959         config/cris/t-elfmulti, config/crx/t-crx,
5960         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
5961         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
5962         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
5963         config/h8300/t-h8300, config/i386/athlon.md,
5964         config/i386/darwin-libgcc.10.4.ver,
5965         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
5966         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
5967         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
5968         config/i386/t-linux64, config/i386/t-nwld,
5969         config/i386/t-rtems-i386, config/i386/t-sol2-10,
5970         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
5971         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
5972         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
5973         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
5974         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
5975         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
5976         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
5977         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
5978         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
5979         config/m68k/t-uclinux, config/mcore/t-mcore,
5980         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
5981         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
5982         config/mips/crtn.asm, config/mips/irix-crti.asm,
5983         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
5984         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
5985         config/mips/mips-fixed.md, config/mips/sb1.md,
5986         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
5987         config/mips/t-iris6, config/mips/t-isa3264,
5988         config/mips/t-libgcc-mips16, config/mips/t-linux64,
5989         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
5990         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
5991         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
5992         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
5993         config/mn10300/t-linux, config/mn10300/t-mn10300,
5994         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
5995         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
5996         config/picochip/libgccExtras/clzsi2.asm,
5997         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
5998         config/rs6000/darwin-libgcc.10.4.ver,
5999         config/rs6000/darwin-libgcc.10.5.ver,
6000         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
6001         config/rs6000/t-aix43, config/rs6000/t-aix52,
6002         config/rs6000/t-darwin, config/rs6000/t-fprules,
6003         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
6004         config/rs6000/t-lynx, config/rs6000/t-netbsd,
6005         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
6006         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
6007         config/rs6000/t-rtems, config/rs6000/t-spe,
6008         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
6009         config/score/t-score-elf, config/sh/divcost-analysis,
6010         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
6011         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
6012         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
6013         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
6014         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
6015         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
6016         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
6017         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
6018         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
6019         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
6020         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
6021         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
6022         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
6023         limitx.h, version.c, xcoff.h: Add copyright and license notices.
6024         * config/h8300/genmova.sh: Include copyright and license notices
6025         in generated output.
6026         * config/h8300/mova.md: Regenerate.
6027         * doc/install.texi2html: Include word "Copyright" in copyright
6028         notice and use name "Free Software Foundation, Inc.".
6029         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6030         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6031         ChangeLog-2007, ChangeLog-2008: Correct dates.
6032
6033 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
6034
6035         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
6036         NE_EXPR operations as well.
6037         * c-parser.c (c_parser_condition): Do not set location information on
6038         the condition.
6039         (c_parser_conditional_expression): Likewise.
6040         (c_parser_binary_expression): Set location information on operators.
6041         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
6042         TRUTH_NOT_EXPR has been folded.
6043         * fold-const.c (fold_truth_not_expr): Copy location information from
6044         the incoming expression to the outgoing one.
6045         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
6046         recursive calls on the LHS of the operator but pass that of the
6047         operator to recursive calls on the RHS of the operator.  Set it
6048         on the COND_EXPR.
6049         (shortcut_cond_expr): Set the locus of the operator on the second
6050         COND_EXPR and that of the expression on the first in degenerate cases.
6051         Pass the locus of the expression to calls to shortcut_cond_r.
6052         Set the locus of the 'then' block on the associated jump, if any.
6053         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
6054         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
6055         expression to call to gimplify_boolean_expr.
6056
6057 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
6058
6059         * config.gcc: Add additional configuration for
6060         i686-w64-mingw* and x86_64-w64-mingw* triplet.
6061         * config/i386/mingw-w64.h: New mingw-w64 specific header.
6062         (CPP_SPEC): Redefine for allowing -municode option.
6063         (STARTFILE_SPEC): Likewise.
6064         * config/i386/t-mingw-w64: New.
6065         * config/i386/mingw-w64.opt: New.
6066         (municode): Add new target option.
6067         * doc/invoke.texi (municode): Add documentation for new option.
6068
6069 2009-04-21  Ian Lance Taylor  <iant@google.com>
6070
6071         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6072         Correct test for number of arguments.
6073         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
6074
6075 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
6076
6077         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
6078         argument of emit_library_call.
6079
6080 2009-04-21  Richard Guenther  <rguenther@suse.de>
6081
6082         PR middle-end/39829
6083         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
6084         inside VIEW_CONVERT_EXPRs.
6085
6086 2009-04-21  Martin Jambor  <mjambor@suse.cz>
6087
6088         * tree-switch-conversion.c (build_constructors): Split a long line.
6089         (constructor_contains_same_values_p): New function.
6090         (build_one_array): Create assigns of constants if possible, do not
6091         call mark_sym_for_renaming, call update_stmt.
6092         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
6093         make_rename_temp.  Do not call mark_symbols_for_renaming, call
6094         update_stmt.
6095         (gen_def_assigns): Do not call mark_symbols_for_renaming or
6096         find_new_referenced_vars, call update_stmt.
6097         (gen_inbound_check): Use create_tmp_var and create ssa names manually
6098         instead of calling make_rename_temp.  Do not call
6099         find_new_referenced_vars or mark_symbols_for_renaming, call
6100         update_stmt.
6101
6102 2009-04-21  Richard Guenther  <rguenther@suse.de>
6103
6104         PR tree-optimization/39827
6105         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
6106         (tree_ssa_phiprop): Pass the correct array size.
6107
6108 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
6109
6110         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
6111
6112 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6113
6114         PR 16202
6115         * c-typeck.c (lvalue_p): Move declaration ...
6116         * c-common.h (lvalue_p): ... to here.
6117         * c-common.c (candidate_equal_p): New.
6118         (add_tlist): Use it.
6119         (merge_tlist): Use it.
6120         (warn_for_collisions_1): Likewise.
6121         (warning_candidate_p): Accept more candidates.
6122         (verify_tree): A warning candidate can be an expression. Use
6123         candidate_equal_p.
6124
6125 2009-04-21  Ben Elliston  <bje@au.ibm.com>
6126
6127         PR target/5267
6128         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
6129         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
6130         options.  Remove -mcall-solaris documentation.
6131
6132 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6133
6134         PR c++/13358
6135         * doc/invoke.texi (-Wlong-long): Update description.
6136         * c-lex (interpret_integer): Only warn if there was no previous
6137         overflow and -Wlong-long is enabled.
6138         * c-decl.c (declspecs_add_type): Drop redundant flags.
6139         * c.opt (Wlong-long): Init to -1.
6140         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
6141         and front-end warn_long_long. Wlong-long only depends on other
6142         flags if it is uninitialized.
6143         * c-parser.c (disable_extension_diagnostics): warn_long_long is
6144         the same for CPP and FE.
6145         (restore_extension_diagnostics): Likewise.
6146
6147 2009-04-20  Ian Lance Taylor  <iant@google.com>
6148
6149         Fix enum conversions which are invalid in C++:
6150         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
6151         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
6152         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
6153         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
6154         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
6155         (dbxout_parms): Likewise.
6156         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
6157         (df_clear_flags): Likewise.
6158         * df-problems.c (df_rd_bb_local_compute_process_def): Change
6159         top_flag parameter to int.
6160         (df_chain_create_bb_process_use): Likewise.
6161         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
6162         Remove cast.
6163         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
6164         (df_ref_create_structure, df_def_record_1): Likewise.
6165         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
6166         (df_notes_rescan): Change 0 to VOIDmode in function call.
6167         (df_get_call_refs, df_insn_refs_collect): Likewise.
6168         (df_bb_regs_collect): Likewise.
6169         (df_entry_block_defs_collect): Likewise.
6170         (df_exit_block_uses_collect): Likewise.
6171         * df.h: Update declarations.
6172         * double-int.c (double_int_divmod): Add cast to enum type.
6173         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
6174         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
6175         (based_loc_descr): Likewise.
6176         (loc_descriptor_from_tree_1): Change first_op and second_op to
6177         enum dwarf_location_atom.  Add cast to enum type.
6178         * expmed.c (init_expmed): Change 0 to SET in function call.
6179         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
6180         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
6181         (do_store_flag): Likewise.
6182         * fixed-value.h (struct fixed_value): Change mode to enum
6183         machine_mode.
6184         * function.c (assign_parms): Change 0 to VOIDmode in function call.
6185         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
6186         function call.
6187         (insert_insn_decl, insert_decl, insert_state): Likewise.
6188         (automata_list_finish): Likewise.
6189         * genrecog.c (process_define_predicate): Add cast to enum type.
6190         * gensupport.c (init_predicate_table): Add cast to enum type.
6191         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
6192         function call.
6193         (gimple_build_call_1, gimple_build_label): Likewise.
6194         (gimple_build_goto, gimple_build_asm_1): Likewise.
6195         (gimple_build_switch_1, gimple_build_cdt): Likewise.
6196         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
6197         (enum fallback): Rename from enum fallback_t.
6198         (fallback_t): Typedef as int.
6199         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
6200         GSI_SAME_STMT in function call.
6201         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
6202         enum type.
6203         (setup_reg_class_relations): Likewise.
6204         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
6205         (setup_prohibited_class_mode_regs): Add cast to enum type.
6206         (setup_prohibited_mode_move_regs): Likewise.
6207         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
6208         (record_address_regs): Change i to enum reg_class.
6209         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
6210         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
6211         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
6212         (GET_MODE_2XWIDER_MODE): Likewise.
6213         (GET_CLASS_NARROWEST_MODE): Likewise.
6214         * omp-low.c (expand_omp_for): Add cast to enum type.
6215         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
6216         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
6217         * postreload.c (reload_cse_simplify_operands): Change rclass local
6218         to enum reg_class.
6219         * predict.c (combine_predictions_for_insn): Change best_predictor
6220         and predictor to enum br_predictor.
6221         (combine_predictions_for_bb): Likewise.
6222         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
6223         use SET_PREDICT_EXPR_OUTCOME.
6224         * real.c (real_arithmetic): Change icode to code in function call.
6225         * reginfo.c (init_move_cost): Add casts to enum type.
6226         (init_reg_sets_1, init_fake_stack_mems): Likewise.
6227         * regmove.c (regclass_compatible_p): Change class0 and class1 to
6228         enum reg_class.
6229         * reload.c (find_valid_class): Add casts to enum type.
6230         (push_reload): Change 0 to NO_REGS in function call.
6231         (find_reloads): Change this_alternative to array of enum
6232         reg_class.  Remove some now-unnecessary casts.
6233         (make_memloc): Change 0 to VOIDmode in function call.
6234         * reload1.c (reload): Change 0 to VOIDmode in function call.
6235         (eliminate_regs_1, elimination_effects): Likewise.
6236         (eliminate_regs_in_insn): Likewise.
6237         (emit_input_reload_insns): Add cast to enum type.
6238         (delete_output_reload): Change 0 to VOIDmode in function call.
6239         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
6240         to enum type in function call.
6241         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
6242         (SET_PREDICT_EXPR_OUTCOME): Define.
6243         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
6244         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
6245         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
6246         (dump_function): Likewise.
6247         * tree-dump.h: Update declarations.
6248         * tree-pass.h: Update declarations.
6249         * varasm.c (assemble_integer): Change mclass to enum mode_class.
6250         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
6251         enum type.
6252         (arm_rtx_costs_1): Correct parenthesization.
6253         (arm_rtx_costs): Add casts to enum type.
6254         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
6255         (vfp_emit_fstmd): Use add_rg_note.
6256         (emit_multi_reg_push, emit_sfm): Likewise.
6257         (thumb_set_frame_pointer): Likewise.
6258         (arm_expand_prologue): Likewise.
6259         (arm_regno_class): Change return type to enum reg_class.
6260         (thumb1_expand_prologue): Use add_reg_note.
6261         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
6262         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
6263         in function call.
6264         * config/arm/gentune.sh: Add cast to enum type.
6265         * config/arm/arm-tune.md: Rebuild.
6266         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
6267         (ix86_split_fp_branch, predict_jump): Likewise.
6268         (ix86_expand_multi_arg_builtin): Change sub_code from enum
6269         insn_code to enum rtx_code.
6270         (ix86_builtin_vectorized_function): Add cast to enum type.
6271         * config/i386/i386.md (truncdfsf2): Change slot to enum
6272         ix86_stack_slot.
6273         (truncxf<mode>2, isinf<mode>2): Likewise.
6274         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
6275         enum type.
6276         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
6277         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
6278         (insert_bundle_state): Change 1 to INSERT in function call.
6279         (ia64_add_bundle_selector_before): Likewise.
6280         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
6281         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
6282         (restore_stack_nonlocal): Likewise.
6283         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
6284         function call.
6285         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
6286         function call.
6287         (mips_rtx_costs): Likewise.
6288         (mips_override_options): Add casts to enum type.
6289         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
6290         in function call.
6291         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
6292         (store_reg, set_reg_plus_d): Likewise.
6293         (hppa_expand_prologue, hppa_profile_hook): Likewise.
6294         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
6295         cast to enum type.
6296         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
6297         function call.
6298         (emit_unlikely_jump): Use add_reg_note.
6299         (rs6000_emit_allocate_stack): Likewise.
6300         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
6301         (output_toc): Change 1 to INSERT in function call.
6302         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
6303         (rs6000_initialize_trampoline): Likewise.
6304         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
6305         function call.
6306         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
6307         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
6308         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
6309         (save_gprs): Use add_reg_note.
6310         (s390_emit_prologue): Likewise.
6311         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6312         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
6313         (sparc_fold_builtin): Add cast to enum type.
6314         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
6315         enum insn_code.
6316         (spu_expand_prologue): Use add_reg_note.
6317         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
6318
6319 2009-04-20  Ian Lance Taylor  <iant@google.com>
6320
6321         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
6322         (c_parser_postfix_expression_after_primary): Get VEC for list of
6323         arguments.  Get original types of arguments.  Call
6324         build_function_call_vec.
6325         (cached_expr_list_1, cached_expr_list_2): New static variables.
6326         (c_parser_expr_list): Change return type to VEC *.  Add
6327         p_orig_types parameter.  Change all callers.
6328         (c_parser_release_expr): New static function.
6329         (c_parser_vec_to_tree_list): New static function.
6330         * c-typeck.c (build_function_call): Rewrite to build a VEC and
6331         call build_function_call_vec.
6332         (build_function_call_vec): New function, based on old
6333         build_function_call.
6334         (convert_arguments): Remove nargs and argarray parameters.  Change
6335         values to a VEC.  Add origtypes parameter.
6336         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
6337         (convert_for_assignment): Add origtype parameter.  Change all
6338         callers.  If warn_cxx_compat, check for conversion to an enum
6339         type when calling a function.
6340         (store_init_value): Add origtype parameter.  Change all callers.
6341         (digest_init): Likewise.
6342         (struct init_node): Add origtype field.
6343         (add_pending_init): Add origtype parameter.  Change all callers.
6344         (output_init_element): Likewise.
6345         (output_pending_init_elements): Pass origtype from init_node to
6346         output_init_element.
6347         (process_init_element): Pass origtype from c_expr to
6348         output_init_element.
6349         (c_finish_return): Add origtype parameter.  Change all callers.
6350         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
6351         caller.
6352         (sync_resolve_params): Likewise.
6353         (sync_resolve_return): Change params to first_param.  Change caller.
6354         (resolve_overloaded_builtins): Change params to VEC *.  Change
6355         callers.  Save first parameter around call to build_function_call_vec.
6356         * c-decl.c (finish_decl): Add origtype parameter.  Change all
6357         callers.  Call build_function_call_vec rather than
6358         build_function_call for cleanup.
6359         * c-tree.h: Update declarations.
6360         * c-common.h: Update declarations.
6361         * stub-objc.c (objc_rewrite_function_call): Change parameter from
6362         params to first_param.
6363         * target.h (struct gcc_target): Change resolve_overloaded_builtin
6364         params parameter from tree to void *.
6365         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6366         Change arglist parameter to have type void *, and to be a pointer
6367         to a VEC.
6368         * config/rs6000/rs6000-protos.h
6369         (altivec_resolve_overloaded_builtin): Update declaration.
6370         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
6371         fnargs parameter to have type void *, and to be a pointer to a
6372         VEC.  Call build_function_call_vec instead of
6373         build_function_call.
6374         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
6375
6376 2009-04-20  Joey Ye  <joey.ye@intel.com>
6377             Xuepeng Guo  <xuepeng.guo@intel.com>
6378             H.J. Lu  <hongjiu.lu@intel.com>
6379
6380         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
6381
6382         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
6383         (IX86_LEA_PRIORITY): Likewise.
6384         (distance_non_agu_define): New function.
6385         (distance_agu_use): Likewise.
6386         (ix86_lea_for_add_ok): Likewise.
6387         (ix86_dep_by_shift_count): Likewise.
6388
6389         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
6390         should split for LEA.
6391
6392         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
6393         function.
6394         (ix86_dep_by_shift_count): Likewise.
6395
6396 2009-04-20  Richard Guenther  <rguenther@suse.de>
6397
6398         * expr.c (handled_component_p): Move ...
6399         * tree.h (handled_component_p): ... here.
6400         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
6401         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
6402         and REALPART_EXPR to be in one group.
6403
6404 2009-04-20  Richard Guenther  <rguenther@suse.de>
6405
6406         * basic-block.h (get_all_dominated_blocks): Declare.
6407         * dominance.c (get_all_dominated_blocks): New function.
6408         * tree-cfg.c (get_all_dominated_blocks): Remove.
6409         (remove_edge_and_dominated_blocks): Adjust.
6410         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
6411         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
6412         instead of recursing.
6413
6414 2009-04-20  Doug Kwan  <dougkwan@google.com>
6415
6416         * cgraph.h (cgraph_node_ptr): New type for vector functions.
6417         (struct cgraph_node_set_def): New type.
6418         (cgraph_node_set) New type. Also declare vector functions.
6419         (struct cgraph_node_set_element_def): New type.
6420         (cgraph_node_set_element): Ditto.
6421         (cgraph_node_set_iterator): New iterator type.
6422         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
6423         cgraph_node_set_remove, dump_cgraph_node_set,
6424         debug_cgraph_node_set): New prototypes.
6425         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
6426         cgraph_node_set_size): New inlines.
6427         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
6428         including cgraph.h.
6429         (struct ipa_opt_pass): Add struct cgraph_node_set_def
6430         argument to function 'write_summary'.
6431         * ipa.c: Include ggc.h.
6432         (hash_cgraph_node_set_element,
6433         eq_cgraph_node_set_element, cgraph_node_set_new,
6434         cgraph_node_set_add, cgraph_node_set_remove,
6435         cgraph_node_set_find, dump_cgraph_node_set,
6436         debug_cgraph_node_set): New functions.
6437         * Makefile.in (ipa.o): Add dependency on GGC_H.
6438
6439 2009-04-20  Ira Rosen  <irar@il.ibm.com>
6440
6441         PR tree-optimization/39675
6442         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
6443         check of the return code of vect_schedule_slp. Check that
6444         stmt_vec_info still exists for the statement, before checking its
6445         vectorization type.
6446
6447 2009-04-20  Michael Matz  <matz@suse.de>
6448
6449         * Makefile.in (generated_files): Take out $(simple_generated_c).
6450
6451 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
6452
6453         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
6454         (UINTPTR_TYPE):  Likewise.
6455
6456 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6457
6458         PR c/37481
6459         * c-typeck.c (digest_init): Check for initializing an array with a
6460         string literal.
6461
6462 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6463
6464         PR c/19771
6465         * c-semantics.c (pop_stmt_list): Propagate
6466         STATEMENT_LIST_HAS_LABEL to parent statement list.
6467
6468 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
6469
6470         * config/mips/mips.h (mips_tune_attr): New macro.
6471         * config/mips/mips.md (cpu): Use it.
6472
6473 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6474
6475         PR c/38243
6476         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
6477         declaring a tag.
6478
6479 2009-04-19  Diego Novillo  <dnovillo@google.com>
6480
6481         * toplev.c (compile_file): Move call to coverage_finish ...
6482         * cgraphunit.c (ipa_passes): ... here.
6483         Call cgraph_process_new_functions.
6484         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
6485         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
6486
6487 2009-04-19  Jan Hubicka  <jh@suse.cz>
6488
6489         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
6490         cfun.
6491         (dump_cgraph_node): Dump can throw external flag.
6492         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
6493
6494 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6495
6496         PR c/32061
6497         PR c++/36954
6498         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
6499         * common.opt (Wlogical-op): Move from here...
6500         * c.opt (Wlogical-op): ... to here.
6501         * c-typeck.c (parser_build_binary_op): Update call to
6502         warn_logical_operator.
6503         * c-opts.c (c_common_post_options): Enable warn_logical_op with
6504         extra_warnings.
6505         * c-common.c (warn_logical_op): Update.
6506         * c-common.h (warn_logical_op): Update declaration.
6507
6508 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
6509
6510         * tree.c (protected_set_expr_location): Fix formatting.
6511
6512 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6513
6514         PR c/27676
6515         * c-typeck.c (readonly_warning): new.
6516         (build_unary_op, build_modify_expr): Use readonly_warning for
6517         storing into something readonly but not const-qualified.
6518
6519 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6520
6521         PR c/22367
6522         * c-typeck.c (build_unary_op): Check for taking address of
6523         expression of type void.
6524
6525 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6526
6527         PR c/35210
6528         * c-typeck.c (build_function_call): Check for calling a function
6529         with qualified void return types.  Call require_complete_type when
6530         generating a trap.
6531
6532 2009-04-18  Jan Hubicka  <jh@suse.cz>
6533
6534         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
6535         Set nothrow flag.
6536         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
6537         can_throw_external flag.
6538         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
6539         * ipa-pure-const.c (ignore_edge): New function.
6540         (propagate): Compute order for NOTHROW computation; set NOTHROWs
6541         only over can_throw_external edges.
6542         (local_pure_const): Add nothrow flag.
6543         * ipa-utils.c (searchc): Add ignore_edge callback.
6544         (ipa_utils_reduced_inorder): Add ignore_edge callback.
6545         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
6546         (set_nothrow_function_flags): Update cgraph.
6547         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
6548
6549 2009-04-18  Richard Guenther  <rguenther@suse.de>
6550
6551         PR middle-end/39804
6552         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
6553         (fold_stmt): ... this and ...
6554         (fold_stmt_inplace): ... this.
6555         (fold_stmt_1): Fold references in calls and asms.
6556         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
6557
6558 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6559
6560         * tree-vrp.c (ssa_name_nonzero_p): Remove.
6561         * tree.h: Remove the prototype for ssa_name_nonzero_p.
6562
6563 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6564
6565         * tree.c (function_args_count): Remove.
6566         * tree.h: Remove the prototype for function_args_count.
6567
6568 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6569
6570         * tree-iterator.c (expr_only): Remove.
6571         * tree.h: Remove the prototype for expr_only.
6572
6573 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6574
6575         * reginfo.c (cannot_change_mode_set_regs): Remove.
6576         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
6577
6578 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
6579
6580         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
6581         whether operands 0 and 1 overlaps.
6582
6583 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6584
6585         PR middle-end/36902
6586         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
6587         pointer. Use warning_at instead of warning.
6588         (search_for_addr_array): Likewise.
6589         (check_array_bounds): Likewise.
6590         (check_all_array_refs): Check that the incoming edge is not in the
6591         list of edges to be removed.
6592         (check_all_array_refs): Avoid the temporal pointer.
6593         (vrp_visit_cond_stmt): Fix typo.
6594         (simplify_switch_using_ranges): Handle the case where the switch
6595         index is an integer constant.
6596
6597 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
6598
6599         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
6600
6601 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6602
6603         * doc/extend.texi, doc/invoke.texi: Fix typos.
6604
6605 2009-04-17  Cary Coutant  <ccoutant@google.com>
6606
6607         * tree-flow-inline.h (get_lineno): Fix inverted test.
6608
6609 2009-04-17  Diego Novillo  <dnovillo@google.com>
6610
6611         * tree-ssa-pre.c (create_expression_by_pieces): Remove
6612         assertion for AVAIL_OUT.
6613
6614 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
6615
6616         PR target/38627
6617         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
6618         * config/sh/linux-atomic.asm: Likewise.
6619
6620 2009-04-17  Diego Novillo  <dnovillo@google.com>
6621
6622         * except.c (debug_eh_tree): New.
6623         (struct eh_region, struct eh_status): Move ...
6624         * except.h: ... here.
6625         (add_type_for_runtime): Declare extern.
6626         (lookup_type_for_runtime): Likewise.
6627         (debug_eh_tree): Declare.
6628         * Makefile.in (GTFILES): List except.h before except.c
6629
6630 2009-04-17  Diego Novillo  <dnovillo@google.com>
6631
6632         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
6633         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
6634         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
6635         (find_vars_r): ... here.
6636         * tree-flow.h (find_referenced_vars_in): Declare.
6637         * tree-ssa-pre.c (create_expression_by_pieces): Assert
6638         that AVAIL_OUT exists for BLOCK.
6639         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
6640         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
6641         (tree-parloops.o): Likewise.
6642
6643 2009-04-17  Simon Baldwin  <simonb@google.com>
6644
6645         * toplev.c (default_tree_printer): Add handling for %E format.
6646
6647 2009-04-17  Diego Novillo  <dnovillo@google.com>
6648
6649         * tree-pretty-print.c (dump_generic_node): Add break after
6650         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
6651         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
6652         FUNCTION_TYPE together.  Call print_struct_decl when printing
6653         structures and TDF_SLIM is not given.
6654         (print_struct_decl): Fix logic for detecting recursion.
6655
6656 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6657
6658         PR 31567
6659         * gcc.c (create_at_file): New.
6660         (compile_input_file_p): New.
6661         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
6662         * main.c (main): Update call to toplev_main.
6663         * toplev.c (toplev_main): Change signature. Call expandargv.
6664         * toplev.h (toplev_main): Change signature.
6665
6666 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6667
6668         * dwarf2out.c (field_byte_offset): Use the type size as the field size
6669         if the latter is not constant.
6670
6671 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
6672
6673         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
6674
6675 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6676
6677         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
6678         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
6679
6680 2009-04-17  Richard Guenther  <rguenther@suse.de>
6681
6682         * tree-ssa-structalias.c (get_constraint_for_component_ref):
6683         Handle component references view-converting an invariant address.
6684
6685 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
6686
6687         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
6688         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
6689         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
6690         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
6691         Use @deftypevr rather than @deftypevar.
6692
6693 2009-04-17  Richard Guenther  <rguenther@suse.de>
6694
6695         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
6696         (get_prop_source_stmt): Likewise.
6697         (can_propagate_from): Likewise.
6698
6699 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
6700
6701         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
6702         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
6703         (--with-multilib-list): Add default value.
6704         * configure: Regenerate.
6705         * Makefile.in (TM_ENDIAN_CONFIG): Define.
6706         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
6707         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
6708         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
6709         Don't add default cpu to multilib list unnecessarily, but do enable
6710         the relevant compiler option..
6711         Add support for --with-multilib-list=<blank> and
6712         --with-multilib-list=!<somelib> to supress unwanted multilibs.
6713         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
6714         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
6715         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
6716         TM_MULTILIB_CONFIG.
6717         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
6718         (MULTILIB_OSDIRNAMES): New variable.
6719         * config/sh/t-1e: Delete file.
6720         * config/sh/t-mlib-sh1: Delete file.
6721         * config/sh/t-mlib-sh2: Delete file.
6722         * config/sh/t-mlib-sh2a: Delete file.
6723         * config/sh/t-mlib-sh2a-nofpu: Delete file.
6724         * config/sh/t-mlib-sh2a-single: Delete file.
6725         * config/sh/t-mlib-sh2a-single-only: Delete file.
6726         * config/sh/t-mlib-sh2e: Delete file.
6727         * config/sh/t-mlib-sh3e: Delete file.
6728         * config/sh/t-mlib-sh4: Delete file.
6729         * config/sh/t-mlib-sh4-nofpu: Delete file.
6730         * config/sh/t-mlib-sh4-single: Delete file.
6731         * config/sh/t-mlib-sh4-single-only: Delete file.
6732         * config/sh/t-mlib-sh4a: Delete file.
6733         * config/sh/t-mlib-sh4a-nofpu: Delete file.
6734         * config/sh/t-mlib-sh4a-single: Delete file.
6735         * config/sh/t-mlib-sh4a-single-only: Delete file.
6736         * config/sh/t-mlib-sh4al: Delete file.
6737         * config/sh/t-mlib-sh5-32media: Delete file.
6738         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
6739         * config/sh/t-mlib-sh5-64media: Delete file.
6740         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
6741         * config/sh/t-mlib-sh5-compact: Delete file.
6742         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
6743         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
6744         * doc/install.texi (Options specification): Add
6745         --with-multilib-list and --with-endian.
6746
6747 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6748
6749         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
6750         REVISION_c.
6751         (OBJS-common): Add plugin-version.o.
6752         (plugin-version.o): New.
6753         * gcc-plugin.h (plugin_gcc_version): New.
6754         (plugin_default_version_check): New.
6755         (plugin_init_func, plugin_init): Add version argument.
6756         * plugin-version.c: New.
6757         * plugin.c (str_plugin_gcc_version_name): New.
6758         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
6759         pass it to the init function.
6760         (plugin_default_version_check): New.
6761
6762 2009-04-17  Richard Guenther  <rguenther@suse.de>
6763
6764         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
6765         for decl-vs-decl disambiguation.
6766
6767 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
6768
6769         * config/s390/s390.h (s390_tune_attr): New macro definition.
6770         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
6771
6772 2009-04-17  Richard Guenther  <rguenther@suse.de>
6773
6774         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
6775         (fold_stmt_r): Likewise.
6776         (maybe_fold_reference): New function.
6777         (fold_gimple_assign): Handle cases fold_stmt_r did.
6778         (fold_stmt): Do not use fold_stmt_r.
6779         (fold_stmt_inplace): Likewise.
6780
6781 2009-04-17  Richard Guenther  <rguenther@suse.de>
6782
6783         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
6784         (record_equivalences_from_stmt): Remove useless checks and
6785         simplifications.
6786         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
6787         the type is already suitable.
6788
6789 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
6790
6791         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
6792
6793 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
6794
6795         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
6796         (CMPtype): Define as __gcc_CMPtype.
6797
6798 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
6799
6800         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
6801         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
6802
6803 2009-04-17  Richard Guenther  <rguenther@suse.de>
6804
6805         PR tree-optimization/39746
6806         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
6807         special-casing for builtins and static variable use/def.
6808         (call_may_clobber_ref_p_1): Likewise.
6809
6810 2009-04-16  Ian Lance Taylor  <iant@google.com>
6811
6812         * df.h: Include "timevar.h".
6813         (struct df_problem): Change tv_id field to timevar_id_t.
6814         * tree-pass.h: Include "timevar.h".
6815         (struct opt_pass): Change tv_id field to timevar_id_t.
6816         * timevar.h (timevar_id_t): Define TV_NONE.
6817         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
6818         TV_NONE rather than tv_id != 0.
6819         (execute_one_pass): Likewise.
6820         * Makefile.in (DF_H): Add $(TIMEVAR_H).
6821         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
6822         dependencies to $(TREE_PASS_H).
6823         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
6824         to TV_NONE.
6825         (pass_branch_target_load_optimize2): Likewise.
6826         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
6827         (pass_outof_cfg_layout_mode): Likewise.
6828         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
6829         (pass_rebuild_cgraph_edges): Likewise.
6830         (pass_remove_cgraph_callee_edges): Likewise.
6831         * df-core.c (pass_df_initialize_opt): Likewise.
6832         (pass_df_initialize_no_opt): Likewise.
6833         (pass_df_finish): Likewise.
6834         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
6835         * except.c (pass_set_nothrow_function_flags): Likewise.
6836         (pass_convert_to_eh_region_ranges): Likewise.
6837         * final.c (pass_compute_alignments): Likewise.
6838         * function.c (pass_instantiate_virtual_regs): Likewise.
6839         (pass_init_function): Likewise.
6840         (pass_leaf_regs): Likewise.
6841         (pass_match_asm_constraints): Likewise.
6842         * gimple-low.c (pass_lower_cf): Likewise.
6843         (pass_mark_used_blocks): Likewise.
6844         * init-regs.c (pass_initialize_regs): Likewise.
6845         * integrate.c (pass_initial_value_sets): Likewise.
6846         * ira.c (pass_ira): Likewise.
6847         * jump.c (pass_cleanup_barriers): Likewise.
6848         * omp-low.c (pass_expand_omp): Likewise.
6849         (pass_lower_omp): Likewise.
6850         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
6851         * recog.c (pass_split_all_insns): Likewise.
6852         (pass_split_after_reload): Likewise.
6853         (pass_split_before_regstack): Likewise.
6854         (pass_split_before_sched2): Likewise.
6855         (pass_split_for_shorten_branches): Likewise.
6856         * reginfo.c (pass_reginfo_init): Likewise.
6857         (pass_subregs_of_mode_init): Likewise.
6858         (pass_subregs_of_mode_finish): Likewise.
6859         * passes.c (pass_postreload): Likewise.
6860         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
6861         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
6862         (pass_warn_function_return): Likewise.
6863         (pass_warn_function_noreturn): Likewise.
6864         * tree-complex.c (pass_lower_complex): Likewise.
6865         (pass_lower_complex_O0): Likewise.
6866         * tree-if-conv.c (pass_if_conversion): Likewise.
6867         * tree-into-ssa.c (pass_build_ssa): Likewise.
6868         * tree-mudflap.c (pass_mudflap_1): Likewise.
6869         (pass_mudflap_2): Likewise.
6870         * tree-nomudflap.c (pass_mudflap_1): Likewise.
6871         (pass_mudflap_2): Likewise.
6872         * tree-nrv.c (pass_return_slot): Likewise.
6873         * tree-object-size.c (pass_object_sizes): Likewise.
6874         * tree-optimize.c (pass_all_optimizations): Likewise.
6875         (pass_early_local_passes): Likewise.
6876         (pass_all_early_optimizations): Likewise.
6877         (pass_cleanup_cfg): Likewise.
6878         (pass_cleanup_cfg_post_optimizing): Likewise.
6879         (pass_free_datastructures): Likewise.
6880         (pass_free_cfg_annotations): Likewise.
6881         (pass_fixup_cfg): Likewise.
6882         (pass_init_datastructures): Likewise.
6883         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
6884         (pass_late_warn_uninitialized): Likewise.
6885         (pass_update_address_taken): Likewise.
6886         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
6887         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
6888         (pass_cse_sincos): Likewise.
6889         (pass_convert_to_rsqrt): Likewise.
6890         * tree-ssa-structalias.c (pass_build_alias): Likewise.
6891         * tree-stdarg.c (pass_stdarg): Likewise.
6892         * tree-tailcall.c (pass_tail_recursion): Likewise.
6893         (pass_tail_calls): Likewise.
6894         * tree-vect-generic.c (pass_lower_vector): Likewise.
6895         (pass_lower_vector_ssa): Likewise.
6896         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
6897
6898 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
6899
6900         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
6901         XLR entry.
6902         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
6903         Handle -march=xlr.
6904         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
6905         logical and signext.
6906
6907 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
6908
6909         PR target/39767
6910         * config/sh/predicates.md (arith_operand): Check if the operand
6911         of TRUNCATE is a REG.
6912
6913 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6914
6915         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6916         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6917
6918 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6919
6920         * tree-iterator.c (tsi_split_statement_list_after,
6921         tsi_split_statement_list_before): Remove.
6922         * tree-iterator.h: Remove the prototypes for
6923         tsi_split_statement_list_after and tsi_split_statement_list_before.
6924
6925 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6926
6927         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
6928         * tree-ssa-propagate.h: Remove the prototype for
6929         stmt_makes_single_load.
6930
6931 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6932
6933         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
6934         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
6935
6936 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6937
6938         * tree-iterator.c (EXPR_LAST_BODY): Remove.
6939
6940 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6941
6942         * except.c (eh_region_outer_p): Remove.
6943         * except.h: Remove the prototype for eh_region_outer_p.
6944
6945 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6946
6947         * function.c (current_function_assembler_name): Remove.
6948         * function.h: Remove the prototype for
6949         current_function_assembler_name.
6950
6951 2009-04-16  Ian Lance Taylor  <iant@google.com>
6952
6953         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
6954         (add_reg_note): Call alloc_reg_note.
6955         * rtl.h (alloc_reg_note): Declare.
6956         * combine.c (try_combine): Use alloc_reg_note.
6957         (recog_for_combine, move_deaths): Likewise.
6958         (distribute_notes): Use alloc_reg_note and add_reg_note.
6959         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
6960         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
6961         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
6962
6963 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
6964
6965         PR rtl-optimization/39762
6966         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
6967         ira_may_move_out_cost): Add comments about way of their usage.
6968         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
6969
6970         * ira-conflicts.c (process_regs_for_copy): Use function
6971         ira_get_register_move_cost instead of global
6972         ira_register_move_cost.
6973
6974         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
6975         color_pass, move_spill_restore, update_curr_costs): Ditto.
6976
6977         * ira-lives.c (process_single_reg_class_operands): Ditto.
6978
6979         * ira-emit.c (emit_move_list): Ditto.
6980
6981         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
6982         (record_reg_classes): Ditto.  Use functions
6983         ira_get_register_move_cost and ira_get_may_move_cost instead of
6984         global vars ira_register_move_cost, ira_may_move_out_cost and
6985         ira_may_move_in_cost.
6986         (record_address_regs): Don't call ira_init_register_move_cost.
6987         Use function ira_get_may_move_cost instead of global
6988         ira_may_move_in_cost.
6989         (process_bb_node_for_hard_reg_moves): Use function
6990         ira_get_register_move_cost instead of global ira_register_move_cost.
6991         (ira_costs): Don't call ira_init_register_move_cost.
6992
6993 2009-04-16  Richard Guenther  <rguenther@suse.de>
6994
6995         * tree-cfg.c (verify_gimple_assign_binary):
6996         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
6997         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
6998         (create_general_new_stmt): Note that this function is broken.
6999
7000 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7001
7002         * common.opt (fhelp): Add Var(help_flag).
7003         * gcc-plugin.h (plugin_info): Add help.
7004         * plugin.c (plugin_name_args): Add help.
7005         (register_plugin_info): Set plugin->help.
7006         (print_help_one_plugin): New.
7007         (print_plugins_help): New.
7008         * plugin.h (print_plugins_help): New.
7009         * toplev.c (toplev_main): Call print_plugins_help if needed.
7010
7011 2009-04-16  Richard Guenther  <rguenther@suse.de>
7012
7013         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
7014         (gimple_ior_addresses_taken_1): New function.
7015         (gimple_ior_addresses_taken): Likewise.
7016         * gimple.h (struct gimple_statement_with_ops_base): Remove
7017         addresses_taken member.
7018         (gimple_ior_addresses_taken): Declare.
7019         (gimple_addresses_taken, gimple_addresses_taken_ptr,
7020         gimple_set_addresses_taken): Remove.
7021         * ipa-reference.c (mark_address): New function.
7022         (scan_stmt_for_static_refs): Use it for marking addresses taken.
7023         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
7024         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
7025         (gimple_add_to_addresses_taken): Remove.
7026         (get_tmr_operands): Call mark_address_taken.
7027         (get_asm_expr_operands): Likewise.
7028         (get_expr_operands): Likewise.
7029         (build_ssa_operands): Do not clear the addresses_taken bitmap.
7030         (free_stmt_operands): Do not free it.
7031         * tree-ssa.c (delete_tree_ssa): Likewise.
7032         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
7033
7034 2009-04-16  Richard Guenther  <rguenther@suse.de>
7035
7036         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
7037         (walk_stmt_load_store_ops): Likewise.
7038         * gimple.c (get_base_loadstore): New function.
7039         (walk_stmt_load_store_addr_ops): Likewise.
7040         (walk_stmt_load_store_ops): Likewise.
7041         * ipa-pure-const.c (check_op): Simplify.
7042         (check_load, check_store): New functions.
7043         (check_stmt): Use walk_stmt_load_store_ops.
7044         * ipa-reference.c (mark_load): Adjust signature.
7045         (mark_store): Likewise.
7046         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
7047
7048 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7049
7050         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
7051         (plugin_info): New.
7052         * opts.c (common_handle_option): Don't call print_version.
7053         * plugin.c (plugin_name_args): Add version.
7054         (register_plugin_info): New.
7055         (register_callback): Handle PLUGIN_INFO.
7056         (try_init_one_plugin): New.
7057         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
7058         if failed to init.
7059         (finalize_one_plugin): New.
7060         (finalize_plugins): New.
7061         (print_one_plugin): New.
7062         (print_plugins_versions): New.
7063         * plugin.h (print_plugins_versions): New.
7064         (finalize_plugins): New.
7065         * toplev.c (compile_file): Don't call initialize_plugins.
7066         (print_version): Call print_plugins_versions.
7067         (toplev_main): Call initialize_plugins. Print version if needed.
7068         Call finalize_plugins.
7069
7070 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7071
7072         * common.opt (fversion): New.
7073         * gcc.c (print_version): New.
7074         (process_command): Don't print the version. Just set print_version.
7075         (main): Print version. Call subprocesses if print_version and
7076         verbose_flag are set.
7077         * opts.c (common_handle_option): Handle OPT_fversion.
7078
7079 2009-04-16  Richard Guenther  <rguenther@suse.de>
7080             Ira Rosen  <irar@il.ibm.com>
7081
7082         PR tree-optimization/39698
7083         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
7084         type of the reduction variable.  Only generate the def if
7085         it is needed.
7086
7087         * omp-low.c (expand_omp_for_generic): When converting to a pointer
7088         make sure to first convert to an integer of the same precision.
7089         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
7090         the type of the evolution correctly in computing the new
7091         induction variable base.
7092
7093 2009-04-16  Richard Guenther  <rguenther@suse.de>
7094
7095         PR middle-end/39625
7096         * tree-cfg.c (make_blocks): Split statements with to-be
7097         abnormal SSA names on the lhs.
7098
7099 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
7100
7101         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
7102         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
7103         * c-typeck.c (really_start_incremental_init): Likewise.
7104         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
7105         (TARGET_INITIALIZER): Remove it.
7106         * target.h (struct target): Remove vector_opaque_p.
7107         * tree.c (build_opaque_vector_type): New.
7108         * tree.h (TYPE_VECTOR_OPAQUE): New.
7109         (build_opaque_vector_type): Declare.
7110         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
7111         * config/rs6000/rs6000.c (build_opaque_vector_type,
7112         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
7113         (rs6000_init_builtins): Use build_opaque_vector_type for
7114         opaque_V4SI_type_node.
7115
7116 2009-04-15  Catherine Moore  <clm@codesourcery.com>
7117
7118         * debug.h (set_name):  Declare.
7119         * dwarf2out.c (dwarf2out_set_name): Declare.
7120         (dwarf2_debug_hooks): Add set_name.
7121         (find_AT_string): New.
7122         (add_AT_string): Call find_AT_string.
7123         (dwarf2out_set_name): New.
7124         * cp/decl.c (grokdeclarator): Call set_name.
7125         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
7126         * debug.c (do_nothing_debug_hooks):  Likewise.
7127         * dbxout.c (dbx_debug_hooks): Likewise.
7128         * sdbout.c (sdb_debug_hooks): Likewise.
7129
7130 2009-04-15  Michael Eager  <eager@eagercon.com>
7131
7132         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
7133         reg for single-precision FPU.
7134         * config/rs6000/rs6000.md (movsi_internal1): Only for
7135         !TARGET_SINGLE_FPU.
7136         (movsi_internal1_single): New. Add pattern to move SI values to/from
7137         single-precision FP regs.
7138
7139 2009-04-15  Richard Guenther  <rguenther@suse.de>
7140
7141         * omp-low.c (lower_rec_input_clauses): Build correct address
7142         expressions.
7143         (expand_omp_for_generic): Fix multiplication type.
7144         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
7145         (generate_memset_zero): Fix types.
7146         * tree-profile.c (prepare_instrumented_value): Correctly
7147         widen a pointer.
7148
7149 2009-04-15  Ian Lance Taylor  <iant@google.com>
7150
7151         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
7152         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
7153         for -Wall and for -Wc++-compat.
7154         (c_common_post_options): For C++, set warn_enum_compare if not
7155         already set.
7156         * c-tree.h (struct c_expr): Add field original_type.
7157         (build_external_ref): Update declaration.
7158         * c-parser.c (c_parser_braced_init): Set original_type.
7159         (c_parser_initelt): Likewise.
7160         (c_parser_expr_no_commas): Likewise.
7161         (c_parser_conditional_expression): Likewise.
7162         (c_parser_cast_expression): Likewise.
7163         (c_parser_unary_expression): Likewise.  Pull setting of
7164         original_code to top of function.
7165         (c_parser_sizeof_expression): Set original_type.
7166         (c_parser_alignof_expression): Likewise.
7167         (c_parser_postfix_expression): Likewise.  Pull setting of
7168         original_code to top of function.
7169         (c_parser_postfix_expression_after_paren_type): Set original_type.
7170         (c_parser_postfix_expression_after_primary): Likewise.
7171         (c_parser_expression): Likewise.
7172         * c-typeck.c (build_external_ref): Add type parameter.  Change all
7173         callers.
7174         (c_expr_sizeof_expr): Set original_type field.
7175         (parser_build_unary_op): Likewise.
7176         (parser_build_binary_op): Likewise.  Optionally warn about
7177         comparisons of enums of different types.
7178         (digest_init): Set original_type field.
7179         (really_start_incremental_init): Likewise.
7180         (push_init_level, pop_init_level): Likewise.
7181         * doc/invoke.texi (Warning Options): -Wenum-compare now
7182         supported in C.
7183
7184 2009-04-15  Richard Guenther  <rguenther@suse.de>
7185
7186         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
7187         out a necessary conversion.
7188         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
7189         names we didn't value number.
7190         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
7191
7192 2009-04-15  Richard Guenther  <rguenther@suse.de>
7193
7194         PR tree-optimization/39764
7195         * tree-ssa-ccp.c (get_value): Canonicalize value with
7196         canonicalize_float_value.
7197
7198 2009-04-15  Jan Hubicka  <jh@suse.cz>
7199
7200         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
7201         Wrong version of patch.
7202
7203 2009-04-15  Jan Hubicka  <jh@suse.cz>
7204
7205         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
7206
7207 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
7208
7209         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
7210         our distinct integral and vector types.
7211
7212 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
7213
7214         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
7215         * init.c (build_vtbl_address): Remove call to assemble_external.
7216
7217 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
7218
7219         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
7220         output for other floating point modes.
7221
7222 2009-04-14  Diego Novillo  <dnovillo@google.com>
7223
7224         * diagnostic.c (diagnostic_report_diagnostic): Do not
7225         warn about loaded plugins for DK_ERROR and DK_WARNING.
7226         * c-decl.c (declspecs_add_type): Move call to
7227         invoke_plugin_callbacks ...
7228         * c-parser.c (c_parser_declspecs): ... here.
7229         * plugin.c (dump_active_plugins): Tidy output.
7230
7231 2009-04-14  Diego Novillo  <dnovillo@google.com>
7232             Le-Chun Wu  <lcwu@google.com>
7233
7234         * configure.ac: Add --enable-plugin support.
7235         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
7236         * Makefile.in (PLUGIN_H): Define.
7237         Export ENABLE_PLUGIN and GMPINC to site.exp.
7238         Add PLUGINLIBS to link command.
7239         Add/modify dependencies for plugin.o and files including plugin.h.
7240         (plugin.o): New.
7241         * config.in: Regenerate.
7242
7243         * opts.c (common_handle_option): Handle OPT_fplugin_ and
7244         OPT_fplugin_arg_.
7245
7246 2009-04-14  Le-Chun Wu  <lcwu@google.com>
7247
7248         * tree-pass.h (register_one_dump_file): Add a prototype for
7249         register_one_dump_file.
7250         * toplev.c (compile_file): Call initialize_plugins.
7251         (do_compile): Call invoke_plugin_callbacks.
7252         (toplev_main): Call invoke_plugin_callbacks.
7253         * common.opt: Add -fplugin= and -fplugin-arg-.
7254         * gcc-plugin.h: New public header file for plugins to include.
7255         * plugin.c: New source file.
7256         * plugin.h: New internal header file.
7257         * passes.c (register_one_dump_file): Make it external.
7258
7259         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
7260
7261 2009-04-14  Diego Novillo  <dnovillo@google.com>
7262
7263         * doc/plugins.texi: New.
7264         * doc/gccint.texi: Add reference to Plugins chapter.
7265         * doc/invoke.texi: Document -fplugin and -fplugin-arg
7266         * diagnostic.c (diagnostic_report_diagnostic): Warn about
7267         loaded plugins, if any.
7268         * timevar.def (TV_PLUGIN_INIT): Define.
7269         (TV_PLUGIN_RUN): Define.
7270         * plugin.c: Include timevar.h
7271         (plugins_active_p): New.
7272         (dump_active_plugins): New.
7273         (debug_active_plugins): New.
7274
7275 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
7276
7277         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
7278         library paths.
7279         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
7280
7281 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
7282
7283         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
7284         the same as a minus without a shift.
7285
7286 2009-04-14  Nick Clifton  <nickc@redhat.com>
7287
7288         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
7289         comparisons with small integers will always produce a short
7290         branch.
7291
7292 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
7293
7294         Merge:
7295         2008-12-19  Diego Novillo  <dnovillo@google.com>
7296
7297         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
7298
7299 2009-04-14  Richard Guenther  <rguenther@suse.de>
7300
7301         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
7302         verification.
7303         (verify_gimple_assign_binary): Likewise.  Handle shifts and
7304         rotates correctly.
7305         (verify_gimple_phi): Print the mismatched argument position.
7306         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
7307         Fix types.
7308         (vect_update_init_of_dr): Likewise.
7309         * matrix-reorg.c (transform_access_sites): Do what the
7310         comment suggests.
7311         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
7312
7313 2009-04-13  Michael Eager  <eager@eagercon.com>
7314
7315         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
7316         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
7317         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
7318         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
7319         remove duplicate config
7320
7321 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7322
7323         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
7324         file_name:line_number type locator of the call site.
7325
7326 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7327
7328         * genautomata.c: Put blank after comma.
7329         (automaton_decls): New.
7330         (struct unit_usage): Add comments to member next.
7331         (store_alt_unit_usage): Keep the list ordered.
7332         (unit_present_on_list_p, equal_alternatives_p): New.
7333         (check_regexp_units_distribution): Check units distribution
7334         correctness correctly.
7335         (main): Don't write automata if error is found.  Return correct
7336         exit code.
7337
7338         * config/m68k/cf.md (cfv4_ds): Remove.
7339         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
7340         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
7341
7342         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
7343         power4-load-ext, power4-store, power4-store-update,
7344         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
7345         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
7346         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
7347         power4-sqrt, power4-isync): Modify reservation to make correct
7348         unit distribution to automata.
7349
7350         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
7351         power5-store-update, power5-two, power5-three, power5-lmul,
7352         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
7353
7354 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
7355
7356         * except.c (pass_set_nothrow_function_flags): Set name and add
7357         TODO_dump_func.
7358         (set_nothrow_function_flags): Mention in the dump file when
7359         changing a function to nothrow.
7360
7361 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
7362
7363         PR/39066
7364         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
7365         instead of unsigned long.
7366
7367 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7368
7369         * config/arm/arm.c (return_used_this_function): Remove.
7370         (arm_output_function_prologue): Remove use of
7371         return_used_this_function.
7372         (output_return_instruction): Replace use of
7373         return_used_this_function
7374         by cfun->machine->return_used_this_function.
7375         (arm_output_epilogue): Likewise.
7376         (arm_output_function_epilogue): Likewise.
7377         (thumb_unexpanded_epilogue): Likewise.
7378         * config/arm/arm.h (struct machine_function):
7379         New member return_used_this_function.
7380
7381 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
7382
7383         * doc/install.texi: Correct description of default directory for
7384         --with-gxx-include-dir.
7385
7386 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7387
7388         * fold-const.c (build_range_check): Properly deal with enumeral and
7389         boolean base types.
7390
7391 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
7392
7393         * doc/invoke.texi (max_gcse_passes): Remove documentation.
7394         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
7395         * params.h (MAX_GCSE_PASSES): Remove.
7396         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
7397         in sequence.  Remove ability to run multiple passes.
7398         (bypass_jumps): Report run as third CPROP pass.
7399
7400 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
7401
7402         PR middle-end/39651
7403         * except.c (can_throw_external): Look at each insn in a SEQUENCE
7404         when deciding whether the whole SEQUENCE can throw.
7405
7406 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
7407
7408         PR target/39740
7409         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
7410         offseted label references.
7411
7412 2009-04-11  Jan Hubicka  <jh@suse.cz>
7413
7414         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
7415
7416 2009-04-11  Richard Guenther  <rguenther@suse.de>
7417
7418         PR middle-end/39732
7419         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
7420         return variables as TREE_ADDRESSABLE.
7421
7422 2009-04-11  Richard Guenther  <rguenther@suse.de>
7423
7424         PR tree-optimization/39713
7425         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
7426         reference trees have SSA_NAME operands.
7427
7428 2009-04-11  Richard Guenther  <rguenther@suse.de>
7429
7430         PR c/39712
7431         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
7432         address expressions.
7433
7434 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
7435
7436         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
7437         match changes in Cygwin 1.7
7438         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
7439         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
7440
7441 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7442
7443         PR tree-optimization/39701
7444         * doc/invoke.texi (Optimization Options): Document change in
7445         meaning and initialization of -fdelete-null-pointer-checks.
7446
7447 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7448
7449         PR middle-end/39701
7450         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
7451
7452         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
7453         here.
7454
7455         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
7456
7457 2009-04-10  Chao-ying Fu  <fu@mips.com>
7458
7459         * doc/tm.texi (Instruction Output): Document
7460         TARGET_ASM_FINAL_POSTSCAN_INSN.
7461         * target.h (final_postscan_insn): New field in asm_out.
7462         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7463         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
7464         * final.c (final_scan_insn): Call
7465         targetm.asm_out.final_postscan_insn after outputting
7466         an asm macro and a normal instruction.
7467
7468         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
7469         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
7470         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
7471         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
7472         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7473
7474 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7475
7476         PR middle-end/39701
7477         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
7478         variables as non-NULL even with -fdelete-null-pointer-checks.
7479
7480 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7481
7482         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
7483
7484 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7485
7486         PR target/39678
7487         * config/i386/i386.c (classify_argument): Handle SCmode with
7488         (bit_offset % 64) != 0.
7489
7490 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
7491
7492         * doc/invoke.texi (Optimize Options): Add cross-reference to
7493         -Q --help=optimizers examples.
7494
7495 2009-04-10  Ben Elliston  <bje@au.ibm.com>
7496
7497         PR target/36800
7498         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
7499         regalign for the reg == fpr and TDmode case.
7500
7501 2009-04-09  David Ayers  <ayers@fsfe.org>
7502
7503         PR objc/29200
7504         * objc/objc-act.c (warn_with_method): Remove helper function.
7505         (check_duplicates): Call warning and inform directly.
7506         (really_start_method): Likewise.
7507
7508 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7509
7510         * expmed.c (expand_divmod): Always use a comparison for a division
7511         by a large unsigned integer.
7512
7513         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
7514         for things others than variables or functions as nonzero.
7515
7516 2009-04-09  Nick Clifton  <nickc@redhat.com>
7517
7518         * unwind-compat.c: Change copyright header to refer to version
7519         3 of the GNU General Public License with version 3.1 of the
7520         GCC Runtime Library Exception and to point readers at the
7521         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
7522         * config/alpha/crtfastmath.c: Likewise.
7523         * config/alpha/linux-unwind.h: Likewise.
7524         * config/alpha/qrnnd.asm: Likewise.
7525         * config/alpha/vms-crt0-64.c: Likewise.
7526         * config/alpha/vms-crt0.c: Likewise.
7527         * config/alpha/vms-dwarf2.asm: Likewise.
7528         * config/alpha/vms-dwarf2eh.asm: Likewise.
7529         * config/alpha/vms-psxcrt0-64.c: Likewise.
7530         * config/alpha/vms-psxcrt0.c: Likewise.
7531         * config/alpha/vms_tramp.asm: Likewise.
7532         * config/arc/initfini.c: Likewise.
7533         * config/arc/lib1funcs.asm: Likewise.
7534         * config/arm/bpabi-v6m.S: Likewise.
7535         * config/arm/bpabi.S: Likewise.
7536         * config/arm/bpabi.c: Likewise.
7537         * config/arm/crti.asm: Likewise.
7538         * config/arm/crtn.asm: Likewise.
7539         * config/arm/ieee754-df.S: Likewise.
7540         * config/arm/ieee754-sf.S: Likewise.
7541         * config/arm/lib1funcs.asm: Likewise.
7542         * config/arm/libunwind.S: Likewise.
7543         * config/arm/linux-atomic.c: Likewise.
7544         * config/arm/mmintrin.h: Likewise.
7545         * config/arm/pr-support.c: Likewise.
7546         * config/arm/unaligned-funcs.c: Likewise.
7547         * config/arm/unwind-arm.c: Likewise.
7548         * config/arm/unwind-arm.h: Likewise.
7549         * config/avr/libgcc.S: Likewise.
7550         * config/bfin/crti.s: Likewise.
7551         * config/bfin/crtlibid.s: Likewise.
7552         * config/bfin/crtn.s: Likewise.
7553         * config/bfin/lib1funcs.asm: Likewise.
7554         * config/bfin/linux-unwind.h: Likewise.
7555         * config/cris/arit.c: Likewise.
7556         * config/cris/cris_abi_symbol.c: Likewise.
7557         * config/darwin-64.c: Likewise.
7558         * config/darwin-crt2.c: Likewise.
7559         * config/darwin-crt3.c: Likewise.
7560         * config/darwin.h: Likewise.
7561         * config/dbxelf.h: Likewise.
7562         * config/dfp-bit.c: Likewise.
7563         * config/dfp-bit.h: Likewise.
7564         * config/elfos.h: Likewise.
7565         * config/fixed-bit.c: Likewise.
7566         * config/fixed-bit.h: Likewise.
7567         * config/fp-bit.c: Likewise.
7568         * config/fp-bit.h: Likewise.
7569         * config/fr30/crti.asm: Likewise.
7570         * config/fr30/crtn.asm: Likewise.
7571         * config/fr30/lib1funcs.asm: Likewise.
7572         * config/freebsd-spec.h: Likewise.
7573         * config/frv/cmovd.c: Likewise.
7574         * config/frv/cmovh.c: Likewise.
7575         * config/frv/cmovw.c: Likewise.
7576         * config/frv/frvbegin.c: Likewise.
7577         * config/frv/frvend.c: Likewise.
7578         * config/frv/lib1funcs.asm: Likewise.
7579         * config/glibc-stdint.h: Likewise.
7580         * config/h8300/clzhi2.c: Likewise.
7581         * config/h8300/crti.asm: Likewise.
7582         * config/h8300/crtn.asm: Likewise.
7583         * config/h8300/ctzhi2.c: Likewise.
7584         * config/h8300/fixunssfsi.c: Likewise.
7585         * config/h8300/lib1funcs.asm: Likewise.
7586         * config/h8300/parityhi2.c: Likewise.
7587         * config/h8300/popcounthi2.c: Likewise.
7588         * config/i386/ammintrin.h: Likewise.
7589         * config/i386/att.h: Likewise.
7590         * config/i386/avxintrin.h: Likewise.
7591         * config/i386/biarch64.h: Likewise.
7592         * config/i386/bmmintrin.h: Likewise.
7593         * config/i386/cpuid.h: Likewise.
7594         * config/i386/cross-stdarg.h: Likewise.
7595         * config/i386/crtfastmath.c: Likewise.
7596         * config/i386/crtprec.c: Likewise.
7597         * config/i386/cygming-crtbegin.c: Likewise.
7598         * config/i386/cygming-crtend.c: Likewise.
7599         * config/i386/cygwin.asm: Likewise.
7600         * config/i386/emmintrin.h: Likewise.
7601         * config/i386/gmm_malloc.h: Likewise.
7602         * config/i386/gthr-win32.c: Likewise.
7603         * config/i386/i386.h: Likewise.
7604         * config/i386/immintrin.h: Likewise.
7605         * config/i386/linux-unwind.h: Likewise.
7606         * config/i386/linux64.h: Likewise.
7607         * config/i386/mm3dnow.h: Likewise.
7608         * config/i386/mmintrin-common.h: Likewise.
7609         * config/i386/mmintrin.h: Likewise.
7610         * config/i386/nmmintrin.h: Likewise.
7611         * config/i386/pmm_malloc.h: Likewise.
7612         * config/i386/pmmintrin.h: Likewise.
7613         * config/i386/smmintrin.h: Likewise.
7614         * config/i386/sol2-c1.asm: Likewise.
7615         * config/i386/sol2-ci.asm: Likewise.
7616         * config/i386/sol2-cn.asm: Likewise.
7617         * config/i386/sol2-gc1.asm: Likewise.
7618         * config/i386/tmmintrin.h: Likewise.
7619         * config/i386/unix.h: Likewise.
7620         * config/i386/w32-unwind.h: Likewise.
7621         * config/i386/wmmintrin.h: Likewise.
7622         * config/i386/x86-64.h: Likewise.
7623         * config/i386/x86intrin.h: Likewise.
7624         * config/i386/xmmintrin.h: Likewise.
7625         * config/ia64/crtbegin.asm: Likewise.
7626         * config/ia64/crtend.asm: Likewise.
7627         * config/ia64/crtfastmath.c: Likewise.
7628         * config/ia64/crti.asm: Likewise.
7629         * config/ia64/crtn.asm: Likewise.
7630         * config/ia64/fde-glibc.c: Likewise.
7631         * config/ia64/lib1funcs.asm: Likewise.
7632         * config/ia64/linux-unwind.h: Likewise.
7633         * config/ia64/quadlib.c: Likewise.
7634         * config/ia64/unwind-ia64.c: Likewise.
7635         * config/linux.h: Likewise.
7636         * config/m32c/m32c-lib1.S: Likewise.
7637         * config/m32c/m32c-lib2-trapv.c: Likewise.
7638         * config/m32c/m32c-lib2.c: Likewise.
7639         * config/m32r/initfini.c: Likewise.
7640         * config/m68hc11/larith.asm: Likewise.
7641         * config/m68hc11/m68hc11-crt0.S: Likewise.
7642         * config/m68k/cf.md: Likewise.
7643         * config/m68k/crti.s: Likewise.
7644         * config/m68k/crtn.s: Likewise.
7645         * config/m68k/lb1sf68.asm: Likewise.
7646         * config/m68k/linux-unwind.h: Likewise.
7647         * config/mcore/crti.asm: Likewise.
7648         * config/mcore/crtn.asm: Likewise.
7649         * config/mcore/lib1.asm: Likewise.
7650         * config/mips/linux-unwind.h: Likewise.
7651         * config/mips/loongson.h: Likewise.
7652         * config/mips/mips16.S: Likewise.
7653         * config/mmix/crti.asm: Likewise.
7654         * config/mmix/crtn.asm: Likewise.
7655         * config/pa/fptr.c: Likewise.
7656         * config/pa/hpux-unwind.h: Likewise.
7657         * config/pa/lib2funcs.asm: Likewise.
7658         * config/pa/linux-atomic.c: Likewise.
7659         * config/pa/linux-unwind.h: Likewise.
7660         * config/pa/milli64.S: Likewise.
7661         * config/pa/quadlib.c: Likewise.
7662         * config/pa/stublib.c: Likewise.
7663         * config/picochip/libgccExtras/adddi3.asm: Likewise.
7664         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
7665         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
7666         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
7667         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
7668         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
7669         * config/picochip/libgccExtras/divmod15.asm: Likewise.
7670         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
7671         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
7672         * config/picochip/libgccExtras/longjmp.asm: Likewise.
7673         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
7674         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
7675         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
7676         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
7677         * config/picochip/libgccExtras/setjmp.asm: Likewise.
7678         * config/picochip/libgccExtras/subdi3.asm: Likewise.
7679         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
7680         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
7681         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
7682         * config/rs6000/750cl.h: Likewise.
7683         * config/rs6000/altivec.h: Likewise.
7684         * config/rs6000/biarch64.h: Likewise.
7685         * config/rs6000/crtresfpr.asm: Likewise.
7686         * config/rs6000/crtresgpr.asm: Likewise.
7687         * config/rs6000/crtresxfpr.asm: Likewise.
7688         * config/rs6000/crtresxgpr.asm: Likewise.
7689         * config/rs6000/crtsavfpr.asm: Likewise.
7690         * config/rs6000/crtsavgpr.asm: Likewise.
7691         * config/rs6000/darwin-asm.h: Likewise.
7692         * config/rs6000/darwin-fallback.c: Likewise.
7693         * config/rs6000/darwin-fpsave.asm: Likewise.
7694         * config/rs6000/darwin-ldouble.c: Likewise.
7695         * config/rs6000/darwin-tramp.asm: Likewise.
7696         * config/rs6000/darwin-unwind.h: Likewise.
7697         * config/rs6000/darwin-vecsave.asm: Likewise.
7698         * config/rs6000/darwin-world.asm: Likewise.
7699         * config/rs6000/e500crtres32gpr.asm: Likewise.
7700         * config/rs6000/e500crtres64gpr.asm: Likewise.
7701         * config/rs6000/e500crtres64gprctr.asm: Likewise.
7702         * config/rs6000/e500crtrest32gpr.asm: Likewise.
7703         * config/rs6000/e500crtrest64gpr.asm: Likewise.
7704         * config/rs6000/e500crtresx32gpr.asm: Likewise.
7705         * config/rs6000/e500crtresx64gpr.asm: Likewise.
7706         * config/rs6000/e500crtsav32gpr.asm: Likewise.
7707         * config/rs6000/e500crtsav64gpr.asm: Likewise.
7708         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
7709         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
7710         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
7711         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
7712         * config/rs6000/eabi-ci.asm: Likewise.
7713         * config/rs6000/eabi-cn.asm: Likewise.
7714         * config/rs6000/eabi.asm: Likewise.
7715         * config/rs6000/linux-unwind.h: Likewise.
7716         * config/rs6000/linux64.h: Likewise.
7717         * config/rs6000/paired.h: Likewise.
7718         * config/rs6000/paired.md: Likewise.
7719         * config/rs6000/ppc64-fp.c: Likewise.
7720         * config/rs6000/ppu_intrinsics.h: Likewise.
7721         * config/rs6000/rs6000.h: Likewise.
7722         * config/rs6000/si2vmx.h: Likewise.
7723         * config/rs6000/sol-ci.asm: Likewise.
7724         * config/rs6000/sol-cn.asm: Likewise.
7725         * config/rs6000/spe.h: Likewise.
7726         * config/rs6000/spu2vmx.h: Likewise.
7727         * config/rs6000/sysv4.h: Likewise.
7728         * config/rs6000/tramp.asm: Likewise.
7729         * config/rs6000/vec_types.h: Likewise.
7730         * config/s390/linux-unwind.h: Likewise.
7731         * config/s390/tpf-unwind.h: Likewise.
7732         * config/score/crti.asm: Likewise.
7733         * config/score/crtn.asm: Likewise.
7734         * config/sh/crt1.asm: Likewise.
7735         * config/sh/crti.asm: Likewise.
7736         * config/sh/crtn.asm: Likewise.
7737         * config/sh/divtab-sh4-300.c: Likewise.
7738         * config/sh/divtab-sh4.c: Likewise.
7739         * config/sh/divtab.c: Likewise.
7740         * config/sh/lib1funcs-4-300.asm: Likewise.
7741         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
7742         * config/sh/lib1funcs.asm: Likewise.
7743         * config/sh/lib1funcs.h: Likewise.
7744         * config/sh/linux-atomic.asm: Likewise.
7745         * config/sh/linux-unwind.h: Likewise.
7746         * config/sh/shmedia.h: Likewise.
7747         * config/sh/sshmedia.h: Likewise.
7748         * config/sh/ushmedia.h: Likewise.
7749         * config/sparc/crtfastmath.c: Likewise.
7750         * config/sparc/linux-unwind.h: Likewise.
7751         * config/sparc/sol2-c1.asm: Likewise.
7752         * config/sparc/sol2-ci.asm: Likewise.
7753         * config/sparc/sol2-cn.asm: Likewise.
7754         * config/spu/divmodti4.c: Likewise.
7755         * config/spu/divv2df3.c: Likewise.
7756         * config/spu/float_disf.c: Likewise.
7757         * config/spu/float_unsdidf.c: Likewise.
7758         * config/spu/float_unsdisf.c: Likewise.
7759         * config/spu/float_unssidf.c: Likewise.
7760         * config/spu/mfc_multi_tag_release.c: Likewise.
7761         * config/spu/mfc_multi_tag_reserve.c: Likewise.
7762         * config/spu/mfc_tag_release.c: Likewise.
7763         * config/spu/mfc_tag_reserve.c: Likewise.
7764         * config/spu/mfc_tag_table.c: Likewise.
7765         * config/spu/multi3.c: Likewise.
7766         * config/spu/spu_internals.h: Likewise.
7767         * config/spu/spu_intrinsics.h: Likewise.
7768         * config/spu/spu_mfcio.h: Likewise.
7769         * config/spu/vec_types.h: Likewise.
7770         * config/spu/vmx2spu.h: Likewise.
7771         * config/stormy16/stormy16-lib2.c: Likewise.
7772         * config/svr4.h: Likewise.
7773         * config/sync.c: Likewise.
7774         * config/v850/lib1funcs.asm: Likewise.
7775         * config/vxlib-tls.c: Likewise.
7776         * config/vxlib.c: Likewise.
7777         * config/vxworks-dummy.h: Likewise.
7778         * config/xtensa/crti.asm: Likewise.
7779         * config/xtensa/crtn.asm: Likewise.
7780         * config/xtensa/ieee754-df.S: Likewise.
7781         * config/xtensa/ieee754-sf.S: Likewise.
7782         * config/xtensa/lib1funcs.asm: Likewise.
7783         * config/xtensa/lib2funcs.S: Likewise.
7784         * config/xtensa/linux-unwind.h: Likewise.
7785         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
7786         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
7787         * coretypes.h: Likewise.
7788         * crtstuff.c: Likewise.
7789         * defaults.h: Likewise.
7790         * dwarf2.h: Likewise.
7791         * emutls.c: Likewise.
7792         * gbl-ctors.h: Likewise.
7793         * gcov-io.h: Likewise.
7794         * ginclude/float.h: Likewise.
7795         * ginclude/iso646.h: Likewise.
7796         * ginclude/stdarg.h: Likewise.
7797         * ginclude/stdbool.h: Likewise.
7798         * ginclude/stddef.h: Likewise.
7799         * ginclude/stdfix.h: Likewise.
7800         * ginclude/stdint-gcc.h: Likewise.
7801         * ginclude/tgmath.h: Likewise.
7802         * gthr-aix.h: Likewise.
7803         * gthr-dce.h: Likewise.
7804         * gthr-gnat.c: Likewise.
7805         * gthr-gnat.h: Likewise.
7806         * gthr-lynx.h: Likewise.
7807         * gthr-mipssde.h: Likewise.
7808         * gthr-nks.h: Likewise.
7809         * gthr-posix.c: Likewise.
7810         * gthr-posix.h: Likewise.
7811         * gthr-posix95.h: Likewise.
7812         * gthr-rtems.h: Likewise.
7813         * gthr-single.h: Likewise.
7814         * gthr-solaris.h: Likewise.
7815         * gthr-tpf.h: Likewise.
7816         * gthr-vxworks.h: Likewise.
7817         * gthr-win32.h: Likewise.
7818         * gthr.h: Likewise.
7819         * libgcc2.c: Likewise.
7820         * libgcc2.h: Likewise.
7821         * libgcov.c: Likewise.
7822         * tsystem.h: Likewise.
7823         * typeclass.h: Likewise.
7824         * unwind-c.c: Likewise.
7825         * unwind-compat.h: Likewise.
7826         * unwind-dw2-fde-compat.c: Likewise.
7827         * unwind-dw2-fde-darwin.c: Likewise.
7828         * unwind-dw2-fde-glibc.c: Likewise.
7829         * unwind-dw2-fde.c: Likewise.
7830         * unwind-dw2-fde.h: Likewise.
7831         * unwind-dw2.c: Likewise.
7832         * unwind-dw2.h: Likewise.
7833         * unwind-generic.h: Likewise.
7834         * unwind-pe.h: Likewise.
7835         * unwind-sjlj.c: Likewise.
7836         * unwind.inc: Likewise.
7837         * config/arm/neon-gen.ml: Change generated copyright header to
7838         refer to version 3 of the GNU General Public License with
7839         version 3.1 of the GCC Runtime Library Exception and to point
7840         readers at the COPYING3 and COPYING3.RUNTIME files and the
7841         FSF's license web page.
7842         * config/arm/arm_neon.h: Regenerate.
7843
7844 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
7845
7846         * config/cris/cris.md: Change copyright header to refer to version
7847         3 of the GNU General Public License.
7848         * doc/install.texi2html: Change copyright header to refer to version
7849         3 of the GNU General Public License and to point readers at the
7850         COPYING3 file and the FSF's license web page.
7851         * config/vax/linux.h: Likewise.
7852
7853 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7854
7855         * config/i386/i386.md (cmpcc): New.
7856         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
7857         (sync_compare_and_swap_cc*): Delete.
7858
7859         * config/s390/s390.c (s390_compare_emitted): Remove.
7860         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
7861         s390_compare_emitted used to be handled.  Assert that modes match.
7862         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
7863         refer to sync_compare_and_swap_ccsi.
7864         * config/s390/s390.h (s390_compare_emitted): Remove.
7865         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
7866         instead of s390_compare_emitted.
7867         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
7868         instead of s390_compare_emitted.
7869         * config/s390/s390.md (cmpcc): New.
7870         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
7871         CC_REGNUM, do not pretend it's set.
7872         (sync_compare_and_swap_cc*): Delete.
7873         * config/s390/predicates.md (cc_reg_operand): New.
7874
7875         * expr.c (sync_compare_and_swap_cc): Delete.
7876         * optabs.h (sync_compare_and_swap_cc): Delete.
7877         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
7878         is being used with can_compare_p.
7879         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
7880         (find_cc_set): New.
7881         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
7882         look for a MODE_CC set instead.  Use emit_store_flag.
7883         (expand_compare_and_swap_loop): Likewise, with some additional
7884         complication to avoid a force_reg when useless.  Use
7885         emit_cmp_and_jump_insns.
7886         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
7887         * doc/md.texi (sync_compare_and_swap_cc): Merge with
7888         sync_compare_and_swap documentation.
7889
7890 2009-04-09  Jan Hubicka  <jh@suse.cz>
7891
7892         * except.c (find_prev_try): Break out from ....
7893         (duplicate_eh_regions): ... here; properly update prev_try pointers
7894         when duplication part of tree.
7895         (dump_eh_tree): Improve dumping.
7896         (verify_eh_region): New.
7897         (verify_eh_tree): Use it.
7898
7899 2009-04-06  Richard Guenther  <rguenther@suse.de>
7900
7901         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
7902         &ARRAY addresses by adjusting their types and prepending
7903         a conversion.
7904         * tree-cfg.c (verify_gimple_assign_single): Verify that
7905         addresses are correct.
7906
7907 2009-04-09  Richard Guenther  <rguenther@suse.de>
7908
7909         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
7910         indices into an array reference if possible.
7911         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
7912         Fold POINTER_PLUS_EXPR statements with invariant address.
7913
7914 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
7915
7916         PR target/39634
7917         * config.gcc (powerpc64-*-linux*): Always build biarch.
7918
7919 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
7920
7921         PR c/39613
7922         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
7923         it and pedwarn if this results in an INTEGER_CST.
7924
7925 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7926
7927         * doc/install.texi: Update minimum GMP version.  Remove obsolete
7928         text in MPFR section.
7929
7930 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
7931
7932         * dwarf2out.c (class_scope_p): New static inline.
7933         (class_or_namespace_scope_p): Use it.
7934         (gen_variable_die): Use DW_TAG_member tag for static data member
7935         declarations instead of DW_TAG_variable.
7936
7937         PR middle-end/39573
7938         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
7939         variables.
7940
7941 2009-04-08  Richard Guenther  <rguenther@suse.de>
7942
7943         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
7944         valueize random data.
7945
7946 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
7947
7948         * config.gcc (aix tm_file):  Add aix-stdint.h.
7949         (aix tm clause use_gcc_stdint):  Set to wrap.
7950         * config/rs6000/aix-stdint.h:  New file.
7951
7952 2009-04-08  Richard Guenther  <rguenther@suse.de>
7953
7954         PR middle-end/36291
7955         * tree-dfa.c (add_referenced_var): Do not recurse into
7956         global initializers.
7957         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
7958         exposed variables.
7959         (fold_const_aggregate_ref): Likewise.
7960
7961 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
7962
7963         * recog.c (ordered_comparison_operator): New.
7964         * gensupport.c (std_preds): Add it.
7965         * doc/md.texi (Machine-Independent Predicates): Document it.
7966
7967 2009-04-08  Jan Hubicka  <jh@suse.cz>
7968
7969         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
7970         * function.h (rtl_eh): Remove exception_handler_label_map.
7971         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
7972         remove_exception_handler_label, for_each_eh_label_1): Remove.
7973         (rtl_remove_unreachable_regions): Remove.
7974         (convert_from_eh_region_ranges): Do not remove unreachable regions.
7975         (find_exception_handler_labels): Don't build the hashtable.
7976         (maybe_remove_eh_handler): Remove.
7977         (for_each_eh_label): Rewrite to walk the tree.
7978         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
7979         * except.h (maybe_remove_eh_handler): Remove.
7980         * passes.c (init_optimization_passes): Schedule second EH cleanup
7981         before out-of-ssa.
7982         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
7983         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
7984
7985 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
7986
7987         * genoutput.c (validate_optab_operands): New.
7988         (gen_insn, gen_expand): Call it.
7989
7990         * genflags.c (gen_insn): Detect misused iterators.
7991         (main): Pass line_no to gen_insn, exit with status 1 on error.
7992
7993         * genextract.c (line_no): Make global.
7994         (VEC_safe_set_locstr): Change assertion to error message.
7995         (main): Exit with status 1 on error.
7996
7997 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
7998
7999         PR c/39614
8000         PR c/39673
8001         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
8002         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
8003         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
8004         * c-convert.c (convert): Do not call fold on results of conversion
8005         functions when the result is a C_MAYBE_CONST_EXPR.
8006         * c-parser.c (c_parser_postfix_expression): Do not fold condition
8007         of __builtin_choose_expr.
8008         * c-typeck.c (remove_c_maybe_const_expr): New.
8009         (build_unary_op, build_conditional_expr, build_compound_expr,
8010         build_binary_op, c_objc_common_truthvalue_conversion): Call
8011         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
8012         integer operands.
8013
8014 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
8015
8016         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
8017         CODE to produce a new one. Add a prototype to use fold_convert_const
8018
8019 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
8020
8021         PR bootstrap/39660
8022         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
8023         mix declarations and code.
8024
8025 2009-04-08  Ben Elliston  <bje@au.ibm.com>
8026
8027         * gcc.c: Replace `CC' with `GCC' throughout.
8028
8029 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8030
8031         * doc/invoke.texi: Document Atom support.
8032
8033 2009-04-07  Jason Merrill  <jason@redhat.com>
8034
8035         PR c++/25185
8036         * c-common.h, c-common.c: Add flag_pretty_templates.
8037         * c-opts.c (c_common_handle_option): Set it.
8038         * c.opt: Add -fno-pretty-templates.
8039         * doc/invoke.texi (C++ Dialect Options): Likewise.
8040
8041 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
8042
8043         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
8044         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
8045         (ia64_expand_builtin): Likewise.
8046
8047 2009-04-07  Martin Jambor  <mjambor@suse.cz>
8048
8049         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
8050         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
8051         ADDR_EXPRS are include too.
8052
8053 2009-04-07  Richard Guenther  <rguenther@suse.de>
8054
8055         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
8056         decls are only used if passes as parameters or if they are
8057         local statics and the call is not to a builtin.
8058         (call_may_clobber_ref_p_1): Likewise.
8059
8060 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8061
8062         * expr.c (do_store_flag): Remove last argument.  Simplify code
8063         to avoid duplication of tests already done by can_compare_p.
8064         (expand_expr_real_1): Adjust caller.
8065
8066 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8067
8068         * optabs.c (can_compare_p): Test the predicate of a
8069         cbranch and cstore pattern.
8070
8071 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8072
8073         * expr.c (convert_move): Use emit_store_flag instead of
8074         "emulating" it.
8075
8076 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8077
8078         * config/i386/i386.c (ix86_compare_emitted): Remove.
8079         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
8080         ix86_compare_op0 like ix86_compare_emitted used to be handled.
8081         * config/i386/i386.h (ix86_compare_emitted): Remove.
8082         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
8083         instead of ix86_compare_emitted.
8084         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
8085
8086 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
8087
8088         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
8089         Add t-sysroot-suffix to tmake_file.
8090         * config/print-sysroot-suffix.sh: New file.
8091         * config/t-sysroot-suffix: New file.
8092
8093 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8094
8095         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
8096         as the latter produces a warning when the target does not support
8097         infinity.
8098
8099 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8100
8101         * dfp.c: Replace type punning assignments with memcpy throughout.
8102         * Makefile.in (dfp.o-warn): Remove.
8103
8104 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
8105
8106         PR target/39634
8107         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
8108         Include soft-fp/t-softfp after rs6000/t-linux64.
8109
8110 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8111
8112         * stor-layout.c (set_sizetype): Use the full precision of their
8113         machine mode for bitsize types.
8114
8115 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
8116
8117         * config/i386/i386.md: Revert 2 accidental checkins.
8118
8119 2009-04-06  Joey Ye  <joey.ye@intel.com>
8120             Xuepeng Guo  <xuepeng.guo@intel.com>
8121             H.J. Lu  <hongjiu.lu@intel.com>
8122
8123         Atom pipeline model, tuning and insn selection.
8124         * config.gcc (atom): Add atom config options and target.
8125
8126         * config/i386/atom.md: New.
8127
8128         * config/i386/i386.c (atom_cost): New cost.
8129         (m_ATOM): New macro flag.
8130         (initial_ix86_tune_features): Set m_ATOM.
8131         (x86_accumulate_outgoing_args): Likewise.
8132         (x86_arch_always_fancy_math_387): Likewise.
8133         (processor_target): Add Atom cost.
8134         (cpu_names): Add Atom cpu name.
8135         (override_options): Set Atom ISA.
8136         (ix86_issue_rate): New case PROCESSOR_ATOM.
8137         (ix86_adjust_cost): Likewise.
8138
8139         * config/i386/i386.h (TARGET_ATOM): New target macro.
8140         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
8141         (TARGET_OPT_AGU): New target option.
8142         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
8143         (processor_type): Add PROCESSOR_ATOM.
8144
8145         * config/i386/i386.md (cpu): Add new value "atom".
8146         (use_carry, movu): New attr.
8147         (atom.md): Include atom.md.
8148         (adddi3_carry_rex64): Set attr "use_carry".
8149         (addqi3_carry): Likewise.
8150         (addhi3_carry): Likewise.
8151         (addsi3_carry): Likewise.
8152         (*addsi3_carry_zext): Likewise.
8153         (subdi3_carry_rex64): Likewise.
8154         (subqi3_carry): Likewise.
8155         (subhi3_carry): Likewise.
8156         (subsi3_carry): Likewise.
8157         (x86_movdicc_0_m1_rex64): Likewise.
8158         (*x86_movdicc_0_m1_se): Likewise.
8159         (x86_movsicc_0_m1): Likewise.
8160         (*x86_movsicc_0_m1_se): Likewise.
8161         (*adddi_1_rex64): Emit add insn as much as possible.
8162         (*addsi_1): Likewise.
8163         (return_internal): Set atom_unit.
8164         (return_internal_long): Likewise.
8165         (return_pop_internal): Likewise.
8166         (*rcpsf2_sse): Set atom_sse_attr attr.
8167         (*qrt<mode>2_sse): Likewise.
8168         (*prefetch_sse): Likewise.
8169
8170         * config/i386/i386-c.c (ix86_target_macros_internal): New case
8171         PROCESSOR_ATOM.
8172         (ix86_target_macros_internal): Likewise.
8173
8174         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
8175         (*prefetch_sse_rex): Likewise.
8176         (sse_rcpv4sf2): Likewise.
8177         (sse_vmrcpv4sf2): Likewise.
8178         (sse_sqrtv4sf2): Likewise.
8179         (<sse>_vmsqrt<mode>2): Likewise.
8180         (sse_ldmxcsr): Likewise.
8181         (sse_stmxcsr): Likewise.
8182         (*sse_sfence): Likewise.
8183         (sse2_clflush): Likewise.
8184         (*sse2_mfence): Likewise.
8185         (*sse2_lfence): Likewise.
8186         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
8187         (<sse>_movup<ssemodesuffixf2c>): Likewise.
8188         (avx_movdqu<avxmodesuffix>): Likewise.
8189         (avx_lddqu<avxmodesuffix>): Likewise.
8190         (sse2_movntv2di): Change attr "type" to "ssemov".
8191         (sse2_movntsi): Likewise.
8192         (rsqrtv8sf2): Change attr "type" to "sseadd".
8193         (sse3_addsubv2df3): Set attr "atom_unit".
8194         (sse3_h<plusminus_insn>v4sf3): Likewise.
8195         (*sse2_pmaddwd): Likewise.
8196         (*vec_extractv2di_1_rex64): Likewise.
8197         (*vec_extractv2di_1_avx): Likewise.
8198         (sse2_psadbw): Likewise.
8199         (ssse3_phaddwv8hi3): Likewise.
8200         (ssse3_phaddwv4hi3): Likewise.
8201         (ssse3_phadddv4si3): Likewise.
8202         (ssse3_phadddv2si3): Likewise.
8203         (ssse3_phaddswv8hi3): Likewise.
8204         (ssse3_phaddswv4hi3): Likewise.
8205         (ssse3_phsubwv8hi3): Likewise.
8206         (ssse3_phsubwv4hi3): Likewise.
8207         (ssse3_phsubdv4si3): Likewise.
8208         (ssse3_phsubdv2si3): Likewise.
8209         (ssse3_phsubswv8hi3): Likewise.
8210         (ssse3_phsubswv4hi3): Likewise.
8211         (ssse3_pmaddubsw128): Likewise.
8212         (sse3_pmaddubsw: Likewise.
8213         (ssse3_palignrti): Likewise.
8214         (ssse3_palignrdi): Likewise.
8215
8216 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
8217
8218         * doc/install.texi (Specific): Fix two cross-references to MinGW.
8219
8220 2009-04-06  Richard Guenther  <rguenther@suse.de>
8221
8222         PR tree-optimization/28868
8223         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
8224         of which PHI results we inserted.
8225         (insert_into_preds_of_block): Record inserted PHIs.
8226         (eliminate): Eliminate redundant PHI nodes.
8227         (init_pre): Init inserted_phi_names.
8228
8229 2009-04-06  Richard Guenther  <rguenther@suse.de>
8230
8231         PR tree-optimization/39643
8232         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
8233         IMAGPART_EXPRs of complex constants.
8234         (execute_fold_all_builtins): If we folded a call queue
8235         TODO_update_address_taken.
8236
8237 2009-04-06  Jan Hubicka  <jh@suse.cz>
8238
8239         PR middle-end/39659
8240         * except.c (remove_unreachable_regions): Propagate may_contain_throw
8241         flag.
8242
8243 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
8244
8245         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
8246         delay slot.
8247         (ic_invalidate_array): Likewise.
8248
8249 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
8250
8251         * calls.c (emit_library_call_value_1): Fix a problem with parameter
8252         alignment for library calls.
8253
8254 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
8255
8256         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
8257         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
8258         * config/i386/mingw-stdint.h:  New file.
8259
8260 2009-04-05  Richard Guenther  <rguenther@suse.de>
8261
8262         PR tree-optimization/39648
8263         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
8264         our &A vs. &A[0] IL deficiencies.
8265
8266 2009-04-04  Jan Hubicka  <jh@suse.cz>
8267
8268         * except.c (sjlj_find_directly_reachable_regions): Be ready for
8269         removed toplevel regions.
8270         (sjlj_mark_call_sites): Likewise.
8271
8272 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
8273
8274         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
8275         (cygwin tm clause use_gcc_stdint):  Set to wrap.
8276         * config/i386/cygwin-stdint.h:  New file.
8277
8278 2009-04-04  Richard Guenther  <rguenther@suse.de>
8279
8280         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
8281         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
8282         single-argument PHIs if we are in loop-closed SSA form.
8283         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
8284         for the pre-condition.
8285         (slpeel_tree_peel_loop_to_edge): Likewise.
8286         (vect_build_loop_niters): Take an optional sequence to append stmts.
8287         (vect_generate_tmps_on_preheader): Likewise.
8288         (vect_do_peeling_for_loop_bound): Take extra guards for the
8289         pre-condition.
8290         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
8291         the cost model check.
8292         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
8293         guards if we are going to peel.  Do not apply versioning in that case.
8294         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
8295         (vect_do_peeling_for_loop_bound): Likewise.
8296         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
8297         loop bound only record extra pre-conditions, do not apply loop
8298         versioning.
8299
8300 2009-04-04  Richard Guenther  <rguenther@suse.de>
8301
8302         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
8303         renaming code.
8304
8305 2009-04-04  Jan Hubicka  <jh@suse.cz>
8306
8307         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
8308         last_basic_block for size of bb->index indexed array.
8309         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
8310         compute_out, link_btr_uses, build_btr_def_use_webs,
8311         build_btr_def_use_webs, migrate_btr_defs): Likewise.
8312
8313 2009-04-04  Jan Hubicka  <jh@suse.cz>
8314
8315         * except.c (remove_eh_handler_and_replace): Break out from ...
8316         (remove_eh_handler): ... here.
8317         (bring_to_root): New function.
8318         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
8319         handled ones, bring others to root of tree.
8320
8321 2009-04-04  Jan Hubicka  <jh@suse.cz>
8322
8323         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
8324         (all_phis_safe_to_merge): New function.
8325         (update_info): New structure.
8326         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
8327         (cleanup_empty_eh): Update SSA if possible.
8328
8329 2009-04-04  Richard Guenther  <rguenther@suse.de>
8330
8331         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
8332         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
8333         (append_vuse): Likewise.
8334
8335 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
8336
8337         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
8338         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
8339         instead of REG_UNSAVED for DW_CFA_undefined.
8340         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
8341         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
8342         outermost frame.
8343
8344 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
8345
8346         PR target/39501
8347         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
8348         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
8349         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
8350
8351 2009-04-04  Richard Guenther  <rguenther@suse.de>
8352
8353         PR tree-optimization/8781
8354         PR tree-optimization/37892
8355         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
8356         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
8357         (valueize_refs): Call it for *& valueizations.
8358         (shared_reference_ops_from_ref): Rename to ...
8359         (valueize_shared_reference_ops_from_ref): ... this and valueize.
8360         (shared_reference_ops_from_call): Rename to ...
8361         (valueize_shared_reference_ops_from_call): ... this and valueize.
8362         (vn_reference_lookup): Update.
8363         (visit_reference_op_call): Likewise.
8364         * tree-ssa-pre.c (phi_translate_1): Fold *&.
8365         (eliminate): Value-replace the call address in call statements.
8366
8367 2009-04-04  Richard Guenther  <rguenther@suse.de>
8368
8369         PR tree-optimization/39636
8370         * tree-ssa-forwprop.c
8371         (forward_propagate_addr_into_variable_array_index): Check for
8372         GIMPLE_ASSIGN before accessing the rhs code.
8373
8374 2009-04-03  Jason Merrill  <jason@redhat.com>
8375
8376         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
8377
8378 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
8379
8380         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
8381         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
8382         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
8383         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
8384         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
8385         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
8386         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
8387         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
8388         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
8389         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
8390         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
8391         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
8392         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
8393         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
8394         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
8395         Use fr_reg_or_fp01_operand instead of fr_register_operand
8396
8397         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
8398         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
8399         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
8400
8401 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
8402
8403         PR rtl-optimization/39607
8404         PR rtl-optimization/39631
8405
8406         Revert:
8407
8408         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
8409         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
8410         instead of DF_LR_OUT.
8411         * ira-lives.c (process_bb_node_lives): Ditto.
8412         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
8413         instead of DF_LR_{OUT,IN}.
8414         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
8415         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
8416
8417 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
8418
8419         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
8420         (execute_lower_omp): Always run but take the short way out if -fopenmp
8421         is not given.
8422         (gate_lower_omp): Remove, forcing the pass manager to always run the
8423         pass and always set PROP_gimple_lomp.
8424         (pass_lower_omp): Remove gate function.
8425         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
8426         PROP_trees.  Instead, require it.
8427         * ipa-cp.c (pass_ipa_cp): Likewise.
8428         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
8429         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
8430         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
8431         and PROP_gimple_leh.
8432
8433 2009-04-03  Richard Guenther  <rguenther@suse.de>
8434
8435         PR middle-end/13146
8436         PR tree-optimization/23940
8437         PR tree-optimization/33237
8438         PR middle-end/33974
8439         PR middle-end/34093
8440         PR tree-optimization/36201
8441         PR tree-optimization/36230
8442         PR tree-optimization/38049
8443         PR tree-optimization/38207
8444         PR tree-optimization/38230
8445         PR tree-optimization/38301
8446         PR tree-optimization/38585
8447         PR middle-end/38895
8448         PR tree-optimization/38985
8449         PR tree-optimization/39299
8450         * tree-ssa-structalias.h: Remove.
8451         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
8452         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
8453         (struct vuse_element_d): Remove.
8454         (struct vuse_vec_d): Likewise.
8455         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
8456         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
8457         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
8458         VUSE_ELEMENT_VAR): Likewise.
8459         (struct voptype_d): Likewise.
8460         (NUM_VOP_FREE_BUCKETS): Likewise.
8461         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
8462         (struct stmt_operands_d): Remove.
8463         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
8464         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
8465         VDEF_NUM, VDEF_VECT): Likewise.
8466         (copy_virtual_operands): Remove.
8467         (operand_build_cmp): Likewise.
8468         (create_ssa_artificial_load_stmt): Likewise.
8469         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
8470         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
8471         vuse_index and mayuse_index members.  Pack and move done and iter_type
8472         members to the front.
8473         (SSA_OP_VMAYUSE): Remove.
8474         (SSA_OP_VIRTUAL_USES): Adjust.
8475         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
8476         (unlink_stmt_vdef): Declare.
8477         (add_to_addressable_set): Remove.
8478         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
8479         (vrp_visit_stmt): Likewise.
8480         * doc/tree-ssa.texi (Alias analysis): Update.
8481         * doc/invoke.texi (max-aliased-vops): Remove docs.
8482         (avg-aliased-vops): Likewise.
8483         * tree-into-ssa.c (syms_to_rename): Remove.
8484         (need_to_update_vops_p): Likewise.
8485         (need_to_initialize_update_ssa_p): Rename to ...
8486         (update_ssa_initialized_fn): ... this.  Track function we are
8487         initialized for.
8488         (symbol_marked_for_renaming): Simplify.
8489         (add_new_name_mapping): Do not set need_to_update_vops_p.
8490         (dump_currdefs): Use SYMS_TO_RENAME.
8491         (rewrite_update_stmt): Always walk all uses/defs.
8492         (dump_update_ssa): Adjust.
8493         (init_update_ssa): Take function argument.  Track what we are
8494         initialized for.
8495         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
8496         (create_new_def_for): Initialize for cfun, assert we are initialized
8497         for cfun.
8498         (mark_sym_for_renaming): Simplify.
8499         (mark_set_for_renaming): Do not initialize update-ssa.
8500         (need_ssa_update_p): Simplify.  Take function argument.
8501         (name_mappings_registered_p): Assert we ask for the correct function.
8502         (name_registered_for_update_p): Likewise.
8503         (ssa_names_to_replace): Likewise.
8504         (release_ssa_name_after_update_ssa): Likewise.
8505         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
8506         (dump_decl_set): Do not print a newline.
8507         (debug_decl_set): Do it here.
8508         (dump_update_ssa): And here.
8509         * tree-ssa-loop-im.c (move_computations): Adjust.
8510         (movement_possibility): Likewise.
8511         (determine_max_movement): Likewise.
8512         (gather_mem_refs_stmt): Likewise.
8513         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
8514         or NAME_MEMORY_TAG.
8515         * tree-complex.c (update_all_vops): Remove.
8516         (expand_complex_move): Adjust.
8517         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
8518         Simplify test for memory referencing statement.  Exclude
8519         non-invariant ADDR_EXPRs.
8520         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
8521         * tree-loop-distribution.c (generate_memset_zero): Adjust.
8522         (rdg_flag_uses): Likewise.
8523         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
8524         related code.
8525         (tree_optimize_tail_calls_1): Also split the
8526         edge from the entry block if we have degenerate PHI nodes in
8527         the first basic block.
8528         * tree.c (init_ttree): Remove memory-tag related code.
8529         (tree_code_size): Likewise.
8530         (tree_node_structure): Likewise.
8531         (build7_stat): Re-write to be build6_stat.
8532         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
8533         (SSA_VAR_P): Adjust.
8534         (struct tree_memory_tag): Remove.
8535         (struct tree_memory_partition_tag): Likewise.
8536         (union tree_node): Adjust.
8537         (build7): Re-write to be build6.
8538         * tree-pass.h (pass_reset_cc_flags): Remove.
8539         (TODO_update_address_taken): New flag.
8540         (pass_simple_dse): Remove.
8541         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
8542         * params.h (MAX_ALIASED_VOPS): Remove.
8543         (AVG_ALIASED_VOPS): Likewise.
8544         * omp-low.c (expand_omp_taskreg): Update SSA form.
8545         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
8546         aliases the lhs in a copy stmt.
8547         * tree-ssa-dse.c (struct address_walk_data): Remove.
8548         (memory_ssa_name_same): Likewise.
8549         (memory_address_same): Likewise.
8550         (get_kill_of_stmt_lhs): Likewise.
8551         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
8552         unused stores.  Look through PHI nodes into post-dominated regions.
8553         (dse_optimize_stmt): Simplify.  Properly remove stores.
8554         (tree_ssa_dse): Compute dominators.
8555         (execute_simple_dse): Remove.
8556         (pass_simple_dse): Likewise.
8557         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
8558         gimple_loaded_syms and gimple_stored_syms computation.
8559         * toplev.c (dump_memory_report): Dump alias and pta stats.
8560         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
8561         (vn_reference_eq): Likewise.
8562         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
8563         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
8564         valueize_vuses): Remove.
8565         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
8566         (get_def_ref_stmt_vuse): ... this.
8567         (vn_reference_lookup_2): New function.
8568         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
8569         walking equivalent vuses.  Simplify.
8570         (vn_reference_lookup): Likewise.
8571         (vn_reference_insert): Likewise.
8572         (vn_reference_insert_pieces): Likewise.
8573         (visit_reference_op_call): Simplify.
8574         (visit_reference_op_load): Likewise.
8575         (visit_reference_op_store): Likewise.
8576         (init_scc_vn): Remove shared_lookup_vuses initialization.
8577         (free_scc_vn): Remove shared_lookup_vuses freeing.
8578         (sort_vuses, sort_vuses_heap): Remove.
8579         (get_ref_from_reference_ops): Export.
8580         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
8581         vector with single vuse pointer.
8582         (vn_reference_lookup_pieces, vn_reference_lookup,
8583         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
8584         (shared_vuses_from_stmt): Remove.
8585         (get_ref_from_reference_ops): Declare.
8586         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
8587         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8588         memory-tag related code.
8589         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
8590         (likely_value): Add comment, skip static-chain of call statements.
8591         (surely_varying_stmt_p): Adjust.
8592         (gimplify_and_update_call_from_tree): Likewise.
8593         (execute_fold_all_builtins): Do not rebuild alias info.
8594         (gimplify_and_update_call_from_tree): Properly update VOPs.
8595         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
8596         (copy_ref_info): Remove memory-tag related code.
8597         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
8598         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
8599         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
8600         computation.
8601         * tree-ssa-dom.c (gimple_p): Remove typedef.
8602         (eliminate_redundant_computations): Adjust.
8603         (record_equivalences_from_stmt): Likewise.
8604         (avail_expr_hash): Likewise.
8605         (avail_expr_eq): Likewise.
8606         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
8607         (stmt_makes_single_load): Likewise.
8608         (stmt_makes_single_store): Likewise.
8609         * tree-ssa-alias.c: Rewrite completely.
8610         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
8611         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
8612         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
8613         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
8614         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
8615         Remove public functions.
8616         (pass_reset_cc_flags): Remove.
8617         (pass_build_alias): Move ...
8618         * tree-ssa-structalias.c (pass_build_alias): ... here.
8619         * tree-ssa-alias.c (may_be_aliased): Move ...
8620         * tree-flow-inline.h (may_be_aliased): ... here.
8621         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
8622         count_uses_and_derefs): Move ...
8623         * gimple.c: ... here.
8624         * gimple.h (count_uses_and_derefs): Declare.
8625         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
8626         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
8627         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
8628         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
8629         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
8630         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
8631         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
8632         New functions.
8633         * tree-dfa.c (refs_may_alias_p): Move ...
8634         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
8635         * tree-ssa-alias.h: New file.
8636         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
8637         (statement_sink_location): Likewise.
8638         * opts.c (decode_options): Do not adjust max-aliased-vops or
8639         avg-aliased-vops values.
8640         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
8641         (TV_CALL_CLOBBER): Likewise.
8642         (TV_FLOW_SENSITIVE): Likewise.
8643         (TV_FLOW_INSENSITIVE): Likewise.
8644         (TV_MEMORY_PARTITIONING): Likewise.
8645         (TV_ALIAS_STMT_WALK): New timevar.
8646         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
8647         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
8648         (get_address_description): Remove memory-tag related code.
8649         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
8650         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
8651         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
8652         and immediate uses in statements.  Document.
8653         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
8654         (dump_symbols): Remove.
8655         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
8656         * alias.c (get_deref_alias_set): New function split out from ...
8657         (get_alias_set): ... here.
8658         * alias.h (get_deref_alias_set): Declare.
8659         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
8660         type parameter.  Remove restrict pointer handling.  Create a
8661         ref-all pointer in case type-based alias sets do not conflict.
8662         (vect_analyze_data_refs): Remove SMT related code.
8663         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
8664         (vectorizable_load): Likewise.
8665         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
8666         (DR_SYMBOL_TAG, DR_VOPS): Remove.
8667         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
8668         Ignore vops and SMTs.
8669         (dr_analyze_alias): Likewise..
8670         (free_data_ref): Likewise.
8671         (create_data_ref): Likewise.
8672         (analyze_all_data_dependences): Likewise.
8673         (get_references_in_stmt): Adjust.
8674         * tree-flow-inline.h (gimple_aliases_computed_p,
8675         gimple_addressable_vars, gimple_call_clobbered_vars,
8676         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
8677         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
8678         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
8679         gimple_mem_ref_stats): Remove.
8680         (gimple_vop): New function.
8681         (op_iter_next_use): Remove vuses and mayuses cases.
8682         (op_iter_next_def): Remove vdefs case.
8683         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
8684         (clear_and_done_ssa_iter): Do not set removed fields.
8685         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
8686         Assert we are not iterating over vuses or vdefs if not also
8687         iterating over uses or defs.
8688         (op_iter_init_use): Likewise.
8689         (op_iter_init_def): Likewise.
8690         (op_iter_next_vdef): Remove.
8691         (op_iter_next_mustdef): Likewise.
8692         (op_iter_init_vdef): Likewise.
8693         (compare_ssa_operands_equal): Likewise.
8694         (link_use_stmts_after): Handle vuse operand.
8695         (is_call_used): Use is_call_clobbered.
8696         (is_call_clobbered): Global variables are always call clobbered,
8697         query the call-clobbers bitmap.
8698         (mark_call_clobbered): Ignore global variables.
8699         (clear_call_clobbered): Likewise.
8700         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
8701         virtual operands sanity check.
8702         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
8703         Remove.
8704         (TARGET_MEM_REF): Remove TMR_TAG operand.
8705         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
8706         Remove call-clobber related code.
8707         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
8708         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
8709         partitions or escape reason.
8710         (get_single_def_stmt, get_single_def_stmt_from_phi,
8711         get_single_def_stmt_with_phi): Remove.
8712         (dump_referenced_vars): Tidy.
8713         (get_ref_base_and_extent): Allow bare decls.
8714         (collect_dfa_stats): Adjust.
8715         * graphite.c (rename_variables_in_stmt): Adjust.
8716         (graphite_copy_stmts_from_block): Likewise.
8717         (translate_clast): Likewise.
8718         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
8719         (EXPR_DIES): New.
8720         (translate_vuse_through_block): Use the oracle.
8721         (phi_translate_1): Adjust.
8722         (value_dies_in_block_x): Use the oracle.  Cache the outcome
8723         in EXPR_DIES.
8724         (valid_in_sets): Check if the VUSE for
8725         a REFERENCE is available.
8726         (eliminate): Do not remove stmts during elimination,
8727         instead queue and remove them afterwards.
8728         (do_pre): Do not rebuild alias info.
8729         (pass_pre): Run TODO_rebuild_alias before PRE.
8730         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
8731         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
8732         (mark_all_v_defs_stmt): Remove.
8733         (mark_all_v_defs_seq): Adjust.
8734         (sra_replace): Likewise.
8735         (scalarize_use): Likewise.
8736         (scalarize_copy): Likewise.
8737         (scalarize_init): Likewise.
8738         (scalarize_ldst): Likewise.
8739         (todoflags): Remove.
8740         (tree_sra): Do not rebuild alias info.
8741         (tree_sra_early): Adjust.
8742         (pass_sra): Run TODO_update_address_taken before SRA.
8743         * tree-predcom.c (set_alias_info): Remove.
8744         (prepare_initializers_chain): Do not call it.
8745         (mark_virtual_ops_for_renaming): Adjust.
8746         (mark_virtual_ops_for_renaming_list): Remove.
8747         (initialize_root_vars): Adjust.
8748         (initialize_root_vars_lm): Likewise.
8749         (prepare_initializers_chain): Likewise.
8750         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
8751         (may_propagate_copy_into_stmt): Likewise.
8752         (merge_alias_info): Do nothing for now.
8753         (propagate_tree_value_into_stmt): Adjust.
8754         (stmt_may_generate_copy): Likewise.
8755         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
8756         not mark symbols for renaming.
8757         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
8758         with the same statement, make sure to update the new pointed-to one.
8759         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
8760         call statements, do not mark symbols for renaming.
8761         (mark_operand_necessary): Dump something.
8762         (ref_may_be_aliased): New function.
8763         (mark_aliased_reaching_defs_necessary_1): New helper function.
8764         (mark_aliased_reaching_defs_necessary): Likewise.
8765         (mark_all_reaching_defs_necessary_1): Likewise.
8766         (mark_all_reaching_defs_necessary): Likewise.
8767         (propagate_necessity): Do not process virtual PHIs.  For
8768         non-aliased loads mark all reaching definitions as necessary.
8769         For aliased loads and stores mark the immediate dominating
8770         aliased clobbers as necessary.
8771         (visited): New global static.
8772         (perform_tree_ssa_dce): Free visited bitmap after propagating
8773         necessity.
8774         (remove_dead_phis): Perform simple dead virtual PHI removal.
8775         (remove_dead_stmt): Properly unlink virtual operands when
8776         removing stores.
8777         (eliminate_unnecessary_stmts): Schedule PHI removal after
8778         stmt removal.
8779         * tree-ssa-ter.c (is_replaceable_p): Adjust.
8780         (process_replaceable): Likewise.
8781         (find_replaceable_in_bb): Likewise.
8782         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
8783         based on the single gimple vop.
8784         (verify_flow_insensitive_alias_info): Remove.
8785         (verify_flow_sensitive_alias_info): Likewise.
8786         (verify_call_clobbering): Likewise.
8787         (verify_memory_partitions): Likewise.
8788         (verify_alias_info): Likewise.
8789         (verify_ssa): Adjust..
8790         (execute_update_addresses_taken): Export.  Update SSA
8791         manually.  Optimize only when optimizing.  Use a local bitmap.
8792         (pass_update_address_taken): Remove TODO_update_ssa, add
8793         TODO_dump_func.
8794         (pass_update_address_taken): Just use TODO_update_address_taken.
8795         (init_tree_ssa): Do not initialize addressable_vars.
8796         (verify_ssa): Verify new VUSE / VDEF properties.
8797         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
8798         Do not call verify_alias_info.
8799         (delete_tree_ssa): Clear the VUSE, VDEF operands.
8800         Do not free the loaded and stored syms bitmaps.  Reset the escaped
8801         and callused solutions.  Do not free addressable_vars.
8802         Remove memory-tag related code.
8803         (warn_uninitialized_var): Aliases are always available.
8804         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
8805         * lambda-code.c (can_put_in_inner_loop): Adjust.
8806         (can_put_after_inner_loop): Likewise.
8807         (perfect_nestify): Likewise.
8808         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
8809         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
8810         (vectorizable_conversion): Do not mark symbols for renaming.
8811         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
8812         (expand_call_inline): Unlink the calls virtual operands before
8813         replacing it.
8814         (tree_function_versioning): Do not call update_ssa if we are not
8815         updating clones.  Simplify.
8816         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
8817         (propagate_with_phi): Likewise..
8818         * tree-outof-ssa.c (create_temp): Remove memory tag and call
8819         clobber code.  Assert we are not aliased or global.
8820         * tree-flow.h: Include tree-ssa-alias.h
8821         (enum escape_type): Remove.
8822         (struct mem_sym_stats_d): Likewise.
8823         (struct mem_ref_stats_d): Likewise.
8824         (struct gimple_df): Add vop member.  Remove global_var,
8825         call_clobbered_vars, call_used_vars, addressable_vars,
8826         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
8827         escaped and callused members.
8828         (struct ptr_info_def): Remove all members, add points-to solution
8829         member pt.
8830         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
8831         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
8832         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
8833         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
8834         (tree-ssa-alias.o): Likewise.
8835         (toplev.o): Add tree-ssa-alias.h
8836         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
8837         * gimple.c (gimple_set_bb): Fix off-by-one error.
8838         (is_gimple_reg): Do not handle memory tags.
8839         (gimple_copy): Also copy virtual operands.
8840         Delay updating the statement.  Do not reset loaded and stored syms.
8841         (gimple_set_stored_syms): Remove.
8842         (gimple_set_loaded_syms): Likewise.
8843         (gimple_call_copy_skip_args): Copy the virtual operands
8844         and mark the new statement modified.
8845         * tree-ssa-structalias.c (may_alias_p): Remove.
8846         (set_uids_in_ptset): Take the alias set to prune with as
8847         parameter.  Fold in the alias test of may_alias_p.
8848         (compute_points_to_sets): Compute whether a ptr is dereferenced
8849         in a local sbitmap.
8850         (process_constraint): Deal with &ANYTHING on the lhs, reject all
8851         other ADDRESSOF constraints on the lhs.
8852         (get_constraint_for_component_ref): Assert that we don't get
8853         ADDRESSOF constraints from the base of the reference.
8854         Properly generate UNKNOWN_OFFSET for DEREF if needed.
8855         (struct variable_info): Remove collapsed_to member.
8856         (get_varinfo_fc): Remove.
8857         (new_var_info): Do not set collapsed_to.
8858         (dump_constraint): Do not follow cycles.
8859         (dump_constraint_graph): Likewise.
8860         (build_pred_graph): Likewise.
8861         (build_succ_graph): Likewise.
8862         (rewrite_constraints): Likewise.
8863         (do_simple_structure_copy): Remove.
8864         (do_rhs_deref_structure_copy): Remove.
8865         (do_lhs_deref_structure_copy): Remove.
8866         (collapse_rest_of_var): Remove.
8867         (do_structure_copy): Re-implement.
8868         (pta_stats): New global variable.
8869         (dump_pta_stats): New function.
8870         (struct constraint_expr): Make offset signed.
8871         (UNKNOWN_OFFSET): Define special value.
8872         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
8873         (solution_set_expand): New helper function split out from ...
8874         (do_sd_constraint): ... here.
8875         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
8876         (do_ds_constraint): Likewise.
8877         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
8878         and CALLUSED = *CALLUSED.
8879         (set_union_with_increment): Make inc argument signed.
8880         (type_safe): Remove.
8881         (get_constraint_for_ptr_offset): Handle unknown and negative
8882         constant offsets.
8883         (first_vi_for_offset): Handle offsets before start.  Bail
8884         out early for offsets beyond the variable extent.
8885         (first_or_preceding_vi_for_offset): New function.
8886         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
8887         Together with ESCAPED = *ESCAPED this properly computes reachability.
8888         (find_what_var_points_to): New function.
8889         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
8890         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
8891         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
8892         pt_solutions_intersect): New functions.
8893         (compute_call_used_vars): Remove.
8894         (compute_may_aliases): New main entry into PTA computation.
8895         * gimple.h (gimple_p): New typedef.
8896         (struct gimple_statement_base): Remove references_memory_p.
8897         (struct gimple_statement_with_memory_ops_base): Remove
8898         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
8899         members.
8900         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
8901         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
8902         gimple_set_references_memory): Remove.
8903         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
8904         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
8905         New functions.
8906         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
8907         (verify_expr): Allow RESULT_DECL.
8908         (gimple_duplicate_bb): Do not copy virtual operands.
8909         (gimple_duplicate_sese_region): Adjust.
8910         (gimple_duplicate_sese_tail): Likewise.
8911         (mark_virtual_ops_in_region): Remove.
8912         (move_sese_region_to_fn): Do not call it.
8913         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
8914         and pass_simple_dse.
8915         (execute_function_todo): Handle TODO_update_address_taken,
8916         call execute_update_addresses_taken for TODO_rebuild_alias.
8917         (execute_todo): Adjust.
8918         (execute_one_pass): Init dump files early.
8919         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
8920         call-clobbered.
8921         (create_general_new_stmt): Clear vops.
8922         * tree-ssa-reassoc.c (get_rank): Adjust.
8923         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
8924         symbols for renaming.
8925         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
8926         (PARAM_AVG_ALIASED_VOPS): Likewise.
8927         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
8928         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
8929         * tree-ssa-operands.c: Simplify for new virtual operand representation.
8930         (operand_build_cmp, copy_virtual_operands,
8931         create_ssa_artificial_load_stmt, add_to_addressable_set,
8932         gimple_add_to_addresses_taken): Remove public functions.
8933         (unlink_stmt_vdef): New function.
8934
8935 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
8936
8937         * config.gcc (powerpc-*-linux*): Merge variants.
8938
8939 2009-04-02  Chao-ying Fu  <fu@mips.com>
8940             James Grosbach  <james.grosbach@microchip.com>
8941
8942         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
8943         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
8944         cop0_sp_offset.
8945         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
8946         keep_interrupts_masked_p, use_debug_exception_return_p.
8947         (mips_attribute_table): Add interrupt, use_shadow_register_set,
8948         keep_interrupts_masked, use_debug_exception_return.
8949         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
8950         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
8951         New functions.
8952         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
8953         (mips_print_operand): Process COP0 registers to print $0 .. $31
8954         correctly for GAS to process.
8955         (mips_interrupt_extra_call_saved_reg_p): New function.
8956         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
8957         extra registers.
8958         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
8959         (mips_compute_frame_info): Add supports for interrupt context that
8960         includes doubleword accumulators and COP0 registers.
8961         (mips_for_each_saved_acc): New function.
8962         (mips_for_each_saved_gpr_and_fpr): Change the function name from
8963         mips_for_each_saved_reg.
8964         (mips_save_reg): Save accumulators.
8965         (mips_kernel_reg_p): A new for_each_rtx callback.
8966         (mips_expand_prologue): Support interrupt handlers.
8967         (mips_restore_reg): Restore accumulators.
8968         (mips_expand_epilogue): Support interrupt handlers.
8969         (mips_can_use_return_insn): Return false for interrupt handlers.
8970         (mips_epilogue_uses): New function.
8971         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
8972         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
8973         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
8974         cop0_move): New instructions.
8975         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
8976         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
8977         defines.
8978         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
8979         New defines.
8980         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
8981         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
8982         interrupt handlers, we use K0 as the temporary register.
8983         (EPILOGUE_USES): Change to a function call.
8984         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
8985         handlers, we use K0 as the temporary register.
8986
8987         * doc/extend.texi (Function Attributes): Document interrupt,
8988         use_shadow_register_set, keep_interrupts_masked,
8989         use_debug_exception_return for MIPS attributes.
8990
8991 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
8992
8993         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
8994         Remove a number of t-files from tmake_file.
8995         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
8996         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
8997         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
8998         target_prototype, not TARGET_PROTOTYPE.
8999         (LINK_OS_GNU_SPEC): Define.
9000         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
9001         and darwin-ldoubdle.c.
9002
9003 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
9004
9005         PR driver/39293
9006         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
9007         (cpp_options): Ditto.
9008         (default_compilers): Ditto.
9009         (display_help): Ditto.
9010         (process_command): Ditto.
9011         (do_spec_1): Ditto.
9012         (set_input): Use lbasename instead of duplicate code.
9013         (save_temps_prefix): New static for -save-temps=obj.
9014         (save_temps_length): Ditto.
9015
9016         * doc/invoke.texi (-save-temps=obj): Document new variant to
9017         -save-temps switch.
9018
9019 2009-04-02  Jeff Law  <law@redhat.com>
9020
9021         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
9022         variable.
9023
9024 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9025
9026         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
9027         * configure: Regenerated.
9028
9029 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9030
9031         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
9032         share the argument list.
9033
9034 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9035
9036         Merge
9037
9038         2009-02-12  Diego Novillo  <dnovillo@google.com>
9039
9040         * varpool.c (debug_varpool): New.
9041         * cgraph.h (debug_varpool): Declare.
9042
9043 2009-04-02  Jan Hubicka  <jh@suse.cz>
9044
9045         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
9046         pass.
9047
9048 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9049
9050         * config/i386/i386.c (ix86_abi): Move initialization to ...
9051         (override_options): Here.
9052
9053 2009-04-02  Christian Bruel  <christian.bruel@st.com>
9054
9055         * config/sh/sh.c (sh_dwarf_register_span): New function.
9056         (TARGET_DWARF_REGISTER_SPAN): Define.
9057         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
9058
9059 2009-04-02  Ira Rosen  <irar@il.ibm.com>
9060
9061         PR tree-optimization/39595
9062         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
9063         interleaved loads group is not  greater than the SLP group size.
9064
9065 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9066
9067         * builtins.c (is_builtin_name): New.
9068         (called_as_built_in): Use is_builtin_name.
9069         * tree.h (is_builtin_name): New.
9070         * varasm.c (incorporeal_function_p): Use is_builtin_name
9071
9072 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
9073
9074         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
9075
9076 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
9077
9078         PR c++/26693
9079         * c-decl.c (clone_underlying_type): Move this ...
9080         * c-common.c (set_underlying_type): ... here.
9081         Also, make sure the function properly sets TYPE_STUB_DECL() on
9082         the newly created typedef variant type.
9083         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
9084         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
9085         points.
9086
9087 2009-04-02  Richard Guenther  <rguenther@suse.de>
9088
9089         PR tree-optimization/37221
9090         * tree-flow.h (degenerate_phi_result): Declare.
9091         * tree-ssa-dom.c (degenerate_phi_result): Export.
9092         * tree-scalar-evolution.c (analyze_initial_condition): If
9093         the initial condition is defined by a degenerate PHI node
9094         use the degenerate value.
9095
9096 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
9097
9098         PR rtl-optimization/39588
9099         * combine.c (merge_outer_ops): Do not set the constant when this
9100         is not necessary.
9101         (simplify_shift_const_1): Do not modify it either in this case.
9102
9103 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9104
9105         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
9106         tuning is deprecated if -mtune value is set to an Itanium1 variant.
9107
9108 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
9109
9110         PR c/29027
9111         * c-lex.c (interpret_float): Default (no suffix) is double.
9112
9113 2009-04-1  Xinliang David Li  <davidxl@google.com>
9114
9115         * config/i386/i386.c (legitimate_constant_p): Recognize
9116         all one vector constant.
9117
9118 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9119
9120         * config/vax/vax.c: Add #includes to silence warnings.
9121         Change #include order to silence two warnings.
9122
9123 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9124
9125         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
9126         (ASM_SPEC): Pass -k to the assembler for PIC code.
9127
9128 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9129
9130         * config.gcc: Add vax-*-linux* to the switch.
9131         * config/vax/linux.h: New file. (TARGET_VERSION,
9132         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
9133
9134 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9135
9136         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
9137         Use predicate macros instead of GET_CODE() == foo.
9138         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
9139         ashlsi3, rotrsi3, <unnamed>): Likewise.
9140
9141 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9142
9143         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
9144         jbbccihi, jbbccisi): Remova trailing whitespace.
9145         * config/vax/constraints.md: Likewise.
9146         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
9147         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
9148         * config/vax/predicates.md: Likewise.
9149         * config/vax/vax.c (print_operand_address, vax_output_int_move,
9150         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
9151         * config/vax/vax.h: Likewise.
9152         * config/vax/vax.md (nonlocal_goto): Likewise.
9153
9154 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9155
9156         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
9157         (indirectable_address_p, adjacent_operands_p): Add spaces around
9158         braces.
9159         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
9160
9161 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9162
9163         * config/vax/vax.c (legitimate_constant_address_p,
9164         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
9165         index_term_p, reg_plus_index_p, legitimate_address_p,
9166         vax_mode_dependent_address_p): Update comments to match functions
9167         modified by the recent int->bool conversion.
9168
9169 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9170
9171         * config/vax/builtins.md: Update copyright message.
9172         * config/vax/constraints.md: Likewise.
9173         * config/vax/netbsd-elf.h: Likewise.
9174         * config/vax/predicates.md: Likewise.
9175         * config/vax/vax-protos.h: Likewise.
9176         * config/vax/vax.c: Likewise.
9177         * config/vax/vax.h: Likewise.
9178         * config/vax/vax.md: Likewise.
9179         * config/vax/vax.opt: Likewise.
9180
9181 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9182
9183         * config/vax/builtins.md (ffssi2, ffssi2_internal,
9184         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
9185         * config/vax/constraints.md (B, R): Likewise.
9186         * config/vax/predicates.md (external_memory_operand,
9187         nonimmediate_addsub_di_operand): Likewise.
9188         * config/vax/vax.c (vax_output_int_add): Likewise.
9189         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
9190         untyped_call): Likewise.
9191
9192 2009-04-01  Matt Thomas  <matt@3am-software.com>
9193
9194         * config/vax/predicates.md: New file.
9195         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
9196         external_const_operand, nonsymbolic_operand, external_memory_operand,
9197         indirect_memory_operand, indexed_memory_operand,
9198         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
9199         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
9200         predicate.
9201         * config/vax/constraints.md: New file.
9202         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
9203         New constraint.
9204         * config/vax/builtins.md: New file.
9205         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
9206         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
9207         jbbccisi): Define.
9208         * config/vax/vax.opt (mqmath): Add option.
9209         * config/vax/vax.md (isfx): Extend with DI.
9210         (VAXintQH, VAXintQHSD): Define.
9211         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
9212         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
9213         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
9214         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
9215         (movdi): Update constraints and use vax_output_int_move().
9216         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
9217         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
9218         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
9219         nonlocal_goto): New.
9220         (mov<mode>): Extend accepted operand types.
9221         (subdi3_old): Rename from subdi3, change update constraints and use
9222         a new implementation.
9223         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
9224         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
9225         MOVE_RATIO, CLEAR_RATIO): Define.
9226         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
9227         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
9228         (PRINT_OPERAND): Redefine using a function instead of inlined code.
9229         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
9230         (split_quadword_operands): Make static and really allow variable
9231         splitting.
9232         (print_operand_address): Update for PIC generation.
9233         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
9234         indexable_address_p, fixup_mathdi_operand,
9235         vax_expand_addsub_di_operands, adjacent_operands_p): New.
9236         (vax_float_literal, legitimate_constant_p,
9237         indirectable_constant_address_p, index_term_p,
9238         reg_plus_index_p): Return bool instead of int.
9239         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
9240         where needed.
9241         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
9242         generation.
9243         (vax_output_conditional_branch): Indent.
9244         (legitimate_constant_address_p, indirectable_constant_address_p,
9245         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
9246         vax_mode_dependent_address_p): Return bool instead of int, update for
9247         PIC generation.
9248         * config/vax/vax-protos.h (legitimate_constant_address_p,
9249         legitimate_constant_p, legitimate_address_p,
9250         vax_mode_dependent_address_p): Change declaration to bool.
9251         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
9252         vax_expand_addsub_di_operands, vax_output_int_subtract,
9253         vax_output_movmemsi): Declare.
9254         (split_quadword_operands, vax_float_literal): Delete declaration.
9255         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
9256         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
9257         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
9258         ASM_OUTPUT_DWARF_PCREL): Define.
9259         (ASM_SPEC): Change definition to allow PIC generation.
9260
9261 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
9262
9263         * doc/sourcebuild.texi: Update front-end requirements.
9264
9265 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9266
9267         PR target/39226
9268         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
9269         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
9270         (booldi3_internal3): Use boolean_or_operator instead of
9271         boolean_operator.
9272
9273 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
9274
9275         PR c/39605
9276         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
9277         declarator whose size is not an integer constant expression but
9278         folds to an integer constant, then treat it as a constant
9279         subsequently.
9280
9281 2009-04-01  Richard Guenther  <rguenther@suse.de>
9282
9283         * fold-const.c (fold_plusminus_mult_expr): Do not fold
9284         i * 4 + 2 to (i * 2 + 1) * 2.
9285
9286 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9287
9288         PR c/37772
9289         * c-parser.c (c_parser_asm_statement): Skip until close paren and
9290         return if c_parser_asm_string_literal returned NULL.
9291
9292 2009-04-01  Nick Clifton  <nickc@redhat.com>
9293
9294         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
9295         already defined.
9296         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
9297         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
9298         other typedefs to avoid conflicts with libgcc2.c.  Define labels
9299         to gain 16-bit bit-manipulation functions from libgcc2.c and then
9300         include it.
9301         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
9302         to gain 16-bit trapping arithmetic functions from libgcc2.c and
9303         then include it.
9304
9305 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
9306
9307         * varasm.c (default_function_rodata_section): Declare DOT as
9308         const char*.
9309
9310 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
9311             Andrey Galkin  <agalkin@hypercom.com>
9312
9313         PR/39492
9314         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
9315         Make object_name unique for each process.
9316
9317 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9318
9319         PR other/39591
9320         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
9321         addressable variables in the parallel that could go out of scope while
9322         running queued tasks.
9323
9324 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
9325
9326         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
9327         (CASE_VALUES_THRESHOLD): Redefine.
9328         * config/avr/avr.c (avr_override_options): Remove initialization of
9329         avr_case_values_threshold variable.
9330         (avr_case_values_threshold): Remove variable. Add new function.
9331         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
9332         * config/avr/avr.opt (mno-tablejump): Remove option.
9333         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
9334
9335 2009-04-01  DJ Delorie  <dj@redhat.com>
9336
9337         * varasm.c (default_function_rodata_section): Don't assume
9338         anything about where the first '.' in the section name is.
9339
9340 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
9341
9342         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
9343         rs6000_emit_stack_tie.
9344
9345 2009-03-31  Ian Lance Taylor  <iant@google.com>
9346
9347         * tree-eh.c (tree_remove_unreachable_handlers): Compare
9348         gimple_code with GIMPLE_RESX, not RESX.
9349
9350 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9351
9352         * c-common.c (c_get_ident): New.
9353         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
9354
9355 2009-04-01  Ben Elliston  <bje@au.ibm.com>
9356
9357         * config/rs6000/sysv4.opt (msdata): Improve option description.
9358
9359 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
9360
9361         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
9362         (divdf3_internal_lat): Remove.
9363         (divxf3_internal_lat): Remove.
9364         (divxf3_internal_thr): Remove.
9365         (divxf): Use divxf3_internal.
9366         * config/ia64/div.md (divsf3_internal_lat): New.
9367         (divdf3_internal_lat): New.
9368         (divxf3_internal): New.
9369
9370 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9371
9372         PR c/448
9373         * Makefile.in (USE_GCC_STDINT): Define.
9374         (stmp-int-hdrs): Install stdint.h if applicable.
9375         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
9376         if known.
9377         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
9378         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
9379         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9380         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9381         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9382         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9383         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9384         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9385         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9386         (c_common_nodes_and_builtins): Initialize
9387         underlying_wchar_type_node.  Do not initialize
9388         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
9389         nodes for new types.
9390         (c_stddef_cpp_builtins): Define macros for new types.
9391         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
9392         Remove.
9393         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
9394         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
9395         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
9396         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
9397         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
9398         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
9399         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
9400         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
9401         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
9402         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
9403         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
9404         int16_type_node, int32_type_node, int64_type_node,
9405         uint8_type_node, uint16_type_node, c_uint32_type_node,
9406         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
9407         int_least32_type_node, int_least64_type_node,
9408         uint_least8_type_node, uint_least16_type_node,
9409         uint_least32_type_node, uint_least64_type_node,
9410         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
9411         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
9412         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
9413         uintptr_type_node): Define.
9414         * c-cppbuiltin.c (builtin_define_constants,
9415         builtin_define_type_minmax): New.
9416         (builtin_define_stdint_macros): Define more macros.
9417         (c_cpp_builtins): Define more limit macros.
9418         (type_suffix): New.
9419         (builtin_define_type_max): Define in terms of
9420         builtin_define_type_minmax.  Remove is_long parameter.  All
9421         callers changed.
9422         * config.gcc (use_gcc_stdint): Define.
9423         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
9424         Add newlib-stdint.h for generic targets.
9425         * config/glibc-stdint.h, config/newlib-stdint.h,
9426         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
9427         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
9428         * config/score/score.h (UINTPTR_TYPE): Define.
9429         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
9430         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
9431         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9432         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9433         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9434         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9435         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9436         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9437         * config/spu/spu.h (STDINT_LONG32): Define.
9438         * configure.ac (use_gcc_stdint): Substitute.
9439         * configure: Regenerate.
9440         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
9441         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
9442         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
9443         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
9444         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
9445         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
9446         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
9447         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
9448         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
9449         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
9450         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
9451         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
9452         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
9453         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
9454         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
9455         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
9456         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
9457         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
9458         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
9459         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
9460         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
9461         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
9462         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9463         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9464         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9465         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9466         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9467         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9468         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
9469
9470 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9471
9472         * loop-iv.c (suitable_set_for_replacement): Renamed from
9473         simplify_using_assignment; changed to return bool and to accept new
9474         args DEST and SRC.  Return true iff we find a source/destination pair
9475         that can be used to make a replacement, and fill SRC and DEST if so.
9476         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
9477         changed.
9478         (simplify_using_initial_values): Deal with altered regs here and track
9479         more precisely the effect they have on the validity of our expression.
9480
9481         * loop-iv.c (simplify_using_condition): A condition of the form
9482         (EQ REG CONST) can be used to simply make a substitution.
9483         (simplify_using_initial_values): Keep track of conditions we have seen
9484         and keep using them to simplify new expressions, while applying the
9485         same substitutions to them as to the expression.
9486
9487         * simplify-rtx.c (simplify_relational_operation_1): Simplify
9488         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
9489         GEU/LTU reversed.
9490
9491         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
9492         changed.  Use this when trying to improve the upper bound.
9493         Generate the comparison by using simplify_gen_relational.
9494
9495         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
9496
9497         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
9498         functions.
9499         (simplify_using_assignment, simplify_using_initial_values): Call
9500         replace_in_expr to make replacements.  Call replace_single_def_regs
9501         once on the initial version of the expression.
9502
9503 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9504
9505         PR target/27237
9506         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
9507
9508 2009-03-31  Richard Guenther  <rguenther@suse.de>
9509
9510         PR middle-end/31029
9511         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
9512         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
9513
9514 2009-03-31  Richard Guenther  <rguenther@suse.de>
9515
9516         * tree.h (div_if_zero_remainder): Declare.
9517         * fold-const.c (div_if_zero_remainder): Export.
9518         * tree-ssa-forwprop.c
9519         (forward_propagate_addr_into_variable_array_index): Handle
9520         constant array index addition outside of the variable index.
9521
9522 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9523
9524         PR target/39592
9525         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
9526         define_splits, floatunssi<mode>2): Require x87 conversions from
9527         DImode to be permitted.
9528
9529 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9530
9531         PR preprocessor/15638
9532         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
9533
9534 2009-03-31  Richard Guenther  <rguenther@suse.de>
9535
9536         PR middle-end/23401
9537         PR middle-end/27810
9538         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
9539         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
9540         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
9541         a separate statement.
9542         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
9543         (lookup_tmp_var): Likewise.
9544         (is_gimple_formal_tmp_or_call_rhs): Remove.
9545         (is_gimple_reg_or_call_rhs): Rename to ...
9546         (is_gimple_reg_rhs_or_call): ... this.
9547         (is_gimple_mem_or_call_rhs): Rename to ...
9548         (is_gimple_mem_rhs_or_call): ... this.
9549         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
9550         DECL_GIMPLE_REG_P only if is_formal is true.
9551         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
9552         for non-proper post-modify expression gimplification.
9553         (gimplify_self_mod_expr): For post-modify expressions gimplify
9554         the lvalue to a minimal lvalue.
9555         (rhs_predicate_for): Remove formal temp case.
9556         (gimplify_modify_expr_rhs): Likewise.
9557         (gimplify_addr_expr): Use is_gimple_reg.
9558         (gimplify_expr): Remove formal temp cases.
9559         (gimple_regimplify_operands): Likewise.
9560         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
9561         and FILTER_EXPR like constants.
9562         * gimple.c (walk_gimple_op): Fix val_only initialization, use
9563         is_gimple_reg.
9564         (is_gimple_formal_tmp_rhs): Remove.
9565         (is_gimple_reg_rhs): Remove special casing.
9566         (is_gimple_mem_rhs): Fix.
9567         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
9568         (is_gimple_formal_tmp_var): Remove.
9569         (is_gimple_formal_tmp_reg): Likewise.
9570         (is_gimple_min_lval): Allow invariant component ref parts.
9571         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
9572         is_gimple_formal_tmp_reg): Remove declarations.
9573         * tree-cfg.c (verify_expr): Verify that variables with address
9574         taken do not have DECL_GIMPLE_REG_P set.
9575         * tree-mudflap.c (mf_build_check_statement_for): Use
9576         force_gimple_operand instead of gimplify_expr.
9577
9578 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
9579
9580         * modulo-sched.c (sms_schedule_by_order): Pass the actual
9581         schedulable rows to compute_split_row.
9582
9583 2009-03-31  Ben Elliston  <bje@au.ibm.com>
9584
9585         PR target/31635
9586         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
9587         OPT_mvrsave.
9588
9589 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9590
9591         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
9592         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
9593         * configure: Regenerate.
9594         * config.in: Regenerate.
9595         * config/rs6000/rs6000.opt (mtls-markers): Add.
9596         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
9597         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
9598         (tls_ld_aix, tls_ld_sysv): Likewise.
9599         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
9600         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
9601
9602 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9603
9604         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
9605
9606 2009-03-30  Jan Hubicka  <jh@suse.cz>
9607
9608         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
9609         out of RESX.
9610         (tree_remove_unreachable_handlers): Cleanup EH predecestor
9611         detection and label handling.
9612
9613 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9614
9615         * ira-int.h (ira_allocno): Rename left_conflicts_num to
9616         left_conflicts_size.
9617         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
9618         ALLOCNO_LEFT_CONFLICTS_SIZE.
9619
9620         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
9621         remove_allocno_from_bucket_and_push,
9622         allocno_spill_priority_compare, push_allocnos_to_stack,
9623         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9624         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
9625         (setup_allocno_left_conflicts_num): Ditto.  Rename to
9626         setup_allocno_left_conflicts_size.
9627         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9628         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
9629         setup_allocno_left_conflicts_size instead of
9630         setup_allocno_left_conflicts_num.
9631
9632         * ira-build.c (ira_create_allocno): Use
9633         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
9634         ALLOCNO_LEFT_CONFLICTS_NUM.
9635
9636 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9637
9638         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
9639         instead of DF_LR_OUT.
9640
9641         * ira-lives.c (process_bb_node_lives): Ditto.
9642
9643         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
9644         instead of DF_LR_{OUT,IN}.
9645
9646         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
9647
9648         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
9649
9650 2009-03-30  Jan Hubicka  <jh@suse.cz>
9651
9652         * except.c (label_to_region_map): Fix thinko.
9653
9654 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
9655
9656         PR middle-end/38237
9657         * tree.h (tree_find_value): New declaration.
9658         * tree.c (tree_find_value): New function.
9659         * varasm.c (assemble_external): Avoid duplicate entries on lists.
9660
9661 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
9662
9663         PR debug/39563
9664         * c-decl.c (struct c_binding): Add locus field.
9665         (bind): Add locus argument, set locus field from it.
9666         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
9667         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
9668         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
9669         implicitly_declare, undeclared_variable, lookup_label,
9670         declare_label, c_make_fname_decl, c_builtin_function,
9671         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
9672         bind callers.
9673
9674 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
9675
9676         PR target/38781
9677         * config/i386/i386.c (classify_argument): Check total size of
9678         structure.
9679
9680 2009-03-30  Martin Jambor  <mjambor@suse.cz>
9681
9682         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
9683         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
9684         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
9685         respectively.
9686
9687         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
9688         seen_variable_array_ref while also traversing a union.
9689
9690         * tree-inline.c (optimize_inline_calls): Do not call
9691         cgraph_node_remove_callees.
9692         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
9693         (pass_remove_cgraph_callee_edges): New variable.
9694         * passes.c (init_optimization_passes): Add
9695         pass_remove_cgraph_callee_edges after early inlining and before all
9696         late intraprocedural passes.
9697
9698         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
9699
9700 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9701
9702         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
9703         Fix typos in names.
9704
9705 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9706
9707         * combine.c (simplify_comparison): Use have_insn_for.
9708         * dojump.c (do_jump): Likewise.
9709
9710 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9711
9712         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
9713         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
9714         sparc_compare_op0 like sparc_compare_emitted used to be handled.
9715         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
9716         instead of sparc_compare_emitted.
9717         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
9718         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
9719         instead of sparc_compare_emitted.
9720
9721 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9722
9723         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
9724         enter/exit cfglayout mode.
9725         (pass_partition_block): Require it.
9726         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
9727         (combine_instructions): Track basic blocks instead of labels.
9728         (update_cfg_for_uncondjump): New.
9729         (try_combine): Use it.  Update jumps after rescanning.
9730         (pass_combine): Require PROP_cfglayout.
9731         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
9732
9733 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9734
9735         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
9736         Provide/destroy PROP_cfglayout respectively.
9737         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
9738         * tree-pass.h (PROP_cfglayout): New.
9739
9740 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9741
9742         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
9743         fold_convert_const_fixed_from_fixed,
9744         fold_convert_const_fixed_from_int,
9745         fold_convert_const_fixed_from_real, fold_negate_const): Do not
9746         set TREE_CONSTANT_OVERFLOW.
9747         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
9748         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
9749
9750 2009-03-30  Ira Rosen  <irar@il.ibm.com>
9751
9752         * tree-vect-loop-manip.c: New file.
9753         * tree-vectorizer.c: Update documentation and included files.
9754         (vect_loop_location): Make extern.
9755         (rename_use_op): Move to tree-vect-loop-manip.c
9756         (rename_variables_in_bb, rename_variables_in_loop,
9757         slpeel_update_phis_for_duplicate_loop,
9758         slpeel_update_phi_nodes_for_guard1,
9759         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
9760         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
9761         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
9762         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
9763         find_loop_location): Likewise.
9764         (new_stmt_vec_info): Move to tree-vect-stmts.c.
9765         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
9766         get_vectype_for_scalar_type, vect_is_simple_use,
9767         supportable_widening_operation, supportable_narrowing_operation):
9768         Likewise.
9769         (bb_in_loop_p): Move to tree-vect-loop.c.
9770         (new_loop_vec_info, destroy_loop_vec_info,
9771         reduction_code_for_scalar_code, report_vect_op,
9772         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
9773         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
9774         (vect_supportable_dr_alignment): Likewise.
9775         * tree-vectorizer.h (tree-data-ref.h): Include.
9776         (vect_loop_location): Declare.
9777         Reorganize function declarations according to the new file structure.
9778         * tree-vect-loop.c: New file.
9779         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
9780         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
9781         * tree-vect-data-refs.c: New file.
9782         * tree-vect-patterns.c (timevar.h): Don't include.
9783         * tree-vect-stmts.c: New file.
9784         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
9785         tree-vect-slp.c, tree-vect-loop.c.
9786         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
9787         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
9788         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
9789         (tree-vect-analyze.o): Remove.
9790         (tree-vect-transform.o): Likewise.
9791         (tree-vect-data-refs.o): Add rule.
9792         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
9793         tree-vect-slp.o): Likewise.
9794         (tree-vect-patterns.o): Remove redundant dependencies.
9795         (tree-vectorizer.o): Likewise.
9796         * tree-vect-slp.c: New file.
9797
9798 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9799
9800         * optc-gen.awk: Warn if an option flag has multiple different
9801         help strings.
9802
9803 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
9804
9805         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
9806         -floop-block): Document dependences on PPL, CLooG and Graphite.
9807
9808 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
9809
9810         PR rtl-optimization/323
9811         * c-common.c (c_fully_fold, convert_and_check,
9812         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
9813         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
9814         * c-common.def (EXCESS_PRECISION_EXPR): New.
9815         * c-cppbuiltin.c (builtin_define_float_constants): Define
9816         constants with enough digits for long double.
9817         * c-lex.c (interpret_float): Interpret constant with excess
9818         precision where appropriate.
9819         * c-opts.c (c_common_post_options): Set
9820         flag_excess_precision_cmdline.  Give an error for
9821         -fexcess-precision=standard for C++ for processors where the
9822         option is significant.
9823         * c-parser.c (c_parser_conditional_expression): Handle excess
9824         precision in condition.
9825         * c-typeck.c (convert_arguments): Handle arguments with excess
9826         precision.
9827         (build_unary_op): Move excess precision outside operation.
9828         (build_conditional_expr): Likewise.
9829         (build_compound_expr): Likewise.
9830         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
9831         (build_modify_expr): Handle excess precision in RHS.
9832         (convert_for_assignment): Handle excess precision in converted
9833         value.
9834         (digest_init, output_init_element, process_init_element): Handle
9835         excess precision in initializer.
9836         (c_finish_return): Handle excess precision in return value.
9837         (build_binary_op): Handle excess precision in operands and add
9838         excess precision as needed for operation.
9839         * common.opt (-fexcess-precision=): New option.
9840         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
9841         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
9842         For standard excess precision, output explicit conversion to and
9843         truncation from XFmode.
9844         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
9845         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
9846         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
9847         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
9848         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
9849         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
9850         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
9851         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
9852         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
9853         define_splits, sqrt<mode>2): Disable where appropriate for
9854         standard excess precision.
9855         * convert.c (convert_to_real): Do not shorten arithmetic to type
9856         for which excess precision would be used.
9857         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
9858         * doc/invoke.texi (-fexcess-precision=): Document option.
9859         (-mfpmath=): Correct index entry.
9860         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
9861         flag_excess_precision): New.
9862         * langhooks.c (lhd_post_options): Set
9863         flag_excess_precision_cmdline.
9864         * opts.c (common_handle_option): Handle -fexcess-precision=.
9865         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
9866         init_excess_precision): New.
9867         (lang_dependent_init_target): Call init_excess_precision.
9868         * tree.c (excess_precision_type): New.
9869         * tree.h (excess_precision_type): Declare.
9870
9871 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
9872
9873         PR c/35235
9874         * c-typeck.c (build_component_ref): Do not copy qualifiers from
9875         non-lvalue to component.
9876
9877 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
9878
9879         PR preprocessor/34695
9880         * Makefile.in (c-opts.o): Depend on c-tree.h.
9881         * c-common.c: Move down include of diagnostic.h.
9882         (done_lexing, c_cpp_error): New.
9883         * c-common.h (done_lexing): Declare.
9884         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
9885         (parse_in).
9886         * c-opts.c: Include c-tree.h.
9887         (c_common_init_options): Set preprocessor error callback.
9888         (c_common_handle_option): Do not set preprocessor
9889         inhibit_warnings, warnings_are_errors, warn_system_headers,
9890         pedantic_errors or inhibit_warnings flags.
9891         (c_common_post_options): Do not check cpp_errors (parse_in).
9892         (c_common_finish): Do not output dependencies if there were
9893         errors.  Do not check return value of cpp_finish.
9894         * c-ppoutput.c (pp_file_change): Set input_location.
9895         * c-tree.h (c_cpp_error): Declare.
9896         * diagnostic.c (diagnostic_set_info_translated): Also initialize
9897         override_column.
9898         (diagnostic_build_prefix): Check override_column.
9899         * diagnostic.h (diagnostic_info): Add override_column field.
9900         (diagnostic_override_column): Define.
9901
9902 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
9903
9904         * c-common.c (c_expand_expr, c_staticp): Remove.
9905         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
9906         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
9907         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
9908         * c-gimplify.c (gimplify_compound_literal_expr,
9909         optimize_compound_literals_in_ctor): Remove.
9910         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
9911         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
9912         * c-semantics.c (emit_local_var): Remove.
9913
9914         * langhooks-def.h (lhd_expand_expr): Remove.
9915         * langhooks.c (lhd_expand_expr): Remove.
9916         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
9917
9918         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
9919         handling from c-semantics.c; don't call into langhook.
9920         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
9921         * gimplify.c (gimplify_compound_literal_expr,
9922         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
9923         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
9924         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
9925         as was done in c-gimplify.c.
9926         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
9927         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
9928         Move from c-common.h.
9929         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
9930
9931         * tree.c (staticp): Do not call langhook.
9932         * langhooks.c (lhd_staticp): Delete.
9933         * langhooks-def.h (lhd_staticp): Delete prototype.
9934         (LANG_HOOKS_STATICP): Delete.
9935         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
9936
9937         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
9938         instead of DECL_STMTs.
9939
9940 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
9941
9942         PR c/456
9943         PR c/5675
9944         PR c/19976
9945         PR c/29116
9946         PR c/31871
9947         PR c/35198
9948         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
9949         void_type_node.
9950         (fold_call_expr): Return a NOP_EXPR from folding rather than the
9951         contained expression.
9952         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
9953         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
9954         conditional expressions for C.
9955         (decl_constant_value_for_optimization): Move from
9956         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
9957         whether optimizing and that the expression is a VAR_DECL not of
9958         array type instead of doing such checks in the caller.  Do not
9959         check pedantic.  Call gcc_unreachable for C++.
9960         * c-common.def (C_MAYBE_CONST_EXPR): New.
9961         * c-common.h (c_fully_fold, c_save_expr,
9962         decl_constant_value_for_optimization): New prototypes.
9963         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
9964         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
9965         EXPR_INT_CONST_OPERANDS): Define.
9966         * c-convert.c (convert): Strip nops from expression.
9967         * c-decl.c (groktypename): Take extra parameters expr and
9968         expr_const_operands.  Update call to grokdeclarator.
9969         (start_decl): Update call to grokdeclarator.  Add statement for
9970         expressions used in type of decl.
9971         (grokparm): Update call to grokdeclarator.
9972         (push_parm_decl): Update call to grokdeclarator.
9973         (build_compound_literal): Add parameter non_const and build a
9974         C_MAYBE_COSNT_EXPR if applicable.
9975         (grokdeclarator): Take extra parameters expr and
9976         expr_const_operands.  Track expressions used in declaration
9977         specifiers and declarators.  Fold array sizes and track whether
9978         they are constant expressions and whether they are integer
9979         constant expressions.
9980         (parser_xref_tag): Set expr and expr_const_operands fields in
9981         return value.
9982         (grokfield): Update call to grokdeclarator.
9983         (start_function): Update call to grokdeclarator.
9984         (build_null_declspecs): Set expr and expr_const_operands fields in
9985         return value.
9986         (declspecs_add_type): Handle expressions in typeof specifiers.
9987         * c-parser.c (c_parser_declspecs): Set expr and
9988         expr_const_operands fields for declaration specifiers.
9989         (c_parser_enum_specifier): Likewise.
9990         (c_parser_struct_or_union_specifier): Likewise.
9991         (c_parser_typeof_specifier): Likewise.  Update call to
9992         groktypename.  Fold expression as needed.  Return expressions with
9993         type instead of adding statements.
9994         (c_parser_attributes): Update calls to c_parser_expr_list.
9995         (c_parser_statement_after_labels): Fold expression before passing
9996         to objc_build_throw_stmt.
9997         (c_parser_condition): Fold expression.
9998         (c_parser_asm_operands): Fold expression.
9999         (c_parser_conditional_expression): Use c_save_expr.  Update call
10000         to build_conditional_expr.
10001         (c_parser_alignof_expression): Update call to groktypename.
10002         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
10003         original_code.  Fold expression argument of va_arg.  Create
10004         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
10005         argument to va_arg.  Update calls to groktypename.  Fold array
10006         index for offsetof.  Verify that first argument to
10007         __builtin_choose_expr has integer type.
10008         (c_parser_postfix_expression_after_paren_type): Update calls to
10009         groktypename and build_compound_literal.  Handle expressions with
10010         side effects in type name.
10011         (c_parser_postfix_expression_after_primary): Update call to
10012         c_parser_expr_list.  Set original_code for calls to
10013         __builtin_constant_p.
10014         (c_parser_expr_list): Take extra parameter fold_p.  Fold
10015         expressions if requested.
10016         (c_parser_objc_type_name): Update call to groktypename.
10017         (c_parser_objc_synchronized_statement): Fold expression.
10018         (c_parser_objc_receiver): Fold expression.
10019         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
10020         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
10021         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
10022         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
10023         (struct c_typespec): Add elements expr and expr_const_operands.
10024         (struct c_declspecs): Add elements expr and expr_const_operands.
10025         (groktypename, build_conditional_expr, build_compound_literal):
10026         Update prototypes.
10027         (in_late_binary_op): Declare.
10028         * c-typeck.c (note_integer_operands): New function.
10029         (in_late_binary_op): New variable.
10030         (decl_constant_value_for_broken_optimization): Move to c-common.c
10031         and rename to decl_constant_value_for_optimization.
10032         (default_function_array_conversion): Do not strip nops.
10033         (default_conversion): Do not call
10034         decl_constant_value_for_broken_optimization.
10035         (build_array_ref): Do not fold result.
10036         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
10037         result when operand is a VLA.
10038         (c_expr_sizeof_type): Update call to groktypename.  Handle
10039         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
10040         result when operand names a VLA type.
10041         (build_function_call): Update call to build_compound_literal.
10042         Only fold result for calls to __builtin_* functions.  Strip
10043         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
10044         the function designator.
10045         (convert_arguments): Fold arguments.  Update call to
10046         convert_for_assignment.
10047         (build_unary_op): Handle increment and decrement of
10048         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
10049         decrement earlier.  Fold operand of increment and decrement.
10050         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
10051         built for integer operand.  Wrap returns that are INTEGER_CSTs
10052         without being integer constant expressions or that have integer
10053         constant operands without being INTEGER_CSTs.
10054         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
10055         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
10056         result is an integer constant expression or can be used in
10057         unevaluated parts of one and avoid folding and wrap as
10058         appropriate.  Fold operands before possibly doing -Wsign-compare
10059         warnings.
10060         (build_compound_expr): Wrap result for C99 if operands can be used
10061         in integer constant expressions.
10062         (build_c_cast): Update call to digest_init.  Do not ignore
10063         overflow from casting floating-point constants to integers.  Wrap
10064         results that could be confused with integer constant expressions,
10065         null pointer constants or floating-point constants.
10066         (c_cast_expr): Update call to groktypename.  Handle expressions
10067         included in type name.
10068         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
10069         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
10070         Update calls to convert_for_assignment.
10071         (convert_for_assignment): Take new parameter
10072         null_pointer_constant.  Do not strip nops or call
10073         decl_constant_value_for_broken_optimization.  Set
10074         in_late_binary_op for conversions to boolean.
10075         (store_init_value): Update call to digest_init.
10076         (digest_init): Take new parameter null_pointer_constant.  Do not
10077         call decl_constant_value_for_broken_optimization.  pedwarn for
10078         initializers not constant expressions.  Update calls to
10079         convert_for_assignment.
10080         (constructor_nonconst): New.
10081         (struct constructor_stack): Add nonconst element.
10082         (really_start_incremental_init, push_init_level, pop_init_level):
10083         Handle constructor_nonconst and nonconst element.
10084         (set_init_index): Call constant_expression_warning for array
10085         designators.
10086         (output_init_element): Fold value.  Set constructor_nonconst as
10087         applicable.  pedwarn for initializers not constant expressions.
10088         Update call to digest_init.  Call constant_expression_warning
10089         where constant initializers are required.
10090         (process_init_element): Use c_save_expr.
10091         (c_finish_goto_ptr): Fold expression.
10092         (c_finish_return): Fold return value.  Update call to
10093         convert_for_assignment.
10094         (c_start_case): Fold switch expression.
10095         (c_process_expr_stmt): Fold expression.
10096         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
10097         ensure statement expression is not evaluated in constant expression.
10098         (build_binary_op): Track whether results are integer constant
10099         expressions or may occur in such, disable folding and wrap results
10100         as applicable.  Fold operands for -Wsign-compare warnings unless
10101         in_late_binary_op.
10102         (c_objc_common_truthvalue_conversion): Handle results folded to
10103         integer constants that are not integer constant expressions.
10104         * doc/extend.texi: Document when typeof operands are evaluated,
10105         that condition of __builtin_choose_expr is an integer constant
10106         expression, and more about use of __builtin_constant_p in
10107         initializers.
10108
10109 2009-03-29  Richard Guenther  <rguenther@suse.de>
10110
10111         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
10112         propagate addresses of array references.
10113
10114 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
10115
10116         * regmove.c (perhaps_ends_bb_p): Remove.
10117         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
10118         from INSN and check that the main loop stays within that basic block.
10119         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
10120         (regmove_forward_pass): Split out from regmove_optimize.  Use
10121         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
10122         (regmove_backward_pass): Split out from regmove_optimize.  Use
10123         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
10124         (regmove_optimize): Simplify.
10125
10126 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10127
10128         PR target/39545
10129         * config/i386/i386.c (classify_argument): Ignore flexible array
10130         member in struct and warn ABI change.
10131
10132 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10133
10134         * config/i386/i386-protos.h (ix86_agi_dependent): New.
10135
10136         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
10137         (ix86_adjust_cost): Updated.
10138
10139 2009-03-29  Jan Hubicka  <jh@suse.cz>
10140
10141         PR middle-end/28850
10142         * tree-pass.h (pass_cleanup_eh): New function.
10143         (remove_unreachable_regions): Break code handling RTL
10144         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
10145         that can not be reached by runtime.
10146         (can_be_reached_by_runtime): New function.
10147         (label_to_region_map): New function.
10148         (num_eh_regions): New function.
10149         (rtl_remove_unreachable_regions): New function.
10150         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
10151         (remove_eh_region): New function.
10152         * except.h: Include sbitmap and vecprim.
10153         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
10154         num_eh_regions): Declare.
10155         * passes.c (init_optimization_passes): Schedule cleanup_eh.
10156         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
10157         * tree-eh.c (tree_remove_unreachable_handlers): New function.
10158         (tree_empty_eh_handler_p): New function.
10159         (cleanup_empty_eh): New function.
10160         (cleanup_eh): New function.
10161         (pass_cleanup_eh): New function.
10162
10163 2009-03-29  Jan Hubicka  <jh@suse.cz>
10164
10165         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
10166         for removed regions.
10167
10168 2009-03-29  Jan Hubicka  <jh@suse.cz>
10169
10170         * except.c (dump_eh_tree): Dump all datastructures.
10171
10172 2009-03-29  Jan Hubicka  <jh@suse.cz>
10173
10174         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
10175         (duplicate_eh_regions_1): Likewise.
10176         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
10177         vector; call EH verification.
10178         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10179         Be ready for region being removed.
10180
10181 2009-03-29  Jan Hubicka  <jh@suse.cz>
10182
10183         * bitmap.c (bitmap_last_set_bit): New function.
10184         * bitmap.h (bitmap_last_set_bit): Declare.
10185
10186 2009-03-29  David Ayers  <ayers@fsfe.org>
10187
10188         PR objc/27377
10189         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
10190         by calling objc_compare_types and surpress warnings about
10191         incompatible C pointers that are compatible ObjC pointers.
10192
10193 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
10194
10195         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
10196         call initialize_inline_failed.
10197         (initialize_inline_failed): Move it from here ...
10198         * cgraph.c (initialize_inline_failed): ... to here.
10199         (cgraph_create_edge): Call initialize_inline_failed rather than
10200         setting inline_failed directly.
10201
10202 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10203
10204         PR target/32542
10205         * sysv4.opt (msdata): Improve comment.
10206         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
10207         * sysv4.h (SVR4_ASM_SPEC): Likewise.
10208
10209 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10210
10211         PR target/30451
10212         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
10213         load and store attributes.
10214
10215 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10216
10217         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
10218         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
10219         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
10220         * doc/extend.texi (X86 Built-in Functions): Add index entries for
10221         __builtin_infq and __builtin_huge_valq.
10222
10223 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
10224
10225         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
10226         atmega8m1 devices.
10227         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10228         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
10229
10230 2009-03-28  Xinliang David Li  <davidxl@google.com>
10231
10232         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
10233         (do_dbg_cnt): New function.
10234
10235 2009-03-28  Jan Hubicka  <jh@suse.cz>
10236
10237         Merge from pretty-ipa:
10238
10239         2009-03-27  Jan Hubicka  <jh@suse.cz>
10240
10241         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10242         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
10243         * passes.c (function_called_by_processed_nodes_p): New.
10244         * ipa-pure-const.c (check_call): Fix handling of operands.
10245         (analyze_function): Dump debug output for skipped bodies.
10246         (local_pure_const): Use function_called_by_processed_nodes_p.
10247         * dwarf2out.c (reference_to_unused): Use output.
10248         * passes.c (do_per_function_toporder): Likewise.
10249
10250         2008-11-12  Jan Hubicka  <jh@suse.cz>
10251
10252         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
10253         * ipa-pure-const.c (funct_state_d): Add can throw field; make
10254         state_set_in_source enum
10255         (check_decl): Ignore memory tags; do not set fake looping flags;
10256         dump diagnostics.
10257         (check_operand, check_tree, check_rhs_var, check_lhs_var,
10258         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
10259         (check_call, analyze_function): Rewrite.
10260         (check_stmt): New.
10261         (add_new_function): Update call of analyze_function.
10262         (generate_summary): Add call of analyze_function.
10263         (propagate): Propagate can_throw; handle state_set_in_source correctly.
10264         (local_pure_const): New function.
10265         (pass_local_pure_const): New pass.
10266         * ipa-inline.c (inline_transform): Set after_inlining.
10267         * tree-eh.c (stmt_can_throw_external): New.
10268         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
10269         work with aliasing built.
10270         * tree-flow.h (stmt_can_throw_external): New.
10271         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
10272         and local pure/const pass in early and late optimization queue.
10273
10274 2009-03-28  Martin Jambor  <mjambor@suse.cz>
10275
10276         * fold-const.c (get_pointer_modulus_and_residue): New parameter
10277         allow_func_align.
10278         (fold_binary): Allow function decl aligment consideration is the
10279         second argument is integer constant one.
10280         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
10281         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
10282         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
10283
10284 2009-03-28  Jan Hubicka  <jh@suse.cz>
10285
10286         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
10287         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
10288         * function.h (rtl_data): Add nothrow flag.
10289         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
10290         set DECL_NOTHROW for AVAILABLE functions.
10291
10292 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
10293
10294         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
10295         following vector keyword has expansion starting with pixel or bool
10296         keyword, expand vector to __vector and pixel or bool to __pixel or
10297         __bool.
10298
10299         PR c++/39554
10300         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
10301         warn_if_disallowed_function_p): Removed.
10302         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
10303         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
10304         warning_if_disallowed_function_p.
10305         * flags.h (warn_if_disallowed_function_p,
10306         warn_disallowed_functions): Removed.
10307         * common.opt (Wdisallowed-function-list=): Removed.
10308         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
10309
10310 2009-03-28  Richard Guenther  <rguenther@suse.de>
10311
10312         PR tree-optimization/38723
10313         * tree-ssa-pre.c (compute_avail): Add all default definitions to
10314         the entry block.
10315
10316 2009-03-28  Jan Hubicka  <jh@suse.cz>
10317
10318         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
10319         test introduced by my previous patch.
10320
10321 2009-03-28  Richard Guenther  <rguenther@suse.de>
10322
10323         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
10324         the PHIs value undefined.
10325
10326 2009-03-28  Jan Hubicka  <jh@suse.cz>
10327
10328         * tree-pass.h (pass_fixup_cfg): New pass.
10329         * ipa-inline.c (inline_transform): Set
10330         always_inline_functions_inlined/after_inlining.
10331         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
10332         (pass_fixup_cfg): New pass.
10333         * passes.c (init_optimization_passes): Add fixup_cfg.
10334
10335 2009-03-28  Richard Guenther  <rguenther@suse.de>
10336
10337         PR tree-optimization/38458
10338         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
10339         argument use the arguments copy-of value.
10340
10341 2009-03-28  Richard Guenther  <rguenther@suse.de>
10342
10343         PR tree-optimization/38180
10344         * tree-ssa-ccp.c (get_default_value): Simplify.
10345         (likely_value): Likewise.
10346         (surely_varying_stmt_p): Properly handle VOP case.
10347         (ccp_initialize): Likewise.
10348         (ccp_fold): Handle propagating through *&.
10349         (fold_const_aggregate_ref): Also handle decls.
10350
10351 2009-03-28  Jan Hubicka  <jh@suse.cz>
10352
10353         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10354         * cgraph.h (cgraph_node): Likewise.
10355         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
10356         (cgraph_reset_node): Use process flag.
10357         (cgraph_mark_functions_to_output): Likewise.
10358         (cgraph_expand_function): Likewise.
10359         (cgraph_expand_all_functions): Likewise.
10360         (cgraph_output_in_order): Likewise.
10361         * dwarf2out.c (reference_to_unused): Likewise.
10362         * passes.c do_per_function_toporder): Likewise.
10363
10364 2009-03-28  Jan Hubicka  <jh@suse.cz>
10365
10366         Bring from lto-branch:
10367
10368         2008-09-03  Doug Kwan  <dougkwan@google.com>
10369
10370         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
10371         enums instead of reason strings.
10372         * cgraph.c (cgraph_create_edge): Same.
10373         (cgraph_inline_failed_string): New function.
10374         * cgraph.h (cgraph_inline_failed_t): New enum type.
10375         (cgraph_inline_failed_string): New prototype.
10376         (struct cgraph_edge): Change type of INLINED_FAILED from constant
10377         char pointer to cgraph_inline_failed_t.
10378         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
10379         (cgraph_default_inline_p): Ditto.
10380         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
10381         to cgraph_inline_failed_t pointer.
10382         * cif-code.def: New file.
10383         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
10384         reason string.
10385         (cgraph_check_inline_limits): Change type of REASON to pointer to
10386         cgraph_inline_failed_t.  Replace reason strings with enums.
10387         (cgraph_default_inline_p): Ditto.
10388         (cgraph_recursive_inlining_p): Ditto.
10389         (update_caller_keys): Change type of FAILED_REASON to
10390         cgraph_inline_failed_t.
10391         (cgraph_set_inline_failed): Change type of REASON to pointer to
10392         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
10393         convert enums to strings for text output.
10394         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
10395         to be of type cgraph_inline_failed_t.  Replace reason strings with
10396         enums.  Call cgraph_inline_failed_string to covert enums
10397         to strings for text output.
10398         (cgraph_decide_inlining): Replace reason strings with enums.
10399         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
10400         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
10401         for text output.
10402         * tree-inline.c (expand_call_inline): Change type of REASON
10403         to cgraph_inline_failed_t.  Replace reason strings with enums.
10404         Call cgraph_inline_failed_string for text output.
10405         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
10406         (cgraph.o): Ditto.
10407
10408 2009-03-28  Jan Hubicka  <jh@suse.cz>
10409
10410         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
10411         cgraph_clone_node): Remove master clone handling.
10412         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10413         * cgraph.h (master_clone): Remove.
10414         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10415         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
10416         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
10417
10418 2009-03-28  Jan Hubicka  <jh@suse.cz>
10419
10420         * cgraph.c (cgraph_function_body_availability): Functions declared
10421         inline are always safe to assume that it is not going to be replaced.
10422
10423 2009-03-28  Richard Guenther  <rguenther@suse.de>
10424
10425         PR tree-optimization/38513
10426         * tree-ssa-pre.c (eliminate): Remove redundant stores.
10427         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
10428         EXC_PTR_EXPR and FILTER_EXPR.
10429         (get_ref_from_reference_ops): Likewise.
10430
10431 2009-03-28  Richard Guenther  <rguenther@suse.de>
10432
10433         PR tree-optimization/38968
10434         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
10435         Use FLOOR_MOD_EXPR to compute misalignment.
10436
10437 2009-03-28  Richard Guenther  <rguenther@suse.de>
10438
10439         PR tree-optimization/37795
10440         * tree.h (combine_comparisons): Declare.
10441         * fold-const.c (combine_comparisons): Export.
10442         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
10443         comparisons.
10444         (ifcombine_iforif): Use combine_comparisons.
10445
10446 2009-03-28  Jan Hubicka  <jh@suse.cz>
10447
10448         * tree-eh.c (inlinable_call_p): New function.
10449         (make_eh_edges): Use it.
10450         (verify_eh_edges): Use it.
10451         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
10452         * except.c (reachable_next_level): Add inlinable_function argument
10453         (sjlj_find_directly_reachable_regions): Update.
10454         (add_reachable_handler): Do not set saw_any_handlers.
10455         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
10456         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10457         Add new inlinable call parameter.
10458         (can_throw_internal, can_throw_external): Update.
10459         * except.h (can_throw_internal_1, can_throw_external_1,
10460         foreach_reachable_handler): Update declaration.
10461
10462 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
10463
10464         * config/arm/t-arm-coff, config/h8300/coff.h,
10465         config/i386/i386-aout.h, config/i386/i386-coff.h,
10466         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
10467         config/pdp11/2bsd.h, config/rs6000/aix41.h,
10468         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
10469         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
10470         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
10471         sys-types.h: Remove.
10472         * Makefile.in: Remove protoize and fixproto support and references
10473         in comments.
10474         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
10475         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
10476         Remove.
10477         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
10478         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
10479         unprotoize$(exeext).
10480         (rest.encap): Don't depend on $(STMP_FIXPROTO)
10481         (.PHONY): Don't depend on proto.
10482         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
10483         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
10484         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
10485         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
10486         build/gen-protos.o, build/scan.o, xsys-protos.h,
10487         build/fix-header$(build_exeext), build/fix-header.o,
10488         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
10489         stmp-install-fixproto): Remove.
10490         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
10491         SYSCALLS.c or fixproto files.
10492         (install-common): Don't install protoize.
10493         (install-headers-tar, install-headers-cpio, install-headers-cp):
10494         Don't depend on $(STMP_FIXPROTO).
10495         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
10496         install fixproto files or write out fixproto settings.
10497         (uninstall): Don't uninstall protoize.
10498         * config.gcc (use_fixproto): Remove.
10499         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
10500         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
10501         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
10502         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
10503         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
10504         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
10505         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
10506         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
10507         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
10508         * config/t-vxworks (STMP_FIXPROTO): Remove.
10509         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
10510         STMP_FIXPROTO): Remove.
10511         * config.in, configure: Regenerate.
10512         * crtstuff.c (gid_t, uid_t): Don't undefine.
10513         * doc/install.texi: Change m68k-coff to m68k-elf in example.
10514         (arm-*-coff, arm-*-aout: Remove target entries.
10515         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
10516         Remove mention of AIX 4.1.
10517         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
10518         * doc/invoke.texi (Running Protoize): Remove.
10519         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
10520         (Protoize Caveats): Remove.
10521         * tsystem.h: Update comments on headers assumed to exist.
10522
10523 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
10524
10525         * genautomata.c: Add a new year to the copyright.  Add a new
10526         reference.
10527         (struct insn_reserv_decl): Add comments for member bypass_list.
10528         (find_bypass): Remove.
10529         (insert_bypass): New.
10530         (process_decls): Use insert_bypass.
10531         (output_internal_insn_latency_func): Output all bypasses with the
10532         same input insn in one switch case.
10533
10534         * rtl.def (define_bypass): Describe bypass choice.
10535         * doc/md.texi (define_bypass): Ditto.
10536
10537 2009-03-27  Richard Guenther  <rguenther@suse.de>
10538
10539         * gimplify.c (mark_addressable): Export.
10540         * tree-flow.h (mark_addressable): Declare.
10541         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
10542         * tree-ssa.c (verify_phi_args): Verify that address taken
10543         variables have TREE_ADDRESSABLE set.
10544
10545 2009-03-27  Richard Guenther  <rguenther@suse.de>
10546
10547         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
10548         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
10549         Do not mark decls TREE_ADDRESSABLE.
10550         (build_fold_addr_expr): Adjust.
10551         (fold_addr_expr): Remove.
10552         (fold_unary): Use build_fold_addr_expr.
10553         (fold_comparison): Likewise.
10554         (split_address_to_core_and_offset): Likewise.
10555         * coverage.c (tree_coverage_counter_addr): Mark the array decl
10556         TREE_ADDRESSABLE.
10557         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
10558         (gimplify_modify_expr_to_memcpy): Mark source and destination
10559         addressable.
10560         * omp-low.c (create_omp_child_function): Mark the object decl
10561         TREE_ADDRESSABLE.
10562         (lower_rec_input_clauses): Mark the var we take the address of
10563         TREE_ADDRESSABLE.
10564         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
10565
10566 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10567
10568         PR middle-end/39315
10569         * cfgexpand.c (expand_one_stack_var_at): Change alignment
10570         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
10571
10572 2009-03-27  Richard Guenther  <rguenther@suse.de>
10573
10574         PR tree-optimization/39120
10575         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
10576         constraints.
10577         (handle_lhs_call): Process return constraints.  Add escape
10578         constraints if necessary.
10579         (handle_const_call): Fill out return constraints.  Make nested
10580         case more precise.  Avoid consttmp if possible.
10581         (handle_pure_call): Fill out return constraints.  Avoid
10582         callused if possible.
10583         (find_func_aliases): Simplify call handling.
10584
10585 2009-03-27  Richard Guenther  <rguenther@suse.de>
10586
10587         PR tree-optimization/39120
10588         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
10589         as a representative.
10590         (solve_graph): Do propagate CALLUSED.
10591         (handle_pure_call): Use a scalar constraint from CALLUSED for
10592         the return value.
10593         (find_what_p_points_to): CALLUSED shall not appear in poins-to
10594         solutions.
10595
10596 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10597
10598         PR c/39323
10599         * c-common.c (handle_aligned_attribute): Properly check alignment
10600         overflow.  Use (1U << i) instead of (1 << i).
10601
10602         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
10603
10604         * expr.h (get_mem_align_offset): Updated.
10605
10606         * tree.h (tree_decl_common): Change align to "unsigned int" and
10607         move it before pointer_alias_set.
10608
10609 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10610             Jakub Jelinek  <jakub@redhat.com>
10611
10612         PR target/38034
10613         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
10614         gr_register_operand with gr_reg_or_0_operand.
10615         (cmpxchg_rel_di): Likewise.
10616         (sync_lock_test_and_set<mode>): Likewise.
10617
10618 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10619
10620         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
10621         (true_regnum): Likewise.
10622
10623         * rtlanal.c (subreg_info): Moved to ...
10624         * rtl.h (subreg_info): Here.  New.
10625         (subreg_get_info): New.
10626
10627         * rtlanal.c (subreg_get_info): Make it extern.
10628
10629 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10630
10631         PR target/39472
10632         * config/i386/i386.c (ix86_abi): New.
10633         (override_options): Handle -mabi=.
10634         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
10635         (ix86_call_abi_override): Likewise.
10636         (init_cumulative_args): Likewise.
10637         (function_arg_advance): Likewise.
10638         (function_arg_64): Likewise.
10639         (function_arg): Likewise.
10640         (ix86_pass_by_reference): Likewise.
10641         (ix86_function_value_regno_p): Likewise.
10642         (ix86_build_builtin_va_list_abi): Likewise.
10643         (setup_incoming_varargs_64): Likewise.
10644         (is_va_list_char_pointer): Likewise.
10645         (ix86_init_machine_status): Likewise.
10646         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
10647         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
10648         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
10649         (ix86_function_abi): Make it static and return enum calling_abi.
10650         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
10651         with ix86_abi.
10652         (ix86_fn_abi_va_list): Updated.
10653
10654         * config/i386/i386.h (ix86_abi): New.
10655         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
10656         (CONDITIONAL_REGISTER_USAGE): Likewise.
10657         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
10658         (machine_function): Likewise.
10659
10660         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
10661         with ix86_abi.
10662         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
10663         (STACK_BOUNDARY): Likewise.
10664         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
10665
10666         * config/i386/i386.opt (mabi=): New.
10667
10668         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
10669         return enum calling_abi.
10670         (ix86_function_type_abi): Likewise.
10671         (ix86_function_abi): Removed.
10672
10673         * doc/invoke.texi: Document -mabi= option for x86.
10674
10675 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10676
10677         * builtins.c (real_dconstp): Delete.
10678         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
10679
10680 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
10681             Jakub Jelinek  <jakub@redhat.com>
10682
10683         PR debug/37959
10684         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
10685         (gen_subprogram_die): When a function is explicit, generate the
10686         DW_AT_explicit attribute.
10687         * langhooks.h (struct lang_hooks_for_decls): Add
10688         function_decl_explicit_p langhook.
10689         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
10690         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
10691
10692 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
10693
10694         * builtins.c (fold_builtin_memory_op): Optimize memmove
10695         into memcpy if we can prove source and destination don't overlap.
10696
10697         * tree-inline.c: Include gt-tree-inline.h.
10698         (clone_fn_id_num): New variable.
10699         (clone_function_name): New function.
10700         (tree_function_versioning): Use it.
10701         * Makefile.in (GTFILES): Add tree-inline.c.
10702
10703 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
10704
10705         * BASE-VER: Change to 4.5.0.
10706
10707 2009-03-27  Xinliang David Li  <davidxl@google.com>
10708
10709         PR tree-optimization/39557
10710         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
10711
10712 2009-03-27  Xinliang David Li  <davidxl@google.com>
10713
10714         PR tree-optimization/39548
10715         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
10716         candidate check.
10717
10718 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10719
10720         * c-common.c (pointer_int_sum): Use %wd on return from
10721         tree_low_cst.
10722
10723 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10724
10725         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
10726         on return from tree_low_cst.
10727
10728 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10729
10730         PR c++/36799
10731         * ginclude/stdarg.h (va_copy): Define also for
10732         __GXX_EXPERIMENTAL_CXX0X__.
10733
10734 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10735
10736         PR c++/35652
10737         * builtins.h (c_strlen): Do not warn here.
10738         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
10739         * c-common.c (pointer_int_sum): Take an explicit location.
10740         Warn about offsets out of bounds.
10741         * c-common.h (pointer_int_sum): Adjust declaration.
10742
10743 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10744
10745         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
10746         markup glitch.
10747
10748 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
10749
10750         PR c++/39554
10751         * opts.c (warn_if_disallowed_function_p): Don't assume
10752         get_callee_fndecl must return non-NULL.
10753
10754 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
10755
10756         PR rtl-optimization/39522
10757         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
10758         when reg_reloaded_valid is set.
10759
10760 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10761
10762         * config/spu/divv2df3.c: New file.
10763         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
10764         (DPBIT_FUNCS): Filter out _div_df.
10765
10766 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
10767
10768         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
10769         a jump insn, count that jump in the distance to the loop start.
10770
10771 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
10772
10773         PR target/39523
10774         * config/sh/sh.c (calc_live_regs): Fix condition for global
10775         registers except PIC_OFFSET_TABLE_REGNUM.
10776
10777 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
10778
10779         PR/39518
10780         * doc/invoke.texi (-mconsole): New.
10781         (-mcygwin): New.
10782         (-mno-cygwin): New.
10783         (-mdll): New.
10784         (-mnop-fun-dllimport): New.
10785         (-mthread): New.
10786         (-mwin32): New.
10787         (-mwindows): New.
10788         (sub section "i386 and x86-64 Windows Options"): New.
10789
10790 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
10791
10792         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
10793         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
10794
10795 2009-03-25  Richard Guenther  <rguenther@suse.de>
10796
10797         PR middle-end/39497
10798         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
10799         of -Wno-error.
10800
10801 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
10802
10803         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
10804         neither of haifa/selective schedulers are working.
10805
10806 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10807
10808         * doc/invoke.texi (Debugging Options): Fix description of
10809         -fno-merge-debug-strings.
10810
10811 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
10812
10813         * config/cris/libgcc.ver: New version-script.
10814         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
10815
10816         * configure.ac <GAS features, nop mnemonic>: Add pattern
10817         crisv32-*-* for "nop".
10818         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
10819         * configure: Regenerate.
10820
10821 2009-03-24  Ira Rosen  <irar@il.ibm.com>
10822
10823         PR tree-optimization/39529
10824         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
10825         mark_sym_for_renaming for the tag copied to the new vector
10826         pointer.
10827
10828 2009-03-24  Arthur Loiret  <aloiret@debian.org>
10829
10830         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
10831         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
10832         EXTRA_SPEC_FUNCTIONS.
10833         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
10834         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
10835         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
10836         -march and -mtune options.
10837
10838 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
10839
10840         * config/m68k/t-rtems: Add m5329 multilib.
10841
10842 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
10843             Jakub Jelinek  <jakub@redhat.com>
10844
10845         PR debug/39524
10846         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
10847         nodes.
10848
10849 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
10850
10851         PR c/39495
10852         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
10853         instead of c_parser_expression_conv, if original_code isn't one of the
10854         4 allowed comparison codes, fail.
10855
10856 2009-03-23  Richard Guenther  <rguenther@suse.de>
10857
10858         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
10859         * tree.h (struct tree_type): Likewise.
10860         * reload.h (struct insn_chain): Likewise.
10861         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
10862         * function.h (struct function): Likewise.
10863         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
10864
10865 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
10866
10867         PR tree-optimization/39516
10868         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
10869
10870 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
10871
10872         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
10873         should be set true if BITS_PER_WORD of target is bigger than 32
10874
10875 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
10876
10877         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
10878         Translate -B-options to -rpath-link.  Correct existing
10879         rpath-link and conditionalize on !nostdlib.
10880
10881 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10882
10883         * doc/extend.texi (Function Attributes, Variable Attributes):
10884         Fix typos.
10885         * doc/invoke.texi (Debugging Options, Optimize Options)
10886         (i386 and x86-64 Options, MCore Options): Likewise.
10887
10888 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
10889
10890         PR debug/37890
10891         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
10892         it for block local namespace aliases.
10893         (gen_decl_die): Pass context_die to gen_namespace_die.
10894
10895 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
10896
10897         PR c/39495
10898         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
10899         minimum or maximum value.
10900
10901 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
10902
10903         * reginfo.c (globalize_reg): Recompute derived reg sets.
10904
10905 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
10906
10907         PR target/39063
10908         * libgcc2.c (mprotect): Do not use signed arguments for
10909         VirtualProtect, use DWORD arguments.  Also fix the 'may
10910         be used uninitialized' warning for the np variable.
10911
10912 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
10913
10914         PR target/39496
10915         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
10916         functions using regparm calling conventions when not optimizing.
10917         (ix86_function_sseregparm): Similarly for sseregparm calling
10918         conventions.
10919
10920 2009-03-19  Li Feng  <nemokingdom@gmail.com>
10921
10922         PR middle-end/39500
10923         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
10924         dependence if the first conflict is after niter iterations.
10925
10926 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
10927
10928         PR middle-end/38609
10929         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
10930         functions with dynamic stack-pointer adjustments.
10931
10932 2009-03-19  Ben Elliston  <bje@au.ibm.com>
10933
10934         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
10935         option; change to -msdata=data.
10936
10937 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10938
10939         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
10940         and -fopenmp.
10941
10942 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
10943
10944         PR target/35180
10945         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
10946
10947 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
10948
10949         * doc/invoke.texi (Code Gen Options): Expand discussion of
10950         -fno-common.
10951
10952 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
10953
10954         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
10955         * matrix-reorg.c (struct matrix_info): Likewise.
10956         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
10957         * rtl.h (struct mem_attrs): Likewise.
10958         * df.h (struct df): Likewise.
10959         * tree-data-ref.h (struct data_dependence_relation): Likewise.
10960         * ira-int.h (struct ira_allocno): Likewise.
10961         * df-scan.c (struct df_collection_rec): Likewise.
10962         * ira.c (struct equivalence): Likewise.
10963         * function.c (struct temp_slot): Likewise.
10964         * cfgloop.h (struct loop): Likewise.
10965
10966         PR debug/39485
10967         * function.c (use_register_for_decl): When not optimizing, disregard
10968         register keyword for variables with types containing methods.
10969
10970 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
10971
10972         PR middle-end/39447
10973         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
10974         (is_simple_operand): Call contains_component_ref_p before calling data
10975         reference analysis that would fail on COMPONENT_REFs.
10976
10977         * tree-vrp.c (search_for_addr_array): Fix formatting.
10978
10979 2009-03-18  Richard Guenther  <rguenther@suse.de>
10980
10981         * tree-vect-transform.c (vect_loop_versioning): Fold the
10982         generated comparisons.
10983         * tree-vectorizer.c (set_prologue_iterations): Likewise.
10984         (slpeel_tree_peel_loop_to_edge): Likewise.
10985
10986 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10987
10988         PR middle-end/37805
10989         * opts.c (print_specific_help): In addition to `undocumented',
10990         accept `separate' and `joined' flags if passed alone.  Describe
10991         output by the first matched one of those.
10992         (common_handle_option): Skip over empty strings.
10993         * gcc.c (display_help): Fix help string for `--help='.
10994         * doc/invoke.texi (Option Summary, Overall Options): With
10995         `--help=', classes and qualifiers can both be repeated, but
10996         only the latter can be negated.  One should not pass only
10997         negated qualifiers.  Fix markup and examples.
10998
10999         Revert
11000         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
11001         PR middle-end/37805
11002         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
11003         and -fhelp=separate.
11004
11005 2009-03-17  Jing Yu  <jingyu@google.com>
11006
11007         PR middle-end/39378
11008         * function.h (struct rtl_data): Move is_thunk from here...
11009         (struct function): ...to here.
11010         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
11011         * varasm.c (assemble_start_function): Change is_thunk from crtl to
11012         cfun.
11013         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
11014         cfun.
11015         (alpha_does_function_need_gp, alpha_start_function): Likewise.
11016         (alpha_output_function_end_prologue): Likewise.
11017         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
11018         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
11019         (rs6000_output_function_epilogue): Likewise.
11020         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
11021
11022 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
11023
11024         PR target/39482
11025         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
11026         from different units in a single alternative.
11027         (*truncdfsf_i387): Ditto.
11028         (*truncxfsf2_mixed): Ditto.
11029         (*truncxfdf2_mixed): Ditto.
11030
11031 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
11032
11033         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
11034         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
11035
11036         PR debug/39474
11037         * tree-ssa-live.c (remove_unused_locals): Don't remove local
11038         unused non-artificial variables when not optimizing.
11039
11040         PR debug/39471
11041         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
11042         DW_TAG_imported_module even if decl is IMPORTED_DECL with
11043         NAMESPACE_DECL in its DECL_INITIAL.
11044
11045         PR middle-end/39443
11046         * optabs.c (set_user_assembler_libfunc): New function.
11047         * expr.h (set_user_assembler_libfunc): New prototype.
11048         * c-common.c: Include libfuncs.h.
11049         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
11050         for memcmp, memset, memcpy, memmove and abort.
11051         * Makefile.in (c-common.o): Depend on libfuncs.h.
11052
11053         PR debug/39412
11054         * dwarf2out.c (gen_inlined_enumeration_type_die,
11055         gen_inlined_structure_type_die, gen_inlined_union_type_die,
11056         gen_tagged_type_instantiation_die): Removed.
11057         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
11058         do nothing.
11059
11060 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
11061
11062         PR testsuite/38526
11063         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
11064         its use.
11065         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
11066         (check-parallel-%): Ditto.
11067         (check-consistency): Ditto.
11068
11069 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
11070
11071         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
11072         local variable rhs by NULL_TREE.
11073
11074 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11075
11076         PR target/39477
11077         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
11078
11079 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11080
11081         PR target/39476
11082         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
11083
11084 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11085
11086         PR target/39473
11087         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
11088         for ms->sysv ABI calls only in 64bit mode.
11089
11090         * config/i386/i386.md (untyped_call): Support 32bit.
11091
11092 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
11093
11094         * doc/extend.texi: Replace x86_65 with x86_64.
11095
11096 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
11097
11098         PR tree-optimization/39455
11099         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
11100         mismatches for POINTER_TYPE_P (type).
11101         (number_of_iterations_le): Likewise.
11102
11103 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11104
11105         * config/picochip/picochip.c: Removed profiling support.
11106         * config/picochip/picochip.md: Removed profiling instruction.
11107         * config/picochip/picochip.h: Removed profiling builtin.
11108
11109 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
11110
11111         * doc/install.texi (--with-host-libstdcxx): Document.
11112
11113 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
11114
11115         PR target/34299
11116         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
11117         generate a warning if the function name does not begin with
11118         "__vector" and the function has either the 'signal' or 'interrupt'
11119         attribute, from here to ...
11120         (avr_declare_function_name): ...here. New function.
11121         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
11122         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
11123
11124 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
11125
11126         PR bootstrap/39454
11127         * cse.c (fold_rtx): Don't modify original const_arg1 when
11128         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
11129         separate variable instead.
11130         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
11131         from out of range shift counts.
11132         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
11133
11134 2009-03-13  Catherine Moore  <clm@codesourcery.com>
11135
11136         * config/i386/x-mingw32 (host-mingw32.o): Replace
11137         diagnostic.h with $(DIAGNOSTIC_H).
11138
11139 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
11140
11141         PR target/39431
11142         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
11143         predicate.
11144         * config/i386/sync.md (sync_compare_and_swap<mode>,
11145         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
11146         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
11147         into a register.
11148         (sync_double_compare_and_swapdi_pic,
11149         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
11150         cmpxchg8b_pic_memory_operand instead of just memory_operand.
11151
11152 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11153
11154         PR target/39445
11155         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
11156
11157 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11158
11159         PR target/39327
11160         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11161         (avx_addsubv4df3): Likewise.
11162         (*avx_addsubv4sf3): Likewise.
11163         (sse3_addsubv4sf3): Likewise.
11164
11165 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11166
11167         PR target/38824
11168         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
11169
11170 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
11171
11172         PR debug/39432
11173         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
11174         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11175         registers for allocnos created from user-defined variables.
11176
11177 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11178
11179         PR target/39181
11180         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
11181         of non-integer mode as well.
11182
11183 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
11184
11185         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
11186         for functions for which the parameter types are unknown.
11187
11188 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
11189
11190         PR target/39137
11191         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
11192         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
11193         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
11194         * config/i386/i386.c (ix86_local_alignment): For
11195         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
11196         long long variables on the stack to avoid dynamic realignment.
11197         Allow the first argument to be a decl rather than type.
11198         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
11199
11200 2009-03-11  Nick Clifton  <nickc@redhat.com>
11201
11202         PR target/5362
11203         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
11204         options.
11205         Add description to mno-lsim option.
11206         * config/mcore/mcore.h: Remove comment about deprecated m4align
11207         option.
11208         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
11209         * doc/invoke.texi: Add description of mno-lsim and
11210         mstack-increment options.
11211
11212         * config/fr30/fr30.opt: Document the -mno-lsim option.
11213         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
11214         and -mno-lsim options.
11215
11216 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11217
11218         * fold-const.c (fold_comparison): Only call fold_inf_compare
11219         if the mode supports infinities.
11220
11221 2009-03-11  Jason Merrill  <jason@redhat.com>
11222
11223         PR debug/39086
11224         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
11225         end already did.  Notice GIMPLE_CALL modifications of the result.
11226         Don't copy debug information from an ignored decl or a decl from
11227         another function.
11228
11229 2009-03-10  Richard Guenther  <rguenther@suse.de>
11230             Nathan Froyd  <froydnj@codesourcery.com>
11231
11232         PR middle-end/37850
11233         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
11234         (__divMODE3): Likewise.
11235
11236 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
11237
11238         PR tree-optimization/39394
11239         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
11240         DECL_SIZE_UNIT of variable length FIELD_DECLs.
11241
11242 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11243
11244         * recog.c (verfiy_changes): Disallow renaming of hard regs in
11245         inline asms for register asm ("") declarations.
11246
11247 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11248
11249         * fold-const.c (fold_unary): Fix comment.
11250
11251 2009-03-07  Jan Hubicka  <jh@suse.cz>
11252
11253         PR target/39361
11254         * tree-inline.c (setup_one_parameter): Do replacement of const
11255         argument by constant in SSA form.
11256
11257 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11258
11259         PR middle-end/38028
11260         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
11261         determine alignment passed to assign_stack_local.
11262         (assign_parms_unsplit_complex): Likewise.
11263         * except.c (sjlj_build_landing_pads): Likewise.
11264
11265 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11266
11267         PR middle-end/39360
11268         * tree-flow.h (add_referenced_var): Return bool instead of void.
11269         * tree-dfa.c (add_referenced_var): Return result of
11270         referenced_var_check_and_insert call.
11271         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
11272         of referenced_var_check_and_insert.
11273
11274         PR debug/39372
11275         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
11276         (gen_variable_die): Emit DW_AT_location on abstract static variable's
11277         DIE, don't emit it if abstract origin already has it.
11278         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
11279         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
11280
11281 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11282
11283         * genpreds.c (needs_variable): Fix parentheses at variable name
11284         detection.
11285         (write_tm_constrs_h): Indent generated code.
11286
11287 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11288
11289         * doc/extend.texi (Function Attributes): Add documentation
11290         for isr attributes.
11291
11292 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11293
11294         PR debug/39387
11295         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
11296         take locus from its DECL_SOURCE_LOCATION instead of input_location.
11297
11298 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11299
11300         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
11301         the loop as bad.
11302
11303 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
11304
11305         PR debug/39379
11306         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
11307         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
11308
11309 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
11310
11311         * config/i386/i386.md (R8_REG, R9_REG): New constants.
11312         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
11313         constants instead of magic numbers.
11314         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11315         (QI_REG_P): Ditto.
11316         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
11317         (x86_64_ms_abi_int_parameter_registers): Ditto.
11318         (x86_64_int_return_registers): Ditto.
11319         (ix86_maybe_switch_abi): Ditto.
11320         (ix86_expand_call): Ditto for clobbered_registers array.
11321         (ix86_hard_regno_mode_ok): Ditto.
11322         (x86_extended_QIreg_mentioned_p): Ditto.
11323
11324 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
11325
11326         PR tree-optimization/39349
11327         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
11328
11329         * combine.c (gen_lowpart_for_combine): Use omode when generating
11330         clobber.
11331
11332 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
11333
11334         PR rtl-optimization/39235
11335         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
11336
11337 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11338
11339         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
11340
11341 2009-03-04  Richard Guenther  <rguenther@suse.de>
11342
11343         PR tree-optimization/39362
11344         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
11345         that occur in abnormal PHIs should be varying.
11346
11347 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11348
11349         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
11350         Extend comments.
11351         (simple_iv):  Take loop as an argument instead of statement.
11352         * tree-scalar-evolution.h (simple_iv): Declaration changed.
11353         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
11354         to simple_iv.
11355         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
11356         Ditto.
11357         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
11358         * matrix-reorg.c (analyze_transpose): Ditto.
11359         * tree-data-ref.c (dr_analyze_innermost): Ditto.
11360         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
11361         * tree-predcom.c (ref_at_iteration): Ditto.
11362         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
11363
11364 2009-03-04  Richard Guenther  <rguenther@suse.de>
11365
11366         PR tree-optimization/39358
11367         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
11368         escaped_id and callused_id.
11369         (solve_graph): Likewise.
11370
11371 2009-03-04  Richard Guenther  <rguenther@suse.de>
11372
11373         PR tree-optimization/39339
11374         * tree-sra.c (try_instantiate_multiple_fields): Make it
11375         no longer ICE on the above.
11376
11377 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
11378
11379         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
11380         that fits within Pmode.
11381
11382 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11383
11384         PR middle-end/10109
11385         * tm.texi (LIBCALL_VALUE): Update description.
11386
11387 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11388
11389         PR middle-end/34443
11390         * doc/extend.texi (section): Update description.
11391
11392 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
11393
11394         PR middle-end/39345
11395         * tree-inline.c (remapped_type): New.
11396         (can_be_nonlocal): Call remapped_type instead of remap_type.
11397
11398 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11399
11400         PR fortran/39354
11401         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
11402         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
11403
11404 2009-03-03  Richard Guenther  <rguenther@suse.de>
11405
11406         PR middle-end/39272
11407         * tree.c (tree_nonartificial_location): New function.
11408         * tree.h (tree_nonartificial_location): Declare.
11409         * builtins.c (expand_builtin_memory_chk): Provide location
11410         of the call location for artificial function pieces.
11411         (maybe_emit_chk_warning): Likewise.
11412         (maybe_emit_sprintf_chk_warning): Likewise.
11413         (maybe_emit_free_warning): Likewise.
11414         * expr.c (expand_expr_real_1): Likewise.
11415
11416 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11417
11418         PR tree-optimization/39343
11419         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
11420         COMPONENT_REF t has ARRAY_TYPE.
11421
11422 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
11423
11424         PR middle-end/39335
11425         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
11426         when the type precision of the induction variable should be
11427         larger than the type precision of nit.
11428         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
11429         * graphite.c (graphite_loop_normal_form): Same.
11430         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
11431
11432 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11433
11434         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
11435         (*call_1_rex64_ms_sysv): Use named constants instead of magic
11436         numbers to describe clobbered registers.
11437         (*call_value_0_rex64_ms_sysv): Ditto.
11438         * config/i386/mmx.md (mmx_emms): Ditto.
11439         (mmx_femms): Ditto.
11440
11441 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
11442
11443         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
11444         of ABI_64.
11445
11446 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11447
11448         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
11449         (spu_section_type_flags): New function.
11450
11451 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11452
11453         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
11454         reg_class_contents of FLOAT_REGS into a temporary.
11455
11456 2009-03-02  Richard Guenther  <rguenther@suse.de>
11457             Ira Rosen  <irar@il.ibm.com>
11458
11459         PR tree-optimization/39318
11460         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
11461         information to the vectorized statement.
11462
11463 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
11464
11465         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
11466         variable.  Use defined names instead of magic constants for REX SSE
11467         registers.
11468
11469 2009-03-01  Richard Guenther  <rguenther@suse.de>
11470
11471         PR tree-optimization/39331
11472         * omp-low.c (lower_send_shared_vars): Do not receive new
11473         values for the reference of DECL_BY_REFERENCE parms or results.
11474
11475 2009-03-01  Jan Hubicka  <jh@suse.cz>
11476
11477         PR debug/39267
11478         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
11479         BLOCK_NONLOCALIZED_VAR): New macros.
11480         (tree_block): Add nonlocalized_vars.
11481         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
11482         gen_decl_die): Add origin argument.  Allow generation of die with
11483         origin at hand only.
11484         (gen_member_die, gen_type_die_with_usage, force_decl_die,
11485         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
11486         of gen_*.
11487         (gen_block_die): Fix checking for unused blocks.
11488         (process_scope_var): Break out from .... ; work with origins only.
11489         (decls_for_scope) ... here; process nonlocalized list.
11490         (dwarf2out_ignore_block): Look for nonlocalized vars.
11491         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
11492         vars.
11493         (dump_scope_block): Dump them.
11494         * tree-inline.c (remap_decls): Handle nonlocalized vars.
11495         (remap_block): Likewise.
11496         (can_be_nonlocal): New predicate.
11497         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
11498
11499 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11500
11501         * configure: Regenerate.
11502
11503 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11504
11505         * optc-gen.awk: No need to duplicate option flags twice.
11506         Reuse help texts for duplicate options which do not have any.
11507
11508         * gcc.c (display_help): Document --version.
11509
11510         * gcc.c (main): If print_help_list and verbose_flag, ensure
11511         driver output comes before subprocess output.
11512
11513         * optc-gen.awk: Assign all remaining fields to help string,
11514         space-separated, for multi-line help in *.opt.
11515
11516         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
11517         -Wno-pedantic-ms-format is for MinGW targets only.
11518
11519         * doc/options.texi (Option file format): Fix bad indentation,
11520         restoring dropped sentence.
11521
11522 2009-02-28  Jan Hubicka  <jh@suse.cz>
11523
11524         * tree-inline.c (tree_function_versioning): Output debug info.
11525
11526 2009-02-28  Jan Hubicka  <jh@suse.cz>
11527
11528         PR debug/39267
11529         * tree-inline.c (setup_one_parameter): Do not copy propagate
11530         arguments when not optimizing.
11531
11532 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
11533
11534         PR target/39327
11535         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11536         (avx_addsubv4df3): Likewise.
11537         (*avx_addsubv4sf3): Likewise.
11538         (sse3_addsubv4sf3): Likewise.
11539         (*avx_addsubv2df3): Likewise.
11540         (sse3_addsubv2df3): Likewise.
11541         (avx_unpckhps256): Correct item selectors.
11542         (avx_unpcklps256): Likewise.
11543         (avx_unpckhpd256): Likewise.
11544         (avx_unpcklpd256): Likewise.
11545
11546 2009-02-28  Jan Hubicka  <jh@suse.cz>
11547
11548         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
11549         static vars.
11550         (copy_arguments_for_versioning): If var is declared don't declare it.
11551         (tree_function_versioning): First setup substitutions and then copy
11552         args.
11553
11554 2009-02-27  Jan Hubicka  <jh@suse.cz>
11555
11556         PR debug/39267
11557         * cgraph.h (varpool_output_debug_info): Remove.
11558         * cgraphunit.c (varpool_output_debug_info): Remove.
11559         * dwarf2out.c (deferred_locations_struct): New struct
11560         (deferred_locations): New type.
11561         (deferred_locations_list): New static var.
11562         (deffer_location): New function.
11563         (gen_variable_die): Use it.
11564         (decls_for_scope): Output info on local static vars.
11565         (dwarf2out_finish): Process deferred locations.
11566         * varpool.c (varpool_output_debug_info): Remove.
11567
11568 2009-02-27  Jan Hubicka  <jh@suse.cz>
11569
11570         PR debug/39267
11571         * tree.h (TREE_PROTECTED): Fix comment.
11572         (BLOCK_HANDLER_BLOCK): Remove.
11573         (struct tree_block): Remove handler_block add body_block.
11574         (inlined_function_outer_scope_p): New.
11575         (is_body_block): Remove.
11576         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
11577         * dwarf2out.c (is_inlined_entry_point): Remove.
11578         (add_high_low_attributes): Use inlined_function_outer_scope_p.
11579         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
11580         code.
11581         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
11582         * gimplify.c (gimplify_expr): Gimplify body blocks.
11583         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
11584         block with multiple subblocks.
11585         (dump_scope_block): Prettier output; dump more flags and info.
11586         (dump_scope_blocks): New.
11587         (remove_unused_locals): Use dump_scope_blocks.
11588         * tree-flow.h (dump_scope_blocks): Declare.
11589         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
11590         * stmt.c (is_body_block): Remove.
11591         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
11592         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
11593
11594 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
11595
11596         PR middle-end/39308
11597         * graphite.c (graphite_loop_normal_form): Do not call
11598         number_of_iterations_exit from a gcc_assert.
11599
11600 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11601
11602         * config/s390/s390.c (s390_swap_cmp): Look for conditional
11603         jumps if COND is NULL.
11604         (find_cond_jump): New function.
11605         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
11606         * config/s390/s390.md: Remove z10_cobra attribute value.
11607
11608 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
11609
11610         * config/alpha/alpha.h (alpha_expand_mov): Return false if
11611         force_const_mem returns NULL_RTX.
11612
11613 2009-02-26  Jan Hubicka  <jh@suse.cz>
11614
11615         PR debug/39267
11616         * cgraph.h (varpool_output_debug_info): Remove.
11617         * cgraphunit.c (varpool_output_debug_info): Remove.
11618         * dwarf2out.c (deferred_locations_struct): New struct
11619         (deferred_locations): New type.
11620         (deferred_locations_list): New static var.
11621         (deffer_location): New function.
11622         (gen_variable_die): Use it.
11623         (decls_for_scope): Output info on local static vars.
11624         (dwarf2out_finish): Process deferred locations.
11625         * varpool.c (varpool_output_debug_info): Remove.
11626
11627 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
11628
11629         PR rtl-optimization/39241
11630         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
11631         to subreg_offset_representable_p.
11632
11633 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11634
11635         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
11636         execute function prototype.  Get f and nregs from max_reg_num
11637         and get_insns.  Remove the first backward pass as it's dead,
11638         guard the forward pass by flag_expensive_optimizations.
11639         (rest_of_handle_regmove): Delete.
11640         (pass_regmove): Replace it with regmove_optimize.
11641
11642 2009-02-25  Martin Jambor  <mjambor@suse.cz>
11643
11644         PR tree-optimization/39259
11645         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
11646         calls_alloca function flags.
11647         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
11648         calls are detected.
11649
11650 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11651
11652         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
11653         flags_set_1_rtx, flags_set_1_set): Delete.
11654         (regmove_optimize): Do not call mark_flags_life_zones.
11655
11656 2009-02-24  Julian Brown  <julian@codesourcery.com>
11657
11658         PR target/35965
11659         * config/arm/arm.c (require_pic_register): Only set
11660         cfun->machine->pic_reg once per function.
11661
11662 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
11663
11664         * doc/invoke.texi (Link Options): Document an easier way to pass
11665         options that take arguments to the GNU linker using -Xlinker and -Wl.
11666
11667 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
11668
11669         PR target/33785
11670         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
11671
11672 2009-02-24  Richard Guenther  <rguenther@suse.de>
11673
11674         PR debug/39285
11675         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
11676
11677 2009-02-24  Richard Guenther  <rguenther@suse.de>
11678             Zdenek Dvorak  <ook@ucw.cz>
11679
11680         PR tree-optimization/39233
11681         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
11682         from converting them to a generic type.
11683
11684 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
11685
11686         PR tree-optimization/39260
11687         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
11688         contains a condition with a real type.
11689         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
11690
11691 2009-02-23  Jason Merrill  <jason@redhat.com>
11692
11693         PR c++/38880
11694         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
11695         narrowing_initializer_constant_valid_p.
11696         (narrowing_initializer_constant_valid_p): Don't return
11697         null_pointer_node for adding a pointer to itself.
11698
11699 2009-02-23  Jan Hubicka  <jh@suse.cz>
11700
11701         PR c/12245
11702         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
11703         resizing.
11704
11705 2009-02-23  Jan Hubicka  <jh@suse.cz>
11706
11707         PR tree-optimization/37709
11708         * tree.c (block_ultimate_origin): Move here from dwarf2out.
11709         * tree.h (block_ultimate_origin): Declare.
11710         * dwarf2out.c (block_ultimate_origin): Move to tree.c
11711         * tree-ssa-live.c (remove_unused_scope_block_p):
11712         Eliminate blocks containig no instructions nor live variables nor
11713         nested blocks.
11714         (dump_scope_block): New function.
11715         (remove_unused_locals): Enable removal of dead blocks by default;
11716         enable dumping at TDF_DETAILS.
11717
11718 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11719
11720         * config/i386/i386.c (classify_argument): Don't allow COImode
11721         and OImode.
11722         (function_arg_advance_32): Don't allow OImode.
11723         (function_arg_32): Likewise.
11724         (function_value_32): Likewise.
11725         (return_in_memory_32): Likewise.
11726         (function_arg_64): Remove OImode comment.
11727
11728 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11729
11730         PR target/39261
11731         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
11732         ix86_expand_vector_set for V4DImode in 64bit mode only.
11733         (ix86_expand_vector_init_one_var): Likewise.
11734
11735 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
11736
11737         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
11738
11739 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
11740
11741         PR bootstrap/39257
11742         * loop-iv.c: Revert last change.
11743         * emit-rtl.c: Likewise.
11744
11745 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11746
11747         PR target/39256
11748         * config/i386/i386.c (type_natural_mode): Remove an extra
11749         space in the warning message.
11750         (function_value_32): Handle 32-byte vector modes.
11751         (return_in_memory_32): Likewise.
11752
11753 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
11754
11755         * loop-iv.c (truncate_value): New function.
11756         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
11757         of lowpart_subreg.
11758         (lowpart_subreg): Move to...
11759         * emit-rtl.c: ...here.
11760
11761 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
11762
11763         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
11764         accidental and undocumented change at revision 140860.
11765
11766 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
11767
11768         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
11769         take gimple_seq * arguments.
11770         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
11771         types_compatible_p langhook.
11772
11773 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
11774             Joseph Myers  <joseph@codesourcery.com>
11775
11776         * config/arm/arm.c (arm_builtin_va_list): New function.
11777         (arm_expand_builtin_va_start): Likewise.
11778         (arm_gimplify_va_arg_expr): Likewise.
11779         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
11780         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
11781         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
11782         (va_list_type): New variable.
11783         (arm_mangle_type): Mangle va_list_type appropriately.
11784
11785 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
11786
11787         PR middle-end/39157
11788         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
11789         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
11790         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
11791         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
11792         parameter to 1000 for -O1 by default.
11793         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
11794         parameter.
11795         * loop-invariant.c: Include params.h.
11796         (move_loop_invariants): Don't call move_single_loop_invariants on
11797         very large loops.
11798
11799 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
11800
11801         * calls.c (emit_library_call_value_1): Use slot_offset instead of
11802         offset when calculating bounds for indexing stack_usage_map.  Fixes
11803         a buffer overflow with certain target setups.
11804
11805 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
11806
11807         PR target/39240
11808         * calls.c (expand_call): Clear try_tail_call if caller and callee
11809         disagree in promotion of function return value.
11810
11811 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
11812
11813         PR target/39175
11814         * c-common.c (c_determine_visibility): If visibility changed and
11815         DECL_RTL has been already set, call make_decl_rtl to update symbol
11816         flags.
11817
11818 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
11819
11820         PR c++/39188
11821         * varasm.c (assemble_variable): Don't check DECL_NAME when
11822         globalizing a variable.
11823
11824 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
11825
11826         PR c/38483
11827         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
11828         expression before any __builtin_trap call.
11829         * c-typeck.c (build_function_call): Convert and check function
11830         arguments before generating a call to a trap.  Evaluate the
11831         function arguments before the trap.
11832
11833 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
11834
11835         PR target/39228
11836         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
11837         (UNSPEC_FXAM_MEM): New unspec.
11838         (fxam<mode>2_i387_with_temp): New insn and split pattern.
11839         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
11840         memory using fxam<mode>2_i387_with_temp to remove excess precision.
11841
11842 2009-02-19  Richard Guenther  <rguenther@suse.de>
11843
11844         PR tree-optimization/39207
11845         PR tree-optimization/39074
11846         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
11847         storedanything_tree): New.
11848         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
11849         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
11850         (build_succ_graph): Add edges from STOREDANYTHING to all
11851         non-direct nodes.
11852         (init_base_vars): Initialize STOREDANYTHING.
11853         (compute_points_to_sets): Free substitution info after
11854         building the succ graph.
11855         (ipa_pta_execute): Likewise.
11856
11857         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
11858         field.
11859         (do_ds_constraint): Do not add to special var or non-pointer
11860         field solutions.
11861         (type_could_have_pointers): Split out from ...
11862         (could_have_pointers): ... here.  For arrays use the element type.
11863         (create_variable_info_for): Initialize may_have_pointers.
11864         (new_var_info): Likewise.
11865         (handle_lhs_call): Make the HEAP variable unknown-sized.
11866         (intra_create_variable_infos): Use a type with pointers for
11867         PARM_NOALIAS, make it unknown-sized.
11868
11869 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
11870
11871         PR target/39224
11872         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
11873
11874 2009-02-18  Jason Merrill  <jason@redhat.com>
11875
11876         PR target/39179
11877         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
11878         value if DECL_EXTERNAL.
11879         * tree-sra.c (sra_walk_gimple_assign): Likewise.
11880         * target.h (gcc_target::binds_local_p): Clarify "module".
11881         * tree.h (TREE_PUBLIC): Clarify "module".
11882
11883 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
11884
11885         PR target/38891
11886         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
11887         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
11888
11889 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
11890
11891         PR target/39082
11892         * c.opt (Wabi): Support C and ObjC.
11893         (Wpsabi): New.
11894
11895         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
11896
11897         * config/i386/i386.c (classify_argument): Warn once about the ABI
11898         change when passing union with long double.
11899
11900         * doc/invoke.texi: Update -Wabi for warning psABI changes.
11901
11902 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
11903
11904         PR c/35447
11905         * c-parser.c (c_parser_compound_statement): Always enter and leave
11906         a scope.
11907
11908 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11909
11910         PR target/34587
11911         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
11912
11913 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
11914
11915         PR tree-optimization/36922
11916         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
11917         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
11918         Likewise.
11919
11920 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11921
11922         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
11923         to 0 for EABI64.
11924
11925 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11926
11927         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
11928
11929 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11930
11931         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
11932         tree sharing.
11933
11934 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
11935             Richard Sandiford  <rdsandiford@googlemail.com>
11936
11937         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
11938         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
11939         (loongson_biadd): ...this.
11940
11941 2009-02-17  Richard Guenther  <rguenther@suse.de>
11942
11943         PR tree-optimization/39202
11944         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
11945         a var make sure to follow existing collapses.
11946
11947 2009-02-17  Richard Guenther  <rguenther@suse.de>
11948
11949         PR middle-end/39214
11950         * langhooks.c (lhd_print_error_function): Check for NULL block.
11951
11952 2009-02-17  Richard Guenther  <rguenther@suse.de>
11953
11954         PR tree-optimization/39204
11955         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
11956         of the PHI arg.
11957
11958 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
11959
11960         * config/soft-fp/double.h: Update from glibc CVS.
11961
11962 2009-02-17  Richard Guenther  <rguenther@suse.de>
11963
11964         PR tree-optimization/39207
11965         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
11966         strict-aliasing warnings for pointers pointing to NULL.
11967
11968 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
11969
11970         PR c/35446
11971         * c-parser.c (c_parser_braced_init): Call pop_init_level when
11972         skipping until next close brace.
11973
11974 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
11975
11976         PR target/37049
11977         * config/i386/i386.c (ix86_expand_push): Set memory alignment
11978         to function argument boundary.
11979
11980 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11981
11982         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
11983         in the lea_add. Reload eventually constraints it properly.
11984         * config/picochip/constraints.md: Remove the target constraint
11985         "b", since it is not needed anymore.
11986
11987 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
11988
11989         * gthr-dce.h: Uglify function parameter and local variable names.
11990         * gthr-gnat.h: Likewise.
11991         * gthr-mipssde.h: Likewise.
11992         * gthr-nks.h: Likewise.
11993         * gthr-posix95.h: Likewise.
11994         * gthr-posix.h: Likewise.
11995         * gthr-rtems.h: Likewise.
11996         * gthr-single.h: Likewise.
11997         * gthr-solaris.h: Likewise.
11998         * gthr-tpf.h: Likewise.
11999         * gthr-vxworks.h: Likewise.
12000         * gthr-win32.h: Likewise.
12001
12002 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
12003
12004         PR target/39196
12005         * config/i386/i386.md: Restrict the new peephole2 to move
12006         between MMX/SSE registers.
12007
12008 2009-02-15  Richard Guenther  <rguenther@suse.de>
12009
12010         Revert
12011         2009-02-13  Richard Guenther  <rguenther@suse.de>
12012
12013         * configure.ac: Enable LFS.
12014         * configure: Re-generate.
12015         * config.in: Likewise.
12016
12017 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12018
12019         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
12020         spu_srqwbyte, spu_srqwbytebc): Define.
12021         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
12022         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
12023         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
12024         "shrqby_<mode>"): New insn-and-split patterns.
12025         * config/spu/spu.c (expand_builtin_args): Determine and return
12026         number of operands using spu_builtin_description data.
12027         (spu_expand_builtin_1): Use it.
12028
12029 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
12030
12031         PR target/38056
12032         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
12033         TARGET_CONST_GP.
12034
12035 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12036
12037         PR target/39149
12038         * config/i386/i386.c (override_options): Correct warning
12039         messages for -malign-loops, -malign-jumps and -malign-functions.
12040
12041 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12042
12043         PR target/39152
12044         * config/i386/i386.md: Restrict the new peephole2 to move
12045         between the general purpose registers.
12046
12047 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12048
12049         PR target/39162
12050         * config/i386/i386.c (type_natural_mode): Add a new argument.
12051         Return the original mode and warn ABI change if vector size is 32byte.
12052         (function_arg_advance): Updated.
12053         (function_arg): Likewise.
12054         (ix86_function_value): Likewise.
12055         (ix86_return_in_memory): Likewise.
12056         (ix86_sol10_return_in_memory): Likewise.
12057         (ix86_gimplify_va_arg): Likewise.
12058         (function_arg_32): Don't warn ABX ABI change here.
12059         (function_arg_64): Likewise.
12060
12061 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
12062
12063         * loop-iv.c (implies_p): In the final case, test that operands 0
12064         of the two comparisons match.
12065
12066         * config/bfin/bfin.c (find_prev_insn_start): New function.
12067         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
12068         (find_next_insn_start): Move.
12069
12070 2009-02-13  Richard Guenther  <rguenther@suse.de>
12071
12072         * configure.ac: Enable LFS.
12073         * configure: Re-generate.
12074         * config.in: Likewise.
12075
12076 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
12077
12078         PR c/35444
12079         * c-parser.c (c_parser_parms_list_declarator): Discard pending
12080         sizes on syntax error after some arguments have been parsed.
12081
12082 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12083
12084         * doc/invoke.texi (-fira): Remove.
12085
12086 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12087
12088         * caller-save.c: Replace regclass.c with reginfo.c in comments.
12089         * recog.c: Likewise.
12090         * rtl.h: Likewise.
12091
12092 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
12093
12094         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
12095         (umul_ppmm): Likewise.
12096         (count_leading_zeros): Likewise.
12097         (count_trailing_zeros): Likewise.
12098         (UMUL_TIME): Likewise.
12099
12100 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12101
12102         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
12103         soft-fp/t-softfp to tmake_file.
12104
12105         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
12106         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
12107         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
12108         IA64_BUILTIN_INFQ]: New.
12109         (ia64_init_builtins): Initialize __builtin_infq,
12110         __builtin_fabsq and __builtin_copysignq if not HPUX.
12111         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
12112         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
12113
12114         * config/ia64/lib1funcs.asm (__divtf3): Define only if
12115         SHARED is defined.
12116         (__fixtfti): Likewise.
12117         (__fixunstfti): Likewise.
12118         (__floattitf): Likewise.
12119
12120         * config/ia64/libgcc-glibc.ver: New.
12121         * config/ia64/t-fprules-softfp: Likewise.
12122         * config/ia64/sfp-machine.h: Likewise.
12123
12124         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
12125         (LIBGCC2_TF_CEXT): Likewise.
12126         (TF_SIZE): Likewise.
12127         (TARGET_INIT_LIBFUNCS): Likewise.
12128
12129         * config/ia64/t-glibc (SHLINB_MAPFILES):
12130         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
12131
12132 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12133
12134         * config/i386/i386.c (construct_container): Rewrite processing
12135         BLKmode with X86_64_SSE_CLASS.
12136
12137 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
12138
12139         PR target/39152
12140         * config/i386/i386.md: Replace simplify_replace_rtx with
12141         replace_rtx in the new peephole2.
12142
12143 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
12144
12145         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
12146         loop unrolling do not happen at -O2.
12147
12148 2009-02-12  Michael Matz  <matz@suse.de>
12149
12150         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
12151
12152 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12153
12154         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
12155         for -g3.
12156
12157 2009-02-12  Ben Elliston  <bje@au.ibm.com>
12158
12159         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
12160         patterns when updating the back chain.  Missed in the 2009-02-10
12161         change.
12162
12163 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
12164
12165         * doc/extend.texi (Decimal Floating Types): Update identifier of
12166         draft TR and list of missing support.
12167
12168 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
12169
12170         PR middle-end/39154
12171         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
12172         bit to variable length decl's flags, add it also to its
12173         pointer replacement variable.
12174
12175 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
12176             Jakub Jelinek  <jakub@redhat.com>
12177
12178         PR target/39118
12179         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
12180         (memory_blockage): New expander.
12181         (*memory_blockage): New insn pattern.
12182         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
12183         instead of general blockage at the end of function prologue when
12184         frame pointer is used to access red zone area.  Do not emit blockage
12185         when profiling, it is emitted in generic code.
12186         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
12187         function epilogue when frame pointer is used to access red zone area.
12188
12189 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
12190
12191         PR target/38824
12192         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
12193         by arithmetic with memory operands.
12194         * config/i386/predicates.md (commutative_operator): New.
12195
12196 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
12197
12198         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
12199         bulleted lists.
12200
12201 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
12202
12203         * alias.h (record_alias_subset): Declare.
12204         * alias.c (record_alias_subset): Make global.
12205
12206 2009-02-10  Nick Clifton  <nickc@redhat.com>
12207
12208         * tree-parloops.c: Change license to GPLv3.
12209         * ipa-struct-reorg.c: Change license to GPLv3.
12210         * ipa-struct-reorg.h: Change license to GPLv3.
12211
12212 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
12213
12214         PR c/39084
12215         * c-decl.c (start_struct): Return NULL on error.
12216
12217 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
12218
12219         PR middle-end/39124
12220         * cfgloopmanip.c (remove_path): Call remove_bbs after
12221         cancel_loop_tree, not before it.
12222
12223         PR target/39139
12224         * function.h (struct function): Add has_local_explicit_reg_vars bit.
12225         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
12226         VAR_DECLs were seen.
12227         * tree-ssa-live.c (remove_unused_locals): Recompute
12228         cfun->has_local_explicit_reg_vars.
12229         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
12230         copies or clearings if cfun->has_local_explicit_reg_vars.
12231
12232 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
12233
12234         PR target/39118
12235         * config/i386/i386.c (expand_prologue): Emit blockage at the end
12236         of function prologue when frame pointer is used to access
12237         red zone area.
12238
12239 2009-02-10  Richard Guenther  <rguenther@suse.de>
12240
12241         PR middle-end/39127
12242         * gimplify.c (gimple_regimplify_operands): Always look if
12243         we need to create a temporary.
12244
12245 2009-02-10  Richard Guenther  <rguenther@suse.de>
12246
12247         PR tree-optimization/39132
12248         * tree-loop-distribution.c (todo): New global var.
12249         (generate_memset_zero): Trigger TODO_rebuild_alias.
12250         (tree_loop_distribution): Return todo.
12251
12252 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
12253
12254         PR target/39119
12255         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
12256         (x86_64_reg_class_name): Removed.
12257         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
12258         first one isn't X86_64_SSE_CLASS or any other ones aren't
12259         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
12260         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
12261         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
12262         and 3 X86_64_SSEUP_CLASS.
12263         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
12264         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
12265
12266 2009-02-10  Ben Elliston  <bje@au.ibm.com>
12267
12268         * config/rs6000/rs6000.md (allocate_stack): Always use an update
12269         form instruction to update the stack back chain word, even if the
12270         user has disabled the generation of update instructions.
12271         (movdi_<mode>_update_stack): New.
12272         (movsi_update_stack): Likewise.
12273         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
12274         always use an update form instruction to update the stack back
12275         chain word.
12276
12277 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
12278
12279         PR middle-end/38953
12280         * graphite.c (if_region_set_false_region): After moving a region in
12281         the false branch of a condition, remove the empty dummy basic block.
12282         (gloog): Remove wrong fix for PR38953.
12283
12284 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12285
12286         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
12287         generation due to implicit sign extension.
12288
12289 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12290
12291         PR middle-end/38981
12292         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
12293         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
12294
12295 2009-02-09  Richard Guenther  <rguenther@suse.de>
12296
12297         PR middle-end/35202
12298         * convert.c (convert_to_real): Disable (float)fn((double)x)
12299         to fnf(x) conversion if errno differences may occur and
12300         -fmath-errno is set.
12301
12302 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
12303
12304         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
12305         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12306         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12307
12308 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12309
12310         PR c/35434
12311         * c-common.c (handle_alias_attribute): Disallow attribute for
12312         anything not a FUNCTION_DECL or VAR_DECL.
12313
12314 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
12315
12316         PR c/39035
12317         * real.c (do_compare): Special-case compare of zero against
12318         decimal float value.
12319
12320 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12321
12322         PR c/36432
12323         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
12324         as indicating flexible array members unless the field itself is
12325         being declarared as the incomplete array.
12326
12327 2009-02-06  Jan Hubicka  <jh@suse.cz>
12328
12329         PR tree-optimization/38844
12330         * ipa-inline.c (try_inline): Stop inlining recursion when edge
12331         is already inlined.
12332
12333 2009-02-06  Richard Guenther  <rguenther@suse.de>
12334
12335         PR middle-end/38977
12336         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
12337         fork because we may expand it as __gcov_fork.
12338
12339 2009-02-06  Nick Clifton  <nickc@redhat.com>
12340
12341         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
12342
12343 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
12344
12345         PR tree-optimization/35659
12346         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
12347         vn_phi_eq): Shortcut if hashcode does not match.
12348         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
12349         NULL operands.
12350         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
12351         and avoid iterative_hash_expr.
12352         (FOR_EACH_VALUE_ID_IN_SET): New.
12353         (value_id_compare): Remove.
12354         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
12355         sort expressions by value id.
12356
12357 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
12358
12359         PR target/38991
12360         * config/sh/predicates.md (general_movsrc_operand): Don't check
12361         the subreg of system registers here.
12362
12363 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
12364
12365         PR c++/39106
12366         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
12367         on the copied decl.
12368
12369 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
12370
12371         PR rtl-optimization/39110
12372         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
12373         addresses, not aligned ones.
12374
12375 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
12376             Richard Guenther  <rguenther@suse.de>
12377
12378         PR tree-optimization/39100
12379         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
12380         comment says and add edges.
12381
12382 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
12383
12384         PR c/35435
12385         * c-common.c (handle_tls_model_attribute): Ignore attribute for
12386         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
12387
12388 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
12389
12390         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
12391         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
12392         register_bb_in_sese, new_sese, free_sese): Moved.
12393         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
12394         outermost_loop_in_scop, build_scop_iteration_domain,
12395         expand_scalar_variables_ssa_name, get_vdef_before_scop,
12396         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
12397         Use loop_in_sese_p instead of loop_in_scop_p.
12398         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
12399         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
12400         (scopdet_basic_block_info): Fix bug in scop detection.
12401         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
12402         eq_loop_to_cloog_loop): Remove.
12403         (nb_loops_around_loop_in_scop, nb_loop
12404         ref_nb_loops): Moved here...
12405         * graphite.h (ref_nb_loops): ... from here.
12406         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
12407         (loop_domain_dim, loop_iteration_vector_dim): Remove.
12408         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
12409         * testsuite/gcc.dg/graphite/scop-19.c: New
12410
12411 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
12412             Hans-Peter Nilsson  <hp@axis.com>
12413
12414         PR rtl-optimization/37889
12415         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
12416         Move offset handling from PLUS to before the switch.  Use new
12417         arguments when considering SYMBOL_REFs too.
12418         (rtx_addr_can_trap_p): Pass dummy offset and size.
12419         (enum may_trap_p_flags): Remove.
12420         (may_trap_p_1): Pass size from MEM_SIZE.
12421
12422         PR rtl-optimization/38921
12423         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
12424         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
12425         * rtlanal.c (may_trap_after_code_motion_p): Delete.
12426         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
12427
12428 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
12429
12430         AVX Programming Reference (January, 2009)
12431         * config/i386/sse.md (*vpclmulqdq): New.
12432
12433 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
12434
12435         PR tree-optimization/38977
12436         PR gcov-profile/38292
12437         * calls.c (special_function_p): Disregard __builtin_ prefix.
12438
12439 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
12440
12441         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
12442         non-indexable addresses even before reload.
12443
12444 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12445
12446         PR c/29129
12447         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
12448         as having variable size.  Do not give an error for unnamed
12449         parameters with [*] declarators.  Give a warning for type names
12450         with [*] declarators and mark them as variable size.
12451         * c-parser.c (c_parser_sizeof_expression): Do not give an error
12452         for sizeof applied to [*] type names.
12453
12454 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12455
12456         PR C++/36607
12457         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
12458
12459 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12460
12461         * gcc.c (process_command): Update copyright notice dates.
12462         * gcov.c (print_version): Likewise.
12463         * gcov-dump.c (print_version): Likewise.
12464         * mips-tfile.c (main): Likewise.
12465         * mips-tdump.c (main): Likewise.
12466
12467 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12468
12469         PR c/35433
12470         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
12471         for composite type involving a zero-length array type.
12472
12473 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12474
12475         PR target/35318
12476         * function.c (match_asm_constraints_1): Skip over
12477         initial optional % in the constraint.
12478
12479         PR inline-asm/39059
12480         * c-parser.c (c_parser_postfix_expression): If fixed point is not
12481         supported, don't accept FIXED_CSTs.
12482         * c-decl.c (finish_declspecs): Error if fixed point is not supported
12483         and _Sat is used without _Fract/_Accum.  Set specs->type to
12484         integer_type_node for cts_fract/cts_accum if fixed point is not
12485         supported.
12486
12487 2009-02-02  Catherine Moore  <clm@codesourcery.com>
12488
12489         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
12490
12491 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
12492
12493         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
12494         (ABI_HAS_64BIT_SYMBOLS): Use it.
12495         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
12496
12497 2009-02-02  Paul Brook  <paul@codesourcery.com>
12498
12499         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
12500
12501 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
12502
12503         PR inline-asm/39058
12504         * recog.h (asm_operand_ok): Add constraints argument.
12505         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
12506         recurse on matching constraint.
12507         (check_asm_operands): Pass constraints as 3rd argument to
12508         asm_operand_ok.  Don't look up matching constraint here.
12509         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
12510         to asm_operand_ok.
12511
12512 2009-02-02  Ben Elliston  <bje@au.ibm.com>
12513
12514         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
12515         TARGET_NARROW_VOLATILE_BITFIELD macro names.
12516
12517 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12518
12519         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
12520         information.  Remove some obsolete information.  Reorganize.
12521
12522         * config/pa/fptr.c: Revert license to GPL 2.
12523         * config/pa/milli64.S: Likewise.
12524
12525 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12526
12527         PR target/38904
12528         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
12529         LIBRARY name in, instead of hard-coding it.
12530         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
12531         extra target make frag to tmake_files according to EH model.
12532         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
12533         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
12534         frags that define makefile variable EH_MODEL appropriately.
12535         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
12536         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
12537         to "-sjlj" according to type of EH configured.
12538         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12539         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
12540         to "_sjlj" according to type of EH configured.
12541         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12542         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
12543         (SHLIB_LINK):  Add missing semicolon to if-else construct.
12544         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12545         string value of "pe_dll" command-line option.
12546         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
12547         (SHLIB_SONAME):  Use it when overriding t-cygming default.
12548         (SHLIB_IMPLIB):  Override t-cygming default.
12549         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12550         string value of "pe_dll" command-line option.
12551
12552 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12553
12554         PR target/38952
12555         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
12556         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
12557
12558 2009-01-31  Richard Guenther  <rguenther@suse.de>
12559
12560         PR tree-optimization/38937
12561         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
12562         computing the transitive closure.
12563
12564 2009-01-30  Richard Guenther  <rguenther@suse.de>
12565
12566         PR tree-optimization/39041
12567         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
12568         Propagate variable indices only if the types match for this stmt.
12569
12570 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
12571
12572         PR target/39013
12573         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
12574         inline but never defined.
12575
12576 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
12577
12578         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
12579         (*insv_h_di_reg_extimm): New insn.
12580         (*insv_l<mode>_reg_extimm): New insn.
12581
12582 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12583
12584         * config/picochip/picochip.c (flag_conserve_stack): set
12585         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
12586         fconserve-stack. Reduce call-overhead used by inliner.
12587
12588 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12589
12590         PR/38157
12591         * common.opt (flag_conserve_stack): Initialised to zero.
12592
12593 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
12594
12595         PR/39002
12596         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
12597         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
12598         method.
12599
12600 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
12601
12602         * ira-color.c (allocno_reload_assign): Update comments.
12603         * regmove.c (regmove_optimize): Likewise.
12604
12605         * ra.h: Removed.
12606
12607 2009-01-29  Robert Millan  <rmh@aybabtu.com>
12608
12609         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
12610         * config/i386/kopensolaris-gnu.h: New file.  Undefine
12611         `MD_UNWIND_SUPPORT'.
12612         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
12613
12614 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
12615
12616         PR tree-optimization/39007
12617         * tree-loop-distribution.c (generate_builtin): Use
12618         recompute_dominator to compute the immediate dominator of the
12619         basic block just after the loop.
12620
12621 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12622
12623         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
12624         (ASM_OUTPUT_DWARF_PCREL): Define.
12625
12626 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
12627
12628         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
12629         * doc/passes.texi: Remove entries about regclass, local-alloc, and
12630         global.  Modify entries about regmove and IRA.
12631
12632         * ra-conflict.c: Remove the file.
12633
12634         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
12635
12636         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
12637         (pass_regclass_init): Rename to pass_reginfo_init.
12638
12639         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
12640
12641         * toplev.h (flag_ira): Remove.
12642
12643         * caller-save.c (setup_save_areas): Remove flag_ira.
12644
12645         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
12646
12647         * global.c: Remove the file.
12648
12649         * opts.c (decode_options): Remove flag_ira.
12650
12651         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
12652
12653         * regmove.c: Modify file description.
12654         (find_use_as_address, try_auto_increment): Define them only if
12655         AUTO_INC_DEC is defined.
12656         (replacement_quality, replace_in_call_usage, fixup_match_1,
12657         stable_and_no_regs_but_for_p): Remove.
12658         (reg_set_in_bb): Make it static.
12659         (regmove_optimize): Remove flag_ira and code which worked for
12660         !flag_ira.
12661
12662         * local-alloc.c: Remove the file.
12663
12664         * common.opt (fira): Remove.
12665
12666         * ira.c: Include except.h.
12667         (eliminable_regset): Move from global.c.
12668         (mark_elimination): Ditto.  Remove flag_ira.
12669         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
12670         equiv_mem_modified, validate_equiv_mem_from_store,
12671         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
12672         contains_replace_regs, memref_referenced_p, memref_used_between_p,
12673         no_equiv, recorded_label_ref): Move from local-alloc.c.
12674         (update_equiv_regs): Ditto.  Make it static.
12675         (print_insn_chain, print_insn_chains): Move it from global.c.
12676         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
12677         (build_insn_chain): Ditto.  Make it static.
12678         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
12679         Rename to init_live_subregs.
12680         (gate_ira): Remove flag_ira.
12681
12682         * regclass.c: Rename reginfo.c.  Change file description.
12683         (FORBIDDEN_INC_DEC_CLASSES): Remove.
12684         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
12685         (init_reg_sets_1): Remove code for evaluation of
12686         reg_class_superclasses and losing_caller_save_reg_set.
12687         (init_regs): Remove init_reg_autoinc.
12688         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
12689         ok_for_base_p_nonstrict): Remove.
12690         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
12691         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
12692         corresponding entries.
12693         (dump_regclass, record_operand_costs, scan_one_insn,
12694         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
12695         record_address_regs, auto_inc_dec_reg_p): Remove.
12696         (gt-regclass.h): Rename to gt-reginfo.h.
12697
12698         * rtl.h (dump_global_regs, retry_global_alloc,
12699         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
12700
12701         * Makefile.in (RA_H): Remove.
12702         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
12703         Rename regclass.o to reginfo.o.
12704         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
12705         gt-reginfo.h.
12706         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
12707         (GTFILES): Rename regclass.c to reginfo.c.
12708
12709         * passes.c (init_optimization_passes): Remove pass_local_alloc and
12710         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
12711
12712         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
12713         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
12714         Remove flag_ira.
12715         (finish_spills): Ditto.  Remove code for !flag_ira.
12716
12717 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
12718
12719         PR middle-end/35854
12720         * doc/invoke.texi (rtl debug options): Complete rewrite.
12721         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
12722         to auto_inc_dec".
12723         * mode-switching.c (pass_mode_switching): Rename pass from
12724         "mode-sw" to "mode_sw".
12725         * except.c (pass_convert_to_eh_ranges): Rename pass from
12726         "eh-ranges" to "eh_ranges".
12727         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
12728         to "subreg1".
12729
12730
12731 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
12732             Alexander Monakov  <amonakov@ispras.ru>
12733
12734         PR middle-end/38857
12735         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
12736         register.
12737         (move_exprs_to_boundary): Change return type and pass through
12738         should_move from move_op.  Relax assert.  Update usage ...
12739         (schedule_expr_on_boundary): ... here.  Use should_move instead of
12740         cant_move.
12741         (move_op_orig_expr_found): Indicate that insn was disconnected from
12742         stream.
12743         (code_motion_process_successors): Do not call after_merge_succs
12744         callback if original expression was not found when traversing any of
12745         the branches.
12746         (code_motion_path_driver): Change return type.  Update prototype.
12747         (move_op): Update comment.  Add a new parameter (should_move).  Update
12748         prototype.  Set *should_move based on indication provided by
12749         move_op_orig_expr_found.
12750
12751 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
12752
12753         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
12754         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
12755         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
12756         * config/rs6000/rs6000.c (rs6000_override_options): Default
12757         avoid-indexed-addresses on for Power6, off for everything else.
12758         (avoiding_indexed_address_p): New function.
12759         (rs6000_legitimize_address): Use it.
12760         (rs6000_legitimate_address): Likewise.
12761         * config/rs6000/rs6000.md (movXX_updateX): Likewise
12762
12763 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
12764
12765         PR tree-optimization/38997
12766         * tree-loop-distribution.c (generate_memset_zero): Use
12767         POINTER_PLUS_EXPR for a pointer addition.
12768
12769 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
12770
12771         * config/s390/s390.md (bswap<mode>2): New pattern added.
12772
12773 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12774
12775         * config/s390/s390.md (*tls_load_31): Added type attribute.
12776
12777 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12778
12779         * config/s390/s390.md: Fix a few comments.
12780
12781 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12782
12783         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
12784         (*tm<mode>_full): Fixed z10prop attribute.
12785         (*tst<mode>_extimm): Fixed z10prop attribute.
12786         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
12787         (*tstqiCCT_cconly): Fixed z10prop attribute.
12788         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
12789         (*movsi_larl): Fixed z10prop attribute.
12790         (*movsi_zarch): Fixed z10prop attribute.
12791         (*movsi_eas): Fixed z10prop attribute.
12792         (*movhi): Fixed z10prop attribute.
12793         (*movqi): Fixed z10prop attribute.
12794         (*movstrictqi): Fixed z10prop attribute.
12795         (*mov<mode>): Fixed z10prop attribute.
12796         (*movcc): Fixed z10prop attribute.
12797         (*sethighpartdi_64): Fixed z10prop attribute.
12798         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
12799         (*negdi2_sign_cc): Fixed z10prop attribute.
12800         (*negdi2_sign): Fixed z10prop attribute.
12801         (*absdi2_sign_cc): Fixed z10prop attribute.
12802         (*absdi2_sign): Fixed z10prop attribute.
12803         (*negabsdi2_sign_cc): Fixed z10prop attribute.
12804         (*negabsdi2_sign): Fixed z10prop attribute.
12805         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
12806         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
12807         (doloop_si64): Fixed z10prop attribute.
12808         (doloop_si31): Fixed z10prop attribute.
12809         (doloop_long): Fixed z10prop attribute.
12810         (indirect_jump): Fixed z10prop attribute.
12811         (nop): Fixed z10prop attribute.
12812         (main_base_64): Fixed z10prop attribute.
12813         (reload_base_64): Fixed z10prop attribute.
12814
12815 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
12816
12817         PR rtl-optimization/38740
12818         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
12819         if !optimize.
12820         * config/mips/mips.c (mips_reorg): Likewise.
12821
12822 2009-01-28  Richard Guenther  <rguenther@suse.de>
12823
12824         PR tree-optimization/38926
12825         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
12826         with the correct value id to a value.
12827         (do_regular_insertion): Use the value number of edoubleprime
12828         for the value number of the expr.
12829
12830         Revert
12831         2008-08-21  Richard Guenther  <rguenther@suse.de>
12832
12833         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
12834         a PHI ask VN if it is already available.
12835         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
12836         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
12837
12838 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
12839
12840         PR middle-end/38934
12841         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
12842         set to varying whenever max has TREE_OVERFLOW set, similarly
12843         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
12844
12845 2009-01-28  Richard Guenther  <rguenther@suse.de>
12846
12847         PR middle-end/38908
12848         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
12849         uninitialized aggregate uses in call arguments.
12850
12851 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
12852
12853         PR tree-optimization/38984
12854         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
12855         the nothing_id variable if -fno-delete-null-pointer-checks.
12856
12857 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
12858
12859         PR target/38988
12860         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
12861         (set_got_offset_rex64): Ditto.
12862
12863 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
12864
12865         PR target/38941
12866         * doc/extend.texi: Improve local variable with asm reg.
12867
12868 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
12869
12870         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
12871         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
12872         was not supplied then set warn_packed_bitfield_compat to the
12873         default value of 1.
12874         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
12875         against 1.
12876
12877 2009-01-27  Richard Guenther  <rguenther@suse.de>
12878
12879         PR tree-optimization/38503
12880         * cfgexpand.c (expand_gimple_basic_block): Ignore
12881         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
12882         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
12883         variables that cannot have TBAA applied.
12884         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
12885         statements.
12886
12887 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
12888
12889         PR middle-end/38969
12890         * calls.c (initialize_argument_information): Do not wrap complex
12891         arguments in SAVE_EXPR.
12892
12893 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
12894
12895         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
12896         (INSTALL_LIBGCC): Revert typo commit.
12897
12898 2009-01-26  Richard Guenther  <rguenther@suse.de>
12899
12900         PR tree-optimization/38745
12901         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
12902         from special handling.
12903
12904 2009-01-26  Richard Guenther  <rguenther@suse.de>
12905
12906         PR tree-optimization/38745
12907         * tree-ssa.c (execute_update_addresses_taken): Do not include
12908         variables that cannot possibly be a register in not_reg_needs.
12909         Do not clear TREE_ADDRESSABLE on vars that may not become
12910         registers.
12911         * tree-ssa.c (update_alias_info_1): Include those in the set
12912         of addressable vars.
12913
12914 2009-01-26  Richard Guenther  <rguenther@suse.de>
12915
12916         PR middle-end/38851
12917         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
12918         * tree-ssa-dse.c: Include langhooks.h
12919         (execute_simple_dse): Remove stores with zero size.
12920
12921 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
12922
12923         PR c/38957
12924         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
12925         as PLUS_EXPR.
12926
12927 2009-01-24  Julian Brown  <julian@codesourcery.com>
12928
12929         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
12930         config/arm/linux-atomic.c.
12931         * config/arm/linux-atomic.c: New.
12932
12933 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
12934
12935         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
12936         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
12937         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
12938
12939 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
12940
12941         PR c/38938
12942         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
12943         properly.
12944
12945 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
12946
12947         PR tree-optimization/38953
12948         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
12949         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
12950         (gloog): Split the exit of the scop when the scop exit is a loop exit.
12951         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
12952         changed the CFG.
12953
12954 2009-01-24  Paul Brook  <paul@codesourcery.com>
12955
12956         * config/arm/neon.md (neon_type): Move to arm.md.
12957         (neon_mov<VSTRUCT>): Add neon_type attribute.
12958         * config/arm/arm.md (neon_type): Move to here.
12959         (conds): Add "unconditioal" and use as default for NEON insns.
12960
12961 2009-01-24  Ben Elliston  <bje@au.ibm.com>
12962
12963         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
12964         void *' warning from -Wc++-compat.
12965         * Makefile.in (dominance.o-warn): Remove.
12966
12967 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
12968
12969         PR tree-optimization/38932
12970         * fold-const.c (fold_unary_ignore_overflow): New.
12971         * tree.h (fold_unary_ignore_overflow): Declare.
12972         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
12973         * tree-ssa-sccvn.c (visit_reference_op_load,
12974         simplify_unary_expression): Likewise.
12975
12976 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
12977
12978         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
12979         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
12980         regardless of their type.
12981         * c-common.c (handle_packed_attribute): Don't ignore packed on
12982         bitfields.
12983         * c.opt (Wpacked-bitfield-compat): New warning option.
12984         * stor-layout.c (place_field): Warn if offset of a field changed.
12985         * doc/extend.texi (packed): Mention the ABI change.
12986         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
12987         (Warning Options): Add it to the list.
12988
12989 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
12990
12991         * c-opts.c (c_common_post_options): Fix a typo in comments.
12992
12993 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
12994
12995         PR middle-end/38615
12996         * gimplify.c (gimplify_init_constructor): Fix promotion of const
12997         variables to static.
12998         * doc/invoke.texi (-fmerge-all-constants): Update description.
12999
13000 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
13001
13002         PR target/38931
13003         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
13004         (*movdi_1_rex64): Use type "mmx" for alternative 5.
13005
13006 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
13007
13008         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
13009         a word boundary.
13010         (LOCAL_ALIGNMENT): Similarly.
13011
13012 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13013             Joseph Myers  <joseph@codesourcery.com>
13014
13015         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
13016         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
13017         * config/arm/arm-tune.md: Regenerate.
13018         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
13019         -march=iwmmxt2.
13020
13021 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13022
13023         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
13024         version number to five.
13025
13026 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13027
13028         PR c++/38930
13029         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
13030         * c-common.c (set_underlying_type): Likewise.
13031         (is_typedef_decl ): Likewise
13032         * tree.h: Likewise
13033         (set_underlying_type): Likewise.
13034         (is_typedef_type): Likewise.
13035
13036 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
13037
13038         PR middle-end/38587
13039         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
13040         crossing setjmps.
13041
13042 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
13043
13044         PR bootstrap/37660
13045         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
13046         (LIBGCC_SPEC):  Don't define.
13047         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
13048
13049 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
13050
13051         PR rtl-optimization/38879
13052         * alias.c (base_alias_check): Unaligned access via AND address can
13053         alias all surrounding object types except those with sizes equal
13054         or wider than the size of unaligned access.
13055
13056 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
13057
13058         PR c++/26693
13059         * c-decl.c (clone_underlying_type): Move this ...
13060         * c-common.c (set_underlying_type): ... here.
13061         Also, make sure the function properly sets TYPE_STUB_DECL() on
13062         the newly created typedef variant type.
13063         (is_typedef_decl ): New entry point.
13064         * tree.h: Added a new member member_types_needing_access_check to
13065         struct tree_decl_non_common.
13066         (set_underlying_type): New entry point.
13067         (is_typedef_type): Likewise.
13068
13069 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
13070
13071         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
13072         Check whether two instructions have memory references that
13073         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
13074         are helper functions for traversing.
13075         * alias.h (insn_alias_sets_confilict_p): New prototypes.
13076         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
13077         not to draw dependency edge for instructions with non-conflicting
13078         alias sets.
13079
13080 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
13081
13082         PR other/38758
13083         * longlong.h: Update copyright years.  Use soft-fp license notice.
13084         Sync __clz_tab declaration with glibc.
13085
13086 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
13087
13088         PR target/30687
13089         * doc/extend.texi (syscall_linkage): New.
13090         (version_id): Modify.
13091
13092 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13093             Richard Guenther  <rguenther@suse.de>
13094
13095         PR tree-optimization/38747
13096         PR tree-optimization/38748
13097         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
13098         conversion if the base address is an indirect reference and the
13099         aliasing sets could cause issues.
13100
13101 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13102
13103         * common.opt (fgraphite, fgraphite-identity): Add comment for
13104         explaining why these options are not documented.
13105
13106 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13107
13108         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
13109         gimple_call_lhs is NULL.
13110
13111 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
13112
13113         PR target/38868
13114         * emit-rtl.c (adjust_address_1): Make sure memref is never
13115         overwritten.
13116
13117 2009-01-20  Ben Elliston  <bje@au.ibm.com>
13118
13119         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13120         const qualifier from arg parameter. Remove unnecessary cast to char *.
13121         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13122         const qualifier from arg 2.
13123
13124 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
13125
13126         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
13127
13128 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
13129
13130         PR c/38869
13131         * rtl.h (reinit_regs): New prototype.
13132         * regclass.c: Include ira.h.
13133         (reinit_regs): New.
13134         * Makefile.in (regclass.o): Add ira.h.
13135         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
13136
13137 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
13138
13139         PR target/38736
13140         * c-common.c (handle_aligned_attribute): Use
13141         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
13142         default alignment value.
13143
13144         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
13145
13146         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
13147         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
13148
13149         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
13150         __BIGGEST_ALIGNMENT__.
13151
13152         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
13153
13154 2009-01-18  Richard Guenther  <rguenther@suse.de>
13155
13156         PR tree-optimization/38819
13157         * tree-flow.h (operation_could_trap_helper_p): Declare.
13158         * tree-eh.c (operation_could_trap_helper_p): Export.
13159         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
13160         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
13161         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
13162         are about to insert a possibly trapping instruction and fail
13163         in this case.
13164
13165 2009-01-18  Andreas Schwab  <schwab@suse.de>
13166
13167         * doc/install.texi (Configuration): Remove obsolete paragraph
13168         about use of --with-gnu-ld with --with-gnu-as.
13169
13170 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
13171
13172         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
13173         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
13174         Follow spelling conventions.
13175
13176 2009-01-18  Ben Elliston  <bje@au.ibm.com>
13177
13178         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
13179         C++ warning about implicit conversion from void * to struct
13180         bitmap_head_def *.
13181         (bitmap_obstack_free): Likewise for bitmap_element *.
13182         * Makefile.in (bitmap.o-warn): Remove.
13183
13184 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
13185
13186         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
13187
13188 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
13189             Tobias Grosser  <tobi.grosser@amd.com>
13190
13191         * graphite.c (graphite_trans_scop_block): Do not block single
13192         nested loops.
13193
13194 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
13195
13196         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
13197         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
13198         test with assertion.
13199
13200 2009-01-16  Richard Guenther  <rguenther@suse.de>
13201
13202         PR tree-optimization/38835
13203         PR middle-end/36227
13204         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
13205         and INT + PTR -> (INT)(PTR p+ INT) folding.
13206         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
13207
13208 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
13209
13210         PR target/38554
13211         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
13212         the subreg from a lowpart subreg if it is also casting the value.
13213
13214 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13215             Tobias Grosser  <tobi.grosser@amd.com>
13216
13217         * graphite.c (compare_prefix_loops): New.
13218         (build_scop_canonical_schedules): Rewritten.
13219         (graphite_transform_loops): Move build_scop_canonical_schedules
13220         after build_scop_iteration_domain.
13221
13222 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13223             Tobias Grosser  <tobi.grosser@amd.com>
13224
13225         * graphite.c (add_conditions_to_domain): Add the loops to
13226         the dimension of the iteration domain.  Do copy the domain
13227         only when it exists.
13228         (build_scop_conditions_1): Do not call add_conditions_to_domain.
13229         (add_conditions_to_constraints): New.
13230         (can_generate_code_stmt, can_generate_code): Removed.
13231         (gloog): Do not call can_generate_code.
13232         (graphite_transform_loops): Call add_conditions_to_constraints
13233         after building the iteration domain.
13234
13235 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
13236
13237         PR tree-optimization/38789
13238         * tree-ssa-threadedge.c
13239         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13240         __builtin_constant_p.
13241
13242 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
13243
13244         * dce.c (delete_unmarked_insns): Reversed the order that insns are
13245         examined before deleting them.
13246
13247 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
13248
13249         * function.c (aggregate_value_p): Correctly extract the function
13250         type from CALL_EXPR_FN lookup.
13251
13252 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13253
13254         * config/picochip/picochip.c (picochip_override_options): Revert
13255         CFI asm flag disable commited previously.
13256
13257 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
13258             Tobias Grosser  <tobi.grosser@amd.com>
13259             Jan Sjodin  <jan.sjodin@amd.com>
13260
13261         * graphite.c (scan_tree_for_params): On substractions negate
13262         all the coefficients of the term.
13263         (clast_to_gcc_expression_red): New.  Handle reduction expressions
13264         of more than two operands.
13265         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
13266         (get_vdef_before_scop): Handle also the case of default definitions.
13267
13268 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
13269
13270         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
13271         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
13272         Also use them when walking CALL_INSN_FUNCTION_USAGE.
13273
13274 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
13275             Joey Ye  <joey.ye@intel.com>
13276
13277         PR middle-end/37843
13278         * cfgexpand.c (expand_stack_alignment): Don't update stack
13279         boundary nor check incoming stack boundary here.
13280         (gimple_expand_cfg): Update stack boundary and check incoming
13281         stack boundary here.
13282
13283 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
13284
13285         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
13286
13287 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
13288
13289         PR rtl-optimization/38245
13290         * calls.c (expand_call): Add stack arguments to
13291         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13292         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
13293         in regs and partially in memory or BLKmode arguments.
13294         (emit_library_call_value_1): Add stack arguments to
13295         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13296         ACCUMULATE_OUTGOING_ARGS).
13297         * dce.c: Include tm_p.h.
13298         (find_call_stack_args): New function.
13299         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
13300         argument.
13301         (mark_insn): Call find_call_stack_args for CALL_Ps.
13302         (prescan_insns_for_dce): Walk insns backwards in bb rather than
13303         forwards.  Allocate and free arg_stores bitmap if needed, pass it
13304         down to deletable_insn_p, don't mark stores set in arg_stores
13305         bitmap, clear the bitmap at the beginning of each bb.
13306         * Makefile.in (dce.o): Depend on $(TM_P_H).
13307
13308 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
13309
13310         PR target/22599
13311         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
13312         to make sure the insn is a conditional test (bug 22599).  Reformat a
13313         few long lines.
13314
13315 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
13316
13317         PR middle-end/38431
13318         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
13319         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
13320         (gloog): Do not call cleanup_tree_cfg.
13321         (graphite_transform_loops): Call cleanup_tree_cfg after all
13322         scops have been code generated.
13323
13324 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
13325         * doc/gty.texi (Invoking the garbage collector): Added new node
13326         and section documenting ggc_collect.
13327
13328 2009-01-14  Richard Guenther  <rguenther@suse.de>
13329
13330         PR tree-optimization/38826
13331         PR middle-end/38477
13332         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
13333         initialization notes only if we actually emitted a warning.
13334         (intra_create_variable_infos): Add constraints for a result decl
13335         that is passed by hidden reference.
13336         (build_pred_graph): Mark all related variables non-direct on
13337         address-taking.
13338
13339 2009-01-14  Nick Clifton  <nickc@redhat.com>
13340
13341         * ira-conflicts.c: Include addresses.h for the definition of
13342         base_reg_class.
13343         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
13344         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
13345
13346 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
13347
13348         PR target/38811
13349         * Makefile.in (ira-lives.o): Add except.h.
13350
13351         * ira-lives.c: Include except.h.
13352         (process_bb_node_lives): Process can_throw_internal.
13353
13354 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
13355
13356         PR rtl-optimization/38774
13357         * combine.c (simplify_set): When undoing cc_use change, don't do
13358         PUT_CODE on the newly created comparison, but instead put back the
13359         old comparison.
13360
13361 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
13362
13363         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
13364         values.  Remove duplicate arm8 entry.
13365
13366 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13367
13368         PR tree-optimization/38786
13369         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
13370         the SSA_NAME case of expand_scalar_variables_expr.
13371         Set the type of an expression to the type of its assign statement.
13372         (expand_scalar_variables_expr): Also gather the scalar computation
13373         used to index the memory access.  Do not pass loop_p.
13374         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
13375         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
13376         the gimple_stmt_iterator where it inserts new code.
13377         Do not pass loop_p.
13378         (copy_bb_and_scalar_dependences): Do not pass loop_p.
13379         (translate_clast): Update call to copy_bb_and_scalar_dependences.
13380
13381 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13382
13383         * graphite.h (debug_value): Removed.
13384         * graphite.c (debug_value): Removed.
13385
13386 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13387
13388         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
13389         ldrd/strd with two 32-bit instructions.
13390
13391 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13392
13393         * config/arm/arm.c (struct processors): Pass for speed down into
13394         cost helper functions.
13395         (const_ok_for_op): Handle COMPARE and inequality nodes.
13396         (arm_rtx_costs_1): Rewrite.
13397         (arm_size_rtx_costs): Update prototype.
13398         (arm_rtx_costs): Pass speed down to helper functions.
13399         (arm_slowmul_rtx_costs): Rework cost calculations.
13400         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
13401         (arm_9e_rtx_costs): Likewise.
13402
13403 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
13404
13405         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
13406         relocations of local symbols wider than UNITS_PER_WORD are not valid.
13407         (alpha_legitimize_address): Do not split local symbols wider than
13408         UNITS_PER_WORD into HIGH/LO_SUM parts.
13409
13410 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
13411
13412         PR bootstrap/38580
13413         * gcc.c (process_command): Replace call to execvp with calls
13414         to pex_one and exit.
13415
13416 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
13417
13418         PR target/29141
13419         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
13420         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
13421         variant for devices with 3-byte PC.
13422         (__tablejump_elpm__): New.
13423
13424 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13425
13426         PR c/32041
13427         * c-parser.c (c_parser_postfix_expression): Allow `->' in
13428         offsetof member-designator, handle it as `[0].'.
13429
13430 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13431
13432         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
13433         function when not using named sections on targets with named sections
13434         if branch distance is less than 262132.
13435
13436 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
13437
13438         * combine.c (combine_instructions):  Recompute
13439         optimize_this_for_speed_p  for each BB in the main combine loop.
13440
13441 2009-01-12  Tomas Bily  <tbily@suse.cz>
13442
13443         PR middlend/38385
13444         * tree-loop-distribution.c (prop_phis): New function.
13445         (generate_builtin): Call prop_phis.
13446         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
13447
13448 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13449
13450         PR tree-optimization/38807
13451         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
13452         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
13453
13454 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
13455
13456         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
13457         subreg of op0 to the original op0.
13458
13459 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
13460
13461         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
13462
13463 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
13464
13465         PR debug/7055
13466         * mips-tfile.c (parse_def): Fix parsing of def strings
13467         starting with digits.
13468
13469 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
13470
13471         PR target/38695
13472         * config/arm/arm.c (arm_is_long_call_p): Don't call
13473         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
13474
13475 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
13476
13477         * regrename.c (regrename_optimize): Fix dumping.
13478         (find_oldest_value_reg): Preserve REG_POINTER.
13479         (copy_hardreg_forward_1): Likewise.
13480
13481 2009-01-09  Diego Novillo  <dnovillo@google.com>
13482
13483         * gimple.h (struct gimple_statement_base) <uid>: Document
13484         the restrictions on its use.
13485         (gimple_uid): Tidy.
13486         (gimple_set_uid): Tidy.
13487
13488 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13489
13490         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
13491         zero guard even if align_bytes != 0 and count is smaller than
13492         size_needed.
13493
13494 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
13495
13496         PR rtl-optimization/38495
13497         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
13498         (add_range_and_copies_from_move_list): Print all added ranges.
13499         Add ranges to memory optimized destination.
13500
13501 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13502
13503         PR target/38686
13504         PR target/38708
13505         * config/i386/i386.c (override_options): Reject
13506         -mstringop-strategy=rep_8byte with -m32.
13507         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
13508         to 1.  Do count comparison against epilogue_size_needed at compile
13509         time even when count_exp was constant forced into register.  For
13510         size_needed don't jump to epilogue, instead just avoid aligning
13511         and invoke the body algorithm.  If need_zero_guard, add zero guard
13512         even if count is non-zero, but smaller than size_needed + number of
13513         bytes that could be stored for alignment.
13514         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
13515         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
13516         but smaller than size_needed + number of bytes that could be stored
13517         for alignment.  Compare size_needed with epilogue_size_needed instead
13518         of desired_align - align, don't adjust size_needed, pass
13519         epilogue_size_needed to the epilogue expanders.
13520
13521         PR c/35742
13522         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
13523
13524 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13525
13526         * pa.c (last_address): Change to unsigned.
13527         (update_total_code_bytes): Change argument to unsigned.  Don't
13528         check if insn addresses are set.
13529         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
13530         addresses are not set.
13531         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
13532
13533 2009-01-09  Nick Clifton  <nickc@redhat.com>
13534
13535         * config/sh/symbian.c: Replace uses of DECL_INLINE with
13536         DECL_DECLARED_INLINE_P.
13537
13538 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13539
13540         PR middle-end/38347
13541         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
13542         GET_MODE (op0) in operand_subword_force calls.
13543
13544         PR middle-end/38771
13545         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
13546         fold_convert arg0 operands to TREE_TYPE (op0) first.
13547
13548 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
13549
13550         * params.def (ira-max-conflict-table-size): Decrease default value
13551         to 1000.
13552
13553 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
13554
13555         PR tree-optimization/37031
13556         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
13557         on parameter_set.
13558         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
13559         allocate it using gc instead of heap, use VEC_quick_push instead of
13560         VEC_safe_push.
13561         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
13562         instead of heap, use VEC_quick_push instead of VEC_safe_push.
13563         * tree-data-ref.h (struct access_matrix): Change matrix to gc
13564         allocated vector from heap allocated.
13565         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
13566         * tree-loop-linear.c (linear_transform_loops): Allocate nest
13567         vector only after perfect_loop_nest_depth call.
13568
13569 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
13570             Jan Sjodin  <jan.sjodin@amd.com>
13571
13572         PR tree-optimization/38559
13573         * graphite.c (debug_value, copy_constraint,
13574         swap_constraint_variables, scale_constraint_variable, ): New.
13575         (get_lower_bound, get_upper_bound): Removed.
13576         (graphite_trans_bb_strip_mine): Clean up this code that works
13577         only for constant number of iterations.  Fully copy upper and
13578         lower bound constraints, not only the constant part of them.
13579         * graphite.h (debug_value): Declared.
13580
13581 2009-01-08  Ira Rosen  <irar@il.ibm.com>
13582
13583         PR tree-optimization/37194
13584         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
13585         Don't add the cost of cost model guard in prologue to scalar
13586         outside cost in case of known number of iterations.
13587
13588 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
13589             Alan Modra  <amodra@bigpond.net.au>
13590
13591         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
13592         non-word-aligned REG+CONST addressing.
13593
13594 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13595
13596         PR target/38706
13597         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
13598         free_after_compilation when outputting a thunk.
13599         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
13600         Do not call free_after_compilation here.
13601
13602 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13603
13604         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
13605         (ix86_valid_target_attribute_inner_p): Ditto.
13606
13607 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
13608
13609         PR tree-optimization/38492
13610         PR tree-optimization/38498
13611         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
13612         * tree-chrec.h (scev_is_linear_expression): Declared.
13613         * graphite.c (graphite_cannot_represent_loop_niter): New.
13614         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
13615         (graphite_loop_normal_form): Use gcc_assert.
13616         (scan_tree_for_params): Use CASE_CONVERT.
13617         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
13618         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
13619         Use gcc_assert.  Discard scops that contain unhandled cases.
13620         (build_scop_conditions): Return a boolean status for unhandled cases.
13621         (strip_mine_profitable_p): Print the loop number, not its depth.
13622         (is_interchange_valid): Pass the depth of the loop nest, don't
13623         recompute it wrongly.
13624         (graphite_trans_bb_block): Same.
13625         (graphite_trans_bb_block): Print tentative of loop blocking.
13626         (graphite_trans_scop_block): Do not print that the loop has been
13627         blocked.
13628         (graphite_transform_loops): Do not handle scops that contain condition
13629         scalar phi nodes.
13630
13631 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
13632
13633         AVX Programming Reference (December, 2008)
13634         * config/i386/avxintrin.h (_mm256_stream_si256): New.
13635         (_mm256_stream_pd): Likewise.
13636         (_mm256_stream_ps): Likewise.
13637
13638         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
13639         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
13640         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
13641         (bdesc_special_args): Add __builtin_ia32_movntdq256,
13642         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
13643         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
13644         (ix86_expand_special_args_builtin): Likewise.
13645
13646         * config/i386/sse.md (AVXMODEDI): New.
13647         (avx_movnt<mode>): Likewise.
13648         (avx_movnt<mode>): Likewise.
13649         (<sse>_movnt<mode>): Remove AVX support.
13650         (sse2_movntv2di): Likewise.
13651
13652 2009-01-07  Richard Guenther  <rguenther@suse.de>
13653
13654         PR middle-end/38751
13655         * fold-const.c (extract_muldiv): Remove obsolete comment.
13656         (fold_plusminus_mult_expr): Undo MINUS_EXPR
13657         to PLUS_EXPR canonicalization for the canonicalization.
13658
13659 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
13660
13661         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
13662         hosted cross-compilers generating less efficient code.
13663
13664 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13665
13666         * function.h (rtl_data): Add a dbr_scheduled_p field.
13667         * reorg.c (dbr_schedule): Set it.
13668         (gate_handle_delay_slots): Check it.
13669         * config/mips/mips.c (mips_base_delayed_branch): Delete.
13670         (mips_reorg): Check flag_delayed_branch instead of
13671         mips_base_delayed_branch.
13672         (mips_override_options): Don't set mips_base_delayed_branch
13673         or flag_delayed_branch.
13674
13675 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13676
13677         PR rtl-optimization/38426.
13678         * ira.c (ira): Set current_function_is_leaf earlier.
13679
13680 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
13681
13682         PR rtl-optimization/38722
13683         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
13684         too early, only set a flag and modify after last possible
13685         undo_all point.
13686
13687 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
13688
13689         PR c/34252
13690         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
13691         * real.c (decimal_single_format): Correct values of emin and emax.
13692         (decimal_double_format): Ditto.
13693         (decimal_quad_format): Ditto.
13694         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
13695         computation of DECnn_MIN and DECnn_MAX for corrected values of
13696         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
13697         __DECnn_MIN__, and adjust its computation for the corrected value
13698         of emin.
13699
13700 2009-01-06  Jan Hubicka  <jh@suse.cz>
13701
13702         PR target/38744
13703         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
13704
13705 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
13706
13707         * doc/contrib.texi (Contributors): Slightly adjust the end note.
13708         Add Robert Clark to the list of testers.
13709
13710 2009-01-06  Jan Hubicka  <jh@suse.cz>
13711             Kai Tietz  <kai.tietz@onevision.com>
13712
13713         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
13714         * config/i386/i386.c (ix86_expand_call): Add clobbers.
13715
13716 2009-01-06  Jan Hubicka  <jh@suse.cz>
13717             Kai Tietz  <kai.tietz@onevision.com>
13718
13719         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
13720         for w64 ABI.
13721         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
13722         (ix86_nsaved_regs): Count only general purpose regs.
13723         (ix86_nsaved_sseregs): New.
13724         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
13725         to 16 for w64; compute padding and size of sse reg save area.
13726         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
13727         general purpose regs.
13728         (ix86_emit_save_sse_regs_using_mov): New.
13729         (ix86_expand_prologue): Save SSE regs if needed.
13730         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
13731         (ix86_emit_restore_sse_regs_using_mov): New.
13732         (ix86_expand_epilogue): Save SSE regs if needed.
13733
13734 2009-01-06  Jan Hubicka  <jh@suse.cz>
13735             Kai Tietz  <kai.tietz@onevision.com>
13736
13737         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
13738         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
13739         functions when accumulate outgoing args is off.
13740
13741 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
13742
13743         PR bootstrap/38742
13744         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
13745         before using pseudos_have_intersected_live_ranges_p.
13746
13747         * ira-int.h (ira_assert): Always define.
13748
13749 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
13750
13751         AVX Programming Reference (December, 2008)
13752         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
13753         (_mm256_permute2_pd): Likewise.
13754         (_mm_permute2_ps): Likewise.
13755         (_mm256_permute2_ps): Likewise.
13756         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
13757         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
13758
13759         * config/i386/i386.c (ix86_builtins): Remove
13760         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
13761         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
13762         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
13763         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
13764         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
13765         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
13766         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
13767         __builtin_ia32_vpermil2ps256.
13768         (ix86_init_mmx_sse_builtins): Updated.
13769         (ix86_expand_args_builtin): Likewise.
13770
13771 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13772
13773         * pa.c (output_call): Relocate non-jump insns in the delay slot of
13774         long absolute calls when generating PA 2.0 code.
13775
13776 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
13777
13778         PR rtl-optimization/38583
13779         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
13780
13781         * params.def (ira-max-conflict-table-size): New.
13782
13783         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
13784
13785         * ira.h (ira_conflicts_p): New external definition.
13786
13787         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
13788         table.  Report this.  Return result of building.
13789         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
13790         building conflict table.
13791
13792         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
13793         (ira_color): Use ira_conflicts_p.
13794
13795         * global.c: Include ira.h.
13796         (pseudo_for_reload_consideration_p, build_insn_chain): Use
13797         ira_conflicts_p.
13798
13799         * Makefile.in (global.o): Add ira.h.
13800
13801         * ira-build.c (mark_all_loops_for_removal,
13802         propagate_some_info_from_allocno): New.
13803         (remove_unnecessary_allocnos): Call
13804         propagate_some_info_from_allocno.
13805         (remove_low_level_allocnos): New.
13806         (remove_unnecessary_regions): Add parameter.  Call
13807         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
13808         parameter to remove_unnecessary_regions.
13809         (ira_build): Remove all regions but root if the conflict table was
13810         not built.  Update conflict hard regs for allocnos crossing calls.
13811
13812         * ira.c (ira_conflicts_p): New global.
13813         (ira): Define and use ira_conflicts_p.
13814
13815         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
13816         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
13817         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
13818
13819 2009-01-06  Ben Elliston  <bje@au.ibm.com>
13820
13821         * gengtype-lex.l (YY_NO_INPUT): Define.
13822
13823 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13824
13825         PR c/34911
13826         * c-common.c (handle_vector_size_attribute): Also reject
13827         BOOLEAN_TYPE types.
13828
13829 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
13830
13831         PR tree-optimization/38492
13832         * graphite.c (rename_map_elt, debug_rename_elt,
13833         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
13834         rename_map_elt_info, eq_rename_map_elts,
13835         get_new_name_from_old_name, bb_in_sese_p): Moved around.
13836         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
13837         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
13838         (sese_build_livein_liveouts): New.
13839         (new_sese, free_sese): New.
13840         (new_scop): Call new_sese.
13841         (free_scop): Call free_sese.
13842         (rename_variables_from_edge, rename_phis_end_scop): Removed.
13843         (register_old_new_names): Renamed register_old_and_new_names.
13844         (register_scop_liveout_renames, add_loop_exit_phis,
13845         insert_loop_close_phis, struct igp,
13846         default_liveout_before_guard, add_guard_exit_phis,
13847         insert_guard_phis, copy_renames): New.
13848         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
13849         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
13850         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
13851         (scop_adjust_phis_for_liveouts): New.
13852         (gloog): Call scop_adjust_phis_for_liveouts.
13853
13854         * graphite.h (struct sese): Documented.  Added fields liveout,
13855         num_ver and livein.
13856         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
13857         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
13858         (struct scop): Added field liveout_renames.
13859         (SCOP_LIVEOUT_RENAMES): New.
13860
13861 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13862
13863         PR tree-optimization/38510
13864         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
13865         (translate_clast): Call recompute_all_dominators before
13866         graphite_verify.
13867         (gloog): Call recompute_all_dominators before graphite_verify.
13868
13869 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13870             Jan Sjodin  <jan.sjodin@amd.com>
13871
13872         PR tree-optimization/38500
13873         * graphite.c (create_sese_edges): Call fix_loop_structure after
13874         splitting blocks.
13875
13876 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
13877
13878         * config.gcc: Add m32r*-*-rtems*.
13879         * config/m32r/rtems.h: New file.
13880
13881 2009-01-05  Ben Elliston  <bje@au.ibm.com>
13882
13883         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
13884         (.po.pox): Likewise.
13885         (po/gcc.pot): Likewise.
13886
13887 2009-01-04  David S. Miller  <davem@davemloft.net>
13888
13889         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
13890         (STARTING_FRAME_OFFSET): Always set to zero.
13891
13892 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
13893
13894         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
13895         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
13896         fixed-point types, and vectors of the same.
13897
13898 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
13899
13900         * config/mips/sync.md (*mb_barrier): Rename to...
13901         (*memory_barrier): ...this.
13902
13903 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
13904
13905         * doc/extend.texi (Function Attributes): Move @cindex after @item
13906         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
13907         and put in alphabetical order. Fix 'target' name and put in order.
13908         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
13909         typos.
13910
13911 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
13912
13913         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
13914         (memory_barrier): Expand as unspec instead of unspec_volatile.
13915         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13916         (*memory_barrier): Define as unspec instead of unspec_volatile.
13917         Use (match_dup 0) as input operand.
13918
13919         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
13920         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
13921         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
13922         scratch register.  Remove operand 1.
13923         (*stbar): Define as unspec instead of unspec_volatile.
13924         Use (match_dup 0) as input operand, remove (const_int 8).
13925         (*membar): Define as unspec instead of unspec_volatile.
13926         Use (match_dup 0) as input operand, remove input operand 2.
13927
13928         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
13929         (memory_barrier): Expand as unspec instead of unspec_volatile.
13930         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13931         (*memory_barrier): Define as unspec instead of unspec_volatile.
13932         Use (match_dup 0) as input operand.
13933
13934         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
13935         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13936         Set volatile flag on operand 0.
13937         (*memory_barrier): New insn pattern.
13938
13939         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
13940         insn operands.
13941         (*memory_barrier): Use (match_dup 0) as input operand.
13942
13943         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
13944         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13945         Set volatile flag on operand 0.
13946         (*mb_internal): New insn pattern.
13947
13948         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
13949
13950 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
13951
13952         PR middle-end/38586
13953         * function.c (struct temp_slot): Move to the section of the file
13954         that deals with temp slots.  Remove field 'address'.
13955         (temp_slot_address_table): New hash table of address -> temp slot.
13956         (struct temp_slot_address_entry): New struct, items for the table.
13957         (temp_slot_address_compute_hash, temp_slot_address_hash,
13958         temp_slot_address_eq, insert_temp_slot_address): Support functions
13959         for the new table.
13960         (find_temp_slot_from_address): Rewrite to use the new hash table.
13961         (remove_unused_temp_slot_addresses): Remove addresses of temp
13962         slots that have been made available.
13963         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
13964         worker function for remove_unused_temp_slot_addresses.
13965         (assign_stack_temp_for_type): Don't clear the temp slot address list.
13966         Add the temp slot address to the address -> temp slot map.
13967         (update_temp_slot_address): Update via insert_temp_slot_address.
13968         (free_temp_slots): Call remove_unused_temp_slot_addresses.
13969         (pop_temp_slots): Likewise.
13970         (init_temp_slots): Allocate the address -> temp slot map, or empty
13971         the map if it is already allocated.
13972         (prepare_function_start): Initialize temp slot processing.
13973
13974 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
13975
13976         PR middle-end/38584
13977         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
13978         Calculate the size of all stack vars assuming no packing of stack
13979         vars will happen, replacing a quadratic algorithm with a linear one.
13980
13981 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
13982
13983         PR target/38707
13984         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
13985         can't be used.
13986
13987 2009-01-03  Diego Novillo  <dnovillo@google.com>
13988
13989         * doc/contrib.texi: Update contributions.
13990
13991 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
13992
13993         PR c++/38705
13994         * builtins.c (fold_builtin_memory_op): Give up if either operand
13995         is volatile.  Set srctype or desttype to non-qualified version
13996         of the other type.
13997
13998         PR c/38700
13999         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
14000         and FUNCTION_DECLs.
14001
14002 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
14003
14004         PR rtl-optimization/35805
14005         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
14006         problem if fast dce is able to remove any instructions.
14007         * dce.c (dce_process_block): Fix dump message.
14008
14009 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
14010
14011         PR 33649
14012         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
14013
14014 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
14015
14016         PR middle-end/38690
14017         * tree-flow.h (op_code_prio, op_prio): New prototypes.
14018         * tree-pretty-print.c (op_code_prio): New function.
14019         (op_prio): No longer static.  Use op_code_prio.
14020         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
14021         Use op_prio and op_code_prio to determine if () should be
14022         printed around operand(s) or not.
14023
14024         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
14025         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
14026         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
14027         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
14028         pp_character instead of pp_string for single letter printing.
14029
14030 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
14031
14032         * doc/extend.texi: Fix '#pragma GCC option' typo.
14033
14034 2009-01-02  Richard Guenther  <rguenther@suse.de>
14035
14036         * doc/install.texi (--enable-checking): Mention different
14037         default for stage1.
14038         (--enable-stage1-checking): Document.
14039
14040 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
14041
14042         PR middle-end/30142
14043         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
14044         case to be an error.
14045
14046 2009-01-02  Ben Elliston  <bje@au.ibm.com>
14047
14048         * config/fp-bit.h (pack_d): Constify argument.
14049         * config/fp-bit.c (makenan): Constify return type. Remove casts.
14050         (isnan): Constify argument.
14051         (isinf): Likewise.
14052         (iszero): Likewise.
14053         (pack_d): Likewise.
14054         (_fpadd_parts): Constify return type.
14055         (_fpmul_parts): Likewise.
14056         (_fpdiv_parts): Likewise.
14057
14058 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
14059
14060         PR c/36489
14061         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
14062         warn about overwriting initializer with side-effects or
14063         -Woverride-init if !IMPLICIT.
14064         (output_init_element): Likewise.  Pass IMPLICIT down to
14065         add_pending_init.
14066         (process_init_element): Add IMPLICIT argument.  Pass it down
14067         to output_init_element.
14068         (push_init_element, pop_init_level, set_designator): Adjust
14069         process_init_element callers.
14070         (set_nonincremental_init, set_nonincremental_init_from_string):
14071         Adjust add_pending_init callers.
14072         (output_pending_init_elements): Adjust output_init_element callers.
14073         * c-tree.h (process_init_element): Adjust prototype.
14074         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
14075         process_init_element callers.
14076
14077 \f
14078 Copyright (C) 2009 Free Software Foundation, Inc.
14079
14080 Copying and distribution of this file, with or without modification,
14081 are permitted in any medium without royalty provided the copyright
14082 notice and this notice are preserved.