OSDN Git Service

9305d0cfaae2664e3ca0d3a038c922f29b6ec0fa
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
2
3         PR target/40313
4         * config/sh/sh.c: Include debug.h.
5         (sh_expand_epilogue): Emit a blockage insn before the frame
6         pointer adjustment also when dwarf2out_do_frame returns true.
7
8 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
9
10         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
11         (thumb2_extendqidi2): New pattern.
12
13 2009-05-31  Ira Rosen  <irar@il.ibm.com>
14
15         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
16         mark phis for renaming.
17         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
18         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19         Call mark_sym_for_renaming.
20         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
21         * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
22         initialization and a call to mark_set_for_renaming.
23
24 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
25
26         PR middle-end/40304
27         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
28         frame related even if !set_cfa && style < 0.
29
30 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
31
32         * config/i386/mingw-tls.c: New file.
33         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
34         mingw-tls.c file.
35         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
36         it for targets defining _WIN32 but not __CYGWIN__.
37
38 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
39
40         * configure.ac: Add MPC support.
41         
42         * config.in, configure: Regenerate.     
43
44 2009-05-29  Richard Henderson  <rth@redhat.com>
45
46         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
47         NOTE_INSN_BASIC_BLOCK.
48         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
49         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
50         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
51         to be deleted.
52         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
53         add in_use field.
54         (add_cfi): Disable check redefining cfa away from drap.
55         (lookup_cfa_1): Add remember argument; handle remember/restore.
56         (lookup_cfa): Pass remember argument.
57         (cfa_remember): New.
58         (compute_barrier_args_size_1): Remove sibcall check.
59         (dwarf2out_frame_debug_def_cfa): New.
60         (dwarf2out_frame_debug_adjust_cfa): New.
61         (dwarf2out_frame_debug_cfa_offset): New.
62         (dwarf2out_frame_debug_cfa_register): New.
63         (dwarf2out_frame_debug_cfa_restore): New.
64         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
65         (dwarf2out_begin_epilogue): New.
66         (dwarf2out_frame_debug_restore_state): New.
67         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
68         DW_CFA_restore_state.
69         (output_cfi_directive): Likewise.
70         (convert_cfa_to_fb_loc_list): Likewise.
71         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
72         * dwarf2out.h: Update.
73         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
74         (copy_insn_1): Early out for null.
75         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
76         and dwarf2out_frame_debug_restore_state.
77         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
78         (prologue_insn_hash, epilogue_insn_hash): New.
79         (free_after_compilation): Adjust freeing accordingly.
80         (record_insns): Create hash table if needed; push insns into
81         hash instead of array.
82         (maybe_copy_epilogue_insn): New.
83         (contains): Search hash table instead of array.
84         (sibcall_epilogue_contains): Remove.
85         (thread_prologue_and_epilogue_insns): Split eh_return insns
86         and mark them as epilogues.
87         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
88         scanning in terms of basic blocks.
89         * insn-notes.def (CFA_RESTORE_STATE): New.
90         * jump.c (returnjump_p_1): Accept EH_RETURN.
91         (eh_returnjump_p_1, eh_returnjump_p): New.
92         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
93         CFA_REGISTER, CFA_RESTORE): New.
94         * rtl.def (EH_RETURN): New.
95         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
96
97         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
98         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
99
100         * config/i386/i386.c (gen_push): Update cfa state.
101         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
102         add a CFA_ADJUST_CFA note.
103         (ix86_dwarf_handle_frame_unspec): Remove.
104         (ix86_expand_prologue): Update cfa state.
105         (ix86_emit_restore_reg_using_pop): New.
106         (ix86_emit_restore_regs_using_pop): New.
107         (ix86_emit_leave): New.
108         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
109         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
110         * config/i386/i386.h (struct machine_cfa_state): New.
111         (ix86_cfa_state): New.
112         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
113         (eh_return_internal): Merge from eh_return_<mode>,
114         use eh_return rtx, split w/ epilogue.
115
116 2009-05-29  Ian Lance Taylor  <iant@google.com>
117
118         * builtins.c (validate_gimple_arglist): Don't use va_arg with
119         enum type.
120         * calls.c (emit_library_call_value_1): Likewise.
121
122         * c-typeck.c (c_build_va_arg): New function.
123         * c-tree.h (c_build_va_arg): Declare.
124         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
125         instead of build_va_arg.
126
127 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
128
129         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
130         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
131         (ptr_difference_cost): Use affine combinations to compute it.
132         (difference_cost): Likewise.
133         (get_computation_cost_at): Compute more accurate cost for addresses
134         if the ratio is a multiplier allowed in addresses.
135         For non-addresses, consider that an additional offset or symbol is
136         added only once.
137
138 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
139
140         * config/i386/i386.c (ix86_decompose_address): Avoid useless
141         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
142
143         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
144         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
145         (prefix_rex): For UNIT_MMX don't imply the prefix by default
146         if MODE_DI.
147         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
148         to 1 for TYPE_SSE{IADD1,CVT1}.
149         (prefix_vex_imm8): Removed.
150         (length_vex): Only pass 1 as second argument to
151         ix86_attr_length_vex_default if prefix_extra is 0.
152         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
153         (length): For prefix vex computation use length_immediate
154         attribute instead of prefix_vex_imm8.
155         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
156         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
157         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
158         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
159         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
160         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
161         a space in between the operands.
162         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
163         if one operand is 0xff and the other one si, di, bp or sp.
164         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
165         other one si, di, bp or sp.
166         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
167         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
168         type and mode attributes.
169         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
170         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
171         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
172         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
173         prefix_data16 attribute iff MODE_DF.
174         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
175         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
176         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
177         constm128_operand in length_immediate computation.
178         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
179         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
180         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
181         length_immediate attribute to 1.
182         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
183         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
184         for certain alternatives.
185         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
186         prefix_data16 attribute if MODE_V1DF.
187         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
188         length_immediate to 1.
189         (set_got_rex64, set_rip_rex64): Remove length attribute, set
190         length_address to 4, set mode attribute to MODE_DI.
191         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
192         (fxam<mode>2_i387): Set length attribute to 4.
193         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
194         *prefetch_3dnow_rex): Override length_address attribute.
195         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
196         attributes.
197         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
198         (constm128_operand): Removed.
199         * config/i386/i386.c (memory_address_length): For
200         disp && !index && !base in 64-bit mode account for SIB byte if
201         print_operand_address can't optimize disp32 into disp32(%rip)
202         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
203         for fs: or gs: segment.
204         (ix86_attr_length_immediate_default): When checking if shortform
205         is possible, truncate immediate to the length of the non-shortened
206         immediate.
207         (ix86_attr_length_address_default): Ignore MEM_P operands
208         with X constraint.
209         (ix86_attr_length_vex_default): Only check for DImode on
210         GENERAL_REG_P operands.
211         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
212         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
213         (sse_cvttps2pi): Clear prefix_rep attribute.
214         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
215         attribute.
216         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
217         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
218         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
219         iff operand 2 is const_int_operand.
220         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
221         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
222         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
223         instead of vex.
224         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
225         prefix_data16.
226         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
227         prefix_data16 attribute for movlpd and movhpd instructions.
228         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
229         length_immediate for shufpd instruction.
230         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
231         (avx_cmpp<avxmodesuffixf2c><mode>3,
232         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
233         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
234         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
235         *vec_dupv4sf_avx, *vec_dupv4sf): Set
236         length_immediate attribute to 1.
237         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
238         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
239         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
240         prefix_data16 attribute for the first alternative to 1.
241         (*avx_loadlps): Override length_immediate for the first alternative.
242         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
243         attributes for second alternative.
244         (*vec_concatv2sf_sse4_1): Override length_immediate and
245         prefix_data16 attributes for second alternative.
246         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
247         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
248         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
249         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
250         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
251         prefix_data16 and length_immediate to 1.
252         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
253         to 1.
254         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
255         prefix_extra attribute for variants that don't have 0f prefix
256         alone.
257         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
258         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
259         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
260         *sse4_1_pextrd): Set length_immediate to 1.
261         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
262         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
263         to 1.
264         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
265         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
266         length_immediate to 1 for second alternative.
267         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
268         prefix_extra and length_immediate attributes for the first
269         alternative.
270         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
271         first alternative.
272         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
273         to 1 for the first and third alternative.
274         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
275         alternative.
276         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
277         attribute.
278         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
279         attribute to 0.
280         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
281         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
282         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
283         *avx_psign<mode>3): Set prefix_extra attribute to 1.
284         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
285         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
286         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
287         ssse3_psign<mode>3): Override prefix_rex attribute.
288         (*avx_palignrti): Override prefix_extra and length_immediate
289         to 1.
290         (ssse3_palignrti): Override length_immediate to 1.
291         (ssse3_palignrdi): Override length_immediate to 1, override
292         prefix_rex attribute.
293         (abs<mode>2): Override prefix_rep to 0, override prefix_rex
294         attribute.
295         (sse4a_extrqi): Override length_immediate to 2.
296         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
297         (sse4a_insertq): Override prefix_data16 to 0.
298         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
299         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
300         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
301         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
302         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
303         and length_immediate to 1.
304         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
305         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
306         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
307         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
308         and length_immediate to 1.
309         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
310         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
311         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
312         avx_ptest256): Override prefix_extra to 1.
313         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
314         Override prefix_data16 and length_immediate to 1.
315         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
316         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
317         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
318         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
319         prefix_data16 to 0 and prefix_extra to 2.
320         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
321         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
322         attribute.
323         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
324         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
325         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
326         and prefix_extra to 2.
327         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
328         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
329         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
330         avx_vpermilvar<mode>3,
331         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
332         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
333         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
334         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
335         Override prefix_extra to 1.
336         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
337         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
338         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
339         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
340         prefix_extra and length_immediate to 1.
341         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
342         modrm to 0.
343         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
344         to 1 for the first alternative.
345         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
346         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
347         cases.
348         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
349         *movv2sf_internal_avx, *movv2sf_internal): Override
350         prefix_rep attribute for certain alternatives.
351         (*mov<mode>_internal): Override prefix_rep or prefix_data16
352         attributes for certain alternatives.
353         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
354         attributes for certain alternatives.
355         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
356         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
357         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
358         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
359         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
360         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
361         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
362         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
363         length_immediate to 1 if operand 2 is const_int_operand.
364         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
365         *vec_extractv2si_1): Set length_immediate
366         attribute to 1.
367         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
368         using old 3DNOW insn rather than SSE/3DNOW_A.
369         (mmx_emms, mmx_femms): Clear modrm attribute.
370
371 2009-05-29  Martin Jambor  <mjambor@suse.cz>
372
373         * tree-sra.c:  New implementation of SRA.
374
375         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
376         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
377         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
378         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
379         (SRA_MAX_STRUCTURE_COUNT): Removed.
380         (SRA_FIELD_STRUCTURE_RATIO): Removed.
381         * doc/invoke.texi (sra-max-structure-size): Removed.
382         (sra-field-structure-ratio): Removed.
383
384 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
385
386         PR middle-end/40291
387         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
388         before expansion.
389
390 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
391
392         PR rtl-optimization/40101
393         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
394         seqno.  Adjust comment.
395         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
396         inserting bookkeeping before a jump, the jump is not scheduled.
397         When no positive seqno found, provide a value.  Add comment.
398
399 2009-05-29  Richard Guenther  <rguenther@suse.de>
400
401         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
402         short-cutting on the first component.
403
404 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
405
406         PR middle-end/39958
407         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
408         for trees other than decls/types.
409
410 2009-05-29  Richard Guenther  <rguenther@suse.de>
411
412         * tree-ssa-operands.c (get_expr_operands): Do not handle
413         INDIRECT_REFs in the handled-component case.  Remove
414         unused get_ref_base_and_extent case.
415         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
416         tree_low_cst and host_integerp where possible.
417         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
418         codes for equivalence.
419         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
420
421 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
422
423         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
424         to tmake_file for i[34567]86-*-cygwin*. 
425
426 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
427
428         PR target/40017
429         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
430         (altivec_categorize_keyword, init_vector_keywords,
431         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
432         similar to bool.
433
434 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
435
436         * tree.c (handle_dll_attribute): Check if node is
437         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
438
439 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
440
441         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
442         component.
443         (thumb2_zero_extendqidi2): Likewise.
444
445 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
446
447         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
448         instead of gen_movrt.
449         * config/sh/sh.md (movrt): Remove.
450
451 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
452
453         * doc/invoke.texi (IA-64 Options)
454         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
455         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
456         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
457         -msched-prefer-non-control-spec-insns,
458         -msched-stop-bits-after-every-cycle,
459         -msched-count-spec-in-critical-path,
460         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
461         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
462         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
463         and -msched-spec-verbose.
464
465 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
466
467         * config/arm/lib1funcs.asm (__clear_cache): Define if
468         L_clear_cache.
469         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
470         error if used.
471         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
472
473 2009-05-28  Richard Guenther  <rguenther@suse.de>
474
475         * tree-ssa-alias.c (ao_ref_init): New function.
476         (ao_ref_base): Likewise.
477         (ao_ref_base_alias_set): Likewise.
478         (ao_ref_alias_set): Likewise.
479         (refs_may_alias_p_1): Change signature.
480         (refs_may_alias_p): Adjust.
481         (refs_anti_dependent_p): Likewise.
482         (refs_output_dependent_p): Likewise.
483         (call_may_clobber_ref_p_1): Change signature.
484         (call_may_clobber_ref_p): Adjust.
485         (stmt_may_clobber_ref_p_1): New function split out from ...
486         (stmt_may_clobber_ref_p): ... here.
487         (maybe_skip_until): Adjust signature.
488         (get_continuation_for_phi): Likewise.
489         (walk_non_aliased_vuses): Likewise.
490         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
491         (ao_ref_init): Declare.
492         (ao_ref_base): Likewise.
493         (ao_ref_alias_set): Likewise.
494         (stmt_may_clobber_ref_p_1): Likewise.
495         (walk_non_aliased_vuses): Adjust.
496         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
497         (get_ref_from_reference_ops): remove.
498         (vn_reference_lookup_2): Adjust signature.
499         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
500         (vn_reference_lookup_pieces): Adjust signature, do not re-build
501         trees.
502         (vn_reference_lookup): Adjust.
503         (vn_reference_insert): Likewise.
504         (vn_reference_insert_pieces): Adjust signature.
505         (visit_reference_op_call): Adjust.
506         * tree-ssa-pre.c (get_expr_type): Simplify.
507         (phi_translate_1): Adjust.
508         (compute_avail): Likewise.
509         (translate_vuse_through_block): Do not re-build trees.
510         (value_dies_in_block_x): Likewise.
511         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
512         fields.
513         (vn_reference_lookup_pieces): Adjust declaration.
514         (vn_reference_insert_pieces): Likewise.
515
516 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
517
518         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
519         with checking disabled.
520
521 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
522
523         PR target/37216
524
525         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
526         macro definition for support of three-operand format aligned
527         .comm directive in assembler on cygwin/pe/mingw target OS.
528         * configure:  Regenerate.
529         * config.h:  Regenerate.
530
531         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
532         aligned form of .comm directive if -mpe-aligned-commons is in effect.
533         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
534
535         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
536         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
537
538 2009-05-28  Ira Rosen  <irar@il.ibm.com>
539
540         PR tree-optimization/40254
541         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
542         in analysis of basic blocks.
543
544 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
545
546         PR middle-end/33699
547         * target.h (struct gcc_target): Fix indentation.  Add
548         const_anchor.
549         * target-def.h (TARGET_CONST_ANCHOR): New macro.
550         (TARGET_INITIALIZER): Use it.
551         * cse.c (CHEAPER): Move it up to the other macros.
552         (insert): Rename this ...
553         (insert_with_costs): ... to this.  Add cost parameters.  Update
554         function comment.
555         (insert): New function.  Call insert_with_costs.
556         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
557         find_reg_offset_for_const, try_const_anchors): New functions.
558         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
559         when using a const-anchor.  Call insert_const_anchors.
560         * config/mips/mips.c (mips_set_mips16_mode): Set
561         targetm.const_anchor.
562         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
563
564 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
565
566         * tree-inline.c (remap_decls): Enable nonlocalized variables
567         when not optimizing.
568
569 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
570
571         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
572         Simplify other tests involving optimize.
573
574 2009-05-27  Tom Tromey  <tromey@redhat.com>
575
576         * unwind-dw2.c (_Unwind_DebugHook): New function.
577         (uw_install_context): Call _Unwind_DebugHook.
578
579 2009-05-27  Tom Tromey  <tromey@redhat.com>
580
581         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
582
583 2009-05-27  Ian Lance Taylor  <iant@google.com>
584
585         * Makefile.in (LINKER, LINKER_FLAGS): Define.
586         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
587         (ALL_LINKERFLAGS): Define.
588         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
589         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
590         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
591         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
592         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
593         $(LINKER_FOR_BUILD).
594         (build/gcov-iov$(build_exeext)): Likewise.
595
596 2009-05-27  Julian Brown  <julian@codesourcery.com>
597
598         * gcse.c (target.h): Include.
599         (can_assign_to_reg_without_clobbers_p): Check that the target allows
600         copy of argument to a pseudo register.
601
602 2009-05-27  Diego Novillo  <dnovillo@google.com>
603
604         * tree-ssa-live.c (dump_scope_block): Document arguments.
605         (dump_scope_blocks): Document.
606         (debug_scope_blocks): New.
607         * tree-flow.h (debug_scope_blocks): Declare.
608
609 2009-05-21  Denis Chertykov  <denisc@overta.ru>
610
611         * doc/contrib.texi (Contributors): add myself to the list.
612
613 2009-05-27  Olivier Hainque  <hainque@adacore.com>
614
615         * expr.c (target_align): New function.  Alignment the TARGET of an
616         assignment may be assume to have.
617         (highest_pow2_factor_for_target): Use it instead of relying on
618         immediate tree attributes of TARGET, not necessarily honored when
619         intermediate bitfields are involved.
620         
621 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
622
623         PR target/40266
624         * config/i386/driver-i386.c (host_detect_local_cpu): Support
625         AVX, SSE4, AES, PCLMUL and POPCNT.
626
627 2009-05-27  Diego Novillo  <dnovillo@google.com>
628
629         * tree-pretty-print.c (dump_location): New.
630         (dump_generic_node): Call it.
631         Factor code to handle BLOCK nodes ...
632         (dump_block_node): ... here.
633
634 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
635
636         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
637         it.
638         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
639         included.
640         * gcc-plugin.h: Include config.h and system.h.
641         (IN_GCC): Define if not defined.
642
643 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
644
645         PR middle-end/40249
646         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
647         with -fno-inline.
648
649 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
650
651         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
652         applicable.
653         * config/m32r/m32r.h: Ditto.
654         * config/m32r/m32r.md: Ditto.
655         * config/m32r/predicates.md: Ditto.
656
657 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
658
659         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
660
661 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
662
663         * doc/plugins.texi
664         (Loading plugins): typo.
665         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
666         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
667         (Interacting with the GCC Garbage Collector): Added new section.
668         (Giving information about a plugin): Added new section for
669         PLUGIN_INFO.
670         * ggc.h (ggc_register_root_tab): Added declaration.
671         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
672         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
673         (register_callback): Improved comment in declaration.
674         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
675         vectors.
676         (extra_root_vec) Added static variable for dynamic roots
677         registration.
678         (ggc_register_root_tab) Added new routine.
679         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
680         PLUGIN_GGC_MARKING event.
681         * ggc-zone.c: Include plugin.h.
682         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
683         * ggc-page.c: Include plugin.h.
684         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
685         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
686         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
687         (register_callback): check lack of callbacks for
688         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
689         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
690         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
691         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
692         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
693         dependency on plugin.h.
694         (plugin.o): Added dependency on ggc.h...
695
696 2009-05-26  Richard Guenther  <rguenther@suse.de>
697
698         PR middle-end/40248
699         Revert
700         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
701         with mismatched comparison modes.
702
703         * expr.c (expand_expr_real_1): Expand the operand of a
704         VIEW_CONVERT_EXPR in its natural mode.
705
706 2009-05-26  Ian Lance Taylor  <iant@google.com>
707
708         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
709         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
710         (ALL_COMPILERFLAGS): Define.
711         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
712         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
713         (collect2$(exeext), collect2.o): Likewise.
714         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
715         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
716         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
717         (libbackend.o, intl.o, cppdefault.o): Likewise.
718         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
719         (build/%.o): Use $(COMPILER_FOR_BUILD).
720         (build/gen%$(build_exeext)): Likewise.
721         (build/gcov-iov$(build_exeext)): LIkewise.
722         * config/t-darwin (darwin.o): Use $(COMPILER).
723         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
724         * config/t-sol2 (sol2-c.o): Likewise.
725         (sol2.o): Likewise.
726         * config/t-vxworks (vxworks.o): Likewise.
727         * config/x-darwin (host-darwin.o): Likewise.
728         * config/x-hpux (host-hpux.o): Likewise.
729         * config/x-linux (host-linux.o): Likewise.
730         * config/x-solaris (host-solaris.o): Likewise.
731         * config/alpha/x-alpha (driver-alpha.o): Likewise.
732         * config/arm/t-arm (arm-c.o): Likewise.
733         * config/arm/t-pe (pe.o): Likewise.
734         * config/arm/t-wince-pe (pe.o): Likewise.
735         * config/i386/t-cygming (winnt.o): Likewise.
736         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
737         * config/i386/t-cygwin (cygwin1.o): Likewise.
738         (cygwin2.o): Likewise.
739         * config/i386/t-i386 (i386-c.o): Likewise.
740         * config/i386/t-interix (winnt.o): Likewise.
741         * config/i386/t-netware (netware.o): Likewise.
742         * config/i386/t-nwld (nwld.o): Likewise.
743         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
744         * config/i386/x-i386 (driver-i386.o): Likewise.
745         * config/i386/x-cygwin (host-cygwin.o): Likewise.
746         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
747         * config/ia64/t-ia64 (ia64-c.o): Likewise.
748         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
749         * config/mips/x-native (driver-native.o): Likewise.
750         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
751         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
752         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
753         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
754         * config/score/t-score-elf (score7.o): Likewise.
755         (score3.o): Likewise.
756         * config/sh/t-sh (sh-c.o): Likewise.
757         * config/sh/t-symbian (sh-c.o): Likewise.
758         (symbian.o): Likewise.
759         * config/spu/t-spu-elf (spu-c.o): Likewise.
760         * config/v850/t-v850 (v850-c.o): Likewise.
761         * config/v850/t-v850e (v850-c.o): Likewise.
762
763 2009-05-26  Richard Guenther  <rguenther@suse.de>
764
765         PR tree-optimization/40122
766         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
767         VECTOR_CSTs if possible.
768         (fold_gimple_assign): Likewise.
769
770 2009-05-26  Richard Guenther  <rguenther@suse.de>
771
772         PR middle-end/40252
773         * fold-const.c (fold_binary): Use the correct types for building
774         rotates.
775
776 2009-05-26  Richard Guenther  <rguenther@suse.de>
777
778         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
779         redundant calls to merge_alias_info.
780         (bump_vector_ptr): Likewise.
781         * tree-ssa-copy.c (merge_alias_info): Remove.
782         (replace_exp_1): Remove call to merge_alias_info.
783         (propagate_tree_value): Likewise.
784         (fini_copy_prop): Propagate points-to info.
785         * tree-flow.h (merge_alias_info): Remove.
786
787 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
788
789         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
790
791 2009-05-25  Jan Hubicka  <jh@suse.cz>
792
793         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
794         * cgraph.h (struct inline_summary): New filed self_wize,
795         size_inlining_benefit, self_time and time_inlining_benefit.
796         (struct cgraph_global_info): Replace insns by time ans size fields.
797         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
798         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
799         (ipcp_update_callgraph): Do not touch function bodies.
800         * ipa-inline.c: Include except.h
801         (MAX_TIME): New constant.
802         (overall_insns): Remove.
803         (leaf_node_p): New.
804         (overall_size, max_benefit): New static variables.
805         (cgraph_estimate_time_after_inlining): New function.
806         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
807         (cgraph_clone_inlined_nodes): Update size.
808         (cgraph_mark_inline_edge): Update size.
809         (cgraph_estimate_growth): Use size info.
810         (cgraph_check_inline_limits): Check size.
811         (cgraph_default_inline_p): Likewise.
812         (cgraph_edge_badness): Compute badness based on benefit and size cost.
813         (cgraph_decide_recursive_inlining): Check size.
814         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
815         times.
816         (cgraph_decide_inlining): Likewise.
817         (cgraph_decide_inlining_incrementally): Likewise; honor
818         PARAM_EARLY_INLINING_INSNS.
819         (likely_eliminated_by_inlining_p): New predicate.
820         (estimate_function_body_sizes): New function.
821         (compute_inline_parameters): Use it.
822         * except.c (must_not_throw_labels): New function.
823         * except.h (must_not_throw_labels): Declare.
824         * tree-inline.c (init_inline_once): Kill inlining_weigths
825         * tree-ssa-structalias.c: Avoid uninitialized warning.
826         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
827         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
828         (PARAM_INLINE_CALL_COST): Remove.
829         (PARAM_EARLY_INLINING_INSNS): New.
830
831 2009-05-25  Richard Guenther  <rguenther@suse.de>
832
833         PR tree-optimization/36327
834         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
835         callback for reference translation or lookup at the point
836         of may-defs.
837         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
838         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
839         for union COMPONENT_REFs.
840         (vn_reference_lookup_3): New callback.  Lookup from memset
841         and CONSTRUCTOR assignment, translate through struct copies.
842         (vn_reference_lookup_pieces): Make sure to not free the
843         passed operands array.  Adjust walk_non_aliased_vuses call.
844         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
845         make sure we do not leak memory.
846
847 2009-05-25  Richard Guenther  <rguenther@suse.de>
848
849         * tree-ssa-alias.h (dump_points_to_solution): Declare.
850         * tree-inline.c (expand_call_inline): Reset the escaped and
851         callused solutions.
852         * tree-ssa-structalias.c (pass_build_ealias): New.
853         * tree-pass.h (pass_build_ealias): Declare.
854         * passes.c (init_optimization_passes): Add PTA during 
855         early optimizations.
856         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
857         and CALLUSED solutions.
858         (dump_points_to_solution): New function, split out from ...
859         (dump_points_to_info_for): ... here.
860         * tree-parloops.c (parallelize_loops): Reset the escaped and
861         callused solutions.
862
863 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
864
865         PR bootstrap/40027
866         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
867         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
868
869 2009-05-25  Ira Rosen  <irar@il.ibm.com>
870
871         PR tree-optimization/40238
872         * tree-vect-stmts.c (vect_init_vector): Insert initialization
873         statements after basic block's labels.
874         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
875         to free the allocated memory.
876
877 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
878
879         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
880         return address with a USE.
881
882 2009-05-24  Richard Guenther  <rguenther@suse.de>
883
884         PR middle-end/40233
885         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
886         array type from the main variant of the inner type.
887
888 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
889
890         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
891         definition to bool (from int) to un-break build.
892         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
893
894 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
895
896         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
897         discard_stmt_changes): Delete.
898         * tree-ssa-operands.c (scb_stack): Delete.
899         (init_ssa_operands): Do not initialize it.
900         (fini_ssa_operands): Do not free it.
901         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
902
903         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
904         update_stmt, remove the others.  Fix comments.
905         * tree-dfa.c (optimize_stack_restore): Likewise.
906         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
907         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
908         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
909         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
910         Likewise.
911         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
912         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
913         (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
914         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
915         (stmts_to_rescan): Change item type to gimple.
916         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
917
918 2009-05-24  Ira Rosen  <irar@il.ibm.com>
919
920         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
921         * tree-pass.h (pass_slp_vectorize): New pass.
922         * params.h (SLP_MAX_INSNS_IN_BB): Define.
923         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
924         * tree-vectorizer.c (timevar.h): Include.
925         (user_vect_verbosity_level): Declare.
926         (vect_location): Fix comment.
927         (vect_set_verbosity_level): Update user_vect_verbosity_level
928         instead of vect_verbosity_level.
929         (vect_set_dump_settings): Add an argument. Ignore user defined
930         verbosity if dump flags require higher level of verbosity. Print to
931         stderr only for loop vectorization.
932         (vectorize_loops): Update call to vect_set_dump_settings.
933         (execute_vect_slp): New function.
934         (gate_vect_slp): Likewise.
935         (struct gimple_opt_pass pass_slp_vectorize): New.
936         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
937         access its members.
938         (vec_info_for_bb): New function.
939         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
940         (VECTORIZATION_ENABLED): New macro.
941         (SLP_ENABLED, SLP_DISABLED): Likewise.
942         (vect_is_simple_use): Add bb_vec_info argument.
943         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
944         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
945         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
946         vect_schedule_slp, vect_analyze_slp): Likewise.
947         (vect_analyze_stmt): Add slp_tree argument.
948         (find_bb_location): Declare.
949         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
950         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
951         (vect_analyze_loop_operations, vect_analyze_loop,
952         get_initial_def_for_induction, vect_create_epilog_for_reduction,
953         vect_finalize_reduction, vectorizable_reduction,
954         vectorizable_live_operation, vect_transform_loop): Likewise.
955         * tree-data-ref.c (dr_analyze_innermost): Update comment,
956         skip evolution analysis if analyzing a basic block.
957         (dr_analyze_indices): Likewise.
958         (initialize_data_dependence_relation): Skip the test whether the
959         object is invariant for basic blocks.
960         (compute_all_dependences): Skip dependence analysis for data
961         references in basic blocks.
962         (find_data_references_in_stmt): Don't fail in case of invariant
963         access in basic block.
964         (find_data_references_in_bb): New function.
965         (find_data_references_in_loop): Move code to
966         find_data_references_in_bb and add a call to it.
967         (compute_data_dependences_for_bb): New function.
968         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
969         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
970         that STEP is 0.
971         (vect_analyze_data_ref_dependence): Check for interleaving in case of
972         unknown dependence in basic block and fail in case of dependence in
973         basic block.
974         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
975         dependence instances from either loop or basic block vectorization
976         info.
977         (vect_compute_data_ref_alignment): Check if it is loop vectorization
978         before calling nested_in_vect_loop_p.
979         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
980         dependence instances from either loop or basic block vectorization
981         info.
982         (vect_verify_datarefs_alignment): Likewise.
983         (vect_enhance_data_refs_alignment): Adjust function calls.
984         (vect_analyze_data_refs_alignment): Likewise.
985         (vect_analyze_group_access): Fix printing. Skip different checks if
986         DR_STEP is 0. Keep strided stores either in loop or basic block
987         vectorization data structure. Fix indentation.
988         (vect_analyze_data_ref_access): Fix comments, allow zero step in
989         basic blocks.
990         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
991         dependence instances from either loop or basic block vectorization
992         info.
993         (vect_analyze_data_refs): Update comment. Call
994         compute_data_dependences_for_bb to analyze basic blocks.
995         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
996         case of loop vectorization. In case of basic block vectorization use
997         data-ref itself as a base.
998         (vect_create_data_ref_ptr): In case of basic block vectorization:
999         don't advance the pointer, add new statements before the current
1000         statement.  Adjust function calls.
1001         (vect_supportable_dr_alignment): Support only aligned accesses in
1002         basic block vectorization.
1003         * common.opt (ftree-slp-vectorize): New flag.
1004         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1005         (vect_pattern_recog_1): Likewise.
1006         * tree-vect-stmts.c (process_use): Likewise.
1007         (vect_init_vector): Add new statements in the beginning of the basic
1008         block in case of basic block SLP.
1009         (vect_get_vec_def_for_operand): Adjust function calls.
1010         (vect_finish_stmt_generation): Likewise.
1011         (vectorizable_call): Add assert that it is loop vectorization, adjust
1012         function calls.
1013         (vectorizable_conversion, vectorizable_assignment): Likewise.
1014         (vectorizable_operation): In case of basic block SLP, take
1015         vectorization factor from statement's type and skip the relevance
1016         check. Adjust function calls.
1017         (vectorizable_type_demotion): Add assert that it is loop
1018         vectorization, adjust function calls.
1019         (vectorizable_type_promotion): Likewise.
1020         (vectorizable_store): Check for outer loop only in case of loop
1021         vectorization. Adjust function calls. For basic blocks, skip the
1022         relevance check and don't advance pointers.
1023         (vectorizable_load): Likewise.
1024         (vectorizable_condition): Add assert that it is loop vectorization,
1025         adjust function calls.
1026         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1027         that it is not reduction, get vector type, call only supported
1028         functions, skip loop specific parts.
1029         (vect_transform_stmt): Check for outer loop only in case of loop
1030         vectorization.
1031         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1032         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1033         for external definition.
1034         * passes.c (pass_slp_vectorize): New pass.
1035         * tree-vect-slp.c (find_bb_location): New function.
1036         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1037         check for patterns only in loops.
1038         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1039         case of multiple types in basic block SLP.
1040         (vect_mark_slp_stmts_relevant): New function.
1041         (vect_supported_load_permutation_p): Fix comment.
1042         (vect_analyze_slp_instance): Add argument. In case of basic block
1043         SLP, take vectorization factor from statement's type, check that
1044         unrolling factor is 1. Adjust function call. Save SLP instance in
1045         either loop or basic block vectorization structure. Return FALSE,
1046         if SLP failed.
1047         (vect_analyze_slp): Add argument. Get strided stores groups from
1048         either loop or basic block vectorization structure. Return FALSE
1049         if basic block SLP failed.
1050         (new_bb_vec_info): New function.
1051         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1052         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1053         (vect_schedule_slp): Add argument. Get SLP instances from either
1054         loop or basic block vectorization structure. Set vectorization factor
1055         to be 1 for basic block SLP.
1056         (vect_slp_transform_bb): New function.
1057         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1058
1059 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1060
1061         * final.c (shorten_branches): Do not align labels for jump tables.
1062         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1063
1064 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1065
1066         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1067         Remove outdated reference to flow.c and fix nits.
1068         * doc/gccint.texi: Tweak RTL description.
1069         * doc/rtl.texi: Likewise.
1070
1071 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1072
1073         * config/avr/avr.c: Change my email address.
1074         * config/avr/avr.h: Likewise.
1075         * config/avr/avr.md: Likewise.
1076         * config/avr/avr-protos.h: Likewise.
1077         * config/avr/libgcc.S: Likewise.
1078
1079 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1080
1081         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1082         (spu_split_load, spu_split_store): Change return type to int.
1083         (spu_split_convert): Declare.
1084         * config/spu/predicates.md (spu_mem_operand): Remove.
1085         (spu_mov_operand): Update.
1086         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1087         * config/spu/spu.c (regno_aligned_for_load): Remove.
1088         (reg_aligned_for_addr, spu_expand_load): Define.
1089         (spu_expand_extv): Reimplement and handle MEM.
1090         (spu_expand_insv): Handle MEM.
1091         (spu_sched_reorder): Handle insn's with length 0.
1092         (spu_legitimate_address_p): Reimplement.
1093         (store_with_one_insn_p): Return TRUE for any mode with size
1094         larger than 16 bytes.
1095         (address_needs_split): Define.
1096         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1097         operands.
1098         (spu_convert_move): Define.
1099         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1100         (spu_split_store): Change all MEM's to TImode.
1101         (spu_init_expanders): Preallocate registers that correspond to
1102         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1103         mark_reg_pointer.
1104         (spu_split_convert): Define.
1105         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1106         (_move<mode>, _movdi, _movti): Update predicate and condition.
1107         (load, store): Change to define_split.
1108         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1109         extend<mode>ti2.
1110         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1111         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1112         define_insn_and_split of lshr<mode>3.
1113         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1114         (<v>ashr<mode>3_imm): Define.
1115         (extv, extzv, insv): Allow MEM operands.
1116         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1117         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1118         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1119         (_spu_convert2): Change to define_insn_and_split and remove the
1120         corresponding define_peephole2.
1121         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1122         Change predicates to memory_operand.
1123
1124 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1125
1126         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1127
1128 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1129
1130         PR tree-optimization/40219
1131         * tree.c (iterative_hash_expr): Make sure the builtin function is
1132         a normal builtin function and not a front end or back end builtin
1133         before indexing into the built_in_decls array.
1134
1135 2009-05-22  Richard Guenther  <rguenther@suse.de>
1136
1137         PR middle-end/38964
1138         * alias.c (write_dependence_p): Do not use TBAA for answering
1139         anti-dependence or output-dependence.
1140         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1141         (emit_pointer_definition): Remove.
1142         (emit_alias_warning): Likewise.
1143         (find_what_var_points_to): Remove TBAA pruning code.
1144         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1145         violations.
1146         (compute_points_to_sets): Remove code computing the set of
1147         dereferenced pointers.
1148         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1149         oracle for querying anti and output dependencies.
1150         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1151         if TBAA may be applied.
1152         (refs_anti_dependent_p): New function.
1153         (refs_output_dependent_p): Likewise.
1154         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1155         (refs_output_dependent_p): Likewise.
1156         * doc/tree-ssa.texi (Memory model): New section.
1157         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1158         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1159         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1160         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1161         * expr.c (expand_expr_real_1): Likewise.
1162         * gimple-low.c (lower_stmt): Likewise.
1163         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1164         (dump_gimple_cdt): Remove.
1165         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1166         (gimple_size): Likewise.
1167         (walk_gimple_op): Likewise.
1168         (is_gimple_stmt): Likewise.
1169         (walk_stmt_load_store_addr_ops): Likewise.
1170         (gimple_build_cdt): Remove.
1171         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1172         * gimple.h (gimple_cdt_new_type): Remove.
1173         (gimple_cdt_new_type_ptr): Likewise.
1174         (gimple_cdt_set_new_type): Likewise.
1175         (gimple_cdt_location): Likewise.
1176         (gimple_cdt_location_ptr): Likewise.
1177         (gimple_cdt_set_location): Likewise.
1178         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1179         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1180         GIMPLE_CHANGE_DYNAMIC_TYPE.
1181         (verify_types_in_gimple_stmt): Likewise.
1182         * tree-inline.c (estimate_num_insns): Likewise.
1183         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1184         (copy_decl_to_var): Likewise.
1185         (copy_result_decl_to_var): Likewise.
1186         * tree-pretty-print.c (dump_generic_node): Do not handle
1187         CHANGE_DYNAMIC_TYPE_EXPR.
1188         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1189         * tree-ssa-operands.c (get_expr_operands): Likewise.
1190         * tree-ssa-structalias.c (struct variable_info): Remove
1191         no_tbaa_pruning member.
1192         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1193         (unify_nodes): Do not copy it.
1194         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1195         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1196         (set_uids_in_ptset): Do not check it.
1197         (find_what_var_points_to): Likewise.
1198         (compute_tbaa_pruning): Remove.
1199         (compute_points_to_sets): Do not call it.
1200         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1201         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1202         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1203         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1204         (DECL_NO_TBAA_P): Likewise.
1205         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1206         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1207         (expand_omp_atomic_pipeline): Do not set it.
1208         * print-tree.c (print_node): Do not dump it.
1209         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1210         redundant check.
1211
1212 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1213
1214         PR target/39856
1215         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1216         for clobber.
1217
1218 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1219
1220         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1221         non-external.
1222
1223 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1224
1225         * Makefile.in (bversion.h, s-bversion): New targets.
1226         (TOPLEV_H): Add bversion.h.
1227         * toplev.h: Include "bversion.h".
1228         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1229         the __format__ attribute only if compiling with the same version
1230         of GCC as the sources (the "build version").
1231
1232 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1233
1234         * c-format.c (handle_format_attribute): Fix comment typo.
1235
1236 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1237
1238         PR target/37846
1239         * config/ia64/ia64.opt (mfused-madd): New.
1240         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1241         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1242         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1243         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1244         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1245         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1246         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1247         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1248         instruction if !TARGET_FUSED_MADD.
1249         (fpma, fpms): Remove colon from name.
1250
1251 2009-05-22  Richard Guenther  <rguenther@suse.de>
1252
1253         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1254         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1255         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1256         TARGET_MEM_REF.
1257         (create_expression_by_pieces): Only convert if necessary.
1258         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1259         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1260
1261 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1262
1263         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1264         regular pattern from a template and rename it ...
1265         (*extzv_truncsi_exts): ... to this.
1266
1267 2009-05-21  Richard Guenther  <rguenther@suse.de>
1268
1269         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1270         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1271         (cgraph_default_inline_p): Likewise.
1272         (cgraph_decide_inlining_incrementally): Likewise.
1273
1274 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1275             Uros Bizjak  <ubizjak@gmail.com>
1276
1277         * config/i386/cpuid.h (bit_MOVBE): New.
1278
1279         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1280
1281         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1282         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1283         (ix86_handle_option): Handle OPT_mmovbe.
1284         (ix86_target_string): Add -mmovbe.
1285         (pta_flags): Add PTA_MOVBE.
1286         (processor_alias_table): Add PTA_MOVBE to "atom".
1287         (override_options): Handle PTA_MOVBE.
1288
1289         * config/i386/i386.h (TARGET_MOVBE): New.
1290
1291         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1292         (*bswapsi_movbe): New.
1293         (*bswapdi_movbe): Likewise.
1294         (bswapdi2): Renamed to ...
1295         (*bswapdi_1): This.
1296         (bswapdi2): New expander.
1297
1298         * config/i386/i386.opt (mmovbe): New.
1299
1300         * doc/invoke.texi: Document -mmovbe.
1301
1302 2009-05-21  Taras Glek  <tglek@mozilla.com>
1303
1304         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1305         * gcc-plugin.h (plugin_init): Updated signature.
1306         * gcc-plugin.h (plugin_name_args): Moved to this header.
1307         * doc/plugins.texi (plugin_init): Updated documention to reflect
1308         API change.
1309         * doc/plugins.texi (plugin_name_args): Added to documention.
1310
1311 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1312
1313         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1314         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1315
1316 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1317
1318         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1319         JUMP_TABLE_DATA_P predicates where applicable.
1320         * config/i386/predicates.md: Ditto.
1321         * config/i386/sse.md: Ditto.
1322
1323 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1324
1325         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1326         operand2 -128 override length_immediate attribute to 1.
1327         * config/i386/predicates.md (constm128_operand): New predicate.
1328
1329         * config/i386/i386.c (memory_address_length): Handle %r12
1330         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1331         also check REGNO.
1332         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1333         mode look through optional ZERO_EXTEND and SUBREG.
1334         * config/i386/i386.md (R12_REG): New define_constant.
1335         (prefix_data16): For sse unit set also for MODE_TI insns.
1336         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1337         insns set if operand 1 is ext_QIreg_operand.
1338         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1339         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1340         immediate.
1341         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1342         mode from MODE_DI to MODE_SI.
1343         (movdi_1_rex64): Override modrm and length_immediate attributes
1344         only for movabs (TYPE_IMOV, alternative 2).
1345         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1346         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1347         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1348         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1349         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1350         prefix_rex attribute if DImode.
1351         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1352         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1353         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1354         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1355         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1356         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1357         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1358         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1359         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1360         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1361         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1362         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1363         or one operand TYPE_ISHIFT.
1364         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1365         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1366         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1367         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1368         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1369         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1370         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1371         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1372         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1373         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1374         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1375         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1376         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1377         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1378         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1379         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1380         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1381         set mode attribute, don't override length attribute.
1382         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1383         to 1.
1384         (return_internal_long): Set length attribute to 2 instead of 1.
1385         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1386         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1387         prefix_rex attribute.
1388         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1389         New predicates.
1390         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1391
1392 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1393
1394         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1395
1396 2009-05-20  Ian Lance Taylor  <iant@google.com>
1397
1398         * tree.c (build_tree_list_vec_stat): New function.
1399         (ctor_to_vec): New function.
1400         (build_nt_call_vec): New function.
1401         (build_call_array): Change args to be a const pointer.
1402         (build_call_vec): New function.
1403         * tree.h (build_nt_call_vec): Declare.
1404         (build_tree_list_vec_stat): Declare.
1405         (build_tree_list_vec): Define.
1406         (build_call_array): Update declaration.
1407         (build_call_vec): Declare.
1408         (ctor_to_vec): Declare.
1409         * c-common.c (tree_vector_cache): New static variable.
1410         (make_tree_vector): New function.
1411         (release_tree_vector): New function.
1412         (make_tree_vector_single): New function.
1413         (make_tree_vector_copy): New function.
1414         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1415         (make_tree_vector_single, make_tree_vector_copy): Declare.
1416         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1417         (c_parser_expr_list): Don't manage cache here, instead call
1418         make_tree_vector.
1419         (c_parser_release_expr_list): Remove static function.
1420         (c_parser_vec_to_tree_list): Remove static function.
1421         (c_parser_attributes): Call build_tree_list_vec instead of
1422         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1423         c_parser_release_expr_list.
1424         (c_parser_postfix_expression_after_primary): Likewise.
1425         (c_parser_objc_keywordexpr): Likewise.
1426
1427 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1428
1429         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1430         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1431         TARGET_CONVERT_TO_TYPE.
1432         * hooks.c (hook_tree_const_tree_null): Define.
1433         * hooks.h (hook_tree_const_tree_null): Declare.
1434         * target.h (struct gcc_target):  Add invalid_parameter_type,
1435         invalid_return_type, promoted_type, and convert_to_type fields.
1436         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1437         (TARGET_INVALID_RETURN_TYPE): Define.
1438         (TARGET_PROMOTED_TYPE): Define.
1439         (TARGET_CONVERT_TO_TYPE): Define.
1440         (TARGET_INITIALIZER): Update for new fields.
1441         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1442         (grokparms): Check targetm.invalid_parameter_type.
1443         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1444         * c-convert.c (convert): Check targetm.convert_to_type.
1445
1446 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1447
1448         * config/mips/mips.md (*extenddi_truncate<mode>,
1449         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1450         defintions.
1451         (*extendhi_truncateqi): New define_insn_and_sptit.
1452
1453 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1454
1455         PR middle-end/40204
1456         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1457         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1458
1459 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1460
1461         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1462         the operand of VIEW_CONVERT_EXPR.
1463
1464 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1465
1466         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1467         extended family and model for Intel processors.  Support Intel
1468         Atom.
1469
1470 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1471
1472         * gstab.h (stab_code_type): Define, to be used instead of the
1473         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1474         notice.
1475         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1476         occurrences by stab_code_type.
1477         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1478
1479 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1480
1481         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1482         (sra_insert_before): Likewise.
1483         (sra_insert_after): Likewise.
1484         (sra_init_cache): Likewise.
1485         (sra_type_can_be_decomposed_p): Likewise.
1486         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1487         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1488         (sra_insert_before): Likewise.
1489         (sra_insert_after): Likewise.
1490         (sra_init_cache): Likewise.
1491         (insert_edge_copies_seq): Made static and moved upwards.
1492
1493         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1494         case.
1495
1496         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1497
1498         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1499         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1500         simple copies.
1501
1502 2009-05-20  Richard Guenther  <rguenther@suse.de>
1503
1504         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1505         with mismatched comparison modes.
1506
1507 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1508
1509         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1510         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1511         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1512         with shifts for Thumb2.
1513         (orsi_notsi): New for orn.
1514         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1515         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1516         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1517         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1518         Don't invert remainder for IOR.
1519         
1520 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1521
1522         PR tree-optimization/40087
1523         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1524         number_of_iterations_ne): Rename never_infinite argument.
1525         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1526         number_of_iterations_le): Handle pointer-type ivs when
1527         exit_must_be_taken is false.
1528         (number_of_iterations_cond):  Do not always assume that
1529         exit_must_be_taken if the control variable is a pointer.
1530
1531 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1532
1533         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1534         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1535
1536 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1537
1538         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1539         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1540
1541 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1542
1543         PR c/40172
1544         * c.opt (Wlogical-op): Disabled by default.
1545         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1546         Wextra.
1547         * doc/invoke.texi (Wlogical-op): Likewise.
1548         
1549 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1550
1551         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1552         into CASE_CONVERT.
1553         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1554         Propagate the type of the first operand.
1555         <ASSERT_EXPR>: Simplify.
1556         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1557         Rewrite using the RHS code as discriminant.
1558         <NOP_EXPR>: Turn into CASE_CONVERT.
1559         <PLUS_EXPR>: Propagate the type of the first operand.
1560
1561 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1562
1563         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1564         (ia64_dconst_0_375): New.
1565         * config/ia64/ia64.c (ia64_override_options): Remove
1566         -minline-sqrt-min-latency warning.
1567         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1568         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1569         * config/ia64/ia64.md (*sqrt_approx): Remove.
1570         (sqrtsf2): Remove #if 0.
1571         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1572         (sqrtdf): Remove assert.
1573         (sqrtdf2_internal_thr): Rewrite and move to div.md.
1574         (sqrtxf2): Remove #if 0.
1575         (sqrtxf2_internal_thr): Rewrite and move to div.md.
1576         * div.md (sqrt_approx_rf): New.
1577         (sqrtsf2_internal_thr): New implementation.
1578         (sqrtsf2_internal_lat): New.
1579         (sqrtdf2_internal_thr: New implementation.
1580         (sqrtxf2_internal): New implementation.
1581
1582 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1583             Hans-Peter Nilsson  <hp@axis.com>
1584
1585         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1586         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1587         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1588         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1589         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1590         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1591         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1592         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1593         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1594         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1595         * c-common.c: ...from here.
1596
1597 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1598
1599         * c-common.c (warn_logical_operator): Remove unnecessary
1600         conditionals.
1601
1602 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1603
1604         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1605
1606 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1607
1608         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1609         assignments with memcpy calls.
1610         (add_fdes): Likewise.
1611         (binary_search_unencoded_fdes): Likewise.
1612         (linear_search_fdes): Eliminate type puns.
1613         
1614 2009-05-19  Richard Guenther  <rguenther@suse.de>
1615
1616         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1617         not falsely claim to have propagated into all uses.
1618
1619 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1620
1621         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1622         version to v3.0.
1623
1624 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1625
1626         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1627         * config/sh/sh.c (sh_legitimate_address_p): Make static.
1628         (TARGET_LEGITIMATE_ADDRESS_P): New.
1629         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1630         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1631         
1632 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
1633
1634         PR debug/40109
1635         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1636         child of the containing namespace's DIE.
1637
1638 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
1639
1640         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1641         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
1642         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1643         extend patterns.
1644
1645 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1646
1647         PR target/39942
1648         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1649         gen_align with gen_pad.
1650         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1651         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1652
1653         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1654         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1655
1656         * config/i386/i386.md (align): Renamed to ...
1657         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1658         ASM_OUTPUT_MAX_SKIP_PAD.
1659
1660 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
1661
1662         * config.gcc: Fix variable syntax.
1663
1664         PR target/39531
1665         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1666         before calling exact_log2.
1667         (output_iorsi3): Likewise.
1668         (output_xorsi3): Likewise.
1669
1670 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1671
1672         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1673         for the none zero constant operand except for EQ and NE
1674         comprisons even when the first operand is R0.
1675
1676 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
1677
1678         * config/s390/2064.md: Remove trailing whitespaces.
1679         * config/s390/2084.md: Likewise.
1680         * config/s390/constraints.md: Likewise.
1681         * config/s390/fixdfdi.h: Likewise.
1682         * config/s390/libgcc-glibc.ver: Likewise.
1683         * config/s390/s390-modes.def: Likewise.
1684         * config/s390/s390-protos.h: Likewise.
1685         * config/s390/s390.c: Likewise.
1686         * config/s390/s390.h: Likewise.
1687         * config/s390/s390.md: Likewise.
1688         * config/s390/tpf-unwind.h: Likewise.
1689
1690 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1691
1692         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1693
1694 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1695
1696         M68K TLS support.
1697         * configure.ac (m68k-*-*): Check if binutils support TLS.
1698         * configure: Regenerate.
1699         * config/m68k/predicates.md (symbolic_operand): Extend comment.
1700         * config/m68k/constraints.md (Cu): New constraint.
1701         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1702         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1703         (movsi): Handle TLS symbols.
1704         (addsi3_5200): Handle XTLS symbols, indent.
1705         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1706         (m68k_tls_reference_p): Declare.
1707         (m68k_legitimize_address): Declare.
1708         (m68k_unwrap_symbol): Declare.
1709         * config/m68k/m68k.opt (mxtls): New option.
1710         * config/m68k/m68k.c (ggc.h): Include.
1711         (m68k_output_dwarf_dtprel): Implement hook.
1712         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1713         (m68k_expand_prologue): Load GOT pointer when function needs it.
1714         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1715         (m68k_legitimate_constant_address_p): Same.
1716         (m68k_decompose_address): Handle TLS references.
1717         (m68k_get_gp): New static function.
1718         (enum m68k_reloc): New contants.
1719         (TLS_RELOC_P): New macro.
1720         (m68k_wrap_symbol): New static function.
1721         (m68k_unwrap_symbol): New function.
1722         (m68k_final_prescan_insn_1): New static function.
1723         (m68k_final_prescan_insn): New function.
1724         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1725         functions.
1726         (legitimize_pic_address): Handle TLS references..
1727         (m68k_tls_get_addr, m68k_get_tls_get_addr)
1728         (m68k_libcall_value_in_a0_p)
1729         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1730         (m68k_call_m68k_read_tp): Helper variables and functions for ...
1731         (m68k_legitimize_tls_address): Handle TLS references.
1732         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1733         New functions.
1734         (m68k_legitimize_address): Handle TLS symbols.
1735         (m68k_get_reloc_decoration): New static function.
1736         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1737         UNSPEC_RELOC32.
1738         (m68k_output_dwarf_dtprel): Implement hook.
1739         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1740         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1741         m68k_call_* routines.
1742         (sched_attr_op_type): Handle TLS symbols.
1743         (gt-m68k.h): Include.
1744         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1745         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1746
1747 2009-05-18  Martin Jambor  <mjambor@suse.cz>
1748
1749         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1750         (visit_store_addr_for_mod_analysis): New function.
1751         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
1752         (determine_cst_member_ptr): Use gimple_assign_single_p.
1753         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
1754         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
1755         operands.  Don't check number of operands of a NOP_EXPR.
1756
1757 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
1758
1759         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
1760
1761 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1762
1763         PR c/40172
1764         * c-common.c (warn_logical_operator): Don't warn if one of
1765         expression isn't always true or false.
1766
1767 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
1768
1769         * config/i386/biarch32.h: New file.
1770         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
1771
1772 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
1773
1774         * config/mips/mips.md (*zero_extend<mode>_trunchi,
1775         *zero_extend<mode>_truncqi): Merge these into ...
1776         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
1777         Name the pattern following this as *zero_extendhi_truncqi.
1778
1779 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
1780
1781         PR middle-end/39301
1782         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
1783         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
1784         (output_info): Make field HOST_WIDEST_INT.
1785         (print_statistics): Use HOST_WIDEST_INT_PRINT.
1786         (dump_bitmat_statistics): Same.
1787
1788 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1789
1790         * config.gcc (use_gcc_stdint):  Set to wrap.
1791         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
1792         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
1793         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1794         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
1795         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
1796         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
1797         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1798         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
1799
1800 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
1801
1802         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
1803         tune_64.
1804         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
1805         Move definitions earlier.
1806         (OPT_ARCH64, OPT_ARCH32): Define.
1807         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
1808         and tune_64.
1809
1810 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
1811
1812         PR target/40153
1813         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
1814         implies.
1815
1816 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
1817
1818         * arm.md (movdi2): Copy non-reg values to DImode registers.
1819
1820 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
1821
1822         PR target/39942
1823         * final.c (label_to_max_skip): New function.
1824         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
1825         CODE_LABEL_NUMBER <= max_labelno.
1826         * output.h (label_to_max_skip): New prototype.
1827         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
1828         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
1829         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
1830         Handle CODE_LABELs with >= 16 byte alignment or with
1831         max_skip == (1 << align) - 1.
1832         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
1833         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
1834
1835         PR target/39942
1836         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
1837         .p2align 3 if MAX_SKIP is smaller than 7.
1838         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1839
1840 2009-05-15  Ian Lance Taylor  <iant@google.com>
1841
1842         * alias.c (struct alias_set_entry_d): Rename from struct
1843         alias_set_entry.  Change all uses.
1844         * except.c (struct call_site_record_d): Rename from struct
1845         call_site_record.  Change all uses.
1846         * except.h (struct eh_region_d): Rename from struct eh_region.
1847         Change all uses.
1848         * gcse.c (struct hash_table_d): Rename from struct hash_table.
1849         Change all uses.
1850         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
1851         ivtype_map_elt.  Change all uses.
1852         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
1853         Change all uses.
1854         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
1855         * graphite.h (struct name_tree_d): Rename from struct name_tree.
1856         Change all uses.
1857         (struct sese_d): Rename from struct sese.  Change all uses.
1858         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
1859         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
1860         * optabs.h (struct optab_d): Rename from struct optab.  Change all
1861         uses.
1862         (struct convert_optab_d): Rename from struct convert_optab.
1863         Change all uses.
1864         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
1865         ipa_opt_pass.  Change all uses.
1866         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
1867         all uses.
1868
1869         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
1870         defined as a typedef.
1871         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
1872         defined as a tag.
1873
1874 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1875
1876         PR 16302
1877         * fold-const.c (make_range,build_range_check,merge_ranges): Move
1878         declaration to...
1879         (merge_ranges): Returns bool. 
1880         * tree.h (make_range): .. to here.
1881         (build_range_check): Likewise.
1882         (merge_ranges): Likewise. Renamed from merge_ranges.
1883         * c-typeck.c (parser_build_binary_op): Update calls to
1884         warn_logical_operator.
1885         * c-common.c (warn_logical_operator): Add new warning.
1886         * c-common.h (warn_logical_operator): Update declaration.
1887         
1888 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1889
1890         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
1891         
1892 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1893
1894         * doc/install.texi: Document MPC requirements, flags etc.
1895
1896         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
1897         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
1898         Evaluate constant arguments.
1899         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
1900         (fold_builtin_1): Likewise, also evaluate constant arguments.
1901         Remove superfluous break.
1902         (do_mpc_ckconv): New.
1903         * real.h: Include mpc.h.
1904         * toplev.c (print_version): Output MPC version info if available.
1905
1906 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1907
1908         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
1909
1910 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
1911
1912         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
1913         only once.
1914
1915 2009-05-15  Jan Hubicka  <jh@suse.cz>
1916
1917         * doc/invoke.texi (max-early-inliner-iterations): New flag.
1918         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
1919         (try_inline): Fix return value.
1920         (cgraph_decide_inlining_incrementally): Honor new value.
1921         (cgraph_early_inlining): Handle indirect inlining.
1922         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
1923
1924 2009-05-15  Jan Hubicka  <jh@suse.cz>
1925
1926         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
1927         * cgraphunit.c (cgraph_finalize_function): Set it.
1928         (cgraph_expand_function): Use it.
1929
1930 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1931
1932         * real.c (encode_ieee_half): Define.
1933         (decode_ieee_half): Define.
1934         (ieee_half_format): Define.
1935         (arm_half_format): Define.
1936         * real.h (ieee_half_format): Declare.
1937         (arm_half_format): Declare.
1938
1939 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1940
1941         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
1942         swapped, and reversed optabs exist before trying to use them.
1943
1944 2009-05-15  Paul Brook  <paul@codesourcery.com>
1945             Sandra Loosemore  <sandra@codesourcery.com>
1946
1947         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
1948         loads.  Allow PRE_DEC.
1949         (output_move_neon): Handle PRE_DEC.
1950         (arm_print_operand): Add 'A' for neon structure loads.
1951         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
1952         * config/arm/neon.md (neon_mov): Update comment.
1953         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
1954         calls.
1955         (Um): New constraint.
1956
1957 2009-05-15  Jan Hubicka  <jh@suse.cz>
1958
1959         Revert the following patch until testsuite fallout is fixed:
1960         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1961         * cgraph.h (struct inline_summary): New filed self_wize,
1962         size_inlining_benefit, self_time and time_inlining_benefit.
1963         (struct cgraph_global_info): Replace insns by time ans size fields.
1964         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1965         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1966         (ipcp_update_callgraph): Do not touch function bodies.
1967         * ipa-inline.c: Include except.h
1968         (MAX_TIME): New constant.
1969         (overall_insns): Remove
1970         (overall_size, max_benefit): New static variables.
1971         (cgraph_estimate_time_after_inlining): New function.
1972         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1973         (cgraph_clone_inlined_nodes): Update size.
1974         (cgraph_mark_inline_edge): Update size.
1975         (cgraph_estimate_growth): Use size info.
1976         (cgraph_check_inline_limits): Check size.
1977         (cgraph_default_inline_p): Likewise.
1978         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1979         (cgraph_decide_recursive_inlining): Check size.
1980         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
1981         times.
1982         (cgraph_decide_inlining): Likewise.
1983         (cgraph_decide_inlining_incrementally): Likewise; honor
1984         PARAM_EARLY_INLINING_INSNS.
1985         (likely_eliminated_by_inlining_p): New predicate.
1986         (estimate_function_body_sizes): New function.
1987         (compute_inline_parameters): Use it.
1988         * except.c (must_not_throw_labels): New function.
1989         * except.h (must_not_throw_labels): Declare.
1990         * tree-inline.c (init_inline_once): Kill inlining_weigths
1991         * tree-ssa-structalias.c: Avoid uninitialized warning.
1992         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1993         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1994         (PARAM_INLINE_CALL_COST): Remove.
1995         (PARAM_EARLY_INLINING_INSNS): New.
1996
1997 2009-05-15  Richard Guenther  <rguenther@suse.de>
1998
1999         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2000         not TODO_update_ssa.
2001
2002 2009-05-15  Richard Guenther  <rguenther@suse.de>
2003
2004         PR tree-optimization/39999
2005         * gimple.h (gimple_expr_type): Use the expression type looking
2006         through useless conversions.
2007         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2008         (vn_nary_op_insert_stmt): Likewise.
2009         (simplify_binary_expression): Likewise.
2010
2011 2009-05-15  Richard Guenther  <rguenther@suse.de>
2012
2013         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2014         New options, enabled by default.
2015         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2016         Document.
2017         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2018         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2019         * tree-ssa-structalias.c (gate_tree_pta): New function.
2020         (pass_build_alias): Use it.
2021
2022 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2023
2024         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2025         recurse on an invariant address if a conversion from a pointer
2026         type to a wider integer type is involved.
2027
2028 2009-05-15  Jan Hubicka  <jh@suse.cz>
2029
2030         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2031         * cgraph.h (struct inline_summary): New filed self_wize,
2032         size_inlining_benefit, self_time and time_inlining_benefit.
2033         (struct cgraph_global_info): Replace insns by time ans size fields.
2034         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2035         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2036         (ipcp_update_callgraph): Do not touch function bodies.
2037         * ipa-inline.c: Include except.h
2038         (MAX_TIME): New constant.
2039         (overall_insns): Remove
2040         (overall_size, max_benefit): New static variables.
2041         (cgraph_estimate_time_after_inlining): New function.
2042         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2043         (cgraph_clone_inlined_nodes): Update size.
2044         (cgraph_mark_inline_edge): Update size.
2045         (cgraph_estimate_growth): Use size info.
2046         (cgraph_check_inline_limits): Check size.
2047         (cgraph_default_inline_p): Likewise.
2048         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2049         (cgraph_decide_recursive_inlining): Check size.
2050         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2051         times.
2052         (cgraph_decide_inlining): Likewise.
2053         (cgraph_decide_inlining_incrementally): Likewise; honor
2054         PARAM_EARLY_INLINING_INSNS.
2055         (likely_eliminated_by_inlining_p): New predicate.
2056         (estimate_function_body_sizes): New function.
2057         (compute_inline_parameters): Use it.
2058         * except.c (must_not_throw_labels): New function.
2059         * except.h (must_not_throw_labels): Declare.
2060         * tree-inline.c (init_inline_once): Kill inlining_weigths
2061         * tree-ssa-structalias.c: Avoid uninitialized warning.
2062         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2063         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2064         (PARAM_INLINE_CALL_COST): Remove.
2065         (PARAM_EARLY_INLINING_INSNS): New.
2066         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2067         (inline-call-cost): Remove.
2068         (early-inlining-insns): New.
2069
2070 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2071
2072         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2073         for bounds.
2074         (print_int_cst_bounds_in_octal_p): Likewise.
2075         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2076         with subtypes.
2077         * dwarf2out.c (base_type_die): Likewise.
2078         (is_subrange_type): Delete.
2079         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2080         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2081         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
2082         the destination type is boolean.
2083         (build_range_check): Do not special-case subtypes.
2084         (fold_sign_changed_comparison): Likewise.
2085         (fold_unary): Likewise.
2086         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2087         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2088         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2089         * tree.c (subrange_type_for_debug_p): New predicate based on the former
2090         is_subrange_type.
2091         * tree.h (subrange_type_for_debug_p): Declare.
2092         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2093         (convert_affine_scev): Remove call to above function.
2094         (chrec_convert_aggressive): Likewise.
2095         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2096         false for conversions involving subtypes.
2097         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2098         (vrp_val_min): Likewise.
2099         (needs_overflow_infinity): Likewise.
2100         (extract_range_from_unary_expr): Likewise.
2101
2102 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2103
2104         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2105         * config/frv/frv.c: Likewise.
2106         * config/s390/s390.c: Likewise.
2107         * config/sparc/sparc.h: Likewise.
2108         * config/i386/i386.h: Likewise.
2109         * config/i386/i386.c: Likewise.
2110         * config/crx/crx.c: Likewise.
2111         * config/m68hc11/m68hc11.h: Likewise.
2112         * config/iq2000/iq2000.c: Likewise.
2113         * config/mn10300/mn10300.h: Likewise.
2114         * config/mn10300/mn10300.c: Likewise.
2115         * config/m68k/m68k.c: Likewise.
2116         * config/rs6000/rs6000.c: Likewise.
2117         * config/rs6000/xcoff.h: Likewise.
2118         * config/rs6000/linux64.h: Likewise.
2119         * config/rs6000/sysv4.h: Likewise.
2120         * config/score/score3.c: Likewise.
2121         * config/score/score7.c: Likewise.
2122         * config/score/score.c: Likewise.
2123         * config/arm/arm.md: Likewise.
2124         * config/mips/mips.c: Likewise.
2125         * config/mips/mips.md: Likewise.
2126         * config/bfin/bfin.h: Likewise.
2127         * config/pa/pa.c: Likewise.
2128         * config/pa/constraints.md: Likewise.
2129
2130         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2131         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2132         * config/pdp11/pdp11.h: Use memory_address_p instead.
2133
2134 2009-05-14  Ian Lance Taylor  <iant@google.com>
2135
2136         * passes.c (finish_optimization_passes): Change i to int.
2137         * plugin.c (plugins_active_p): Change event to int.
2138         (dump_active_plugins): Likewise.
2139         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2140         Add cast.
2141         * tree.c (tree_range_check_failed): Change c to unsigned int.
2142         (omp_clause_range_check_failed): Likewise.
2143         (build_common_builtin_nodes): Change mode to int.  Add cast.
2144         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2145         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2146
2147         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2148         ++ or -- with a variable of enum type.
2149
2150 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2151
2152         PR driver/40144
2153         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2154
2155 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2156
2157         * store-motion.c: Do not include params.h
2158         * Makefile.in: Fix dependencies for various files.
2159
2160 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2161
2162         * auto-inc-dec.c: Fix pass description, remove apparent
2163         accidental duplication.
2164
2165 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2166
2167         PR middle-end/40147
2168         * ipa-utils.h (memory_identifier_string): Moved to ...
2169         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2170
2171 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2172
2173         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2174         in the former documentation of...
2175         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2176         * ira-conflicts.c (get_dup_num): Use address_operand.
2177         * targhooks.c (default_legitimate_address_p): New.
2178         * targhooks.h (default_legitimate_address_p): New.
2179         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2180         Call hook.
2181         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2182         * target.h (struct target): Add legitimate_address_p.
2183         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2184         (TARGET_INITIALIZER): Include it.
2185
2186         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2187         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2188         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2189         (TARGET_LEGITIMATE_ADDRESS_P): New.
2190
2191         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2192         (REG_OK_STRICT_P): Delete.
2193         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2194         (frv_legitimate_address_p_1): ... this.
2195         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2196         (frv_legitimate_address_p_1): ... the renamed old
2197         frv_legitimate_address_p.
2198         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2199         (TARGET_LEGITIMATE_ADDRESS_P): New.
2200
2201         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2202         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2203         * config/s390/s390.c (legitimate_address_p): Rename to...
2204         (s390_legitimate_address_p): ... this, make static.
2205         (legitimize_address): Adjust call.
2206         (TARGET_LEGITIMATE_ADDRESS_P): New.
2207         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2208
2209         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2210         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2211         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2212         (TARGET_LEGITIMATE_ADDRESS_P): New.
2213
2214         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2215         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2216         * config/spu/spu.c (spu_legitimate_address): Rename to...
2217         (spu_legitimate_address_p): ... this, make static.
2218         (TARGET_LEGITIMATE_ADDRESS_P): New.
2219
2220         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2221         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2222         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2223         (sparc_legitimate_address_p): ... this, make static and return bool.
2224         (legitimize_address): Adjust call.
2225         (TARGET_LEGITIMATE_ADDRESS_P): New.
2226
2227         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2228         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2229         * config/i386/i386.c (legitimate_address_p): Rename to...
2230         (ix86_legitimate_address_p): ... this, make static.
2231         (constant_address_p): Move after it, adjust call.
2232         (TARGET_LEGITIMATE_ADDRESS_P): New.
2233
2234         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2235         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2236         * config/avr/avr.c (legitimate_address_p): Rename to...
2237         (avr_legitimate_address_p): ... this, make static.
2238         (legitimize_address): Adjust call.
2239         (TARGET_LEGITIMATE_ADDRESS_P): New.
2240
2241         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2242         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2243         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2244         (TARGET_LEGITIMATE_ADDRESS_P): New.
2245
2246         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2247         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2248         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2249         (TARGET_LEGITIMATE_ADDRESS_P): New.
2250
2251         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2252         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2253         Remove.
2254         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2255         Make static.
2256         (TARGET_LEGITIMATE_ADDRESS_P): New.
2257
2258         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2259         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2260         Remove.
2261         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2262         Rename to...
2263         (m68hc11_legitimate_address_p): ... this, make static.
2264         (go_if_legitimate_address_internal): Rename to...
2265         (m68hc11_legitimate_address_p_1): ... this.
2266         (legitimize_address): Adjust call.
2267         (TARGET_LEGITIMATE_ADDRESS_P): New.
2268
2269         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2270         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2271         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2272         (TARGET_LEGITIMATE_ADDRESS_P): New.
2273
2274         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2275         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2276         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2277         (mn10300_legitimate_address_p): ... this, make static.
2278         (TARGET_LEGITIMATE_ADDRESS_P): New.
2279
2280         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2281         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2282         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2283         (TARGET_LEGITIMATE_ADDRESS_P): New.
2284
2285         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2286         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2287         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2288         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2289         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2290         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2291         (rs6000_legitimate_address_p): ... this, make static.
2292         (TARGET_LEGITIMATE_ADDRESS_P): New.
2293         (REG_MODE_OK_FOR_BASE_P): Delete.
2294         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2295
2296         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2297         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2298         Delete.
2299         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2300         static, adjust types.
2301         (TARGET_LEGITIMATE_ADDRESS_P): New.
2302
2303         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2304         * config/score/score.c (score_address_p): Rename to...
2305         (score_legitimate_address_p): ... this.
2306         (TARGET_LEGITIMATE_ADDRESS_P): New.
2307         * config/score/score3.c (score3_address_p): Rename to...
2308         (score3_legitimate_address_p): ... this.
2309         * config/score/score7.c (score7_address_p): Rename to...
2310         (score7_legitimate_address_p): ... this.
2311
2312         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2313         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2314         GO_IF_LEGITIMATE_ADDRESS): Delete.
2315         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2316         thumb2_legitimate_address_p): Delete.
2317         (arm_legitimate_address_p): Rename to...
2318         (arm_legitimate_address_outer_p): ... this.
2319         * config/arm/constraints.md ("Uq"): Adjust call.
2320         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2321         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
2322         (arm_legitimate_address_outer_p): ... this.
2323         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
2324         (TARGET_LEGITIMATE_ADDRESS_P): New.
2325
2326         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2327         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2328         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2329         (TARGET_LEGITIMATE_ADDRESS_P): New.
2330
2331         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2332         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2333         * config/vax/vax.c (legitimate_address_p): Rename to...
2334         (vax_legitimate_address_p): ... this, make static.
2335         (TARGET_LEGITIMATE_ADDRESS_P): New.
2336
2337         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2338         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2339         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2340         (TARGET_LEGITIMATE_ADDRESS_P): New.
2341
2342         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2343         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2344         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2345         (mmix_legitimate_address_p): ... this, make static.
2346         (TARGET_LEGITIMATE_ADDRESS_P): New.
2347
2348         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2349         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2350         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2351         (TARGET_LEGITIMATE_ADDRESS_P): New.
2352
2353 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2354
2355         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2356         of MODE_COMPLEX_INT.
2357
2358 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2359
2360         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2361         LCT_NORMAL in function call.
2362         * mips-tdump.c (print_file_desc): Add cast to enum type.
2363         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2364         (mark_stabs): Add casts to enum types.
2365         (parse_stabs_common): Add casts to enum types.
2366
2367 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2368
2369         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2370         Check for invalid values of LETTER.
2371
2372 2009-05-13  Taras Glek  <tglek@mozilla.com>
2373
2374         * attribs.c (register_attribute): moved out attribute registration into
2375         register_attribute.
2376         * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
2377         * gcc-plugin.h: Added forward decl for register_attribute.
2378         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2379         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2380         PLUGIN_ATTRIBUTES boilerplate.
2381
2382 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2383
2384         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2385         values even in sentinel and empty entries.
2386         (ms_printf_flag_specs):  Likewise.
2387         (ms_scanf_flag_specs):  Likewise.
2388         (ms_strftime_flag_specs):  Likewise.
2389         (ms_print_char_table):  Likewise.
2390         (ms_scan_char_table):  Likewise.
2391         (ms_time_char_table):  Likewise.
2392
2393 2009-05-13  Doug Kwan  <dougkwan@google.com>
2394
2395         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2396
2397 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2398
2399         * config/mips/mips.md (store): Add attributes for QI and HI.
2400         Update comment.
2401         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2402         (truncdi<mode>2): ... this new pattern.
2403
2404 2009-05-13  Brad Hards  <bradh@kde.org>
2405
2406         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2407
2408 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2409             Ben Elliston <bje@au.ibm.com>
2410
2411         PR middle-end/40035
2412         * dse.c (check_mem_read_rtx): Guard against width == -1.
2413
2414 2009-05-13  Michael Matz  <matz@suse.de>
2415
2416         PR middle-end/39976
2417         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2418         (trivially_conflicts_p): New function.
2419         (insert_backedge_copies): Use it.
2420
2421 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2422
2423         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2424         (handle_stdc_pragma): Use new enum constant names.
2425         (handle_pragma_float_const_decimal64): Ditto.
2426
2427 2009-05-13  Ian Lance Taylor  <iant@google.com>
2428
2429         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2430         tree.def.
2431
2432 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2433
2434         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2435         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2436         multilibs.
2437         * config/m68k/m68k.h (FL_UCLINUX): Define.
2438
2439 2009-05-13  Jan Hubicka  <jh@suse.cz>
2440
2441         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2442
2443 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2444
2445         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2446         unless -fschedule-insns is specified.
2447
2448 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2449
2450         PR target/39561
2451         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2452         TARGET_EXPAND_CBRANCHDI4.
2453         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2454         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2455         (cmpeqdi): Fix comment.
2456
2457 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2458
2459         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2460         (sh_legitimate_address_p): Likewise.
2461         * config/sh/sh.c (sh_legitimate_index_p): New.
2462         (sh_legitimate_address_p): Likewise.
2463         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2464         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2465         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2466         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2467         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2468         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2469         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2470         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2471         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2472
2473 2009-05-12  Jan Hubicka  <jh@suse.cz>
2474
2475         * tree-inline.c (estimate_operator_cost): Add operands;
2476         when division happens by constant, it is cheap.
2477         (estimate_num_insns): Loads and stores are not having cost of 0;
2478         EH magic stuff is cheap; when computing runtime cost of switch,
2479         use log2 base of amount of its cases; builtin_expect has cost of 0;
2480         compute cost for moving return value of call.
2481         (init_inline_once): Initialize time_based flags.
2482         * tree-inline.h (eni_weights_d): Add time_based flag.
2483
2484 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2485
2486         * df-core.c: Update head documentation.
2487
2488 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2489
2490         PR bootstrap/40118
2491         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2492         shadowing exisiting variable op1.
2493
2494 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2495
2496         PR target/37179
2497         * config/i386/driver-i386.c (processor_signatures): New enum.
2498         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2499         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2500         processor signature to detect geode processor.
2501
2502 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2503
2504         Revert:
2505
2506         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2507
2508         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2509         causes spurious differences between trunk and cond-optab branch.
2510
2511 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2512
2513         * dojump.c (compare_from_rtx): Delete.
2514         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2515         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2516         if the comparison does not satisfy the predicate; test predicates for
2517         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2518         further if one existing pattern fails.
2519         * expr.h (compare_from_rtx): Delete.
2520         (prepare_operand): Declare it.
2521         * optabs.c: Change "lib call" to "libcall" throughout.
2522         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2523         HAVE_conditional_trap, emit_cmp_insn): Delete.
2524         (can_compare_p): Delete cmp_optab case.
2525         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2526         Accept other parameters by value.
2527         (prepare_operand): Make non-static.
2528         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2529         other parameters by value.  Try to widen operands here based on
2530         an optab_methods argument and looking at cbranch_optab.
2531         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2532         loop.  Use cbranch_optab directly.
2533         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2534         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2535         assertion.
2536         (emit_conditional_move, emit_conditional_add): Inline what's needed
2537         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2538         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2539         with COMPARE.  Move cmov_optab and cstore_optab above
2540         with cbranch_optab, move cmp_optab down with ucmp_optab,
2541         remove tst_otpab.  Do not initialize trap_rtx.
2542         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2543         for trap code.  Do not check HAVE_conditional_trap.  Use
2544         prepare_cmp_insn.  Accept no predicate for operand 3.
2545         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2546         (OTI_ctrap, ctrap_optab): New.
2547         (tst_optab): Delete.
2548         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2549         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2550         with lookup of ctrap_optab.
2551         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
2552         setcc_gen_code): Delete.
2553         (ctrap_optab): New.
2554
2555         * combine.c (combine_simplify_rtx, simplify_set): Do not
2556         special case comparing against zero for cc0 machines.
2557         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2558         COMPARE on cc0 machines.
2559         (simplify_relational_operation): Return a new expression when
2560         a COMPARE could be removed.
2561         * final.c (final_scan_insn): Compare cc_status values
2562         against LHS of a (compare FOO (const_int 0)) cc0 source.
2563         Also check if cc_status.value is the full compare.
2564
2565         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2566         (cstoreMM4): Document.
2567         (conditional_trap): Document ctrapMM4 instead.
2568         (sync_compare_and_swapMM): Refer to cbranchcc4.
2569         (Dependent Patterns): Eliminate obsolete information referring to
2570         the old jump optimization phase.
2571         (Canonicalization): Include cbranchcc4 case, omit canonicalization
2572         of compares with 0 on cc0 machines.
2573         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2574         avoiding references to cc0.  Remove text about storing operands
2575         in cmpMM.
2576         * doc/tm.texi (Condition Codes): Include blurb on different
2577         condition code representations, separate into subsections for
2578         CC0, MODE_CC and conditional execution.
2579
2580         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2581         alpha_emit_setcc): Accept operands and a machine mode.
2582         * config/alpha/alpha.c (alpha_emit_conditional_branch):
2583         Get code/op0/op1 from operands, use machine mode argument
2584         instead of alpha_compare.fp_p.  Emit the branch here.
2585         (alpha_emit_setcc): Likewise, and return boolean.
2586         (alpha_emit_conditional_move): Likewise.  Assert that
2587         cmp_op_mode == cmp_mode, and simplify accordingly.
2588         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2589         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2590         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2591         Delete.
2592         (stack probe test): Use cbranchdi4.
2593         * config/alpha/predicates.md (alpha_cbranch_operator): New.
2594
2595         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
2596         * config/arc/arc.h (movsicc, movsfcc): Use it.
2597         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2598         (cbranchsi4, cstoresi4): New.
2599         (cmpsi, bCC and sCC expanders): Remove. 
2600
2601         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2602         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2603         * config/arm/predicates.md (arm_comparison_operator): Only include
2604         floating-point operators if there is a hardware floating-point unit.
2605         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2606         deferring to cbranch_cc and cstore_cc respectively.
2607         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2608         cbranch_cc, cstore_cc): New.
2609         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2610         arm_compare_op1.
2611         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2612
2613         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2614         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2615         as an argument.
2616         (adjust_insn_length): Adjust calls.
2617         (avr_reorg): Handle (compare (foo) (const_int 0)).
2618         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2619         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2620         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2621         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2622         (bCC): Remove.
2623         (cbranchqi4, cbranchhi4, cbranchsi4): New.
2624         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2625
2626         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2627         (cbranchsi4, cstorebi4, cstoresi4): New.
2628         (movbisi): This insn is duplicate, split it to zero_extend.
2629         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2630         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
2631         (bfin_optimize_loop): Use cbranch expander.
2632         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2633         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2634         (bfin_bimode_comparison_operator): ... this.
2635         (bfin_direct_comparison_operator): New.
2636  
2637         * config/cris/cris.c (cris_normal_notice_update_cc): Look
2638         inside (compare FOO (const_int 0)).
2639         (cris_rtx_costs): Handle ZERO_EXTRACT.
2640         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2641         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2642         (*tstdi_v32): Delete.
2643         (*cmpdi_non_v32): Add M alternative for operand 1.
2644         (cmpsi, cmp<mode>): Make private.
2645         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2646         with COMPARE.
2647         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2648
2649         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2650         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2651         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2652         (cc_reg_operand): New.
2653         (any_cond): Delete.
2654         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2655         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2656         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2657         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2658         crx_expand_scond): Delete.
2659
2660         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2661         (cbranchsi4): New.
2662         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2663         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2664
2665         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2666         cstoresi4, cstoresf4, cstoredf4): New.
2667         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2668         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2669         Receive the entire operands array.
2670         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2671         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2672         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2673         Get test/op0/op1 from the operands array.
2674         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2675
2676         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2677         (h8300_expand_store): New.
2678         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2679         (const_int 0)).
2680         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
2681         (h8300_expand_store): New.
2682         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2683         or do not try to produce (set (cc0) REG).
2684         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
2685         change a compare into a move to a scratch register.  Disable some
2686         peepholes when comparing with zero.
2687         (tstsi, tsthi, tstsi, cmpqi): Make private.
2688         (cmphi): Delete.
2689         (bCC, sCC): Delete.
2690         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2691         cstoresi4): New.
2692
2693         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2694         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2695         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2696         (ix86_emit_i387_log1p): Use cbranchxf2.
2697         (ix86_expand_setcc): Return void.
2698         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2699         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2700         cmp<MODEF>, cmpcc): Remove.
2701         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2702         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2703         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2704         (sCC and bCC expanders): Remove.
2705         (stack_protect_test): Use cbranchcc4.
2706
2707         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2708         Delete.
2709         (ia64_expand_compare): Accept three rtx by reference and return void.
2710         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2711         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
2712         from *expr.  Update *expr with the BImode comparison to do.
2713         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2714         cmptf, bCC, sCC, conditional_trap): Delete.
2715         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
2716         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2717         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2718         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2719         * config/ia64/predicates.md (ia64_cbranch_operator): New.
2720
2721         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2722         type of last argument.
2723         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2724         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2725         use machine mode argument instead of branch_type.  Remove dead
2726         code for floating-point comparisons.
2727         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2728         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2729         Remove.
2730         (cbranchsi4, cstoresi4): New.
2731         * config/iq2000/predicates.md (reg_or_const_operand): New.
2732
2733         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2734         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2735         (b<code>_op): Rewrite to...
2736         (bcc_op): ... this, using match_operator.
2737         (s<code>_op): Rewrite to...
2738         (scc_op): ... this, using match_operator.
2739         (s<code>_24_op): Rewrite to...
2740         (scc_op_24): ... this, using match_operator.
2741         (s<code>_<mode>): Rewrite to...
2742         (cstore<mode>4): ... this, using match_operator.
2743         (s<code>_<mode>_24): Rewrite to...
2744         (cstore<mode>4_24): ... this, using match_operator.
2745         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2746         m32c_unpend_compare, m32c_expand_scc): Delete.
2747         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2748         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2749         (m32c_expand_movcc): Change NE to EQ if necessary.
2750         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2751
2752         * config/m32r/m32r-protos.h (gen_cond_store): New.
2753         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
2754         (gen_cond_store): New, from sCC patterns.
2755         (m32r_expand_block_move): Use cbranchsi4.
2756         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
2757         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
2758         (cbranchsi4, cstoresi4): New.
2759         
2760         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
2761         Delete.
2762         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
2763         (m68hc11_notice_update_cc): Look into a compare with 0.
2764         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
2765         Delete.
2766         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
2767         cmphi, cmpqi, bCC): Delete.
2768         (cbranchsi4, cbranchhi4, cbranchqi4): New.
2769         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
2770         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
2771         sets with COMPARE.
2772
2773         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
2774         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
2775         * config/m68k/constraints.md (H): New.
2776         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
2777         the define_insn below.
2778         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
2779         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
2780         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
2781         patterns): Wrap RHS with COMPARE.
2782         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
2783         (*cmpdi_internal): Name this pattern.
2784         (cmpdi): Change to define_insn.
2785         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
2786         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
2787         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
2788         predicate.
2789         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
2790         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
2791         (conditional_trap): Change to...
2792         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
2793         (*conditional_trap): Use the ordered_comparison_operator and
2794         const1_operand predicates.
2795         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
2796         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
2797         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
2798         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
2799
2800         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
2801         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
2802         (mcore_gen_compare): New. 
2803         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
2804         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
2805         (mcore_gen_compare): ... this.
2806         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
2807         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
2808         (stack probe pattern): Use cbranchsi4.
2809
2810         * config/mips/predicates.md (mips_cstore_operator): New.
2811         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
2812         * config/mips/mips.md (any_cond): Delete.
2813         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
2814         always succeed.
2815         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
2816         fixuns_truncsfdi2): Use cbranch patterns.
2817         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
2818         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
2819         Adjust call to mips_expand_conditional_branch.
2820         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
2821         cstore<GPR:mode>4.
2822         * config/mips/mips-protos.h (mips_expand_conditional_branch,
2823         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
2824         * config/mips/mips.c (cmp_operands): Delete.
2825         (mips_emit_compare): Get comparison operands from *op0/*op1.
2826         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
2827         that it succeeds.  Use op0/op1 instead of cmp_operands.
2828         (mips_expand_conditional_branch, mips_expand_conditional_move,
2829         mips_expand_conditional_trap): Likewise.
2830         (mips_block_move_loop): Use cbranch patterns. 
2831         * config/mips/mips.h (cmp_operands): Delete.
2832
2833         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
2834         (mmix_gen_compare_reg): Just return a register in the right CC mode.
2835         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
2836         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
2837         (*cmpcc_folded): Rename to...
2838         (*cmpdi_folded): this.
2839         (*cmpcc): Rename to...
2840         (*cmps): ... this.
2841         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
2842         (bCC): Remove.
2843         (cbranchdi4): New.
2844         (cbranchdf4): New.  Handle invalid comparisons here.
2845         * config/mmix/predicates.md (float_comparison_operator): New.
2846
2847         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
2848         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
2849         * config/mn10300/mn10300.md (tst): Delete.
2850         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
2851         Name these patterns and wrap RHS in a compare.
2852         (*cmpsi): Make this pattern private.  Include tst.
2853         (*cmpsf): Make this pattern private.
2854         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
2855         (compare with zero peepholes): Likewise.
2856         (bCC): Remove.
2857         (cbranchsi4, cbranchsf4): New.
2858         (casesi): Use cbranchsi4.
2859
2860         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
2861         hppa_branch_type): Delete.
2862         (return_addr_rtx): Use cbranchsi4.
2863         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
2864         Emit CCFPmode comparison here.
2865         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
2866         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
2867         hppa_branch_type): Delete.
2868         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
2869         (movsicc, movdicc): Remove references to hppa_compare_op0,
2870         hppa_compare_op1 and compare_from_rtx.
2871         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
2872         (casesi): Use cbranchsi4.
2873
2874         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
2875         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
2876         * config/pdp11/pdp11.md (register_or_const0_operand): New.
2877         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
2878         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
2879         (bCC): Delete.
2880         (cbranchdf4, cbranchhi4, cbranchqi4): New.
2881         (*branch, *branch_inverted): New.
2882
2883         * config/picochip/picochip.md (cbranchhi4): Use
2884         ordered_comparison_operator.
2885         (cmphi, bCC): Remove.
2886
2887         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
2888         (trap_comparison_operator): Delete.
2889         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
2890         rs6000_emit_cbranch): Accept mode and operands.
2891         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
2892         rs6000_compare_fp_p): Delete.   
2893         (rs6000_generate_compare): Accept mode and comparison.  Extract code
2894         and op0/op1 from there.  Replace references to rs6000_compare_op0
2895         and rs6000_compare_op1.
2896         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
2897         extract result from passed operands.
2898         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
2899         extract loc from passed operands.
2900         (rs6000_emit_cmove): Likewise.
2901         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
2902         rs6000_compare_fp_p): Delete.
2903         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
2904         (cbranch<GPR>4, cbranch<FP>4): New.
2905         (cstore<mode>4): New.  Consolidate here all choices about when to use
2906         portable or specialized sCC sequences.
2907         (stack_protect_test): Use cbranchsi4.
2908         (conditional_trap): Replace with ctrap<GPR>4.
2909         (conditional trap insn): Replace trap_comparison_operator with
2910         ordered_comparison_operator. 
2911
2912         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
2913         (s390_emit_prologue): Use ctrap.
2914         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
2915         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
2916         New predicates replacing...
2917         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
2918         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
2919         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
2920         (add<mode>cc): Do not use s390_compare_op0/op1.
2921         (s<code>): Change to...
2922         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
2923         (seq): Change to...
2924         (cstorecc4): ... this.  Handle EQ or NE equally.
2925         (*sne): Un-privatize for use in cstorecc4.
2926         (b<code>): Change to...
2927         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
2928         (conditional_trap): Replace with...
2929         (ctrap<GPR>4, ctrap<FP>4): ... these.
2930         (stack_protect): Use cbranchcc4.
2931
2932         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
2933         * config/score/score-protos.h (score_gen_cmp): Delete.
2934         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
2935         (score_block_move-loop): Use cbranchsi4.
2936         * config/score/score.md (cbranchsi4): New.
2937         (cmpsi, bCC): Delete.
2938         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
2939         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2940         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
2941         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2942         * config/score/score3.h (score3_gen_cmp): Delete.
2943         * config/score/score7.h (score7_gen_cmp): Delete.
2944
2945         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
2946         (sh_emit_scc_to_t): ... this.  Return void.
2947         (from_compare): Rename to...
2948         (sh_emit_compare_and_branch): ... this.
2949         (sh_emit_compare_and_set): New.
2950         (sh_expand_t_scc): Accept operands.
2951         * config/sh/predicates.md (sh_float_comparison_operator): New.
2952         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
2953         (prepare_scc_operands): Rename to...
2954         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
2955         arguments.
2956         (sh_emit_cheap_store_flag): New.
2957         (sh_emit_set_t_insn): New.
2958         (from_compare): Rename to...
2959         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
2960         handling of TARGET_SH2E floating point to avoid recursive call.
2961         Generate branch here.
2962         (sh_emit_compare_and_set): New.
2963         (sh_expand_t_scc): Get op0/op1 from arguments.
2964         (sh_emit_cheap_store_flag): New.
2965         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
2966         cases.
2967         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
2968         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
2969         (movsicc, movdicc): Do nothing when it recreated operands from
2970         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
2971         prepare_scc_operands (now sh_emit_scc_to_t).
2972         (udivdi3): Use cstoresi4.
2973         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
2974         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
2975         (cbranchint4_media, cbranchfp4_media): New.
2976         (casesi): Use cbranchdi4.
2977         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
2978         Delete.
2979         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
2980         (movnegt): Remove second operand.
2981         (cbranchsf4, cbranchdf4): New.
2982         (stack_protect): Use cbranchdi4/cbranchsi4.
2983
2984         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
2985         (gen_compare_reg): Accept comparison, extract part of it to...
2986         (gen_compare_reg_1): ... this. 
2987         (gen_compare_operator): Delete.
2988         (gen_v9_scc): Accept separate destination, comparison code and arms.
2989         Do not use sparc_compare_op0/sparc_compare_op1.
2990         (emit_scc_insn, emit_conditional_branch_insn): New.
2991         (emit_v9_brxx): Make static.  Remove useless assertion.
2992         (sparc_emit_float_lib_cmp): Return RTL instead of calling
2993         emit_cmp_insn.
2994         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
2995         * config/sparc/sparc-protos.h (gen_compare_reg,
2996         sparc_emit_float_lib_cmp): Adjust prototype.
2997         (emit_scc_insn, emit_conditional_branch_insn): New.
2998         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
2999         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3000         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3001         iterators to the top.
3002         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3003         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3004         snedi_special_trunc): Delete.
3005         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3006         and snedi_special_trunc.
3007         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3008         cbranchdi4, cbranch<F:mode>4): New.
3009         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3010         here.  Use gen_compare_reg instead of gen_compare_operator.
3011         (conditional_trap): Replace with...
3012         (ctrapsi4, ctrapdi4): ... this.
3013         (stack_protect_test): Use cbranchcc4.
3014
3015         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3016         argument to rtx.
3017         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3018         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3019         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3020         from operands[0] or operands[3] depending on is_set.
3021         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3022         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3023         cmpdf, bCC), sCC: Remove.
3024         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3025         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3026         cstoredf4): New.
3027         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3028         spu_emit_branch_or_set.
3029
3030         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3031         Add two arguments.
3032         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3033         xstormy16_compare_op1): Delete.
3034         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3035         xstormy16_compare_op1): Delete. 
3036         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3037         Adjust calls.
3038         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3039         (cmphi, cmpsi, bCC): Remove.
3040
3041         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3042         (*cmpsi): ... this one.
3043         (cbranchsi4, cstoresi4): New.
3044         (bCC expanders): Delete.
3045         (sCC insns): Fold into...
3046         (*setcc): ... this one.
3047         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3048         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3049         (movsicc): Simplify.
3050         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3051
3052         * config/vax/vax-protos.h (cond_name): New.
3053         (vax_output_conditional_branch): Remove.
3054         * config/vax/vax.c (cond_name): New.
3055         (vax_output_conditional_branch): Remove.
3056         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3057         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3058         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3059         (bit<VAXint>): Wrap source with (compare).
3060         (b<code> and following unnamed pattern): Rename to *branch and
3061         *branch_reversed.  Change macroization to match_operator.
3062         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3063
3064         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3065         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3066         Change last argument to machine_mode.
3067         (xtensa_expand_scc): Add machine_mode argument.
3068         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3069         (gen_conditional_move, xtensa_expand_conditional_branch,
3070         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3071         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3072         Adjust operand numbers.
3073         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3074         Delete.
3075         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3076         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3077         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3078
3079 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3080
3081         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3082         causes spurious differences between trunk and cond-optab branch.
3083
3084 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3085
3086         PR target/37137
3087         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3088
3089 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3090
3091         * tree.c (iterative_hash_pointer): Delete.
3092         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3093         Hash UIDs and versions of SSA names.  Don't special-case built-in
3094         function declarations.
3095
3096 2009-05-11  Ian Lance Taylor  <iant@google.com>
3097
3098         PR bootstrap/40103
3099         * graphite.c: Force -Wc++-compat to only be a warning before
3100         #including "cloog/cloog.h".
3101
3102 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3103
3104         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3105         
3106 2009-05-11  Jan Hubicka  <jh@suse.cz>
3107
3108         * tree-ssa-loop-ivcanon.c: Include target.h
3109         (struct loop_size): new structure.
3110         (constant_after_peeling): New predicate.
3111         (tree_estimate_loop_size): New function.
3112         (estimated_unrolled_size): Rewrite for new estimates.
3113         (try_unroll_loop_completely): Use new estimates.
3114         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3115
3116 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3117
3118         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3119         libcpp interface change.
3120         (spu_macro_to_expand): Likewise.
3121
3122 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3123
3124         PR tree-optimization/40026
3125         * gimplify.c (gimplify_init_constructor): Change initial conditional
3126         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3127         optimize_compound_literals_in_ctor.
3128
3129 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3130
3131         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3132         New devices.
3133         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3134
3135 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3136
3137         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3138         HOST_WIDE_INT for gap.
3139
3140 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3141
3142         PR tree-optimization/40074
3143         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3144         account in group size and step comparison.
3145
3146 2009-05-11  Richard Guenther  <rguenther@suse.de>
3147
3148         * passes.c (init_optimization_passes): Strip now incorrect comment.
3149         (execute_function_todo): Do not set PROP_alias.
3150         * tree-pass.h (PROP_alias): Remove.
3151         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3152         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3153         * tree-nrv.c (pass_return_slot): Likewise.
3154         * tree-object-size.c (pass_object_sizes): Likewise.
3155         * tree-ssa-dom.c (pass_dominator): Likewise.
3156         (pass_phi_only_cprop): Likewise.
3157         * tree-ssa-dse.c (pass_dse): Likewise.
3158         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3159         (pass_cselim): Likewise.
3160         * tree-ssa-pre.c (pass_pre): Likewise.
3161         (pass_fre): Likewise.
3162         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3163         * tree-ssa-sink.c (pass_sink_code): Likewise.
3164         * tree-stdarg.c (pass_stdarg): Likewise.
3165         * tree-tailcall.c (pass_tail_calls): Likewise.
3166         * tree-vrp.c (pass_vrp): Likewise.
3167
3168 2009-05-10  Ian Lance Taylor  <iant@google.com>
3169
3170         * basic-block.h (enum profile_status): Break out of struct
3171         control_flow_graph.
3172         * cgraph.h (struct inline_summary): Break out of struct
3173         cgraph_local_info.
3174         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3175         of struct cgraph_order_sort.
3176         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3177         * cse.c (struct branch_path): Break out of struct
3178         cse_basic_block_data.
3179         * except.h (enum eh_region_type): Break out of struct eh_region.
3180         * gcc.c (enum add_del): Break out of struct modify_target.
3181         * genrecog.c (enum decision_type): Break out of struct decision_test.
3182         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3183         ggc_pch_data.
3184         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3185         * regmove.c (enum match_use): New enum, broken out of struct match.
3186         * sched-int.h (enum post_call_group): New enum, broken out of
3187         struct deps.
3188         (struct deps_reg): Break out of struct deps.
3189         * target.h (struct asm_int_op): Break out of struct gcc_target.
3190         * tree-eh.c (struct goto_queue_node): Break out of struct
3191         leh_tf_state.
3192         * tree-inline.h (enum copy_body_cge_which): Break out of
3193         copy_body_data.
3194         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3195
3196         * c-decl.c (in_struct, struct_types): New static variables.
3197         (pushtag): Add loc parameter.  Change all callers.
3198         (lookup_tag): Add ploc parameter.  Change all callers.
3199         (check_compound_literal_type): New function.
3200         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3201         -Wc++-compat, warn about struct/union/enum types defined within a
3202         struct or union.
3203         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3204         and loc parameters.  Change all callers.  Change error calls to
3205         error_at, using loc.  For a redefinition, if the location of the
3206         original definition is known, report it.  Set in_struct and
3207         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3208         (finish_struct): Add new parameters enclosing_in_struct and
3209         enclosing_struct_types.  Change all callers.  Set
3210         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3211         in the struct.  If in a struct, add this struct to struct_types.
3212         (start_enum): Add loc parameter.  Change all callers.  Use
3213         error_at for errors, using loc.  For a redefinition, if the
3214         location of the original definition is known, report it.  If in a
3215         struct, add this enum type to struct_types.  If -Wc++-compat warn
3216         if in sizeof, typeof, or alignof.
3217         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3218         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3219         (c_parser_enum_specifier): Get enum location for start_enum.
3220         (c_parser_struct_or_union_specifier): Get struct location for
3221         start_struct.  Save in_struct and struct_types status between
3222         start_struct and finish_struct.
3223         (c_parser_cast_expression): Get location of cast.
3224         (c_parser_alignof_expression): Get location of type.
3225         (c_parser_postfix_expression): Likewise.
3226         (c_parser_postfix_expression_after_paren_type): Add type_loc
3227         parameter.  Change all callers.  Call check_compound_literal_type.
3228         Use type_loc for error about variable size type.
3229         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3230         of an enum constant from an enum type defined in a struct or union.
3231         (c_cast_expr): Add loc parameter.  Change all callers.  If
3232         -Wc++-compat, warn about defining a type in a cast.
3233         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3234         (start_enum, start_struct, finish_struct): Update declarations.
3235         (parser_xref_tag, c_cast_expr): Update declarations.
3236         (check_compound_literal_type): Declare.
3237
3238 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3239
3240         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3241         for recent libcpp interface change.
3242         (rs6000_macro_to_expand): Likewise.
3243
3244 2009-05-10  Michael Matz  <matz@suse.de>
3245
3246         PR target/40031
3247         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3248         not at entry of function.
3249
3250 2009-05-10  Richard Guenther  <rguenther@suse.de>
3251
3252         PR tree-optimization/40081
3253         Revert
3254         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3255         using the main variant of the element type.  Do not fiddle with
3256         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3257
3258         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3259         structs with volatile fields.
3260
3261 2009-05-10  Jan Hubicka  <jh@suse.cz>
3262
3263         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3264         (estimate_move_cost): Assert that it does not get called for
3265         VOID_TYPE_P.
3266         (estimate_num_insns): Skip VOID types in argument handling.
3267         (optimize_inline_calls): Delete unreachable blocks and verify that
3268         callgraph is valid.
3269
3270 2009-05-10  Jan Hubicka  <jh@suse.cz>
3271
3272         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3273         * cgraph.c (cgraph_mark_address_taken_node): New function.
3274         (dump_cgraph_node): Dump new flag.
3275         * cgraph.h (struct cgraph_node): Add address_taken.
3276         (cgraph_mark_address_taken_node): New function.
3277         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3278         since new direct calls can be born.
3279
3280 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3281
3282         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3283         tok->val.node.node.
3284
3285 2009-05-10  Jan Hubicka  <jh@suse.cz>
3286
3287         PR middle-end/40084
3288         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3289         argument; rewrite.
3290         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3291         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3292         * tree-inline.c (copy_bb): Set frequency correctly.
3293         (fold_marked_statements): Update call to
3294         cgraph_update_edges_for_call_stmt.
3295
3296 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3297
3298         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3299         identifiers in diagnostics.
3300         * config/arm/arm.c (arm_handle_fndecl_attribute,
3301         arm_handle_isr_attribute): Likewise.
3302         * config/avr/avr.c (avr_handle_progmem_attribute,
3303         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3304         * config/bfin/bfin.c (handle_int_attribute,
3305         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3306         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3307         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3308         Likewise.
3309         * config/darwin.c (darwin_handle_kext_attribute,
3310         darwin_handle_weak_import_attribute): Likewise.
3311         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3312         h8300_handle_eightbit_data_attribute,
3313         h8300_handle_tiny_data_attribute): Likewise.
3314         * config/i386/i386.c (ix86_handle_cconv_attribute,
3315         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3316         * config/i386/winnt.c (ix86_handle_shared_attribute,
3317         ix86_handle_selectany_attribute): Likewise.
3318         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3319         * config/m32c/m32c.c (function_vector_handler): Likewise.
3320         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3321         m68hc11_handle_fntype_attribute): Likewise.
3322         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3323         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3324         * config/mips/mips.c (mips_insert_attributes,
3325         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3326         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3327         rs6000_handle_struct_attribute): Likewise.
3328         * config/sh/sh.c (sh_insert_attributes,
3329         sh_handle_resbank_handler_attribute,
3330         sh_handle_interrupt_handler_attribute,
3331         sh2a_handle_function_vector_handler_attribute,
3332         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3333         Likewise.
3334         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3335         * config/spu/spu.c (spu_handle_fndecl_attribute,
3336         spu_handle_vector_attribute): Likewise.
3337         * config/stormy16/stormy16.c
3338         (xstormy16_handle_interrupt_attribute): Likewise.
3339         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3340         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3341
3342 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3343
3344         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3345         (pp_translate_identifiers): New.
3346         (pp_identifier): Only conditionally translate identifier to locale
3347         character set.
3348         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3349         (pp_base_tree_identifier): Only conditionally translate identifier
3350         to locale character set.
3351         * c-pretty-print.c (M_): Define.
3352         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3353         fragments for conditional translation with M_.
3354         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3355         identifier translation.
3356
3357 2009-05-10  Richard Guenther  <rguenther@suse.de>
3358
3359         PR tree-optimization/40081
3360         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3361         using the main variant of the element type.  Do not fiddle with
3362         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3363
3364 2009-05-09  Jan Hubicka  <jh@suse.cz>
3365
3366         PR middle-end/40080
3367         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3368         indirect calls; verify cgraph afterwards.
3369
3370 2009-05-09  Jan Hubicka  <jh@suse.cz>
3371
3372         PR bootstrap/40082
3373         * ipa.c (update_inlined_to_pointer): New function.
3374         (cgraph_remove_unreachable_nodes): Use it.
3375
3376 2009-05-09  Jan Hubicka  <jh@suse.cz>
3377
3378         * tree-eh.c (struct leh_state): Remove prev_try.
3379         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3380         not track prev_try.
3381         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3382         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3383         remove_eh_handler_and_replace, foreach_reachable_handler,
3384         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3385         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3386         (gen_eh_region_cleanup): Update prototype.
3387
3388 2009-05-09  Jan Hubicka  <jh@suse.cz>
3389
3390         PR middle-end/40043
3391         * except.c (copy_eh_region): Always set prev_try.
3392         (redirect_eh_edge_to_label): Find outer try.
3393         (foreach_reachable_handler): When looking for prev try
3394         handle case where previous try is not going to be taken.
3395
3396 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3397
3398         PR tree-optimization/40049
3399         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3400         only vector/vector shifts, convert the type of the constant to the
3401         appropriate type to avoid building incorrect trees, which
3402         eventually have problems with garbage collection.
3403
3404 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3405
3406         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3407         -1 for complex floating-point types if honoring signed zeros.
3408
3409 2009-05-08  Jan Hubicka  <jh@suse.cz>
3410
3411         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3412         argument; handle correctly when profile is absent.
3413         (build_cgraph_edges): Update.
3414         (rebuild_cgraph_edges): Update.
3415         * cgraph.c: Do not include varray.h.
3416         (cgraph_set_call_stmt_including_clones): New function.
3417         (cgraph_create_edge_including_clones): Likewise
3418         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3419         (cgraph_update_edges_for_call_stmt): Handle clones.
3420         (cgraph_remove_node): Handle clone tree.
3421         (cgraph_remove_node_and_inline_clones): New function.
3422         (dump_cgraph_node): Dump clone tree.
3423         (cgraph_clone_node): Handle clone tree.
3424         (clone_function_name): Bring here from tree-inline.c.
3425         (cgraph_create_virtual_clone): New function.
3426         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3427         (cgraph_clone_info): New function.
3428         (strut cgraph_node): Add clone_info and new clone tree pointers.
3429         (cgraph_remove_node_and_inline_clones,
3430         cgraph_set_call_stmt_including_clones,
3431         cgraph_create_edge_including_clones,
3432         cgraph_create_virtual_clone): Declare.
3433         (cgraph_function_versioning): Use VEC argument.
3434         (compute_call_stmt_bb_frequency): Update prototype.
3435         (cgraph_materialize_all_clones): New function.
3436         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3437         (ipcp_create_replace_map): Update to VECtors.
3438         (ipcp_update_callgraph): Use virtual clones.
3439         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3440         (ipcp_update_profiling): Do not update local profiling.
3441         (ipcp_insert_stage): Use VECtors and virtual clones.
3442         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3443         (clone_of_p): New function.
3444         (cgraph_preserve_function_body_p): Use clone tree.
3445         (cgraph_optimize): Materialize clones.
3446         (cgraph_function_versioning): Update for VECtors.
3447         (save_inline_function_body): Use clone tree.
3448         (cgraph_materialize_clone): New function.
3449         (cgraph_materialize_all_clones): Likewise.
3450         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3451         * ipa.c: Include gimple.h.
3452         (cgraph_remove_unreachable_nodes): Use clone tree.
3453         * ipa-prop.c (ipa_note_param_call): Update call to
3454         compute_call_stmt_bb_frequencycall.
3455         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3456         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3457         (copy_bb): Handle updating of clone tree; add new edge when new call
3458         appears.
3459         (expand_call_inline): Be strict about every call having edge.
3460         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3461         (delete_unreachable_blocks_update_callgraph): New function.
3462         (tree_function_versioning): Use VECtors; always remove unreachable
3463         blocks and fold conditionals.
3464         * tree-inline.h: Do not include varray.h.
3465         (tree_function_versioning): Remove.
3466         * Makefile.in (GTFILES): Remove tree-inline.c
3467         * passes.c (do_per_function): Do only functions having body.
3468         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3469         tree.
3470
3471 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
3472             Andrew Morrow  <acm@google.com>
3473
3474         PR c/36892
3475         * c-common.c (c_common_attribute_table): Permit deprecated
3476         attribute to take an optional argument.
3477         (handle_deprecated_attribute): If the optional argument to
3478         __attribute__((deprecated)) is not a string ignore the attribute
3479         and emit a warning.
3480
3481         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3482         * c-typeck.c (build_component_ref): Likewise.
3483         (build_external_ref): Likewise.
3484
3485         * toplev.c (warn_deprecated_use): Add an attribute argument.
3486         Emit the message associated with __attribute__((deprecated)).
3487
3488         * toplev.h (warn_deprecated_use): Updated.
3489
3490         * doc/extend.texi: Document new optional parameter to
3491         __attribute__((deprecated))
3492
3493 2009-05-08  Michael Eager <eager@eagercon.com>
3494
3495         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3496         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3497
3498 2009-05-08  Richard Guenther  <rguenther@suse.de>
3499
3500         PR tree-optimization/40062
3501         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3502         Avoid exponential behavior.
3503
3504 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3505
3506         PR rtl-optimization/33928
3507         PR 26854
3508         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3509         process_uses, build_single_def_use_links): New.
3510         (update_df): Update use_def_ref.
3511         (forward_propagate_into): Use get_def_for_use instead of use-def
3512         chains.
3513         (fwprop_init): Call build_single_def_use_links and let it initialize
3514         dataflow.
3515         (fwprop_done): Free use_def_ref.
3516         (fwprop_addr): Eliminate duplicate call to df_set_flags.
3517         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
3518         df_rd_simulate_one_insn): New.
3519         (df_rd_bb_local_compute_process_def): Update head comment.
3520         (df_chain_create_bb): Use the new RD simulation functions.
3521         * df.h (df_rd_simulate_artificial_defs_at_top, 
3522         df_rd_simulate_one_insn): New.
3523         * opts.c (decode_options): Enable fwprop at -O1.
3524         * doc/invoke.texi (-fforward-propagate): Document this.
3525
3526 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3527
3528         PR c/24581
3529         * c-typeck.c (build_binary_op): Handle arithmetic between one real
3530         and one complex operand specially.
3531         * tree-complex.c (some_nonzerop): Do not identify a real value as
3532         zero if flag_signed_zeros.
3533
3534 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3535
3536         PR rtl-optimization/33928
3537         * loop-invariant.c (record_use): Fix && vs. || mishap.
3538
3539 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3540
3541         PR rtl-optimization/33928
3542         * loop-invariant.c (struct use): Add addr_use_p.
3543         (struct def): Add n_addr_uses.
3544         (struct invariant): Add cheap_address.
3545         (create_new_invariant): Set cheap_address.
3546         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
3547         (record_uses): Pass df_ref to record_use.
3548         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3549         used only as such.
3550
3551 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3552
3553         * config/sh/sh.c: Do not include c-pragma.h.
3554
3555 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3556
3557         * config/spu/spu.c: Remove include of c-common.h.
3558
3559 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
3560
3561         PR c/39037
3562         * c-common.h (mark_valid_location_for_stdc_pragma,
3563         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3564         clear_float_const_decimal64, float_const_decimal64_p): New.
3565         * c.opt (Wunsuffixed-float-constants): New.
3566         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3567         unsuffixed float constant, handle new warning.
3568         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3569         * c-decl.c (c_scope): New flag float_const_decimal64.
3570         (set_float_const_decimal64, clear_float_const_decimal64,
3571         float_const_decimal64_p): New.
3572         (push_scope): Set new flag.
3573         * c-parser.c (c_parser_translation_unit): Mark when it's valid
3574         to use STDC pragmas.
3575         (c_parser_external_declaration): Ditto.
3576         (c_parser_compound_statement_nostart): Ditto.
3577         * c-pragma.c (valid_location_for_stdc_pragma,
3578         mark_valid_location_for_stdc_pragma,
3579         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
3580         handle_pragma_float_const_decimal64): New.
3581         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
3582         * cp/semantics.c (valid_location_for_stdc_pragma_p,
3583         set_float_const_decimal64, clear_float_const_decimal64,
3584         float_const_decimal64_p): New dummy functions.
3585         * doc/extend.texi (Decimal Float): Remove statement that the
3586         pragma, and suffix for double constants, are not supported.
3587         * doc/invoke.texi (Warning Options): List new option.
3588         (-Wunsuffixed-float-constants): New.
3589
3590 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
3591
3592         * config/i386/i386.c: Do not include c-common.h.
3593
3594 2009-05-07  Mark Heffernan  <meheff@google.com>
3595
3596         * doc/invoke.texi (Debugging Options): Document change of debugging
3597         dump location.
3598         * opts.c (decode_options): Make dump_base_name relative to
3599         aux_base_name directory.
3600
3601 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
3602
3603         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
3604         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
3605
3606 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
3607
3608         * Makefile.in (install-plugin): Simplify a bit.
3609
3610 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
3611
3612         * Makefile.in (OBJS-common): Add regcprop.o.
3613         (regcprop.o): New.
3614         * timevar.def (TV_CPROP_REGISTERS): New.
3615         * regrename.c (regrename_optimize): Return 0.
3616         (rest_of_handle_regrename): Delete.
3617         (pass_rename_registers): Point to regrename_optimize.
3618         (struct value_data_entry, struct value_data, 
3619         kill_value_one_regno, kill_value_regno, kill_value,
3620         set_value_regno, init_value_data, kill_clobbered_value,
3621         kill_set_value, kill_autoinc_value, copy_value,
3622         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
3623         replace_oldest_value_reg, replace_oldest_value_addr,
3624         replace_oldest_value_mem, copyprop_hardreg_forward_1,
3625         debug_value_data, validate_value_data): Move...
3626         * regcprop.c: ... here.
3627         (rest_of_handle_cprop): Delete.
3628         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
3629
3630 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
3631
3632         PR middle-end/40057
3633         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
3634         GEN_INT for 1 << bitnum.
3635         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
3636         build_int_cst_type.
3637
3638 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
3639
3640         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
3641         Remove wrong description of "nand" operation.
3642
3643 2009-05-06  Richard Guenther  <rguenther@suse.de>
3644             Adam Nemet  <anemet@caviumnetworks.com>
3645
3646         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
3647         comment.  Add that if LHS is not a gimple register, then RHS1 has
3648         to be a single object (GIMPLE_SINGLE_RHS).
3649
3650 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
3651
3652         * expr.c (get_def_for_expr): Move it up in the file.
3653         (store_field): When expanding a bit-field store, look at the
3654         defining gimple stmt for the masking conversion.
3655
3656 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
3657
3658         PR middle-end/39986
3659         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
3660         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
3661         32-bit memcpy into long.
3662
3663 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
3664
3665         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
3666         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
3667         new_reg_loc_descr.
3668         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
3669         instead of appending DW_OP_deref*.
3670
3671 2009-05-06  Michael Matz  <matz@suse.de>
3672
3673         PR middle-end/40021
3674         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
3675         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
3676
3677 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
3678
3679         * Makefile.in (install-plugin): Fix srcdir handling.
3680
3681 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
3682
3683         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
3684         when processing for not_regs_needed bitmap.
3685         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
3686         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
3687         handling it for rhs. 
3688
3689 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3690
3691         * config/i386/i386.md (unnamed inc/dec peephole): Use
3692         optimize_insn_for_size_p instead of optimize_size.
3693         * config/i386/predicates.md (incdec_operand): Likewise.
3694         (aligned_operand): Likewise.
3695         * config/i386/sse.md (divv8sf3): Likewise.
3696         (sqrtv8sf2): Likewise.
3697
3698 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3699
3700         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
3701
3702         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
3703
3704 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3705
3706         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
3707         ssemodesuffixf2c with avxmodesuffixf2c.
3708
3709 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
3710
3711         PR c/40032
3712         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
3713
3714 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
3715
3716         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
3717         (struct tree_base): Adjust spacing for 8 bit boundaries.
3718         (struct tree_decl_common): Add decl_by_reference_flag bit.
3719         (DECL_BY_REFERENCE): Adjust.
3720         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
3721         print DECL_BY_REFERENCE bit.
3722         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
3723         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
3724         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
3725         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
3726         unconditionally.
3727
3728         PR middle-end/39666
3729         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
3730         range of the type, but default label is missing, add it with one
3731         of the existing labels instead of adding a new label for it.
3732
3733 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
3734
3735         * dwarf.h: Remove.
3736
3737 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
3738
3739         * Makefile.in (enable_plugin, plugin_includedir): New.
3740         (install): Depend on install-plugin.
3741         (PLUGIN_HEADERS): New.
3742         (install-plugin): New.
3743         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
3744
3745 2009-05-05  Richard Guenther  <rguenther@suse.de>
3746
3747         PR tree-optimization/40022
3748         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
3749         the only vuse.
3750         (phivn_valid_p): Fix tuplification error, simplify.
3751         (phiprop_insert_phi): Add dumps.
3752         (propagate_with_phi): Simplify.
3753
3754 2009-05-05  Richard Guenther  <rguenther@suse.de>
3755
3756         PR middle-end/40023
3757         * builtins.c (gimplify_va_arg_expr): Properly build the address.
3758
3759 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
3760
3761         * tree.h (strip_float_extensions): Remove duplicate declaration.
3762         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
3763         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
3764         block_ultimate_origin): Rearrange the declarations line to match the
3765         comment that indicates the .c file which the functions are defined.
3766         (dwarf2out_*, set_decl_rtl): Add comment.
3767         (get_base_address): Adjust comment.
3768         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
3769         declarations line and add comment.
3770         (is_builtin_name): Add blank after function name, for clarity.
3771
3772 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3773
3774         * attribs.c (decl_attributes): Use %qE for identifiers in
3775         diagnostics.
3776         * cgraphunit.c (verify_cgraph_node): Translate function names to
3777         locale character set in diagnostics.
3778         * coverage.c (get_coverage_counts): Use %qE for identifiers in
3779         diagnostics.
3780         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
3781         Document that functions are named in UTF-8.
3782         * expr.c (expand_expr_real_1): Translate function names to locale
3783         character set in diagnostics.
3784         * gimplify.c (omp_notice_variable, omp_is_private,
3785         gimplify_scan_omp_clauses): Use %qE for identifiers in
3786         diagnostics.
3787         * langhooks.c (lhd_print_error_function): Translate function names
3788         to locale character set.
3789         * langhooks.h (decl_printable_name): Document that return value is
3790         in internal character set.
3791         * stmt.c: Include pretty-print.h
3792         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
3793         diagnostics.
3794         (resolve_operand_name_1): Translate named operand name to locale
3795         character set.
3796         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
3797         diagnostics.
3798         * toplev.c (announce_function): Translate function names to locale
3799         character set.
3800         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
3801         (default_tree_printer): Use pp_identifier or translate identifiers
3802         to locale character set.  Mark "<anonymous>" for translation.
3803         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
3804         for identifiers in diagnostics.
3805         * tree.c (handle_dll_attribute): Use %qE for identifiers in
3806         diagnostics.
3807         * varasm.c (output_constructor): Use %qE for identifiers in
3808         diagnostics.
3809
3810 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
3811
3812         * configure.ac: use ` ` instead of $()
3813         * configure: Regenerate.
3814
3815 2009-05-05  Ben Elliston  <bje@au.ibm.com>
3816
3817         * config/pa/linux-atomic.c: Eliminate conditional include of
3818         errno.h on non-LP64 systems to simplify build requirements.
3819
3820 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3821
3822         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
3823         diagnostics.
3824         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
3825         and pass value to identifier_to_locale.
3826         (warn_variable_length_array): Make name a tree.
3827         (grokdeclarator): Separate diagnostic texts for named and unnamed
3828         declarators.  Use %qE for named declarators.
3829         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
3830         diagnostics.
3831         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
3832         identifiers in diagnostics.
3833         * c-typeck.c (push_member_name, start_init): Pass identifiers to
3834         identifier_to_locale.  Mark "anonymous" strings for translation.
3835
3836 2009-05-04  Michael Eager <eager@eagercon.com>
3837
3838         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
3839         address for DImode/DFmode only if double-precision FP regs.
3840
3841 2009-05-04  Michael Eager <eager@eagercon.com>
3842
3843         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
3844         TARGET_SINGLE_FLOAT check.
3845
3846 2009-05-04  Michael Eager <eager@eagercon.com>
3847
3848         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
3849
3850 2009-05-04  Michael Eager <eager@eagercon.com>
3851
3852         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
3853         * config/rs6000/t-xilinx: New
3854
3855 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
3856
3857         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
3858         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
3859         * gcc/explow.c (memory_address): Use target hook.
3860         * gcc/targhooks.c (default_legitimize_address): New.
3861         * gcc/targhooks.h (default_legitimize_address): New.
3862         * gcc/target.h (legitimize_address): New.
3863         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
3864         (TARGET_INITIALIZER): Include it.
3865         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
3866
3867         * config/bfin/bfin-protos.h (legitimize_address): Remove.
3868         * config/bfin/bfin.c (legitimize_address): Remove.
3869         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
3870         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
3871         Remove.
3872         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
3873         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
3874
3875         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
3876         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
3877         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
3878         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
3879         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
3880         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
3881         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
3882         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
3883         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
3884         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
3885         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
3886         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
3887         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
3888         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
3889         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
3890         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
3891         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
3892         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
3893         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
3894         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
3895         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
3896         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
3897         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
3898
3899         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
3900         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
3901         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
3902         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
3903         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
3904         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
3905         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
3906         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
3907         (thumb_legitimize_address): Delete.
3908         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
3909         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
3910         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
3911         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
3912         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
3913         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
3914         Delete.
3915         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
3916         Delete.
3917
3918         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
3919         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
3920         * config/m32r/m32r.c (m32r_legitimize_address): New.
3921         * config/m68k/m68k.c (m68k_legitimize_address): New.
3922         * config/score/score.c (score_legitimize_address): Standardize.
3923         * config/score/score3.c (score3_legitimize_address): Standardize.
3924         * config/score/score3.h (score3_legitimize_address): Adjust.
3925         * config/score/score7.c (score7_legitimize_address): Standardize.
3926         * config/score/score7.h (score7_legitimize_address): Adjust.
3927         * config/sh/sh.c (sh_legitimize_address): New.
3928         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
3929
3930         * gcc/config/s390/s390.c (legitimize_address): Rename to...
3931         (s390_legitimize_address): ... this.
3932         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
3933         (sparc_legitimize_address): ... this.
3934         * gcc/config/i386/i386.c (legitimize_address): Rename to...
3935         (ix86_legitimize_address): ... this.
3936         * gcc/config/avr/avr.c (legitimize_address): Rename to...
3937         (avr_legitimize_address): ... this.
3938         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
3939         (mn10300_legitimize_address): ... this.
3940         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
3941         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
3942         (alpha_expand_mov): Adjust call.
3943
3944         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
3945         * config/spu/spu.c (spu_legitimize_address): Likewise.
3946         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
3947         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
3948
3949 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3950
3951         * intl.c (locale_encoding, locale_utf8): New.
3952         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
3953         * intl.h (locale_encoding, locale_utf8): Declare.
3954         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
3955         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
3956         New.
3957         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
3958         argument.
3959         (pp_tree_identifier): Define to call pp_base_tree_identifier.
3960         (pp_base_tree_identifier): Declare as function.
3961         (identifier_to_locale): Declare.
3962         * Makefile.in (pretty-print.o): Update dependencies.
3963         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
3964
3965 2009-05-04  Richard Guenther  <rguenther@suse.de>
3966
3967         PR middle-end/40015
3968         * builtins.c (fold_builtin_memory_op): Do not decay to element
3969         type if the size matches the whole array.
3970
3971 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
3972
3973         * expmed.c (synth_mult): When trying out a shift, pass the result
3974         of a signed shift.
3975
3976 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
3977
3978         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
3979         (shiftsub1_cost): New.
3980         (init_expmed): Compute shiftsub1_cost.
3981         (synth_mult): Optimize multiplications by constants of the form
3982         -(2^^m-1) for some constant positive integer m.
3983
3984 2009-05-03  Richard Guenther  <rguenther@suse.de>
3985
3986         PR c/39983
3987         * c-typeck.c (array_to_pointer_conversion): Do not built
3988         ADDR_EXPRs of arrays of pointer-to-element type.
3989         * c-gimplify.c (c_gimplify_expr): Revert change fixing
3990         up wrong ADDR_EXPRs after-the-fact.
3991         * c-common.c (strict_aliasing_warning): Strip pointer
3992         conversions for obtaining the original type.
3993         * builtins.c (fold_builtin_memset): Handle array types.
3994         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
3995         and array types
3996
3997 2009-05-03  Richard Guenther  <rguenther@suse.de>
3998
3999         PR middle-end/23329
4000         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
4001         Do not lose casts from array types with unknown extent to array
4002         types with known extent.
4003         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
4004         alias set compatibility.
4005
4006 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
4007
4008         * flags.h (extra_warnings): Delete.
4009         * toplev.c (process_options): Handle Wuninitialized here.
4010         * opts.c (extra_warnings): Delete.
4011         (set_Wextra): Delete.
4012         (common_handle_option): -Wextra can be handled automatically.
4013         * c-opts.c (c_common_handle_option): Delete obsolete code.
4014         (c_common_post_options): Simplify comment.
4015         * common.opt (W): Add Var.
4016         (Wextra): Add Var.
4017         (Wuninitialized): Initialize to -1.
4018
4019 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
4020             Richard Guenther  <rguenther@suse.de>
4021
4022         * expr.c (get_def_for_expr): New function.
4023         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
4024         SSA rather than trees.
4025         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
4026         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
4027         
4028 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
4029
4030         * c-common.c (reswords): Add _Imaginary.
4031         * c-common.c (enum rid): Add RID_IMAGINARY.
4032
4033 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
4034
4035         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
4036         Patch by Richard Guenther.
4037
4038 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
4039
4040         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
4041         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
4042         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
4043         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
4044         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
4045         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
4046         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
4047         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
4048         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
4049         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
4050         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
4051         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
4052         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
4053         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
4054         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
4055         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
4056         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
4057         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
4058
4059 2009-05-02  Richard Guenther  <rguenther@suse.de>
4060
4061         PR tree-optimization/39940
4062         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
4063         doing so.
4064
4065 2009-05-02  Richard Guenther  <rguenther@suse.de>
4066
4067         PR middle-end/40001
4068         * tree-ssa.c (execute_update_addresses_taken): Properly check
4069         if we can mark a variable DECL_GIMPLE_REG_P.
4070         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
4071         back to the end of the function.
4072         (is_gimple_reg_type): Remove complex type special casing.
4073         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
4074         if not optimizing.
4075
4076 2009-05-02  Ben Elliston  <bje@au.ibm.com>
4077
4078         * doc/collect2.texi (Collect2): Document search path behaviour
4079         when configured with --with-ld.
4080
4081 2009-05-02  Jan Hubicka  <jh@suse.cz>
4082
4083         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
4084         parameter; update callers.
4085         (coalesce_cost_edge): EH edges are costier because they needs
4086         splitting even if not critical and even more costier when there are
4087         multiple EH predecestors.
4088
4089 2009-05-02  Jan Hubicka  <jh@suse.cz>
4090
4091         * except.c (remove_eh_handler_and_replace): Handle updating after
4092         removing TRY blocks.
4093
4094 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
4095
4096         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
4097
4098 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
4099
4100         * varasm.c: Do not include c-pragma.h.
4101         * attribs.c: Do not incude c-common.h.
4102
4103 2009-05-01  Michael Matz  <matz@suse.de>
4104
4105         * calls.c (initialize_argument_information): Handle SSA names like
4106         decls with a non MEM_P DECL_RTL.
4107
4108 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4109
4110         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
4111         * ipa-utils.c: Likewise.
4112         * ipa-type-escape.c: Likewise.
4113         * cgraphunit.c Do not include c-common.h.
4114         * ipa-pure-const.c: Likewise.
4115         * tree-if-conv.c: Likewise.
4116         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
4117         * ipa-struct-reorg.c: Likewise.
4118         * tree-nomudflap.c: Likewise.
4119         * tree-ssa-structalias.c: Likewise.
4120
4121 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4122
4123         * store-motion.c: Many cleanups to make this pass a first-class
4124         citizen instead of an appendix to gcse load motion.  Add TODO list
4125         to make this pass faster/cleaner/better.
4126
4127         (struct ls_expr): Post gcse.c-split cleanups.
4128         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
4129         "stores" field to "avail_stores".
4130         (pre_ldst_mems): Rename to store_motion_mems.
4131         (pre_ldst_table): Rename to store_motion_mems_table.
4132         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
4133         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
4134         (ldst_entry): Rename to st_expr_entry, update users.
4135         (free_ldst_entry): Rename to free_st_expr_entry, update users.
4136         (free_ldst_mems): Rename to free_store_motion_mems, update users.
4137         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
4138         update caller.
4139         (first_ls_expr): Rename to first_st_expr, update users.
4140         (next_ls_expr): Rename to next_st_expr, update users.
4141         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
4142         fields properly for store motion instead of names inherited from load
4143         motion in gcse.c.
4144         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
4145         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
4146         are done with it.
4147
4148         (ae_kill): Rename to st_kill, update users.
4149         (ae_gen): Rename to st_avloc, update users.
4150         (transp): Rename to st_transp, update users.
4151         (pre_insert_map): Rename to st_insert_map, update users.
4152         (pre_delete_map): Rename to st_delete_map, update users.
4153         (insert_store, build_store_vectors, free_store_memory,
4154         one_store_motion_pass): Update for abovementioned changes.
4155
4156         (gcse_subst_count, gcse_create_count): Remove.
4157         (one_store_motion_pass): New statistics counters "n_stores_deleted"
4158         and "n_stores_created", local variables.
4159
4160         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
4161         use for_each_rtx.
4162
4163         (regvec, compute_store_table_current_insn): Remove.
4164         (reg_set_info, reg_clear_last_set): Remove.
4165         (compute_store_table): Use DF caches instead of local dataflow
4166         solvers.
4167
4168 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
4169
4170         * c-objc-common.c (c_tree_printer): Print identifiers with
4171         pp_identifier, not pp_string.  Mark "({anonymous})" for
4172         translation.
4173         * c-pretty-print.c (pp_c_ws_string): New.
4174         (pp_c_cv_qualifier, pp_c_type_specifier,
4175         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
4176         pp_c_storage_class_specifier, pp_c_function_specifier,
4177         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
4178         pp_c_primary_expression, pp_c_postfix_expression,
4179         pp_c_unary_expression, pp_c_shift_expression,
4180         pp_c_relational_expression, pp_c_equality_expression,
4181         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
4182         use pp_string and pp_c_ws_string in place of pp_identifier and
4183         pp_c_identifier for non-identifiers.  Mark English strings for
4184         translation.
4185         * c-pretty-print.h (pp_c_ws_string): Declare.
4186
4187 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
4188             Roland McGrath <roland@redhat.com>
4189
4190         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
4191         (ENABLE_LD_BUILDID): New configuration option.
4192         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
4193         (LINK_BUILDID_SPEC): New macro.
4194         (init_spec): If defined, prepend it between LINK_EH_SPEC and
4195         link_spec.
4196         * doc/install.texi: Document --enable-linker-build-id option.
4197         * configure: Rebuild.
4198         * config.in: Rebuild.
4199
4200 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
4201
4202         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
4203         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
4204         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
4205         MIPS_GP_SAVE_AREA_SIZE.
4206         * config/mips/mips.c (struct mips_frame_info): Update comment
4207         before arg_pointer_offset and hard_frame_pointer_offset.
4208         (mips_compute_frame_info): Update diagram before function: to
4209         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
4210         indicate the position of frame_pointer_rtx with -fstack-protector and
4211         to show args_size.  Don't allocate cprestore area for leaf functions
4212         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
4213         cprestore_size.
4214         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
4215
4216 2009-04-30  Michael Matz  <matz@suse.de>
4217
4218         PR tree-optimization/39955
4219         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
4220
4221 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
4222
4223         * ira.c (setup_cover_and_important_classes):  Use safe macro
4224         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
4225         directly.
4226         * genpreds.c (write_tm_preds_h):  Output suitable definition of
4227         REG_CLASS_FOR_CONSTRAINT.
4228
4229 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4230
4231         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
4232         instead of an int.
4233         * bitmap.c (bitmap_descriptor): Likewise.
4234         * ggc-common.c (loc_descriptor): Likewise.
4235         * varray.c (varray_descriptor): Likewise.
4236         * vec.c (vec_descriptor): Likewise.
4237
4238 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
4239
4240         * Makefile.in (dce.o): Add $(EXCEPT_H).
4241         * dce.c: Include except.h and delete redundant vector definitions.
4242         (deletable_insn_p): Return false for non-call insns that can throw
4243         if DF is running.
4244
4245 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
4246
4247         * gcse.c (ae_gen): Remove.
4248         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
4249         and make non-static function to make it available in store-motion.c.
4250         Update call sites with search-and-replace.
4251         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
4252         extract_mentioned_regs, extract_mentioned_regs_helper,
4253         find_moveable_store, compute_store_table, load_kills_store, find_loads,
4254         store_killed_in_insn, store_killed_after, store_killed_before,
4255         build_store_vectors, insert_insn_start_basic_block, insert-store,
4256         remove_reachable_equiv_notes, replace_store_insn, delete_store,
4257         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
4258         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
4259         * store-motion.c: ...new file.  Also copy data structures from gcse.c
4260         and clean up to remove parts not used by store motion.
4261         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
4262         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
4263
4264 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4265
4266         PR target/38571
4267         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
4268         when optimizing for size.
4269
4270 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
4271
4272         * gcse.c (gcse_constant_p): Fix typo in last change.
4273
4274 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4275
4276         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
4277
4278 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
4279
4280         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
4281
4282 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
4283
4284         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
4285         CONST_HIGH_PART result.
4286
4287 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
4288
4289         * config/avr/avr.c (initial_elimination_offset): Rename to
4290         avr_initial_elimination_offset.
4291         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
4292         change return type to bool.
4293         (avr_can_eliminate): New function.
4294         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
4295         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
4296         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
4297         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
4298         avr_initial_elimination_offset.
4299         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
4300         (avr_initial_elimination_offset): Define.
4301
4302 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
4303             Steven Bosscher  <steven@gcc.gnu.org>
4304
4305         PR rtl-optimization/39938
4306         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
4307         * cfgrtl.c: Include insn-attr.h.
4308         (rest_of_pass_free_cfg): New function.
4309         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
4310         * resource.c (init_resource_info): Remove call to df_analyze.
4311
4312 2009-04-29  Richard Guenther  <rguenther@suse.de>
4313
4314         PR target/39943
4315         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
4316         allow conversion to signed integers.
4317
4318 2009-04-29  Richard Guenther  <rguenther@suse.de>
4319
4320         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
4321         shifts of floating point vectors if the shift amount is
4322         a constant multiple of the element size.
4323
4324 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4325             Michael Matz  <matz@suse.de>
4326
4327         PR middle-end/39927
4328         PR bootstrap/39929
4329         * tree-outof-ssa.c (emit_partition_copy): New function.
4330         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
4331         insert_part_to_rtx_on_edge): Perform the partition base var
4332         copy using emit_partition_copy.
4333         (insert_value_copy_on_edge): Convert constants to the right mode.
4334         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
4335         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
4336
4337 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4338
4339         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
4340         scan backwards to try to find a constant to initialize it.
4341
4342         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
4343         insn before the loop_end instruction, don't look past labels.
4344
4345 2009-04-29  Richard Guenther  <rguenther@suse.de>
4346
4347         PR middle-end/39937
4348         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4349         loose type conversions.
4350         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
4351         stmts only if there are no uses of its definition.
4352
4353 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4354
4355         * config/bfin/bfin.h (splitting_loops): Declare.
4356         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
4357         Reorder bit definitions to be ascending.
4358         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
4359         * config/bfin/bfin.c (splitting_loops): New variable.
4360         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
4361         (struct loop_info): Remove members INIT and LOOP_INIT.
4362         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
4363         the LSETUP sequence.  Allow LC to be loaded from any register, but
4364         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
4365         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
4366         set to 1.
4367         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
4368         of reload_completed.
4369
4370         From Jie Zhang:
4371         * config/bfin/bfin.md (movsi_insn): Refine constraints.
4372
4373 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
4374
4375         * Makefile.in (PLUGIN_VERSION_H): New.
4376         (OBJS-common): Remove plugin-version.o.
4377         (plugin.o): Depend on (PLUGIN_VERSION_H).
4378         (plugin-version.o): Remove.
4379         * configure: Regenerate
4380         * configure.ac: Create plugin-version.h.
4381         * gcc-plugin.h (plugin_gcc_version): Remove.
4382         (plugin_default_version_check): Change signature.
4383         * plugin-version.c: Remove.
4384         * plugin.c: Include plugin-version.h.
4385         (str_plugin_gcc_version_name): Remove.
4386         (try_init_one_plugin): Pass gcc version to plugin_init.
4387         (plugin_default_version_check): Both gcc and plugin versions are now
4388         arguments.
4389
4390 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4391         
4392         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
4393         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
4394         Remove special case testing for last insn of inner loops. Don't fail
4395         if the loop ends with a jump, emit an extra nop instead.
4396
4397         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
4398         DREGS rather than comparing directly.  Remove code that tries to
4399         account for latencies.
4400
4401 2009-04-29  Richard Guenther  <rguenther@suse.de>
4402
4403         PR tree-optimization/39941
4404         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
4405         eliminating an indirect call.
4406
4407 2009-04-29  Richard Guenther  <rguenther@suse.de>
4408
4409         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
4410         parameter.  Allow invariants as base if !require_lvalue.
4411         (verify_gimple_assign_single): Adjust.
4412
4413 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4414
4415         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
4416         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
4417         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
4418         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
4419         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
4420         a VEC_SELECT.
4421         * config/bfin/bfin.c (bfin_expand_builtin,
4422         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
4423
4424 2009-04-28  Richard Guenther  <rguenther@suse.de>
4425
4426         * tree-vect-loop.c (get_initial_def_for_induction): Use
4427         correct types for pointer increment.
4428
4429 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4430
4431         * toplev.c (print_version): Update GMP version string calculation.
4432
4433 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
4434
4435         PR rtl-optimization/39938
4436         * resource.c (init_resource_info): Add call to df_analyze.
4437
4438 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4439
4440         * config/alpha/alpha.md (usegp): Cast the result of
4441         alpha_find_lo_sum_using_gp to enum attr_usegp.
4442         * config/alpha/alpha.c (override_options): Remove end-of-structure
4443         marker element from cpu_table.  Use array size of cpu_table to handle
4444         -mcpu and -mtune options.
4445         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
4446
4447 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
4448
4449         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
4450         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
4451         tune_32 and tune_64.
4452         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
4453         support on PowerPC.
4454         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
4455         * config/rs6000/option-defaults.h: ... here.  New file.
4456         (OPT_64, OPT_32): Define.
4457         (MASK_64BIT): Define to 0 if not already defined.
4458         (OPT_ARCH64, OPT_ARCH32): Define.
4459         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
4460         and tune_64.
4461
4462 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4463
4464         * config/arm/arm.c (arm_override_options): Emit error on using
4465         fpa with AAPCS.
4466
4467 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4468
4469         PR rtl-optimization/39914
4470         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
4471         registers for allocnos created from user-defined variables only
4472         when not optimizing.
4473
4474 2009-04-28  Richard Guenther  <rguenther@suse.de>
4475
4476         PR middle-end/39937
4477         * fold-const.c (fold_binary): Use distribute_real_division only
4478         on float types.
4479
4480 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
4481
4482         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
4483         add hpux-stdint.h to tm_file.
4484         (hppa[12]*-*-hpux11*): Ditto.
4485         (ia64*-*-hpux*): Ditto.
4486         * config/hpux-stdint.h: New.
4487         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
4488         __STDC_EXT__ for all compiles.
4489         * config/pa/pa-hpux.h: Ditto.
4490         * config/pa/pa-hpux10.h: Ditto.
4491         * config/pa/pa-hpux11.h: Ditto.
4492
4493 2009-04-28  Catherine Moore  <clm@codesourcery.com>
4494
4495         * debug.h (set_name): Add comment.
4496
4497 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
4498
4499         PR target/39929
4500         * config/darwin.c (machopic_gen_offset): Check
4501         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
4502         * config/arm/arm.c (require_pic_register): Likewise.
4503
4504 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
4505
4506         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
4507         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
4508         m32c_promote_prototypes): Delete.
4509
4510 2009-04-28  Michael Matz  <matz@suse.de>
4511
4512         PR middle-end/39922
4513         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
4514         constants.
4515
4516 2009-04-28  Richard Guenther  <rguenther@suse.de>
4517
4518         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
4519
4520 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4521
4522         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
4523         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
4524         * config/arm/arm-tune.md: Regenerate.
4525
4526 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
4527
4528         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
4529         block if there are complex incoming edges.
4530         (sel_merge_blocks): Remove useless assert.
4531         (sel_redirect_edge_and_branch): Check that edge was redirected.
4532         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
4533         (sel_find_rgns): Delete declaration.
4534         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
4535         the region when it is not a preheader.
4536
4537 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4538
4539         PR c/39323
4540         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
4541
4542 2009-04-28  Richard Guenther  <rguenther@suse.de>
4543
4544         * tree.h (SSA_NAME_VALUE): Remove.
4545         (struct tree_ssa_name): Remove value_handle member.
4546         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
4547         array for jump threading.
4548         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
4549         SSA_NAME_VALUEs.
4550         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
4551         * tree-flow.h (threadedge_initialize_values): Declare.
4552         (threadedge_finalize_values): Likewise.
4553         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
4554         (SSA_NAME_VALUE): Define.
4555         (threadedge_initialize_values): New function.
4556         (threadedge_finalize_values): Likewise.
4557         * tree-ssa-dom.c (ssa_name_values): New global variable.
4558         (SSA_NAME_VALUE): Define.
4559         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
4560
4561 2009-04-28  Ira Rosen  <irar@il.ibm.com>
4562
4563         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
4564         Use REPORT_VECTORIZED_LOCATIONS instead 
4565         REPORT_VECTORIZED_LOOPS.
4566         * tree-vectorizer.c (vect_verbosity_level): Make static.
4567         (vect_loop_location): Rename to vect_location.
4568         (vect_set_verbosity_level): Update comment.
4569         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
4570         and vect_location.
4571         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
4572         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
4573         instead REPORT_UNVECTORIZED_LOOPS.
4574         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
4575         and vect_loop_def to vect_external_def and vect_internal_def.
4576         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
4577         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
4578         REPORT_UNVECTORIZED_LOCATIONS.
4579         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
4580         and vect_used_in_loop and to vect_unused_in_scope and 
4581         vect_used_in_scope.
4582         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
4583         (vect_verbosity_level): Remove declaration.
4584         (vect_analyze_operations): Likewise.
4585         (vect_analyze_stmt): Declare.
4586         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
4587         REPORT_UNVECTORIZED_LOCATIONS.
4588         (vect_get_loop_niters): Fix indentation.
4589         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
4590         (vect_analyze_loop_operations): New function.
4591         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
4592         vect_analyze_operations.
4593         (vect_is_simple_reduction): Use new names.
4594         (vectorizable_live_operation, vect_transform_loop): Likewise.
4595         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
4596         to specify whether the data references can be a part of interleaving
4597         chain.
4598         (vect_analyze_data_ref_dependence): Use new names.
4599         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
4600         (vect_create_addr_base_for_vector_ref): Remove redundant code.
4601         * tree-vect-patterns.c (widened_name_p): Use new names.
4602         (vect_recog_dot_prod_pattern): Likewise.
4603         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
4604         (process_use, vect_mark_stmts_to_be_vectorized, 
4605         vect_model_simple_cost, vect_model_store_cost,
4606         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
4607         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
4608         vectorizable_operation, vectorizable_type_demotion,
4609         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
4610         vectorizable_condition): Likewise.
4611         (vect_analyze_operations): Split into vect_analyze_loop_operations
4612         and ...
4613         (vect_analyze_stmt): ... new function.
4614         (new_stmt_vec_info): Use new names.
4615         (vect_is_simple_use): Use new names and fix comment.
4616         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
4617         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
4618
4619 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4620
4621         PR target/39911
4622         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
4623         and integer modes for x87 operands.  Do not ICE for unsupported size,
4624         generate error instead.  Generate error for unsupported operand types.
4625         ['z']: Do not handle HImode memory operands specially.  Warning
4626         for floating-point operands.  Fallthru to 'Z' for unsupported operand
4627         types.  Do not ICE for unsupported size, generate error instead.
4628         (output_387_binary_op): Use %Z to output operands.
4629         (output_fp_compare): Ditto.
4630         (output_387_reg_move): Ditto.
4631
4632 2009-04-28  Ben Elliston  <bje@au.ibm.com>
4633
4634         PR c++/35652
4635         Revert:
4636
4637         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4638
4639         * builtins.c (c_strlen): Do not warn here.
4640         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
4641         * c-common.c (pointer_int_sum): Take an explicit location.
4642         Warn about offsets out of bounds.
4643         * c-common.h (pointer_int_sum): Adjust declaration.
4644
4645 2009-04-27  Ian Lance Taylor  <iant@google.com>
4646
4647         * collect2.c (is_ctor_dtor): Change type of ret field in struct
4648         names to symkind.
4649         * dce.c (run_fast_df_dce): Change type of old_flags to int.
4650         * df-core.c (df_set_flags): Change return type to int.  Change
4651         type of old_flags to int.
4652         (df_clear_flags): Likewise.
4653         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
4654         (df_get_conditional_uses): Likewise.
4655         * df.h (df_set_flags, df_clear_flags): Update declarations.
4656         * dwarf2out.c (struct indirect_string_node): Change type of form
4657         field to enum dwarf_form.
4658         (AT_string_form): Change return type to enum dwarf_form.
4659         * fixed-value.c (fixed_compare): Add cast to enum type.
4660         * fwprop.c (update_df): Change 0 to VOIDmode.
4661         * gensupport.c: Change 0 to UNKNOWN.
4662         * gimple.h (gimple_cond_code): Add cast to enum type.
4663         * haifa-sched.c (reemit_notes): Add cast to enum type.
4664         * hooks.c (hook_int_void_no_regs): Remove function.
4665         * hooks.h (hook_int_void_no_regs): Remove declaration.
4666         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
4667         * predict.c (combine_predictions_for_insn): Add casts to enum type.
4668         * real.c (real_arithmetic): Add cast to enum type.
4669         (real_compare): Likewise.
4670         * target.h (struct gcc_target): Change return type of
4671         branch_target_register_class to enum reg_class.
4672         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
4673         default_branch_target_register_class.
4674         * targhooks.c (default_branch_target_register_class): New function.
4675         * targhooks.h (default_branch_target_register_class): Declare.
4676         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
4677         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
4678         cast to int.
4679         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
4680         ERROR_MARK.
4681         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
4682         vect_uninitialized_def.  Change 0 to ERROR_MARK.
4683         * tree-vect-stmts.c (supportable_widening_operation): Don't
4684         initialize icode1 and icode2.
4685         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
4686         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
4687         and to STD_C89.
4688         (cmn_err_flag_specs): Change 0 to STD_C89.
4689         (cmn_err_char_table): Likewise.
4690         * config/arm/arm.c (get_arm_condition_code): Change type of code
4691         to enum arm_cond_code.
4692         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
4693         (IWMMXT_BUILTIN2): Likewise.
4694         (neon_builtin_type_bits): Don't define typedef.
4695         (neon_builtin_datum): Change type of bits field to int.
4696         (arm_expand_neon_args): Add cast to enum type.
4697         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
4698         TLS_MODEL_NONE.
4699         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
4700         casts to enum type.
4701         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
4702         MIPS_FP_COND_f.
4703         * config/mips/mips.md (jal_macro): Return enum constant.
4704         (single_insn): Likewise.
4705         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
4706         CODE_FOR_nothing.
4707         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
4708         casts to enum type.
4709         * config/s390/s390.c (s390_tune_flags): Change type to int.
4710         (s390_arch_flags): Likewise.
4711         (s390_handle_arch_option): Change flags field of struct pta to int.
4712         * config/s390/s390.h (s390_tune_flags): Update declaration.
4713         (s390_arch_flags): Likewise.
4714         * config/sh/sh.c (prepare_move_operands): Compare
4715         tls_symbolic_operand result with enum constant.
4716         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
4717         (sh_expand_prologue): Add cast to enum type.
4718         (sh_expand_epilogue): Likewise.
4719         (tls_symbolic_operand): Change return type to enum tls_model.
4720         (fpscr_set_from_mem): Add cast to enum type.
4721         (legitimize_pic_address): Compare tls_symbolic_operand result with
4722         enum constant.
4723         (sh_target_reg_class): Change return type to enum reg_class.
4724         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
4725         PROCESSOR_xxx.
4726         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
4727         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
4728         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
4729         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
4730         (delayed_branch, tls_call_delay): Likewise.
4731         (eligible_for_sibcall_delay): Likewise.
4732         (eligible_for_return_delay): Likewise. 
4733         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
4734         (spu_expand_builtin_1): Likewise.
4735
4736         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
4737         for all types of conversions.
4738         (output_init_element): Issue -Wc++-compat warning if needed when
4739         initializing a bitfield with enum type.
4740         * c-parser.c (c_parser_expression): Set original_type to
4741         original_type of right hand operand of comman operator.
4742
4743 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4744
4745         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
4746         grammar nits.
4747         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
4748         * doc/cpp.texi (Standard Predefined Macros)
4749         (Implementation-defined behavior): Likewise.
4750         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
4751         * doc/gimple.texi (GIMPLE Exception Handling)
4752         (@code{GIMPLE_ASSIGN}): Likewise.
4753         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
4754         * doc/invoke.texi (Warning Options, Optimize Options)
4755         (AVR Options, Darwin Options): Likewise.
4756         (Optimize Options): Reformulate -fwhole-program description.
4757         * doc/loop.texi (Lambda): Likewise.
4758         * doc/md.texi (Output Template, Define Constraints)
4759         (Standard Names, Insn Splitting): Likewise.
4760         * doc/options.texi (Option properties): Likewise.
4761         * doc/passes.texi (Tree-SSA passes): Likewise.
4762         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
4763         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
4764         (File Names and DBX): Likewise.
4765         * doc/trouble.texi (Incompatibilities): Likewise.
4766
4767 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4768
4769         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
4770         instruction is correct.
4771
4772 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4773
4774         Allow non-constant arguments to conversion intrinsics.
4775         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
4776         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
4777         * spu.c (print_operand): Handle 'v' and 'w'.
4778         (exp2_immediate_p, spu_gen_exp2): Define.
4779         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
4780         spu_convtf_1): Update parameter descriptions.
4781         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
4782         * constraints.md ('v', 'w'): New.
4783         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
4784         Remove.
4785         (i2f, I2F): New define_mode_attr.
4786         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
4787         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
4788         fixuns_truncv4sfv4si2):  Update to use mode attribute.
4789         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
4790         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
4791         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
4792         patterns for combine.
4793
4794 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
4795
4796         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
4797         (cprop, hoist, pre, store_motion): New debug counters.
4798         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
4799         is not an RTL pass anymore.
4800         (pass_profiling): Remove extern decl for pass removed in 2005.
4801         (pass_gcse, pass_jump_bypass): Remove.
4802         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
4803         to 0 for clean state.
4804         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
4805         * cse.c (gate_handle_cse_after_global_opts,
4806         rest_of_handle_cse_after_global_opts): New functions.
4807         (pass_cse_after_global_opts): New pass, does local CSE.
4808         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
4809         (TV_CPROP): New timevar.
4810         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
4811         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
4812         (gcse_main, recompute_all_luids): Remove.
4813         (compute_hash_table_work): Call max_reg_num instead of reading
4814         max_gcse_regno.
4815         (cprop_jump): Don't set run_jump_opt_after_gcse.
4816         (constprop_register): Always allow to alter jumps.
4817         (cprop_insn): Likewise.
4818         (do_local_cprop): Likewise.
4819         (local_cprop_pass): Likewise.  Return non-zero if something changed.
4820         (cprop): Remove function, fold interesting bits into one_cprop_pass.
4821         (find_implicit_sets): Add note about missed optimization opportunity.
4822         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
4823         pass_rtl_cprop execute function.
4824         Don't bother tracking the pass number, each pass gets its own dumpfile
4825         now anyway.
4826         Always allow to alter jumpsand bypass jumps.
4827         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
4828         will just find no suitable set.
4829         (pre_edge_insert): Fix dumping, this function is for PRE only.
4830         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
4831         pass_rtl_pre execute function.
4832         (hoist_code): Return non-zero if something changed.  Keep track of
4833         substitutions and insertions for statistics gathering similar to PRE.
4834         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
4835         called from the pass_rtl_hoist execute function.  Show pass statistics.
4836         (compute_store_table): Use max_reg_num directly instead of using the
4837         formerly global max_gcse_regno.
4838         (build_store_vectors): Likewise.
4839         (replace_store_insn): Fix dumping.
4840         (store_motion): Rename to ...
4841         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
4842         pass, called from the pass_rtl_store_motion execute function.  Keep
4843         track of substitutions and insertions for statistics gathering similar
4844         to PRE.
4845         (bypass_jumps): Remove, fold interesting bits into ...
4846         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
4847         from the pass_rtl_cprop execute function.
4848         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
4849         pass_jump_bypass): Remove.
4850         (gate_handle_gcse, rest_of_handle_gcse): Remove.
4851         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
4852         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
4853         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
4854         (gate_rtl_store_motion, execute_rtl_store_motion,
4855         pass_rtl_store_motion): New.
4856         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
4857         make it clear that -fcse-skip-blocks is a no-op for backward compat.
4858         * passes.c (init_optimization_passes): Remove pass_gcse and
4859         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
4860         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
4861         instead of pass_jump_bypass.
4862
4863 2009-04-27  Richard Guenther  <rguenther@suse.de>
4864
4865         PR middle-end/39928
4866         * gimplify.c (gimplify_expr): If we are required to create
4867         a temporary make sure it ends up as register.
4868
4869 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
4870
4871         PR target/39903
4872         * config/i386/i386.c (construct_container): Don't call
4873         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
4874         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
4875
4876 2009-04-27  Michael Matz  <matz@suse.de>
4877
4878         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
4879         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
4880         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
4881         (dump_replaceable_exprs): Take a bitmap.
4882         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
4883         array.
4884         (expand_gimple_basic_block): Likewise.
4885         * tree-ssa-ter.c (struct temp_expr_table_d): Make
4886         replaceable_expressions member a bitmap.
4887         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
4888         (mark_replaceable): Likewise.
4889         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
4890         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
4891
4892 2009-04-27  Richard Guenther  <rguenther@suse.de>
4893
4894         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
4895         (verify_stmts): Dispatch to gimple/type verification code.
4896         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
4897         issue with call argument types.
4898
4899 2009-04-27  Michael Matz  <matz@suse.de>
4900
4901         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
4902         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
4903         to above.
4904
4905 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
4906             Eric Botcazou  <ebotcazou@adacore.com>
4907
4908         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
4909         a label's basic block.
4910         (mark_target_live_regs): Tidy and rework obsolete comments.
4911         Change back DF problem to LIVE.  If a label starts a basic block,
4912         assume that all registers that used to be live then still are.
4913         (init_resource_info): If a label starts a basic block, set its
4914         BLOCK_FOR_INSN accordingly.
4915         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
4916
4917 2009-04-27  Richard Guenther  <rguenther@suse.de>
4918
4919         * tree-flow-inline.h (function_ann): Remove.
4920         (get_function_ann): Likewise.
4921         * tree-dfa.c (create_function_ann): Remove.
4922         * tree-flow.h (struct static_var_ann_d): Remove.
4923         (struct function_ann_d): Likewise.
4924         (union tree_ann_d): Remove fdecl member.
4925         (function_ann_t): Remove.
4926         (function_ann, get_function_ann, create_function_ann): Remove
4927         declarations.
4928
4929 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
4930
4931         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
4932
4933 2009-04-27  Jan Hubicka  <jh@suse.cz>
4934
4935         * ipa-pure-const.c (struct funct_state_d): New fields
4936         state_previously_known, looping_previously_known; remove
4937         state_set_in_source.
4938         (analyze_function): Use new fields.
4939         (propagate): Avoid assumption that state_set_in_source imply
4940         nonlooping.
4941
4942         * tree-ssa-loop-niter.c (finite_loop_p): New function.
4943         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
4944         * cfgloop.h (finite_loop_p): Declare.
4945
4946 2009-04-26  Michael Matz  <matz@suse.de>
4947
4948         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
4949
4950 2009-04-26  Michael Matz  <matz@suse.de>
4951
4952         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
4953         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
4954         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
4955         pass_mark_used_blocks): Remove.
4956         * tree-optimize.c (pass_free_datastructures,
4957         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
4958         * passes.c (init_optimization_passes): Don't call
4959         pass_mark_used_blocks, remove dead code.
4960
4961 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
4962
4963         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
4964         * tree-ssa-live.h (register_ssa_partition): Likewise.
4965
4966 2009-04-26  Michael Matz  <matz@suse.de>
4967
4968         Expand from SSA.
4969         * builtins.c (fold_builtin_next_arg): Handle SSA names.
4970         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
4971         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
4972         SSA names. 
4973         (compare_pairs): Swap cost comparison.
4974         (coalesce_ssa_name): Don't use change_partition_var.
4975         * tree-nrv.c (struct nrv_data): Add modified member.
4976         (finalize_nrv_r): Set it.
4977         (tree_nrv): Use it to update statements.
4978         (pass_nrv): Require PROP_ssa.
4979         * tree-mudflap.c (mf_decl_cache_locals,
4980         mf_build_check_statement_for): Use make_rename_temp.
4981         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
4982         * alias.c (find_base_decl): Handle SSA names.
4983         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
4984         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
4985         * rtl.h (set_reg_attrs_for_parm): Declare.
4986         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
4987         to "optimized", remove unused locals at finish.
4988         (execute_free_datastructures): Make global, call
4989         delete_tree_cfg_annotations.
4990         (execute_free_cfg_annotations): Don't call
4991         delete_tree_cfg_annotations.
4992
4993         * ssaexpand.h: New file.
4994         * expr.c (toplevel): Include ssaexpand.h.
4995         (expand_assignment): Handle SSA names the same as register variables.
4996         (expand_expr_real_1): Expand SSA names.
4997         * cfgexpand.c (toplevel): Include ssaexpand.h.
4998         (SA): New global variable.
4999         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
5000         (SSAVAR): New macro.
5001         (set_rtl): New helper function.
5002         (add_stack_var): Deal with SSA names, use set_rtl.
5003         (expand_one_stack_var_at): Likewise.
5004         (expand_one_stack_var): Deal with SSA names.
5005         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
5006         before unique numbers.
5007         (expand_stack_vars): Use set_rtl.
5008         (expand_one_var): Accept SSA names, add asserts for them, feed them
5009         to above subroutines.
5010         (expand_used_vars): Expand all partitions (without default defs),
5011         then only the local decls (ignoring those expanded already).
5012         (expand_gimple_cond): Remove edges when jumpif() expands an
5013         unconditional jump.
5014         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
5015         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
5016         SSA name.
5017         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
5018         members of SA; deal with PARM_DECL partitions here; expand
5019         all PHI nodes, free tree datastructures and SA.  Commit instructions
5020         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
5021         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
5022         info and statements at start, collect garbage at finish.
5023         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
5024         (VAR_ANN_PARTITION) Remove.
5025         (change_partition_var): Don't declare.
5026         (partition_to_var): Always return SSA names.
5027         (var_to_partition): Only accept SSA names.
5028         (register_ssa_partition): Only check argument.
5029         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
5030         member.
5031         (delete_var_map): Don't free it.
5032         (var_union): Only accept SSA names, simplify.
5033         (partition_view_init): Mark only useful SSA names as used.
5034         (partition_view_fini): Only deal with SSA names.
5035         (change_partition_var): Remove.
5036         (dump_var_map): Use ssa_name instead of partition_to_var member.
5037         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
5038         basic blocks.
5039         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
5040         (struct _elim_graph): New member const_dests; nodes member vector of
5041         ints.
5042         (set_location_for_edge): New static helper.
5043         (create_temp): Remove.
5044         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
5045         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
5046         (new_elim_graph): Allocate const_dests member.
5047         (clean_elim_graph): Truncate const_dests member.
5048         (delete_elim_graph): Free const_dests member.
5049         (elim_graph_size): Adapt to new type of nodes member.
5050         (elim_graph_add_node): Likewise.
5051         (eliminate_name): Likewise.
5052         (eliminate_build): Don't take basic block argument, deal only with
5053         partition numbers, not variables.
5054         (get_temp_reg): New static helper.
5055         (elim_create): Use it, deal with RTL temporaries instead of trees.
5056         (eliminate_phi): Adjust all calls to new signature.
5057         (assign_vars, replace_use_variable, replace_def_variable): Remove.
5058         (rewrite_trees): Only do checking.
5059         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
5060         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
5061         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
5062         contains_tree_r, MAX_STMTS_IN_LATCH,
5063         process_single_block_loop_latch, analyze_edges_for_bb,
5064         perform_edge_inserts): Remove.
5065         (expand_phi_nodes): New global function.
5066         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
5067         functions, initialize new parameter, remember partitions having a
5068         default def.
5069         (finish_out_of_ssa): New global function.
5070         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
5071         don't reset in_ssa_p here, don't disable TER when mudflap.
5072         (pass_del_ssa): Remove.
5073         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
5074         partition members.
5075         (execute_free_datastructures): Declare.
5076         * Makefile.in (SSAEXPAND_H): New variable.
5077         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
5078         * basic-block.h (commit_one_edge_insertion): Declare.
5079         * passes.c (init_optimization_passes): Move pass_nrv and
5080         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
5081         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
5082         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
5083         (redirect_branch_edge): Deal with super block when expanding, split
5084         out jump patching itself into ...
5085         (patch_jump_insn): ... here, new static helper.
5086
5087 2009-04-26  Michael Matz  <matz@suse.de>
5088
5089         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
5090         beyond num_ssa_names.
5091         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
5092         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
5093
5094 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5095
5096         PR inline-asm/39543
5097         * fwprop.c (forward_propagate_asm): New function.
5098         (forward_propagate_and_simplify): Propagate also into __asm, if it
5099         doesn't increase the number of referenced registers.
5100
5101         PR c/39889
5102         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
5103
5104 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5105
5106         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
5107         note_nonlocal_vla_type for nonlocal VLAs.
5108         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
5109         contains_remapped_vars, remap_vla_decls): New functions.
5110         (convert_nonlocal_reference_stmt): If not optimizing, call
5111         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
5112         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
5113         if it wasn't found in var_map.
5114         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
5115         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
5116         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
5117         declare_vars.
5118         * gimplify.c (nonlocal_vlas): New variable.
5119         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
5120         referenced VLAs.
5121         (gimplify_body): Create and destroy nonlocal_vlas.
5122
5123         * dwarf2out.c (loc_descr_plus_const): New function.
5124         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
5125         mem_loc_descriptor, loc_descriptor_from_tree_1,
5126         descr_info_loc, gen_variable_die): Use it.
5127
5128         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
5129         !TREE_STATIC VAR_DECLs.
5130         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
5131         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
5132         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
5133         DECL_BY_REFERENCE is valid.
5134         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
5135         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
5136         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
5137         Copy DECL_BY_REFERENCE.
5138         (struct nesting_copy_body_data): New type.
5139         (nesting_copy_decl): New function.
5140         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
5141         if they have variable length.
5142
5143 2009-04-26  Michael Matz  <matz@suse.de>
5144
5145         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
5146         mark new temporaries for renaming.
5147
5148 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5149
5150         PR c/39581
5151         * c-decl.c (global_bindings_p): Return negative value.
5152         (c_variable_size): New.  Based on variable_size from
5153         stor-layout.c.
5154         (grokdeclarator): Call c_variable_size not variable_size.
5155
5156 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
5157
5158         * config/i386/i386.c (print_operand) ['z']: Fix typo.
5159
5160 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
5161
5162         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
5163         Redefine it to just use mingw/include.
5164         (ASM_SPEC): Rules for -m32 and -m64.
5165         (LINK_SPEC): Use Likewise.
5166         (SPEC_32): New define.
5167         (SPEC_64): Likewise.
5168         (SUB_LINK_SPEC): Likewise.
5169         (MULTILIB_DEFAULTS): New define.
5170         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
5171         Add multilib options.
5172         (MULTILIB_DIRNAMES): Likewise.
5173         (MULTILIB_OSDIRNAMES): Likewise.
5174         (LIBGCC): Likewise.
5175         (INSTALL_LIBGCC): Likewise.
5176
5177 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5178
5179         PR c/39556
5180         * c-tree.h (enum c_inline_static_type): New.
5181         (record_inline_static): Declare.
5182         * c-decl.c (struct c_inline_static, c_inline_statics,
5183         record_inline_static, check_inline_statics): New.
5184         (pop_file_scope): Call check_inline_statics.
5185         (start_decl): Call record_inline_static instead of pedwarning
5186         directly for static in inline function.
5187         * c-typeck.c (build_external_ref): Call record_inline_static
5188         instead of pedwarning directly for static referenced in inline
5189         function.
5190
5191 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
5192
5193         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
5194         not new but only being rescanned.
5195         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
5196         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
5197         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
5198         record_set_info, compute_set, grealloc): Remove.
5199         (recompute_all_luids): New function.
5200         (gcse_main): Don't compute sets, and don't do related memory
5201         allocations/free-ing.  If something changed before the end of the
5202         pass, update LUIDs using recompute_all_luids.
5203         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
5204         (free_gcse_mem): Don't free it either.
5205         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
5206         Use the df insn LUIDs.
5207         (load_killed_in_block): Likewise.
5208         (compute_hash_table_work): Don't compute reg_set_in_block.
5209         (compute_transp): Use DF_REG_DEF_CHAINs.
5210         (local_cprop_pass): Don't use compute_sets and related functions.
5211         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
5212         Use get_max_uid() instead of max_cuid.
5213         (insert_insn_end_basic_block, pre_insert_copy_insn,
5214         update_ld_motion_stores): Don't try to
5215         keep reg_set tables up to date.
5216         (pre_insert_copies): Use df insn LUIDs.
5217         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
5218         (reg_set_info): Don't use extra bitmap argument.
5219         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
5220         information to compute regs_set_in_block.
5221         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
5222         (bypass_jumps): Don't use compute_sets and friends.
5223
5224 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5225
5226         PR testsuite/39710
5227         * opts.c (undocumented_msg): Do not leave blank even with
5228         ENABLE_CHECKING.
5229
5230 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5231
5232         * c-decl.c (build_enumerator): Allow values folding to integer
5233         constants but not integer constant expressions with a pedwarn if
5234         pedantic.
5235
5236 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5237
5238         PR c/39582
5239         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
5240         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
5241         type is an integer constant.
5242
5243 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5244
5245         PR target/39897
5246         * config/i386/i386.c (print_operand) ['z']: Revert handling of
5247         HImode operands.
5248
5249 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5250
5251         PR c/39564
5252         * c-decl.c (grokdeclarator): Diagnose declarations of functions
5253         with variably modified return type and no storage class
5254         specifiers, except for the case of nested functions.  Distinguish
5255         extern declarations of functions with variably modified return
5256         types from those of objects with variably modified types.
5257
5258 2009-04-25  Jan Hubicka  <jh@suse.cz>
5259
5260         * tree.c (list_equal_p): New function.
5261         * tree.h (list_equal_p): Declare.
5262         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5263         basic_block_def, basic_block, const_basic_block): New.
5264         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
5265         (redirect_eh_edge): New function.
5266         (make_eh_edge_update_phi): EH edges are not abnormal.
5267         * except.c: Include tree-flow.h.
5268         (list_match): New function.
5269         (eh_region_replaceable_by_p): New function.
5270         (replace_region): New function.
5271         (hash_type_list): New function.
5272         (hash_eh_region): New function.
5273         (eh_regions_equal_p): New function.
5274         (merge_peers): New function.
5275         (remove_unreachable_regions): Verify EH tree when checking;
5276         merge peers.
5277         (copy_eh_region_1): New function.
5278         (copy_eh_region): New function.
5279         (push_reachable_handler): New function.
5280         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
5281         regions without label but with live RESX.
5282         * except.h (redirect_eh_edge_to_label): New.
5283         * tree-flow.h (redirect_eh_edge): New.
5284         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5285         basic_block_def, basic_block, const_basic_block): Remove.
5286         * Makefile.in (except.o): Add dependency on tree-flow.h
5287         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
5288         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
5289         Remove.
5290
5291 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
5292
5293         PR bootstrap/39645
5294         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
5295         on the destination of memcpy.
5296
5297 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
5298
5299         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
5300         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
5301         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
5302
5303 2009-04-25  Jan Hubicka  <jh@suse.cz>
5304
5305         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
5306         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
5307         to be reached by different label than left.
5308         (update_eh_edges): Update comment; remove edge_to_remove if possible
5309         and return true if suceeded.
5310         (cleanup_empty_eh): Accept sharing map; handle shared regions.
5311         (cleanup_eh): Compute sharing map.
5312         * except.c (remove_eh_handler_and_replace): Add argument if we should
5313         update regions.
5314         (remove_unreachable_regions): Update for label sharing.
5315         (label_to_region_map): Likewise.
5316         (get_next_region_sharing_label): New function.
5317         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
5318         prev_try pointers.
5319         (remove_eh_handler): Update.
5320         (remove_eh_region_and_replace_by_outer_of): New function.
5321         * except.h (struct eh_region): Add next_region_sharing_label.
5322         (remove_eh_region_and_replace_by_outer_of,
5323         get_next_region_sharing_label): Declare.
5324         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
5325
5326 2009-04-25  Jan Hubicka  <jh@suse.cz>
5327
5328         * tree-cfg.c (split_critical_edges): Split also edges where we can't
5329         insert code even if they are not critical.
5330
5331 2009-04-25  Jan Hubicka  <jh@suse.cz>
5332
5333         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5334         (gimple_can_remove_branch_p): EH edges won't remove branch by
5335         redirection.
5336         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
5337         updating of non-abnormal EH edges.
5338         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5339         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
5340         (split_critical_edges): Split also edges where emitting code on them
5341         will lead to splitting later.
5342
5343 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5344             H.J. Lu  <hongjiu.lu@intel.com>
5345
5346         PR target/39590
5347         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
5348         the configured assembler supports fildq and fistpq mnemonics.
5349         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
5350         * configure: Regenerated.
5351         * config.in: Ditto.
5352
5353         * config/i386/i386.c (print_operand): Handle 'Z'.
5354         ['z']: Remove handling of special fild/fist suffixes.
5355         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
5356         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
5357         suffix of fild insn.
5358         (*floatsi<mode>2_vector_mixed): Ditto.
5359         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
5360         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
5361         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
5362         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
5363         * config/i386/gas.h (GAS_MNEMONICS): Remove.
5364
5365 2009-04-25  Ben Elliston  <bje@au.ibm.com>
5366  
5367         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
5368         the source of a set operation.
5369
5370 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
5371
5372         * target.h (struct gcc_target): Add case_values_threshold field.
5373         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
5374         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
5375         * targhooks.c (default_case_values_threshold): New function.
5376         * targhooks.h (default_case_values_threshold): Declare function.
5377         * stmt.c (expand_case): Use case_values_threshold target hook.
5378         * expr.h (case_values_threshold): Remove declartation.
5379         * expr.c (case_values_threshold): Remove function.
5380         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
5381
5382         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
5383         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5384         (avr_case_values_threshold): Declare as static.
5385         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
5386
5387         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
5388         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5389         (mn10300_case_values_threshold): New function.
5390
5391 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5392
5393         * ira.c (setup_cover_and_important_classes): Add enum cast.
5394
5395 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
5396
5397         * genpreds.c (write_enum_constraint_num): Output definition of
5398         CONSTRAINT_NUM_DEFINED_P macro.
5399         * ira.c (setup_cover_and_important_classes): Use
5400         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
5401         
5402 2009-04-24  DJ Delorie  <dj@redhat.com>
5403
5404         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
5405         __SH2A_SINGLE_ONLY__ also.
5406
5407 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
5408
5409         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
5410         (movdf_internal): Ditto.
5411         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
5412         SFmode and DFmode constants.
5413         (ia64_print_operand): Add 'G' format for printing
5414         floating point constants.
5415
5416 2009-04-24  Richard Guenther  <rguenther@suse.de>
5417
5418         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
5419         from unsigned additions.
5420
5421 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
5422
5423         * c-typeck.c (set_init_index): Allow array designators that are
5424         not integer constant expressions with a pedwarn if pedantic.
5425
5426 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5427
5428         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
5429         zero if no overlap in nonzero bits between the operands.
5430
5431 2009-04-24  Ian Lance Taylor  <iant@google.com>
5432
5433         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
5434         (record_dead_and_set_regs): Likewise.
5435         * df.h (struct df_mw_hardreg): Change flags field to int.
5436         (struct df_base_ref): Likewise.
5437         (struct df): Change changeable_flags field to int.
5438         * df-scan.c (df_defs_record): Change clobber_flags to int.
5439         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
5440         constants rather than #define macros.
5441         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
5442         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
5443         (enum dwarf_calling_convention): Likewise.
5444         (enum dwarf_line_number_x_ops): Likewise.
5445         (enum dwarf_call_frame_info): Likewise.
5446         (enum dwarf_source_language): Likewise.
5447         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
5448         (add_calling_convention_attribute): Likewise.
5449         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
5450         (combine_comparisons): Change compcode to int.  Add cast to enum type.
5451         * genrecog.c (maybe_both_true_2): Change c to int.
5452         (write_switch): Likewise.  Add cast to enum type.
5453         * gimplify.c (gimplify_omp_for): Handle return values from
5454         gimplify_expr using MIN rather than bitwise or.
5455         (gimplify_expr): Add cast to enum type.
5456         * ipa-prop.c (update_jump_functions_after_inlining): Change
5457         IPA_BOTTOM to IPA_JF_UNKNOWN.
5458         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
5459         Add casts to enum type.
5460         (setup_cover_and_important_classes): Change cl to int.  Add casts
5461         to enum type.
5462         (setup_class_translate): Change cl and mode to int.
5463         (ira_init_once): Change mode to int.
5464         (free_register_move_costs): Likewise.
5465         (setup_prohibited_mode_move_regs): Add casts to enum type.
5466         * langhooks.c (add_builtin_function_common): Rework assertion that
5467         value fits bitfield.
5468         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
5469         * omega.c (omega_do_elimination): Avoid math on enum types.
5470         * optabs.c (expand_vec_shift_expr): Remove casts to int.
5471         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
5472         int local to handle integral_argment value.
5473         * regmove.c (try_auto_increment): Change PUT_MODE to
5474         PUT_REG_NOTE_KIND.
5475         * reload.c (push_secondary_reload): Add casts to enum type.
5476         (secondary_reload_class, find_valid_class): Likewise.
5477         * reload1.c (emit_input_reload_insns): Likewise.
5478         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
5479         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
5480         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
5481         constant.
5482         * tree.c (build_common_builtin_nodes): Add casts to enum type.
5483         * tree-complex.c (complex_lattice_t): Typedef to int rather than
5484         enum type.
5485         (expand_complex_libcall): Add casts to enum type.
5486         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
5487         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
5488         with ERROR_MARK, not NUM_TREE_CODES.
5489         (vect_create_epilog_for_reduction): Likewise.
5490         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
5491         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
5492         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
5493         enum machine_mode.
5494         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
5495         vect_unused_in_loop.  Change 0 to loop_vect.
5496         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
5497         * var-tracking.c (get_init_value): Change return type to enum
5498         var_init_status.
5499         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
5500         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
5501         arm_fp_model.
5502         (arm_override_options): Add casts to enum type.
5503         (arm_emit_tls_decoration): Likewise.
5504         * config/i386/i386.c (ix86_function_specific_restore): Add casts
5505         to enum type.
5506         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
5507         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
5508         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
5509         enum type.
5510         * config/s390/s390.c (code_for_builtin_64): Change to array of
5511         enum insn_code.
5512         (code_for_builtin_31): Likewise.
5513         (s390_expand_builtin): Change code_for_builtin to enum insn_code
5514         const *.
5515         * config/sparc/sparc.c (sparc_override_options): Change value
5516         field in struct code_model to enum cmodel.  In initializer change
5517         0 to NULL and add cast to enum type.
5518
5519         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
5520         Change all callers.  Issue a -Wc++-compat warning using
5521         lhs_origtype if necessary.
5522         (convert_for_assignment): Issue -Wc++-compat warnings about
5523         invalid conversions to enum type on assignment.
5524         * c-common.h (build_modify_expr): Update declaration.
5525
5526 2009-04-24  Nick Clifton  <nickc@redhat.com>
5527
5528         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
5529         (function_arg_advance): Likewise.
5530         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
5531         5th alternative.
5532
5533 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5534
5535         * config/s390/constraints.md ('I', 'J'): Fix condition.
5536
5537 2009-04-24  Diego Novillo  <dnovillo@google.com>
5538
5539         * gengtype-parse.c (parse_error): Add newline after message.
5540
5541 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5542
5543         * config/i386/sse.md (avxmodesuffixs): Removed.
5544         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
5545         (*avx_pinsr<ssevecsize>): This.
5546
5547 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5548
5549         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
5550         follow chains of regs with a single definition, and allow expressions
5551         that are function_invariant_p.
5552         (simple_rhs_p): Allow expressions that are function_invariant_p.
5553
5554 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
5555
5556         PR middle-end/39867
5557         * fold-const.c (fold_cond_expr_with_comparison): When folding
5558         > and >= to MAX, make sure the MAX uses the same type as the
5559         comparison's operands.
5560
5561 2009-04-24  Nick Clifton  <nickc@redhat.com>
5562
5563         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
5564         addressing for DImode accesses.
5565         (frv_print_operand_address): Handle PLUS case.
5566         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
5567
5568 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
5569
5570         PR rtl-optimization/39794
5571         * alias.c (canon_true_dependence): Add x_addr argument.
5572         * rtl.h (canon_true_dependence): Adjust prototype.
5573         * cse.c (check_dependence): Adjust canon_true_dependence callers.
5574         * cselib.c (cselib_invalidate_mem): Likewise.
5575         * gcse.c (compute_transp): Likewise.
5576         * dse.c (scan_reads_nospill): Likewise.
5577         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
5578         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
5579         canon_base_addr of the group, plus optional offset.
5580         (struct group_info): Rename canon_base_mem to
5581         canon_base_addr.
5582         (get_group_info): Set canon_base_addr to canon_rtx of base, not
5583         canon_rtx of base_mem.
5584
5585 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
5586
5587         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
5588         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
5589
5590 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5591
5592         * config/spu/spu-builtins.h: Delete file.
5593
5594         * config/spu/spu.h (enum spu_builtin_type): Move here from
5595         spu-builtins.h.
5596         (struct spu_builtin_description): Likewise.  Add GTY marker.
5597         Do not use enum spu_function_code or enum insn_code.
5598         (spu_builtins): Add extern declaration.
5599
5600         * config/spu/spu.c: Do not include "spu-builtins.h".
5601         (enum spu_function_code, enum spu_builtin_type_index,
5602         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
5603         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
5604         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
5605         unsigned_V2DI_type_node): Move here from spu-builtins.h.
5606         (spu_builtin_types): Make static.  Add GTY marker.
5607         (spu_builtins): Add extern declaration with GTY marker.
5608         Include "gt-spu.h".
5609
5610         * config/spu/spu-c.c: Do not include "spu-builtins.h".
5611         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
5612         Check programmatically whether all parameters are scalar.
5613
5614         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
5615
5616 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
5617
5618         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
5619         assignment from the constructor either if the target is volatile.
5620
5621 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
5622
5623         * config/arm/arm.md (insv): Do not share operands[0].
5624
5625 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
5626
5627         * config/vxlib-tls.c (active_tls_threads): Delete.
5628         (delete_hook_installed): New.
5629         (tls_delete_hook): Don't delete the delete hook.
5630         (tls_destructor): Delete it here.
5631         (__gthread_set_specific): Adjust installing the delete hook.
5632         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
5633         __gthread_leave_tsd_dtor_context.
5634
5635 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
5636
5637         * c-format.c (gcc_tdiag_char_table): Add support for %E.
5638
5639 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
5640
5641         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
5642         enum type.
5643         (alpha_rtx_costs): Ditto.
5644         (emit_unlikely_jump): Use add_reg_note.
5645         (emit_frame_store_1): Ditto.
5646         (alpha_expand_prologue): Ditto.
5647         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5648         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
5649
5650 2009-04-23  Nick Clifton  <nickc@redhat.com>
5651
5652         * config/v850/v850.md (epilogue): Remove suppressed code.
5653         (return): Rename to return_simple and remove test of frame size.
5654         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
5655         to gen_return_simple.
5656
5657 2009-04-22  Jing Yu  <jingyu@google.com>
5658
5659         PR testsuite/39781
5660         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
5661
5662 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5663
5664         PR C/31499
5665         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
5666         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
5667         value is a VECTOR_CST, the element type is the element type of the
5668         vector.
5669
5670 2009-04-22  DJ Delorie  <dj@redhat.com>
5671
5672         * config/m32c/m32c.h: Update GTY annotations to new syntax.
5673
5674 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
5675
5676         * alias.c (find_base_term): Move around LO_SUM case, so that
5677         CONST falls through into PLUS/MINUS handling.
5678
5679         PR c/39855
5680         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
5681         into 0, use omit_one_operand.
5682
5683 2009-04-23  Ben Elliston  <bje@au.ibm.com>
5684
5685         * config/rs6000/linux-unwind.h (get_regs): Remove type
5686         puns. Change the type of `pc' to an array of unsigned ints and
5687         update all users.  Constify frame24.
5688
5689 2009-04-22  DJ Delorie  <dj@redhat.com>
5690
5691         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
5692         declarations before code.
5693         (current_function_special_page_vector): Likewise.
5694         (m32c_expand_insv): Silence a warning.
5695
5696 2009-04-21  Taras Glek  <tglek@mozilla.com>
5697
5698         * alias.c: Update GTY annotations to new syntax.
5699         * basic-block.h: Likewise.
5700         * bitmap.h: Likewise.
5701         * c-common.h: Likewise.
5702         * c-decl.c: Likewise.
5703         * c-parser.c: Likewise.
5704         * c-pragma.c: Likewise.
5705         * c-tree.h: Likewise.
5706         * cfgloop.h: Likewise.
5707         * cgraph.h: Likewise.
5708         * config/alpha/alpha.c: Likewise.
5709         * config/arm/arm.h: Likewise.
5710         * config/avr/avr.h: Likewise.
5711         * config/bfin/bfin.c: Likewise.
5712         * config/cris/cris.c: Likewise.
5713         * config/darwin.c: Likewise.
5714         * config/frv/frv.c: Likewise.
5715         * config/i386/i386.c: Likewise.
5716         * config/i386/i386.h: Likewise.
5717         * config/i386/winnt.c: Likewise.
5718         * config/ia64/ia64.h: Likewise.
5719         * config/iq2000/iq2000.c: Likewise.
5720         * config/mips/mips.c: Likewise.
5721         * config/mmix/mmix.h: Likewise.
5722         * config/pa/pa.c: Likewise.
5723         * config/pa/pa.h: Likewise.
5724         * config/rs6000/rs6000.c: Likewise.
5725         * config/s390/s390.c: Likewise.
5726         * config/sparc/sparc.c: Likewise.
5727         * config/xtensa/xtensa.c: Likewise.
5728         * cselib.h: Likewise.
5729         * dbxout.c: Likewise.
5730         * dwarf2out.c: Likewise.
5731         * except.c: Likewise.
5732         * except.h: Likewise.
5733         * fixed-value.h: Likewise.
5734         * function.c: Likewise.
5735         * function.h: Likewise.
5736         * gimple.h: Likewise.
5737         * integrate.c: Likewise.
5738         * optabs.c: Likewise.
5739         * output.h: Likewise.
5740         * real.h: Likewise.
5741         * rtl.h: Likewise.
5742         * stringpool.c: Likewise.
5743         * tree-data-ref.c: Likewise.
5744         * tree-flow.h: Likewise.
5745         * tree-scalar-evolution.c: Likewise.
5746         * tree-ssa-address.c: Likewise.
5747         * tree-ssa-alias.h: Likewise.
5748         * tree-ssa-operands.h: Likewise.
5749         * tree.c: Likewise.
5750         * tree.h: Likewise.
5751         * varasm.c: Likewise.
5752         * varray.h: Likewise.
5753         * vec.h: Likewise.
5754         * coretypes.h: Do not define GTY macro if it is already defined.
5755         * doc/gty.texi: Update GTY documentation to new syntax.
5756         * gengtype-lex.l: Enforce attribute-like syntax for GTY
5757         annotations on structs.
5758         * gengtype-parse.c: Likewise.
5759
5760 2009-04-22  Mark Heffernan  <meheff@google.com>
5761
5762         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
5763
5764 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
5765
5766         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
5767         where appropriate.
5768
5769 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
5770
5771         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
5772         the same as a PLUS without a shift.  Increase the cost of a
5773         CONST_INT in MULT.
5774
5775 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5776
5777         * Makefile.in: Update dependencies.
5778         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
5779         * errors.h: Remove bogus comment about compatibility.
5780         (warning): Update declaration.
5781         * genautomata.c: Update all calls to warning.
5782         * gimple.c: Do not include errors.h. Include toplev.h.
5783         * tree-ssa-structalias.c: Do not include errors.h.
5784         * omega.c: Likewise.
5785         * tree-ssa-reassoc.c: Likewise.
5786         * config/spu/spu-c.c: Likewise.
5787         * config/spu/t-spu-elf: Update dependencies.
5788
5789 2009-04-22  Richard Guenther  <rguenther@suse.de>
5790
5791         PR tree-optimization/39824
5792         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
5793         make sure the types are compatible.
5794
5795 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5796
5797         PR c++/14875
5798         * c-common.c (c_parse_error): Take a token_flags parameter.
5799         Use token_type for the token type instead.
5800         Pass token_flags to cpp_type2name.
5801         * c-common.h (c_parse_error): Update declaration.
5802         * c-parser.c (c_parser_error): Pass 0 as token flags.
5803
5804 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
5805
5806         PR rtl-optimization/39580
5807         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
5808         
5809 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5810
5811         * function.c (expand_function_end): Do not emit a jump to the "naked"
5812         return label for fall-through returns.
5813         * except.c (sjlj_emit_function_exit): Always place the call to the
5814         unregister function at the location installed by expand_function_end.
5815
5816 2009-04-22  Richard Guenther  <rguenther@suse.de>
5817
5818         PR tree-optimization/39845
5819         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
5820         (gen_inbound_check): Likewise.
5821
5822 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
5823
5824         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
5825         padding for PPC.
5826         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
5827         * config/vxlib.c (__gthread_once): Add race guard for PPC.
5828
5829 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5830
5831         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
5832         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
5833         shift counts to avoid out-of-bounds array accesses.
5834
5835 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5836
5837         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
5838         (Pmode): Move above.
5839
5840 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
5841
5842         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
5843         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
5844         GET_CODE macro.  Use IN_RANGE macro where appropriate.
5845         * config/alpha/alpha.h: Ditto.
5846         * config/alpha/alpha.md: Ditto.
5847         * config/alpha/constraints.md: Ditto.
5848         * config/alpha/predicates.md: Ditto.
5849         
5850 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5851
5852         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
5853         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5854         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5855         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5856         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5857         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5858         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5859         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5860         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5861         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5862         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5863         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5864         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5865         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5866         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5867         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5868         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5869         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5870         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5871         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5872         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5873         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5874         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5875         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5876         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5877         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5878         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5879
5880 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5881
5882         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
5883         references from comments.
5884         * cfgbuild.c: (count_basic_blocks): Delete.
5885         (find_basic_blocks_1): Delete.
5886         (find_basic_blocks): Delete.
5887         * except.c (finish_eh_generation): Make static.  Move comment from
5888         except.h here.  Remove find_basic_blocks references from comments.
5889         * except.h (finish_eh_generation): Delete.
5890         * basic-block.h (find_basic_blocks): Delete.
5891         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
5892
5893 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5894
5895         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
5896         (sdbout_parms):  Likewise.
5897
5898 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
5899
5900         * config/sh/sh.c (prepare_cbranch_operands): Use
5901         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
5902         (expand_cbranchdi4): Likewise.
5903         (from_compare): Add cast to enum type.
5904         (expand_cbranchsi4): Use add_reg_note.
5905         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
5906         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
5907         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
5908         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5909         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
5910         instead of CODE_FOR_nothing.
5911         (cbranchdi4): Likewise.  Fix the order of arguments for
5912         gen_rtx_fmt_ee.
5913         (push_fpscr): Use add_reg_note.
5914         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
5915         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
5916         
5917 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
5918
5919         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
5920         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
5921         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
5922         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
5923         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
5924         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
5925         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
5926         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
5927         config/alpha/x-vms, config/arc/t-arc,
5928         config/arm/README-interworking, config/arm/arm-c.c,
5929         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
5930         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
5931         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
5932         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
5933         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
5934         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
5935         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
5936         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
5937         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
5938         config/cris/t-elfmulti, config/crx/t-crx,
5939         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
5940         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
5941         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
5942         config/h8300/t-h8300, config/i386/athlon.md,
5943         config/i386/darwin-libgcc.10.4.ver,
5944         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
5945         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
5946         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
5947         config/i386/t-linux64, config/i386/t-nwld,
5948         config/i386/t-rtems-i386, config/i386/t-sol2-10,
5949         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
5950         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
5951         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
5952         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
5953         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
5954         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
5955         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
5956         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
5957         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
5958         config/m68k/t-uclinux, config/mcore/t-mcore,
5959         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
5960         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
5961         config/mips/crtn.asm, config/mips/irix-crti.asm,
5962         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
5963         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
5964         config/mips/mips-fixed.md, config/mips/sb1.md,
5965         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
5966         config/mips/t-iris6, config/mips/t-isa3264,
5967         config/mips/t-libgcc-mips16, config/mips/t-linux64,
5968         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
5969         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
5970         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
5971         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
5972         config/mn10300/t-linux, config/mn10300/t-mn10300,
5973         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
5974         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
5975         config/picochip/libgccExtras/clzsi2.asm,
5976         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
5977         config/rs6000/darwin-libgcc.10.4.ver,
5978         config/rs6000/darwin-libgcc.10.5.ver,
5979         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
5980         config/rs6000/t-aix43, config/rs6000/t-aix52,
5981         config/rs6000/t-darwin, config/rs6000/t-fprules,
5982         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
5983         config/rs6000/t-lynx, config/rs6000/t-netbsd,
5984         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
5985         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
5986         config/rs6000/t-rtems, config/rs6000/t-spe,
5987         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
5988         config/score/t-score-elf, config/sh/divcost-analysis,
5989         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
5990         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
5991         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
5992         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
5993         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
5994         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
5995         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
5996         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
5997         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
5998         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
5999         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
6000         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
6001         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
6002         limitx.h, version.c, xcoff.h: Add copyright and license notices.
6003         * config/h8300/genmova.sh: Include copyright and license notices
6004         in generated output.
6005         * config/h8300/mova.md: Regenerate.
6006         * doc/install.texi2html: Include word "Copyright" in copyright
6007         notice and use name "Free Software Foundation, Inc.".
6008         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6009         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6010         ChangeLog-2007, ChangeLog-2008: Correct dates.
6011
6012 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
6013
6014         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
6015         NE_EXPR operations as well.
6016         * c-parser.c (c_parser_condition): Do not set location information on
6017         the condition.
6018         (c_parser_conditional_expression): Likewise.
6019         (c_parser_binary_expression): Set location information on operators.
6020         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
6021         TRUTH_NOT_EXPR has been folded.
6022         * fold-const.c (fold_truth_not_expr): Copy location information from
6023         the incoming expression to the outgoing one.
6024         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
6025         recursive calls on the LHS of the operator but pass that of the
6026         operator to recursive calls on the RHS of the operator.  Set it
6027         on the COND_EXPR.
6028         (shortcut_cond_expr): Set the locus of the operator on the second
6029         COND_EXPR and that of the expression on the first in degenerate cases.
6030         Pass the locus of the expression to calls to shortcut_cond_r.
6031         Set the locus of the 'then' block on the associated jump, if any.
6032         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
6033         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
6034         expression to call to gimplify_boolean_expr.
6035
6036 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
6037
6038         * config.gcc: Add additional configuration for
6039         i686-w64-mingw* and x86_64-w64-mingw* triplet.
6040         * config/i386/mingw-w64.h: New mingw-w64 specific header.
6041         (CPP_SPEC): Redefine for allowing -municode option.
6042         (STARTFILE_SPEC): Likewise.
6043         * config/i386/t-mingw-w64: New.
6044         * config/i386/mingw-w64.opt: New.
6045         (municode): Add new target option.
6046         * doc/invoke.texi (municode): Add documentation for new option.
6047
6048 2009-04-21  Ian Lance Taylor  <iant@google.com>
6049
6050         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6051         Correct test for number of arguments.
6052         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
6053
6054 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
6055
6056         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
6057         argument of emit_library_call.
6058
6059 2009-04-21  Richard Guenther  <rguenther@suse.de>
6060
6061         PR middle-end/39829
6062         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
6063         inside VIEW_CONVERT_EXPRs.
6064
6065 2009-04-21  Martin Jambor  <mjambor@suse.cz>
6066
6067         * tree-switch-conversion.c (build_constructors): Split a long line.
6068         (constructor_contains_same_values_p): New function.
6069         (build_one_array): Create assigns of constants if possible, do not
6070         call mark_sym_for_renaming, call update_stmt.
6071         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
6072         make_rename_temp.  Do not call mark_symbols_for_renaming, call
6073         update_stmt.
6074         (gen_def_assigns): Do not call mark_symbols_for_renaming or
6075         find_new_referenced_vars, call update_stmt.
6076         (gen_inbound_check): Use create_tmp_var and create ssa names manually
6077         instead of calling make_rename_temp.  Do not call
6078         find_new_referenced_vars or mark_symbols_for_renaming, call
6079         update_stmt.
6080
6081 2009-04-21  Richard Guenther  <rguenther@suse.de>
6082
6083         PR tree-optimization/39827
6084         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
6085         (tree_ssa_phiprop): Pass the correct array size.
6086
6087 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
6088
6089         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
6090
6091 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6092
6093         PR 16202
6094         * c-typeck.c (lvalue_p): Move declaration ...
6095         * c-common.h (lvalue_p): ... to here.
6096         * c-common.c (candidate_equal_p): New.
6097         (add_tlist): Use it.
6098         (merge_tlist): Use it.
6099         (warn_for_collisions_1): Likewise.
6100         (warning_candidate_p): Accept more candidates.
6101         (verify_tree): A warning candidate can be an expression. Use
6102         candidate_equal_p.
6103
6104 2009-04-21  Ben Elliston  <bje@au.ibm.com>
6105
6106         PR target/5267
6107         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
6108         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
6109         options.  Remove -mcall-solaris documentation.
6110
6111 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6112
6113         PR c++/13358
6114         * doc/invoke.texi (-Wlong-long): Update description.
6115         * c-lex (interpret_integer): Only warn if there was no previous
6116         overflow and -Wlong-long is enabled.
6117         * c-decl.c (declspecs_add_type): Drop redundant flags.
6118         * c.opt (Wlong-long): Init to -1.
6119         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
6120         and front-end warn_long_long. Wlong-long only depends on other
6121         flags if it is uninitialized.
6122         * c-parser.c (disable_extension_diagnostics): warn_long_long is
6123         the same for CPP and FE.
6124         (restore_extension_diagnostics): Likewise.
6125
6126 2009-04-20  Ian Lance Taylor  <iant@google.com>
6127
6128         Fix enum conversions which are invalid in C++:
6129         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
6130         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
6131         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
6132         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
6133         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
6134         (dbxout_parms): Likewise.
6135         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
6136         (df_clear_flags): Likewise.
6137         * df-problems.c (df_rd_bb_local_compute_process_def): Change
6138         top_flag parameter to int.
6139         (df_chain_create_bb_process_use): Likewise.
6140         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
6141         Remove cast.
6142         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
6143         (df_ref_create_structure, df_def_record_1): Likewise.
6144         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
6145         (df_notes_rescan): Change 0 to VOIDmode in function call.
6146         (df_get_call_refs, df_insn_refs_collect): Likewise.
6147         (df_bb_regs_collect): Likewise.
6148         (df_entry_block_defs_collect): Likewise.
6149         (df_exit_block_uses_collect): Likewise.
6150         * df.h: Update declarations.
6151         * double-int.c (double_int_divmod): Add cast to enum type.
6152         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
6153         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
6154         (based_loc_descr): Likewise.
6155         (loc_descriptor_from_tree_1): Change first_op and second_op to
6156         enum dwarf_location_atom.  Add cast to enum type.
6157         * expmed.c (init_expmed): Change 0 to SET in function call.
6158         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
6159         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
6160         (do_store_flag): Likewise.
6161         * fixed-value.h (struct fixed_value): Change mode to enum
6162         machine_mode.
6163         * function.c (assign_parms): Change 0 to VOIDmode in function call.
6164         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
6165         function call.
6166         (insert_insn_decl, insert_decl, insert_state): Likewise.
6167         (automata_list_finish): Likewise.
6168         * genrecog.c (process_define_predicate): Add cast to enum type.
6169         * gensupport.c (init_predicate_table): Add cast to enum type.
6170         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
6171         function call.
6172         (gimple_build_call_1, gimple_build_label): Likewise.
6173         (gimple_build_goto, gimple_build_asm_1): Likewise.
6174         (gimple_build_switch_1, gimple_build_cdt): Likewise.
6175         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
6176         (enum fallback): Rename from enum fallback_t.
6177         (fallback_t): Typedef as int.
6178         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
6179         GSI_SAME_STMT in function call.
6180         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
6181         enum type.
6182         (setup_reg_class_relations): Likewise.
6183         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
6184         (setup_prohibited_class_mode_regs): Add cast to enum type.
6185         (setup_prohibited_mode_move_regs): Likewise.
6186         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
6187         (record_address_regs): Change i to enum reg_class.
6188         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
6189         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
6190         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
6191         (GET_MODE_2XWIDER_MODE): Likewise.
6192         (GET_CLASS_NARROWEST_MODE): Likewise.
6193         * omp-low.c (expand_omp_for): Add cast to enum type.
6194         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
6195         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
6196         * postreload.c (reload_cse_simplify_operands): Change rclass local
6197         to enum reg_class.
6198         * predict.c (combine_predictions_for_insn): Change best_predictor
6199         and predictor to enum br_predictor.
6200         (combine_predictions_for_bb): Likewise.
6201         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
6202         use SET_PREDICT_EXPR_OUTCOME.
6203         * real.c (real_arithmetic): Change icode to code in function call.
6204         * reginfo.c (init_move_cost): Add casts to enum type.
6205         (init_reg_sets_1, init_fake_stack_mems): Likewise.
6206         * regmove.c (regclass_compatible_p): Change class0 and class1 to
6207         enum reg_class.
6208         * reload.c (find_valid_class): Add casts to enum type.
6209         (push_reload): Change 0 to NO_REGS in function call.
6210         (find_reloads): Change this_alternative to array of enum
6211         reg_class.  Remove some now-unnecessary casts.
6212         (make_memloc): Change 0 to VOIDmode in function call.
6213         * reload1.c (reload): Change 0 to VOIDmode in function call.
6214         (eliminate_regs_1, elimination_effects): Likewise.
6215         (eliminate_regs_in_insn): Likewise.
6216         (emit_input_reload_insns): Add cast to enum type.
6217         (delete_output_reload): Change 0 to VOIDmode in function call.
6218         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
6219         to enum type in function call.
6220         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
6221         (SET_PREDICT_EXPR_OUTCOME): Define.
6222         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
6223         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
6224         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
6225         (dump_function): Likewise.
6226         * tree-dump.h: Update declarations.
6227         * tree-pass.h: Update declarations.
6228         * varasm.c (assemble_integer): Change mclass to enum mode_class.
6229         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
6230         enum type.
6231         (arm_rtx_costs_1): Correct parenthesization.
6232         (arm_rtx_costs): Add casts to enum type.
6233         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
6234         (vfp_emit_fstmd): Use add_rg_note.
6235         (emit_multi_reg_push, emit_sfm): Likewise.
6236         (thumb_set_frame_pointer): Likewise.
6237         (arm_expand_prologue): Likewise.
6238         (arm_regno_class): Change return type to enum reg_class.
6239         (thumb1_expand_prologue): Use add_reg_note.
6240         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
6241         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
6242         in function call.
6243         * config/arm/gentune.sh: Add cast to enum type.
6244         * config/arm/arm-tune.md: Rebuild.
6245         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
6246         (ix86_split_fp_branch, predict_jump): Likewise.
6247         (ix86_expand_multi_arg_builtin): Change sub_code from enum
6248         insn_code to enum rtx_code.
6249         (ix86_builtin_vectorized_function): Add cast to enum type.
6250         * config/i386/i386.md (truncdfsf2): Change slot to enum
6251         ix86_stack_slot.
6252         (truncxf<mode>2, isinf<mode>2): Likewise.
6253         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
6254         enum type.
6255         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
6256         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
6257         (insert_bundle_state): Change 1 to INSERT in function call.
6258         (ia64_add_bundle_selector_before): Likewise.
6259         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
6260         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
6261         (restore_stack_nonlocal): Likewise.
6262         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
6263         function call.
6264         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
6265         function call.
6266         (mips_rtx_costs): Likewise.
6267         (mips_override_options): Add casts to enum type.
6268         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
6269         in function call.
6270         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
6271         (store_reg, set_reg_plus_d): Likewise.
6272         (hppa_expand_prologue, hppa_profile_hook): Likewise.
6273         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
6274         cast to enum type.
6275         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
6276         function call.
6277         (emit_unlikely_jump): Use add_reg_note.
6278         (rs6000_emit_allocate_stack): Likewise.
6279         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
6280         (output_toc): Change 1 to INSERT in function call.
6281         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
6282         (rs6000_initialize_trampoline): Likewise.
6283         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
6284         function call.
6285         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
6286         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
6287         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
6288         (save_gprs): Use add_reg_note.
6289         (s390_emit_prologue): Likewise.
6290         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6291         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
6292         (sparc_fold_builtin): Add cast to enum type.
6293         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
6294         enum insn_code.
6295         (spu_expand_prologue): Use add_reg_note.
6296         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
6297
6298 2009-04-20  Ian Lance Taylor  <iant@google.com>
6299
6300         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
6301         (c_parser_postfix_expression_after_primary): Get VEC for list of
6302         arguments.  Get original types of arguments.  Call
6303         build_function_call_vec.
6304         (cached_expr_list_1, cached_expr_list_2): New static variables.
6305         (c_parser_expr_list): Change return type to VEC *.  Add
6306         p_orig_types parameter.  Change all callers.
6307         (c_parser_release_expr): New static function.
6308         (c_parser_vec_to_tree_list): New static function.
6309         * c-typeck.c (build_function_call): Rewrite to build a VEC and
6310         call build_function_call_vec.
6311         (build_function_call_vec): New function, based on old
6312         build_function_call.
6313         (convert_arguments): Remove nargs and argarray parameters.  Change
6314         values to a VEC.  Add origtypes parameter.
6315         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
6316         (convert_for_assignment): Add origtype parameter.  Change all
6317         callers.  If warn_cxx_compat, check for conversion to an enum
6318         type when calling a function.
6319         (store_init_value): Add origtype parameter.  Change all callers.
6320         (digest_init): Likewise.
6321         (struct init_node): Add origtype field.
6322         (add_pending_init): Add origtype parameter.  Change all callers.
6323         (output_init_element): Likewise.
6324         (output_pending_init_elements): Pass origtype from init_node to
6325         output_init_element.
6326         (process_init_element): Pass origtype from c_expr to
6327         output_init_element.
6328         (c_finish_return): Add origtype parameter.  Change all callers.
6329         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
6330         caller.
6331         (sync_resolve_params): Likewise.
6332         (sync_resolve_return): Change params to first_param.  Change caller.
6333         (resolve_overloaded_builtins): Change params to VEC *.  Change
6334         callers.  Save first parameter around call to build_function_call_vec.
6335         * c-decl.c (finish_decl): Add origtype parameter.  Change all
6336         callers.  Call build_function_call_vec rather than
6337         build_function_call for cleanup.
6338         * c-tree.h: Update declarations.
6339         * c-common.h: Update declarations.
6340         * stub-objc.c (objc_rewrite_function_call): Change parameter from
6341         params to first_param.
6342         * target.h (struct gcc_target): Change resolve_overloaded_builtin
6343         params parameter from tree to void *.
6344         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6345         Change arglist parameter to have type void *, and to be a pointer
6346         to a VEC.
6347         * config/rs6000/rs6000-protos.h
6348         (altivec_resolve_overloaded_builtin): Update declaration.
6349         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
6350         fnargs parameter to have type void *, and to be a pointer to a
6351         VEC.  Call build_function_call_vec instead of
6352         build_function_call.
6353         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
6354
6355 2009-04-20  Joey Ye  <joey.ye@intel.com>
6356             Xuepeng Guo  <xuepeng.guo@intel.com>
6357             H.J. Lu  <hongjiu.lu@intel.com>
6358
6359         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
6360
6361         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
6362         (IX86_LEA_PRIORITY): Likewise.
6363         (distance_non_agu_define): New function.
6364         (distance_agu_use): Likewise.
6365         (ix86_lea_for_add_ok): Likewise.
6366         (ix86_dep_by_shift_count): Likewise.
6367
6368         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
6369         should split for LEA.
6370
6371         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
6372         function.
6373         (ix86_dep_by_shift_count): Likewise.
6374
6375 2009-04-20  Richard Guenther  <rguenther@suse.de>
6376
6377         * expr.c (handled_component_p): Move ...
6378         * tree.h (handled_component_p): ... here.
6379         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
6380         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
6381         and REALPART_EXPR to be in one group.
6382
6383 2009-04-20  Richard Guenther  <rguenther@suse.de>
6384
6385         * basic-block.h (get_all_dominated_blocks): Declare.
6386         * dominance.c (get_all_dominated_blocks): New function.
6387         * tree-cfg.c (get_all_dominated_blocks): Remove.
6388         (remove_edge_and_dominated_blocks): Adjust.
6389         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
6390         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
6391         instead of recursing.
6392
6393 2009-04-20  Doug Kwan  <dougkwan@google.com>
6394
6395         * cgraph.h (cgraph_node_ptr): New type for vector functions.
6396         (struct cgraph_node_set_def): New type.
6397         (cgraph_node_set) New type. Also declare vector functions.
6398         (struct cgraph_node_set_element_def): New type.
6399         (cgraph_node_set_element): Ditto.
6400         (cgraph_node_set_iterator): New iterator type.
6401         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
6402         cgraph_node_set_remove, dump_cgraph_node_set,
6403         debug_cgraph_node_set): New prototypes.
6404         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
6405         cgraph_node_set_size): New inlines.
6406         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
6407         including cgraph.h.
6408         (struct ipa_opt_pass): Add struct cgraph_node_set_def
6409         argument to function 'write_summary'.
6410         * ipa.c: Include ggc.h.
6411         (hash_cgraph_node_set_element,
6412         eq_cgraph_node_set_element, cgraph_node_set_new,
6413         cgraph_node_set_add, cgraph_node_set_remove,
6414         cgraph_node_set_find, dump_cgraph_node_set,
6415         debug_cgraph_node_set): New functions.
6416         * Makefile.in (ipa.o): Add dependency on GGC_H.
6417
6418 2009-04-20  Ira Rosen  <irar@il.ibm.com>
6419
6420         PR tree-optimization/39675
6421         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
6422         check of the return code of vect_schedule_slp. Check that
6423         stmt_vec_info still exists for the statement, before checking its
6424         vectorization type.
6425
6426 2009-04-20  Michael Matz  <matz@suse.de>
6427
6428         * Makefile.in (generated_files): Take out $(simple_generated_c).
6429
6430 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
6431
6432         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
6433         (UINTPTR_TYPE):  Likewise.
6434
6435 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6436
6437         PR c/37481
6438         * c-typeck.c (digest_init): Check for initializing an array with a
6439         string literal.
6440
6441 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6442
6443         PR c/19771
6444         * c-semantics.c (pop_stmt_list): Propagate
6445         STATEMENT_LIST_HAS_LABEL to parent statement list.
6446
6447 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
6448
6449         * config/mips/mips.h (mips_tune_attr): New macro.
6450         * config/mips/mips.md (cpu): Use it.
6451
6452 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6453
6454         PR c/38243
6455         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
6456         declaring a tag.
6457
6458 2009-04-19  Diego Novillo  <dnovillo@google.com>
6459
6460         * toplev.c (compile_file): Move call to coverage_finish ...
6461         * cgraphunit.c (ipa_passes): ... here.
6462         Call cgraph_process_new_functions.
6463         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
6464         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
6465
6466 2009-04-19  Jan Hubicka  <jh@suse.cz>
6467
6468         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
6469         cfun.
6470         (dump_cgraph_node): Dump can throw external flag.
6471         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
6472
6473 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6474
6475         PR c/32061
6476         PR c++/36954
6477         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
6478         * common.opt (Wlogical-op): Move from here...
6479         * c.opt (Wlogical-op): ... to here.
6480         * c-typeck.c (parser_build_binary_op): Update call to
6481         warn_logical_operator.
6482         * c-opts.c (c_common_post_options): Enable warn_logical_op with
6483         extra_warnings.
6484         * c-common.c (warn_logical_op): Update.
6485         * c-common.h (warn_logical_op): Update declaration.
6486
6487 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
6488
6489         * tree.c (protected_set_expr_location): Fix formatting.
6490
6491 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6492
6493         PR c/27676
6494         * c-typeck.c (readonly_warning): new.
6495         (build_unary_op, build_modify_expr): Use readonly_warning for
6496         storing into something readonly but not const-qualified.
6497
6498 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6499
6500         PR c/22367
6501         * c-typeck.c (build_unary_op): Check for taking address of
6502         expression of type void.
6503
6504 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6505
6506         PR c/35210
6507         * c-typeck.c (build_function_call): Check for calling a function
6508         with qualified void return types.  Call require_complete_type when
6509         generating a trap.
6510
6511 2009-04-18  Jan Hubicka  <jh@suse.cz>
6512
6513         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
6514         Set nothrow flag.
6515         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
6516         can_throw_external flag.
6517         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
6518         * ipa-pure-const.c (ignore_edge): New function.
6519         (propagate): Compute order for NOTHROW computation; set NOTHROWs
6520         only over can_throw_external edges.
6521         (local_pure_const): Add nothrow flag.
6522         * ipa-utils.c (searchc): Add ignore_edge callback.
6523         (ipa_utils_reduced_inorder): Add ignore_edge callback.
6524         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
6525         (set_nothrow_function_flags): Update cgraph.
6526         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
6527
6528 2009-04-18  Richard Guenther  <rguenther@suse.de>
6529
6530         PR middle-end/39804
6531         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
6532         (fold_stmt): ... this and ...
6533         (fold_stmt_inplace): ... this.
6534         (fold_stmt_1): Fold references in calls and asms.
6535         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
6536
6537 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6538
6539         * tree-vrp.c (ssa_name_nonzero_p): Remove.
6540         * tree.h: Remove the prototype for ssa_name_nonzero_p.
6541
6542 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6543
6544         * tree.c (function_args_count): Remove.
6545         * tree.h: Remove the prototype for function_args_count.
6546
6547 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6548
6549         * tree-iterator.c (expr_only): Remove.
6550         * tree.h: Remove the prototype for expr_only.
6551
6552 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6553
6554         * reginfo.c (cannot_change_mode_set_regs): Remove.
6555         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
6556
6557 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
6558
6559         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
6560         whether operands 0 and 1 overlaps.
6561
6562 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6563
6564         PR middle-end/36902
6565         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
6566         pointer. Use warning_at instead of warning.
6567         (search_for_addr_array): Likewise.
6568         (check_array_bounds): Likewise.
6569         (check_all_array_refs): Check that the incoming edge is not in the
6570         list of edges to be removed.
6571         (check_all_array_refs): Avoid the temporal pointer.
6572         (vrp_visit_cond_stmt): Fix typo.
6573         (simplify_switch_using_ranges): Handle the case where the switch
6574         index is an integer constant.
6575
6576 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
6577
6578         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
6579
6580 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6581
6582         * doc/extend.texi, doc/invoke.texi: Fix typos.
6583
6584 2009-04-17  Cary Coutant  <ccoutant@google.com>
6585
6586         * tree-flow-inline.h (get_lineno): Fix inverted test.
6587
6588 2009-04-17  Diego Novillo  <dnovillo@google.com>
6589
6590         * tree-ssa-pre.c (create_expression_by_pieces): Remove
6591         assertion for AVAIL_OUT.
6592
6593 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
6594
6595         PR target/38627
6596         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
6597         * config/sh/linux-atomic.asm: Likewise.
6598
6599 2009-04-17  Diego Novillo  <dnovillo@google.com>
6600
6601         * except.c (debug_eh_tree): New.
6602         (struct eh_region, struct eh_status): Move ...
6603         * except.h: ... here.
6604         (add_type_for_runtime): Declare extern.
6605         (lookup_type_for_runtime): Likewise.
6606         (debug_eh_tree): Declare.
6607         * Makefile.in (GTFILES): List except.h before except.c
6608
6609 2009-04-17  Diego Novillo  <dnovillo@google.com>
6610
6611         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
6612         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
6613         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
6614         (find_vars_r): ... here.
6615         * tree-flow.h (find_referenced_vars_in): Declare.
6616         * tree-ssa-pre.c (create_expression_by_pieces): Assert
6617         that AVAIL_OUT exists for BLOCK.
6618         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
6619         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
6620         (tree-parloops.o): Likewise.
6621
6622 2009-04-17  Simon Baldwin  <simonb@google.com>
6623
6624         * toplev.c (default_tree_printer): Add handling for %E format.
6625
6626 2009-04-17  Diego Novillo  <dnovillo@google.com>
6627
6628         * tree-pretty-print.c (dump_generic_node): Add break after
6629         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
6630         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
6631         FUNCTION_TYPE together.  Call print_struct_decl when printing
6632         structures and TDF_SLIM is not given.
6633         (print_struct_decl): Fix logic for detecting recursion.
6634
6635 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6636
6637         PR 31567
6638         * gcc.c (create_at_file): New.
6639         (compile_input_file_p): New.
6640         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
6641         * main.c (main): Update call to toplev_main.
6642         * toplev.c (toplev_main): Change signature. Call expandargv.
6643         * toplev.h (toplev_main): Change signature.
6644
6645 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6646
6647         * dwarf2out.c (field_byte_offset): Use the type size as the field size
6648         if the latter is not constant.
6649
6650 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
6651
6652         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
6653
6654 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6655
6656         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
6657         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
6658
6659 2009-04-17  Richard Guenther  <rguenther@suse.de>
6660
6661         * tree-ssa-structalias.c (get_constraint_for_component_ref):
6662         Handle component references view-converting an invariant address.
6663
6664 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
6665
6666         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
6667         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
6668         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
6669         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
6670         Use @deftypevr rather than @deftypevar.
6671
6672 2009-04-17  Richard Guenther  <rguenther@suse.de>
6673
6674         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
6675         (get_prop_source_stmt): Likewise.
6676         (can_propagate_from): Likewise.
6677
6678 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
6679
6680         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
6681         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
6682         (--with-multilib-list): Add default value.
6683         * configure: Regenerate.
6684         * Makefile.in (TM_ENDIAN_CONFIG): Define.
6685         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
6686         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
6687         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
6688         Don't add default cpu to multilib list unnecessarily, but do enable
6689         the relevant compiler option..
6690         Add support for --with-multilib-list=<blank> and
6691         --with-multilib-list=!<somelib> to supress unwanted multilibs.
6692         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
6693         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
6694         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
6695         TM_MULTILIB_CONFIG.
6696         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
6697         (MULTILIB_OSDIRNAMES): New variable.
6698         * config/sh/t-1e: Delete file.
6699         * config/sh/t-mlib-sh1: Delete file.
6700         * config/sh/t-mlib-sh2: Delete file.
6701         * config/sh/t-mlib-sh2a: Delete file.
6702         * config/sh/t-mlib-sh2a-nofpu: Delete file.
6703         * config/sh/t-mlib-sh2a-single: Delete file.
6704         * config/sh/t-mlib-sh2a-single-only: Delete file.
6705         * config/sh/t-mlib-sh2e: Delete file.
6706         * config/sh/t-mlib-sh3e: Delete file.
6707         * config/sh/t-mlib-sh4: Delete file.
6708         * config/sh/t-mlib-sh4-nofpu: Delete file.
6709         * config/sh/t-mlib-sh4-single: Delete file.
6710         * config/sh/t-mlib-sh4-single-only: Delete file.
6711         * config/sh/t-mlib-sh4a: Delete file.
6712         * config/sh/t-mlib-sh4a-nofpu: Delete file.
6713         * config/sh/t-mlib-sh4a-single: Delete file.
6714         * config/sh/t-mlib-sh4a-single-only: Delete file.
6715         * config/sh/t-mlib-sh4al: Delete file.
6716         * config/sh/t-mlib-sh5-32media: Delete file.
6717         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
6718         * config/sh/t-mlib-sh5-64media: Delete file.
6719         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
6720         * config/sh/t-mlib-sh5-compact: Delete file.
6721         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
6722         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
6723         * doc/install.texi (Options specification): Add
6724         --with-multilib-list and --with-endian.
6725
6726 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6727
6728         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
6729         REVISION_c.
6730         (OBJS-common): Add plugin-version.o.
6731         (plugin-version.o): New.
6732         * gcc-plugin.h (plugin_gcc_version): New.
6733         (plugin_default_version_check): New.
6734         (plugin_init_func, plugin_init): Add version argument.
6735         * plugin-version.c: New.
6736         * plugin.c (str_plugin_gcc_version_name): New.
6737         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
6738         pass it to the init function.
6739         (plugin_default_version_check): New.
6740
6741 2009-04-17  Richard Guenther  <rguenther@suse.de>
6742
6743         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
6744         for decl-vs-decl disambiguation.
6745
6746 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
6747
6748         * config/s390/s390.h (s390_tune_attr): New macro definition.
6749         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
6750
6751 2009-04-17  Richard Guenther  <rguenther@suse.de>
6752
6753         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
6754         (fold_stmt_r): Likewise.
6755         (maybe_fold_reference): New function.
6756         (fold_gimple_assign): Handle cases fold_stmt_r did.
6757         (fold_stmt): Do not use fold_stmt_r.
6758         (fold_stmt_inplace): Likewise.
6759
6760 2009-04-17  Richard Guenther  <rguenther@suse.de>
6761
6762         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
6763         (record_equivalences_from_stmt): Remove useless checks and
6764         simplifications.
6765         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
6766         the type is already suitable.
6767
6768 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
6769
6770         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
6771
6772 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
6773
6774         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
6775         (CMPtype): Define as __gcc_CMPtype.
6776
6777 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
6778
6779         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
6780         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
6781
6782 2009-04-17  Richard Guenther  <rguenther@suse.de>
6783
6784         PR tree-optimization/39746
6785         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
6786         special-casing for builtins and static variable use/def.
6787         (call_may_clobber_ref_p_1): Likewise.
6788
6789 2009-04-16  Ian Lance Taylor  <iant@google.com>
6790
6791         * df.h: Include "timevar.h".
6792         (struct df_problem): Change tv_id field to timevar_id_t.
6793         * tree-pass.h: Include "timevar.h".
6794         (struct opt_pass): Change tv_id field to timevar_id_t.
6795         * timevar.h (timevar_id_t): Define TV_NONE.
6796         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
6797         TV_NONE rather than tv_id != 0.
6798         (execute_one_pass): Likewise.
6799         * Makefile.in (DF_H): Add $(TIMEVAR_H).
6800         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
6801         dependencies to $(TREE_PASS_H).
6802         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
6803         to TV_NONE.
6804         (pass_branch_target_load_optimize2): Likewise.
6805         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
6806         (pass_outof_cfg_layout_mode): Likewise.
6807         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
6808         (pass_rebuild_cgraph_edges): Likewise.
6809         (pass_remove_cgraph_callee_edges): Likewise.
6810         * df-core.c (pass_df_initialize_opt): Likewise.
6811         (pass_df_initialize_no_opt): Likewise.
6812         (pass_df_finish): Likewise.
6813         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
6814         * except.c (pass_set_nothrow_function_flags): Likewise.
6815         (pass_convert_to_eh_region_ranges): Likewise.
6816         * final.c (pass_compute_alignments): Likewise.
6817         * function.c (pass_instantiate_virtual_regs): Likewise.
6818         (pass_init_function): Likewise.
6819         (pass_leaf_regs): Likewise.
6820         (pass_match_asm_constraints): Likewise.
6821         * gimple-low.c (pass_lower_cf): Likewise.
6822         (pass_mark_used_blocks): Likewise.
6823         * init-regs.c (pass_initialize_regs): Likewise.
6824         * integrate.c (pass_initial_value_sets): Likewise.
6825         * ira.c (pass_ira): Likewise.
6826         * jump.c (pass_cleanup_barriers): Likewise.
6827         * omp-low.c (pass_expand_omp): Likewise.
6828         (pass_lower_omp): Likewise.
6829         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
6830         * recog.c (pass_split_all_insns): Likewise.
6831         (pass_split_after_reload): Likewise.
6832         (pass_split_before_regstack): Likewise.
6833         (pass_split_before_sched2): Likewise.
6834         (pass_split_for_shorten_branches): Likewise.
6835         * reginfo.c (pass_reginfo_init): Likewise.
6836         (pass_subregs_of_mode_init): Likewise.
6837         (pass_subregs_of_mode_finish): Likewise.
6838         * passes.c (pass_postreload): Likewise.
6839         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
6840         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
6841         (pass_warn_function_return): Likewise.
6842         (pass_warn_function_noreturn): Likewise.
6843         * tree-complex.c (pass_lower_complex): Likewise.
6844         (pass_lower_complex_O0): Likewise.
6845         * tree-if-conv.c (pass_if_conversion): Likewise.
6846         * tree-into-ssa.c (pass_build_ssa): Likewise.
6847         * tree-mudflap.c (pass_mudflap_1): Likewise.
6848         (pass_mudflap_2): Likewise.
6849         * tree-nomudflap.c (pass_mudflap_1): Likewise.
6850         (pass_mudflap_2): Likewise.
6851         * tree-nrv.c (pass_return_slot): Likewise.
6852         * tree-object-size.c (pass_object_sizes): Likewise.
6853         * tree-optimize.c (pass_all_optimizations): Likewise.
6854         (pass_early_local_passes): Likewise.
6855         (pass_all_early_optimizations): Likewise.
6856         (pass_cleanup_cfg): Likewise.
6857         (pass_cleanup_cfg_post_optimizing): Likewise.
6858         (pass_free_datastructures): Likewise.
6859         (pass_free_cfg_annotations): Likewise.
6860         (pass_fixup_cfg): Likewise.
6861         (pass_init_datastructures): Likewise.
6862         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
6863         (pass_late_warn_uninitialized): Likewise.
6864         (pass_update_address_taken): Likewise.
6865         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
6866         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
6867         (pass_cse_sincos): Likewise.
6868         (pass_convert_to_rsqrt): Likewise.
6869         * tree-ssa-structalias.c (pass_build_alias): Likewise.
6870         * tree-stdarg.c (pass_stdarg): Likewise.
6871         * tree-tailcall.c (pass_tail_recursion): Likewise.
6872         (pass_tail_calls): Likewise.
6873         * tree-vect-generic.c (pass_lower_vector): Likewise.
6874         (pass_lower_vector_ssa): Likewise.
6875         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
6876
6877 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
6878
6879         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
6880         XLR entry.
6881         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
6882         Handle -march=xlr.
6883         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
6884         logical and signext.
6885
6886 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
6887
6888         PR target/39767
6889         * config/sh/predicates.md (arith_operand): Check if the operand
6890         of TRUNCATE is a REG.
6891
6892 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6893
6894         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6895         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6896
6897 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6898
6899         * tree-iterator.c (tsi_split_statement_list_after,
6900         tsi_split_statement_list_before): Remove.
6901         * tree-iterator.h: Remove the prototypes for
6902         tsi_split_statement_list_after and tsi_split_statement_list_before.
6903
6904 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6905
6906         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
6907         * tree-ssa-propagate.h: Remove the prototype for
6908         stmt_makes_single_load.
6909
6910 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6911
6912         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
6913         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
6914
6915 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6916
6917         * tree-iterator.c (EXPR_LAST_BODY): Remove.
6918
6919 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6920
6921         * except.c (eh_region_outer_p): Remove.
6922         * except.h: Remove the prototype for eh_region_outer_p.
6923
6924 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6925
6926         * function.c (current_function_assembler_name): Remove.
6927         * function.h: Remove the prototype for
6928         current_function_assembler_name.
6929
6930 2009-04-16  Ian Lance Taylor  <iant@google.com>
6931
6932         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
6933         (add_reg_note): Call alloc_reg_note.
6934         * rtl.h (alloc_reg_note): Declare.
6935         * combine.c (try_combine): Use alloc_reg_note.
6936         (recog_for_combine, move_deaths): Likewise.
6937         (distribute_notes): Use alloc_reg_note and add_reg_note.
6938         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
6939         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
6940         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
6941
6942 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
6943
6944         PR rtl-optimization/39762
6945         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
6946         ira_may_move_out_cost): Add comments about way of their usage.
6947         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
6948
6949         * ira-conflicts.c (process_regs_for_copy): Use function
6950         ira_get_register_move_cost instead of global
6951         ira_register_move_cost.
6952
6953         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
6954         color_pass, move_spill_restore, update_curr_costs): Ditto.
6955
6956         * ira-lives.c (process_single_reg_class_operands): Ditto.
6957
6958         * ira-emit.c (emit_move_list): Ditto.
6959
6960         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
6961         (record_reg_classes): Ditto.  Use functions
6962         ira_get_register_move_cost and ira_get_may_move_cost instead of
6963         global vars ira_register_move_cost, ira_may_move_out_cost and
6964         ira_may_move_in_cost.
6965         (record_address_regs): Don't call ira_init_register_move_cost.
6966         Use function ira_get_may_move_cost instead of global
6967         ira_may_move_in_cost.
6968         (process_bb_node_for_hard_reg_moves): Use function
6969         ira_get_register_move_cost instead of global ira_register_move_cost.
6970         (ira_costs): Don't call ira_init_register_move_cost.
6971
6972 2009-04-16  Richard Guenther  <rguenther@suse.de>
6973
6974         * tree-cfg.c (verify_gimple_assign_binary):
6975         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
6976         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
6977         (create_general_new_stmt): Note that this function is broken.
6978
6979 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
6980
6981         * common.opt (fhelp): Add Var(help_flag).
6982         * gcc-plugin.h (plugin_info): Add help.
6983         * plugin.c (plugin_name_args): Add help.
6984         (register_plugin_info): Set plugin->help.
6985         (print_help_one_plugin): New.
6986         (print_plugins_help): New.
6987         * plugin.h (print_plugins_help): New.
6988         * toplev.c (toplev_main): Call print_plugins_help if needed.
6989
6990 2009-04-16  Richard Guenther  <rguenther@suse.de>
6991
6992         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
6993         (gimple_ior_addresses_taken_1): New function.
6994         (gimple_ior_addresses_taken): Likewise.
6995         * gimple.h (struct gimple_statement_with_ops_base): Remove
6996         addresses_taken member.
6997         (gimple_ior_addresses_taken): Declare.
6998         (gimple_addresses_taken, gimple_addresses_taken_ptr,
6999         gimple_set_addresses_taken): Remove.
7000         * ipa-reference.c (mark_address): New function.
7001         (scan_stmt_for_static_refs): Use it for marking addresses taken.
7002         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
7003         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
7004         (gimple_add_to_addresses_taken): Remove.
7005         (get_tmr_operands): Call mark_address_taken.
7006         (get_asm_expr_operands): Likewise.
7007         (get_expr_operands): Likewise.
7008         (build_ssa_operands): Do not clear the addresses_taken bitmap.
7009         (free_stmt_operands): Do not free it.
7010         * tree-ssa.c (delete_tree_ssa): Likewise.
7011         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
7012
7013 2009-04-16  Richard Guenther  <rguenther@suse.de>
7014
7015         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
7016         (walk_stmt_load_store_ops): Likewise.
7017         * gimple.c (get_base_loadstore): New function.
7018         (walk_stmt_load_store_addr_ops): Likewise.
7019         (walk_stmt_load_store_ops): Likewise.
7020         * ipa-pure-const.c (check_op): Simplify.
7021         (check_load, check_store): New functions.
7022         (check_stmt): Use walk_stmt_load_store_ops.
7023         * ipa-reference.c (mark_load): Adjust signature.
7024         (mark_store): Likewise.
7025         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
7026
7027 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7028
7029         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
7030         (plugin_info): New.
7031         * opts.c (common_handle_option): Don't call print_version.
7032         * plugin.c (plugin_name_args): Add version.
7033         (register_plugin_info): New.
7034         (register_callback): Handle PLUGIN_INFO.
7035         (try_init_one_plugin): New.
7036         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
7037         if failed to init.
7038         (finalize_one_plugin): New.
7039         (finalize_plugins): New.
7040         (print_one_plugin): New.
7041         (print_plugins_versions): New.
7042         * plugin.h (print_plugins_versions): New.
7043         (finalize_plugins): New.
7044         * toplev.c (compile_file): Don't call initialize_plugins.
7045         (print_version): Call print_plugins_versions.
7046         (toplev_main): Call initialize_plugins. Print version if needed.
7047         Call finalize_plugins.
7048
7049 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7050
7051         * common.opt (fversion): New.
7052         * gcc.c (print_version): New.
7053         (process_command): Don't print the version. Just set print_version.
7054         (main): Print version. Call subprocesses if print_version and
7055         verbose_flag are set.
7056         * opts.c (common_handle_option): Handle OPT_fversion.
7057
7058 2009-04-16  Richard Guenther  <rguenther@suse.de>
7059             Ira Rosen  <irar@il.ibm.com>
7060
7061         PR tree-optimization/39698
7062         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
7063         type of the reduction variable.  Only generate the def if
7064         it is needed.
7065
7066         * omp-low.c (expand_omp_for_generic): When converting to a pointer
7067         make sure to first convert to an integer of the same precision.
7068         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
7069         the type of the evolution correctly in computing the new
7070         induction variable base.
7071
7072 2009-04-16  Richard Guenther  <rguenther@suse.de>
7073
7074         PR middle-end/39625
7075         * tree-cfg.c (make_blocks): Split statements with to-be
7076         abnormal SSA names on the lhs.
7077
7078 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
7079
7080         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
7081         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
7082         * c-typeck.c (really_start_incremental_init): Likewise.
7083         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
7084         (TARGET_INITIALIZER): Remove it.
7085         * target.h (struct target): Remove vector_opaque_p.
7086         * tree.c (build_opaque_vector_type): New.
7087         * tree.h (TYPE_VECTOR_OPAQUE): New.
7088         (build_opaque_vector_type): Declare.
7089         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
7090         * config/rs6000/rs6000.c (build_opaque_vector_type,
7091         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
7092         (rs6000_init_builtins): Use build_opaque_vector_type for
7093         opaque_V4SI_type_node.
7094
7095 2009-04-15  Catherine Moore  <clm@codesourcery.com>
7096
7097         * debug.h (set_name):  Declare.
7098         * dwarf2out.c (dwarf2out_set_name): Declare.
7099         (dwarf2_debug_hooks): Add set_name.
7100         (find_AT_string): New.
7101         (add_AT_string): Call find_AT_string.
7102         (dwarf2out_set_name): New.
7103         * cp/decl.c (grokdeclarator): Call set_name.
7104         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
7105         * debug.c (do_nothing_debug_hooks):  Likewise.
7106         * dbxout.c (dbx_debug_hooks): Likewise.
7107         * sdbout.c (sdb_debug_hooks): Likewise.
7108
7109 2009-04-15  Michael Eager  <eager@eagercon.com>
7110
7111         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
7112         reg for single-precision FPU.
7113         * config/rs6000/rs6000.md (movsi_internal1): Only for
7114         !TARGET_SINGLE_FPU.
7115         (movsi_internal1_single): New. Add pattern to move SI values to/from
7116         single-precision FP regs.
7117
7118 2009-04-15  Richard Guenther  <rguenther@suse.de>
7119
7120         * omp-low.c (lower_rec_input_clauses): Build correct address
7121         expressions.
7122         (expand_omp_for_generic): Fix multiplication type.
7123         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
7124         (generate_memset_zero): Fix types.
7125         * tree-profile.c (prepare_instrumented_value): Correctly
7126         widen a pointer.
7127
7128 2009-04-15  Ian Lance Taylor  <iant@google.com>
7129
7130         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
7131         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
7132         for -Wall and for -Wc++-compat.
7133         (c_common_post_options): For C++, set warn_enum_compare if not
7134         already set.
7135         * c-tree.h (struct c_expr): Add field original_type.
7136         (build_external_ref): Update declaration.
7137         * c-parser.c (c_parser_braced_init): Set original_type.
7138         (c_parser_initelt): Likewise.
7139         (c_parser_expr_no_commas): Likewise.
7140         (c_parser_conditional_expression): Likewise.
7141         (c_parser_cast_expression): Likewise.
7142         (c_parser_unary_expression): Likewise.  Pull setting of
7143         original_code to top of function.
7144         (c_parser_sizeof_expression): Set original_type.
7145         (c_parser_alignof_expression): Likewise.
7146         (c_parser_postfix_expression): Likewise.  Pull setting of
7147         original_code to top of function.
7148         (c_parser_postfix_expression_after_paren_type): Set original_type.
7149         (c_parser_postfix_expression_after_primary): Likewise.
7150         (c_parser_expression): Likewise.
7151         * c-typeck.c (build_external_ref): Add type parameter.  Change all
7152         callers.
7153         (c_expr_sizeof_expr): Set original_type field.
7154         (parser_build_unary_op): Likewise.
7155         (parser_build_binary_op): Likewise.  Optionally warn about
7156         comparisons of enums of different types.
7157         (digest_init): Set original_type field.
7158         (really_start_incremental_init): Likewise.
7159         (push_init_level, pop_init_level): Likewise.
7160         * doc/invoke.texi (Warning Options): -Wenum-compare now
7161         supported in C.
7162
7163 2009-04-15  Richard Guenther  <rguenther@suse.de>
7164
7165         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
7166         out a necessary conversion.
7167         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
7168         names we didn't value number.
7169         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
7170
7171 2009-04-15  Richard Guenther  <rguenther@suse.de>
7172
7173         PR tree-optimization/39764
7174         * tree-ssa-ccp.c (get_value): Canonicalize value with
7175         canonicalize_float_value.
7176
7177 2009-04-15  Jan Hubicka  <jh@suse.cz>
7178
7179         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
7180         Wrong version of patch.
7181
7182 2009-04-15  Jan Hubicka  <jh@suse.cz>
7183
7184         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
7185
7186 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
7187
7188         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
7189         our distinct integral and vector types.
7190
7191 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
7192
7193         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
7194         * init.c (build_vtbl_address): Remove call to assemble_external.
7195
7196 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
7197
7198         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
7199         output for other floating point modes.
7200
7201 2009-04-14  Diego Novillo  <dnovillo@google.com>
7202
7203         * diagnostic.c (diagnostic_report_diagnostic): Do not
7204         warn about loaded plugins for DK_ERROR and DK_WARNING.
7205         * c-decl.c (declspecs_add_type): Move call to
7206         invoke_plugin_callbacks ...
7207         * c-parser.c (c_parser_declspecs): ... here.
7208         * plugin.c (dump_active_plugins): Tidy output.
7209
7210 2009-04-14  Diego Novillo  <dnovillo@google.com>
7211             Le-Chun Wu  <lcwu@google.com>
7212
7213         * configure.ac: Add --enable-plugin support.
7214         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
7215         * Makefile.in (PLUGIN_H): Define.
7216         Export ENABLE_PLUGIN and GMPINC to site.exp.
7217         Add PLUGINLIBS to link command.
7218         Add/modify dependencies for plugin.o and files including plugin.h.
7219         (plugin.o): New.
7220         * config.in: Regenerate.
7221
7222         * opts.c (common_handle_option): Handle OPT_fplugin_ and
7223         OPT_fplugin_arg_.
7224
7225 2009-04-14  Le-Chun Wu  <lcwu@google.com>
7226
7227         * tree-pass.h (register_one_dump_file): Add a prototype for
7228         register_one_dump_file.
7229         * toplev.c (compile_file): Call initialize_plugins.
7230         (do_compile): Call invoke_plugin_callbacks.
7231         (toplev_main): Call invoke_plugin_callbacks.
7232         * common.opt: Add -fplugin= and -fplugin-arg-.
7233         * gcc-plugin.h: New public header file for plugins to include.
7234         * plugin.c: New source file.
7235         * plugin.h: New internal header file.
7236         * passes.c (register_one_dump_file): Make it external.
7237
7238         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
7239
7240 2009-04-14  Diego Novillo  <dnovillo@google.com>
7241
7242         * doc/plugins.texi: New.
7243         * doc/gccint.texi: Add reference to Plugins chapter.
7244         * doc/invoke.texi: Document -fplugin and -fplugin-arg
7245         * diagnostic.c (diagnostic_report_diagnostic): Warn about
7246         loaded plugins, if any.
7247         * timevar.def (TV_PLUGIN_INIT): Define.
7248         (TV_PLUGIN_RUN): Define.
7249         * plugin.c: Include timevar.h
7250         (plugins_active_p): New.
7251         (dump_active_plugins): New.
7252         (debug_active_plugins): New.
7253
7254 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
7255
7256         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
7257         library paths.
7258         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
7259
7260 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
7261
7262         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
7263         the same as a minus without a shift.
7264
7265 2009-04-14  Nick Clifton  <nickc@redhat.com>
7266
7267         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
7268         comparisons with small integers will always produce a short
7269         branch.
7270
7271 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
7272
7273         Merge:
7274         2008-12-19  Diego Novillo  <dnovillo@google.com>
7275
7276         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
7277
7278 2009-04-14  Richard Guenther  <rguenther@suse.de>
7279
7280         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
7281         verification.
7282         (verify_gimple_assign_binary): Likewise.  Handle shifts and
7283         rotates correctly.
7284         (verify_gimple_phi): Print the mismatched argument position.
7285         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
7286         Fix types.
7287         (vect_update_init_of_dr): Likewise.
7288         * matrix-reorg.c (transform_access_sites): Do what the
7289         comment suggests.
7290         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
7291
7292 2009-04-13  Michael Eager  <eager@eagercon.com>
7293
7294         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
7295         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
7296         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
7297         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
7298         remove duplicate config
7299
7300 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7301
7302         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
7303         file_name:line_number type locator of the call site.
7304
7305 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7306
7307         * genautomata.c: Put blank after comma.
7308         (automaton_decls): New.
7309         (struct unit_usage): Add comments to member next.
7310         (store_alt_unit_usage): Keep the list ordered.
7311         (unit_present_on_list_p, equal_alternatives_p): New.
7312         (check_regexp_units_distribution): Check units distribution
7313         correctness correctly.
7314         (main): Don't write automata if error is found.  Return correct
7315         exit code.
7316
7317         * config/m68k/cf.md (cfv4_ds): Remove.
7318         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
7319         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
7320
7321         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
7322         power4-load-ext, power4-store, power4-store-update,
7323         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
7324         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
7325         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
7326         power4-sqrt, power4-isync): Modify reservation to make correct
7327         unit distribution to automata.
7328
7329         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
7330         power5-store-update, power5-two, power5-three, power5-lmul,
7331         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
7332
7333 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
7334
7335         * except.c (pass_set_nothrow_function_flags): Set name and add
7336         TODO_dump_func.
7337         (set_nothrow_function_flags): Mention in the dump file when
7338         changing a function to nothrow.
7339
7340 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
7341
7342         PR/39066
7343         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
7344         instead of unsigned long.
7345
7346 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7347
7348         * config/arm/arm.c (return_used_this_function): Remove.
7349         (arm_output_function_prologue): Remove use of
7350         return_used_this_function.
7351         (output_return_instruction): Replace use of
7352         return_used_this_function
7353         by cfun->machine->return_used_this_function.
7354         (arm_output_epilogue): Likewise.
7355         (arm_output_function_epilogue): Likewise.
7356         (thumb_unexpanded_epilogue): Likewise.
7357         * config/arm/arm.h (struct machine_function):
7358         New member return_used_this_function.
7359
7360 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
7361
7362         * doc/install.texi: Correct description of default directory for
7363         --with-gxx-include-dir.
7364
7365 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7366
7367         * fold-const.c (build_range_check): Properly deal with enumeral and
7368         boolean base types.
7369
7370 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
7371
7372         * doc/invoke.texi (max_gcse_passes): Remove documentation.
7373         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
7374         * params.h (MAX_GCSE_PASSES): Remove.
7375         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
7376         in sequence.  Remove ability to run multiple passes.
7377         (bypass_jumps): Report run as third CPROP pass.
7378
7379 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
7380
7381         PR middle-end/39651
7382         * except.c (can_throw_external): Look at each insn in a SEQUENCE
7383         when deciding whether the whole SEQUENCE can throw.
7384
7385 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
7386
7387         PR target/39740
7388         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
7389         offseted label references.
7390
7391 2009-04-11  Jan Hubicka  <jh@suse.cz>
7392
7393         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
7394
7395 2009-04-11  Richard Guenther  <rguenther@suse.de>
7396
7397         PR middle-end/39732
7398         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
7399         return variables as TREE_ADDRESSABLE.
7400
7401 2009-04-11  Richard Guenther  <rguenther@suse.de>
7402
7403         PR tree-optimization/39713
7404         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
7405         reference trees have SSA_NAME operands.
7406
7407 2009-04-11  Richard Guenther  <rguenther@suse.de>
7408
7409         PR c/39712
7410         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
7411         address expressions.
7412
7413 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
7414
7415         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
7416         match changes in Cygwin 1.7
7417         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
7418         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
7419
7420 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7421
7422         PR tree-optimization/39701
7423         * doc/invoke.texi (Optimization Options): Document change in
7424         meaning and initialization of -fdelete-null-pointer-checks.
7425
7426 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7427
7428         PR middle-end/39701
7429         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
7430
7431         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
7432         here.
7433
7434         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
7435
7436 2009-04-10  Chao-ying Fu  <fu@mips.com>
7437
7438         * doc/tm.texi (Instruction Output): Document
7439         TARGET_ASM_FINAL_POSTSCAN_INSN.
7440         * target.h (final_postscan_insn): New field in asm_out.
7441         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7442         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
7443         * final.c (final_scan_insn): Call
7444         targetm.asm_out.final_postscan_insn after outputting
7445         an asm macro and a normal instruction.
7446
7447         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
7448         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
7449         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
7450         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
7451         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7452
7453 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7454
7455         PR middle-end/39701
7456         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
7457         variables as non-NULL even with -fdelete-null-pointer-checks.
7458
7459 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7460
7461         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
7462
7463 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7464
7465         PR target/39678
7466         * config/i386/i386.c (classify_argument): Handle SCmode with
7467         (bit_offset % 64) != 0.
7468
7469 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
7470
7471         * doc/invoke.texi (Optimize Options): Add cross-reference to
7472         -Q --help=optimizers examples.
7473
7474 2009-04-10  Ben Elliston  <bje@au.ibm.com>
7475
7476         PR target/36800
7477         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
7478         regalign for the reg == fpr and TDmode case.
7479
7480 2009-04-09  David Ayers  <ayers@fsfe.org>
7481
7482         PR objc/29200
7483         * objc/objc-act.c (warn_with_method): Remove helper function.
7484         (check_duplicates): Call warning and inform directly.
7485         (really_start_method): Likewise.
7486
7487 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7488
7489         * expmed.c (expand_divmod): Always use a comparison for a division
7490         by a large unsigned integer.
7491
7492         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
7493         for things others than variables or functions as nonzero.
7494
7495 2009-04-09  Nick Clifton  <nickc@redhat.com>
7496
7497         * unwind-compat.c: Change copyright header to refer to version
7498         3 of the GNU General Public License with version 3.1 of the
7499         GCC Runtime Library Exception and to point readers at the
7500         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
7501         * config/alpha/crtfastmath.c: Likewise.
7502         * config/alpha/linux-unwind.h: Likewise.
7503         * config/alpha/qrnnd.asm: Likewise.
7504         * config/alpha/vms-crt0-64.c: Likewise.
7505         * config/alpha/vms-crt0.c: Likewise.
7506         * config/alpha/vms-dwarf2.asm: Likewise.
7507         * config/alpha/vms-dwarf2eh.asm: Likewise.
7508         * config/alpha/vms-psxcrt0-64.c: Likewise.
7509         * config/alpha/vms-psxcrt0.c: Likewise.
7510         * config/alpha/vms_tramp.asm: Likewise.
7511         * config/arc/initfini.c: Likewise.
7512         * config/arc/lib1funcs.asm: Likewise.
7513         * config/arm/bpabi-v6m.S: Likewise.
7514         * config/arm/bpabi.S: Likewise.
7515         * config/arm/bpabi.c: Likewise.
7516         * config/arm/crti.asm: Likewise.
7517         * config/arm/crtn.asm: Likewise.
7518         * config/arm/ieee754-df.S: Likewise.
7519         * config/arm/ieee754-sf.S: Likewise.
7520         * config/arm/lib1funcs.asm: Likewise.
7521         * config/arm/libunwind.S: Likewise.
7522         * config/arm/linux-atomic.c: Likewise.
7523         * config/arm/mmintrin.h: Likewise.
7524         * config/arm/pr-support.c: Likewise.
7525         * config/arm/unaligned-funcs.c: Likewise.
7526         * config/arm/unwind-arm.c: Likewise.
7527         * config/arm/unwind-arm.h: Likewise.
7528         * config/avr/libgcc.S: Likewise.
7529         * config/bfin/crti.s: Likewise.
7530         * config/bfin/crtlibid.s: Likewise.
7531         * config/bfin/crtn.s: Likewise.
7532         * config/bfin/lib1funcs.asm: Likewise.
7533         * config/bfin/linux-unwind.h: Likewise.
7534         * config/cris/arit.c: Likewise.
7535         * config/cris/cris_abi_symbol.c: Likewise.
7536         * config/darwin-64.c: Likewise.
7537         * config/darwin-crt2.c: Likewise.
7538         * config/darwin-crt3.c: Likewise.
7539         * config/darwin.h: Likewise.
7540         * config/dbxelf.h: Likewise.
7541         * config/dfp-bit.c: Likewise.
7542         * config/dfp-bit.h: Likewise.
7543         * config/elfos.h: Likewise.
7544         * config/fixed-bit.c: Likewise.
7545         * config/fixed-bit.h: Likewise.
7546         * config/fp-bit.c: Likewise.
7547         * config/fp-bit.h: Likewise.
7548         * config/fr30/crti.asm: Likewise.
7549         * config/fr30/crtn.asm: Likewise.
7550         * config/fr30/lib1funcs.asm: Likewise.
7551         * config/freebsd-spec.h: Likewise.
7552         * config/frv/cmovd.c: Likewise.
7553         * config/frv/cmovh.c: Likewise.
7554         * config/frv/cmovw.c: Likewise.
7555         * config/frv/frvbegin.c: Likewise.
7556         * config/frv/frvend.c: Likewise.
7557         * config/frv/lib1funcs.asm: Likewise.
7558         * config/glibc-stdint.h: Likewise.
7559         * config/h8300/clzhi2.c: Likewise.
7560         * config/h8300/crti.asm: Likewise.
7561         * config/h8300/crtn.asm: Likewise.
7562         * config/h8300/ctzhi2.c: Likewise.
7563         * config/h8300/fixunssfsi.c: Likewise.
7564         * config/h8300/lib1funcs.asm: Likewise.
7565         * config/h8300/parityhi2.c: Likewise.
7566         * config/h8300/popcounthi2.c: Likewise.
7567         * config/i386/ammintrin.h: Likewise.
7568         * config/i386/att.h: Likewise.
7569         * config/i386/avxintrin.h: Likewise.
7570         * config/i386/biarch64.h: Likewise.
7571         * config/i386/bmmintrin.h: Likewise.
7572         * config/i386/cpuid.h: Likewise.
7573         * config/i386/cross-stdarg.h: Likewise.
7574         * config/i386/crtfastmath.c: Likewise.
7575         * config/i386/crtprec.c: Likewise.
7576         * config/i386/cygming-crtbegin.c: Likewise.
7577         * config/i386/cygming-crtend.c: Likewise.
7578         * config/i386/cygwin.asm: Likewise.
7579         * config/i386/emmintrin.h: Likewise.
7580         * config/i386/gmm_malloc.h: Likewise.
7581         * config/i386/gthr-win32.c: Likewise.
7582         * config/i386/i386.h: Likewise.
7583         * config/i386/immintrin.h: Likewise.
7584         * config/i386/linux-unwind.h: Likewise.
7585         * config/i386/linux64.h: Likewise.
7586         * config/i386/mm3dnow.h: Likewise.
7587         * config/i386/mmintrin-common.h: Likewise.
7588         * config/i386/mmintrin.h: Likewise.
7589         * config/i386/nmmintrin.h: Likewise.
7590         * config/i386/pmm_malloc.h: Likewise.
7591         * config/i386/pmmintrin.h: Likewise.
7592         * config/i386/smmintrin.h: Likewise.
7593         * config/i386/sol2-c1.asm: Likewise.
7594         * config/i386/sol2-ci.asm: Likewise.
7595         * config/i386/sol2-cn.asm: Likewise.
7596         * config/i386/sol2-gc1.asm: Likewise.
7597         * config/i386/tmmintrin.h: Likewise.
7598         * config/i386/unix.h: Likewise.
7599         * config/i386/w32-unwind.h: Likewise.
7600         * config/i386/wmmintrin.h: Likewise.
7601         * config/i386/x86-64.h: Likewise.
7602         * config/i386/x86intrin.h: Likewise.
7603         * config/i386/xmmintrin.h: Likewise.
7604         * config/ia64/crtbegin.asm: Likewise.
7605         * config/ia64/crtend.asm: Likewise.
7606         * config/ia64/crtfastmath.c: Likewise.
7607         * config/ia64/crti.asm: Likewise.
7608         * config/ia64/crtn.asm: Likewise.
7609         * config/ia64/fde-glibc.c: Likewise.
7610         * config/ia64/lib1funcs.asm: Likewise.
7611         * config/ia64/linux-unwind.h: Likewise.
7612         * config/ia64/quadlib.c: Likewise.
7613         * config/ia64/unwind-ia64.c: Likewise.
7614         * config/linux.h: Likewise.
7615         * config/m32c/m32c-lib1.S: Likewise.
7616         * config/m32c/m32c-lib2-trapv.c: Likewise.
7617         * config/m32c/m32c-lib2.c: Likewise.
7618         * config/m32r/initfini.c: Likewise.
7619         * config/m68hc11/larith.asm: Likewise.
7620         * config/m68hc11/m68hc11-crt0.S: Likewise.
7621         * config/m68k/cf.md: Likewise.
7622         * config/m68k/crti.s: Likewise.
7623         * config/m68k/crtn.s: Likewise.
7624         * config/m68k/lb1sf68.asm: Likewise.
7625         * config/m68k/linux-unwind.h: Likewise.
7626         * config/mcore/crti.asm: Likewise.
7627         * config/mcore/crtn.asm: Likewise.
7628         * config/mcore/lib1.asm: Likewise.
7629         * config/mips/linux-unwind.h: Likewise.
7630         * config/mips/loongson.h: Likewise.
7631         * config/mips/mips16.S: Likewise.
7632         * config/mmix/crti.asm: Likewise.
7633         * config/mmix/crtn.asm: Likewise.
7634         * config/pa/fptr.c: Likewise.
7635         * config/pa/hpux-unwind.h: Likewise.
7636         * config/pa/lib2funcs.asm: Likewise.
7637         * config/pa/linux-atomic.c: Likewise.
7638         * config/pa/linux-unwind.h: Likewise.
7639         * config/pa/milli64.S: Likewise.
7640         * config/pa/quadlib.c: Likewise.
7641         * config/pa/stublib.c: Likewise.
7642         * config/picochip/libgccExtras/adddi3.asm: Likewise.
7643         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
7644         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
7645         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
7646         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
7647         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
7648         * config/picochip/libgccExtras/divmod15.asm: Likewise.
7649         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
7650         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
7651         * config/picochip/libgccExtras/longjmp.asm: Likewise.
7652         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
7653         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
7654         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
7655         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
7656         * config/picochip/libgccExtras/setjmp.asm: Likewise.
7657         * config/picochip/libgccExtras/subdi3.asm: Likewise.
7658         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
7659         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
7660         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
7661         * config/rs6000/750cl.h: Likewise.
7662         * config/rs6000/altivec.h: Likewise.
7663         * config/rs6000/biarch64.h: Likewise.
7664         * config/rs6000/crtresfpr.asm: Likewise.
7665         * config/rs6000/crtresgpr.asm: Likewise.
7666         * config/rs6000/crtresxfpr.asm: Likewise.
7667         * config/rs6000/crtresxgpr.asm: Likewise.
7668         * config/rs6000/crtsavfpr.asm: Likewise.
7669         * config/rs6000/crtsavgpr.asm: Likewise.
7670         * config/rs6000/darwin-asm.h: Likewise.
7671         * config/rs6000/darwin-fallback.c: Likewise.
7672         * config/rs6000/darwin-fpsave.asm: Likewise.
7673         * config/rs6000/darwin-ldouble.c: Likewise.
7674         * config/rs6000/darwin-tramp.asm: Likewise.
7675         * config/rs6000/darwin-unwind.h: Likewise.
7676         * config/rs6000/darwin-vecsave.asm: Likewise.
7677         * config/rs6000/darwin-world.asm: Likewise.
7678         * config/rs6000/e500crtres32gpr.asm: Likewise.
7679         * config/rs6000/e500crtres64gpr.asm: Likewise.
7680         * config/rs6000/e500crtres64gprctr.asm: Likewise.
7681         * config/rs6000/e500crtrest32gpr.asm: Likewise.
7682         * config/rs6000/e500crtrest64gpr.asm: Likewise.
7683         * config/rs6000/e500crtresx32gpr.asm: Likewise.
7684         * config/rs6000/e500crtresx64gpr.asm: Likewise.
7685         * config/rs6000/e500crtsav32gpr.asm: Likewise.
7686         * config/rs6000/e500crtsav64gpr.asm: Likewise.
7687         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
7688         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
7689         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
7690         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
7691         * config/rs6000/eabi-ci.asm: Likewise.
7692         * config/rs6000/eabi-cn.asm: Likewise.
7693         * config/rs6000/eabi.asm: Likewise.
7694         * config/rs6000/linux-unwind.h: Likewise.
7695         * config/rs6000/linux64.h: Likewise.
7696         * config/rs6000/paired.h: Likewise.
7697         * config/rs6000/paired.md: Likewise.
7698         * config/rs6000/ppc64-fp.c: Likewise.
7699         * config/rs6000/ppu_intrinsics.h: Likewise.
7700         * config/rs6000/rs6000.h: Likewise.
7701         * config/rs6000/si2vmx.h: Likewise.
7702         * config/rs6000/sol-ci.asm: Likewise.
7703         * config/rs6000/sol-cn.asm: Likewise.
7704         * config/rs6000/spe.h: Likewise.
7705         * config/rs6000/spu2vmx.h: Likewise.
7706         * config/rs6000/sysv4.h: Likewise.
7707         * config/rs6000/tramp.asm: Likewise.
7708         * config/rs6000/vec_types.h: Likewise.
7709         * config/s390/linux-unwind.h: Likewise.
7710         * config/s390/tpf-unwind.h: Likewise.
7711         * config/score/crti.asm: Likewise.
7712         * config/score/crtn.asm: Likewise.
7713         * config/sh/crt1.asm: Likewise.
7714         * config/sh/crti.asm: Likewise.
7715         * config/sh/crtn.asm: Likewise.
7716         * config/sh/divtab-sh4-300.c: Likewise.
7717         * config/sh/divtab-sh4.c: Likewise.
7718         * config/sh/divtab.c: Likewise.
7719         * config/sh/lib1funcs-4-300.asm: Likewise.
7720         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
7721         * config/sh/lib1funcs.asm: Likewise.
7722         * config/sh/lib1funcs.h: Likewise.
7723         * config/sh/linux-atomic.asm: Likewise.
7724         * config/sh/linux-unwind.h: Likewise.
7725         * config/sh/shmedia.h: Likewise.
7726         * config/sh/sshmedia.h: Likewise.
7727         * config/sh/ushmedia.h: Likewise.
7728         * config/sparc/crtfastmath.c: Likewise.
7729         * config/sparc/linux-unwind.h: Likewise.
7730         * config/sparc/sol2-c1.asm: Likewise.
7731         * config/sparc/sol2-ci.asm: Likewise.
7732         * config/sparc/sol2-cn.asm: Likewise.
7733         * config/spu/divmodti4.c: Likewise.
7734         * config/spu/divv2df3.c: Likewise.
7735         * config/spu/float_disf.c: Likewise.
7736         * config/spu/float_unsdidf.c: Likewise.
7737         * config/spu/float_unsdisf.c: Likewise.
7738         * config/spu/float_unssidf.c: Likewise.
7739         * config/spu/mfc_multi_tag_release.c: Likewise.
7740         * config/spu/mfc_multi_tag_reserve.c: Likewise.
7741         * config/spu/mfc_tag_release.c: Likewise.
7742         * config/spu/mfc_tag_reserve.c: Likewise.
7743         * config/spu/mfc_tag_table.c: Likewise.
7744         * config/spu/multi3.c: Likewise.
7745         * config/spu/spu_internals.h: Likewise.
7746         * config/spu/spu_intrinsics.h: Likewise.
7747         * config/spu/spu_mfcio.h: Likewise.
7748         * config/spu/vec_types.h: Likewise.
7749         * config/spu/vmx2spu.h: Likewise.
7750         * config/stormy16/stormy16-lib2.c: Likewise.
7751         * config/svr4.h: Likewise.
7752         * config/sync.c: Likewise.
7753         * config/v850/lib1funcs.asm: Likewise.
7754         * config/vxlib-tls.c: Likewise.
7755         * config/vxlib.c: Likewise.
7756         * config/vxworks-dummy.h: Likewise.
7757         * config/xtensa/crti.asm: Likewise.
7758         * config/xtensa/crtn.asm: Likewise.
7759         * config/xtensa/ieee754-df.S: Likewise.
7760         * config/xtensa/ieee754-sf.S: Likewise.
7761         * config/xtensa/lib1funcs.asm: Likewise.
7762         * config/xtensa/lib2funcs.S: Likewise.
7763         * config/xtensa/linux-unwind.h: Likewise.
7764         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
7765         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
7766         * coretypes.h: Likewise.
7767         * crtstuff.c: Likewise.
7768         * defaults.h: Likewise.
7769         * dwarf2.h: Likewise.
7770         * emutls.c: Likewise.
7771         * gbl-ctors.h: Likewise.
7772         * gcov-io.h: Likewise.
7773         * ginclude/float.h: Likewise.
7774         * ginclude/iso646.h: Likewise.
7775         * ginclude/stdarg.h: Likewise.
7776         * ginclude/stdbool.h: Likewise.
7777         * ginclude/stddef.h: Likewise.
7778         * ginclude/stdfix.h: Likewise.
7779         * ginclude/stdint-gcc.h: Likewise.
7780         * ginclude/tgmath.h: Likewise.
7781         * gthr-aix.h: Likewise.
7782         * gthr-dce.h: Likewise.
7783         * gthr-gnat.c: Likewise.
7784         * gthr-gnat.h: Likewise.
7785         * gthr-lynx.h: Likewise.
7786         * gthr-mipssde.h: Likewise.
7787         * gthr-nks.h: Likewise.
7788         * gthr-posix.c: Likewise.
7789         * gthr-posix.h: Likewise.
7790         * gthr-posix95.h: Likewise.
7791         * gthr-rtems.h: Likewise.
7792         * gthr-single.h: Likewise.
7793         * gthr-solaris.h: Likewise.
7794         * gthr-tpf.h: Likewise.
7795         * gthr-vxworks.h: Likewise.
7796         * gthr-win32.h: Likewise.
7797         * gthr.h: Likewise.
7798         * libgcc2.c: Likewise.
7799         * libgcc2.h: Likewise.
7800         * libgcov.c: Likewise.
7801         * tsystem.h: Likewise.
7802         * typeclass.h: Likewise.
7803         * unwind-c.c: Likewise.
7804         * unwind-compat.h: Likewise.
7805         * unwind-dw2-fde-compat.c: Likewise.
7806         * unwind-dw2-fde-darwin.c: Likewise.
7807         * unwind-dw2-fde-glibc.c: Likewise.
7808         * unwind-dw2-fde.c: Likewise.
7809         * unwind-dw2-fde.h: Likewise.
7810         * unwind-dw2.c: Likewise.
7811         * unwind-dw2.h: Likewise.
7812         * unwind-generic.h: Likewise.
7813         * unwind-pe.h: Likewise.
7814         * unwind-sjlj.c: Likewise.
7815         * unwind.inc: Likewise.
7816         * config/arm/neon-gen.ml: Change generated copyright header to
7817         refer to version 3 of the GNU General Public License with
7818         version 3.1 of the GCC Runtime Library Exception and to point
7819         readers at the COPYING3 and COPYING3.RUNTIME files and the
7820         FSF's license web page.
7821         * config/arm/arm_neon.h: Regenerate.
7822
7823 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
7824
7825         * config/cris/cris.md: Change copyright header to refer to version
7826         3 of the GNU General Public License.
7827         * doc/install.texi2html: Change copyright header to refer to version
7828         3 of the GNU General Public License and to point readers at the
7829         COPYING3 file and the FSF's license web page.
7830         * config/vax/linux.h: Likewise.
7831
7832 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7833
7834         * config/i386/i386.md (cmpcc): New.
7835         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
7836         (sync_compare_and_swap_cc*): Delete.
7837
7838         * config/s390/s390.c (s390_compare_emitted): Remove.
7839         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
7840         s390_compare_emitted used to be handled.  Assert that modes match.
7841         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
7842         refer to sync_compare_and_swap_ccsi.
7843         * config/s390/s390.h (s390_compare_emitted): Remove.
7844         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
7845         instead of s390_compare_emitted.
7846         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
7847         instead of s390_compare_emitted.
7848         * config/s390/s390.md (cmpcc): New.
7849         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
7850         CC_REGNUM, do not pretend it's set.
7851         (sync_compare_and_swap_cc*): Delete.
7852         * config/s390/predicates.md (cc_reg_operand): New.
7853
7854         * expr.c (sync_compare_and_swap_cc): Delete.
7855         * optabs.h (sync_compare_and_swap_cc): Delete.
7856         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
7857         is being used with can_compare_p.
7858         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
7859         (find_cc_set): New.
7860         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
7861         look for a MODE_CC set instead.  Use emit_store_flag.
7862         (expand_compare_and_swap_loop): Likewise, with some additional
7863         complication to avoid a force_reg when useless.  Use
7864         emit_cmp_and_jump_insns.
7865         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
7866         * doc/md.texi (sync_compare_and_swap_cc): Merge with
7867         sync_compare_and_swap documentation.
7868
7869 2009-04-09  Jan Hubicka  <jh@suse.cz>
7870
7871         * except.c (find_prev_try): Break out from ....
7872         (duplicate_eh_regions): ... here; properly update prev_try pointers
7873         when duplication part of tree.
7874         (dump_eh_tree): Improve dumping.
7875         (verify_eh_region): New.
7876         (verify_eh_tree): Use it.
7877
7878 2009-04-06  Richard Guenther  <rguenther@suse.de>
7879
7880         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
7881         &ARRAY addresses by adjusting their types and prepending
7882         a conversion.
7883         * tree-cfg.c (verify_gimple_assign_single): Verify that
7884         addresses are correct.
7885
7886 2009-04-09  Richard Guenther  <rguenther@suse.de>
7887
7888         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
7889         indices into an array reference if possible.
7890         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
7891         Fold POINTER_PLUS_EXPR statements with invariant address.
7892
7893 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
7894
7895         PR target/39634
7896         * config.gcc (powerpc64-*-linux*): Always build biarch.
7897
7898 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
7899
7900         PR c/39613
7901         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
7902         it and pedwarn if this results in an INTEGER_CST.
7903
7904 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7905
7906         * doc/install.texi: Update minimum GMP version.  Remove obsolete
7907         text in MPFR section.
7908
7909 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
7910
7911         * dwarf2out.c (class_scope_p): New static inline.
7912         (class_or_namespace_scope_p): Use it.
7913         (gen_variable_die): Use DW_TAG_member tag for static data member
7914         declarations instead of DW_TAG_variable.
7915
7916         PR middle-end/39573
7917         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
7918         variables.
7919
7920 2009-04-08  Richard Guenther  <rguenther@suse.de>
7921
7922         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
7923         valueize random data.
7924
7925 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
7926
7927         * config.gcc (aix tm_file):  Add aix-stdint.h.
7928         (aix tm clause use_gcc_stdint):  Set to wrap.
7929         * config/rs6000/aix-stdint.h:  New file.
7930
7931 2009-04-08  Richard Guenther  <rguenther@suse.de>
7932
7933         PR middle-end/36291
7934         * tree-dfa.c (add_referenced_var): Do not recurse into
7935         global initializers.
7936         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
7937         exposed variables.
7938         (fold_const_aggregate_ref): Likewise.
7939
7940 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
7941
7942         * recog.c (ordered_comparison_operator): New.
7943         * gensupport.c (std_preds): Add it.
7944         * doc/md.texi (Machine-Independent Predicates): Document it.
7945
7946 2009-04-08  Jan Hubicka  <jh@suse.cz>
7947
7948         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
7949         * function.h (rtl_eh): Remove exception_handler_label_map.
7950         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
7951         remove_exception_handler_label, for_each_eh_label_1): Remove.
7952         (rtl_remove_unreachable_regions): Remove.
7953         (convert_from_eh_region_ranges): Do not remove unreachable regions.
7954         (find_exception_handler_labels): Don't build the hashtable.
7955         (maybe_remove_eh_handler): Remove.
7956         (for_each_eh_label): Rewrite to walk the tree.
7957         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
7958         * except.h (maybe_remove_eh_handler): Remove.
7959         * passes.c (init_optimization_passes): Schedule second EH cleanup
7960         before out-of-ssa.
7961         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
7962         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
7963
7964 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
7965
7966         * genoutput.c (validate_optab_operands): New.
7967         (gen_insn, gen_expand): Call it.
7968
7969         * genflags.c (gen_insn): Detect misused iterators.
7970         (main): Pass line_no to gen_insn, exit with status 1 on error.
7971
7972         * genextract.c (line_no): Make global.
7973         (VEC_safe_set_locstr): Change assertion to error message.
7974         (main): Exit with status 1 on error.
7975
7976 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
7977
7978         PR c/39614
7979         PR c/39673
7980         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
7981         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
7982         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
7983         * c-convert.c (convert): Do not call fold on results of conversion
7984         functions when the result is a C_MAYBE_CONST_EXPR.
7985         * c-parser.c (c_parser_postfix_expression): Do not fold condition
7986         of __builtin_choose_expr.
7987         * c-typeck.c (remove_c_maybe_const_expr): New.
7988         (build_unary_op, build_conditional_expr, build_compound_expr,
7989         build_binary_op, c_objc_common_truthvalue_conversion): Call
7990         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
7991         integer operands.
7992
7993 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
7994
7995         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
7996         CODE to produce a new one. Add a prototype to use fold_convert_const
7997
7998 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
7999
8000         PR bootstrap/39660
8001         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
8002         mix declarations and code.
8003
8004 2009-04-08  Ben Elliston  <bje@au.ibm.com>
8005
8006         * gcc.c: Replace `CC' with `GCC' throughout.
8007
8008 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8009
8010         * doc/invoke.texi: Document Atom support.
8011
8012 2009-04-07  Jason Merrill  <jason@redhat.com>
8013
8014         PR c++/25185
8015         * c-common.h, c-common.c: Add flag_pretty_templates.
8016         * c-opts.c (c_common_handle_option): Set it.
8017         * c.opt: Add -fno-pretty-templates.
8018         * doc/invoke.texi (C++ Dialect Options): Likewise.
8019
8020 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
8021
8022         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
8023         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
8024         (ia64_expand_builtin): Likewise.
8025
8026 2009-04-07  Martin Jambor  <mjambor@suse.cz>
8027
8028         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
8029         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
8030         ADDR_EXPRS are include too.
8031
8032 2009-04-07  Richard Guenther  <rguenther@suse.de>
8033
8034         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
8035         decls are only used if passes as parameters or if they are
8036         local statics and the call is not to a builtin.
8037         (call_may_clobber_ref_p_1): Likewise.
8038
8039 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8040
8041         * expr.c (do_store_flag): Remove last argument.  Simplify code
8042         to avoid duplication of tests already done by can_compare_p.
8043         (expand_expr_real_1): Adjust caller.
8044
8045 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8046
8047         * optabs.c (can_compare_p): Test the predicate of a
8048         cbranch and cstore pattern.
8049
8050 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8051
8052         * expr.c (convert_move): Use emit_store_flag instead of
8053         "emulating" it.
8054
8055 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8056
8057         * config/i386/i386.c (ix86_compare_emitted): Remove.
8058         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
8059         ix86_compare_op0 like ix86_compare_emitted used to be handled.
8060         * config/i386/i386.h (ix86_compare_emitted): Remove.
8061         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
8062         instead of ix86_compare_emitted.
8063         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
8064
8065 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
8066
8067         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
8068         Add t-sysroot-suffix to tmake_file.
8069         * config/print-sysroot-suffix.sh: New file.
8070         * config/t-sysroot-suffix: New file.
8071
8072 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8073
8074         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
8075         as the latter produces a warning when the target does not support
8076         infinity.
8077
8078 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8079
8080         * dfp.c: Replace type punning assignments with memcpy throughout.
8081         * Makefile.in (dfp.o-warn): Remove.
8082
8083 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
8084
8085         PR target/39634
8086         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
8087         Include soft-fp/t-softfp after rs6000/t-linux64.
8088
8089 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8090
8091         * stor-layout.c (set_sizetype): Use the full precision of their
8092         machine mode for bitsize types.
8093
8094 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
8095
8096         * config/i386/i386.md: Revert 2 accidental checkins.
8097
8098 2009-04-06  Joey Ye  <joey.ye@intel.com>
8099             Xuepeng Guo  <xuepeng.guo@intel.com>
8100             H.J. Lu  <hongjiu.lu@intel.com>
8101
8102         Atom pipeline model, tuning and insn selection.
8103         * config.gcc (atom): Add atom config options and target.
8104
8105         * config/i386/atom.md: New.
8106
8107         * config/i386/i386.c (atom_cost): New cost.
8108         (m_ATOM): New macro flag.
8109         (initial_ix86_tune_features): Set m_ATOM.
8110         (x86_accumulate_outgoing_args): Likewise.
8111         (x86_arch_always_fancy_math_387): Likewise.
8112         (processor_target): Add Atom cost.
8113         (cpu_names): Add Atom cpu name.
8114         (override_options): Set Atom ISA.
8115         (ix86_issue_rate): New case PROCESSOR_ATOM.
8116         (ix86_adjust_cost): Likewise.
8117
8118         * config/i386/i386.h (TARGET_ATOM): New target macro.
8119         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
8120         (TARGET_OPT_AGU): New target option.
8121         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
8122         (processor_type): Add PROCESSOR_ATOM.
8123
8124         * config/i386/i386.md (cpu): Add new value "atom".
8125         (use_carry, movu): New attr.
8126         (atom.md): Include atom.md.
8127         (adddi3_carry_rex64): Set attr "use_carry".
8128         (addqi3_carry): Likewise.
8129         (addhi3_carry): Likewise.
8130         (addsi3_carry): Likewise.
8131         (*addsi3_carry_zext): Likewise.
8132         (subdi3_carry_rex64): Likewise.
8133         (subqi3_carry): Likewise.
8134         (subhi3_carry): Likewise.
8135         (subsi3_carry): Likewise.
8136         (x86_movdicc_0_m1_rex64): Likewise.
8137         (*x86_movdicc_0_m1_se): Likewise.
8138         (x86_movsicc_0_m1): Likewise.
8139         (*x86_movsicc_0_m1_se): Likewise.
8140         (*adddi_1_rex64): Emit add insn as much as possible.
8141         (*addsi_1): Likewise.
8142         (return_internal): Set atom_unit.
8143         (return_internal_long): Likewise.
8144         (return_pop_internal): Likewise.
8145         (*rcpsf2_sse): Set atom_sse_attr attr.
8146         (*qrt<mode>2_sse): Likewise.
8147         (*prefetch_sse): Likewise.
8148
8149         * config/i386/i386-c.c (ix86_target_macros_internal): New case
8150         PROCESSOR_ATOM.
8151         (ix86_target_macros_internal): Likewise.
8152
8153         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
8154         (*prefetch_sse_rex): Likewise.
8155         (sse_rcpv4sf2): Likewise.
8156         (sse_vmrcpv4sf2): Likewise.
8157         (sse_sqrtv4sf2): Likewise.
8158         (<sse>_vmsqrt<mode>2): Likewise.
8159         (sse_ldmxcsr): Likewise.
8160         (sse_stmxcsr): Likewise.
8161         (*sse_sfence): Likewise.
8162         (sse2_clflush): Likewise.
8163         (*sse2_mfence): Likewise.
8164         (*sse2_lfence): Likewise.
8165         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
8166         (<sse>_movup<ssemodesuffixf2c>): Likewise.
8167         (avx_movdqu<avxmodesuffix>): Likewise.
8168         (avx_lddqu<avxmodesuffix>): Likewise.
8169         (sse2_movntv2di): Change attr "type" to "ssemov".
8170         (sse2_movntsi): Likewise.
8171         (rsqrtv8sf2): Change attr "type" to "sseadd".
8172         (sse3_addsubv2df3): Set attr "atom_unit".
8173         (sse3_h<plusminus_insn>v4sf3): Likewise.
8174         (*sse2_pmaddwd): Likewise.
8175         (*vec_extractv2di_1_rex64): Likewise.
8176         (*vec_extractv2di_1_avx): Likewise.
8177         (sse2_psadbw): Likewise.
8178         (ssse3_phaddwv8hi3): Likewise.
8179         (ssse3_phaddwv4hi3): Likewise.
8180         (ssse3_phadddv4si3): Likewise.
8181         (ssse3_phadddv2si3): Likewise.
8182         (ssse3_phaddswv8hi3): Likewise.
8183         (ssse3_phaddswv4hi3): Likewise.
8184         (ssse3_phsubwv8hi3): Likewise.
8185         (ssse3_phsubwv4hi3): Likewise.
8186         (ssse3_phsubdv4si3): Likewise.
8187         (ssse3_phsubdv2si3): Likewise.
8188         (ssse3_phsubswv8hi3): Likewise.
8189         (ssse3_phsubswv4hi3): Likewise.
8190         (ssse3_pmaddubsw128): Likewise.
8191         (sse3_pmaddubsw: Likewise.
8192         (ssse3_palignrti): Likewise.
8193         (ssse3_palignrdi): Likewise.
8194
8195 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
8196
8197         * doc/install.texi (Specific): Fix two cross-references to MinGW.
8198
8199 2009-04-06  Richard Guenther  <rguenther@suse.de>
8200
8201         PR tree-optimization/28868
8202         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
8203         of which PHI results we inserted.
8204         (insert_into_preds_of_block): Record inserted PHIs.
8205         (eliminate): Eliminate redundant PHI nodes.
8206         (init_pre): Init inserted_phi_names.
8207
8208 2009-04-06  Richard Guenther  <rguenther@suse.de>
8209
8210         PR tree-optimization/39643
8211         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
8212         IMAGPART_EXPRs of complex constants.
8213         (execute_fold_all_builtins): If we folded a call queue
8214         TODO_update_address_taken.
8215
8216 2009-04-06  Jan Hubicka  <jh@suse.cz>
8217
8218         PR middle-end/39659
8219         * except.c (remove_unreachable_regions): Propagate may_contain_throw
8220         flag.
8221
8222 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
8223
8224         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
8225         delay slot.
8226         (ic_invalidate_array): Likewise.
8227
8228 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
8229
8230         * calls.c (emit_library_call_value_1): Fix a problem with parameter
8231         alignment for library calls.
8232
8233 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
8234
8235         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
8236         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
8237         * config/i386/mingw-stdint.h:  New file.
8238
8239 2009-04-05  Richard Guenther  <rguenther@suse.de>
8240
8241         PR tree-optimization/39648
8242         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
8243         our &A vs. &A[0] IL deficiencies.
8244
8245 2009-04-04  Jan Hubicka  <jh@suse.cz>
8246
8247         * except.c (sjlj_find_directly_reachable_regions): Be ready for
8248         removed toplevel regions.
8249         (sjlj_mark_call_sites): Likewise.
8250
8251 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
8252
8253         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
8254         (cygwin tm clause use_gcc_stdint):  Set to wrap.
8255         * config/i386/cygwin-stdint.h:  New file.
8256
8257 2009-04-04  Richard Guenther  <rguenther@suse.de>
8258
8259         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
8260         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
8261         single-argument PHIs if we are in loop-closed SSA form.
8262         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
8263         for the pre-condition.
8264         (slpeel_tree_peel_loop_to_edge): Likewise.
8265         (vect_build_loop_niters): Take an optional sequence to append stmts.
8266         (vect_generate_tmps_on_preheader): Likewise.
8267         (vect_do_peeling_for_loop_bound): Take extra guards for the
8268         pre-condition.
8269         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
8270         the cost model check.
8271         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
8272         guards if we are going to peel.  Do not apply versioning in that case.
8273         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
8274         (vect_do_peeling_for_loop_bound): Likewise.
8275         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
8276         loop bound only record extra pre-conditions, do not apply loop
8277         versioning.
8278
8279 2009-04-04  Richard Guenther  <rguenther@suse.de>
8280
8281         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
8282         renaming code.
8283
8284 2009-04-04  Jan Hubicka  <jh@suse.cz>
8285
8286         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
8287         last_basic_block for size of bb->index indexed array.
8288         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
8289         compute_out, link_btr_uses, build_btr_def_use_webs,
8290         build_btr_def_use_webs, migrate_btr_defs): Likewise.
8291
8292 2009-04-04  Jan Hubicka  <jh@suse.cz>
8293
8294         * except.c (remove_eh_handler_and_replace): Break out from ...
8295         (remove_eh_handler): ... here.
8296         (bring_to_root): New function.
8297         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
8298         handled ones, bring others to root of tree.
8299
8300 2009-04-04  Jan Hubicka  <jh@suse.cz>
8301
8302         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
8303         (all_phis_safe_to_merge): New function.
8304         (update_info): New structure.
8305         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
8306         (cleanup_empty_eh): Update SSA if possible.
8307
8308 2009-04-04  Richard Guenther  <rguenther@suse.de>
8309
8310         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
8311         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
8312         (append_vuse): Likewise.
8313
8314 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
8315
8316         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
8317         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
8318         instead of REG_UNSAVED for DW_CFA_undefined.
8319         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
8320         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
8321         outermost frame.
8322
8323 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
8324
8325         PR target/39501
8326         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
8327         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
8328         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
8329
8330 2009-04-04  Richard Guenther  <rguenther@suse.de>
8331
8332         PR tree-optimization/8781
8333         PR tree-optimization/37892
8334         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
8335         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
8336         (valueize_refs): Call it for *& valueizations.
8337         (shared_reference_ops_from_ref): Rename to ...
8338         (valueize_shared_reference_ops_from_ref): ... this and valueize.
8339         (shared_reference_ops_from_call): Rename to ...
8340         (valueize_shared_reference_ops_from_call): ... this and valueize.
8341         (vn_reference_lookup): Update.
8342         (visit_reference_op_call): Likewise.
8343         * tree-ssa-pre.c (phi_translate_1): Fold *&.
8344         (eliminate): Value-replace the call address in call statements.
8345
8346 2009-04-04  Richard Guenther  <rguenther@suse.de>
8347
8348         PR tree-optimization/39636
8349         * tree-ssa-forwprop.c
8350         (forward_propagate_addr_into_variable_array_index): Check for
8351         GIMPLE_ASSIGN before accessing the rhs code.
8352
8353 2009-04-03  Jason Merrill  <jason@redhat.com>
8354
8355         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
8356
8357 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
8358
8359         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
8360         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
8361         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
8362         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
8363         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
8364         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
8365         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
8366         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
8367         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
8368         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
8369         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
8370         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
8371         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
8372         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
8373         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
8374         Use fr_reg_or_fp01_operand instead of fr_register_operand
8375
8376         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
8377         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
8378         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
8379
8380 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
8381
8382         PR rtl-optimization/39607
8383         PR rtl-optimization/39631
8384
8385         Revert:
8386
8387         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
8388         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
8389         instead of DF_LR_OUT.
8390         * ira-lives.c (process_bb_node_lives): Ditto.
8391         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
8392         instead of DF_LR_{OUT,IN}.
8393         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
8394         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
8395
8396 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
8397
8398         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
8399         (execute_lower_omp): Always run but take the short way out if -fopenmp
8400         is not given.
8401         (gate_lower_omp): Remove, forcing the pass manager to always run the
8402         pass and always set PROP_gimple_lomp.
8403         (pass_lower_omp): Remove gate function.
8404         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
8405         PROP_trees.  Instead, require it.
8406         * ipa-cp.c (pass_ipa_cp): Likewise.
8407         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
8408         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
8409         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
8410         and PROP_gimple_leh.
8411
8412 2009-04-03  Richard Guenther  <rguenther@suse.de>
8413
8414         PR middle-end/13146
8415         PR tree-optimization/23940
8416         PR tree-optimization/33237
8417         PR middle-end/33974
8418         PR middle-end/34093
8419         PR tree-optimization/36201
8420         PR tree-optimization/36230
8421         PR tree-optimization/38049
8422         PR tree-optimization/38207
8423         PR tree-optimization/38230
8424         PR tree-optimization/38301
8425         PR tree-optimization/38585
8426         PR middle-end/38895
8427         PR tree-optimization/38985
8428         PR tree-optimization/39299
8429         * tree-ssa-structalias.h: Remove.
8430         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
8431         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
8432         (struct vuse_element_d): Remove.
8433         (struct vuse_vec_d): Likewise.
8434         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
8435         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
8436         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
8437         VUSE_ELEMENT_VAR): Likewise.
8438         (struct voptype_d): Likewise.
8439         (NUM_VOP_FREE_BUCKETS): Likewise.
8440         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
8441         (struct stmt_operands_d): Remove.
8442         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
8443         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
8444         VDEF_NUM, VDEF_VECT): Likewise.
8445         (copy_virtual_operands): Remove.
8446         (operand_build_cmp): Likewise.
8447         (create_ssa_artificial_load_stmt): Likewise.
8448         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
8449         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
8450         vuse_index and mayuse_index members.  Pack and move done and iter_type
8451         members to the front.
8452         (SSA_OP_VMAYUSE): Remove.
8453         (SSA_OP_VIRTUAL_USES): Adjust.
8454         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
8455         (unlink_stmt_vdef): Declare.
8456         (add_to_addressable_set): Remove.
8457         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
8458         (vrp_visit_stmt): Likewise.
8459         * doc/tree-ssa.texi (Alias analysis): Update.
8460         * doc/invoke.texi (max-aliased-vops): Remove docs.
8461         (avg-aliased-vops): Likewise.
8462         * tree-into-ssa.c (syms_to_rename): Remove.
8463         (need_to_update_vops_p): Likewise.
8464         (need_to_initialize_update_ssa_p): Rename to ...
8465         (update_ssa_initialized_fn): ... this.  Track function we are
8466         initialized for.
8467         (symbol_marked_for_renaming): Simplify.
8468         (add_new_name_mapping): Do not set need_to_update_vops_p.
8469         (dump_currdefs): Use SYMS_TO_RENAME.
8470         (rewrite_update_stmt): Always walk all uses/defs.
8471         (dump_update_ssa): Adjust.
8472         (init_update_ssa): Take function argument.  Track what we are
8473         initialized for.
8474         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
8475         (create_new_def_for): Initialize for cfun, assert we are initialized
8476         for cfun.
8477         (mark_sym_for_renaming): Simplify.
8478         (mark_set_for_renaming): Do not initialize update-ssa.
8479         (need_ssa_update_p): Simplify.  Take function argument.
8480         (name_mappings_registered_p): Assert we ask for the correct function.
8481         (name_registered_for_update_p): Likewise.
8482         (ssa_names_to_replace): Likewise.
8483         (release_ssa_name_after_update_ssa): Likewise.
8484         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
8485         (dump_decl_set): Do not print a newline.
8486         (debug_decl_set): Do it here.
8487         (dump_update_ssa): And here.
8488         * tree-ssa-loop-im.c (move_computations): Adjust.
8489         (movement_possibility): Likewise.
8490         (determine_max_movement): Likewise.
8491         (gather_mem_refs_stmt): Likewise.
8492         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
8493         or NAME_MEMORY_TAG.
8494         * tree-complex.c (update_all_vops): Remove.
8495         (expand_complex_move): Adjust.
8496         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
8497         Simplify test for memory referencing statement.  Exclude
8498         non-invariant ADDR_EXPRs.
8499         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
8500         * tree-loop-distribution.c (generate_memset_zero): Adjust.
8501         (rdg_flag_uses): Likewise.
8502         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
8503         related code.
8504         (tree_optimize_tail_calls_1): Also split the
8505         edge from the entry block if we have degenerate PHI nodes in
8506         the first basic block.
8507         * tree.c (init_ttree): Remove memory-tag related code.
8508         (tree_code_size): Likewise.
8509         (tree_node_structure): Likewise.
8510         (build7_stat): Re-write to be build6_stat.
8511         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
8512         (SSA_VAR_P): Adjust.
8513         (struct tree_memory_tag): Remove.
8514         (struct tree_memory_partition_tag): Likewise.
8515         (union tree_node): Adjust.
8516         (build7): Re-write to be build6.
8517         * tree-pass.h (pass_reset_cc_flags): Remove.
8518         (TODO_update_address_taken): New flag.
8519         (pass_simple_dse): Remove.
8520         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
8521         * params.h (MAX_ALIASED_VOPS): Remove.
8522         (AVG_ALIASED_VOPS): Likewise.
8523         * omp-low.c (expand_omp_taskreg): Update SSA form.
8524         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
8525         aliases the lhs in a copy stmt.
8526         * tree-ssa-dse.c (struct address_walk_data): Remove.
8527         (memory_ssa_name_same): Likewise.
8528         (memory_address_same): Likewise.
8529         (get_kill_of_stmt_lhs): Likewise.
8530         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
8531         unused stores.  Look through PHI nodes into post-dominated regions.
8532         (dse_optimize_stmt): Simplify.  Properly remove stores.
8533         (tree_ssa_dse): Compute dominators.
8534         (execute_simple_dse): Remove.
8535         (pass_simple_dse): Likewise.
8536         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
8537         gimple_loaded_syms and gimple_stored_syms computation.
8538         * toplev.c (dump_memory_report): Dump alias and pta stats.
8539         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
8540         (vn_reference_eq): Likewise.
8541         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
8542         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
8543         valueize_vuses): Remove.
8544         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
8545         (get_def_ref_stmt_vuse): ... this.
8546         (vn_reference_lookup_2): New function.
8547         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
8548         walking equivalent vuses.  Simplify.
8549         (vn_reference_lookup): Likewise.
8550         (vn_reference_insert): Likewise.
8551         (vn_reference_insert_pieces): Likewise.
8552         (visit_reference_op_call): Simplify.
8553         (visit_reference_op_load): Likewise.
8554         (visit_reference_op_store): Likewise.
8555         (init_scc_vn): Remove shared_lookup_vuses initialization.
8556         (free_scc_vn): Remove shared_lookup_vuses freeing.
8557         (sort_vuses, sort_vuses_heap): Remove.
8558         (get_ref_from_reference_ops): Export.
8559         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
8560         vector with single vuse pointer.
8561         (vn_reference_lookup_pieces, vn_reference_lookup,
8562         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
8563         (shared_vuses_from_stmt): Remove.
8564         (get_ref_from_reference_ops): Declare.
8565         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
8566         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8567         memory-tag related code.
8568         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
8569         (likely_value): Add comment, skip static-chain of call statements.
8570         (surely_varying_stmt_p): Adjust.
8571         (gimplify_and_update_call_from_tree): Likewise.
8572         (execute_fold_all_builtins): Do not rebuild alias info.
8573         (gimplify_and_update_call_from_tree): Properly update VOPs.
8574         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
8575         (copy_ref_info): Remove memory-tag related code.
8576         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
8577         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
8578         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
8579         computation.
8580         * tree-ssa-dom.c (gimple_p): Remove typedef.
8581         (eliminate_redundant_computations): Adjust.
8582         (record_equivalences_from_stmt): Likewise.
8583         (avail_expr_hash): Likewise.
8584         (avail_expr_eq): Likewise.
8585         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
8586         (stmt_makes_single_load): Likewise.
8587         (stmt_makes_single_store): Likewise.
8588         * tree-ssa-alias.c: Rewrite completely.
8589         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
8590         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
8591         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
8592         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
8593         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
8594         Remove public functions.
8595         (pass_reset_cc_flags): Remove.
8596         (pass_build_alias): Move ...
8597         * tree-ssa-structalias.c (pass_build_alias): ... here.
8598         * tree-ssa-alias.c (may_be_aliased): Move ...
8599         * tree-flow-inline.h (may_be_aliased): ... here.
8600         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
8601         count_uses_and_derefs): Move ...
8602         * gimple.c: ... here.
8603         * gimple.h (count_uses_and_derefs): Declare.
8604         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
8605         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
8606         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
8607         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
8608         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
8609         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
8610         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
8611         New functions.
8612         * tree-dfa.c (refs_may_alias_p): Move ...
8613         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
8614         * tree-ssa-alias.h: New file.
8615         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
8616         (statement_sink_location): Likewise.
8617         * opts.c (decode_options): Do not adjust max-aliased-vops or
8618         avg-aliased-vops values.
8619         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
8620         (TV_CALL_CLOBBER): Likewise.
8621         (TV_FLOW_SENSITIVE): Likewise.
8622         (TV_FLOW_INSENSITIVE): Likewise.
8623         (TV_MEMORY_PARTITIONING): Likewise.
8624         (TV_ALIAS_STMT_WALK): New timevar.
8625         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
8626         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
8627         (get_address_description): Remove memory-tag related code.
8628         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
8629         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
8630         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
8631         and immediate uses in statements.  Document.
8632         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
8633         (dump_symbols): Remove.
8634         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
8635         * alias.c (get_deref_alias_set): New function split out from ...
8636         (get_alias_set): ... here.
8637         * alias.h (get_deref_alias_set): Declare.
8638         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
8639         type parameter.  Remove restrict pointer handling.  Create a
8640         ref-all pointer in case type-based alias sets do not conflict.
8641         (vect_analyze_data_refs): Remove SMT related code.
8642         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
8643         (vectorizable_load): Likewise.
8644         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
8645         (DR_SYMBOL_TAG, DR_VOPS): Remove.
8646         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
8647         Ignore vops and SMTs.
8648         (dr_analyze_alias): Likewise..
8649         (free_data_ref): Likewise.
8650         (create_data_ref): Likewise.
8651         (analyze_all_data_dependences): Likewise.
8652         (get_references_in_stmt): Adjust.
8653         * tree-flow-inline.h (gimple_aliases_computed_p,
8654         gimple_addressable_vars, gimple_call_clobbered_vars,
8655         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
8656         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
8657         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
8658         gimple_mem_ref_stats): Remove.
8659         (gimple_vop): New function.
8660         (op_iter_next_use): Remove vuses and mayuses cases.
8661         (op_iter_next_def): Remove vdefs case.
8662         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
8663         (clear_and_done_ssa_iter): Do not set removed fields.
8664         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
8665         Assert we are not iterating over vuses or vdefs if not also
8666         iterating over uses or defs.
8667         (op_iter_init_use): Likewise.
8668         (op_iter_init_def): Likewise.
8669         (op_iter_next_vdef): Remove.
8670         (op_iter_next_mustdef): Likewise.
8671         (op_iter_init_vdef): Likewise.
8672         (compare_ssa_operands_equal): Likewise.
8673         (link_use_stmts_after): Handle vuse operand.
8674         (is_call_used): Use is_call_clobbered.
8675         (is_call_clobbered): Global variables are always call clobbered,
8676         query the call-clobbers bitmap.
8677         (mark_call_clobbered): Ignore global variables.
8678         (clear_call_clobbered): Likewise.
8679         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
8680         virtual operands sanity check.
8681         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
8682         Remove.
8683         (TARGET_MEM_REF): Remove TMR_TAG operand.
8684         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
8685         Remove call-clobber related code.
8686         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
8687         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
8688         partitions or escape reason.
8689         (get_single_def_stmt, get_single_def_stmt_from_phi,
8690         get_single_def_stmt_with_phi): Remove.
8691         (dump_referenced_vars): Tidy.
8692         (get_ref_base_and_extent): Allow bare decls.
8693         (collect_dfa_stats): Adjust.
8694         * graphite.c (rename_variables_in_stmt): Adjust.
8695         (graphite_copy_stmts_from_block): Likewise.
8696         (translate_clast): Likewise.
8697         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
8698         (EXPR_DIES): New.
8699         (translate_vuse_through_block): Use the oracle.
8700         (phi_translate_1): Adjust.
8701         (value_dies_in_block_x): Use the oracle.  Cache the outcome
8702         in EXPR_DIES.
8703         (valid_in_sets): Check if the VUSE for
8704         a REFERENCE is available.
8705         (eliminate): Do not remove stmts during elimination,
8706         instead queue and remove them afterwards.
8707         (do_pre): Do not rebuild alias info.
8708         (pass_pre): Run TODO_rebuild_alias before PRE.
8709         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
8710         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
8711         (mark_all_v_defs_stmt): Remove.
8712         (mark_all_v_defs_seq): Adjust.
8713         (sra_replace): Likewise.
8714         (scalarize_use): Likewise.
8715         (scalarize_copy): Likewise.
8716         (scalarize_init): Likewise.
8717         (scalarize_ldst): Likewise.
8718         (todoflags): Remove.
8719         (tree_sra): Do not rebuild alias info.
8720         (tree_sra_early): Adjust.
8721         (pass_sra): Run TODO_update_address_taken before SRA.
8722         * tree-predcom.c (set_alias_info): Remove.
8723         (prepare_initializers_chain): Do not call it.
8724         (mark_virtual_ops_for_renaming): Adjust.
8725         (mark_virtual_ops_for_renaming_list): Remove.
8726         (initialize_root_vars): Adjust.
8727         (initialize_root_vars_lm): Likewise.
8728         (prepare_initializers_chain): Likewise.
8729         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
8730         (may_propagate_copy_into_stmt): Likewise.
8731         (merge_alias_info): Do nothing for now.
8732         (propagate_tree_value_into_stmt): Adjust.
8733         (stmt_may_generate_copy): Likewise.
8734         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
8735         not mark symbols for renaming.
8736         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
8737         with the same statement, make sure to update the new pointed-to one.
8738         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
8739         call statements, do not mark symbols for renaming.
8740         (mark_operand_necessary): Dump something.
8741         (ref_may_be_aliased): New function.
8742         (mark_aliased_reaching_defs_necessary_1): New helper function.
8743         (mark_aliased_reaching_defs_necessary): Likewise.
8744         (mark_all_reaching_defs_necessary_1): Likewise.
8745         (mark_all_reaching_defs_necessary): Likewise.
8746         (propagate_necessity): Do not process virtual PHIs.  For
8747         non-aliased loads mark all reaching definitions as necessary.
8748         For aliased loads and stores mark the immediate dominating
8749         aliased clobbers as necessary.
8750         (visited): New global static.
8751         (perform_tree_ssa_dce): Free visited bitmap after propagating
8752         necessity.
8753         (remove_dead_phis): Perform simple dead virtual PHI removal.
8754         (remove_dead_stmt): Properly unlink virtual operands when
8755         removing stores.
8756         (eliminate_unnecessary_stmts): Schedule PHI removal after
8757         stmt removal.
8758         * tree-ssa-ter.c (is_replaceable_p): Adjust.
8759         (process_replaceable): Likewise.
8760         (find_replaceable_in_bb): Likewise.
8761         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
8762         based on the single gimple vop.
8763         (verify_flow_insensitive_alias_info): Remove.
8764         (verify_flow_sensitive_alias_info): Likewise.
8765         (verify_call_clobbering): Likewise.
8766         (verify_memory_partitions): Likewise.
8767         (verify_alias_info): Likewise.
8768         (verify_ssa): Adjust..
8769         (execute_update_addresses_taken): Export.  Update SSA
8770         manually.  Optimize only when optimizing.  Use a local bitmap.
8771         (pass_update_address_taken): Remove TODO_update_ssa, add
8772         TODO_dump_func.
8773         (pass_update_address_taken): Just use TODO_update_address_taken.
8774         (init_tree_ssa): Do not initialize addressable_vars.
8775         (verify_ssa): Verify new VUSE / VDEF properties.
8776         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
8777         Do not call verify_alias_info.
8778         (delete_tree_ssa): Clear the VUSE, VDEF operands.
8779         Do not free the loaded and stored syms bitmaps.  Reset the escaped
8780         and callused solutions.  Do not free addressable_vars.
8781         Remove memory-tag related code.
8782         (warn_uninitialized_var): Aliases are always available.
8783         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
8784         * lambda-code.c (can_put_in_inner_loop): Adjust.
8785         (can_put_after_inner_loop): Likewise.
8786         (perfect_nestify): Likewise.
8787         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
8788         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
8789         (vectorizable_conversion): Do not mark symbols for renaming.
8790         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
8791         (expand_call_inline): Unlink the calls virtual operands before
8792         replacing it.
8793         (tree_function_versioning): Do not call update_ssa if we are not
8794         updating clones.  Simplify.
8795         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
8796         (propagate_with_phi): Likewise..
8797         * tree-outof-ssa.c (create_temp): Remove memory tag and call
8798         clobber code.  Assert we are not aliased or global.
8799         * tree-flow.h: Include tree-ssa-alias.h
8800         (enum escape_type): Remove.
8801         (struct mem_sym_stats_d): Likewise.
8802         (struct mem_ref_stats_d): Likewise.
8803         (struct gimple_df): Add vop member.  Remove global_var,
8804         call_clobbered_vars, call_used_vars, addressable_vars,
8805         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
8806         escaped and callused members.
8807         (struct ptr_info_def): Remove all members, add points-to solution
8808         member pt.
8809         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
8810         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
8811         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
8812         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
8813         (tree-ssa-alias.o): Likewise.
8814         (toplev.o): Add tree-ssa-alias.h
8815         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
8816         * gimple.c (gimple_set_bb): Fix off-by-one error.
8817         (is_gimple_reg): Do not handle memory tags.
8818         (gimple_copy): Also copy virtual operands.
8819         Delay updating the statement.  Do not reset loaded and stored syms.
8820         (gimple_set_stored_syms): Remove.
8821         (gimple_set_loaded_syms): Likewise.
8822         (gimple_call_copy_skip_args): Copy the virtual operands
8823         and mark the new statement modified.
8824         * tree-ssa-structalias.c (may_alias_p): Remove.
8825         (set_uids_in_ptset): Take the alias set to prune with as
8826         parameter.  Fold in the alias test of may_alias_p.
8827         (compute_points_to_sets): Compute whether a ptr is dereferenced
8828         in a local sbitmap.
8829         (process_constraint): Deal with &ANYTHING on the lhs, reject all
8830         other ADDRESSOF constraints on the lhs.
8831         (get_constraint_for_component_ref): Assert that we don't get
8832         ADDRESSOF constraints from the base of the reference.
8833         Properly generate UNKNOWN_OFFSET for DEREF if needed.
8834         (struct variable_info): Remove collapsed_to member.
8835         (get_varinfo_fc): Remove.
8836         (new_var_info): Do not set collapsed_to.
8837         (dump_constraint): Do not follow cycles.
8838         (dump_constraint_graph): Likewise.
8839         (build_pred_graph): Likewise.
8840         (build_succ_graph): Likewise.
8841         (rewrite_constraints): Likewise.
8842         (do_simple_structure_copy): Remove.
8843         (do_rhs_deref_structure_copy): Remove.
8844         (do_lhs_deref_structure_copy): Remove.
8845         (collapse_rest_of_var): Remove.
8846         (do_structure_copy): Re-implement.
8847         (pta_stats): New global variable.
8848         (dump_pta_stats): New function.
8849         (struct constraint_expr): Make offset signed.
8850         (UNKNOWN_OFFSET): Define special value.
8851         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
8852         (solution_set_expand): New helper function split out from ...
8853         (do_sd_constraint): ... here.
8854         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
8855         (do_ds_constraint): Likewise.
8856         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
8857         and CALLUSED = *CALLUSED.
8858         (set_union_with_increment): Make inc argument signed.
8859         (type_safe): Remove.
8860         (get_constraint_for_ptr_offset): Handle unknown and negative
8861         constant offsets.
8862         (first_vi_for_offset): Handle offsets before start.  Bail
8863         out early for offsets beyond the variable extent.
8864         (first_or_preceding_vi_for_offset): New function.
8865         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
8866         Together with ESCAPED = *ESCAPED this properly computes reachability.
8867         (find_what_var_points_to): New function.
8868         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
8869         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
8870         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
8871         pt_solutions_intersect): New functions.
8872         (compute_call_used_vars): Remove.
8873         (compute_may_aliases): New main entry into PTA computation.
8874         * gimple.h (gimple_p): New typedef.
8875         (struct gimple_statement_base): Remove references_memory_p.
8876         (struct gimple_statement_with_memory_ops_base): Remove
8877         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
8878         members.
8879         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
8880         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
8881         gimple_set_references_memory): Remove.
8882         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
8883         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
8884         New functions.
8885         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
8886         (verify_expr): Allow RESULT_DECL.
8887         (gimple_duplicate_bb): Do not copy virtual operands.
8888         (gimple_duplicate_sese_region): Adjust.
8889         (gimple_duplicate_sese_tail): Likewise.
8890         (mark_virtual_ops_in_region): Remove.
8891         (move_sese_region_to_fn): Do not call it.
8892         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
8893         and pass_simple_dse.
8894         (execute_function_todo): Handle TODO_update_address_taken,
8895         call execute_update_addresses_taken for TODO_rebuild_alias.
8896         (execute_todo): Adjust.
8897         (execute_one_pass): Init dump files early.
8898         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
8899         call-clobbered.
8900         (create_general_new_stmt): Clear vops.
8901         * tree-ssa-reassoc.c (get_rank): Adjust.
8902         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
8903         symbols for renaming.
8904         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
8905         (PARAM_AVG_ALIASED_VOPS): Likewise.
8906         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
8907         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
8908         * tree-ssa-operands.c: Simplify for new virtual operand representation.
8909         (operand_build_cmp, copy_virtual_operands,
8910         create_ssa_artificial_load_stmt, add_to_addressable_set,
8911         gimple_add_to_addresses_taken): Remove public functions.
8912         (unlink_stmt_vdef): New function.
8913
8914 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
8915
8916         * config.gcc (powerpc-*-linux*): Merge variants.
8917
8918 2009-04-02  Chao-ying Fu  <fu@mips.com>
8919             James Grosbach  <james.grosbach@microchip.com>
8920
8921         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
8922         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
8923         cop0_sp_offset.
8924         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
8925         keep_interrupts_masked_p, use_debug_exception_return_p.
8926         (mips_attribute_table): Add interrupt, use_shadow_register_set,
8927         keep_interrupts_masked, use_debug_exception_return.
8928         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
8929         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
8930         New functions.
8931         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
8932         (mips_print_operand): Process COP0 registers to print $0 .. $31
8933         correctly for GAS to process.
8934         (mips_interrupt_extra_call_saved_reg_p): New function.
8935         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
8936         extra registers.
8937         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
8938         (mips_compute_frame_info): Add supports for interrupt context that
8939         includes doubleword accumulators and COP0 registers.
8940         (mips_for_each_saved_acc): New function.
8941         (mips_for_each_saved_gpr_and_fpr): Change the function name from
8942         mips_for_each_saved_reg.
8943         (mips_save_reg): Save accumulators.
8944         (mips_kernel_reg_p): A new for_each_rtx callback.
8945         (mips_expand_prologue): Support interrupt handlers.
8946         (mips_restore_reg): Restore accumulators.
8947         (mips_expand_epilogue): Support interrupt handlers.
8948         (mips_can_use_return_insn): Return false for interrupt handlers.
8949         (mips_epilogue_uses): New function.
8950         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
8951         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
8952         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
8953         cop0_move): New instructions.
8954         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
8955         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
8956         defines.
8957         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
8958         New defines.
8959         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
8960         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
8961         interrupt handlers, we use K0 as the temporary register.
8962         (EPILOGUE_USES): Change to a function call.
8963         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
8964         handlers, we use K0 as the temporary register.
8965
8966         * doc/extend.texi (Function Attributes): Document interrupt,
8967         use_shadow_register_set, keep_interrupts_masked,
8968         use_debug_exception_return for MIPS attributes.
8969
8970 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
8971
8972         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
8973         Remove a number of t-files from tmake_file.
8974         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
8975         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
8976         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
8977         target_prototype, not TARGET_PROTOTYPE.
8978         (LINK_OS_GNU_SPEC): Define.
8979         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
8980         and darwin-ldoubdle.c.
8981
8982 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
8983
8984         PR driver/39293
8985         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
8986         (cpp_options): Ditto.
8987         (default_compilers): Ditto.
8988         (display_help): Ditto.
8989         (process_command): Ditto.
8990         (do_spec_1): Ditto.
8991         (set_input): Use lbasename instead of duplicate code.
8992         (save_temps_prefix): New static for -save-temps=obj.
8993         (save_temps_length): Ditto.
8994
8995         * doc/invoke.texi (-save-temps=obj): Document new variant to
8996         -save-temps switch.
8997
8998 2009-04-02  Jeff Law  <law@redhat.com>
8999
9000         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
9001         variable.
9002
9003 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9004
9005         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
9006         * configure: Regenerated.
9007
9008 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9009
9010         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
9011         share the argument list.
9012
9013 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9014
9015         Merge
9016
9017         2009-02-12  Diego Novillo  <dnovillo@google.com>
9018
9019         * varpool.c (debug_varpool): New.
9020         * cgraph.h (debug_varpool): Declare.
9021
9022 2009-04-02  Jan Hubicka  <jh@suse.cz>
9023
9024         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
9025         pass.
9026
9027 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9028
9029         * config/i386/i386.c (ix86_abi): Move initialization to ...
9030         (override_options): Here.
9031
9032 2009-04-02  Christian Bruel  <christian.bruel@st.com>
9033
9034         * config/sh/sh.c (sh_dwarf_register_span): New function.
9035         (TARGET_DWARF_REGISTER_SPAN): Define.
9036         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
9037
9038 2009-04-02  Ira Rosen  <irar@il.ibm.com>
9039
9040         PR tree-optimization/39595
9041         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
9042         interleaved loads group is not  greater than the SLP group size.
9043
9044 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9045
9046         * builtins.c (is_builtin_name): New.
9047         (called_as_built_in): Use is_builtin_name.
9048         * tree.h (is_builtin_name): New.
9049         * varasm.c (incorporeal_function_p): Use is_builtin_name
9050
9051 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
9052
9053         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
9054
9055 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
9056
9057         PR c++/26693
9058         * c-decl.c (clone_underlying_type): Move this ...
9059         * c-common.c (set_underlying_type): ... here.
9060         Also, make sure the function properly sets TYPE_STUB_DECL() on
9061         the newly created typedef variant type.
9062         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
9063         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
9064         points.
9065
9066 2009-04-02  Richard Guenther  <rguenther@suse.de>
9067
9068         PR tree-optimization/37221
9069         * tree-flow.h (degenerate_phi_result): Declare.
9070         * tree-ssa-dom.c (degenerate_phi_result): Export.
9071         * tree-scalar-evolution.c (analyze_initial_condition): If
9072         the initial condition is defined by a degenerate PHI node
9073         use the degenerate value.
9074
9075 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
9076
9077         PR rtl-optimization/39588
9078         * combine.c (merge_outer_ops): Do not set the constant when this
9079         is not necessary.
9080         (simplify_shift_const_1): Do not modify it either in this case.
9081
9082 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9083
9084         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
9085         tuning is deprecated if -mtune value is set to an Itanium1 variant.
9086
9087 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
9088
9089         PR c/29027
9090         * c-lex.c (interpret_float): Default (no suffix) is double.
9091
9092 2009-04-1  Xinliang David Li  <davidxl@google.com>
9093
9094         * config/i386/i386.c (legitimate_constant_p): Recognize
9095         all one vector constant.
9096
9097 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9098
9099         * config/vax/vax.c: Add #includes to silence warnings.
9100         Change #include order to silence two warnings.
9101
9102 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9103
9104         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
9105         (ASM_SPEC): Pass -k to the assembler for PIC code.
9106
9107 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9108
9109         * config.gcc: Add vax-*-linux* to the switch.
9110         * config/vax/linux.h: New file. (TARGET_VERSION,
9111         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
9112
9113 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9114
9115         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
9116         Use predicate macros instead of GET_CODE() == foo.
9117         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
9118         ashlsi3, rotrsi3, <unnamed>): Likewise.
9119
9120 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9121
9122         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
9123         jbbccihi, jbbccisi): Remova trailing whitespace.
9124         * config/vax/constraints.md: Likewise.
9125         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
9126         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
9127         * config/vax/predicates.md: Likewise.
9128         * config/vax/vax.c (print_operand_address, vax_output_int_move,
9129         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
9130         * config/vax/vax.h: Likewise.
9131         * config/vax/vax.md (nonlocal_goto): Likewise.
9132
9133 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9134
9135         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
9136         (indirectable_address_p, adjacent_operands_p): Add spaces around
9137         braces.
9138         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
9139
9140 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9141
9142         * config/vax/vax.c (legitimate_constant_address_p,
9143         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
9144         index_term_p, reg_plus_index_p, legitimate_address_p,
9145         vax_mode_dependent_address_p): Update comments to match functions
9146         modified by the recent int->bool conversion.
9147
9148 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9149
9150         * config/vax/builtins.md: Update copyright message.
9151         * config/vax/constraints.md: Likewise.
9152         * config/vax/netbsd-elf.h: Likewise.
9153         * config/vax/predicates.md: Likewise.
9154         * config/vax/vax-protos.h: Likewise.
9155         * config/vax/vax.c: Likewise.
9156         * config/vax/vax.h: Likewise.
9157         * config/vax/vax.md: Likewise.
9158         * config/vax/vax.opt: Likewise.
9159
9160 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9161
9162         * config/vax/builtins.md (ffssi2, ffssi2_internal,
9163         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
9164         * config/vax/constraints.md (B, R): Likewise.
9165         * config/vax/predicates.md (external_memory_operand,
9166         nonimmediate_addsub_di_operand): Likewise.
9167         * config/vax/vax.c (vax_output_int_add): Likewise.
9168         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
9169         untyped_call): Likewise.
9170
9171 2009-04-01  Matt Thomas  <matt@3am-software.com>
9172
9173         * config/vax/predicates.md: New file.
9174         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
9175         external_const_operand, nonsymbolic_operand, external_memory_operand,
9176         indirect_memory_operand, indexed_memory_operand,
9177         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
9178         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
9179         predicate.
9180         * config/vax/constraints.md: New file.
9181         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
9182         New constraint.
9183         * config/vax/builtins.md: New file.
9184         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
9185         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
9186         jbbccisi): Define.
9187         * config/vax/vax.opt (mqmath): Add option.
9188         * config/vax/vax.md (isfx): Extend with DI.
9189         (VAXintQH, VAXintQHSD): Define.
9190         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
9191         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
9192         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
9193         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
9194         (movdi): Update constraints and use vax_output_int_move().
9195         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
9196         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
9197         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
9198         nonlocal_goto): New.
9199         (mov<mode>): Extend accepted operand types.
9200         (subdi3_old): Rename from subdi3, change update constraints and use
9201         a new implementation.
9202         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
9203         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
9204         MOVE_RATIO, CLEAR_RATIO): Define.
9205         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
9206         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
9207         (PRINT_OPERAND): Redefine using a function instead of inlined code.
9208         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
9209         (split_quadword_operands): Make static and really allow variable
9210         splitting.
9211         (print_operand_address): Update for PIC generation.
9212         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
9213         indexable_address_p, fixup_mathdi_operand,
9214         vax_expand_addsub_di_operands, adjacent_operands_p): New.
9215         (vax_float_literal, legitimate_constant_p,
9216         indirectable_constant_address_p, index_term_p,
9217         reg_plus_index_p): Return bool instead of int.
9218         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
9219         where needed.
9220         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
9221         generation.
9222         (vax_output_conditional_branch): Indent.
9223         (legitimate_constant_address_p, indirectable_constant_address_p,
9224         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
9225         vax_mode_dependent_address_p): Return bool instead of int, update for
9226         PIC generation.
9227         * config/vax/vax-protos.h (legitimate_constant_address_p,
9228         legitimate_constant_p, legitimate_address_p,
9229         vax_mode_dependent_address_p): Change declaration to bool.
9230         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
9231         vax_expand_addsub_di_operands, vax_output_int_subtract,
9232         vax_output_movmemsi): Declare.
9233         (split_quadword_operands, vax_float_literal): Delete declaration.
9234         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
9235         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
9236         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
9237         ASM_OUTPUT_DWARF_PCREL): Define.
9238         (ASM_SPEC): Change definition to allow PIC generation.
9239
9240 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
9241
9242         * doc/sourcebuild.texi: Update front-end requirements.
9243
9244 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9245
9246         PR target/39226
9247         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
9248         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
9249         (booldi3_internal3): Use boolean_or_operator instead of
9250         boolean_operator.
9251
9252 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
9253
9254         PR c/39605
9255         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
9256         declarator whose size is not an integer constant expression but
9257         folds to an integer constant, then treat it as a constant
9258         subsequently.
9259
9260 2009-04-01  Richard Guenther  <rguenther@suse.de>
9261
9262         * fold-const.c (fold_plusminus_mult_expr): Do not fold
9263         i * 4 + 2 to (i * 2 + 1) * 2.
9264
9265 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9266
9267         PR c/37772
9268         * c-parser.c (c_parser_asm_statement): Skip until close paren and
9269         return if c_parser_asm_string_literal returned NULL.
9270
9271 2009-04-01  Nick Clifton  <nickc@redhat.com>
9272
9273         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
9274         already defined.
9275         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
9276         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
9277         other typedefs to avoid conflicts with libgcc2.c.  Define labels
9278         to gain 16-bit bit-manipulation functions from libgcc2.c and then
9279         include it.
9280         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
9281         to gain 16-bit trapping arithmetic functions from libgcc2.c and
9282         then include it.
9283
9284 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
9285
9286         * varasm.c (default_function_rodata_section): Declare DOT as
9287         const char*.
9288
9289 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
9290             Andrey Galkin  <agalkin@hypercom.com>
9291
9292         PR/39492
9293         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
9294         Make object_name unique for each process.
9295
9296 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9297
9298         PR other/39591
9299         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
9300         addressable variables in the parallel that could go out of scope while
9301         running queued tasks.
9302
9303 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
9304
9305         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
9306         (CASE_VALUES_THRESHOLD): Redefine.
9307         * config/avr/avr.c (avr_override_options): Remove initialization of
9308         avr_case_values_threshold variable.
9309         (avr_case_values_threshold): Remove variable. Add new function.
9310         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
9311         * config/avr/avr.opt (mno-tablejump): Remove option.
9312         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
9313
9314 2009-04-01  DJ Delorie  <dj@redhat.com>
9315
9316         * varasm.c (default_function_rodata_section): Don't assume
9317         anything about where the first '.' in the section name is.
9318
9319 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
9320
9321         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
9322         rs6000_emit_stack_tie.
9323
9324 2009-03-31  Ian Lance Taylor  <iant@google.com>
9325
9326         * tree-eh.c (tree_remove_unreachable_handlers): Compare
9327         gimple_code with GIMPLE_RESX, not RESX.
9328
9329 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9330
9331         * c-common.c (c_get_ident): New.
9332         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
9333
9334 2009-04-01  Ben Elliston  <bje@au.ibm.com>
9335
9336         * config/rs6000/sysv4.opt (msdata): Improve option description.
9337
9338 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
9339
9340         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
9341         (divdf3_internal_lat): Remove.
9342         (divxf3_internal_lat): Remove.
9343         (divxf3_internal_thr): Remove.
9344         (divxf): Use divxf3_internal.
9345         * config/ia64/div.md (divsf3_internal_lat): New.
9346         (divdf3_internal_lat): New.
9347         (divxf3_internal): New.
9348
9349 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9350
9351         PR c/448
9352         * Makefile.in (USE_GCC_STDINT): Define.
9353         (stmp-int-hdrs): Install stdint.h if applicable.
9354         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
9355         if known.
9356         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
9357         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
9358         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9359         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9360         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9361         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9362         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9363         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9364         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9365         (c_common_nodes_and_builtins): Initialize
9366         underlying_wchar_type_node.  Do not initialize
9367         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
9368         nodes for new types.
9369         (c_stddef_cpp_builtins): Define macros for new types.
9370         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
9371         Remove.
9372         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
9373         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
9374         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
9375         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
9376         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
9377         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
9378         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
9379         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
9380         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
9381         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
9382         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
9383         int16_type_node, int32_type_node, int64_type_node,
9384         uint8_type_node, uint16_type_node, c_uint32_type_node,
9385         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
9386         int_least32_type_node, int_least64_type_node,
9387         uint_least8_type_node, uint_least16_type_node,
9388         uint_least32_type_node, uint_least64_type_node,
9389         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
9390         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
9391         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
9392         uintptr_type_node): Define.
9393         * c-cppbuiltin.c (builtin_define_constants,
9394         builtin_define_type_minmax): New.
9395         (builtin_define_stdint_macros): Define more macros.
9396         (c_cpp_builtins): Define more limit macros.
9397         (type_suffix): New.
9398         (builtin_define_type_max): Define in terms of
9399         builtin_define_type_minmax.  Remove is_long parameter.  All
9400         callers changed.
9401         * config.gcc (use_gcc_stdint): Define.
9402         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
9403         Add newlib-stdint.h for generic targets.
9404         * config/glibc-stdint.h, config/newlib-stdint.h,
9405         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
9406         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
9407         * config/score/score.h (UINTPTR_TYPE): Define.
9408         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
9409         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
9410         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9411         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9412         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9413         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9414         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9415         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9416         * config/spu/spu.h (STDINT_LONG32): Define.
9417         * configure.ac (use_gcc_stdint): Substitute.
9418         * configure: Regenerate.
9419         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
9420         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
9421         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
9422         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
9423         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
9424         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
9425         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
9426         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
9427         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
9428         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
9429         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
9430         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
9431         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
9432         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
9433         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
9434         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
9435         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
9436         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
9437         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
9438         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
9439         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
9440         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
9441         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9442         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9443         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9444         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9445         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9446         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9447         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
9448
9449 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9450
9451         * loop-iv.c (suitable_set_for_replacement): Renamed from
9452         simplify_using_assignment; changed to return bool and to accept new
9453         args DEST and SRC.  Return true iff we find a source/destination pair
9454         that can be used to make a replacement, and fill SRC and DEST if so.
9455         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
9456         changed.
9457         (simplify_using_initial_values): Deal with altered regs here and track
9458         more precisely the effect they have on the validity of our expression.
9459
9460         * loop-iv.c (simplify_using_condition): A condition of the form
9461         (EQ REG CONST) can be used to simply make a substitution.
9462         (simplify_using_initial_values): Keep track of conditions we have seen
9463         and keep using them to simplify new expressions, while applying the
9464         same substitutions to them as to the expression.
9465
9466         * simplify-rtx.c (simplify_relational_operation_1): Simplify
9467         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
9468         GEU/LTU reversed.
9469
9470         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
9471         changed.  Use this when trying to improve the upper bound.
9472         Generate the comparison by using simplify_gen_relational.
9473
9474         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
9475
9476         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
9477         functions.
9478         (simplify_using_assignment, simplify_using_initial_values): Call
9479         replace_in_expr to make replacements.  Call replace_single_def_regs
9480         once on the initial version of the expression.
9481
9482 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9483
9484         PR target/27237
9485         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
9486
9487 2009-03-31  Richard Guenther  <rguenther@suse.de>
9488
9489         PR middle-end/31029
9490         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
9491         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
9492
9493 2009-03-31  Richard Guenther  <rguenther@suse.de>
9494
9495         * tree.h (div_if_zero_remainder): Declare.
9496         * fold-const.c (div_if_zero_remainder): Export.
9497         * tree-ssa-forwprop.c
9498         (forward_propagate_addr_into_variable_array_index): Handle
9499         constant array index addition outside of the variable index.
9500
9501 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9502
9503         PR target/39592
9504         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
9505         define_splits, floatunssi<mode>2): Require x87 conversions from
9506         DImode to be permitted.
9507
9508 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9509
9510         PR preprocessor/15638
9511         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
9512
9513 2009-03-31  Richard Guenther  <rguenther@suse.de>
9514
9515         PR middle-end/23401
9516         PR middle-end/27810
9517         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
9518         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
9519         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
9520         a separate statement.
9521         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
9522         (lookup_tmp_var): Likewise.
9523         (is_gimple_formal_tmp_or_call_rhs): Remove.
9524         (is_gimple_reg_or_call_rhs): Rename to ...
9525         (is_gimple_reg_rhs_or_call): ... this.
9526         (is_gimple_mem_or_call_rhs): Rename to ...
9527         (is_gimple_mem_rhs_or_call): ... this.
9528         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
9529         DECL_GIMPLE_REG_P only if is_formal is true.
9530         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
9531         for non-proper post-modify expression gimplification.
9532         (gimplify_self_mod_expr): For post-modify expressions gimplify
9533         the lvalue to a minimal lvalue.
9534         (rhs_predicate_for): Remove formal temp case.
9535         (gimplify_modify_expr_rhs): Likewise.
9536         (gimplify_addr_expr): Use is_gimple_reg.
9537         (gimplify_expr): Remove formal temp cases.
9538         (gimple_regimplify_operands): Likewise.
9539         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
9540         and FILTER_EXPR like constants.
9541         * gimple.c (walk_gimple_op): Fix val_only initialization, use
9542         is_gimple_reg.
9543         (is_gimple_formal_tmp_rhs): Remove.
9544         (is_gimple_reg_rhs): Remove special casing.
9545         (is_gimple_mem_rhs): Fix.
9546         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
9547         (is_gimple_formal_tmp_var): Remove.
9548         (is_gimple_formal_tmp_reg): Likewise.
9549         (is_gimple_min_lval): Allow invariant component ref parts.
9550         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
9551         is_gimple_formal_tmp_reg): Remove declarations.
9552         * tree-cfg.c (verify_expr): Verify that variables with address
9553         taken do not have DECL_GIMPLE_REG_P set.
9554         * tree-mudflap.c (mf_build_check_statement_for): Use
9555         force_gimple_operand instead of gimplify_expr.
9556
9557 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
9558
9559         * modulo-sched.c (sms_schedule_by_order): Pass the actual
9560         schedulable rows to compute_split_row.
9561
9562 2009-03-31  Ben Elliston  <bje@au.ibm.com>
9563
9564         PR target/31635
9565         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
9566         OPT_mvrsave.
9567
9568 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9569
9570         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
9571         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
9572         * configure: Regenerate.
9573         * config.in: Regenerate.
9574         * config/rs6000/rs6000.opt (mtls-markers): Add.
9575         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
9576         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
9577         (tls_ld_aix, tls_ld_sysv): Likewise.
9578         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
9579         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
9580
9581 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9582
9583         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
9584
9585 2009-03-30  Jan Hubicka  <jh@suse.cz>
9586
9587         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
9588         out of RESX.
9589         (tree_remove_unreachable_handlers): Cleanup EH predecestor
9590         detection and label handling.
9591
9592 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9593
9594         * ira-int.h (ira_allocno): Rename left_conflicts_num to
9595         left_conflicts_size.
9596         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
9597         ALLOCNO_LEFT_CONFLICTS_SIZE.
9598
9599         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
9600         remove_allocno_from_bucket_and_push,
9601         allocno_spill_priority_compare, push_allocnos_to_stack,
9602         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9603         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
9604         (setup_allocno_left_conflicts_num): Ditto.  Rename to
9605         setup_allocno_left_conflicts_size.
9606         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9607         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
9608         setup_allocno_left_conflicts_size instead of
9609         setup_allocno_left_conflicts_num.
9610
9611         * ira-build.c (ira_create_allocno): Use
9612         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
9613         ALLOCNO_LEFT_CONFLICTS_NUM.
9614
9615 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9616
9617         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
9618         instead of DF_LR_OUT.
9619
9620         * ira-lives.c (process_bb_node_lives): Ditto.
9621
9622         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
9623         instead of DF_LR_{OUT,IN}.
9624
9625         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
9626
9627         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
9628
9629 2009-03-30  Jan Hubicka  <jh@suse.cz>
9630
9631         * except.c (label_to_region_map): Fix thinko.
9632
9633 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
9634
9635         PR middle-end/38237
9636         * tree.h (tree_find_value): New declaration.
9637         * tree.c (tree_find_value): New function.
9638         * varasm.c (assemble_external): Avoid duplicate entries on lists.
9639
9640 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
9641
9642         PR debug/39563
9643         * c-decl.c (struct c_binding): Add locus field.
9644         (bind): Add locus argument, set locus field from it.
9645         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
9646         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
9647         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
9648         implicitly_declare, undeclared_variable, lookup_label,
9649         declare_label, c_make_fname_decl, c_builtin_function,
9650         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
9651         bind callers.
9652
9653 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
9654
9655         PR target/38781
9656         * config/i386/i386.c (classify_argument): Check total size of
9657         structure.
9658
9659 2009-03-30  Martin Jambor  <mjambor@suse.cz>
9660
9661         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
9662         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
9663         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
9664         respectively.
9665
9666         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
9667         seen_variable_array_ref while also traversing a union.
9668
9669         * tree-inline.c (optimize_inline_calls): Do not call
9670         cgraph_node_remove_callees.
9671         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
9672         (pass_remove_cgraph_callee_edges): New variable.
9673         * passes.c (init_optimization_passes): Add
9674         pass_remove_cgraph_callee_edges after early inlining and before all
9675         late intraprocedural passes.
9676
9677         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
9678
9679 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9680
9681         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
9682         Fix typos in names.
9683
9684 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9685
9686         * combine.c (simplify_comparison): Use have_insn_for.
9687         * dojump.c (do_jump): Likewise.
9688
9689 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9690
9691         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
9692         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
9693         sparc_compare_op0 like sparc_compare_emitted used to be handled.
9694         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
9695         instead of sparc_compare_emitted.
9696         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
9697         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
9698         instead of sparc_compare_emitted.
9699
9700 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9701
9702         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
9703         enter/exit cfglayout mode.
9704         (pass_partition_block): Require it.
9705         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
9706         (combine_instructions): Track basic blocks instead of labels.
9707         (update_cfg_for_uncondjump): New.
9708         (try_combine): Use it.  Update jumps after rescanning.
9709         (pass_combine): Require PROP_cfglayout.
9710         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
9711
9712 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9713
9714         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
9715         Provide/destroy PROP_cfglayout respectively.
9716         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
9717         * tree-pass.h (PROP_cfglayout): New.
9718
9719 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9720
9721         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
9722         fold_convert_const_fixed_from_fixed,
9723         fold_convert_const_fixed_from_int,
9724         fold_convert_const_fixed_from_real, fold_negate_const): Do not
9725         set TREE_CONSTANT_OVERFLOW.
9726         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
9727         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
9728
9729 2009-03-30  Ira Rosen  <irar@il.ibm.com>
9730
9731         * tree-vect-loop-manip.c: New file.
9732         * tree-vectorizer.c: Update documentation and included files.
9733         (vect_loop_location): Make extern.
9734         (rename_use_op): Move to tree-vect-loop-manip.c
9735         (rename_variables_in_bb, rename_variables_in_loop,
9736         slpeel_update_phis_for_duplicate_loop,
9737         slpeel_update_phi_nodes_for_guard1,
9738         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
9739         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
9740         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
9741         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
9742         find_loop_location): Likewise.
9743         (new_stmt_vec_info): Move to tree-vect-stmts.c.
9744         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
9745         get_vectype_for_scalar_type, vect_is_simple_use,
9746         supportable_widening_operation, supportable_narrowing_operation):
9747         Likewise.
9748         (bb_in_loop_p): Move to tree-vect-loop.c.
9749         (new_loop_vec_info, destroy_loop_vec_info,
9750         reduction_code_for_scalar_code, report_vect_op,
9751         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
9752         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
9753         (vect_supportable_dr_alignment): Likewise.
9754         * tree-vectorizer.h (tree-data-ref.h): Include.
9755         (vect_loop_location): Declare.
9756         Reorganize function declarations according to the new file structure.
9757         * tree-vect-loop.c: New file.
9758         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
9759         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
9760         * tree-vect-data-refs.c: New file.
9761         * tree-vect-patterns.c (timevar.h): Don't include.
9762         * tree-vect-stmts.c: New file.
9763         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
9764         tree-vect-slp.c, tree-vect-loop.c.
9765         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
9766         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
9767         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
9768         (tree-vect-analyze.o): Remove.
9769         (tree-vect-transform.o): Likewise.
9770         (tree-vect-data-refs.o): Add rule.
9771         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
9772         tree-vect-slp.o): Likewise.
9773         (tree-vect-patterns.o): Remove redundant dependencies.
9774         (tree-vectorizer.o): Likewise.
9775         * tree-vect-slp.c: New file.
9776
9777 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9778
9779         * optc-gen.awk: Warn if an option flag has multiple different
9780         help strings.
9781
9782 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
9783
9784         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
9785         -floop-block): Document dependences on PPL, CLooG and Graphite.
9786
9787 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
9788
9789         PR rtl-optimization/323
9790         * c-common.c (c_fully_fold, convert_and_check,
9791         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
9792         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
9793         * c-common.def (EXCESS_PRECISION_EXPR): New.
9794         * c-cppbuiltin.c (builtin_define_float_constants): Define
9795         constants with enough digits for long double.
9796         * c-lex.c (interpret_float): Interpret constant with excess
9797         precision where appropriate.
9798         * c-opts.c (c_common_post_options): Set
9799         flag_excess_precision_cmdline.  Give an error for
9800         -fexcess-precision=standard for C++ for processors where the
9801         option is significant.
9802         * c-parser.c (c_parser_conditional_expression): Handle excess
9803         precision in condition.
9804         * c-typeck.c (convert_arguments): Handle arguments with excess
9805         precision.
9806         (build_unary_op): Move excess precision outside operation.
9807         (build_conditional_expr): Likewise.
9808         (build_compound_expr): Likewise.
9809         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
9810         (build_modify_expr): Handle excess precision in RHS.
9811         (convert_for_assignment): Handle excess precision in converted
9812         value.
9813         (digest_init, output_init_element, process_init_element): Handle
9814         excess precision in initializer.
9815         (c_finish_return): Handle excess precision in return value.
9816         (build_binary_op): Handle excess precision in operands and add
9817         excess precision as needed for operation.
9818         * common.opt (-fexcess-precision=): New option.
9819         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
9820         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
9821         For standard excess precision, output explicit conversion to and
9822         truncation from XFmode.
9823         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
9824         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
9825         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
9826         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
9827         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
9828         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
9829         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
9830         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
9831         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
9832         define_splits, sqrt<mode>2): Disable where appropriate for
9833         standard excess precision.
9834         * convert.c (convert_to_real): Do not shorten arithmetic to type
9835         for which excess precision would be used.
9836         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
9837         * doc/invoke.texi (-fexcess-precision=): Document option.
9838         (-mfpmath=): Correct index entry.
9839         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
9840         flag_excess_precision): New.
9841         * langhooks.c (lhd_post_options): Set
9842         flag_excess_precision_cmdline.
9843         * opts.c (common_handle_option): Handle -fexcess-precision=.
9844         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
9845         init_excess_precision): New.
9846         (lang_dependent_init_target): Call init_excess_precision.
9847         * tree.c (excess_precision_type): New.
9848         * tree.h (excess_precision_type): Declare.
9849
9850 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
9851
9852         PR c/35235
9853         * c-typeck.c (build_component_ref): Do not copy qualifiers from
9854         non-lvalue to component.
9855
9856 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
9857
9858         PR preprocessor/34695
9859         * Makefile.in (c-opts.o): Depend on c-tree.h.
9860         * c-common.c: Move down include of diagnostic.h.
9861         (done_lexing, c_cpp_error): New.
9862         * c-common.h (done_lexing): Declare.
9863         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
9864         (parse_in).
9865         * c-opts.c: Include c-tree.h.
9866         (c_common_init_options): Set preprocessor error callback.
9867         (c_common_handle_option): Do not set preprocessor
9868         inhibit_warnings, warnings_are_errors, warn_system_headers,
9869         pedantic_errors or inhibit_warnings flags.
9870         (c_common_post_options): Do not check cpp_errors (parse_in).
9871         (c_common_finish): Do not output dependencies if there were
9872         errors.  Do not check return value of cpp_finish.
9873         * c-ppoutput.c (pp_file_change): Set input_location.
9874         * c-tree.h (c_cpp_error): Declare.
9875         * diagnostic.c (diagnostic_set_info_translated): Also initialize
9876         override_column.
9877         (diagnostic_build_prefix): Check override_column.
9878         * diagnostic.h (diagnostic_info): Add override_column field.
9879         (diagnostic_override_column): Define.
9880
9881 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
9882
9883         * c-common.c (c_expand_expr, c_staticp): Remove.
9884         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
9885         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
9886         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
9887         * c-gimplify.c (gimplify_compound_literal_expr,
9888         optimize_compound_literals_in_ctor): Remove.
9889         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
9890         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
9891         * c-semantics.c (emit_local_var): Remove.
9892
9893         * langhooks-def.h (lhd_expand_expr): Remove.
9894         * langhooks.c (lhd_expand_expr): Remove.
9895         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
9896
9897         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
9898         handling from c-semantics.c; don't call into langhook.
9899         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
9900         * gimplify.c (gimplify_compound_literal_expr,
9901         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
9902         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
9903         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
9904         as was done in c-gimplify.c.
9905         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
9906         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
9907         Move from c-common.h.
9908         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
9909
9910         * tree.c (staticp): Do not call langhook.
9911         * langhooks.c (lhd_staticp): Delete.
9912         * langhooks-def.h (lhd_staticp): Delete prototype.
9913         (LANG_HOOKS_STATICP): Delete.
9914         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
9915
9916         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
9917         instead of DECL_STMTs.
9918
9919 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
9920
9921         PR c/456
9922         PR c/5675
9923         PR c/19976
9924         PR c/29116
9925         PR c/31871
9926         PR c/35198
9927         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
9928         void_type_node.
9929         (fold_call_expr): Return a NOP_EXPR from folding rather than the
9930         contained expression.
9931         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
9932         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
9933         conditional expressions for C.
9934         (decl_constant_value_for_optimization): Move from
9935         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
9936         whether optimizing and that the expression is a VAR_DECL not of
9937         array type instead of doing such checks in the caller.  Do not
9938         check pedantic.  Call gcc_unreachable for C++.
9939         * c-common.def (C_MAYBE_CONST_EXPR): New.
9940         * c-common.h (c_fully_fold, c_save_expr,
9941         decl_constant_value_for_optimization): New prototypes.
9942         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
9943         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
9944         EXPR_INT_CONST_OPERANDS): Define.
9945         * c-convert.c (convert): Strip nops from expression.
9946         * c-decl.c (groktypename): Take extra parameters expr and
9947         expr_const_operands.  Update call to grokdeclarator.
9948         (start_decl): Update call to grokdeclarator.  Add statement for
9949         expressions used in type of decl.
9950         (grokparm): Update call to grokdeclarator.
9951         (push_parm_decl): Update call to grokdeclarator.
9952         (build_compound_literal): Add parameter non_const and build a
9953         C_MAYBE_COSNT_EXPR if applicable.
9954         (grokdeclarator): Take extra parameters expr and
9955         expr_const_operands.  Track expressions used in declaration
9956         specifiers and declarators.  Fold array sizes and track whether
9957         they are constant expressions and whether they are integer
9958         constant expressions.
9959         (parser_xref_tag): Set expr and expr_const_operands fields in
9960         return value.
9961         (grokfield): Update call to grokdeclarator.
9962         (start_function): Update call to grokdeclarator.
9963         (build_null_declspecs): Set expr and expr_const_operands fields in
9964         return value.
9965         (declspecs_add_type): Handle expressions in typeof specifiers.
9966         * c-parser.c (c_parser_declspecs): Set expr and
9967         expr_const_operands fields for declaration specifiers.
9968         (c_parser_enum_specifier): Likewise.
9969         (c_parser_struct_or_union_specifier): Likewise.
9970         (c_parser_typeof_specifier): Likewise.  Update call to
9971         groktypename.  Fold expression as needed.  Return expressions with
9972         type instead of adding statements.
9973         (c_parser_attributes): Update calls to c_parser_expr_list.
9974         (c_parser_statement_after_labels): Fold expression before passing
9975         to objc_build_throw_stmt.
9976         (c_parser_condition): Fold expression.
9977         (c_parser_asm_operands): Fold expression.
9978         (c_parser_conditional_expression): Use c_save_expr.  Update call
9979         to build_conditional_expr.
9980         (c_parser_alignof_expression): Update call to groktypename.
9981         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
9982         original_code.  Fold expression argument of va_arg.  Create
9983         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
9984         argument to va_arg.  Update calls to groktypename.  Fold array
9985         index for offsetof.  Verify that first argument to
9986         __builtin_choose_expr has integer type.
9987         (c_parser_postfix_expression_after_paren_type): Update calls to
9988         groktypename and build_compound_literal.  Handle expressions with
9989         side effects in type name.
9990         (c_parser_postfix_expression_after_primary): Update call to
9991         c_parser_expr_list.  Set original_code for calls to
9992         __builtin_constant_p.
9993         (c_parser_expr_list): Take extra parameter fold_p.  Fold
9994         expressions if requested.
9995         (c_parser_objc_type_name): Update call to groktypename.
9996         (c_parser_objc_synchronized_statement): Fold expression.
9997         (c_parser_objc_receiver): Fold expression.
9998         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
9999         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
10000         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
10001         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
10002         (struct c_typespec): Add elements expr and expr_const_operands.
10003         (struct c_declspecs): Add elements expr and expr_const_operands.
10004         (groktypename, build_conditional_expr, build_compound_literal):
10005         Update prototypes.
10006         (in_late_binary_op): Declare.
10007         * c-typeck.c (note_integer_operands): New function.
10008         (in_late_binary_op): New variable.
10009         (decl_constant_value_for_broken_optimization): Move to c-common.c
10010         and rename to decl_constant_value_for_optimization.
10011         (default_function_array_conversion): Do not strip nops.
10012         (default_conversion): Do not call
10013         decl_constant_value_for_broken_optimization.
10014         (build_array_ref): Do not fold result.
10015         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
10016         result when operand is a VLA.
10017         (c_expr_sizeof_type): Update call to groktypename.  Handle
10018         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
10019         result when operand names a VLA type.
10020         (build_function_call): Update call to build_compound_literal.
10021         Only fold result for calls to __builtin_* functions.  Strip
10022         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
10023         the function designator.
10024         (convert_arguments): Fold arguments.  Update call to
10025         convert_for_assignment.
10026         (build_unary_op): Handle increment and decrement of
10027         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
10028         decrement earlier.  Fold operand of increment and decrement.
10029         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
10030         built for integer operand.  Wrap returns that are INTEGER_CSTs
10031         without being integer constant expressions or that have integer
10032         constant operands without being INTEGER_CSTs.
10033         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
10034         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
10035         result is an integer constant expression or can be used in
10036         unevaluated parts of one and avoid folding and wrap as
10037         appropriate.  Fold operands before possibly doing -Wsign-compare
10038         warnings.
10039         (build_compound_expr): Wrap result for C99 if operands can be used
10040         in integer constant expressions.
10041         (build_c_cast): Update call to digest_init.  Do not ignore
10042         overflow from casting floating-point constants to integers.  Wrap
10043         results that could be confused with integer constant expressions,
10044         null pointer constants or floating-point constants.
10045         (c_cast_expr): Update call to groktypename.  Handle expressions
10046         included in type name.
10047         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
10048         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
10049         Update calls to convert_for_assignment.
10050         (convert_for_assignment): Take new parameter
10051         null_pointer_constant.  Do not strip nops or call
10052         decl_constant_value_for_broken_optimization.  Set
10053         in_late_binary_op for conversions to boolean.
10054         (store_init_value): Update call to digest_init.
10055         (digest_init): Take new parameter null_pointer_constant.  Do not
10056         call decl_constant_value_for_broken_optimization.  pedwarn for
10057         initializers not constant expressions.  Update calls to
10058         convert_for_assignment.
10059         (constructor_nonconst): New.
10060         (struct constructor_stack): Add nonconst element.
10061         (really_start_incremental_init, push_init_level, pop_init_level):
10062         Handle constructor_nonconst and nonconst element.
10063         (set_init_index): Call constant_expression_warning for array
10064         designators.
10065         (output_init_element): Fold value.  Set constructor_nonconst as
10066         applicable.  pedwarn for initializers not constant expressions.
10067         Update call to digest_init.  Call constant_expression_warning
10068         where constant initializers are required.
10069         (process_init_element): Use c_save_expr.
10070         (c_finish_goto_ptr): Fold expression.
10071         (c_finish_return): Fold return value.  Update call to
10072         convert_for_assignment.
10073         (c_start_case): Fold switch expression.
10074         (c_process_expr_stmt): Fold expression.
10075         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
10076         ensure statement expression is not evaluated in constant expression.
10077         (build_binary_op): Track whether results are integer constant
10078         expressions or may occur in such, disable folding and wrap results
10079         as applicable.  Fold operands for -Wsign-compare warnings unless
10080         in_late_binary_op.
10081         (c_objc_common_truthvalue_conversion): Handle results folded to
10082         integer constants that are not integer constant expressions.
10083         * doc/extend.texi: Document when typeof operands are evaluated,
10084         that condition of __builtin_choose_expr is an integer constant
10085         expression, and more about use of __builtin_constant_p in
10086         initializers.
10087
10088 2009-03-29  Richard Guenther  <rguenther@suse.de>
10089
10090         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
10091         propagate addresses of array references.
10092
10093 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
10094
10095         * regmove.c (perhaps_ends_bb_p): Remove.
10096         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
10097         from INSN and check that the main loop stays within that basic block.
10098         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
10099         (regmove_forward_pass): Split out from regmove_optimize.  Use
10100         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
10101         (regmove_backward_pass): Split out from regmove_optimize.  Use
10102         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
10103         (regmove_optimize): Simplify.
10104
10105 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10106
10107         PR target/39545
10108         * config/i386/i386.c (classify_argument): Ignore flexible array
10109         member in struct and warn ABI change.
10110
10111 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10112
10113         * config/i386/i386-protos.h (ix86_agi_dependent): New.
10114
10115         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
10116         (ix86_adjust_cost): Updated.
10117
10118 2009-03-29  Jan Hubicka  <jh@suse.cz>
10119
10120         PR middle-end/28850
10121         * tree-pass.h (pass_cleanup_eh): New function.
10122         (remove_unreachable_regions): Break code handling RTL
10123         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
10124         that can not be reached by runtime.
10125         (can_be_reached_by_runtime): New function.
10126         (label_to_region_map): New function.
10127         (num_eh_regions): New function.
10128         (rtl_remove_unreachable_regions): New function.
10129         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
10130         (remove_eh_region): New function.
10131         * except.h: Include sbitmap and vecprim.
10132         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
10133         num_eh_regions): Declare.
10134         * passes.c (init_optimization_passes): Schedule cleanup_eh.
10135         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
10136         * tree-eh.c (tree_remove_unreachable_handlers): New function.
10137         (tree_empty_eh_handler_p): New function.
10138         (cleanup_empty_eh): New function.
10139         (cleanup_eh): New function.
10140         (pass_cleanup_eh): New function.
10141
10142 2009-03-29  Jan Hubicka  <jh@suse.cz>
10143
10144         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
10145         for removed regions.
10146
10147 2009-03-29  Jan Hubicka  <jh@suse.cz>
10148
10149         * except.c (dump_eh_tree): Dump all datastructures.
10150
10151 2009-03-29  Jan Hubicka  <jh@suse.cz>
10152
10153         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
10154         (duplicate_eh_regions_1): Likewise.
10155         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
10156         vector; call EH verification.
10157         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10158         Be ready for region being removed.
10159
10160 2009-03-29  Jan Hubicka  <jh@suse.cz>
10161
10162         * bitmap.c (bitmap_last_set_bit): New function.
10163         * bitmap.h (bitmap_last_set_bit): Declare.
10164
10165 2009-03-29  David Ayers  <ayers@fsfe.org>
10166
10167         PR objc/27377
10168         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
10169         by calling objc_compare_types and surpress warnings about
10170         incompatible C pointers that are compatible ObjC pointers.
10171
10172 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
10173
10174         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
10175         call initialize_inline_failed.
10176         (initialize_inline_failed): Move it from here ...
10177         * cgraph.c (initialize_inline_failed): ... to here.
10178         (cgraph_create_edge): Call initialize_inline_failed rather than
10179         setting inline_failed directly.
10180
10181 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10182
10183         PR target/32542
10184         * sysv4.opt (msdata): Improve comment.
10185         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
10186         * sysv4.h (SVR4_ASM_SPEC): Likewise.
10187
10188 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10189
10190         PR target/30451
10191         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
10192         load and store attributes.
10193
10194 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10195
10196         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
10197         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
10198         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
10199         * doc/extend.texi (X86 Built-in Functions): Add index entries for
10200         __builtin_infq and __builtin_huge_valq.
10201
10202 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
10203
10204         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
10205         atmega8m1 devices.
10206         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10207         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
10208
10209 2009-03-28  Xinliang David Li  <davidxl@google.com>
10210
10211         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
10212         (do_dbg_cnt): New function.
10213
10214 2009-03-28  Jan Hubicka  <jh@suse.cz>
10215
10216         Merge from pretty-ipa:
10217
10218         2009-03-27  Jan Hubicka  <jh@suse.cz>
10219
10220         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10221         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
10222         * passes.c (function_called_by_processed_nodes_p): New.
10223         * ipa-pure-const.c (check_call): Fix handling of operands.
10224         (analyze_function): Dump debug output for skipped bodies.
10225         (local_pure_const): Use function_called_by_processed_nodes_p.
10226         * dwarf2out.c (reference_to_unused): Use output.
10227         * passes.c (do_per_function_toporder): Likewise.
10228
10229         2008-11-12  Jan Hubicka  <jh@suse.cz>
10230
10231         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
10232         * ipa-pure-const.c (funct_state_d): Add can throw field; make
10233         state_set_in_source enum
10234         (check_decl): Ignore memory tags; do not set fake looping flags;
10235         dump diagnostics.
10236         (check_operand, check_tree, check_rhs_var, check_lhs_var,
10237         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
10238         (check_call, analyze_function): Rewrite.
10239         (check_stmt): New.
10240         (add_new_function): Update call of analyze_function.
10241         (generate_summary): Add call of analyze_function.
10242         (propagate): Propagate can_throw; handle state_set_in_source correctly.
10243         (local_pure_const): New function.
10244         (pass_local_pure_const): New pass.
10245         * ipa-inline.c (inline_transform): Set after_inlining.
10246         * tree-eh.c (stmt_can_throw_external): New.
10247         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
10248         work with aliasing built.
10249         * tree-flow.h (stmt_can_throw_external): New.
10250         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
10251         and local pure/const pass in early and late optimization queue.
10252
10253 2009-03-28  Martin Jambor  <mjambor@suse.cz>
10254
10255         * fold-const.c (get_pointer_modulus_and_residue): New parameter
10256         allow_func_align.
10257         (fold_binary): Allow function decl aligment consideration is the
10258         second argument is integer constant one.
10259         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
10260         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
10261         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
10262
10263 2009-03-28  Jan Hubicka  <jh@suse.cz>
10264
10265         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
10266         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
10267         * function.h (rtl_data): Add nothrow flag.
10268         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
10269         set DECL_NOTHROW for AVAILABLE functions.
10270
10271 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
10272
10273         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
10274         following vector keyword has expansion starting with pixel or bool
10275         keyword, expand vector to __vector and pixel or bool to __pixel or
10276         __bool.
10277
10278         PR c++/39554
10279         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
10280         warn_if_disallowed_function_p): Removed.
10281         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
10282         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
10283         warning_if_disallowed_function_p.
10284         * flags.h (warn_if_disallowed_function_p,
10285         warn_disallowed_functions): Removed.
10286         * common.opt (Wdisallowed-function-list=): Removed.
10287         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
10288
10289 2009-03-28  Richard Guenther  <rguenther@suse.de>
10290
10291         PR tree-optimization/38723
10292         * tree-ssa-pre.c (compute_avail): Add all default definitions to
10293         the entry block.
10294
10295 2009-03-28  Jan Hubicka  <jh@suse.cz>
10296
10297         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
10298         test introduced by my previous patch.
10299
10300 2009-03-28  Richard Guenther  <rguenther@suse.de>
10301
10302         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
10303         the PHIs value undefined.
10304
10305 2009-03-28  Jan Hubicka  <jh@suse.cz>
10306
10307         * tree-pass.h (pass_fixup_cfg): New pass.
10308         * ipa-inline.c (inline_transform): Set
10309         always_inline_functions_inlined/after_inlining.
10310         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
10311         (pass_fixup_cfg): New pass.
10312         * passes.c (init_optimization_passes): Add fixup_cfg.
10313
10314 2009-03-28  Richard Guenther  <rguenther@suse.de>
10315
10316         PR tree-optimization/38458
10317         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
10318         argument use the arguments copy-of value.
10319
10320 2009-03-28  Richard Guenther  <rguenther@suse.de>
10321
10322         PR tree-optimization/38180
10323         * tree-ssa-ccp.c (get_default_value): Simplify.
10324         (likely_value): Likewise.
10325         (surely_varying_stmt_p): Properly handle VOP case.
10326         (ccp_initialize): Likewise.
10327         (ccp_fold): Handle propagating through *&.
10328         (fold_const_aggregate_ref): Also handle decls.
10329
10330 2009-03-28  Jan Hubicka  <jh@suse.cz>
10331
10332         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10333         * cgraph.h (cgraph_node): Likewise.
10334         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
10335         (cgraph_reset_node): Use process flag.
10336         (cgraph_mark_functions_to_output): Likewise.
10337         (cgraph_expand_function): Likewise.
10338         (cgraph_expand_all_functions): Likewise.
10339         (cgraph_output_in_order): Likewise.
10340         * dwarf2out.c (reference_to_unused): Likewise.
10341         * passes.c do_per_function_toporder): Likewise.
10342
10343 2009-03-28  Jan Hubicka  <jh@suse.cz>
10344
10345         Bring from lto-branch:
10346
10347         2008-09-03  Doug Kwan  <dougkwan@google.com>
10348
10349         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
10350         enums instead of reason strings.
10351         * cgraph.c (cgraph_create_edge): Same.
10352         (cgraph_inline_failed_string): New function.
10353         * cgraph.h (cgraph_inline_failed_t): New enum type.
10354         (cgraph_inline_failed_string): New prototype.
10355         (struct cgraph_edge): Change type of INLINED_FAILED from constant
10356         char pointer to cgraph_inline_failed_t.
10357         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
10358         (cgraph_default_inline_p): Ditto.
10359         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
10360         to cgraph_inline_failed_t pointer.
10361         * cif-code.def: New file.
10362         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
10363         reason string.
10364         (cgraph_check_inline_limits): Change type of REASON to pointer to
10365         cgraph_inline_failed_t.  Replace reason strings with enums.
10366         (cgraph_default_inline_p): Ditto.
10367         (cgraph_recursive_inlining_p): Ditto.
10368         (update_caller_keys): Change type of FAILED_REASON to
10369         cgraph_inline_failed_t.
10370         (cgraph_set_inline_failed): Change type of REASON to pointer to
10371         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
10372         convert enums to strings for text output.
10373         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
10374         to be of type cgraph_inline_failed_t.  Replace reason strings with
10375         enums.  Call cgraph_inline_failed_string to covert enums
10376         to strings for text output.
10377         (cgraph_decide_inlining): Replace reason strings with enums.
10378         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
10379         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
10380         for text output.
10381         * tree-inline.c (expand_call_inline): Change type of REASON
10382         to cgraph_inline_failed_t.  Replace reason strings with enums.
10383         Call cgraph_inline_failed_string for text output.
10384         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
10385         (cgraph.o): Ditto.
10386
10387 2009-03-28  Jan Hubicka  <jh@suse.cz>
10388
10389         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
10390         cgraph_clone_node): Remove master clone handling.
10391         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10392         * cgraph.h (master_clone): Remove.
10393         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10394         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
10395         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
10396
10397 2009-03-28  Jan Hubicka  <jh@suse.cz>
10398
10399         * cgraph.c (cgraph_function_body_availability): Functions declared
10400         inline are always safe to assume that it is not going to be replaced.
10401
10402 2009-03-28  Richard Guenther  <rguenther@suse.de>
10403
10404         PR tree-optimization/38513
10405         * tree-ssa-pre.c (eliminate): Remove redundant stores.
10406         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
10407         EXC_PTR_EXPR and FILTER_EXPR.
10408         (get_ref_from_reference_ops): Likewise.
10409
10410 2009-03-28  Richard Guenther  <rguenther@suse.de>
10411
10412         PR tree-optimization/38968
10413         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
10414         Use FLOOR_MOD_EXPR to compute misalignment.
10415
10416 2009-03-28  Richard Guenther  <rguenther@suse.de>
10417
10418         PR tree-optimization/37795
10419         * tree.h (combine_comparisons): Declare.
10420         * fold-const.c (combine_comparisons): Export.
10421         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
10422         comparisons.
10423         (ifcombine_iforif): Use combine_comparisons.
10424
10425 2009-03-28  Jan Hubicka  <jh@suse.cz>
10426
10427         * tree-eh.c (inlinable_call_p): New function.
10428         (make_eh_edges): Use it.
10429         (verify_eh_edges): Use it.
10430         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
10431         * except.c (reachable_next_level): Add inlinable_function argument
10432         (sjlj_find_directly_reachable_regions): Update.
10433         (add_reachable_handler): Do not set saw_any_handlers.
10434         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
10435         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10436         Add new inlinable call parameter.
10437         (can_throw_internal, can_throw_external): Update.
10438         * except.h (can_throw_internal_1, can_throw_external_1,
10439         foreach_reachable_handler): Update declaration.
10440
10441 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
10442
10443         * config/arm/t-arm-coff, config/h8300/coff.h,
10444         config/i386/i386-aout.h, config/i386/i386-coff.h,
10445         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
10446         config/pdp11/2bsd.h, config/rs6000/aix41.h,
10447         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
10448         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
10449         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
10450         sys-types.h: Remove.
10451         * Makefile.in: Remove protoize and fixproto support and references
10452         in comments.
10453         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
10454         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
10455         Remove.
10456         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
10457         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
10458         unprotoize$(exeext).
10459         (rest.encap): Don't depend on $(STMP_FIXPROTO)
10460         (.PHONY): Don't depend on proto.
10461         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
10462         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
10463         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
10464         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
10465         build/gen-protos.o, build/scan.o, xsys-protos.h,
10466         build/fix-header$(build_exeext), build/fix-header.o,
10467         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
10468         stmp-install-fixproto): Remove.
10469         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
10470         SYSCALLS.c or fixproto files.
10471         (install-common): Don't install protoize.
10472         (install-headers-tar, install-headers-cpio, install-headers-cp):
10473         Don't depend on $(STMP_FIXPROTO).
10474         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
10475         install fixproto files or write out fixproto settings.
10476         (uninstall): Don't uninstall protoize.
10477         * config.gcc (use_fixproto): Remove.
10478         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
10479         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
10480         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
10481         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
10482         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
10483         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
10484         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
10485         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
10486         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
10487         * config/t-vxworks (STMP_FIXPROTO): Remove.
10488         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
10489         STMP_FIXPROTO): Remove.
10490         * config.in, configure: Regenerate.
10491         * crtstuff.c (gid_t, uid_t): Don't undefine.
10492         * doc/install.texi: Change m68k-coff to m68k-elf in example.
10493         (arm-*-coff, arm-*-aout: Remove target entries.
10494         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
10495         Remove mention of AIX 4.1.
10496         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
10497         * doc/invoke.texi (Running Protoize): Remove.
10498         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
10499         (Protoize Caveats): Remove.
10500         * tsystem.h: Update comments on headers assumed to exist.
10501
10502 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
10503
10504         * genautomata.c: Add a new year to the copyright.  Add a new
10505         reference.
10506         (struct insn_reserv_decl): Add comments for member bypass_list.
10507         (find_bypass): Remove.
10508         (insert_bypass): New.
10509         (process_decls): Use insert_bypass.
10510         (output_internal_insn_latency_func): Output all bypasses with the
10511         same input insn in one switch case.
10512
10513         * rtl.def (define_bypass): Describe bypass choice.
10514         * doc/md.texi (define_bypass): Ditto.
10515
10516 2009-03-27  Richard Guenther  <rguenther@suse.de>
10517
10518         * gimplify.c (mark_addressable): Export.
10519         * tree-flow.h (mark_addressable): Declare.
10520         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
10521         * tree-ssa.c (verify_phi_args): Verify that address taken
10522         variables have TREE_ADDRESSABLE set.
10523
10524 2009-03-27  Richard Guenther  <rguenther@suse.de>
10525
10526         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
10527         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
10528         Do not mark decls TREE_ADDRESSABLE.
10529         (build_fold_addr_expr): Adjust.
10530         (fold_addr_expr): Remove.
10531         (fold_unary): Use build_fold_addr_expr.
10532         (fold_comparison): Likewise.
10533         (split_address_to_core_and_offset): Likewise.
10534         * coverage.c (tree_coverage_counter_addr): Mark the array decl
10535         TREE_ADDRESSABLE.
10536         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
10537         (gimplify_modify_expr_to_memcpy): Mark source and destination
10538         addressable.
10539         * omp-low.c (create_omp_child_function): Mark the object decl
10540         TREE_ADDRESSABLE.
10541         (lower_rec_input_clauses): Mark the var we take the address of
10542         TREE_ADDRESSABLE.
10543         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
10544
10545 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10546
10547         PR middle-end/39315
10548         * cfgexpand.c (expand_one_stack_var_at): Change alignment
10549         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
10550
10551 2009-03-27  Richard Guenther  <rguenther@suse.de>
10552
10553         PR tree-optimization/39120
10554         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
10555         constraints.
10556         (handle_lhs_call): Process return constraints.  Add escape
10557         constraints if necessary.
10558         (handle_const_call): Fill out return constraints.  Make nested
10559         case more precise.  Avoid consttmp if possible.
10560         (handle_pure_call): Fill out return constraints.  Avoid
10561         callused if possible.
10562         (find_func_aliases): Simplify call handling.
10563
10564 2009-03-27  Richard Guenther  <rguenther@suse.de>
10565
10566         PR tree-optimization/39120
10567         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
10568         as a representative.
10569         (solve_graph): Do propagate CALLUSED.
10570         (handle_pure_call): Use a scalar constraint from CALLUSED for
10571         the return value.
10572         (find_what_p_points_to): CALLUSED shall not appear in poins-to
10573         solutions.
10574
10575 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10576
10577         PR c/39323
10578         * c-common.c (handle_aligned_attribute): Properly check alignment
10579         overflow.  Use (1U << i) instead of (1 << i).
10580
10581         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
10582
10583         * expr.h (get_mem_align_offset): Updated.
10584
10585         * tree.h (tree_decl_common): Change align to "unsigned int" and
10586         move it before pointer_alias_set.
10587
10588 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10589             Jakub Jelinek  <jakub@redhat.com>
10590
10591         PR target/38034
10592         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
10593         gr_register_operand with gr_reg_or_0_operand.
10594         (cmpxchg_rel_di): Likewise.
10595         (sync_lock_test_and_set<mode>): Likewise.
10596
10597 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10598
10599         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
10600         (true_regnum): Likewise.
10601
10602         * rtlanal.c (subreg_info): Moved to ...
10603         * rtl.h (subreg_info): Here.  New.
10604         (subreg_get_info): New.
10605
10606         * rtlanal.c (subreg_get_info): Make it extern.
10607
10608 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10609
10610         PR target/39472
10611         * config/i386/i386.c (ix86_abi): New.
10612         (override_options): Handle -mabi=.
10613         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
10614         (ix86_call_abi_override): Likewise.
10615         (init_cumulative_args): Likewise.
10616         (function_arg_advance): Likewise.
10617         (function_arg_64): Likewise.
10618         (function_arg): Likewise.
10619         (ix86_pass_by_reference): Likewise.
10620         (ix86_function_value_regno_p): Likewise.
10621         (ix86_build_builtin_va_list_abi): Likewise.
10622         (setup_incoming_varargs_64): Likewise.
10623         (is_va_list_char_pointer): Likewise.
10624         (ix86_init_machine_status): Likewise.
10625         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
10626         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
10627         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
10628         (ix86_function_abi): Make it static and return enum calling_abi.
10629         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
10630         with ix86_abi.
10631         (ix86_fn_abi_va_list): Updated.
10632
10633         * config/i386/i386.h (ix86_abi): New.
10634         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
10635         (CONDITIONAL_REGISTER_USAGE): Likewise.
10636         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
10637         (machine_function): Likewise.
10638
10639         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
10640         with ix86_abi.
10641         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
10642         (STACK_BOUNDARY): Likewise.
10643         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
10644
10645         * config/i386/i386.opt (mabi=): New.
10646
10647         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
10648         return enum calling_abi.
10649         (ix86_function_type_abi): Likewise.
10650         (ix86_function_abi): Removed.
10651
10652         * doc/invoke.texi: Document -mabi= option for x86.
10653
10654 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10655
10656         * builtins.c (real_dconstp): Delete.
10657         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
10658
10659 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
10660             Jakub Jelinek  <jakub@redhat.com>
10661
10662         PR debug/37959
10663         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
10664         (gen_subprogram_die): When a function is explicit, generate the
10665         DW_AT_explicit attribute.
10666         * langhooks.h (struct lang_hooks_for_decls): Add
10667         function_decl_explicit_p langhook.
10668         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
10669         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
10670
10671 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
10672
10673         * builtins.c (fold_builtin_memory_op): Optimize memmove
10674         into memcpy if we can prove source and destination don't overlap.
10675
10676         * tree-inline.c: Include gt-tree-inline.h.
10677         (clone_fn_id_num): New variable.
10678         (clone_function_name): New function.
10679         (tree_function_versioning): Use it.
10680         * Makefile.in (GTFILES): Add tree-inline.c.
10681
10682 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
10683
10684         * BASE-VER: Change to 4.5.0.
10685
10686 2009-03-27  Xinliang David Li  <davidxl@google.com>
10687
10688         PR tree-optimization/39557
10689         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
10690
10691 2009-03-27  Xinliang David Li  <davidxl@google.com>
10692
10693         PR tree-optimization/39548
10694         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
10695         candidate check.
10696
10697 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10698
10699         * c-common.c (pointer_int_sum): Use %wd on return from
10700         tree_low_cst.
10701
10702 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10703
10704         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
10705         on return from tree_low_cst.
10706
10707 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10708
10709         PR c++/36799
10710         * ginclude/stdarg.h (va_copy): Define also for
10711         __GXX_EXPERIMENTAL_CXX0X__.
10712
10713 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10714
10715         PR c++/35652
10716         * builtins.h (c_strlen): Do not warn here.
10717         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
10718         * c-common.c (pointer_int_sum): Take an explicit location.
10719         Warn about offsets out of bounds.
10720         * c-common.h (pointer_int_sum): Adjust declaration.
10721
10722 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10723
10724         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
10725         markup glitch.
10726
10727 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
10728
10729         PR c++/39554
10730         * opts.c (warn_if_disallowed_function_p): Don't assume
10731         get_callee_fndecl must return non-NULL.
10732
10733 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
10734
10735         PR rtl-optimization/39522
10736         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
10737         when reg_reloaded_valid is set.
10738
10739 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10740
10741         * config/spu/divv2df3.c: New file.
10742         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
10743         (DPBIT_FUNCS): Filter out _div_df.
10744
10745 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
10746
10747         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
10748         a jump insn, count that jump in the distance to the loop start.
10749
10750 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
10751
10752         PR target/39523
10753         * config/sh/sh.c (calc_live_regs): Fix condition for global
10754         registers except PIC_OFFSET_TABLE_REGNUM.
10755
10756 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
10757
10758         PR/39518
10759         * doc/invoke.texi (-mconsole): New.
10760         (-mcygwin): New.
10761         (-mno-cygwin): New.
10762         (-mdll): New.
10763         (-mnop-fun-dllimport): New.
10764         (-mthread): New.
10765         (-mwin32): New.
10766         (-mwindows): New.
10767         (sub section "i386 and x86-64 Windows Options"): New.
10768
10769 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
10770
10771         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
10772         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
10773
10774 2009-03-25  Richard Guenther  <rguenther@suse.de>
10775
10776         PR middle-end/39497
10777         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
10778         of -Wno-error.
10779
10780 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
10781
10782         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
10783         neither of haifa/selective schedulers are working.
10784
10785 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10786
10787         * doc/invoke.texi (Debugging Options): Fix description of
10788         -fno-merge-debug-strings.
10789
10790 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
10791
10792         * config/cris/libgcc.ver: New version-script.
10793         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
10794
10795         * configure.ac <GAS features, nop mnemonic>: Add pattern
10796         crisv32-*-* for "nop".
10797         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
10798         * configure: Regenerate.
10799
10800 2009-03-24  Ira Rosen  <irar@il.ibm.com>
10801
10802         PR tree-optimization/39529
10803         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
10804         mark_sym_for_renaming for the tag copied to the new vector
10805         pointer.
10806
10807 2009-03-24  Arthur Loiret  <aloiret@debian.org>
10808
10809         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
10810         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
10811         EXTRA_SPEC_FUNCTIONS.
10812         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
10813         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
10814         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
10815         -march and -mtune options.
10816
10817 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
10818
10819         * config/m68k/t-rtems: Add m5329 multilib.
10820
10821 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
10822             Jakub Jelinek  <jakub@redhat.com>
10823
10824         PR debug/39524
10825         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
10826         nodes.
10827
10828 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
10829
10830         PR c/39495
10831         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
10832         instead of c_parser_expression_conv, if original_code isn't one of the
10833         4 allowed comparison codes, fail.
10834
10835 2009-03-23  Richard Guenther  <rguenther@suse.de>
10836
10837         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
10838         * tree.h (struct tree_type): Likewise.
10839         * reload.h (struct insn_chain): Likewise.
10840         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
10841         * function.h (struct function): Likewise.
10842         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
10843
10844 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
10845
10846         PR tree-optimization/39516
10847         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
10848
10849 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
10850
10851         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
10852         should be set true if BITS_PER_WORD of target is bigger than 32
10853
10854 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
10855
10856         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
10857         Translate -B-options to -rpath-link.  Correct existing
10858         rpath-link and conditionalize on !nostdlib.
10859
10860 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10861
10862         * doc/extend.texi (Function Attributes, Variable Attributes):
10863         Fix typos.
10864         * doc/invoke.texi (Debugging Options, Optimize Options)
10865         (i386 and x86-64 Options, MCore Options): Likewise.
10866
10867 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
10868
10869         PR debug/37890
10870         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
10871         it for block local namespace aliases.
10872         (gen_decl_die): Pass context_die to gen_namespace_die.
10873
10874 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
10875
10876         PR c/39495
10877         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
10878         minimum or maximum value.
10879
10880 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
10881
10882         * reginfo.c (globalize_reg): Recompute derived reg sets.
10883
10884 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
10885
10886         PR target/39063
10887         * libgcc2.c (mprotect): Do not use signed arguments for
10888         VirtualProtect, use DWORD arguments.  Also fix the 'may
10889         be used uninitialized' warning for the np variable.
10890
10891 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
10892
10893         PR target/39496
10894         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
10895         functions using regparm calling conventions when not optimizing.
10896         (ix86_function_sseregparm): Similarly for sseregparm calling
10897         conventions.
10898
10899 2009-03-19  Li Feng  <nemokingdom@gmail.com>
10900
10901         PR middle-end/39500
10902         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
10903         dependence if the first conflict is after niter iterations.
10904
10905 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
10906
10907         PR middle-end/38609
10908         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
10909         functions with dynamic stack-pointer adjustments.
10910
10911 2009-03-19  Ben Elliston  <bje@au.ibm.com>
10912
10913         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
10914         option; change to -msdata=data.
10915
10916 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10917
10918         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
10919         and -fopenmp.
10920
10921 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
10922
10923         PR target/35180
10924         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
10925
10926 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
10927
10928         * doc/invoke.texi (Code Gen Options): Expand discussion of
10929         -fno-common.
10930
10931 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
10932
10933         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
10934         * matrix-reorg.c (struct matrix_info): Likewise.
10935         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
10936         * rtl.h (struct mem_attrs): Likewise.
10937         * df.h (struct df): Likewise.
10938         * tree-data-ref.h (struct data_dependence_relation): Likewise.
10939         * ira-int.h (struct ira_allocno): Likewise.
10940         * df-scan.c (struct df_collection_rec): Likewise.
10941         * ira.c (struct equivalence): Likewise.
10942         * function.c (struct temp_slot): Likewise.
10943         * cfgloop.h (struct loop): Likewise.
10944
10945         PR debug/39485
10946         * function.c (use_register_for_decl): When not optimizing, disregard
10947         register keyword for variables with types containing methods.
10948
10949 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
10950
10951         PR middle-end/39447
10952         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
10953         (is_simple_operand): Call contains_component_ref_p before calling data
10954         reference analysis that would fail on COMPONENT_REFs.
10955
10956         * tree-vrp.c (search_for_addr_array): Fix formatting.
10957
10958 2009-03-18  Richard Guenther  <rguenther@suse.de>
10959
10960         * tree-vect-transform.c (vect_loop_versioning): Fold the
10961         generated comparisons.
10962         * tree-vectorizer.c (set_prologue_iterations): Likewise.
10963         (slpeel_tree_peel_loop_to_edge): Likewise.
10964
10965 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10966
10967         PR middle-end/37805
10968         * opts.c (print_specific_help): In addition to `undocumented',
10969         accept `separate' and `joined' flags if passed alone.  Describe
10970         output by the first matched one of those.
10971         (common_handle_option): Skip over empty strings.
10972         * gcc.c (display_help): Fix help string for `--help='.
10973         * doc/invoke.texi (Option Summary, Overall Options): With
10974         `--help=', classes and qualifiers can both be repeated, but
10975         only the latter can be negated.  One should not pass only
10976         negated qualifiers.  Fix markup and examples.
10977
10978         Revert
10979         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
10980         PR middle-end/37805
10981         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
10982         and -fhelp=separate.
10983
10984 2009-03-17  Jing Yu  <jingyu@google.com>
10985
10986         PR middle-end/39378
10987         * function.h (struct rtl_data): Move is_thunk from here...
10988         (struct function): ...to here.
10989         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
10990         * varasm.c (assemble_start_function): Change is_thunk from crtl to
10991         cfun.
10992         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
10993         cfun.
10994         (alpha_does_function_need_gp, alpha_start_function): Likewise.
10995         (alpha_output_function_end_prologue): Likewise.
10996         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
10997         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
10998         (rs6000_output_function_epilogue): Likewise.
10999         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
11000
11001 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
11002
11003         PR target/39482
11004         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
11005         from different units in a single alternative.
11006         (*truncdfsf_i387): Ditto.
11007         (*truncxfsf2_mixed): Ditto.
11008         (*truncxfdf2_mixed): Ditto.
11009
11010 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
11011
11012         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
11013         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
11014
11015         PR debug/39474
11016         * tree-ssa-live.c (remove_unused_locals): Don't remove local
11017         unused non-artificial variables when not optimizing.
11018
11019         PR debug/39471
11020         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
11021         DW_TAG_imported_module even if decl is IMPORTED_DECL with
11022         NAMESPACE_DECL in its DECL_INITIAL.
11023
11024         PR middle-end/39443
11025         * optabs.c (set_user_assembler_libfunc): New function.
11026         * expr.h (set_user_assembler_libfunc): New prototype.
11027         * c-common.c: Include libfuncs.h.
11028         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
11029         for memcmp, memset, memcpy, memmove and abort.
11030         * Makefile.in (c-common.o): Depend on libfuncs.h.
11031
11032         PR debug/39412
11033         * dwarf2out.c (gen_inlined_enumeration_type_die,
11034         gen_inlined_structure_type_die, gen_inlined_union_type_die,
11035         gen_tagged_type_instantiation_die): Removed.
11036         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
11037         do nothing.
11038
11039 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
11040
11041         PR testsuite/38526
11042         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
11043         its use.
11044         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
11045         (check-parallel-%): Ditto.
11046         (check-consistency): Ditto.
11047
11048 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
11049
11050         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
11051         local variable rhs by NULL_TREE.
11052
11053 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11054
11055         PR target/39477
11056         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
11057
11058 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11059
11060         PR target/39476
11061         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
11062
11063 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11064
11065         PR target/39473
11066         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
11067         for ms->sysv ABI calls only in 64bit mode.
11068
11069         * config/i386/i386.md (untyped_call): Support 32bit.
11070
11071 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
11072
11073         * doc/extend.texi: Replace x86_65 with x86_64.
11074
11075 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
11076
11077         PR tree-optimization/39455
11078         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
11079         mismatches for POINTER_TYPE_P (type).
11080         (number_of_iterations_le): Likewise.
11081
11082 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11083
11084         * config/picochip/picochip.c: Removed profiling support.
11085         * config/picochip/picochip.md: Removed profiling instruction.
11086         * config/picochip/picochip.h: Removed profiling builtin.
11087
11088 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
11089
11090         * doc/install.texi (--with-host-libstdcxx): Document.
11091
11092 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
11093
11094         PR target/34299
11095         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
11096         generate a warning if the function name does not begin with
11097         "__vector" and the function has either the 'signal' or 'interrupt'
11098         attribute, from here to ...
11099         (avr_declare_function_name): ...here. New function.
11100         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
11101         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
11102
11103 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
11104
11105         PR bootstrap/39454
11106         * cse.c (fold_rtx): Don't modify original const_arg1 when
11107         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
11108         separate variable instead.
11109         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
11110         from out of range shift counts.
11111         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
11112
11113 2009-03-13  Catherine Moore  <clm@codesourcery.com>
11114
11115         * config/i386/x-mingw32 (host-mingw32.o): Replace
11116         diagnostic.h with $(DIAGNOSTIC_H).
11117
11118 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
11119
11120         PR target/39431
11121         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
11122         predicate.
11123         * config/i386/sync.md (sync_compare_and_swap<mode>,
11124         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
11125         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
11126         into a register.
11127         (sync_double_compare_and_swapdi_pic,
11128         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
11129         cmpxchg8b_pic_memory_operand instead of just memory_operand.
11130
11131 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11132
11133         PR target/39445
11134         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
11135
11136 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11137
11138         PR target/39327
11139         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11140         (avx_addsubv4df3): Likewise.
11141         (*avx_addsubv4sf3): Likewise.
11142         (sse3_addsubv4sf3): Likewise.
11143
11144 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11145
11146         PR target/38824
11147         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
11148
11149 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
11150
11151         PR debug/39432
11152         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
11153         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11154         registers for allocnos created from user-defined variables.
11155
11156 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11157
11158         PR target/39181
11159         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
11160         of non-integer mode as well.
11161
11162 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
11163
11164         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
11165         for functions for which the parameter types are unknown.
11166
11167 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
11168
11169         PR target/39137
11170         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
11171         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
11172         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
11173         * config/i386/i386.c (ix86_local_alignment): For
11174         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
11175         long long variables on the stack to avoid dynamic realignment.
11176         Allow the first argument to be a decl rather than type.
11177         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
11178
11179 2009-03-11  Nick Clifton  <nickc@redhat.com>
11180
11181         PR target/5362
11182         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
11183         options.
11184         Add description to mno-lsim option.
11185         * config/mcore/mcore.h: Remove comment about deprecated m4align
11186         option.
11187         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
11188         * doc/invoke.texi: Add description of mno-lsim and
11189         mstack-increment options.
11190
11191         * config/fr30/fr30.opt: Document the -mno-lsim option.
11192         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
11193         and -mno-lsim options.
11194
11195 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11196
11197         * fold-const.c (fold_comparison): Only call fold_inf_compare
11198         if the mode supports infinities.
11199
11200 2009-03-11  Jason Merrill  <jason@redhat.com>
11201
11202         PR debug/39086
11203         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
11204         end already did.  Notice GIMPLE_CALL modifications of the result.
11205         Don't copy debug information from an ignored decl or a decl from
11206         another function.
11207
11208 2009-03-10  Richard Guenther  <rguenther@suse.de>
11209             Nathan Froyd  <froydnj@codesourcery.com>
11210
11211         PR middle-end/37850
11212         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
11213         (__divMODE3): Likewise.
11214
11215 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
11216
11217         PR tree-optimization/39394
11218         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
11219         DECL_SIZE_UNIT of variable length FIELD_DECLs.
11220
11221 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11222
11223         * recog.c (verfiy_changes): Disallow renaming of hard regs in
11224         inline asms for register asm ("") declarations.
11225
11226 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11227
11228         * fold-const.c (fold_unary): Fix comment.
11229
11230 2009-03-07  Jan Hubicka  <jh@suse.cz>
11231
11232         PR target/39361
11233         * tree-inline.c (setup_one_parameter): Do replacement of const
11234         argument by constant in SSA form.
11235
11236 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11237
11238         PR middle-end/38028
11239         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
11240         determine alignment passed to assign_stack_local.
11241         (assign_parms_unsplit_complex): Likewise.
11242         * except.c (sjlj_build_landing_pads): Likewise.
11243
11244 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11245
11246         PR middle-end/39360
11247         * tree-flow.h (add_referenced_var): Return bool instead of void.
11248         * tree-dfa.c (add_referenced_var): Return result of
11249         referenced_var_check_and_insert call.
11250         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
11251         of referenced_var_check_and_insert.
11252
11253         PR debug/39372
11254         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
11255         (gen_variable_die): Emit DW_AT_location on abstract static variable's
11256         DIE, don't emit it if abstract origin already has it.
11257         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
11258         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
11259
11260 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11261
11262         * genpreds.c (needs_variable): Fix parentheses at variable name
11263         detection.
11264         (write_tm_constrs_h): Indent generated code.
11265
11266 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11267
11268         * doc/extend.texi (Function Attributes): Add documentation
11269         for isr attributes.
11270
11271 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11272
11273         PR debug/39387
11274         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
11275         take locus from its DECL_SOURCE_LOCATION instead of input_location.
11276
11277 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11278
11279         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
11280         the loop as bad.
11281
11282 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
11283
11284         PR debug/39379
11285         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
11286         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
11287
11288 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
11289
11290         * config/i386/i386.md (R8_REG, R9_REG): New constants.
11291         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
11292         constants instead of magic numbers.
11293         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11294         (QI_REG_P): Ditto.
11295         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
11296         (x86_64_ms_abi_int_parameter_registers): Ditto.
11297         (x86_64_int_return_registers): Ditto.
11298         (ix86_maybe_switch_abi): Ditto.
11299         (ix86_expand_call): Ditto for clobbered_registers array.
11300         (ix86_hard_regno_mode_ok): Ditto.
11301         (x86_extended_QIreg_mentioned_p): Ditto.
11302
11303 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
11304
11305         PR tree-optimization/39349
11306         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
11307
11308         * combine.c (gen_lowpart_for_combine): Use omode when generating
11309         clobber.
11310
11311 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
11312
11313         PR rtl-optimization/39235
11314         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
11315
11316 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11317
11318         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
11319
11320 2009-03-04  Richard Guenther  <rguenther@suse.de>
11321
11322         PR tree-optimization/39362
11323         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
11324         that occur in abnormal PHIs should be varying.
11325
11326 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11327
11328         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
11329         Extend comments.
11330         (simple_iv):  Take loop as an argument instead of statement.
11331         * tree-scalar-evolution.h (simple_iv): Declaration changed.
11332         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
11333         to simple_iv.
11334         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
11335         Ditto.
11336         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
11337         * matrix-reorg.c (analyze_transpose): Ditto.
11338         * tree-data-ref.c (dr_analyze_innermost): Ditto.
11339         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
11340         * tree-predcom.c (ref_at_iteration): Ditto.
11341         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
11342
11343 2009-03-04  Richard Guenther  <rguenther@suse.de>
11344
11345         PR tree-optimization/39358
11346         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
11347         escaped_id and callused_id.
11348         (solve_graph): Likewise.
11349
11350 2009-03-04  Richard Guenther  <rguenther@suse.de>
11351
11352         PR tree-optimization/39339
11353         * tree-sra.c (try_instantiate_multiple_fields): Make it
11354         no longer ICE on the above.
11355
11356 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
11357
11358         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
11359         that fits within Pmode.
11360
11361 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11362
11363         PR middle-end/10109
11364         * tm.texi (LIBCALL_VALUE): Update description.
11365
11366 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11367
11368         PR middle-end/34443
11369         * doc/extend.texi (section): Update description.
11370
11371 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
11372
11373         PR middle-end/39345
11374         * tree-inline.c (remapped_type): New.
11375         (can_be_nonlocal): Call remapped_type instead of remap_type.
11376
11377 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11378
11379         PR fortran/39354
11380         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
11381         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
11382
11383 2009-03-03  Richard Guenther  <rguenther@suse.de>
11384
11385         PR middle-end/39272
11386         * tree.c (tree_nonartificial_location): New function.
11387         * tree.h (tree_nonartificial_location): Declare.
11388         * builtins.c (expand_builtin_memory_chk): Provide location
11389         of the call location for artificial function pieces.
11390         (maybe_emit_chk_warning): Likewise.
11391         (maybe_emit_sprintf_chk_warning): Likewise.
11392         (maybe_emit_free_warning): Likewise.
11393         * expr.c (expand_expr_real_1): Likewise.
11394
11395 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11396
11397         PR tree-optimization/39343
11398         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
11399         COMPONENT_REF t has ARRAY_TYPE.
11400
11401 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
11402
11403         PR middle-end/39335
11404         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
11405         when the type precision of the induction variable should be
11406         larger than the type precision of nit.
11407         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
11408         * graphite.c (graphite_loop_normal_form): Same.
11409         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
11410
11411 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11412
11413         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
11414         (*call_1_rex64_ms_sysv): Use named constants instead of magic
11415         numbers to describe clobbered registers.
11416         (*call_value_0_rex64_ms_sysv): Ditto.
11417         * config/i386/mmx.md (mmx_emms): Ditto.
11418         (mmx_femms): Ditto.
11419
11420 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
11421
11422         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
11423         of ABI_64.
11424
11425 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11426
11427         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
11428         (spu_section_type_flags): New function.
11429
11430 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11431
11432         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
11433         reg_class_contents of FLOAT_REGS into a temporary.
11434
11435 2009-03-02  Richard Guenther  <rguenther@suse.de>
11436             Ira Rosen  <irar@il.ibm.com>
11437
11438         PR tree-optimization/39318
11439         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
11440         information to the vectorized statement.
11441
11442 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
11443
11444         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
11445         variable.  Use defined names instead of magic constants for REX SSE
11446         registers.
11447
11448 2009-03-01  Richard Guenther  <rguenther@suse.de>
11449
11450         PR tree-optimization/39331
11451         * omp-low.c (lower_send_shared_vars): Do not receive new
11452         values for the reference of DECL_BY_REFERENCE parms or results.
11453
11454 2009-03-01  Jan Hubicka  <jh@suse.cz>
11455
11456         PR debug/39267
11457         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
11458         BLOCK_NONLOCALIZED_VAR): New macros.
11459         (tree_block): Add nonlocalized_vars.
11460         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
11461         gen_decl_die): Add origin argument.  Allow generation of die with
11462         origin at hand only.
11463         (gen_member_die, gen_type_die_with_usage, force_decl_die,
11464         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
11465         of gen_*.
11466         (gen_block_die): Fix checking for unused blocks.
11467         (process_scope_var): Break out from .... ; work with origins only.
11468         (decls_for_scope) ... here; process nonlocalized list.
11469         (dwarf2out_ignore_block): Look for nonlocalized vars.
11470         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
11471         vars.
11472         (dump_scope_block): Dump them.
11473         * tree-inline.c (remap_decls): Handle nonlocalized vars.
11474         (remap_block): Likewise.
11475         (can_be_nonlocal): New predicate.
11476         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
11477
11478 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11479
11480         * configure: Regenerate.
11481
11482 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11483
11484         * optc-gen.awk: No need to duplicate option flags twice.
11485         Reuse help texts for duplicate options which do not have any.
11486
11487         * gcc.c (display_help): Document --version.
11488
11489         * gcc.c (main): If print_help_list and verbose_flag, ensure
11490         driver output comes before subprocess output.
11491
11492         * optc-gen.awk: Assign all remaining fields to help string,
11493         space-separated, for multi-line help in *.opt.
11494
11495         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
11496         -Wno-pedantic-ms-format is for MinGW targets only.
11497
11498         * doc/options.texi (Option file format): Fix bad indentation,
11499         restoring dropped sentence.
11500
11501 2009-02-28  Jan Hubicka  <jh@suse.cz>
11502
11503         * tree-inline.c (tree_function_versioning): Output debug info.
11504
11505 2009-02-28  Jan Hubicka  <jh@suse.cz>
11506
11507         PR debug/39267
11508         * tree-inline.c (setup_one_parameter): Do not copy propagate
11509         arguments when not optimizing.
11510
11511 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
11512
11513         PR target/39327
11514         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11515         (avx_addsubv4df3): Likewise.
11516         (*avx_addsubv4sf3): Likewise.
11517         (sse3_addsubv4sf3): Likewise.
11518         (*avx_addsubv2df3): Likewise.
11519         (sse3_addsubv2df3): Likewise.
11520         (avx_unpckhps256): Correct item selectors.
11521         (avx_unpcklps256): Likewise.
11522         (avx_unpckhpd256): Likewise.
11523         (avx_unpcklpd256): Likewise.
11524
11525 2009-02-28  Jan Hubicka  <jh@suse.cz>
11526
11527         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
11528         static vars.
11529         (copy_arguments_for_versioning): If var is declared don't declare it.
11530         (tree_function_versioning): First setup substitutions and then copy
11531         args.
11532
11533 2009-02-27  Jan Hubicka  <jh@suse.cz>
11534
11535         PR debug/39267
11536         * cgraph.h (varpool_output_debug_info): Remove.
11537         * cgraphunit.c (varpool_output_debug_info): Remove.
11538         * dwarf2out.c (deferred_locations_struct): New struct
11539         (deferred_locations): New type.
11540         (deferred_locations_list): New static var.
11541         (deffer_location): New function.
11542         (gen_variable_die): Use it.
11543         (decls_for_scope): Output info on local static vars.
11544         (dwarf2out_finish): Process deferred locations.
11545         * varpool.c (varpool_output_debug_info): Remove.
11546
11547 2009-02-27  Jan Hubicka  <jh@suse.cz>
11548
11549         PR debug/39267
11550         * tree.h (TREE_PROTECTED): Fix comment.
11551         (BLOCK_HANDLER_BLOCK): Remove.
11552         (struct tree_block): Remove handler_block add body_block.
11553         (inlined_function_outer_scope_p): New.
11554         (is_body_block): Remove.
11555         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
11556         * dwarf2out.c (is_inlined_entry_point): Remove.
11557         (add_high_low_attributes): Use inlined_function_outer_scope_p.
11558         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
11559         code.
11560         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
11561         * gimplify.c (gimplify_expr): Gimplify body blocks.
11562         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
11563         block with multiple subblocks.
11564         (dump_scope_block): Prettier output; dump more flags and info.
11565         (dump_scope_blocks): New.
11566         (remove_unused_locals): Use dump_scope_blocks.
11567         * tree-flow.h (dump_scope_blocks): Declare.
11568         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
11569         * stmt.c (is_body_block): Remove.
11570         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
11571         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
11572
11573 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
11574
11575         PR middle-end/39308
11576         * graphite.c (graphite_loop_normal_form): Do not call
11577         number_of_iterations_exit from a gcc_assert.
11578
11579 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11580
11581         * config/s390/s390.c (s390_swap_cmp): Look for conditional
11582         jumps if COND is NULL.
11583         (find_cond_jump): New function.
11584         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
11585         * config/s390/s390.md: Remove z10_cobra attribute value.
11586
11587 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
11588
11589         * config/alpha/alpha.h (alpha_expand_mov): Return false if
11590         force_const_mem returns NULL_RTX.
11591
11592 2009-02-26  Jan Hubicka  <jh@suse.cz>
11593
11594         PR debug/39267
11595         * cgraph.h (varpool_output_debug_info): Remove.
11596         * cgraphunit.c (varpool_output_debug_info): Remove.
11597         * dwarf2out.c (deferred_locations_struct): New struct
11598         (deferred_locations): New type.
11599         (deferred_locations_list): New static var.
11600         (deffer_location): New function.
11601         (gen_variable_die): Use it.
11602         (decls_for_scope): Output info on local static vars.
11603         (dwarf2out_finish): Process deferred locations.
11604         * varpool.c (varpool_output_debug_info): Remove.
11605
11606 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
11607
11608         PR rtl-optimization/39241
11609         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
11610         to subreg_offset_representable_p.
11611
11612 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11613
11614         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
11615         execute function prototype.  Get f and nregs from max_reg_num
11616         and get_insns.  Remove the first backward pass as it's dead,
11617         guard the forward pass by flag_expensive_optimizations.
11618         (rest_of_handle_regmove): Delete.
11619         (pass_regmove): Replace it with regmove_optimize.
11620
11621 2009-02-25  Martin Jambor  <mjambor@suse.cz>
11622
11623         PR tree-optimization/39259
11624         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
11625         calls_alloca function flags.
11626         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
11627         calls are detected.
11628
11629 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11630
11631         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
11632         flags_set_1_rtx, flags_set_1_set): Delete.
11633         (regmove_optimize): Do not call mark_flags_life_zones.
11634
11635 2009-02-24  Julian Brown  <julian@codesourcery.com>
11636
11637         PR target/35965
11638         * config/arm/arm.c (require_pic_register): Only set
11639         cfun->machine->pic_reg once per function.
11640
11641 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
11642
11643         * doc/invoke.texi (Link Options): Document an easier way to pass
11644         options that take arguments to the GNU linker using -Xlinker and -Wl.
11645
11646 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
11647
11648         PR target/33785
11649         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
11650
11651 2009-02-24  Richard Guenther  <rguenther@suse.de>
11652
11653         PR debug/39285
11654         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
11655
11656 2009-02-24  Richard Guenther  <rguenther@suse.de>
11657             Zdenek Dvorak  <ook@ucw.cz>
11658
11659         PR tree-optimization/39233
11660         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
11661         from converting them to a generic type.
11662
11663 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
11664
11665         PR tree-optimization/39260
11666         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
11667         contains a condition with a real type.
11668         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
11669
11670 2009-02-23  Jason Merrill  <jason@redhat.com>
11671
11672         PR c++/38880
11673         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
11674         narrowing_initializer_constant_valid_p.
11675         (narrowing_initializer_constant_valid_p): Don't return
11676         null_pointer_node for adding a pointer to itself.
11677
11678 2009-02-23  Jan Hubicka  <jh@suse.cz>
11679
11680         PR c/12245
11681         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
11682         resizing.
11683
11684 2009-02-23  Jan Hubicka  <jh@suse.cz>
11685
11686         PR tree-optimization/37709
11687         * tree.c (block_ultimate_origin): Move here from dwarf2out.
11688         * tree.h (block_ultimate_origin): Declare.
11689         * dwarf2out.c (block_ultimate_origin): Move to tree.c
11690         * tree-ssa-live.c (remove_unused_scope_block_p):
11691         Eliminate blocks containig no instructions nor live variables nor
11692         nested blocks.
11693         (dump_scope_block): New function.
11694         (remove_unused_locals): Enable removal of dead blocks by default;
11695         enable dumping at TDF_DETAILS.
11696
11697 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11698
11699         * config/i386/i386.c (classify_argument): Don't allow COImode
11700         and OImode.
11701         (function_arg_advance_32): Don't allow OImode.
11702         (function_arg_32): Likewise.
11703         (function_value_32): Likewise.
11704         (return_in_memory_32): Likewise.
11705         (function_arg_64): Remove OImode comment.
11706
11707 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11708
11709         PR target/39261
11710         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
11711         ix86_expand_vector_set for V4DImode in 64bit mode only.
11712         (ix86_expand_vector_init_one_var): Likewise.
11713
11714 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
11715
11716         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
11717
11718 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
11719
11720         PR bootstrap/39257
11721         * loop-iv.c: Revert last change.
11722         * emit-rtl.c: Likewise.
11723
11724 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11725
11726         PR target/39256
11727         * config/i386/i386.c (type_natural_mode): Remove an extra
11728         space in the warning message.
11729         (function_value_32): Handle 32-byte vector modes.
11730         (return_in_memory_32): Likewise.
11731
11732 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
11733
11734         * loop-iv.c (truncate_value): New function.
11735         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
11736         of lowpart_subreg.
11737         (lowpart_subreg): Move to...
11738         * emit-rtl.c: ...here.
11739
11740 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
11741
11742         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
11743         accidental and undocumented change at revision 140860.
11744
11745 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
11746
11747         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
11748         take gimple_seq * arguments.
11749         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
11750         types_compatible_p langhook.
11751
11752 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
11753             Joseph Myers  <joseph@codesourcery.com>
11754
11755         * config/arm/arm.c (arm_builtin_va_list): New function.
11756         (arm_expand_builtin_va_start): Likewise.
11757         (arm_gimplify_va_arg_expr): Likewise.
11758         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
11759         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
11760         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
11761         (va_list_type): New variable.
11762         (arm_mangle_type): Mangle va_list_type appropriately.
11763
11764 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
11765
11766         PR middle-end/39157
11767         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
11768         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
11769         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
11770         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
11771         parameter to 1000 for -O1 by default.
11772         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
11773         parameter.
11774         * loop-invariant.c: Include params.h.
11775         (move_loop_invariants): Don't call move_single_loop_invariants on
11776         very large loops.
11777
11778 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
11779
11780         * calls.c (emit_library_call_value_1): Use slot_offset instead of
11781         offset when calculating bounds for indexing stack_usage_map.  Fixes
11782         a buffer overflow with certain target setups.
11783
11784 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
11785
11786         PR target/39240
11787         * calls.c (expand_call): Clear try_tail_call if caller and callee
11788         disagree in promotion of function return value.
11789
11790 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
11791
11792         PR target/39175
11793         * c-common.c (c_determine_visibility): If visibility changed and
11794         DECL_RTL has been already set, call make_decl_rtl to update symbol
11795         flags.
11796
11797 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
11798
11799         PR c++/39188
11800         * varasm.c (assemble_variable): Don't check DECL_NAME when
11801         globalizing a variable.
11802
11803 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
11804
11805         PR c/38483
11806         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
11807         expression before any __builtin_trap call.
11808         * c-typeck.c (build_function_call): Convert and check function
11809         arguments before generating a call to a trap.  Evaluate the
11810         function arguments before the trap.
11811
11812 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
11813
11814         PR target/39228
11815         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
11816         (UNSPEC_FXAM_MEM): New unspec.
11817         (fxam<mode>2_i387_with_temp): New insn and split pattern.
11818         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
11819         memory using fxam<mode>2_i387_with_temp to remove excess precision.
11820
11821 2009-02-19  Richard Guenther  <rguenther@suse.de>
11822
11823         PR tree-optimization/39207
11824         PR tree-optimization/39074
11825         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
11826         storedanything_tree): New.
11827         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
11828         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
11829         (build_succ_graph): Add edges from STOREDANYTHING to all
11830         non-direct nodes.
11831         (init_base_vars): Initialize STOREDANYTHING.
11832         (compute_points_to_sets): Free substitution info after
11833         building the succ graph.
11834         (ipa_pta_execute): Likewise.
11835
11836         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
11837         field.
11838         (do_ds_constraint): Do not add to special var or non-pointer
11839         field solutions.
11840         (type_could_have_pointers): Split out from ...
11841         (could_have_pointers): ... here.  For arrays use the element type.
11842         (create_variable_info_for): Initialize may_have_pointers.
11843         (new_var_info): Likewise.
11844         (handle_lhs_call): Make the HEAP variable unknown-sized.
11845         (intra_create_variable_infos): Use a type with pointers for
11846         PARM_NOALIAS, make it unknown-sized.
11847
11848 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
11849
11850         PR target/39224
11851         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
11852
11853 2009-02-18  Jason Merrill  <jason@redhat.com>
11854
11855         PR target/39179
11856         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
11857         value if DECL_EXTERNAL.
11858         * tree-sra.c (sra_walk_gimple_assign): Likewise.
11859         * target.h (gcc_target::binds_local_p): Clarify "module".
11860         * tree.h (TREE_PUBLIC): Clarify "module".
11861
11862 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
11863
11864         PR target/38891
11865         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
11866         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
11867
11868 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
11869
11870         PR target/39082
11871         * c.opt (Wabi): Support C and ObjC.
11872         (Wpsabi): New.
11873
11874         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
11875
11876         * config/i386/i386.c (classify_argument): Warn once about the ABI
11877         change when passing union with long double.
11878
11879         * doc/invoke.texi: Update -Wabi for warning psABI changes.
11880
11881 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
11882
11883         PR c/35447
11884         * c-parser.c (c_parser_compound_statement): Always enter and leave
11885         a scope.
11886
11887 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11888
11889         PR target/34587
11890         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
11891
11892 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
11893
11894         PR tree-optimization/36922
11895         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
11896         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
11897         Likewise.
11898
11899 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11900
11901         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
11902         to 0 for EABI64.
11903
11904 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11905
11906         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
11907
11908 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11909
11910         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
11911         tree sharing.
11912
11913 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
11914             Richard Sandiford  <rdsandiford@googlemail.com>
11915
11916         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
11917         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
11918         (loongson_biadd): ...this.
11919
11920 2009-02-17  Richard Guenther  <rguenther@suse.de>
11921
11922         PR tree-optimization/39202
11923         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
11924         a var make sure to follow existing collapses.
11925
11926 2009-02-17  Richard Guenther  <rguenther@suse.de>
11927
11928         PR middle-end/39214
11929         * langhooks.c (lhd_print_error_function): Check for NULL block.
11930
11931 2009-02-17  Richard Guenther  <rguenther@suse.de>
11932
11933         PR tree-optimization/39204
11934         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
11935         of the PHI arg.
11936
11937 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
11938
11939         * config/soft-fp/double.h: Update from glibc CVS.
11940
11941 2009-02-17  Richard Guenther  <rguenther@suse.de>
11942
11943         PR tree-optimization/39207
11944         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
11945         strict-aliasing warnings for pointers pointing to NULL.
11946
11947 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
11948
11949         PR c/35446
11950         * c-parser.c (c_parser_braced_init): Call pop_init_level when
11951         skipping until next close brace.
11952
11953 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
11954
11955         PR target/37049
11956         * config/i386/i386.c (ix86_expand_push): Set memory alignment
11957         to function argument boundary.
11958
11959 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11960
11961         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
11962         in the lea_add. Reload eventually constraints it properly.
11963         * config/picochip/constraints.md: Remove the target constraint
11964         "b", since it is not needed anymore.
11965
11966 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
11967
11968         * gthr-dce.h: Uglify function parameter and local variable names.
11969         * gthr-gnat.h: Likewise.
11970         * gthr-mipssde.h: Likewise.
11971         * gthr-nks.h: Likewise.
11972         * gthr-posix95.h: Likewise.
11973         * gthr-posix.h: Likewise.
11974         * gthr-rtems.h: Likewise.
11975         * gthr-single.h: Likewise.
11976         * gthr-solaris.h: Likewise.
11977         * gthr-tpf.h: Likewise.
11978         * gthr-vxworks.h: Likewise.
11979         * gthr-win32.h: Likewise.
11980
11981 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
11982
11983         PR target/39196
11984         * config/i386/i386.md: Restrict the new peephole2 to move
11985         between MMX/SSE registers.
11986
11987 2009-02-15  Richard Guenther  <rguenther@suse.de>
11988
11989         Revert
11990         2009-02-13  Richard Guenther  <rguenther@suse.de>
11991
11992         * configure.ac: Enable LFS.
11993         * configure: Re-generate.
11994         * config.in: Likewise.
11995
11996 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11997
11998         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
11999         spu_srqwbyte, spu_srqwbytebc): Define.
12000         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
12001         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
12002         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
12003         "shrqby_<mode>"): New insn-and-split patterns.
12004         * config/spu/spu.c (expand_builtin_args): Determine and return
12005         number of operands using spu_builtin_description data.
12006         (spu_expand_builtin_1): Use it.
12007
12008 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
12009
12010         PR target/38056
12011         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
12012         TARGET_CONST_GP.
12013
12014 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12015
12016         PR target/39149
12017         * config/i386/i386.c (override_options): Correct warning
12018         messages for -malign-loops, -malign-jumps and -malign-functions.
12019
12020 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12021
12022         PR target/39152
12023         * config/i386/i386.md: Restrict the new peephole2 to move
12024         between the general purpose registers.
12025
12026 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12027
12028         PR target/39162
12029         * config/i386/i386.c (type_natural_mode): Add a new argument.
12030         Return the original mode and warn ABI change if vector size is 32byte.
12031         (function_arg_advance): Updated.
12032         (function_arg): Likewise.
12033         (ix86_function_value): Likewise.
12034         (ix86_return_in_memory): Likewise.
12035         (ix86_sol10_return_in_memory): Likewise.
12036         (ix86_gimplify_va_arg): Likewise.
12037         (function_arg_32): Don't warn ABX ABI change here.
12038         (function_arg_64): Likewise.
12039
12040 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
12041
12042         * loop-iv.c (implies_p): In the final case, test that operands 0
12043         of the two comparisons match.
12044
12045         * config/bfin/bfin.c (find_prev_insn_start): New function.
12046         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
12047         (find_next_insn_start): Move.
12048
12049 2009-02-13  Richard Guenther  <rguenther@suse.de>
12050
12051         * configure.ac: Enable LFS.
12052         * configure: Re-generate.
12053         * config.in: Likewise.
12054
12055 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
12056
12057         PR c/35444
12058         * c-parser.c (c_parser_parms_list_declarator): Discard pending
12059         sizes on syntax error after some arguments have been parsed.
12060
12061 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12062
12063         * doc/invoke.texi (-fira): Remove.
12064
12065 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12066
12067         * caller-save.c: Replace regclass.c with reginfo.c in comments.
12068         * recog.c: Likewise.
12069         * rtl.h: Likewise.
12070
12071 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
12072
12073         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
12074         (umul_ppmm): Likewise.
12075         (count_leading_zeros): Likewise.
12076         (count_trailing_zeros): Likewise.
12077         (UMUL_TIME): Likewise.
12078
12079 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12080
12081         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
12082         soft-fp/t-softfp to tmake_file.
12083
12084         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
12085         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
12086         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
12087         IA64_BUILTIN_INFQ]: New.
12088         (ia64_init_builtins): Initialize __builtin_infq,
12089         __builtin_fabsq and __builtin_copysignq if not HPUX.
12090         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
12091         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
12092
12093         * config/ia64/lib1funcs.asm (__divtf3): Define only if
12094         SHARED is defined.
12095         (__fixtfti): Likewise.
12096         (__fixunstfti): Likewise.
12097         (__floattitf): Likewise.
12098
12099         * config/ia64/libgcc-glibc.ver: New.
12100         * config/ia64/t-fprules-softfp: Likewise.
12101         * config/ia64/sfp-machine.h: Likewise.
12102
12103         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
12104         (LIBGCC2_TF_CEXT): Likewise.
12105         (TF_SIZE): Likewise.
12106         (TARGET_INIT_LIBFUNCS): Likewise.
12107
12108         * config/ia64/t-glibc (SHLINB_MAPFILES):
12109         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
12110
12111 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12112
12113         * config/i386/i386.c (construct_container): Rewrite processing
12114         BLKmode with X86_64_SSE_CLASS.
12115
12116 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
12117
12118         PR target/39152
12119         * config/i386/i386.md: Replace simplify_replace_rtx with
12120         replace_rtx in the new peephole2.
12121
12122 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
12123
12124         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
12125         loop unrolling do not happen at -O2.
12126
12127 2009-02-12  Michael Matz  <matz@suse.de>
12128
12129         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
12130
12131 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12132
12133         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
12134         for -g3.
12135
12136 2009-02-12  Ben Elliston  <bje@au.ibm.com>
12137
12138         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
12139         patterns when updating the back chain.  Missed in the 2009-02-10
12140         change.
12141
12142 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
12143
12144         * doc/extend.texi (Decimal Floating Types): Update identifier of
12145         draft TR and list of missing support.
12146
12147 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
12148
12149         PR middle-end/39154
12150         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
12151         bit to variable length decl's flags, add it also to its
12152         pointer replacement variable.
12153
12154 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
12155             Jakub Jelinek  <jakub@redhat.com>
12156
12157         PR target/39118
12158         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
12159         (memory_blockage): New expander.
12160         (*memory_blockage): New insn pattern.
12161         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
12162         instead of general blockage at the end of function prologue when
12163         frame pointer is used to access red zone area.  Do not emit blockage
12164         when profiling, it is emitted in generic code.
12165         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
12166         function epilogue when frame pointer is used to access red zone area.
12167
12168 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
12169
12170         PR target/38824
12171         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
12172         by arithmetic with memory operands.
12173         * config/i386/predicates.md (commutative_operator): New.
12174
12175 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
12176
12177         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
12178         bulleted lists.
12179
12180 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
12181
12182         * alias.h (record_alias_subset): Declare.
12183         * alias.c (record_alias_subset): Make global.
12184
12185 2009-02-10  Nick Clifton  <nickc@redhat.com>
12186
12187         * tree-parloops.c: Change license to GPLv3.
12188         * ipa-struct-reorg.c: Change license to GPLv3.
12189         * ipa-struct-reorg.h: Change license to GPLv3.
12190
12191 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
12192
12193         PR c/39084
12194         * c-decl.c (start_struct): Return NULL on error.
12195
12196 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
12197
12198         PR middle-end/39124
12199         * cfgloopmanip.c (remove_path): Call remove_bbs after
12200         cancel_loop_tree, not before it.
12201
12202         PR target/39139
12203         * function.h (struct function): Add has_local_explicit_reg_vars bit.
12204         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
12205         VAR_DECLs were seen.
12206         * tree-ssa-live.c (remove_unused_locals): Recompute
12207         cfun->has_local_explicit_reg_vars.
12208         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
12209         copies or clearings if cfun->has_local_explicit_reg_vars.
12210
12211 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
12212
12213         PR target/39118
12214         * config/i386/i386.c (expand_prologue): Emit blockage at the end
12215         of function prologue when frame pointer is used to access
12216         red zone area.
12217
12218 2009-02-10  Richard Guenther  <rguenther@suse.de>
12219
12220         PR middle-end/39127
12221         * gimplify.c (gimple_regimplify_operands): Always look if
12222         we need to create a temporary.
12223
12224 2009-02-10  Richard Guenther  <rguenther@suse.de>
12225
12226         PR tree-optimization/39132
12227         * tree-loop-distribution.c (todo): New global var.
12228         (generate_memset_zero): Trigger TODO_rebuild_alias.
12229         (tree_loop_distribution): Return todo.
12230
12231 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
12232
12233         PR target/39119
12234         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
12235         (x86_64_reg_class_name): Removed.
12236         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
12237         first one isn't X86_64_SSE_CLASS or any other ones aren't
12238         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
12239         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
12240         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
12241         and 3 X86_64_SSEUP_CLASS.
12242         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
12243         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
12244
12245 2009-02-10  Ben Elliston  <bje@au.ibm.com>
12246
12247         * config/rs6000/rs6000.md (allocate_stack): Always use an update
12248         form instruction to update the stack back chain word, even if the
12249         user has disabled the generation of update instructions.
12250         (movdi_<mode>_update_stack): New.
12251         (movsi_update_stack): Likewise.
12252         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
12253         always use an update form instruction to update the stack back
12254         chain word.
12255
12256 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
12257
12258         PR middle-end/38953
12259         * graphite.c (if_region_set_false_region): After moving a region in
12260         the false branch of a condition, remove the empty dummy basic block.
12261         (gloog): Remove wrong fix for PR38953.
12262
12263 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12264
12265         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
12266         generation due to implicit sign extension.
12267
12268 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12269
12270         PR middle-end/38981
12271         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
12272         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
12273
12274 2009-02-09  Richard Guenther  <rguenther@suse.de>
12275
12276         PR middle-end/35202
12277         * convert.c (convert_to_real): Disable (float)fn((double)x)
12278         to fnf(x) conversion if errno differences may occur and
12279         -fmath-errno is set.
12280
12281 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
12282
12283         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
12284         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12285         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12286
12287 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12288
12289         PR c/35434
12290         * c-common.c (handle_alias_attribute): Disallow attribute for
12291         anything not a FUNCTION_DECL or VAR_DECL.
12292
12293 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
12294
12295         PR c/39035
12296         * real.c (do_compare): Special-case compare of zero against
12297         decimal float value.
12298
12299 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12300
12301         PR c/36432
12302         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
12303         as indicating flexible array members unless the field itself is
12304         being declarared as the incomplete array.
12305
12306 2009-02-06  Jan Hubicka  <jh@suse.cz>
12307
12308         PR tree-optimization/38844
12309         * ipa-inline.c (try_inline): Stop inlining recursion when edge
12310         is already inlined.
12311
12312 2009-02-06  Richard Guenther  <rguenther@suse.de>
12313
12314         PR middle-end/38977
12315         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
12316         fork because we may expand it as __gcov_fork.
12317
12318 2009-02-06  Nick Clifton  <nickc@redhat.com>
12319
12320         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
12321
12322 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
12323
12324         PR tree-optimization/35659
12325         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
12326         vn_phi_eq): Shortcut if hashcode does not match.
12327         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
12328         NULL operands.
12329         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
12330         and avoid iterative_hash_expr.
12331         (FOR_EACH_VALUE_ID_IN_SET): New.
12332         (value_id_compare): Remove.
12333         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
12334         sort expressions by value id.
12335
12336 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
12337
12338         PR target/38991
12339         * config/sh/predicates.md (general_movsrc_operand): Don't check
12340         the subreg of system registers here.
12341
12342 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
12343
12344         PR c++/39106
12345         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
12346         on the copied decl.
12347
12348 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
12349
12350         PR rtl-optimization/39110
12351         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
12352         addresses, not aligned ones.
12353
12354 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
12355             Richard Guenther  <rguenther@suse.de>
12356
12357         PR tree-optimization/39100
12358         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
12359         comment says and add edges.
12360
12361 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
12362
12363         PR c/35435
12364         * c-common.c (handle_tls_model_attribute): Ignore attribute for
12365         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
12366
12367 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
12368
12369         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
12370         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
12371         register_bb_in_sese, new_sese, free_sese): Moved.
12372         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
12373         outermost_loop_in_scop, build_scop_iteration_domain,
12374         expand_scalar_variables_ssa_name, get_vdef_before_scop,
12375         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
12376         Use loop_in_sese_p instead of loop_in_scop_p.
12377         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
12378         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
12379         (scopdet_basic_block_info): Fix bug in scop detection.
12380         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
12381         eq_loop_to_cloog_loop): Remove.
12382         (nb_loops_around_loop_in_scop, nb_loop
12383         ref_nb_loops): Moved here...
12384         * graphite.h (ref_nb_loops): ... from here.
12385         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
12386         (loop_domain_dim, loop_iteration_vector_dim): Remove.
12387         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
12388         * testsuite/gcc.dg/graphite/scop-19.c: New
12389
12390 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
12391             Hans-Peter Nilsson  <hp@axis.com>
12392
12393         PR rtl-optimization/37889
12394         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
12395         Move offset handling from PLUS to before the switch.  Use new
12396         arguments when considering SYMBOL_REFs too.
12397         (rtx_addr_can_trap_p): Pass dummy offset and size.
12398         (enum may_trap_p_flags): Remove.
12399         (may_trap_p_1): Pass size from MEM_SIZE.
12400
12401         PR rtl-optimization/38921
12402         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
12403         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
12404         * rtlanal.c (may_trap_after_code_motion_p): Delete.
12405         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
12406
12407 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
12408
12409         AVX Programming Reference (January, 2009)
12410         * config/i386/sse.md (*vpclmulqdq): New.
12411
12412 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
12413
12414         PR tree-optimization/38977
12415         PR gcov-profile/38292
12416         * calls.c (special_function_p): Disregard __builtin_ prefix.
12417
12418 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
12419
12420         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
12421         non-indexable addresses even before reload.
12422
12423 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12424
12425         PR c/29129
12426         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
12427         as having variable size.  Do not give an error for unnamed
12428         parameters with [*] declarators.  Give a warning for type names
12429         with [*] declarators and mark them as variable size.
12430         * c-parser.c (c_parser_sizeof_expression): Do not give an error
12431         for sizeof applied to [*] type names.
12432
12433 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12434
12435         PR C++/36607
12436         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
12437
12438 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12439
12440         * gcc.c (process_command): Update copyright notice dates.
12441         * gcov.c (print_version): Likewise.
12442         * gcov-dump.c (print_version): Likewise.
12443         * mips-tfile.c (main): Likewise.
12444         * mips-tdump.c (main): Likewise.
12445
12446 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12447
12448         PR c/35433
12449         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
12450         for composite type involving a zero-length array type.
12451
12452 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12453
12454         PR target/35318
12455         * function.c (match_asm_constraints_1): Skip over
12456         initial optional % in the constraint.
12457
12458         PR inline-asm/39059
12459         * c-parser.c (c_parser_postfix_expression): If fixed point is not
12460         supported, don't accept FIXED_CSTs.
12461         * c-decl.c (finish_declspecs): Error if fixed point is not supported
12462         and _Sat is used without _Fract/_Accum.  Set specs->type to
12463         integer_type_node for cts_fract/cts_accum if fixed point is not
12464         supported.
12465
12466 2009-02-02  Catherine Moore  <clm@codesourcery.com>
12467
12468         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
12469
12470 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
12471
12472         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
12473         (ABI_HAS_64BIT_SYMBOLS): Use it.
12474         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
12475
12476 2009-02-02  Paul Brook  <paul@codesourcery.com>
12477
12478         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
12479
12480 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
12481
12482         PR inline-asm/39058
12483         * recog.h (asm_operand_ok): Add constraints argument.
12484         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
12485         recurse on matching constraint.
12486         (check_asm_operands): Pass constraints as 3rd argument to
12487         asm_operand_ok.  Don't look up matching constraint here.
12488         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
12489         to asm_operand_ok.
12490
12491 2009-02-02  Ben Elliston  <bje@au.ibm.com>
12492
12493         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
12494         TARGET_NARROW_VOLATILE_BITFIELD macro names.
12495
12496 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12497
12498         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
12499         information.  Remove some obsolete information.  Reorganize.
12500
12501         * config/pa/fptr.c: Revert license to GPL 2.
12502         * config/pa/milli64.S: Likewise.
12503
12504 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12505
12506         PR target/38904
12507         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
12508         LIBRARY name in, instead of hard-coding it.
12509         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
12510         extra target make frag to tmake_files according to EH model.
12511         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
12512         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
12513         frags that define makefile variable EH_MODEL appropriately.
12514         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
12515         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
12516         to "-sjlj" according to type of EH configured.
12517         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12518         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
12519         to "_sjlj" according to type of EH configured.
12520         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12521         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
12522         (SHLIB_LINK):  Add missing semicolon to if-else construct.
12523         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12524         string value of "pe_dll" command-line option.
12525         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
12526         (SHLIB_SONAME):  Use it when overriding t-cygming default.
12527         (SHLIB_IMPLIB):  Override t-cygming default.
12528         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12529         string value of "pe_dll" command-line option.
12530
12531 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12532
12533         PR target/38952
12534         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
12535         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
12536
12537 2009-01-31  Richard Guenther  <rguenther@suse.de>
12538
12539         PR tree-optimization/38937
12540         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
12541         computing the transitive closure.
12542
12543 2009-01-30  Richard Guenther  <rguenther@suse.de>
12544
12545         PR tree-optimization/39041
12546         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
12547         Propagate variable indices only if the types match for this stmt.
12548
12549 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
12550
12551         PR target/39013
12552         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
12553         inline but never defined.
12554
12555 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
12556
12557         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
12558         (*insv_h_di_reg_extimm): New insn.
12559         (*insv_l<mode>_reg_extimm): New insn.
12560
12561 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12562
12563         * config/picochip/picochip.c (flag_conserve_stack): set
12564         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
12565         fconserve-stack. Reduce call-overhead used by inliner.
12566
12567 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12568
12569         PR/38157
12570         * common.opt (flag_conserve_stack): Initialised to zero.
12571
12572 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
12573
12574         PR/39002
12575         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
12576         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
12577         method.
12578
12579 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
12580
12581         * ira-color.c (allocno_reload_assign): Update comments.
12582         * regmove.c (regmove_optimize): Likewise.
12583
12584         * ra.h: Removed.
12585
12586 2009-01-29  Robert Millan  <rmh@aybabtu.com>
12587
12588         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
12589         * config/i386/kopensolaris-gnu.h: New file.  Undefine
12590         `MD_UNWIND_SUPPORT'.
12591         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
12592
12593 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
12594
12595         PR tree-optimization/39007
12596         * tree-loop-distribution.c (generate_builtin): Use
12597         recompute_dominator to compute the immediate dominator of the
12598         basic block just after the loop.
12599
12600 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12601
12602         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
12603         (ASM_OUTPUT_DWARF_PCREL): Define.
12604
12605 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
12606
12607         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
12608         * doc/passes.texi: Remove entries about regclass, local-alloc, and
12609         global.  Modify entries about regmove and IRA.
12610
12611         * ra-conflict.c: Remove the file.
12612
12613         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
12614
12615         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
12616         (pass_regclass_init): Rename to pass_reginfo_init.
12617
12618         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
12619
12620         * toplev.h (flag_ira): Remove.
12621
12622         * caller-save.c (setup_save_areas): Remove flag_ira.
12623
12624         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
12625
12626         * global.c: Remove the file.
12627
12628         * opts.c (decode_options): Remove flag_ira.
12629
12630         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
12631
12632         * regmove.c: Modify file description.
12633         (find_use_as_address, try_auto_increment): Define them only if
12634         AUTO_INC_DEC is defined.
12635         (replacement_quality, replace_in_call_usage, fixup_match_1,
12636         stable_and_no_regs_but_for_p): Remove.
12637         (reg_set_in_bb): Make it static.
12638         (regmove_optimize): Remove flag_ira and code which worked for
12639         !flag_ira.
12640
12641         * local-alloc.c: Remove the file.
12642
12643         * common.opt (fira): Remove.
12644
12645         * ira.c: Include except.h.
12646         (eliminable_regset): Move from global.c.
12647         (mark_elimination): Ditto.  Remove flag_ira.
12648         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
12649         equiv_mem_modified, validate_equiv_mem_from_store,
12650         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
12651         contains_replace_regs, memref_referenced_p, memref_used_between_p,
12652         no_equiv, recorded_label_ref): Move from local-alloc.c.
12653         (update_equiv_regs): Ditto.  Make it static.
12654         (print_insn_chain, print_insn_chains): Move it from global.c.
12655         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
12656         (build_insn_chain): Ditto.  Make it static.
12657         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
12658         Rename to init_live_subregs.
12659         (gate_ira): Remove flag_ira.
12660
12661         * regclass.c: Rename reginfo.c.  Change file description.
12662         (FORBIDDEN_INC_DEC_CLASSES): Remove.
12663         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
12664         (init_reg_sets_1): Remove code for evaluation of
12665         reg_class_superclasses and losing_caller_save_reg_set.
12666         (init_regs): Remove init_reg_autoinc.
12667         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
12668         ok_for_base_p_nonstrict): Remove.
12669         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
12670         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
12671         corresponding entries.
12672         (dump_regclass, record_operand_costs, scan_one_insn,
12673         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
12674         record_address_regs, auto_inc_dec_reg_p): Remove.
12675         (gt-regclass.h): Rename to gt-reginfo.h.
12676
12677         * rtl.h (dump_global_regs, retry_global_alloc,
12678         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
12679
12680         * Makefile.in (RA_H): Remove.
12681         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
12682         Rename regclass.o to reginfo.o.
12683         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
12684         gt-reginfo.h.
12685         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
12686         (GTFILES): Rename regclass.c to reginfo.c.
12687
12688         * passes.c (init_optimization_passes): Remove pass_local_alloc and
12689         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
12690
12691         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
12692         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
12693         Remove flag_ira.
12694         (finish_spills): Ditto.  Remove code for !flag_ira.
12695
12696 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
12697
12698         PR middle-end/35854
12699         * doc/invoke.texi (rtl debug options): Complete rewrite.
12700         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
12701         to auto_inc_dec".
12702         * mode-switching.c (pass_mode_switching): Rename pass from
12703         "mode-sw" to "mode_sw".
12704         * except.c (pass_convert_to_eh_ranges): Rename pass from
12705         "eh-ranges" to "eh_ranges".
12706         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
12707         to "subreg1".
12708
12709
12710 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
12711             Alexander Monakov  <amonakov@ispras.ru>
12712
12713         PR middle-end/38857
12714         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
12715         register.
12716         (move_exprs_to_boundary): Change return type and pass through
12717         should_move from move_op.  Relax assert.  Update usage ...
12718         (schedule_expr_on_boundary): ... here.  Use should_move instead of
12719         cant_move.
12720         (move_op_orig_expr_found): Indicate that insn was disconnected from
12721         stream.
12722         (code_motion_process_successors): Do not call after_merge_succs
12723         callback if original expression was not found when traversing any of
12724         the branches.
12725         (code_motion_path_driver): Change return type.  Update prototype.
12726         (move_op): Update comment.  Add a new parameter (should_move).  Update
12727         prototype.  Set *should_move based on indication provided by
12728         move_op_orig_expr_found.
12729
12730 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
12731
12732         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
12733         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
12734         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
12735         * config/rs6000/rs6000.c (rs6000_override_options): Default
12736         avoid-indexed-addresses on for Power6, off for everything else.
12737         (avoiding_indexed_address_p): New function.
12738         (rs6000_legitimize_address): Use it.
12739         (rs6000_legitimate_address): Likewise.
12740         * config/rs6000/rs6000.md (movXX_updateX): Likewise
12741
12742 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
12743
12744         PR tree-optimization/38997
12745         * tree-loop-distribution.c (generate_memset_zero): Use
12746         POINTER_PLUS_EXPR for a pointer addition.
12747
12748 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
12749
12750         * config/s390/s390.md (bswap<mode>2): New pattern added.
12751
12752 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12753
12754         * config/s390/s390.md (*tls_load_31): Added type attribute.
12755
12756 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12757
12758         * config/s390/s390.md: Fix a few comments.
12759
12760 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12761
12762         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
12763         (*tm<mode>_full): Fixed z10prop attribute.
12764         (*tst<mode>_extimm): Fixed z10prop attribute.
12765         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
12766         (*tstqiCCT_cconly): Fixed z10prop attribute.
12767         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
12768         (*movsi_larl): Fixed z10prop attribute.
12769         (*movsi_zarch): Fixed z10prop attribute.
12770         (*movsi_eas): Fixed z10prop attribute.
12771         (*movhi): Fixed z10prop attribute.
12772         (*movqi): Fixed z10prop attribute.
12773         (*movstrictqi): Fixed z10prop attribute.
12774         (*mov<mode>): Fixed z10prop attribute.
12775         (*movcc): Fixed z10prop attribute.
12776         (*sethighpartdi_64): Fixed z10prop attribute.
12777         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
12778         (*negdi2_sign_cc): Fixed z10prop attribute.
12779         (*negdi2_sign): Fixed z10prop attribute.
12780         (*absdi2_sign_cc): Fixed z10prop attribute.
12781         (*absdi2_sign): Fixed z10prop attribute.
12782         (*negabsdi2_sign_cc): Fixed z10prop attribute.
12783         (*negabsdi2_sign): Fixed z10prop attribute.
12784         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
12785         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
12786         (doloop_si64): Fixed z10prop attribute.
12787         (doloop_si31): Fixed z10prop attribute.
12788         (doloop_long): Fixed z10prop attribute.
12789         (indirect_jump): Fixed z10prop attribute.
12790         (nop): Fixed z10prop attribute.
12791         (main_base_64): Fixed z10prop attribute.
12792         (reload_base_64): Fixed z10prop attribute.
12793
12794 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
12795
12796         PR rtl-optimization/38740
12797         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
12798         if !optimize.
12799         * config/mips/mips.c (mips_reorg): Likewise.
12800
12801 2009-01-28  Richard Guenther  <rguenther@suse.de>
12802
12803         PR tree-optimization/38926
12804         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
12805         with the correct value id to a value.
12806         (do_regular_insertion): Use the value number of edoubleprime
12807         for the value number of the expr.
12808
12809         Revert
12810         2008-08-21  Richard Guenther  <rguenther@suse.de>
12811
12812         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
12813         a PHI ask VN if it is already available.
12814         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
12815         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
12816
12817 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
12818
12819         PR middle-end/38934
12820         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
12821         set to varying whenever max has TREE_OVERFLOW set, similarly
12822         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
12823
12824 2009-01-28  Richard Guenther  <rguenther@suse.de>
12825
12826         PR middle-end/38908
12827         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
12828         uninitialized aggregate uses in call arguments.
12829
12830 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
12831
12832         PR tree-optimization/38984
12833         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
12834         the nothing_id variable if -fno-delete-null-pointer-checks.
12835
12836 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
12837
12838         PR target/38988
12839         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
12840         (set_got_offset_rex64): Ditto.
12841
12842 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
12843
12844         PR target/38941
12845         * doc/extend.texi: Improve local variable with asm reg.
12846
12847 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
12848
12849         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
12850         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
12851         was not supplied then set warn_packed_bitfield_compat to the
12852         default value of 1.
12853         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
12854         against 1.
12855
12856 2009-01-27  Richard Guenther  <rguenther@suse.de>
12857
12858         PR tree-optimization/38503
12859         * cfgexpand.c (expand_gimple_basic_block): Ignore
12860         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
12861         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
12862         variables that cannot have TBAA applied.
12863         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
12864         statements.
12865
12866 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
12867
12868         PR middle-end/38969
12869         * calls.c (initialize_argument_information): Do not wrap complex
12870         arguments in SAVE_EXPR.
12871
12872 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
12873
12874         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
12875         (INSTALL_LIBGCC): Revert typo commit.
12876
12877 2009-01-26  Richard Guenther  <rguenther@suse.de>
12878
12879         PR tree-optimization/38745
12880         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
12881         from special handling.
12882
12883 2009-01-26  Richard Guenther  <rguenther@suse.de>
12884
12885         PR tree-optimization/38745
12886         * tree-ssa.c (execute_update_addresses_taken): Do not include
12887         variables that cannot possibly be a register in not_reg_needs.
12888         Do not clear TREE_ADDRESSABLE on vars that may not become
12889         registers.
12890         * tree-ssa.c (update_alias_info_1): Include those in the set
12891         of addressable vars.
12892
12893 2009-01-26  Richard Guenther  <rguenther@suse.de>
12894
12895         PR middle-end/38851
12896         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
12897         * tree-ssa-dse.c: Include langhooks.h
12898         (execute_simple_dse): Remove stores with zero size.
12899
12900 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
12901
12902         PR c/38957
12903         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
12904         as PLUS_EXPR.
12905
12906 2009-01-24  Julian Brown  <julian@codesourcery.com>
12907
12908         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
12909         config/arm/linux-atomic.c.
12910         * config/arm/linux-atomic.c: New.
12911
12912 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
12913
12914         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
12915         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
12916         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
12917
12918 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
12919
12920         PR c/38938
12921         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
12922         properly.
12923
12924 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
12925
12926         PR tree-optimization/38953
12927         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
12928         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
12929         (gloog): Split the exit of the scop when the scop exit is a loop exit.
12930         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
12931         changed the CFG.
12932
12933 2009-01-24  Paul Brook  <paul@codesourcery.com>
12934
12935         * config/arm/neon.md (neon_type): Move to arm.md.
12936         (neon_mov<VSTRUCT>): Add neon_type attribute.
12937         * config/arm/arm.md (neon_type): Move to here.
12938         (conds): Add "unconditioal" and use as default for NEON insns.
12939
12940 2009-01-24  Ben Elliston  <bje@au.ibm.com>
12941
12942         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
12943         void *' warning from -Wc++-compat.
12944         * Makefile.in (dominance.o-warn): Remove.
12945
12946 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
12947
12948         PR tree-optimization/38932
12949         * fold-const.c (fold_unary_ignore_overflow): New.
12950         * tree.h (fold_unary_ignore_overflow): Declare.
12951         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
12952         * tree-ssa-sccvn.c (visit_reference_op_load,
12953         simplify_unary_expression): Likewise.
12954
12955 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
12956
12957         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
12958         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
12959         regardless of their type.
12960         * c-common.c (handle_packed_attribute): Don't ignore packed on
12961         bitfields.
12962         * c.opt (Wpacked-bitfield-compat): New warning option.
12963         * stor-layout.c (place_field): Warn if offset of a field changed.
12964         * doc/extend.texi (packed): Mention the ABI change.
12965         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
12966         (Warning Options): Add it to the list.
12967
12968 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
12969
12970         * c-opts.c (c_common_post_options): Fix a typo in comments.
12971
12972 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
12973
12974         PR middle-end/38615
12975         * gimplify.c (gimplify_init_constructor): Fix promotion of const
12976         variables to static.
12977         * doc/invoke.texi (-fmerge-all-constants): Update description.
12978
12979 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
12980
12981         PR target/38931
12982         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
12983         (*movdi_1_rex64): Use type "mmx" for alternative 5.
12984
12985 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
12986
12987         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
12988         a word boundary.
12989         (LOCAL_ALIGNMENT): Similarly.
12990
12991 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
12992             Joseph Myers  <joseph@codesourcery.com>
12993
12994         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
12995         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
12996         * config/arm/arm-tune.md: Regenerate.
12997         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
12998         -march=iwmmxt2.
12999
13000 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13001
13002         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
13003         version number to five.
13004
13005 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13006
13007         PR c++/38930
13008         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
13009         * c-common.c (set_underlying_type): Likewise.
13010         (is_typedef_decl ): Likewise
13011         * tree.h: Likewise
13012         (set_underlying_type): Likewise.
13013         (is_typedef_type): Likewise.
13014
13015 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
13016
13017         PR middle-end/38587
13018         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
13019         crossing setjmps.
13020
13021 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
13022
13023         PR bootstrap/37660
13024         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
13025         (LIBGCC_SPEC):  Don't define.
13026         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
13027
13028 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
13029
13030         PR rtl-optimization/38879
13031         * alias.c (base_alias_check): Unaligned access via AND address can
13032         alias all surrounding object types except those with sizes equal
13033         or wider than the size of unaligned access.
13034
13035 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
13036
13037         PR c++/26693
13038         * c-decl.c (clone_underlying_type): Move this ...
13039         * c-common.c (set_underlying_type): ... here.
13040         Also, make sure the function properly sets TYPE_STUB_DECL() on
13041         the newly created typedef variant type.
13042         (is_typedef_decl ): New entry point.
13043         * tree.h: Added a new member member_types_needing_access_check to
13044         struct tree_decl_non_common.
13045         (set_underlying_type): New entry point.
13046         (is_typedef_type): Likewise.
13047
13048 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
13049
13050         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
13051         Check whether two instructions have memory references that
13052         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
13053         are helper functions for traversing.
13054         * alias.h (insn_alias_sets_confilict_p): New prototypes.
13055         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
13056         not to draw dependency edge for instructions with non-conflicting
13057         alias sets.
13058
13059 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
13060
13061         PR other/38758
13062         * longlong.h: Update copyright years.  Use soft-fp license notice.
13063         Sync __clz_tab declaration with glibc.
13064
13065 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
13066
13067         PR target/30687
13068         * doc/extend.texi (syscall_linkage): New.
13069         (version_id): Modify.
13070
13071 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13072             Richard Guenther  <rguenther@suse.de>
13073
13074         PR tree-optimization/38747
13075         PR tree-optimization/38748
13076         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
13077         conversion if the base address is an indirect reference and the
13078         aliasing sets could cause issues.
13079
13080 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13081
13082         * common.opt (fgraphite, fgraphite-identity): Add comment for
13083         explaining why these options are not documented.
13084
13085 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13086
13087         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
13088         gimple_call_lhs is NULL.
13089
13090 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
13091
13092         PR target/38868
13093         * emit-rtl.c (adjust_address_1): Make sure memref is never
13094         overwritten.
13095
13096 2009-01-20  Ben Elliston  <bje@au.ibm.com>
13097
13098         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13099         const qualifier from arg parameter. Remove unnecessary cast to char *.
13100         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13101         const qualifier from arg 2.
13102
13103 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
13104
13105         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
13106
13107 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
13108
13109         PR c/38869
13110         * rtl.h (reinit_regs): New prototype.
13111         * regclass.c: Include ira.h.
13112         (reinit_regs): New.
13113         * Makefile.in (regclass.o): Add ira.h.
13114         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
13115
13116 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
13117
13118         PR target/38736
13119         * c-common.c (handle_aligned_attribute): Use
13120         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
13121         default alignment value.
13122
13123         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
13124
13125         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
13126         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
13127
13128         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
13129         __BIGGEST_ALIGNMENT__.
13130
13131         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
13132
13133 2009-01-18  Richard Guenther  <rguenther@suse.de>
13134
13135         PR tree-optimization/38819
13136         * tree-flow.h (operation_could_trap_helper_p): Declare.
13137         * tree-eh.c (operation_could_trap_helper_p): Export.
13138         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
13139         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
13140         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
13141         are about to insert a possibly trapping instruction and fail
13142         in this case.
13143
13144 2009-01-18  Andreas Schwab  <schwab@suse.de>
13145
13146         * doc/install.texi (Configuration): Remove obsolete paragraph
13147         about use of --with-gnu-ld with --with-gnu-as.
13148
13149 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
13150
13151         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
13152         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
13153         Follow spelling conventions.
13154
13155 2009-01-18  Ben Elliston  <bje@au.ibm.com>
13156
13157         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
13158         C++ warning about implicit conversion from void * to struct
13159         bitmap_head_def *.
13160         (bitmap_obstack_free): Likewise for bitmap_element *.
13161         * Makefile.in (bitmap.o-warn): Remove.
13162
13163 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
13164
13165         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
13166
13167 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
13168             Tobias Grosser  <tobi.grosser@amd.com>
13169
13170         * graphite.c (graphite_trans_scop_block): Do not block single
13171         nested loops.
13172
13173 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
13174
13175         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
13176         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
13177         test with assertion.
13178
13179 2009-01-16  Richard Guenther  <rguenther@suse.de>
13180
13181         PR tree-optimization/38835
13182         PR middle-end/36227
13183         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
13184         and INT + PTR -> (INT)(PTR p+ INT) folding.
13185         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
13186
13187 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
13188
13189         PR target/38554
13190         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
13191         the subreg from a lowpart subreg if it is also casting the value.
13192
13193 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13194             Tobias Grosser  <tobi.grosser@amd.com>
13195
13196         * graphite.c (compare_prefix_loops): New.
13197         (build_scop_canonical_schedules): Rewritten.
13198         (graphite_transform_loops): Move build_scop_canonical_schedules
13199         after build_scop_iteration_domain.
13200
13201 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13202             Tobias Grosser  <tobi.grosser@amd.com>
13203
13204         * graphite.c (add_conditions_to_domain): Add the loops to
13205         the dimension of the iteration domain.  Do copy the domain
13206         only when it exists.
13207         (build_scop_conditions_1): Do not call add_conditions_to_domain.
13208         (add_conditions_to_constraints): New.
13209         (can_generate_code_stmt, can_generate_code): Removed.
13210         (gloog): Do not call can_generate_code.
13211         (graphite_transform_loops): Call add_conditions_to_constraints
13212         after building the iteration domain.
13213
13214 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
13215
13216         PR tree-optimization/38789
13217         * tree-ssa-threadedge.c
13218         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13219         __builtin_constant_p.
13220
13221 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
13222
13223         * dce.c (delete_unmarked_insns): Reversed the order that insns are
13224         examined before deleting them.
13225
13226 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
13227
13228         * function.c (aggregate_value_p): Correctly extract the function
13229         type from CALL_EXPR_FN lookup.
13230
13231 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13232
13233         * config/picochip/picochip.c (picochip_override_options): Revert
13234         CFI asm flag disable commited previously.
13235
13236 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
13237             Tobias Grosser  <tobi.grosser@amd.com>
13238             Jan Sjodin  <jan.sjodin@amd.com>
13239
13240         * graphite.c (scan_tree_for_params): On substractions negate
13241         all the coefficients of the term.
13242         (clast_to_gcc_expression_red): New.  Handle reduction expressions
13243         of more than two operands.
13244         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
13245         (get_vdef_before_scop): Handle also the case of default definitions.
13246
13247 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
13248
13249         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
13250         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
13251         Also use them when walking CALL_INSN_FUNCTION_USAGE.
13252
13253 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
13254             Joey Ye  <joey.ye@intel.com>
13255
13256         PR middle-end/37843
13257         * cfgexpand.c (expand_stack_alignment): Don't update stack
13258         boundary nor check incoming stack boundary here.
13259         (gimple_expand_cfg): Update stack boundary and check incoming
13260         stack boundary here.
13261
13262 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
13263
13264         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
13265
13266 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
13267
13268         PR rtl-optimization/38245
13269         * calls.c (expand_call): Add stack arguments to
13270         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13271         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
13272         in regs and partially in memory or BLKmode arguments.
13273         (emit_library_call_value_1): Add stack arguments to
13274         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13275         ACCUMULATE_OUTGOING_ARGS).
13276         * dce.c: Include tm_p.h.
13277         (find_call_stack_args): New function.
13278         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
13279         argument.
13280         (mark_insn): Call find_call_stack_args for CALL_Ps.
13281         (prescan_insns_for_dce): Walk insns backwards in bb rather than
13282         forwards.  Allocate and free arg_stores bitmap if needed, pass it
13283         down to deletable_insn_p, don't mark stores set in arg_stores
13284         bitmap, clear the bitmap at the beginning of each bb.
13285         * Makefile.in (dce.o): Depend on $(TM_P_H).
13286
13287 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
13288
13289         PR target/22599
13290         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
13291         to make sure the insn is a conditional test (bug 22599).  Reformat a
13292         few long lines.
13293
13294 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
13295
13296         PR middle-end/38431
13297         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
13298         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
13299         (gloog): Do not call cleanup_tree_cfg.
13300         (graphite_transform_loops): Call cleanup_tree_cfg after all
13301         scops have been code generated.
13302
13303 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
13304         * doc/gty.texi (Invoking the garbage collector): Added new node
13305         and section documenting ggc_collect.
13306
13307 2009-01-14  Richard Guenther  <rguenther@suse.de>
13308
13309         PR tree-optimization/38826
13310         PR middle-end/38477
13311         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
13312         initialization notes only if we actually emitted a warning.
13313         (intra_create_variable_infos): Add constraints for a result decl
13314         that is passed by hidden reference.
13315         (build_pred_graph): Mark all related variables non-direct on
13316         address-taking.
13317
13318 2009-01-14  Nick Clifton  <nickc@redhat.com>
13319
13320         * ira-conflicts.c: Include addresses.h for the definition of
13321         base_reg_class.
13322         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
13323         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
13324
13325 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
13326
13327         PR target/38811
13328         * Makefile.in (ira-lives.o): Add except.h.
13329
13330         * ira-lives.c: Include except.h.
13331         (process_bb_node_lives): Process can_throw_internal.
13332
13333 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
13334
13335         PR rtl-optimization/38774
13336         * combine.c (simplify_set): When undoing cc_use change, don't do
13337         PUT_CODE on the newly created comparison, but instead put back the
13338         old comparison.
13339
13340 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
13341
13342         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
13343         values.  Remove duplicate arm8 entry.
13344
13345 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13346
13347         PR tree-optimization/38786
13348         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
13349         the SSA_NAME case of expand_scalar_variables_expr.
13350         Set the type of an expression to the type of its assign statement.
13351         (expand_scalar_variables_expr): Also gather the scalar computation
13352         used to index the memory access.  Do not pass loop_p.
13353         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
13354         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
13355         the gimple_stmt_iterator where it inserts new code.
13356         Do not pass loop_p.
13357         (copy_bb_and_scalar_dependences): Do not pass loop_p.
13358         (translate_clast): Update call to copy_bb_and_scalar_dependences.
13359
13360 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13361
13362         * graphite.h (debug_value): Removed.
13363         * graphite.c (debug_value): Removed.
13364
13365 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13366
13367         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
13368         ldrd/strd with two 32-bit instructions.
13369
13370 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13371
13372         * config/arm/arm.c (struct processors): Pass for speed down into
13373         cost helper functions.
13374         (const_ok_for_op): Handle COMPARE and inequality nodes.
13375         (arm_rtx_costs_1): Rewrite.
13376         (arm_size_rtx_costs): Update prototype.
13377         (arm_rtx_costs): Pass speed down to helper functions.
13378         (arm_slowmul_rtx_costs): Rework cost calculations.
13379         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
13380         (arm_9e_rtx_costs): Likewise.
13381
13382 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
13383
13384         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
13385         relocations of local symbols wider than UNITS_PER_WORD are not valid.
13386         (alpha_legitimize_address): Do not split local symbols wider than
13387         UNITS_PER_WORD into HIGH/LO_SUM parts.
13388
13389 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
13390
13391         PR bootstrap/38580
13392         * gcc.c (process_command): Replace call to execvp with calls
13393         to pex_one and exit.
13394
13395 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
13396
13397         PR target/29141
13398         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
13399         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
13400         variant for devices with 3-byte PC.
13401         (__tablejump_elpm__): New.
13402
13403 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13404
13405         PR c/32041
13406         * c-parser.c (c_parser_postfix_expression): Allow `->' in
13407         offsetof member-designator, handle it as `[0].'.
13408
13409 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13410
13411         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
13412         function when not using named sections on targets with named sections
13413         if branch distance is less than 262132.
13414
13415 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
13416
13417         * combine.c (combine_instructions):  Recompute
13418         optimize_this_for_speed_p  for each BB in the main combine loop.
13419
13420 2009-01-12  Tomas Bily  <tbily@suse.cz>
13421
13422         PR middlend/38385
13423         * tree-loop-distribution.c (prop_phis): New function.
13424         (generate_builtin): Call prop_phis.
13425         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
13426
13427 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13428
13429         PR tree-optimization/38807
13430         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
13431         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
13432
13433 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
13434
13435         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
13436         subreg of op0 to the original op0.
13437
13438 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
13439
13440         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
13441
13442 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
13443
13444         PR debug/7055
13445         * mips-tfile.c (parse_def): Fix parsing of def strings
13446         starting with digits.
13447
13448 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
13449
13450         PR target/38695
13451         * config/arm/arm.c (arm_is_long_call_p): Don't call
13452         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
13453
13454 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
13455
13456         * regrename.c (regrename_optimize): Fix dumping.
13457         (find_oldest_value_reg): Preserve REG_POINTER.
13458         (copy_hardreg_forward_1): Likewise.
13459
13460 2009-01-09  Diego Novillo  <dnovillo@google.com>
13461
13462         * gimple.h (struct gimple_statement_base) <uid>: Document
13463         the restrictions on its use.
13464         (gimple_uid): Tidy.
13465         (gimple_set_uid): Tidy.
13466
13467 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13468
13469         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
13470         zero guard even if align_bytes != 0 and count is smaller than
13471         size_needed.
13472
13473 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
13474
13475         PR rtl-optimization/38495
13476         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
13477         (add_range_and_copies_from_move_list): Print all added ranges.
13478         Add ranges to memory optimized destination.
13479
13480 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13481
13482         PR target/38686
13483         PR target/38708
13484         * config/i386/i386.c (override_options): Reject
13485         -mstringop-strategy=rep_8byte with -m32.
13486         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
13487         to 1.  Do count comparison against epilogue_size_needed at compile
13488         time even when count_exp was constant forced into register.  For
13489         size_needed don't jump to epilogue, instead just avoid aligning
13490         and invoke the body algorithm.  If need_zero_guard, add zero guard
13491         even if count is non-zero, but smaller than size_needed + number of
13492         bytes that could be stored for alignment.
13493         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
13494         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
13495         but smaller than size_needed + number of bytes that could be stored
13496         for alignment.  Compare size_needed with epilogue_size_needed instead
13497         of desired_align - align, don't adjust size_needed, pass
13498         epilogue_size_needed to the epilogue expanders.
13499
13500         PR c/35742
13501         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
13502
13503 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13504
13505         * pa.c (last_address): Change to unsigned.
13506         (update_total_code_bytes): Change argument to unsigned.  Don't
13507         check if insn addresses are set.
13508         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
13509         addresses are not set.
13510         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
13511
13512 2009-01-09  Nick Clifton  <nickc@redhat.com>
13513
13514         * config/sh/symbian.c: Replace uses of DECL_INLINE with
13515         DECL_DECLARED_INLINE_P.
13516
13517 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13518
13519         PR middle-end/38347
13520         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
13521         GET_MODE (op0) in operand_subword_force calls.
13522
13523         PR middle-end/38771
13524         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
13525         fold_convert arg0 operands to TREE_TYPE (op0) first.
13526
13527 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
13528
13529         * params.def (ira-max-conflict-table-size): Decrease default value
13530         to 1000.
13531
13532 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
13533
13534         PR tree-optimization/37031
13535         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
13536         on parameter_set.
13537         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
13538         allocate it using gc instead of heap, use VEC_quick_push instead of
13539         VEC_safe_push.
13540         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
13541         instead of heap, use VEC_quick_push instead of VEC_safe_push.
13542         * tree-data-ref.h (struct access_matrix): Change matrix to gc
13543         allocated vector from heap allocated.
13544         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
13545         * tree-loop-linear.c (linear_transform_loops): Allocate nest
13546         vector only after perfect_loop_nest_depth call.
13547
13548 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
13549             Jan Sjodin  <jan.sjodin@amd.com>
13550
13551         PR tree-optimization/38559
13552         * graphite.c (debug_value, copy_constraint,
13553         swap_constraint_variables, scale_constraint_variable, ): New.
13554         (get_lower_bound, get_upper_bound): Removed.
13555         (graphite_trans_bb_strip_mine): Clean up this code that works
13556         only for constant number of iterations.  Fully copy upper and
13557         lower bound constraints, not only the constant part of them.
13558         * graphite.h (debug_value): Declared.
13559
13560 2009-01-08  Ira Rosen  <irar@il.ibm.com>
13561
13562         PR tree-optimization/37194
13563         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
13564         Don't add the cost of cost model guard in prologue to scalar
13565         outside cost in case of known number of iterations.
13566
13567 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
13568             Alan Modra  <amodra@bigpond.net.au>
13569
13570         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
13571         non-word-aligned REG+CONST addressing.
13572
13573 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13574
13575         PR target/38706
13576         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
13577         free_after_compilation when outputting a thunk.
13578         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
13579         Do not call free_after_compilation here.
13580
13581 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13582
13583         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
13584         (ix86_valid_target_attribute_inner_p): Ditto.
13585
13586 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
13587
13588         PR tree-optimization/38492
13589         PR tree-optimization/38498
13590         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
13591         * tree-chrec.h (scev_is_linear_expression): Declared.
13592         * graphite.c (graphite_cannot_represent_loop_niter): New.
13593         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
13594         (graphite_loop_normal_form): Use gcc_assert.
13595         (scan_tree_for_params): Use CASE_CONVERT.
13596         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
13597         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
13598         Use gcc_assert.  Discard scops that contain unhandled cases.
13599         (build_scop_conditions): Return a boolean status for unhandled cases.
13600         (strip_mine_profitable_p): Print the loop number, not its depth.
13601         (is_interchange_valid): Pass the depth of the loop nest, don't
13602         recompute it wrongly.
13603         (graphite_trans_bb_block): Same.
13604         (graphite_trans_bb_block): Print tentative of loop blocking.
13605         (graphite_trans_scop_block): Do not print that the loop has been
13606         blocked.
13607         (graphite_transform_loops): Do not handle scops that contain condition
13608         scalar phi nodes.
13609
13610 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
13611
13612         AVX Programming Reference (December, 2008)
13613         * config/i386/avxintrin.h (_mm256_stream_si256): New.
13614         (_mm256_stream_pd): Likewise.
13615         (_mm256_stream_ps): Likewise.
13616
13617         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
13618         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
13619         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
13620         (bdesc_special_args): Add __builtin_ia32_movntdq256,
13621         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
13622         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
13623         (ix86_expand_special_args_builtin): Likewise.
13624
13625         * config/i386/sse.md (AVXMODEDI): New.
13626         (avx_movnt<mode>): Likewise.
13627         (avx_movnt<mode>): Likewise.
13628         (<sse>_movnt<mode>): Remove AVX support.
13629         (sse2_movntv2di): Likewise.
13630
13631 2009-01-07  Richard Guenther  <rguenther@suse.de>
13632
13633         PR middle-end/38751
13634         * fold-const.c (extract_muldiv): Remove obsolete comment.
13635         (fold_plusminus_mult_expr): Undo MINUS_EXPR
13636         to PLUS_EXPR canonicalization for the canonicalization.
13637
13638 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
13639
13640         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
13641         hosted cross-compilers generating less efficient code.
13642
13643 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13644
13645         * function.h (rtl_data): Add a dbr_scheduled_p field.
13646         * reorg.c (dbr_schedule): Set it.
13647         (gate_handle_delay_slots): Check it.
13648         * config/mips/mips.c (mips_base_delayed_branch): Delete.
13649         (mips_reorg): Check flag_delayed_branch instead of
13650         mips_base_delayed_branch.
13651         (mips_override_options): Don't set mips_base_delayed_branch
13652         or flag_delayed_branch.
13653
13654 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13655
13656         PR rtl-optimization/38426.
13657         * ira.c (ira): Set current_function_is_leaf earlier.
13658
13659 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
13660
13661         PR rtl-optimization/38722
13662         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
13663         too early, only set a flag and modify after last possible
13664         undo_all point.
13665
13666 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
13667
13668         PR c/34252
13669         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
13670         * real.c (decimal_single_format): Correct values of emin and emax.
13671         (decimal_double_format): Ditto.
13672         (decimal_quad_format): Ditto.
13673         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
13674         computation of DECnn_MIN and DECnn_MAX for corrected values of
13675         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
13676         __DECnn_MIN__, and adjust its computation for the corrected value
13677         of emin.
13678
13679 2009-01-06  Jan Hubicka  <jh@suse.cz>
13680
13681         PR target/38744
13682         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
13683
13684 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
13685
13686         * doc/contrib.texi (Contributors): Slightly adjust the end note.
13687         Add Robert Clark to the list of testers.
13688
13689 2009-01-06  Jan Hubicka  <jh@suse.cz>
13690             Kai Tietz  <kai.tietz@onevision.com>
13691
13692         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
13693         * config/i386/i386.c (ix86_expand_call): Add clobbers.
13694
13695 2009-01-06  Jan Hubicka  <jh@suse.cz>
13696             Kai Tietz  <kai.tietz@onevision.com>
13697
13698         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
13699         for w64 ABI.
13700         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
13701         (ix86_nsaved_regs): Count only general purpose regs.
13702         (ix86_nsaved_sseregs): New.
13703         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
13704         to 16 for w64; compute padding and size of sse reg save area.
13705         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
13706         general purpose regs.
13707         (ix86_emit_save_sse_regs_using_mov): New.
13708         (ix86_expand_prologue): Save SSE regs if needed.
13709         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
13710         (ix86_emit_restore_sse_regs_using_mov): New.
13711         (ix86_expand_epilogue): Save SSE regs if needed.
13712
13713 2009-01-06  Jan Hubicka  <jh@suse.cz>
13714             Kai Tietz  <kai.tietz@onevision.com>
13715
13716         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
13717         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
13718         functions when accumulate outgoing args is off.
13719
13720 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
13721
13722         PR bootstrap/38742
13723         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
13724         before using pseudos_have_intersected_live_ranges_p.
13725
13726         * ira-int.h (ira_assert): Always define.
13727
13728 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
13729
13730         AVX Programming Reference (December, 2008)
13731         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
13732         (_mm256_permute2_pd): Likewise.
13733         (_mm_permute2_ps): Likewise.
13734         (_mm256_permute2_ps): Likewise.
13735         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
13736         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
13737
13738         * config/i386/i386.c (ix86_builtins): Remove
13739         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
13740         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
13741         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
13742         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
13743         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
13744         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
13745         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
13746         __builtin_ia32_vpermil2ps256.
13747         (ix86_init_mmx_sse_builtins): Updated.
13748         (ix86_expand_args_builtin): Likewise.
13749
13750 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13751
13752         * pa.c (output_call): Relocate non-jump insns in the delay slot of
13753         long absolute calls when generating PA 2.0 code.
13754
13755 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
13756
13757         PR rtl-optimization/38583
13758         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
13759
13760         * params.def (ira-max-conflict-table-size): New.
13761
13762         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
13763
13764         * ira.h (ira_conflicts_p): New external definition.
13765
13766         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
13767         table.  Report this.  Return result of building.
13768         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
13769         building conflict table.
13770
13771         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
13772         (ira_color): Use ira_conflicts_p.
13773
13774         * global.c: Include ira.h.
13775         (pseudo_for_reload_consideration_p, build_insn_chain): Use
13776         ira_conflicts_p.
13777
13778         * Makefile.in (global.o): Add ira.h.
13779
13780         * ira-build.c (mark_all_loops_for_removal,
13781         propagate_some_info_from_allocno): New.
13782         (remove_unnecessary_allocnos): Call
13783         propagate_some_info_from_allocno.
13784         (remove_low_level_allocnos): New.
13785         (remove_unnecessary_regions): Add parameter.  Call
13786         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
13787         parameter to remove_unnecessary_regions.
13788         (ira_build): Remove all regions but root if the conflict table was
13789         not built.  Update conflict hard regs for allocnos crossing calls.
13790
13791         * ira.c (ira_conflicts_p): New global.
13792         (ira): Define and use ira_conflicts_p.
13793
13794         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
13795         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
13796         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
13797
13798 2009-01-06  Ben Elliston  <bje@au.ibm.com>
13799
13800         * gengtype-lex.l (YY_NO_INPUT): Define.
13801
13802 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13803
13804         PR c/34911
13805         * c-common.c (handle_vector_size_attribute): Also reject
13806         BOOLEAN_TYPE types.
13807
13808 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
13809
13810         PR tree-optimization/38492
13811         * graphite.c (rename_map_elt, debug_rename_elt,
13812         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
13813         rename_map_elt_info, eq_rename_map_elts,
13814         get_new_name_from_old_name, bb_in_sese_p): Moved around.
13815         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
13816         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
13817         (sese_build_livein_liveouts): New.
13818         (new_sese, free_sese): New.
13819         (new_scop): Call new_sese.
13820         (free_scop): Call free_sese.
13821         (rename_variables_from_edge, rename_phis_end_scop): Removed.
13822         (register_old_new_names): Renamed register_old_and_new_names.
13823         (register_scop_liveout_renames, add_loop_exit_phis,
13824         insert_loop_close_phis, struct igp,
13825         default_liveout_before_guard, add_guard_exit_phis,
13826         insert_guard_phis, copy_renames): New.
13827         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
13828         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
13829         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
13830         (scop_adjust_phis_for_liveouts): New.
13831         (gloog): Call scop_adjust_phis_for_liveouts.
13832
13833         * graphite.h (struct sese): Documented.  Added fields liveout,
13834         num_ver and livein.
13835         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
13836         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
13837         (struct scop): Added field liveout_renames.
13838         (SCOP_LIVEOUT_RENAMES): New.
13839
13840 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13841
13842         PR tree-optimization/38510
13843         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
13844         (translate_clast): Call recompute_all_dominators before
13845         graphite_verify.
13846         (gloog): Call recompute_all_dominators before graphite_verify.
13847
13848 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13849             Jan Sjodin  <jan.sjodin@amd.com>
13850
13851         PR tree-optimization/38500
13852         * graphite.c (create_sese_edges): Call fix_loop_structure after
13853         splitting blocks.
13854
13855 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
13856
13857         * config.gcc: Add m32r*-*-rtems*.
13858         * config/m32r/rtems.h: New file.
13859
13860 2009-01-05  Ben Elliston  <bje@au.ibm.com>
13861
13862         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
13863         (.po.pox): Likewise.
13864         (po/gcc.pot): Likewise.
13865
13866 2009-01-04  David S. Miller  <davem@davemloft.net>
13867
13868         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
13869         (STARTING_FRAME_OFFSET): Always set to zero.
13870
13871 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
13872
13873         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
13874         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
13875         fixed-point types, and vectors of the same.
13876
13877 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
13878
13879         * config/mips/sync.md (*mb_barrier): Rename to...
13880         (*memory_barrier): ...this.
13881
13882 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
13883
13884         * doc/extend.texi (Function Attributes): Move @cindex after @item
13885         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
13886         and put in alphabetical order. Fix 'target' name and put in order.
13887         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
13888         typos.
13889
13890 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
13891
13892         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
13893         (memory_barrier): Expand as unspec instead of unspec_volatile.
13894         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13895         (*memory_barrier): Define as unspec instead of unspec_volatile.
13896         Use (match_dup 0) as input operand.
13897
13898         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
13899         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
13900         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
13901         scratch register.  Remove operand 1.
13902         (*stbar): Define as unspec instead of unspec_volatile.
13903         Use (match_dup 0) as input operand, remove (const_int 8).
13904         (*membar): Define as unspec instead of unspec_volatile.
13905         Use (match_dup 0) as input operand, remove input operand 2.
13906
13907         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
13908         (memory_barrier): Expand as unspec instead of unspec_volatile.
13909         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13910         (*memory_barrier): Define as unspec instead of unspec_volatile.
13911         Use (match_dup 0) as input operand.
13912
13913         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
13914         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13915         Set volatile flag on operand 0.
13916         (*memory_barrier): New insn pattern.
13917
13918         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
13919         insn operands.
13920         (*memory_barrier): Use (match_dup 0) as input operand.
13921
13922         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
13923         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13924         Set volatile flag on operand 0.
13925         (*mb_internal): New insn pattern.
13926
13927         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
13928
13929 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
13930
13931         PR middle-end/38586
13932         * function.c (struct temp_slot): Move to the section of the file
13933         that deals with temp slots.  Remove field 'address'.
13934         (temp_slot_address_table): New hash table of address -> temp slot.
13935         (struct temp_slot_address_entry): New struct, items for the table.
13936         (temp_slot_address_compute_hash, temp_slot_address_hash,
13937         temp_slot_address_eq, insert_temp_slot_address): Support functions
13938         for the new table.
13939         (find_temp_slot_from_address): Rewrite to use the new hash table.
13940         (remove_unused_temp_slot_addresses): Remove addresses of temp
13941         slots that have been made available.
13942         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
13943         worker function for remove_unused_temp_slot_addresses.
13944         (assign_stack_temp_for_type): Don't clear the temp slot address list.
13945         Add the temp slot address to the address -> temp slot map.
13946         (update_temp_slot_address): Update via insert_temp_slot_address.
13947         (free_temp_slots): Call remove_unused_temp_slot_addresses.
13948         (pop_temp_slots): Likewise.
13949         (init_temp_slots): Allocate the address -> temp slot map, or empty
13950         the map if it is already allocated.
13951         (prepare_function_start): Initialize temp slot processing.
13952
13953 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
13954
13955         PR middle-end/38584
13956         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
13957         Calculate the size of all stack vars assuming no packing of stack
13958         vars will happen, replacing a quadratic algorithm with a linear one.
13959
13960 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
13961
13962         PR target/38707
13963         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
13964         can't be used.
13965
13966 2009-01-03  Diego Novillo  <dnovillo@google.com>
13967
13968         * doc/contrib.texi: Update contributions.
13969
13970 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
13971
13972         PR c++/38705
13973         * builtins.c (fold_builtin_memory_op): Give up if either operand
13974         is volatile.  Set srctype or desttype to non-qualified version
13975         of the other type.
13976
13977         PR c/38700
13978         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
13979         and FUNCTION_DECLs.
13980
13981 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
13982
13983         PR rtl-optimization/35805
13984         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
13985         problem if fast dce is able to remove any instructions.
13986         * dce.c (dce_process_block): Fix dump message.
13987
13988 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
13989
13990         PR 33649
13991         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
13992
13993 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
13994
13995         PR middle-end/38690
13996         * tree-flow.h (op_code_prio, op_prio): New prototypes.
13997         * tree-pretty-print.c (op_code_prio): New function.
13998         (op_prio): No longer static.  Use op_code_prio.
13999         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
14000         Use op_prio and op_code_prio to determine if () should be
14001         printed around operand(s) or not.
14002
14003         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
14004         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
14005         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
14006         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
14007         pp_character instead of pp_string for single letter printing.
14008
14009 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
14010
14011         * doc/extend.texi: Fix '#pragma GCC option' typo.
14012
14013 2009-01-02  Richard Guenther  <rguenther@suse.de>
14014
14015         * doc/install.texi (--enable-checking): Mention different
14016         default for stage1.
14017         (--enable-stage1-checking): Document.
14018
14019 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
14020
14021         PR middle-end/30142
14022         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
14023         case to be an error.
14024
14025 2009-01-02  Ben Elliston  <bje@au.ibm.com>
14026
14027         * config/fp-bit.h (pack_d): Constify argument.
14028         * config/fp-bit.c (makenan): Constify return type. Remove casts.
14029         (isnan): Constify argument.
14030         (isinf): Likewise.
14031         (iszero): Likewise.
14032         (pack_d): Likewise.
14033         (_fpadd_parts): Constify return type.
14034         (_fpmul_parts): Likewise.
14035         (_fpdiv_parts): Likewise.
14036
14037 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
14038
14039         PR c/36489
14040         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
14041         warn about overwriting initializer with side-effects or
14042         -Woverride-init if !IMPLICIT.
14043         (output_init_element): Likewise.  Pass IMPLICIT down to
14044         add_pending_init.
14045         (process_init_element): Add IMPLICIT argument.  Pass it down
14046         to output_init_element.
14047         (push_init_element, pop_init_level, set_designator): Adjust
14048         process_init_element callers.
14049         (set_nonincremental_init, set_nonincremental_init_from_string):
14050         Adjust add_pending_init callers.
14051         (output_pending_init_elements): Adjust output_init_element callers.
14052         * c-tree.h (process_init_element): Adjust prototype.
14053         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
14054         process_init_element callers.
14055
14056 \f
14057 Copyright (C) 2009 Free Software Foundation, Inc.
14058
14059 Copying and distribution of this file, with or without modification,
14060 are permitted in any medium without royalty provided the copyright
14061 notice and this notice are preserved.