OSDN Git Service

* config/freebsd-stdint.h: New file.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
2
3         * config/freebsd-stdint.h: New file.
4         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
5         Add freebsd-stdint.h to tm_file.
6
7 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
8
9         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
10         (thumb2_extendhidi2): Likewise.
11
12 2009-05-31  Ian Lance Taylor  <iant@google.com>
13
14         * regstat.c (regstat_n_sets_and_refs): Remove duplicate
15         definition.
16
17 2009-05-31  Ian Lance Taylor  <iant@google.com>
18
19         * Makefile.in (except.o): Depend upon gt-except.h, not
20         gt-$(EXCEPT_H).
21         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
22         (ipa-reference.o): Depend upon gt-ipa-reference.h.
23
24 2009-05-31  Jason Merrill  <jason@redhat.com>
25
26         * tree-pretty-print.c (print_call_name): Take the callee, not the
27         call itself.  Make non-static.  Use dump_function_name for
28         functions.
29         (dump_generic_node): Adjust.
30         * diagnostic.h: Declare print_call_name.
31         * gimple-pretty-print.c (dump_gimple_call): Use it.
32
33 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
34
35         * config/sh/sh.md (ashldi3_std): New define_expand.
36         (ashldi3): Use it.
37
38 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
39
40         PR target/40313
41         * config/sh/sh.c: Include debug.h.
42         (sh_expand_epilogue): Emit a blockage insn before the frame
43         pointer adjustment also when dwarf2out_do_frame returns true.
44
45 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
46
47         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
48         (thumb2_extendqidi2): New pattern.
49
50 2009-05-31  Ira Rosen  <irar@il.ibm.com>
51
52         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
53         mark phis for renaming.
54         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
55         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
56         Call mark_sym_for_renaming.
57         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
58         * tree-vect-loop.c (vect_transform_loop): Remove vect_memsyms_to_rename
59         initialization and a call to mark_set_for_renaming.
60
61 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
62
63         PR middle-end/40304
64         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
65         frame related even if !set_cfa && style < 0.
66
67 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
68
69         * config/i386/mingw-tls.c: New file.
70         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add
71         mingw-tls.c file.
72         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define
73         it for targets defining _WIN32 but not __CYGWIN__.
74
75 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
76
77         * configure.ac: Add MPC support.
78         
79         * config.in, configure: Regenerate.     
80
81 2009-05-29  Richard Henderson  <rth@redhat.com>
82
83         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
84         NOTE_INSN_BASIC_BLOCK.
85         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
86         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
87         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
88         to be deleted.
89         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
90         add in_use field.
91         (add_cfi): Disable check redefining cfa away from drap.
92         (lookup_cfa_1): Add remember argument; handle remember/restore.
93         (lookup_cfa): Pass remember argument.
94         (cfa_remember): New.
95         (compute_barrier_args_size_1): Remove sibcall check.
96         (dwarf2out_frame_debug_def_cfa): New.
97         (dwarf2out_frame_debug_adjust_cfa): New.
98         (dwarf2out_frame_debug_cfa_offset): New.
99         (dwarf2out_frame_debug_cfa_register): New.
100         (dwarf2out_frame_debug_cfa_restore): New.
101         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
102         (dwarf2out_begin_epilogue): New.
103         (dwarf2out_frame_debug_restore_state): New.
104         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
105         DW_CFA_restore_state.
106         (output_cfi_directive): Likewise.
107         (convert_cfa_to_fb_loc_list): Likewise.
108         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
109         * dwarf2out.h: Update.
110         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
111         (copy_insn_1): Early out for null.
112         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
113         and dwarf2out_frame_debug_restore_state.
114         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
115         (prologue_insn_hash, epilogue_insn_hash): New.
116         (free_after_compilation): Adjust freeing accordingly.
117         (record_insns): Create hash table if needed; push insns into
118         hash instead of array.
119         (maybe_copy_epilogue_insn): New.
120         (contains): Search hash table instead of array.
121         (sibcall_epilogue_contains): Remove.
122         (thread_prologue_and_epilogue_insns): Split eh_return insns
123         and mark them as epilogues.
124         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
125         scanning in terms of basic blocks.
126         * insn-notes.def (CFA_RESTORE_STATE): New.
127         * jump.c (returnjump_p_1): Accept EH_RETURN.
128         (eh_returnjump_p_1, eh_returnjump_p): New.
129         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
130         CFA_REGISTER, CFA_RESTORE): New.
131         * rtl.def (EH_RETURN): New.
132         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
133
134         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
135         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
136
137         * config/i386/i386.c (gen_push): Update cfa state.
138         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
139         add a CFA_ADJUST_CFA note.
140         (ix86_dwarf_handle_frame_unspec): Remove.
141         (ix86_expand_prologue): Update cfa state.
142         (ix86_emit_restore_reg_using_pop): New.
143         (ix86_emit_restore_regs_using_pop): New.
144         (ix86_emit_leave): New.
145         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
146         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
147         * config/i386/i386.h (struct machine_cfa_state): New.
148         (ix86_cfa_state): New.
149         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
150         (eh_return_internal): Merge from eh_return_<mode>,
151         use eh_return rtx, split w/ epilogue.
152
153 2009-05-29  Ian Lance Taylor  <iant@google.com>
154
155         * builtins.c (validate_gimple_arglist): Don't use va_arg with
156         enum type.
157         * calls.c (emit_library_call_value_1): Likewise.
158
159         * c-typeck.c (c_build_va_arg): New function.
160         * c-tree.h (c_build_va_arg): Declare.
161         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
162         instead of build_va_arg.
163
164 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
165
166         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
167         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
168         (ptr_difference_cost): Use affine combinations to compute it.
169         (difference_cost): Likewise.
170         (get_computation_cost_at): Compute more accurate cost for addresses
171         if the ratio is a multiplier allowed in addresses.
172         For non-addresses, consider that an additional offset or symbol is
173         added only once.
174
175 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
176
177         * config/i386/i386.c (ix86_decompose_address): Avoid useless
178         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
179
180         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
181         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
182         (prefix_rex): For UNIT_MMX don't imply the prefix by default
183         if MODE_DI.
184         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
185         to 1 for TYPE_SSE{IADD1,CVT1}.
186         (prefix_vex_imm8): Removed.
187         (length_vex): Only pass 1 as second argument to
188         ix86_attr_length_vex_default if prefix_extra is 0.
189         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
190         (length): For prefix vex computation use length_immediate
191         attribute instead of prefix_vex_imm8.
192         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
193         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
194         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
195         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
196         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
197         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
198         a space in between the operands.
199         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
200         if one operand is 0xff and the other one si, di, bp or sp.
201         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
202         other one si, di, bp or sp.
203         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
204         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
205         type and mode attributes.
206         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
207         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
208         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
209         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
210         prefix_data16 attribute iff MODE_DF.
211         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
212         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
213         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
214         constm128_operand in length_immediate computation.
215         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
216         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
217         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
218         length_immediate attribute to 1.
219         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
220         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
221         for certain alternatives.
222         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
223         prefix_data16 attribute if MODE_V1DF.
224         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
225         length_immediate to 1.
226         (set_got_rex64, set_rip_rex64): Remove length attribute, set
227         length_address to 4, set mode attribute to MODE_DI.
228         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
229         (fxam<mode>2_i387): Set length attribute to 4.
230         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
231         *prefetch_3dnow_rex): Override length_address attribute.
232         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
233         attributes.
234         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
235         (constm128_operand): Removed.
236         * config/i386/i386.c (memory_address_length): For
237         disp && !index && !base in 64-bit mode account for SIB byte if
238         print_operand_address can't optimize disp32 into disp32(%rip)
239         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
240         for fs: or gs: segment.
241         (ix86_attr_length_immediate_default): When checking if shortform
242         is possible, truncate immediate to the length of the non-shortened
243         immediate.
244         (ix86_attr_length_address_default): Ignore MEM_P operands
245         with X constraint.
246         (ix86_attr_length_vex_default): Only check for DImode on
247         GENERAL_REG_P operands.
248         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
249         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
250         (sse_cvttps2pi): Clear prefix_rep attribute.
251         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
252         attribute.
253         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
254         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
255         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
256         iff operand 2 is const_int_operand.
257         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
258         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
259         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
260         instead of vex.
261         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
262         prefix_data16.
263         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
264         prefix_data16 attribute for movlpd and movhpd instructions.
265         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
266         length_immediate for shufpd instruction.
267         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
268         (avx_cmpp<avxmodesuffixf2c><mode>3,
269         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
270         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
271         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
272         *vec_dupv4sf_avx, *vec_dupv4sf): Set
273         length_immediate attribute to 1.
274         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
275         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
276         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
277         prefix_data16 attribute for the first alternative to 1.
278         (*avx_loadlps): Override length_immediate for the first alternative.
279         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
280         attributes for second alternative.
281         (*vec_concatv2sf_sse4_1): Override length_immediate and
282         prefix_data16 attributes for second alternative.
283         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
284         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
285         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
286         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
287         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
288         prefix_data16 and length_immediate to 1.
289         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
290         to 1.
291         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
292         prefix_extra attribute for variants that don't have 0f prefix
293         alone.
294         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
295         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
296         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
297         *sse4_1_pextrd): Set length_immediate to 1.
298         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
299         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
300         to 1.
301         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
302         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
303         length_immediate to 1 for second alternative.
304         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
305         prefix_extra and length_immediate attributes for the first
306         alternative.
307         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
308         first alternative.
309         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
310         to 1 for the first and third alternative.
311         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
312         alternative.
313         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
314         attribute.
315         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
316         attribute to 0.
317         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
318         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
319         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
320         *avx_psign<mode>3): Set prefix_extra attribute to 1.
321         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
322         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
323         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
324         ssse3_psign<mode>3): Override prefix_rex attribute.
325         (*avx_palignrti): Override prefix_extra and length_immediate
326         to 1.
327         (ssse3_palignrti): Override length_immediate to 1.
328         (ssse3_palignrdi): Override length_immediate to 1, override
329         prefix_rex attribute.
330         (abs<mode>2): Override prefix_rep to 0, override prefix_rex
331         attribute.
332         (sse4a_extrqi): Override length_immediate to 2.
333         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
334         (sse4a_insertq): Override prefix_data16 to 0.
335         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
336         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
337         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
338         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
339         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
340         and length_immediate to 1.
341         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
342         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
343         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
344         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
345         and length_immediate to 1.
346         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
347         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
348         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
349         avx_ptest256): Override prefix_extra to 1.
350         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
351         Override prefix_data16 and length_immediate to 1.
352         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
353         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
354         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
355         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
356         prefix_data16 to 0 and prefix_extra to 2.
357         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
358         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
359         attribute.
360         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
361         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
362         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
363         and prefix_extra to 2.
364         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
365         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
366         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
367         avx_vpermilvar<mode>3,
368         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
369         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
370         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
371         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
372         Override prefix_extra to 1.
373         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
374         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
375         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
376         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
377         prefix_extra and length_immediate to 1.
378         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
379         modrm to 0.
380         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
381         to 1 for the first alternative.
382         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
383         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
384         cases.
385         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
386         *movv2sf_internal_avx, *movv2sf_internal): Override
387         prefix_rep attribute for certain alternatives.
388         (*mov<mode>_internal): Override prefix_rep or prefix_data16
389         attributes for certain alternatives.
390         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
391         attributes for certain alternatives.
392         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
393         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
394         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
395         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
396         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
397         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
398         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
399         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
400         length_immediate to 1 if operand 2 is const_int_operand.
401         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
402         *vec_extractv2si_1): Set length_immediate
403         attribute to 1.
404         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
405         using old 3DNOW insn rather than SSE/3DNOW_A.
406         (mmx_emms, mmx_femms): Clear modrm attribute.
407
408 2009-05-29  Martin Jambor  <mjambor@suse.cz>
409
410         * tree-sra.c:  New implementation of SRA.
411
412         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
413         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
414         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
415         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
416         (SRA_MAX_STRUCTURE_COUNT): Removed.
417         (SRA_FIELD_STRUCTURE_RATIO): Removed.
418         * doc/invoke.texi (sra-max-structure-size): Removed.
419         (sra-field-structure-ratio): Removed.
420
421 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
422
423         PR middle-end/40291
424         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
425         before expansion.
426
427 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
428
429         PR rtl-optimization/40101
430         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
431         seqno.  Adjust comment.
432         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
433         inserting bookkeeping before a jump, the jump is not scheduled.
434         When no positive seqno found, provide a value.  Add comment.
435
436 2009-05-29  Richard Guenther  <rguenther@suse.de>
437
438         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
439         short-cutting on the first component.
440
441 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
442
443         PR middle-end/39958
444         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
445         for trees other than decls/types.
446
447 2009-05-29  Richard Guenther  <rguenther@suse.de>
448
449         * tree-ssa-operands.c (get_expr_operands): Do not handle
450         INDIRECT_REFs in the handled-component case.  Remove
451         unused get_ref_base_and_extent case.
452         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
453         tree_low_cst and host_integerp where possible.
454         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
455         codes for equivalence.
456         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
457
458 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
459
460         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
461         to tmake_file for i[34567]86-*-cygwin*. 
462
463 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
464
465         PR target/40017
466         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
467         (altivec_categorize_keyword, init_vector_keywords,
468         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
469         similar to bool.
470
471 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
472
473         * tree.c (handle_dll_attribute): Check if node is
474         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
475
476 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
477
478         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
479         component.
480         (thumb2_zero_extendqidi2): Likewise.
481
482 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
483
484         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
485         instead of gen_movrt.
486         * config/sh/sh.md (movrt): Remove.
487
488 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
489
490         * doc/invoke.texi (IA-64 Options)
491         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
492         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
493         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
494         -msched-prefer-non-control-spec-insns,
495         -msched-stop-bits-after-every-cycle,
496         -msched-count-spec-in-critical-path,
497         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
498         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns
499         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
500         and -msched-spec-verbose.
501
502 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
503
504         * config/arm/lib1funcs.asm (__clear_cache): Define if
505         L_clear_cache.
506         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
507         error if used.
508         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
509
510 2009-05-28  Richard Guenther  <rguenther@suse.de>
511
512         * tree-ssa-alias.c (ao_ref_init): New function.
513         (ao_ref_base): Likewise.
514         (ao_ref_base_alias_set): Likewise.
515         (ao_ref_alias_set): Likewise.
516         (refs_may_alias_p_1): Change signature.
517         (refs_may_alias_p): Adjust.
518         (refs_anti_dependent_p): Likewise.
519         (refs_output_dependent_p): Likewise.
520         (call_may_clobber_ref_p_1): Change signature.
521         (call_may_clobber_ref_p): Adjust.
522         (stmt_may_clobber_ref_p_1): New function split out from ...
523         (stmt_may_clobber_ref_p): ... here.
524         (maybe_skip_until): Adjust signature.
525         (get_continuation_for_phi): Likewise.
526         (walk_non_aliased_vuses): Likewise.
527         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
528         (ao_ref_init): Declare.
529         (ao_ref_base): Likewise.
530         (ao_ref_alias_set): Likewise.
531         (stmt_may_clobber_ref_p_1): Likewise.
532         (walk_non_aliased_vuses): Adjust.
533         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
534         (get_ref_from_reference_ops): remove.
535         (vn_reference_lookup_2): Adjust signature.
536         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
537         (vn_reference_lookup_pieces): Adjust signature, do not re-build
538         trees.
539         (vn_reference_lookup): Adjust.
540         (vn_reference_insert): Likewise.
541         (vn_reference_insert_pieces): Adjust signature.
542         (visit_reference_op_call): Adjust.
543         * tree-ssa-pre.c (get_expr_type): Simplify.
544         (phi_translate_1): Adjust.
545         (compute_avail): Likewise.
546         (translate_vuse_through_block): Do not re-build trees.
547         (value_dies_in_block_x): Likewise.
548         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
549         fields.
550         (vn_reference_lookup_pieces): Adjust declaration.
551         (vn_reference_insert_pieces): Likewise.
552
553 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
554
555         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
556         with checking disabled.
557
558 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
559
560         PR target/37216
561
562         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
563         macro definition for support of three-operand format aligned
564         .comm directive in assembler on cygwin/pe/mingw target OS.
565         * configure:  Regenerate.
566         * config.h:  Regenerate.
567
568         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
569         aligned form of .comm directive if -mpe-aligned-commons is in effect.
570         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
571
572         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
573         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
574
575 2009-05-28  Ira Rosen  <irar@il.ibm.com>
576
577         PR tree-optimization/40254
578         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
579         in analysis of basic blocks.
580
581 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
582
583         PR middle-end/33699
584         * target.h (struct gcc_target): Fix indentation.  Add
585         const_anchor.
586         * target-def.h (TARGET_CONST_ANCHOR): New macro.
587         (TARGET_INITIALIZER): Use it.
588         * cse.c (CHEAPER): Move it up to the other macros.
589         (insert): Rename this ...
590         (insert_with_costs): ... to this.  Add cost parameters.  Update
591         function comment.
592         (insert): New function.  Call insert_with_costs.
593         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
594         find_reg_offset_for_const, try_const_anchors): New functions.
595         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
596         when using a const-anchor.  Call insert_const_anchors.
597         * config/mips/mips.c (mips_set_mips16_mode): Set
598         targetm.const_anchor.
599         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
600
601 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
602
603         * tree-inline.c (remap_decls): Enable nonlocalized variables
604         when not optimizing.
605
606 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
607
608         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
609         Simplify other tests involving optimize.
610
611 2009-05-27  Tom Tromey  <tromey@redhat.com>
612
613         * unwind-dw2.c (_Unwind_DebugHook): New function.
614         (uw_install_context): Call _Unwind_DebugHook.
615
616 2009-05-27  Tom Tromey  <tromey@redhat.com>
617
618         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
619
620 2009-05-27  Ian Lance Taylor  <iant@google.com>
621
622         * Makefile.in (LINKER, LINKER_FLAGS): Define.
623         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
624         (ALL_LINKERFLAGS): Define.
625         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
626         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
627         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
628         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
629         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
630         $(LINKER_FOR_BUILD).
631         (build/gcov-iov$(build_exeext)): Likewise.
632
633 2009-05-27  Julian Brown  <julian@codesourcery.com>
634
635         * gcse.c (target.h): Include.
636         (can_assign_to_reg_without_clobbers_p): Check that the target allows
637         copy of argument to a pseudo register.
638
639 2009-05-27  Diego Novillo  <dnovillo@google.com>
640
641         * tree-ssa-live.c (dump_scope_block): Document arguments.
642         (dump_scope_blocks): Document.
643         (debug_scope_blocks): New.
644         * tree-flow.h (debug_scope_blocks): Declare.
645
646 2009-05-21  Denis Chertykov  <denisc@overta.ru>
647
648         * doc/contrib.texi (Contributors): add myself to the list.
649
650 2009-05-27  Olivier Hainque  <hainque@adacore.com>
651
652         * expr.c (target_align): New function.  Alignment the TARGET of an
653         assignment may be assume to have.
654         (highest_pow2_factor_for_target): Use it instead of relying on
655         immediate tree attributes of TARGET, not necessarily honored when
656         intermediate bitfields are involved.
657         
658 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
659
660         PR target/40266
661         * config/i386/driver-i386.c (host_detect_local_cpu): Support
662         AVX, SSE4, AES, PCLMUL and POPCNT.
663
664 2009-05-27  Diego Novillo  <dnovillo@google.com>
665
666         * tree-pretty-print.c (dump_location): New.
667         (dump_generic_node): Call it.
668         Factor code to handle BLOCK nodes ...
669         (dump_block_node): ... here.
670
671 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
672
673         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h with
674         it.
675         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
676         included.
677         * gcc-plugin.h: Include config.h and system.h.
678         (IN_GCC): Define if not defined.
679
680 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
681
682         PR middle-end/40249
683         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
684         with -fno-inline.
685
686 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
687
688         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
689         applicable.
690         * config/m32r/m32r.h: Ditto.
691         * config/m32r/m32r.md: Ditto.
692         * config/m32r/predicates.md: Ditto.
693
694 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
695
696         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
697
698 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
699
700         * doc/plugins.texi
701         (Loading plugins): typo.
702         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
703         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
704         (Interacting with the GCC Garbage Collector): Added new section.
705         (Giving information about a plugin): Added new section for
706         PLUGIN_INFO.
707         * ggc.h (ggc_register_root_tab): Added declaration.
708         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
709         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
710         (register_callback): Improved comment in declaration.
711         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for
712         vectors.
713         (extra_root_vec) Added static variable for dynamic roots
714         registration.
715         (ggc_register_root_tab) Added new routine.
716         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
717         PLUGIN_GGC_MARKING event.
718         * ggc-zone.c: Include plugin.h.
719         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
720         * ggc-page.c: Include plugin.h.
721         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
722         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
723         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
724         (register_callback): check lack of callbacks for
725         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
726         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
727         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
728         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
729         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
730         dependency on plugin.h.
731         (plugin.o): Added dependency on ggc.h...
732
733 2009-05-26  Richard Guenther  <rguenther@suse.de>
734
735         PR middle-end/40248
736         Revert
737         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
738         with mismatched comparison modes.
739
740         * expr.c (expand_expr_real_1): Expand the operand of a
741         VIEW_CONVERT_EXPR in its natural mode.
742
743 2009-05-26  Ian Lance Taylor  <iant@google.com>
744
745         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
746         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
747         (ALL_COMPILERFLAGS): Define.
748         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
749         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
750         (collect2$(exeext), collect2.o): Likewise.
751         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
752         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
753         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
754         (libbackend.o, intl.o, cppdefault.o): Likewise.
755         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
756         (build/%.o): Use $(COMPILER_FOR_BUILD).
757         (build/gen%$(build_exeext)): Likewise.
758         (build/gcov-iov$(build_exeext)): LIkewise.
759         * config/t-darwin (darwin.o): Use $(COMPILER).
760         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
761         * config/t-sol2 (sol2-c.o): Likewise.
762         (sol2.o): Likewise.
763         * config/t-vxworks (vxworks.o): Likewise.
764         * config/x-darwin (host-darwin.o): Likewise.
765         * config/x-hpux (host-hpux.o): Likewise.
766         * config/x-linux (host-linux.o): Likewise.
767         * config/x-solaris (host-solaris.o): Likewise.
768         * config/alpha/x-alpha (driver-alpha.o): Likewise.
769         * config/arm/t-arm (arm-c.o): Likewise.
770         * config/arm/t-pe (pe.o): Likewise.
771         * config/arm/t-wince-pe (pe.o): Likewise.
772         * config/i386/t-cygming (winnt.o): Likewise.
773         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
774         * config/i386/t-cygwin (cygwin1.o): Likewise.
775         (cygwin2.o): Likewise.
776         * config/i386/t-i386 (i386-c.o): Likewise.
777         * config/i386/t-interix (winnt.o): Likewise.
778         * config/i386/t-netware (netware.o): Likewise.
779         * config/i386/t-nwld (nwld.o): Likewise.
780         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
781         * config/i386/x-i386 (driver-i386.o): Likewise.
782         * config/i386/x-cygwin (host-cygwin.o): Likewise.
783         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
784         * config/ia64/t-ia64 (ia64-c.o): Likewise.
785         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
786         * config/mips/x-native (driver-native.o): Likewise.
787         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
788         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
789         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
790         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
791         * config/score/t-score-elf (score7.o): Likewise.
792         (score3.o): Likewise.
793         * config/sh/t-sh (sh-c.o): Likewise.
794         * config/sh/t-symbian (sh-c.o): Likewise.
795         (symbian.o): Likewise.
796         * config/spu/t-spu-elf (spu-c.o): Likewise.
797         * config/v850/t-v850 (v850-c.o): Likewise.
798         * config/v850/t-v850e (v850-c.o): Likewise.
799
800 2009-05-26  Richard Guenther  <rguenther@suse.de>
801
802         PR tree-optimization/40122
803         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
804         VECTOR_CSTs if possible.
805         (fold_gimple_assign): Likewise.
806
807 2009-05-26  Richard Guenther  <rguenther@suse.de>
808
809         PR middle-end/40252
810         * fold-const.c (fold_binary): Use the correct types for building
811         rotates.
812
813 2009-05-26  Richard Guenther  <rguenther@suse.de>
814
815         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
816         redundant calls to merge_alias_info.
817         (bump_vector_ptr): Likewise.
818         * tree-ssa-copy.c (merge_alias_info): Remove.
819         (replace_exp_1): Remove call to merge_alias_info.
820         (propagate_tree_value): Likewise.
821         (fini_copy_prop): Propagate points-to info.
822         * tree-flow.h (merge_alias_info): Remove.
823
824 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
825
826         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
827
828 2009-05-25  Jan Hubicka  <jh@suse.cz>
829
830         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
831         * cgraph.h (struct inline_summary): New filed self_wize,
832         size_inlining_benefit, self_time and time_inlining_benefit.
833         (struct cgraph_global_info): Replace insns by time ans size fields.
834         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
835         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
836         (ipcp_update_callgraph): Do not touch function bodies.
837         * ipa-inline.c: Include except.h
838         (MAX_TIME): New constant.
839         (overall_insns): Remove.
840         (leaf_node_p): New.
841         (overall_size, max_benefit): New static variables.
842         (cgraph_estimate_time_after_inlining): New function.
843         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
844         (cgraph_clone_inlined_nodes): Update size.
845         (cgraph_mark_inline_edge): Update size.
846         (cgraph_estimate_growth): Use size info.
847         (cgraph_check_inline_limits): Check size.
848         (cgraph_default_inline_p): Likewise.
849         (cgraph_edge_badness): Compute badness based on benefit and size cost.
850         (cgraph_decide_recursive_inlining): Check size.
851         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
852         times.
853         (cgraph_decide_inlining): Likewise.
854         (cgraph_decide_inlining_incrementally): Likewise; honor
855         PARAM_EARLY_INLINING_INSNS.
856         (likely_eliminated_by_inlining_p): New predicate.
857         (estimate_function_body_sizes): New function.
858         (compute_inline_parameters): Use it.
859         * except.c (must_not_throw_labels): New function.
860         * except.h (must_not_throw_labels): Declare.
861         * tree-inline.c (init_inline_once): Kill inlining_weigths
862         * tree-ssa-structalias.c: Avoid uninitialized warning.
863         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
864         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
865         (PARAM_INLINE_CALL_COST): Remove.
866         (PARAM_EARLY_INLINING_INSNS): New.
867
868 2009-05-25  Richard Guenther  <rguenther@suse.de>
869
870         PR tree-optimization/36327
871         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
872         callback for reference translation or lookup at the point
873         of may-defs.
874         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
875         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
876         for union COMPONENT_REFs.
877         (vn_reference_lookup_3): New callback.  Lookup from memset
878         and CONSTRUCTOR assignment, translate through struct copies.
879         (vn_reference_lookup_pieces): Make sure to not free the
880         passed operands array.  Adjust walk_non_aliased_vuses call.
881         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
882         make sure we do not leak memory.
883
884 2009-05-25  Richard Guenther  <rguenther@suse.de>
885
886         * tree-ssa-alias.h (dump_points_to_solution): Declare.
887         * tree-inline.c (expand_call_inline): Reset the escaped and
888         callused solutions.
889         * tree-ssa-structalias.c (pass_build_ealias): New.
890         * tree-pass.h (pass_build_ealias): Declare.
891         * passes.c (init_optimization_passes): Add PTA during 
892         early optimizations.
893         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
894         and CALLUSED solutions.
895         (dump_points_to_solution): New function, split out from ...
896         (dump_points_to_info_for): ... here.
897         * tree-parloops.c (parallelize_loops): Reset the escaped and
898         callused solutions.
899
900 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
901
902         PR bootstrap/40027
903         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
904         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
905
906 2009-05-25  Ira Rosen  <irar@il.ibm.com>
907
908         PR tree-optimization/40238
909         * tree-vect-stmts.c (vect_init_vector): Insert initialization
910         statements after basic block's labels.
911         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
912         to free the allocated memory.
913
914 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
915
916         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
917         return address with a USE.
918
919 2009-05-24  Richard Guenther  <rguenther@suse.de>
920
921         PR middle-end/40233
922         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
923         array type from the main variant of the inner type.
924
925 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
926
927         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
928         definition to bool (from int) to un-break build.
929         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
930
931 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
932
933         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
934         discard_stmt_changes): Delete.
935         * tree-ssa-operands.c (scb_stack): Delete.
936         (init_ssa_operands): Do not initialize it.
937         (fini_ssa_operands): Do not free it.
938         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
939
940         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
941         update_stmt, remove the others.  Fix comments.
942         * tree-dfa.c (optimize_stack_restore): Likewise.
943         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
944         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
945         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
946         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
947         Likewise.
948         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
949         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
950         (dom_opt_finalize_block): Likewise, adjusting access to stmts_to_rescan.
951         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
952         (stmts_to_rescan): Change item type to gimple.
953         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
954
955 2009-05-24  Ira Rosen  <irar@il.ibm.com>
956
957         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
958         * tree-pass.h (pass_slp_vectorize): New pass.
959         * params.h (SLP_MAX_INSNS_IN_BB): Define.
960         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
961         * tree-vectorizer.c (timevar.h): Include.
962         (user_vect_verbosity_level): Declare.
963         (vect_location): Fix comment.
964         (vect_set_verbosity_level): Update user_vect_verbosity_level
965         instead of vect_verbosity_level.
966         (vect_set_dump_settings): Add an argument. Ignore user defined
967         verbosity if dump flags require higher level of verbosity. Print to
968         stderr only for loop vectorization.
969         (vectorize_loops): Update call to vect_set_dump_settings.
970         (execute_vect_slp): New function.
971         (gate_vect_slp): Likewise.
972         (struct gimple_opt_pass pass_slp_vectorize): New.
973         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
974         access its members.
975         (vec_info_for_bb): New function.
976         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
977         (VECTORIZATION_ENABLED): New macro.
978         (SLP_ENABLED, SLP_DISABLED): Likewise.
979         (vect_is_simple_use): Add bb_vec_info argument.
980         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
981         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
982         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
983         vect_schedule_slp, vect_analyze_slp): Likewise.
984         (vect_analyze_stmt): Add slp_tree argument.
985         (find_bb_location): Declare.
986         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
987         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
988         (vect_analyze_loop_operations, vect_analyze_loop,
989         get_initial_def_for_induction, vect_create_epilog_for_reduction,
990         vect_finalize_reduction, vectorizable_reduction,
991         vectorizable_live_operation, vect_transform_loop): Likewise.
992         * tree-data-ref.c (dr_analyze_innermost): Update comment,
993         skip evolution analysis if analyzing a basic block.
994         (dr_analyze_indices): Likewise.
995         (initialize_data_dependence_relation): Skip the test whether the
996         object is invariant for basic blocks.
997         (compute_all_dependences): Skip dependence analysis for data
998         references in basic blocks.
999         (find_data_references_in_stmt): Don't fail in case of invariant
1000         access in basic block.
1001         (find_data_references_in_bb): New function.
1002         (find_data_references_in_loop): Move code to
1003         find_data_references_in_bb and add a call to it.
1004         (compute_data_dependences_for_bb): New function.
1005         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1006         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1007         that STEP is 0.
1008         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1009         unknown dependence in basic block and fail in case of dependence in
1010         basic block.
1011         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1012         dependence instances from either loop or basic block vectorization
1013         info.
1014         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1015         before calling nested_in_vect_loop_p.
1016         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1017         dependence instances from either loop or basic block vectorization
1018         info.
1019         (vect_verify_datarefs_alignment): Likewise.
1020         (vect_enhance_data_refs_alignment): Adjust function calls.
1021         (vect_analyze_data_refs_alignment): Likewise.
1022         (vect_analyze_group_access): Fix printing. Skip different checks if
1023         DR_STEP is 0. Keep strided stores either in loop or basic block
1024         vectorization data structure. Fix indentation.
1025         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1026         basic blocks.
1027         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1028         dependence instances from either loop or basic block vectorization
1029         info.
1030         (vect_analyze_data_refs): Update comment. Call
1031         compute_data_dependences_for_bb to analyze basic blocks.
1032         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1033         case of loop vectorization. In case of basic block vectorization use
1034         data-ref itself as a base.
1035         (vect_create_data_ref_ptr): In case of basic block vectorization:
1036         don't advance the pointer, add new statements before the current
1037         statement.  Adjust function calls.
1038         (vect_supportable_dr_alignment): Support only aligned accesses in
1039         basic block vectorization.
1040         * common.opt (ftree-slp-vectorize): New flag.
1041         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1042         (vect_pattern_recog_1): Likewise.
1043         * tree-vect-stmts.c (process_use): Likewise.
1044         (vect_init_vector): Add new statements in the beginning of the basic
1045         block in case of basic block SLP.
1046         (vect_get_vec_def_for_operand): Adjust function calls.
1047         (vect_finish_stmt_generation): Likewise.
1048         (vectorizable_call): Add assert that it is loop vectorization, adjust
1049         function calls.
1050         (vectorizable_conversion, vectorizable_assignment): Likewise.
1051         (vectorizable_operation): In case of basic block SLP, take
1052         vectorization factor from statement's type and skip the relevance
1053         check. Adjust function calls.
1054         (vectorizable_type_demotion): Add assert that it is loop
1055         vectorization, adjust function calls.
1056         (vectorizable_type_promotion): Likewise.
1057         (vectorizable_store): Check for outer loop only in case of loop
1058         vectorization. Adjust function calls. For basic blocks, skip the
1059         relevance check and don't advance pointers.
1060         (vectorizable_load): Likewise.
1061         (vectorizable_condition): Add assert that it is loop vectorization,
1062         adjust function calls.
1063         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1064         that it is not reduction, get vector type, call only supported
1065         functions, skip loop specific parts.
1066         (vect_transform_stmt): Check for outer loop only in case of loop
1067         vectorization.
1068         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1069         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1070         for external definition.
1071         * passes.c (pass_slp_vectorize): New pass.
1072         * tree-vect-slp.c (find_bb_location): New function.
1073         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1074         check for patterns only in loops.
1075         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1076         case of multiple types in basic block SLP.
1077         (vect_mark_slp_stmts_relevant): New function.
1078         (vect_supported_load_permutation_p): Fix comment.
1079         (vect_analyze_slp_instance): Add argument. In case of basic block
1080         SLP, take vectorization factor from statement's type, check that
1081         unrolling factor is 1. Adjust function call. Save SLP instance in
1082         either loop or basic block vectorization structure. Return FALSE,
1083         if SLP failed.
1084         (vect_analyze_slp): Add argument. Get strided stores groups from
1085         either loop or basic block vectorization structure. Return FALSE
1086         if basic block SLP failed.
1087         (new_bb_vec_info): New function.
1088         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1089         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1090         (vect_schedule_slp): Add argument. Get SLP instances from either
1091         loop or basic block vectorization structure. Set vectorization factor
1092         to be 1 for basic block SLP.
1093         (vect_slp_transform_bb): New function.
1094         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1095
1096 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1097
1098         * final.c (shorten_branches): Do not align labels for jump tables.
1099         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1100
1101 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1102
1103         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1104         Remove outdated reference to flow.c and fix nits.
1105         * doc/gccint.texi: Tweak RTL description.
1106         * doc/rtl.texi: Likewise.
1107
1108 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1109
1110         * config/avr/avr.c: Change my email address.
1111         * config/avr/avr.h: Likewise.
1112         * config/avr/avr.md: Likewise.
1113         * config/avr/avr-protos.h: Likewise.
1114         * config/avr/libgcc.S: Likewise.
1115
1116 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
1117
1118         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
1119         (spu_split_load, spu_split_store): Change return type to int.
1120         (spu_split_convert): Declare.
1121         * config/spu/predicates.md (spu_mem_operand): Remove.
1122         (spu_mov_operand): Update.
1123         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
1124         * config/spu/spu.c (regno_aligned_for_load): Remove.
1125         (reg_aligned_for_addr, spu_expand_load): Define.
1126         (spu_expand_extv): Reimplement and handle MEM.
1127         (spu_expand_insv): Handle MEM.
1128         (spu_sched_reorder): Handle insn's with length 0.
1129         (spu_legitimate_address_p): Reimplement.
1130         (store_with_one_insn_p): Return TRUE for any mode with size
1131         larger than 16 bytes.
1132         (address_needs_split): Define.
1133         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
1134         operands.
1135         (spu_convert_move): Define.
1136         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
1137         (spu_split_store): Change all MEM's to TImode.
1138         (spu_init_expanders): Preallocate registers that correspond to
1139         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
1140         mark_reg_pointer.
1141         (spu_split_convert): Define.
1142         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
1143         (_move<mode>, _movdi, _movti): Update predicate and condition.
1144         (load, store): Change to define_split.
1145         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
1146         extend<mode>ti2.
1147         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
1148         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
1149         define_insn_and_split of lshr<mode>3.
1150         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
1151         (<v>ashr<mode>3_imm): Define.
1152         (extv, extzv, insv): Allow MEM operands.
1153         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
1154         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
1155         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
1156         (_spu_convert2): Change to define_insn_and_split and remove the
1157         corresponding define_peephole2.
1158         (stack_protect_set, stack_protect_test, stack_protect_test_si):
1159         Change predicates to memory_operand.
1160
1161 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1162
1163         * config/arm/thumb2.md: Add 16-bit multiply instructions.
1164
1165 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1166
1167         PR tree-optimization/40219
1168         * tree.c (iterative_hash_expr): Make sure the builtin function is
1169         a normal builtin function and not a front end or back end builtin
1170         before indexing into the built_in_decls array.
1171
1172 2009-05-22  Richard Guenther  <rguenther@suse.de>
1173
1174         PR middle-end/38964
1175         * alias.c (write_dependence_p): Do not use TBAA for answering
1176         anti-dependence or output-dependence.
1177         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
1178         (emit_pointer_definition): Remove.
1179         (emit_alias_warning): Likewise.
1180         (find_what_var_points_to): Remove TBAA pruning code.
1181         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
1182         violations.
1183         (compute_points_to_sets): Remove code computing the set of
1184         dereferenced pointers.
1185         * tree-data-ref.c (dr_may_alias_p): Properly use the split
1186         oracle for querying anti and output dependencies.
1187         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
1188         if TBAA may be applied.
1189         (refs_anti_dependent_p): New function.
1190         (refs_output_dependent_p): Likewise.
1191         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
1192         (refs_output_dependent_p): Likewise.
1193         * doc/tree-ssa.texi (Memory model): New section.
1194         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1195         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1196         * cfgexpand.c (expand_gimple_basic_block): Do not handle
1197         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
1198         * expr.c (expand_expr_real_1): Likewise.
1199         * gimple-low.c (lower_stmt): Likewise.
1200         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
1201         (dump_gimple_cdt): Remove.
1202         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1203         (gimple_size): Likewise.
1204         (walk_gimple_op): Likewise.
1205         (is_gimple_stmt): Likewise.
1206         (walk_stmt_load_store_addr_ops): Likewise.
1207         (gimple_build_cdt): Remove.
1208         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
1209         * gimple.h (gimple_cdt_new_type): Remove.
1210         (gimple_cdt_new_type_ptr): Likewise.
1211         (gimple_cdt_set_new_type): Likewise.
1212         (gimple_cdt_location): Likewise.
1213         (gimple_cdt_location_ptr): Likewise.
1214         (gimple_cdt_set_location): Likewise.
1215         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1216         * tree-cfg.c (remove_useless_stmts_1): Do not handle
1217         GIMPLE_CHANGE_DYNAMIC_TYPE.
1218         (verify_types_in_gimple_stmt): Likewise.
1219         * tree-inline.c (estimate_num_insns): Likewise.
1220         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
1221         (copy_decl_to_var): Likewise.
1222         (copy_result_decl_to_var): Likewise.
1223         * tree-pretty-print.c (dump_generic_node): Do not handle
1224         CHANGE_DYNAMIC_TYPE_EXPR.
1225         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1226         * tree-ssa-operands.c (get_expr_operands): Likewise.
1227         * tree-ssa-structalias.c (struct variable_info): Remove
1228         no_tbaa_pruning member.
1229         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
1230         (unify_nodes): Do not copy it.
1231         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
1232         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
1233         (set_uids_in_ptset): Do not check it.
1234         (find_what_var_points_to): Likewise.
1235         (compute_tbaa_pruning): Remove.
1236         (compute_points_to_sets): Do not call it.
1237         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
1238         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
1239         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
1240         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
1241         (DECL_NO_TBAA_P): Likewise.
1242         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
1243         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
1244         (expand_omp_atomic_pipeline): Do not set it.
1245         * print-tree.c (print_node): Do not dump it.
1246         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
1247         redundant check.
1248
1249 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
1250
1251         PR target/39856
1252         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
1253         for clobber.
1254
1255 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
1256
1257         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
1258         non-external.
1259
1260 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1261
1262         * Makefile.in (bversion.h, s-bversion): New targets.
1263         (TOPLEV_H): Add bversion.h.
1264         * toplev.h: Include "bversion.h".
1265         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
1266         the __format__ attribute only if compiling with the same version
1267         of GCC as the sources (the "build version").
1268
1269 2009-05-22  Ben Elliston  <bje@au.ibm.com>
1270
1271         * c-format.c (handle_format_attribute): Fix comment typo.
1272
1273 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
1274
1275         PR target/37846
1276         * config/ia64/ia64.opt (mfused-madd): New.
1277         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
1278         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
1279         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
1280         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
1281         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
1282         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
1283         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
1284         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
1285         instruction if !TARGET_FUSED_MADD.
1286         (fpma, fpms): Remove colon from name.
1287
1288 2009-05-22  Richard Guenther  <rguenther@suse.de>
1289
1290         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
1291         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
1292         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
1293         TARGET_MEM_REF.
1294         (create_expression_by_pieces): Only convert if necessary.
1295         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
1296         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
1297
1298 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
1299
1300         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
1301         regular pattern from a template and rename it ...
1302         (*extzv_truncsi_exts): ... to this.
1303
1304 2009-05-21  Richard Guenther  <rguenther@suse.de>
1305
1306         * cgraph.h (struct cgraph_node): Remove inline_decl member.
1307         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
1308         (cgraph_default_inline_p): Likewise.
1309         (cgraph_decide_inlining_incrementally): Likewise.
1310
1311 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
1312             Uros Bizjak  <ubizjak@gmail.com>
1313
1314         * config/i386/cpuid.h (bit_MOVBE): New.
1315
1316         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
1317
1318         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
1319         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
1320         (ix86_handle_option): Handle OPT_mmovbe.
1321         (ix86_target_string): Add -mmovbe.
1322         (pta_flags): Add PTA_MOVBE.
1323         (processor_alias_table): Add PTA_MOVBE to "atom".
1324         (override_options): Handle PTA_MOVBE.
1325
1326         * config/i386/i386.h (TARGET_MOVBE): New.
1327
1328         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
1329         (*bswapsi_movbe): New.
1330         (*bswapdi_movbe): Likewise.
1331         (bswapdi2): Renamed to ...
1332         (*bswapdi_1): This.
1333         (bswapdi2): New expander.
1334
1335         * config/i386/i386.opt (mmovbe): New.
1336
1337         * doc/invoke.texi: Document -mmovbe.
1338
1339 2009-05-21  Taras Glek  <tglek@mozilla.com>
1340
1341         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
1342         * gcc-plugin.h (plugin_init): Updated signature.
1343         * gcc-plugin.h (plugin_name_args): Moved to this header.
1344         * doc/plugins.texi (plugin_init): Updated documention to reflect
1345         API change.
1346         * doc/plugins.texi (plugin_name_args): Added to documention.
1347
1348 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
1349
1350         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
1351         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
1352
1353 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
1354
1355         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
1356         JUMP_TABLE_DATA_P predicates where applicable.
1357         * config/i386/predicates.md: Ditto.
1358         * config/i386/sse.md: Ditto.
1359
1360 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
1361
1362         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
1363         operand2 -128 override length_immediate attribute to 1.
1364         * config/i386/predicates.md (constm128_operand): New predicate.
1365
1366         * config/i386/i386.c (memory_address_length): Handle %r12
1367         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
1368         also check REGNO.
1369         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
1370         mode look through optional ZERO_EXTEND and SUBREG.
1371         * config/i386/i386.md (R12_REG): New define_constant.
1372         (prefix_data16): For sse unit set also for MODE_TI insns.
1373         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
1374         insns set if operand 1 is ext_QIreg_operand.
1375         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
1376         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
1377         immediate.
1378         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
1379         mode from MODE_DI to MODE_SI.
1380         (movdi_1_rex64): Override modrm and length_immediate attributes
1381         only for movabs (TYPE_IMOV, alternative 2).
1382         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
1383         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
1384         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
1385         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
1386         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
1387         prefix_rex attribute if DImode.
1388         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
1389         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
1390         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
1391         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
1392         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
1393         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
1394         Likewise.  For TYPE_IMOV clear length_immediate attribute.
1395         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
1396         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
1397         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
1398         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
1399         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
1400         or one operand TYPE_ISHIFT.
1401         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
1402         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
1403         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
1404         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
1405         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
1406         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
1407         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
1408         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
1409         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
1410         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
1411         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
1412         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
1413         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
1414         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
1415         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
1416         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
1417         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
1418         set mode attribute, don't override length attribute.
1419         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
1420         to 1.
1421         (return_internal_long): Set length attribute to 2 instead of 1.
1422         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
1423         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
1424         prefix_rex attribute.
1425         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
1426         New predicates.
1427         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
1428
1429 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1430
1431         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
1432
1433 2009-05-20  Ian Lance Taylor  <iant@google.com>
1434
1435         * tree.c (build_tree_list_vec_stat): New function.
1436         (ctor_to_vec): New function.
1437         (build_nt_call_vec): New function.
1438         (build_call_array): Change args to be a const pointer.
1439         (build_call_vec): New function.
1440         * tree.h (build_nt_call_vec): Declare.
1441         (build_tree_list_vec_stat): Declare.
1442         (build_tree_list_vec): Define.
1443         (build_call_array): Update declaration.
1444         (build_call_vec): Declare.
1445         (ctor_to_vec): Declare.
1446         * c-common.c (tree_vector_cache): New static variable.
1447         (make_tree_vector): New function.
1448         (release_tree_vector): New function.
1449         (make_tree_vector_single): New function.
1450         (make_tree_vector_copy): New function.
1451         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
1452         (make_tree_vector_single, make_tree_vector_copy): Declare.
1453         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
1454         (c_parser_expr_list): Don't manage cache here, instead call
1455         make_tree_vector.
1456         (c_parser_release_expr_list): Remove static function.
1457         (c_parser_vec_to_tree_list): Remove static function.
1458         (c_parser_attributes): Call build_tree_list_vec instead of
1459         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
1460         c_parser_release_expr_list.
1461         (c_parser_postfix_expression_after_primary): Likewise.
1462         (c_parser_objc_keywordexpr): Likewise.
1463
1464 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
1465
1466         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
1467         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
1468         TARGET_CONVERT_TO_TYPE.
1469         * hooks.c (hook_tree_const_tree_null): Define.
1470         * hooks.h (hook_tree_const_tree_null): Declare.
1471         * target.h (struct gcc_target):  Add invalid_parameter_type,
1472         invalid_return_type, promoted_type, and convert_to_type fields.
1473         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
1474         (TARGET_INVALID_RETURN_TYPE): Define.
1475         (TARGET_PROMOTED_TYPE): Define.
1476         (TARGET_CONVERT_TO_TYPE): Define.
1477         (TARGET_INITIALIZER): Update for new fields.
1478         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
1479         (grokparms): Check targetm.invalid_parameter_type.
1480         * c-typeck.c (default_conversion): Check targetm.promoted_type.
1481         * c-convert.c (convert): Check targetm.convert_to_type.
1482
1483 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
1484
1485         * config/mips/mips.md (*extenddi_truncate<mode>,
1486         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
1487         defintions.
1488         (*extendhi_truncateqi): New define_insn_and_sptit.
1489
1490 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
1491
1492         PR middle-end/40204
1493         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
1494         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
1495
1496 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
1497
1498         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
1499         the operand of VIEW_CONVERT_EXPR.
1500
1501 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
1502
1503         * config/i386/driver-i386.c (host_detect_local_cpu): Check
1504         extended family and model for Intel processors.  Support Intel
1505         Atom.
1506
1507 2009-05-20  Olivier Hainque  <hainque@adacore.com>
1508
1509         * gstab.h (stab_code_type): Define, to be used instead of the
1510         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
1511         notice.
1512         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
1513         occurrences by stab_code_type.
1514         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
1515
1516 2009-05-20  Martin Jambor  <mjambor@suse.cz>
1517
1518         * tree-flow.h (insert_edge_copies_seq): Undeclare.
1519         (sra_insert_before): Likewise.
1520         (sra_insert_after): Likewise.
1521         (sra_init_cache): Likewise.
1522         (sra_type_can_be_decomposed_p): Likewise.
1523         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
1524         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
1525         (sra_insert_before): Likewise.
1526         (sra_insert_after): Likewise.
1527         (sra_init_cache): Likewise.
1528         (insert_edge_copies_seq): Made static and moved upwards.
1529
1530         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
1531         case.
1532
1533         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
1534
1535         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
1536         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
1537         simple copies.
1538
1539 2009-05-20  Richard Guenther  <rguenther@suse.de>
1540
1541         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1542         with mismatched comparison modes.
1543
1544 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1545
1546         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
1547         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
1548         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
1549         with shifts for Thumb2.
1550         (orsi_notsi): New for orn.
1551         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
1552         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
1553         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
1554         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
1555         Don't invert remainder for IOR.
1556         
1557 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
1558
1559         PR tree-optimization/40087
1560         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
1561         number_of_iterations_ne): Rename never_infinite argument.
1562         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
1563         number_of_iterations_le): Handle pointer-type ivs when
1564         exit_must_be_taken is false.
1565         (number_of_iterations_cond):  Do not always assume that
1566         exit_must_be_taken if the control variable is a pointer.
1567
1568 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1569
1570         * c-typeck.c (build_binary_op): Allow % on integal vectors.
1571         * doc/extend.texi (Vector Extension): Document that % is allowed too.
1572
1573 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1574
1575         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
1576         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
1577
1578 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1579
1580         PR c/40172
1581         * c.opt (Wlogical-op): Disabled by default.
1582         * c-opt (c_common_post_options): Do not enable Wlogical-op with
1583         Wextra.
1584         * doc/invoke.texi (Wlogical-op): Likewise.
1585         
1586 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
1587
1588         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
1589         into CASE_CONVERT.
1590         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
1591         Propagate the type of the first operand.
1592         <ASSERT_EXPR>: Simplify.
1593         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
1594         Rewrite using the RHS code as discriminant.
1595         <NOP_EXPR>: Turn into CASE_CONVERT.
1596         <PLUS_EXPR>: Propagate the type of the first operand.
1597
1598 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
1599
1600         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
1601         (ia64_dconst_0_375): New.
1602         * config/ia64/ia64.c (ia64_override_options): Remove
1603         -minline-sqrt-min-latency warning.
1604         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
1605         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
1606         * config/ia64/ia64.md (*sqrt_approx): Remove.
1607         (sqrtsf2): Remove #if 0.
1608         (sqrtsf2_internal_thr): Rewrite and move to div.md.
1609         (sqrtdf): Remove assert.
1610         (sqrtdf2_internal_thr): Rewrite and move to div.md.
1611         (sqrtxf2): Remove #if 0.
1612         (sqrtxf2_internal_thr): Rewrite and move to div.md.
1613         * div.md (sqrt_approx_rf): New.
1614         (sqrtsf2_internal_thr): New implementation.
1615         (sqrtsf2_internal_lat): New.
1616         (sqrtdf2_internal_thr: New implementation.
1617         (sqrtxf2_internal): New implementation.
1618
1619 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1620             Hans-Peter Nilsson  <hp@axis.com>
1621
1622         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
1623         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
1624         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
1625         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
1626         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
1627         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
1628         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
1629         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
1630         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
1631         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
1632         * c-common.c: ...from here.
1633
1634 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1635
1636         * c-common.c (warn_logical_operator): Remove unnecessary
1637         conditionals.
1638
1639 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1640
1641         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
1642
1643 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1644
1645         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
1646         assignments with memcpy calls.
1647         (add_fdes): Likewise.
1648         (binary_search_unencoded_fdes): Likewise.
1649         (linear_search_fdes): Eliminate type puns.
1650         
1651 2009-05-19  Richard Guenther  <rguenther@suse.de>
1652
1653         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
1654         not falsely claim to have propagated into all uses.
1655
1656 2009-05-19  Ben Elliston  <bje@au.ibm.com>
1657
1658         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
1659         version to v3.0.
1660
1661 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1662
1663         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
1664         * config/sh/sh.c (sh_legitimate_address_p): Make static.
1665         (TARGET_LEGITIMATE_ADDRESS_P): New.
1666         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
1667         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
1668         
1669 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
1670
1671         PR debug/40109
1672         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
1673         child of the containing namespace's DIE.
1674
1675 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
1676
1677         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
1678         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
1679         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
1680         extend patterns.
1681
1682 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1683
1684         PR target/39942
1685         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
1686         gen_align with gen_pad.
1687         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
1688         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
1689
1690         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
1691         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
1692
1693         * config/i386/i386.md (align): Renamed to ...
1694         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
1695         ASM_OUTPUT_MAX_SKIP_PAD.
1696
1697 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
1698
1699         * config.gcc: Fix variable syntax.
1700
1701         PR target/39531
1702         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
1703         before calling exact_log2.
1704         (output_iorsi3): Likewise.
1705         (output_xorsi3): Likewise.
1706
1707 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
1708
1709         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
1710         for the none zero constant operand except for EQ and NE
1711         comprisons even when the first operand is R0.
1712
1713 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
1714
1715         * config/s390/2064.md: Remove trailing whitespaces.
1716         * config/s390/2084.md: Likewise.
1717         * config/s390/constraints.md: Likewise.
1718         * config/s390/fixdfdi.h: Likewise.
1719         * config/s390/libgcc-glibc.ver: Likewise.
1720         * config/s390/s390-modes.def: Likewise.
1721         * config/s390/s390-protos.h: Likewise.
1722         * config/s390/s390.c: Likewise.
1723         * config/s390/s390.h: Likewise.
1724         * config/s390/s390.md: Likewise.
1725         * config/s390/tpf-unwind.h: Likewise.
1726
1727 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1728
1729         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
1730
1731 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
1732
1733         M68K TLS support.
1734         * configure.ac (m68k-*-*): Check if binutils support TLS.
1735         * configure: Regenerate.
1736         * config/m68k/predicates.md (symbolic_operand): Extend comment.
1737         * config/m68k/constraints.md (Cu): New constraint.
1738         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
1739         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
1740         (movsi): Handle TLS symbols.
1741         (addsi3_5200): Handle XTLS symbols, indent.
1742         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
1743         (m68k_tls_reference_p): Declare.
1744         (m68k_legitimize_address): Declare.
1745         (m68k_unwrap_symbol): Declare.
1746         * config/m68k/m68k.opt (mxtls): New option.
1747         * config/m68k/m68k.c (ggc.h): Include.
1748         (m68k_output_dwarf_dtprel): Implement hook.
1749         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
1750         (m68k_expand_prologue): Load GOT pointer when function needs it.
1751         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
1752         (m68k_legitimate_constant_address_p): Same.
1753         (m68k_decompose_address): Handle TLS references.
1754         (m68k_get_gp): New static function.
1755         (enum m68k_reloc): New contants.
1756         (TLS_RELOC_P): New macro.
1757         (m68k_wrap_symbol): New static function.
1758         (m68k_unwrap_symbol): New function.
1759         (m68k_final_prescan_insn_1): New static function.
1760         (m68k_final_prescan_insn): New function.
1761         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
1762         functions.
1763         (legitimize_pic_address): Handle TLS references..
1764         (m68k_tls_get_addr, m68k_get_tls_get_addr)
1765         (m68k_libcall_value_in_a0_p)
1766         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
1767         (m68k_call_m68k_read_tp): Helper variables and functions for ...
1768         (m68k_legitimize_tls_address): Handle TLS references.
1769         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
1770         New functions.
1771         (m68k_legitimize_address): Handle TLS symbols.
1772         (m68k_get_reloc_decoration): New static function.
1773         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
1774         UNSPEC_RELOC32.
1775         (m68k_output_dwarf_dtprel): Implement hook.
1776         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
1777         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
1778         m68k_call_* routines.
1779         (sched_attr_op_type): Handle TLS symbols.
1780         (gt-m68k.h): Include.
1781         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
1782         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
1783
1784 2009-05-18  Martin Jambor  <mjambor@suse.cz>
1785
1786         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
1787         (visit_store_addr_for_mod_analysis): New function.
1788         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
1789         (determine_cst_member_ptr): Use gimple_assign_single_p.
1790         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
1791         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
1792         operands.  Don't check number of operands of a NOP_EXPR.
1793
1794 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
1795
1796         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
1797
1798 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1799
1800         PR c/40172
1801         * c-common.c (warn_logical_operator): Don't warn if one of
1802         expression isn't always true or false.
1803
1804 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
1805
1806         * config/i386/biarch32.h: New file.
1807         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
1808
1809 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
1810
1811         * config/mips/mips.md (*zero_extend<mode>_trunchi,
1812         *zero_extend<mode>_truncqi): Merge these into ...
1813         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
1814         Name the pattern following this as *zero_extendhi_truncqi.
1815
1816 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
1817
1818         PR middle-end/39301
1819         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
1820         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
1821         (output_info): Make field HOST_WIDEST_INT.
1822         (print_statistics): Use HOST_WIDEST_INT_PRINT.
1823         (dump_bitmat_statistics): Same.
1824
1825 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
1826
1827         * config.gcc (use_gcc_stdint):  Set to wrap.
1828         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
1829         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
1830         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1831         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
1832         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
1833         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
1834         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1835         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
1836
1837 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
1838
1839         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
1840         tune_64.
1841         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
1842         Move definitions earlier.
1843         (OPT_ARCH64, OPT_ARCH32): Define.
1844         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
1845         and tune_64.
1846
1847 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
1848
1849         PR target/40153
1850         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
1851         implies.
1852
1853 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
1854
1855         * arm.md (movdi2): Copy non-reg values to DImode registers.
1856
1857 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
1858
1859         PR target/39942
1860         * final.c (label_to_max_skip): New function.
1861         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
1862         CODE_LABEL_NUMBER <= max_labelno.
1863         * output.h (label_to_max_skip): New prototype.
1864         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
1865         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
1866         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
1867         Handle CODE_LABELs with >= 16 byte alignment or with
1868         max_skip == (1 << align) - 1.
1869         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
1870         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
1871
1872         PR target/39942
1873         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
1874         .p2align 3 if MAX_SKIP is smaller than 7.
1875         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1876
1877 2009-05-15  Ian Lance Taylor  <iant@google.com>
1878
1879         * alias.c (struct alias_set_entry_d): Rename from struct
1880         alias_set_entry.  Change all uses.
1881         * except.c (struct call_site_record_d): Rename from struct
1882         call_site_record.  Change all uses.
1883         * except.h (struct eh_region_d): Rename from struct eh_region.
1884         Change all uses.
1885         * gcse.c (struct hash_table_d): Rename from struct hash_table.
1886         Change all uses.
1887         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
1888         ivtype_map_elt.  Change all uses.
1889         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
1890         Change all uses.
1891         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
1892         * graphite.h (struct name_tree_d): Rename from struct name_tree.
1893         Change all uses.
1894         (struct sese_d): Rename from struct sese.  Change all uses.
1895         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
1896         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
1897         * optabs.h (struct optab_d): Rename from struct optab.  Change all
1898         uses.
1899         (struct convert_optab_d): Rename from struct convert_optab.
1900         Change all uses.
1901         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
1902         ipa_opt_pass.  Change all uses.
1903         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
1904         all uses.
1905
1906         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
1907         defined as a typedef.
1908         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
1909         defined as a tag.
1910
1911 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1912
1913         PR 16302
1914         * fold-const.c (make_range,build_range_check,merge_ranges): Move
1915         declaration to...
1916         (merge_ranges): Returns bool. 
1917         * tree.h (make_range): .. to here.
1918         (build_range_check): Likewise.
1919         (merge_ranges): Likewise. Renamed from merge_ranges.
1920         * c-typeck.c (parser_build_binary_op): Update calls to
1921         warn_logical_operator.
1922         * c-common.c (warn_logical_operator): Add new warning.
1923         * c-common.h (warn_logical_operator): Update declaration.
1924         
1925 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1926
1927         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
1928         
1929 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1930
1931         * doc/install.texi: Document MPC requirements, flags etc.
1932
1933         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
1934         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
1935         Evaluate constant arguments.
1936         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
1937         (fold_builtin_1): Likewise, also evaluate constant arguments.
1938         Remove superfluous break.
1939         (do_mpc_ckconv): New.
1940         * real.h: Include mpc.h.
1941         * toplev.c (print_version): Output MPC version info if available.
1942
1943 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1944
1945         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
1946
1947 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
1948
1949         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
1950         only once.
1951
1952 2009-05-15  Jan Hubicka  <jh@suse.cz>
1953
1954         * doc/invoke.texi (max-early-inliner-iterations): New flag.
1955         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
1956         (try_inline): Fix return value.
1957         (cgraph_decide_inlining_incrementally): Honor new value.
1958         (cgraph_early_inlining): Handle indirect inlining.
1959         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
1960
1961 2009-05-15  Jan Hubicka  <jh@suse.cz>
1962
1963         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
1964         * cgraphunit.c (cgraph_finalize_function): Set it.
1965         (cgraph_expand_function): Use it.
1966
1967 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1968
1969         * real.c (encode_ieee_half): Define.
1970         (decode_ieee_half): Define.
1971         (ieee_half_format): Define.
1972         (arm_half_format): Define.
1973         * real.h (ieee_half_format): Declare.
1974         (arm_half_format): Declare.
1975
1976 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
1977
1978         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
1979         swapped, and reversed optabs exist before trying to use them.
1980
1981 2009-05-15  Paul Brook  <paul@codesourcery.com>
1982             Sandra Loosemore  <sandra@codesourcery.com>
1983
1984         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
1985         loads.  Allow PRE_DEC.
1986         (output_move_neon): Handle PRE_DEC.
1987         (arm_print_operand): Add 'A' for neon structure loads.
1988         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
1989         * config/arm/neon.md (neon_mov): Update comment.
1990         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
1991         calls.
1992         (Um): New constraint.
1993
1994 2009-05-15  Jan Hubicka  <jh@suse.cz>
1995
1996         Revert the following patch until testsuite fallout is fixed:
1997         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1998         * cgraph.h (struct inline_summary): New filed self_wize,
1999         size_inlining_benefit, self_time and time_inlining_benefit.
2000         (struct cgraph_global_info): Replace insns by time ans size fields.
2001         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2002         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2003         (ipcp_update_callgraph): Do not touch function bodies.
2004         * ipa-inline.c: Include except.h
2005         (MAX_TIME): New constant.
2006         (overall_insns): Remove
2007         (overall_size, max_benefit): New static variables.
2008         (cgraph_estimate_time_after_inlining): New function.
2009         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2010         (cgraph_clone_inlined_nodes): Update size.
2011         (cgraph_mark_inline_edge): Update size.
2012         (cgraph_estimate_growth): Use size info.
2013         (cgraph_check_inline_limits): Check size.
2014         (cgraph_default_inline_p): Likewise.
2015         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2016         (cgraph_decide_recursive_inlining): Check size.
2017         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2018         times.
2019         (cgraph_decide_inlining): Likewise.
2020         (cgraph_decide_inlining_incrementally): Likewise; honor
2021         PARAM_EARLY_INLINING_INSNS.
2022         (likely_eliminated_by_inlining_p): New predicate.
2023         (estimate_function_body_sizes): New function.
2024         (compute_inline_parameters): Use it.
2025         * except.c (must_not_throw_labels): New function.
2026         * except.h (must_not_throw_labels): Declare.
2027         * tree-inline.c (init_inline_once): Kill inlining_weigths
2028         * tree-ssa-structalias.c: Avoid uninitialized warning.
2029         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2030         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2031         (PARAM_INLINE_CALL_COST): Remove.
2032         (PARAM_EARLY_INLINING_INSNS): New.
2033
2034 2009-05-15  Richard Guenther  <rguenther@suse.de>
2035
2036         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2037         not TODO_update_ssa.
2038
2039 2009-05-15  Richard Guenther  <rguenther@suse.de>
2040
2041         PR tree-optimization/39999
2042         * gimple.h (gimple_expr_type): Use the expression type looking
2043         through useless conversions.
2044         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2045         (vn_nary_op_insert_stmt): Likewise.
2046         (simplify_binary_expression): Likewise.
2047
2048 2009-05-15  Richard Guenther  <rguenther@suse.de>
2049
2050         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2051         New options, enabled by default.
2052         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2053         Document.
2054         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2055         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2056         * tree-ssa-structalias.c (gate_tree_pta): New function.
2057         (pass_build_alias): Use it.
2058
2059 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2060
2061         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2062         recurse on an invariant address if a conversion from a pointer
2063         type to a wider integer type is involved.
2064
2065 2009-05-15  Jan Hubicka  <jh@suse.cz>
2066
2067         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2068         * cgraph.h (struct inline_summary): New filed self_wize,
2069         size_inlining_benefit, self_time and time_inlining_benefit.
2070         (struct cgraph_global_info): Replace insns by time ans size fields.
2071         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2072         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2073         (ipcp_update_callgraph): Do not touch function bodies.
2074         * ipa-inline.c: Include except.h
2075         (MAX_TIME): New constant.
2076         (overall_insns): Remove
2077         (overall_size, max_benefit): New static variables.
2078         (cgraph_estimate_time_after_inlining): New function.
2079         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2080         (cgraph_clone_inlined_nodes): Update size.
2081         (cgraph_mark_inline_edge): Update size.
2082         (cgraph_estimate_growth): Use size info.
2083         (cgraph_check_inline_limits): Check size.
2084         (cgraph_default_inline_p): Likewise.
2085         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2086         (cgraph_decide_recursive_inlining): Check size.
2087         (cgraph_decide_inlining_of_small_function): Update size; dump sizes and
2088         times.
2089         (cgraph_decide_inlining): Likewise.
2090         (cgraph_decide_inlining_incrementally): Likewise; honor
2091         PARAM_EARLY_INLINING_INSNS.
2092         (likely_eliminated_by_inlining_p): New predicate.
2093         (estimate_function_body_sizes): New function.
2094         (compute_inline_parameters): Use it.
2095         * except.c (must_not_throw_labels): New function.
2096         * except.h (must_not_throw_labels): Declare.
2097         * tree-inline.c (init_inline_once): Kill inlining_weigths
2098         * tree-ssa-structalias.c: Avoid uninitialized warning.
2099         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2100         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2101         (PARAM_INLINE_CALL_COST): Remove.
2102         (PARAM_EARLY_INLINING_INSNS): New.
2103         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2104         (inline-call-cost): Remove.
2105         (early-inlining-insns): New.
2106
2107 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2108
2109         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2110         for bounds.
2111         (print_int_cst_bounds_in_octal_p): Likewise.
2112         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
2113         with subtypes.
2114         * dwarf2out.c (base_type_die): Likewise.
2115         (is_subrange_type): Delete.
2116         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
2117         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
2118         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
2119         the destination type is boolean.
2120         (build_range_check): Do not special-case subtypes.
2121         (fold_sign_changed_comparison): Likewise.
2122         (fold_unary): Likewise.
2123         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
2124         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
2125         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
2126         * tree.c (subrange_type_for_debug_p): New predicate based on the former
2127         is_subrange_type.
2128         * tree.h (subrange_type_for_debug_p): Declare.
2129         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
2130         (convert_affine_scev): Remove call to above function.
2131         (chrec_convert_aggressive): Likewise.
2132         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
2133         false for conversions involving subtypes.
2134         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
2135         (vrp_val_min): Likewise.
2136         (needs_overflow_infinity): Likewise.
2137         (extract_range_from_unary_expr): Likewise.
2138
2139 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
2140
2141         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2142         * config/frv/frv.c: Likewise.
2143         * config/s390/s390.c: Likewise.
2144         * config/sparc/sparc.h: Likewise.
2145         * config/i386/i386.h: Likewise.
2146         * config/i386/i386.c: Likewise.
2147         * config/crx/crx.c: Likewise.
2148         * config/m68hc11/m68hc11.h: Likewise.
2149         * config/iq2000/iq2000.c: Likewise.
2150         * config/mn10300/mn10300.h: Likewise.
2151         * config/mn10300/mn10300.c: Likewise.
2152         * config/m68k/m68k.c: Likewise.
2153         * config/rs6000/rs6000.c: Likewise.
2154         * config/rs6000/xcoff.h: Likewise.
2155         * config/rs6000/linux64.h: Likewise.
2156         * config/rs6000/sysv4.h: Likewise.
2157         * config/score/score3.c: Likewise.
2158         * config/score/score7.c: Likewise.
2159         * config/score/score.c: Likewise.
2160         * config/arm/arm.md: Likewise.
2161         * config/mips/mips.c: Likewise.
2162         * config/mips/mips.md: Likewise.
2163         * config/bfin/bfin.h: Likewise.
2164         * config/pa/pa.c: Likewise.
2165         * config/pa/constraints.md: Likewise.
2166
2167         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
2168         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
2169         * config/pdp11/pdp11.h: Use memory_address_p instead.
2170
2171 2009-05-14  Ian Lance Taylor  <iant@google.com>
2172
2173         * passes.c (finish_optimization_passes): Change i to int.
2174         * plugin.c (plugins_active_p): Change event to int.
2175         (dump_active_plugins): Likewise.
2176         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
2177         Add cast.
2178         * tree.c (tree_range_check_failed): Change c to unsigned int.
2179         (omp_clause_range_check_failed): Likewise.
2180         (build_common_builtin_nodes): Change mode to int.  Add cast.
2181         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
2182         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
2183
2184         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
2185         ++ or -- with a variable of enum type.
2186
2187 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2188
2189         PR driver/40144
2190         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
2191
2192 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2193
2194         * store-motion.c: Do not include params.h
2195         * Makefile.in: Fix dependencies for various files.
2196
2197 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
2198
2199         * auto-inc-dec.c: Fix pass description, remove apparent
2200         accidental duplication.
2201
2202 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
2203
2204         PR middle-end/40147
2205         * ipa-utils.h (memory_identifier_string): Moved to ...
2206         * tree.h (memory_identifier_string): Here.  Add GTY(()).
2207
2208 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2209
2210         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
2211         in the former documentation of...
2212         (GO_IF_LEGITIMATE_ADDRESS): ... this.
2213         * ira-conflicts.c (get_dup_num): Use address_operand.
2214         * targhooks.c (default_legitimate_address_p): New.
2215         * targhooks.h (default_legitimate_address_p): New.
2216         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
2217         Call hook.
2218         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
2219         * target.h (struct target): Add legitimate_address_p.
2220         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
2221         (TARGET_INITIALIZER): Include it.
2222
2223         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2224         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
2225         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
2226         (TARGET_LEGITIMATE_ADDRESS_P): New.
2227
2228         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2229         (REG_OK_STRICT_P): Delete.
2230         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
2231         (frv_legitimate_address_p_1): ... this.
2232         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
2233         (frv_legitimate_address_p_1): ... the renamed old
2234         frv_legitimate_address_p.
2235         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
2236         (TARGET_LEGITIMATE_ADDRESS_P): New.
2237
2238         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2239         * config/s390/s390-protos.h (legitimate_address_p): Remove.
2240         * config/s390/s390.c (legitimate_address_p): Rename to...
2241         (s390_legitimate_address_p): ... this, make static.
2242         (legitimize_address): Adjust call.
2243         (TARGET_LEGITIMATE_ADDRESS_P): New.
2244         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
2245
2246         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2247         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
2248         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
2249         (TARGET_LEGITIMATE_ADDRESS_P): New.
2250
2251         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2252         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
2253         * config/spu/spu.c (spu_legitimate_address): Rename to...
2254         (spu_legitimate_address_p): ... this, make static.
2255         (TARGET_LEGITIMATE_ADDRESS_P): New.
2256
2257         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2258         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
2259         * config/sparc/sparc.c (legitimate_address_p): Rename to...
2260         (sparc_legitimate_address_p): ... this, make static and return bool.
2261         (legitimize_address): Adjust call.
2262         (TARGET_LEGITIMATE_ADDRESS_P): New.
2263
2264         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2265         * config/i386/i386-protos.h (legitimate_address_p): Remove.
2266         * config/i386/i386.c (legitimate_address_p): Rename to...
2267         (ix86_legitimate_address_p): ... this, make static.
2268         (constant_address_p): Move after it, adjust call.
2269         (TARGET_LEGITIMATE_ADDRESS_P): New.
2270
2271         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2272         * config/avr/avr-protos.h (legitimate_address_p): Remove.
2273         * config/avr/avr.c (legitimate_address_p): Rename to...
2274         (avr_legitimate_address_p): ... this, make static.
2275         (legitimize_address): Adjust call.
2276         (TARGET_LEGITIMATE_ADDRESS_P): New.
2277
2278         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2279         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
2280         * config/crx/crx.c (crx_legitimate_address_p): Make static.
2281         (TARGET_LEGITIMATE_ADDRESS_P): New.
2282
2283         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2284         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
2285         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
2286         (TARGET_LEGITIMATE_ADDRESS_P): New.
2287
2288         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2289         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
2290         Remove.
2291         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
2292         Make static.
2293         (TARGET_LEGITIMATE_ADDRESS_P): New.
2294
2295         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2296         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
2297         Remove.
2298         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
2299         Rename to...
2300         (m68hc11_legitimate_address_p): ... this, make static.
2301         (go_if_legitimate_address_internal): Rename to...
2302         (m68hc11_legitimate_address_p_1): ... this.
2303         (legitimize_address): Adjust call.
2304         (TARGET_LEGITIMATE_ADDRESS_P): New.
2305
2306         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2307         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
2308         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
2309         (TARGET_LEGITIMATE_ADDRESS_P): New.
2310
2311         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2312         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
2313         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
2314         (mn10300_legitimate_address_p): ... this, make static.
2315         (TARGET_LEGITIMATE_ADDRESS_P): New.
2316
2317         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2318         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
2319         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
2320         (TARGET_LEGITIMATE_ADDRESS_P): New.
2321
2322         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2323         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
2324         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
2325         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2326         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
2327         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
2328         (rs6000_legitimate_address_p): ... this, make static.
2329         (TARGET_LEGITIMATE_ADDRESS_P): New.
2330         (REG_MODE_OK_FOR_BASE_P): Delete.
2331         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
2332
2333         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2334         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
2335         Delete.
2336         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
2337         static, adjust types.
2338         (TARGET_LEGITIMATE_ADDRESS_P): New.
2339
2340         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2341         * config/score/score.c (score_address_p): Rename to...
2342         (score_legitimate_address_p): ... this.
2343         (TARGET_LEGITIMATE_ADDRESS_P): New.
2344         * config/score/score3.c (score3_address_p): Rename to...
2345         (score3_legitimate_address_p): ... this.
2346         * config/score/score7.c (score7_address_p): Rename to...
2347         (score7_legitimate_address_p): ... this.
2348
2349         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
2350         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
2351         GO_IF_LEGITIMATE_ADDRESS): Delete.
2352         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
2353         thumb2_legitimate_address_p): Delete.
2354         (arm_legitimate_address_p): Rename to...
2355         (arm_legitimate_address_outer_p): ... this.
2356         * config/arm/constraints.md ("Uq"): Adjust call.
2357         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
2358         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one to...
2359         (arm_legitimate_address_outer_p): ... this.
2360         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make static.
2361         (TARGET_LEGITIMATE_ADDRESS_P): New.
2362
2363         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2364         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
2365         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
2366         (TARGET_LEGITIMATE_ADDRESS_P): New.
2367
2368         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2369         * config/vax/vax-protos.h (legitimate_address_p): Remove.
2370         * config/vax/vax.c (legitimate_address_p): Rename to...
2371         (vax_legitimate_address_p): ... this, make static.
2372         (TARGET_LEGITIMATE_ADDRESS_P): New.
2373
2374         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2375         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
2376         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
2377         (TARGET_LEGITIMATE_ADDRESS_P): New.
2378
2379         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2380         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
2381         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
2382         (mmix_legitimate_address_p): ... this, make static.
2383         (TARGET_LEGITIMATE_ADDRESS_P): New.
2384
2385         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2386         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
2387         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
2388         (TARGET_LEGITIMATE_ADDRESS_P): New.
2389
2390 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
2391
2392         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
2393         of MODE_COMPLEX_INT.
2394
2395 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2396
2397         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
2398         LCT_NORMAL in function call.
2399         * mips-tdump.c (print_file_desc): Add cast to enum type.
2400         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
2401         (mark_stabs): Add casts to enum types.
2402         (parse_stabs_common): Add casts to enum types.
2403
2404 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2405
2406         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
2407         Check for invalid values of LETTER.
2408
2409 2009-05-13  Taras Glek  <tglek@mozilla.com>
2410
2411         * attribs.c (register_attribute): moved out attribute registration into
2412         register_attribute.
2413         * doc/plugins.texi: Documented register_attribute and PLUGIN_ATTRIBUTES.
2414         * gcc-plugin.h: Added forward decl for register_attribute.
2415         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
2416         * plugin.c (register_callback, invoke_plugin_callbacks): Added
2417         PLUGIN_ATTRIBUTES boilerplate.
2418
2419 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
2420
2421         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
2422         values even in sentinel and empty entries.
2423         (ms_printf_flag_specs):  Likewise.
2424         (ms_scanf_flag_specs):  Likewise.
2425         (ms_strftime_flag_specs):  Likewise.
2426         (ms_print_char_table):  Likewise.
2427         (ms_scan_char_table):  Likewise.
2428         (ms_time_char_table):  Likewise.
2429
2430 2009-05-13  Doug Kwan  <dougkwan@google.com>
2431
2432         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2433
2434 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
2435
2436         * config/mips/mips.md (store): Add attributes for QI and HI.
2437         Update comment.
2438         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
2439         (truncdi<mode>2): ... this new pattern.
2440
2441 2009-05-13  Brad Hards  <bradh@kde.org>
2442
2443         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
2444
2445 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
2446             Ben Elliston <bje@au.ibm.com>
2447
2448         PR middle-end/40035
2449         * dse.c (check_mem_read_rtx): Guard against width == -1.
2450
2451 2009-05-13  Michael Matz  <matz@suse.de>
2452
2453         PR middle-end/39976
2454         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
2455         (trivially_conflicts_p): New function.
2456         (insert_backedge_copies): Use it.
2457
2458 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
2459
2460         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
2461         (handle_stdc_pragma): Use new enum constant names.
2462         (handle_pragma_float_const_decimal64): Ditto.
2463
2464 2009-05-13  Ian Lance Taylor  <iant@google.com>
2465
2466         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
2467         tree.def.
2468
2469 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
2470
2471         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
2472         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
2473         multilibs.
2474         * config/m68k/m68k.h (FL_UCLINUX): Define.
2475
2476 2009-05-13  Jan Hubicka  <jh@suse.cz>
2477
2478         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
2479
2480 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2481
2482         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
2483         unless -fschedule-insns is specified.
2484
2485 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2486
2487         PR target/39561
2488         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
2489         TARGET_EXPAND_CBRANCHDI4.
2490         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
2491         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
2492         (cmpeqdi): Fix comment.
2493
2494 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
2495
2496         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
2497         (sh_legitimate_address_p): Likewise.
2498         * config/sh/sh.c (sh_legitimate_index_p): New.
2499         (sh_legitimate_address_p): Likewise.
2500         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
2501         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
2502         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
2503         (MAYBE_BASE_REGISTER_RTX_P): New macro.
2504         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
2505         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
2506         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
2507         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
2508         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
2509
2510 2009-05-12  Jan Hubicka  <jh@suse.cz>
2511
2512         * tree-inline.c (estimate_operator_cost): Add operands;
2513         when division happens by constant, it is cheap.
2514         (estimate_num_insns): Loads and stores are not having cost of 0;
2515         EH magic stuff is cheap; when computing runtime cost of switch,
2516         use log2 base of amount of its cases; builtin_expect has cost of 0;
2517         compute cost for moving return value of call.
2518         (init_inline_once): Initialize time_based flags.
2519         * tree-inline.h (eni_weights_d): Add time_based flag.
2520
2521 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2522
2523         * df-core.c: Update head documentation.
2524
2525 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
2526
2527         PR bootstrap/40118
2528         * rs6000.c (rs6000_generate_compare): Use op1b instead of
2529         shadowing exisiting variable op1.
2530
2531 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
2532
2533         PR target/37179
2534         * config/i386/driver-i386.c (processor_signatures): New enum.
2535         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
2536         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
2537         processor signature to detect geode processor.
2538
2539 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2540
2541         Revert:
2542
2543         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2544
2545         * optabs.c (prepare_cmp_insn): Temporarily disable test that
2546         causes spurious differences between trunk and cond-optab branch.
2547
2548 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
2549
2550         * dojump.c (compare_from_rtx): Delete.
2551         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
2552         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
2553         if the comparison does not satisfy the predicate; test predicates for
2554         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
2555         further if one existing pattern fails.
2556         * expr.h (compare_from_rtx): Delete.
2557         (prepare_operand): Declare it.
2558         * optabs.c: Change "lib call" to "libcall" throughout.
2559         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
2560         HAVE_conditional_trap, emit_cmp_insn): Delete.
2561         (can_compare_p): Delete cmp_optab case.
2562         (prepare_float_lib_cmp): Return an rtx and a machine mode.
2563         Accept other parameters by value.
2564         (prepare_operand): Make non-static.
2565         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
2566         other parameters by value.  Try to widen operands here based on
2567         an optab_methods argument and looking at cbranch_optab.
2568         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
2569         loop.  Use cbranch_optab directly.
2570         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
2571         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
2572         assertion.
2573         (emit_conditional_move, emit_conditional_add): Inline what's needed
2574         of compare_from_rtx, using new prepare_cmp_insn for the rest.
2575         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
2576         with COMPARE.  Move cmov_optab and cstore_optab above
2577         with cbranch_optab, move cmp_optab down with ucmp_optab,
2578         remove tst_otpab.  Do not initialize trap_rtx.
2579         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
2580         for trap code.  Do not check HAVE_conditional_trap.  Use
2581         prepare_cmp_insn.  Accept no predicate for operand 3.
2582         * optabs.h (OTI_cmp): Mark as used only for libcalls.
2583         (OTI_ctrap, ctrap_optab): New.
2584         (tst_optab): Delete.
2585         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
2586         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
2587         with lookup of ctrap_optab.
2588         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn,
2589         setcc_gen_code): Delete.
2590         (ctrap_optab): New.
2591
2592         * combine.c (combine_simplify_rtx, simplify_set): Do not
2593         special case comparing against zero for cc0 machines.
2594         * simplify-rtx.c (simplify_binary_operation_1): Never remove
2595         COMPARE on cc0 machines.
2596         (simplify_relational_operation): Return a new expression when
2597         a COMPARE could be removed.
2598         * final.c (final_scan_insn): Compare cc_status values
2599         against LHS of a (compare FOO (const_int 0)) cc0 source.
2600         Also check if cc_status.value is the full compare.
2601
2602         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
2603         (cstoreMM4): Document.
2604         (conditional_trap): Document ctrapMM4 instead.
2605         (sync_compare_and_swapMM): Refer to cbranchcc4.
2606         (Dependent Patterns): Eliminate obsolete information referring to
2607         the old jump optimization phase.
2608         (Canonicalization): Include cbranchcc4 case, omit canonicalization
2609         of compares with 0 on cc0 machines.
2610         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
2611         avoiding references to cc0.  Remove text about storing operands
2612         in cmpMM.
2613         * doc/tm.texi (Condition Codes): Include blurb on different
2614         condition code representations, separate into subsections for
2615         CC0, MODE_CC and conditional execution.
2616
2617         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
2618         alpha_emit_setcc): Accept operands and a machine mode.
2619         * config/alpha/alpha.c (alpha_emit_conditional_branch):
2620         Get code/op0/op1 from operands, use machine mode argument
2621         instead of alpha_compare.fp_p.  Emit the branch here.
2622         (alpha_emit_setcc): Likewise, and return boolean.
2623         (alpha_emit_conditional_move): Likewise.  Assert that
2624         cmp_op_mode == cmp_mode, and simplify accordingly.
2625         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
2626         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
2627         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
2628         Delete.
2629         (stack probe test): Use cbranchdi4.
2630         * config/alpha/predicates.md (alpha_cbranch_operator): New.
2631
2632         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
2633         * config/arc/arc.h (movsicc, movsfcc): Use it.
2634         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
2635         (cbranchsi4, cstoresi4): New.
2636         (cmpsi, bCC and sCC expanders): Remove. 
2637
2638         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
2639         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
2640         * config/arm/predicates.md (arm_comparison_operator): Only include
2641         floating-point operators if there is a hardware floating-point unit.
2642         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
2643         deferring to cbranch_cc and cstore_cc respectively.
2644         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
2645         cbranch_cc, cstore_cc): New.
2646         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
2647         arm_compare_op1.
2648         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
2649
2650         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
2651         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
2652         as an argument.
2653         (adjust_insn_length): Adjust calls.
2654         (avr_reorg): Handle (compare (foo) (const_int 0)).
2655         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
2656         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
2657         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
2658         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
2659         (bCC): Remove.
2660         (cbranchqi4, cbranchhi4, cbranchsi4): New.
2661         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
2662
2663         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
2664         (cbranchsi4, cstorebi4, cstoresi4): New.
2665         (movbisi): This insn is duplicate, split it to zero_extend.
2666         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
2667         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
2668         (bfin_optimize_loop): Use cbranch expander.
2669         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
2670         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
2671         (bfin_bimode_comparison_operator): ... this.
2672         (bfin_direct_comparison_operator): New.
2673  
2674         * config/cris/cris.c (cris_normal_notice_update_cc): Look
2675         inside (compare FOO (const_int 0)).
2676         (cris_rtx_costs): Handle ZERO_EXTRACT.
2677         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
2678         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
2679         (*tstdi_v32): Delete.
2680         (*cmpdi_non_v32): Add M alternative for operand 1.
2681         (cmpsi, cmp<mode>): Make private.
2682         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
2683         with COMPARE.
2684         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
2685
2686         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
2687         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
2688         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
2689         (cc_reg_operand): New.
2690         (any_cond): Delete.
2691         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
2692         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
2693         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
2694         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
2695         crx_expand_scond): Delete.
2696
2697         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
2698         (cbranchsi4): New.
2699         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
2700         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
2701
2702         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
2703         cstoresi4, cstoresf4, cstoredf4): New.
2704         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
2705         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2706         Receive the entire operands array.
2707         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
2708         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
2709         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
2710         Get test/op0/op1 from the operands array.
2711         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
2712
2713         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
2714         (h8300_expand_store): New.
2715         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
2716         (const_int 0)).
2717         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
2718         (h8300_expand_store): New.
2719         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
2720         or do not try to produce (set (cc0) REG).
2721         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
2722         change a compare into a move to a scratch register.  Disable some
2723         peepholes when comparing with zero.
2724         (tstsi, tsthi, tstsi, cmpqi): Make private.
2725         (cmphi): Delete.
2726         (bCC, sCC): Delete.
2727         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
2728         cstoresi4): New.
2729
2730         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
2731         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
2732         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
2733         (ix86_emit_i387_log1p): Use cbranchxf2.
2734         (ix86_expand_setcc): Return void.
2735         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
2736         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
2737         cmp<MODEF>, cmpcc): Remove.
2738         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
2739         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
2740         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
2741         (sCC and bCC expanders): Remove.
2742         (stack_protect_test): Use cbranchcc4.
2743
2744         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
2745         Delete.
2746         (ia64_expand_compare): Accept three rtx by reference and return void.
2747         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
2748         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
2749         from *expr.  Update *expr with the BImode comparison to do.
2750         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
2751         cmptf, bCC, sCC, conditional_trap): Delete.
2752         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
2753         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
2754         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
2755         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
2756         * config/ia64/predicates.md (ia64_cbranch_operator): New.
2757
2758         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
2759         type of last argument.
2760         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
2761         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
2762         use machine mode argument instead of branch_type.  Remove dead
2763         code for floating-point comparisons.
2764         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
2765         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
2766         Remove.
2767         (cbranchsi4, cstoresi4): New.
2768         * config/iq2000/predicates.md (reg_or_const_operand): New.
2769
2770         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
2771         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
2772         (b<code>_op): Rewrite to...
2773         (bcc_op): ... this, using match_operator.
2774         (s<code>_op): Rewrite to...
2775         (scc_op): ... this, using match_operator.
2776         (s<code>_24_op): Rewrite to...
2777         (scc_op_24): ... this, using match_operator.
2778         (s<code>_<mode>): Rewrite to...
2779         (cstore<mode>4): ... this, using match_operator.
2780         (s<code>_<mode>_24): Rewrite to...
2781         (cstore<mode>4_24): ... this, using match_operator.
2782         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
2783         m32c_unpend_compare, m32c_expand_scc): Delete.
2784         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
2785         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
2786         (m32c_expand_movcc): Change NE to EQ if necessary.
2787         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
2788
2789         * config/m32r/m32r-protos.h (gen_cond_store): New.
2790         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
2791         (gen_cond_store): New, from sCC patterns.
2792         (m32r_expand_block_move): Use cbranchsi4.
2793         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
2794         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
2795         (cbranchsi4, cstoresi4): New.
2796         
2797         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
2798         Delete.
2799         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
2800         (m68hc11_notice_update_cc): Look into a compare with 0.
2801         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
2802         Delete.
2803         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
2804         cmphi, cmpqi, bCC): Delete.
2805         (cbranchsi4, cbranchhi4, cbranchqi4): New.
2806         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
2807         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
2808         sets with COMPARE.
2809
2810         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
2811         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
2812         * config/m68k/constraints.md (H): New.
2813         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
2814         the define_insn below.
2815         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
2816         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
2817         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
2818         patterns): Wrap RHS with COMPARE.
2819         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
2820         (*cmpdi_internal): Name this pattern.
2821         (cmpdi): Change to define_insn.
2822         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
2823         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
2824         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
2825         predicate.
2826         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
2827         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
2828         (conditional_trap): Change to...
2829         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
2830         (*conditional_trap): Use the ordered_comparison_operator and
2831         const1_operand predicates.
2832         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
2833         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
2834         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
2835         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
2836
2837         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
2838         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
2839         (mcore_gen_compare): New. 
2840         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
2841         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
2842         (mcore_gen_compare): ... this.
2843         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
2844         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
2845         (stack probe pattern): Use cbranchsi4.
2846
2847         * config/mips/predicates.md (mips_cstore_operator): New.
2848         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
2849         * config/mips/mips.md (any_cond): Delete.
2850         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
2851         always succeed.
2852         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
2853         fixuns_truncsfdi2): Use cbranch patterns.
2854         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
2855         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
2856         Adjust call to mips_expand_conditional_branch.
2857         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
2858         cstore<GPR:mode>4.
2859         * config/mips/mips-protos.h (mips_expand_conditional_branch,
2860         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
2861         * config/mips/mips.c (cmp_operands): Delete.
2862         (mips_emit_compare): Get comparison operands from *op0/*op1.
2863         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
2864         that it succeeds.  Use op0/op1 instead of cmp_operands.
2865         (mips_expand_conditional_branch, mips_expand_conditional_move,
2866         mips_expand_conditional_trap): Likewise.
2867         (mips_block_move_loop): Use cbranch patterns. 
2868         * config/mips/mips.h (cmp_operands): Delete.
2869
2870         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
2871         (mmix_gen_compare_reg): Just return a register in the right CC mode.
2872         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
2873         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
2874         (*cmpcc_folded): Rename to...
2875         (*cmpdi_folded): this.
2876         (*cmpcc): Rename to...
2877         (*cmps): ... this.
2878         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
2879         (bCC): Remove.
2880         (cbranchdi4): New.
2881         (cbranchdf4): New.  Handle invalid comparisons here.
2882         * config/mmix/predicates.md (float_comparison_operator): New.
2883
2884         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
2885         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
2886         * config/mn10300/mn10300.md (tst): Delete.
2887         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
2888         Name these patterns and wrap RHS in a compare.
2889         (*cmpsi): Make this pattern private.  Include tst.
2890         (*cmpsf): Make this pattern private.
2891         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
2892         (compare with zero peepholes): Likewise.
2893         (bCC): Remove.
2894         (cbranchsi4, cbranchsf4): New.
2895         (casesi): Use cbranchsi4.
2896
2897         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
2898         hppa_branch_type): Delete.
2899         (return_addr_rtx): Use cbranchsi4.
2900         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
2901         Emit CCFPmode comparison here.
2902         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
2903         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
2904         hppa_branch_type): Delete.
2905         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
2906         (movsicc, movdicc): Remove references to hppa_compare_op0,
2907         hppa_compare_op1 and compare_from_rtx.
2908         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
2909         (casesi): Use cbranchsi4.
2910
2911         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
2912         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
2913         * config/pdp11/pdp11.md (register_or_const0_operand): New.
2914         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
2915         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
2916         (bCC): Delete.
2917         (cbranchdf4, cbranchhi4, cbranchqi4): New.
2918         (*branch, *branch_inverted): New.
2919
2920         * config/picochip/picochip.md (cbranchhi4): Use
2921         ordered_comparison_operator.
2922         (cmphi, bCC): Remove.
2923
2924         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
2925         (trap_comparison_operator): Delete.
2926         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
2927         rs6000_emit_cbranch): Accept mode and operands.
2928         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
2929         rs6000_compare_fp_p): Delete.   
2930         (rs6000_generate_compare): Accept mode and comparison.  Extract code
2931         and op0/op1 from there.  Replace references to rs6000_compare_op0
2932         and rs6000_compare_op1.
2933         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
2934         extract result from passed operands.
2935         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
2936         extract loc from passed operands.
2937         (rs6000_emit_cmove): Likewise.
2938         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
2939         rs6000_compare_fp_p): Delete.
2940         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
2941         (cbranch<GPR>4, cbranch<FP>4): New.
2942         (cstore<mode>4): New.  Consolidate here all choices about when to use
2943         portable or specialized sCC sequences.
2944         (stack_protect_test): Use cbranchsi4.
2945         (conditional_trap): Replace with ctrap<GPR>4.
2946         (conditional trap insn): Replace trap_comparison_operator with
2947         ordered_comparison_operator. 
2948
2949         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
2950         (s390_emit_prologue): Use ctrap.
2951         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
2952         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
2953         New predicates replacing...
2954         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
2955         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
2956         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
2957         (add<mode>cc): Do not use s390_compare_op0/op1.
2958         (s<code>): Change to...
2959         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
2960         (seq): Change to...
2961         (cstorecc4): ... this.  Handle EQ or NE equally.
2962         (*sne): Un-privatize for use in cstorecc4.
2963         (b<code>): Change to...
2964         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
2965         (conditional_trap): Replace with...
2966         (ctrap<GPR>4, ctrap<FP>4): ... these.
2967         (stack_protect): Use cbranchcc4.
2968
2969         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
2970         * config/score/score-protos.h (score_gen_cmp): Delete.
2971         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
2972         (score_block_move-loop): Use cbranchsi4.
2973         * config/score/score.md (cbranchsi4): New.
2974         (cmpsi, bCC): Delete.
2975         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
2976         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2977         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
2978         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
2979         * config/score/score3.h (score3_gen_cmp): Delete.
2980         * config/score/score7.h (score7_gen_cmp): Delete.
2981
2982         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
2983         (sh_emit_scc_to_t): ... this.  Return void.
2984         (from_compare): Rename to...
2985         (sh_emit_compare_and_branch): ... this.
2986         (sh_emit_compare_and_set): New.
2987         (sh_expand_t_scc): Accept operands.
2988         * config/sh/predicates.md (sh_float_comparison_operator): New.
2989         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
2990         (prepare_scc_operands): Rename to...
2991         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
2992         arguments.
2993         (sh_emit_cheap_store_flag): New.
2994         (sh_emit_set_t_insn): New.
2995         (from_compare): Rename to...
2996         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
2997         handling of TARGET_SH2E floating point to avoid recursive call.
2998         Generate branch here.
2999         (sh_emit_compare_and_set): New.
3000         (sh_expand_t_scc): Get op0/op1 from arguments.
3001         (sh_emit_cheap_store_flag): New.
3002         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
3003         cases.
3004         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
3005         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
3006         (movsicc, movdicc): Do nothing when it recreated operands from
3007         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
3008         prepare_scc_operands (now sh_emit_scc_to_t).
3009         (udivdi3): Use cstoresi4.
3010         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
3011         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
3012         (cbranchint4_media, cbranchfp4_media): New.
3013         (casesi): Use cbranchdi4.
3014         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
3015         Delete.
3016         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
3017         (movnegt): Remove second operand.
3018         (cbranchsf4, cbranchdf4): New.
3019         (stack_protect): Use cbranchdi4/cbranchsi4.
3020
3021         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
3022         (gen_compare_reg): Accept comparison, extract part of it to...
3023         (gen_compare_reg_1): ... this. 
3024         (gen_compare_operator): Delete.
3025         (gen_v9_scc): Accept separate destination, comparison code and arms.
3026         Do not use sparc_compare_op0/sparc_compare_op1.
3027         (emit_scc_insn, emit_conditional_branch_insn): New.
3028         (emit_v9_brxx): Make static.  Remove useless assertion.
3029         (sparc_emit_float_lib_cmp): Return RTL instead of calling
3030         emit_cmp_insn.
3031         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
3032         * config/sparc/sparc-protos.h (gen_compare_reg,
3033         sparc_emit_float_lib_cmp): Adjust prototype.
3034         (emit_scc_insn, emit_conditional_branch_insn): New.
3035         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
3036         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
3037         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
3038         iterators to the top.
3039         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
3040         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
3041         snedi_special_trunc): Delete.
3042         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
3043         and snedi_special_trunc.
3044         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
3045         cbranchdi4, cbranch<F:mode>4): New.
3046         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
3047         here.  Use gen_compare_reg instead of gen_compare_operator.
3048         (conditional_trap): Replace with...
3049         (ctrapsi4, ctrapdi4): ... this.
3050         (stack_protect_test): Use cbranchcc4.
3051
3052         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
3053         argument to rtx.
3054         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
3055         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
3056         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
3057         from operands[0] or operands[3] depending on is_set.
3058         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
3059         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
3060         cmpdf, bCC), sCC: Remove.
3061         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
3062         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
3063         cstoredf4): New.
3064         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
3065         spu_emit_branch_or_set.
3066
3067         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
3068         Add two arguments.
3069         * config/stormy16/stormy16.h (xstormy16_compare_op0,
3070         xstormy16_compare_op1): Delete.
3071         * config/stormy16/stormy16.c (xstormy16_compare_op0,
3072         xstormy16_compare_op1): Delete. 
3073         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
3074         Adjust calls.
3075         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
3076         (cmphi, cmpsi, bCC): Remove.
3077
3078         * config/v850/v850.md (tstsi, cmpsi): Fold into...
3079         (*cmpsi): ... this one.
3080         (cbranchsi4, cstoresi4): New.
3081         (bCC expanders): Delete.
3082         (sCC insns): Fold into...
3083         (*setcc): ... this one.
3084         (casesi): Do not use gen_cmpsi and gen_bgtu. 
3085         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
3086         (movsicc): Simplify.
3087         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
3088
3089         * config/vax/vax-protos.h (cond_name): New.
3090         (vax_output_conditional_branch): Remove.
3091         * config/vax/vax.c (cond_name): New.
3092         (vax_output_conditional_branch): Remove.
3093         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
3094         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
3095         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
3096         (bit<VAXint>): Wrap source with (compare).
3097         (b<code> and following unnamed pattern): Rename to *branch and
3098         *branch_reversed.  Change macroization to match_operator.
3099         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
3100
3101         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
3102         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
3103         Change last argument to machine_mode.
3104         (xtensa_expand_scc): Add machine_mode argument.
3105         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
3106         (gen_conditional_move, xtensa_expand_conditional_branch,
3107         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
3108         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
3109         Adjust operand numbers.
3110         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
3111         Delete.
3112         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
3113         (cmpsi, cmpsf, b<code>, s<code>): Delete.
3114         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
3115
3116 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
3117
3118         * optabs.c (prepare_cmp_insn): Temporarily disable test that
3119         causes spurious differences between trunk and cond-optab branch.
3120
3121 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3122
3123         PR target/37137
3124         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
3125
3126 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
3127
3128         * tree.c (iterative_hash_pointer): Delete.
3129         (iterative_hash_expr): Short-circuit handling of NULL pointer.
3130         Hash UIDs and versions of SSA names.  Don't special-case built-in
3131         function declarations.
3132
3133 2009-05-11  Ian Lance Taylor  <iant@google.com>
3134
3135         PR bootstrap/40103
3136         * graphite.c: Force -Wc++-compat to only be a warning before
3137         #including "cloog/cloog.h".
3138
3139 2009-05-11  Martin Jambor  <mjambor@suse.cz>
3140
3141         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
3142         
3143 2009-05-11  Jan Hubicka  <jh@suse.cz>
3144
3145         * tree-ssa-loop-ivcanon.c: Include target.h
3146         (struct loop_size): new structure.
3147         (constant_after_peeling): New predicate.
3148         (tree_estimate_loop_size): New function.
3149         (estimated_unrolled_size): Rewrite for new estimates.
3150         (try_unroll_loop_completely): Use new estimates.
3151         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
3152
3153 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3154
3155         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
3156         libcpp interface change.
3157         (spu_macro_to_expand): Likewise.
3158
3159 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
3160
3161         PR tree-optimization/40026
3162         * gimplify.c (gimplify_init_constructor): Change initial conditional
3163         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
3164         optimize_compound_literals_in_ctor.
3165
3166 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
3167
3168         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
3169         New devices.
3170         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
3171
3172 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
3173
3174         * tree-vect-data-refs.c (vect_analyze_group_access): Use
3175         HOST_WIDE_INT for gap.
3176
3177 2009-05-11  Ira Rosen  <irar@il.ibm.com>
3178
3179         PR tree-optimization/40074
3180         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
3181         account in group size and step comparison.
3182
3183 2009-05-11  Richard Guenther  <rguenther@suse.de>
3184
3185         * passes.c (init_optimization_passes): Strip now incorrect comment.
3186         (execute_function_todo): Do not set PROP_alias.
3187         * tree-pass.h (PROP_alias): Remove.
3188         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
3189         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
3190         * tree-nrv.c (pass_return_slot): Likewise.
3191         * tree-object-size.c (pass_object_sizes): Likewise.
3192         * tree-ssa-dom.c (pass_dominator): Likewise.
3193         (pass_phi_only_cprop): Likewise.
3194         * tree-ssa-dse.c (pass_dse): Likewise.
3195         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
3196         (pass_cselim): Likewise.
3197         * tree-ssa-pre.c (pass_pre): Likewise.
3198         (pass_fre): Likewise.
3199         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
3200         * tree-ssa-sink.c (pass_sink_code): Likewise.
3201         * tree-stdarg.c (pass_stdarg): Likewise.
3202         * tree-tailcall.c (pass_tail_calls): Likewise.
3203         * tree-vrp.c (pass_vrp): Likewise.
3204
3205 2009-05-10  Ian Lance Taylor  <iant@google.com>
3206
3207         * basic-block.h (enum profile_status): Break out of struct
3208         control_flow_graph.
3209         * cgraph.h (struct inline_summary): Break out of struct
3210         cgraph_local_info.
3211         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
3212         of struct cgraph_order_sort.
3213         * combine.c (enum undo_kind): New enum, broken out of struct undo.
3214         * cse.c (struct branch_path): Break out of struct
3215         cse_basic_block_data.
3216         * except.h (enum eh_region_type): Break out of struct eh_region.
3217         * gcc.c (enum add_del): Break out of struct modify_target.
3218         * genrecog.c (enum decision_type): Break out of struct decision_test.
3219         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
3220         ggc_pch_data.
3221         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
3222         * regmove.c (enum match_use): New enum, broken out of struct match.
3223         * sched-int.h (enum post_call_group): New enum, broken out of
3224         struct deps.
3225         (struct deps_reg): Break out of struct deps.
3226         * target.h (struct asm_int_op): Break out of struct gcc_target.
3227         * tree-eh.c (struct goto_queue_node): Break out of struct
3228         leh_tf_state.
3229         * tree-inline.h (enum copy_body_cge_which): Break out of
3230         copy_body_data.
3231         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
3232
3233         * c-decl.c (in_struct, struct_types): New static variables.
3234         (pushtag): Add loc parameter.  Change all callers.
3235         (lookup_tag): Add ploc parameter.  Change all callers.
3236         (check_compound_literal_type): New function.
3237         (parser_xref_tag): Add loc parameter.  Change all callers.  If
3238         -Wc++-compat, warn about struct/union/enum types defined within a
3239         struct or union.
3240         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
3241         and loc parameters.  Change all callers.  Change error calls to
3242         error_at, using loc.  For a redefinition, if the location of the
3243         original definition is known, report it.  Set in_struct and
3244         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
3245         (finish_struct): Add new parameters enclosing_in_struct and
3246         enclosing_struct_types.  Change all callers.  Set
3247         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
3248         in the struct.  If in a struct, add this struct to struct_types.
3249         (start_enum): Add loc parameter.  Change all callers.  Use
3250         error_at for errors, using loc.  For a redefinition, if the
3251         location of the original definition is known, report it.  If in a
3252         struct, add this enum type to struct_types.  If -Wc++-compat warn
3253         if in sizeof, typeof, or alignof.
3254         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
3255         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
3256         (c_parser_enum_specifier): Get enum location for start_enum.
3257         (c_parser_struct_or_union_specifier): Get struct location for
3258         start_struct.  Save in_struct and struct_types status between
3259         start_struct and finish_struct.
3260         (c_parser_cast_expression): Get location of cast.
3261         (c_parser_alignof_expression): Get location of type.
3262         (c_parser_postfix_expression): Likewise.
3263         (c_parser_postfix_expression_after_paren_type): Add type_loc
3264         parameter.  Change all callers.  Call check_compound_literal_type.
3265         Use type_loc for error about variable size type.
3266         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
3267         of an enum constant from an enum type defined in a struct or union.
3268         (c_cast_expr): Add loc parameter.  Change all callers.  If
3269         -Wc++-compat, warn about defining a type in a cast.
3270         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
3271         (start_enum, start_struct, finish_struct): Update declarations.
3272         (parser_xref_tag, c_cast_expr): Update declarations.
3273         (check_compound_literal_type): Declare.
3274
3275 2009-05-11  Ben Elliston  <bje@au.ibm.com>
3276
3277         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
3278         for recent libcpp interface change.
3279         (rs6000_macro_to_expand): Likewise.
3280
3281 2009-05-10  Michael Matz  <matz@suse.de>
3282
3283         PR target/40031
3284         * config/arm/arm.c (require_pic_register): Emit on entry edge,
3285         not at entry of function.
3286
3287 2009-05-10  Richard Guenther  <rguenther@suse.de>
3288
3289         PR tree-optimization/40081
3290         Revert
3291         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3292         using the main variant of the element type.  Do not fiddle with
3293         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3294
3295         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
3296         structs with volatile fields.
3297
3298 2009-05-10  Jan Hubicka  <jh@suse.cz>
3299
3300         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
3301         (estimate_move_cost): Assert that it does not get called for
3302         VOID_TYPE_P.
3303         (estimate_num_insns): Skip VOID types in argument handling.
3304         (optimize_inline_calls): Delete unreachable blocks and verify that
3305         callgraph is valid.
3306
3307 2009-05-10  Jan Hubicka  <jh@suse.cz>
3308
3309         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
3310         * cgraph.c (cgraph_mark_address_taken_node): New function.
3311         (dump_cgraph_node): Dump new flag.
3312         * cgraph.h (struct cgraph_node): Add address_taken.
3313         (cgraph_mark_address_taken_node): New function.
3314         * ipa.c (cgraph_postorder): Prioritize functions with address taken
3315         since new direct calls can be born.
3316
3317 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3318
3319         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
3320         tok->val.node.node.
3321
3322 2009-05-10  Jan Hubicka  <jh@suse.cz>
3323
3324         PR middle-end/40084
3325         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
3326         argument; rewrite.
3327         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
3328         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
3329         * tree-inline.c (copy_bb): Set frequency correctly.
3330         (fold_marked_statements): Update call to
3331         cgraph_update_edges_for_call_stmt.
3332
3333 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3334
3335         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
3336         identifiers in diagnostics.
3337         * config/arm/arm.c (arm_handle_fndecl_attribute,
3338         arm_handle_isr_attribute): Likewise.
3339         * config/avr/avr.c (avr_handle_progmem_attribute,
3340         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
3341         * config/bfin/bfin.c (handle_int_attribute,
3342         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
3343         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
3344         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
3345         Likewise.
3346         * config/darwin.c (darwin_handle_kext_attribute,
3347         darwin_handle_weak_import_attribute): Likewise.
3348         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
3349         h8300_handle_eightbit_data_attribute,
3350         h8300_handle_tiny_data_attribute): Likewise.
3351         * config/i386/i386.c (ix86_handle_cconv_attribute,
3352         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
3353         * config/i386/winnt.c (ix86_handle_shared_attribute,
3354         ix86_handle_selectany_attribute): Likewise.
3355         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
3356         * config/m32c/m32c.c (function_vector_handler): Likewise.
3357         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
3358         m68hc11_handle_fntype_attribute): Likewise.
3359         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
3360         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
3361         * config/mips/mips.c (mips_insert_attributes,
3362         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
3363         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
3364         rs6000_handle_struct_attribute): Likewise.
3365         * config/sh/sh.c (sh_insert_attributes,
3366         sh_handle_resbank_handler_attribute,
3367         sh_handle_interrupt_handler_attribute,
3368         sh2a_handle_function_vector_handler_attribute,
3369         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
3370         Likewise.
3371         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
3372         * config/spu/spu.c (spu_handle_fndecl_attribute,
3373         spu_handle_vector_attribute): Likewise.
3374         * config/stormy16/stormy16.c
3375         (xstormy16_handle_interrupt_attribute): Likewise.
3376         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
3377         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
3378
3379 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
3380
3381         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
3382         (pp_translate_identifiers): New.
3383         (pp_identifier): Only conditionally translate identifier to locale
3384         character set.
3385         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
3386         (pp_base_tree_identifier): Only conditionally translate identifier
3387         to locale character set.
3388         * c-pretty-print.c (M_): Define.
3389         (pp_c_type_specifier, pp_c_primary_expression): Mark English
3390         fragments for conditional translation with M_.
3391         * tree-pretty-print.c (maybe_init_pretty_print): Disable
3392         identifier translation.
3393
3394 2009-05-10  Richard Guenther  <rguenther@suse.de>
3395
3396         PR tree-optimization/40081
3397         * tree-sra.c (instantiate_element): Instantiate scalar replacements
3398         using the main variant of the element type.  Do not fiddle with
3399         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
3400
3401 2009-05-09  Jan Hubicka  <jh@suse.cz>
3402
3403         PR middle-end/40080
3404         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
3405         indirect calls; verify cgraph afterwards.
3406
3407 2009-05-09  Jan Hubicka  <jh@suse.cz>
3408
3409         PR bootstrap/40082
3410         * ipa.c (update_inlined_to_pointer): New function.
3411         (cgraph_remove_unreachable_nodes): Use it.
3412
3413 2009-05-09  Jan Hubicka  <jh@suse.cz>
3414
3415         * tree-eh.c (struct leh_state): Remove prev_try.
3416         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
3417         not track prev_try.
3418         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
3419         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
3420         remove_eh_handler_and_replace, foreach_reachable_handler,
3421         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
3422         * except.h (struct eh_region): Remove eh_region_u_cleanup.
3423         (gen_eh_region_cleanup): Update prototype.
3424
3425 2009-05-09  Jan Hubicka  <jh@suse.cz>
3426
3427         PR middle-end/40043
3428         * except.c (copy_eh_region): Always set prev_try.
3429         (redirect_eh_edge_to_label): Find outer try.
3430         (foreach_reachable_handler): When looking for prev try
3431         handle case where previous try is not going to be taken.
3432
3433 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
3434
3435         PR tree-optimization/40049
3436         * tree-vect-stmts.c (vectorizable_operation): If the machine has
3437         only vector/vector shifts, convert the type of the constant to the
3438         appropriate type to avoid building incorrect trees, which
3439         eventually have problems with garbage collection.
3440
3441 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3442
3443         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
3444         -1 for complex floating-point types if honoring signed zeros.
3445
3446 2009-05-08  Jan Hubicka  <jh@suse.cz>
3447
3448         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
3449         argument; handle correctly when profile is absent.
3450         (build_cgraph_edges): Update.
3451         (rebuild_cgraph_edges): Update.
3452         * cgraph.c: Do not include varray.h.
3453         (cgraph_set_call_stmt_including_clones): New function.
3454         (cgraph_create_edge_including_clones): Likewise
3455         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
3456         (cgraph_update_edges_for_call_stmt): Handle clones.
3457         (cgraph_remove_node): Handle clone tree.
3458         (cgraph_remove_node_and_inline_clones): New function.
3459         (dump_cgraph_node): Dump clone tree.
3460         (cgraph_clone_node): Handle clone tree.
3461         (clone_function_name): Bring here from tree-inline.c.
3462         (cgraph_create_virtual_clone): New function.
3463         * cgraph.h (ipa_replace_map): Move here from ipa.h.
3464         (cgraph_clone_info): New function.
3465         (strut cgraph_node): Add clone_info and new clone tree pointers.
3466         (cgraph_remove_node_and_inline_clones,
3467         cgraph_set_call_stmt_including_clones,
3468         cgraph_create_edge_including_clones,
3469         cgraph_create_virtual_clone): Declare.
3470         (cgraph_function_versioning): Use VEC argument.
3471         (compute_call_stmt_bb_frequency): Update prototype.
3472         (cgraph_materialize_all_clones): New function.
3473         * ipa-cp.c (ipcp_update_cloned_node): Remove.
3474         (ipcp_create_replace_map): Update to VECtors.
3475         (ipcp_update_callgraph): Use virtual clones.
3476         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
3477         (ipcp_update_profiling): Do not update local profiling.
3478         (ipcp_insert_stage): Use VECtors and virtual clones.
3479         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
3480         (clone_of_p): New function.
3481         (cgraph_preserve_function_body_p): Use clone tree.
3482         (cgraph_optimize): Materialize clones.
3483         (cgraph_function_versioning): Update for VECtors.
3484         (save_inline_function_body): Use clone tree.
3485         (cgraph_materialize_clone): New function.
3486         (cgraph_materialize_all_clones): Likewise.
3487         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
3488         * ipa.c: Include gimple.h.
3489         (cgraph_remove_unreachable_nodes): Use clone tree.
3490         * ipa-prop.c (ipa_note_param_call): Update call to
3491         compute_call_stmt_bb_frequencycall.
3492         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
3493         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
3494         (copy_bb): Handle updating of clone tree; add new edge when new call
3495         appears.
3496         (expand_call_inline): Be strict about every call having edge.
3497         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
3498         (delete_unreachable_blocks_update_callgraph): New function.
3499         (tree_function_versioning): Use VECtors; always remove unreachable
3500         blocks and fold conditionals.
3501         * tree-inline.h: Do not include varray.h.
3502         (tree_function_versioning): Remove.
3503         * Makefile.in (GTFILES): Remove tree-inline.c
3504         * passes.c (do_per_function): Do only functions having body.
3505         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
3506         tree.
3507
3508 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
3509             Andrew Morrow  <acm@google.com>
3510
3511         PR c/36892
3512         * c-common.c (c_common_attribute_table): Permit deprecated
3513         attribute to take an optional argument.
3514         (handle_deprecated_attribute): If the optional argument to
3515         __attribute__((deprecated)) is not a string ignore the attribute
3516         and emit a warning.
3517
3518         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
3519         * c-typeck.c (build_component_ref): Likewise.
3520         (build_external_ref): Likewise.
3521
3522         * toplev.c (warn_deprecated_use): Add an attribute argument.
3523         Emit the message associated with __attribute__((deprecated)).
3524
3525         * toplev.h (warn_deprecated_use): Updated.
3526
3527         * doc/extend.texi: Document new optional parameter to
3528         __attribute__((deprecated))
3529
3530 2009-05-08  Michael Eager <eager@eagercon.com>
3531
3532         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
3533         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
3534
3535 2009-05-08  Richard Guenther  <rguenther@suse.de>
3536
3537         PR tree-optimization/40062
3538         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
3539         Avoid exponential behavior.
3540
3541 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3542
3543         PR rtl-optimization/33928
3544         PR 26854
3545         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
3546         process_uses, build_single_def_use_links): New.
3547         (update_df): Update use_def_ref.
3548         (forward_propagate_into): Use get_def_for_use instead of use-def
3549         chains.
3550         (fwprop_init): Call build_single_def_use_links and let it initialize
3551         dataflow.
3552         (fwprop_done): Free use_def_ref.
3553         (fwprop_addr): Eliminate duplicate call to df_set_flags.
3554         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
3555         df_rd_simulate_one_insn): New.
3556         (df_rd_bb_local_compute_process_def): Update head comment.
3557         (df_chain_create_bb): Use the new RD simulation functions.
3558         * df.h (df_rd_simulate_artificial_defs_at_top, 
3559         df_rd_simulate_one_insn): New.
3560         * opts.c (decode_options): Enable fwprop at -O1.
3561         * doc/invoke.texi (-fforward-propagate): Document this.
3562
3563 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
3564
3565         PR c/24581
3566         * c-typeck.c (build_binary_op): Handle arithmetic between one real
3567         and one complex operand specially.
3568         * tree-complex.c (some_nonzerop): Do not identify a real value as
3569         zero if flag_signed_zeros.
3570
3571 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3572
3573         PR rtl-optimization/33928
3574         * loop-invariant.c (record_use): Fix && vs. || mishap.
3575
3576 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
3577
3578         PR rtl-optimization/33928
3579         * loop-invariant.c (struct use): Add addr_use_p.
3580         (struct def): Add n_addr_uses.
3581         (struct invariant): Add cheap_address.
3582         (create_new_invariant): Set cheap_address.
3583         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
3584         (record_uses): Pass df_ref to record_use.
3585         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
3586         used only as such.
3587
3588 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3589
3590         * config/sh/sh.c: Do not include c-pragma.h.
3591
3592 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3593
3594         * config/spu/spu.c: Remove include of c-common.h.
3595
3596 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
3597
3598         PR c/39037
3599         * c-common.h (mark_valid_location_for_stdc_pragma,
3600         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
3601         clear_float_const_decimal64, float_const_decimal64_p): New.
3602         * c.opt (Wunsuffixed-float-constants): New.
3603         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
3604         unsuffixed float constant, handle new warning.
3605         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
3606         * c-decl.c (c_scope): New flag float_const_decimal64.
3607         (set_float_const_decimal64, clear_float_const_decimal64,
3608         float_const_decimal64_p): New.
3609         (push_scope): Set new flag.
3610         * c-parser.c (c_parser_translation_unit): Mark when it's valid
3611         to use STDC pragmas.
3612         (c_parser_external_declaration): Ditto.
3613         (c_parser_compound_statement_nostart): Ditto.
3614         * c-pragma.c (valid_location_for_stdc_pragma,
3615         mark_valid_location_for_stdc_pragma,
3616         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
3617         handle_pragma_float_const_decimal64): New.
3618         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
3619         * cp/semantics.c (valid_location_for_stdc_pragma_p,
3620         set_float_const_decimal64, clear_float_const_decimal64,
3621         float_const_decimal64_p): New dummy functions.
3622         * doc/extend.texi (Decimal Float): Remove statement that the
3623         pragma, and suffix for double constants, are not supported.
3624         * doc/invoke.texi (Warning Options): List new option.
3625         (-Wunsuffixed-float-constants): New.
3626
3627 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
3628
3629         * config/i386/i386.c: Do not include c-common.h.
3630
3631 2009-05-07  Mark Heffernan  <meheff@google.com>
3632
3633         * doc/invoke.texi (Debugging Options): Document change of debugging
3634         dump location.
3635         * opts.c (decode_options): Make dump_base_name relative to
3636         aux_base_name directory.
3637
3638 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
3639
3640         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
3641         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
3642
3643 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
3644
3645         * Makefile.in (install-plugin): Simplify a bit.
3646
3647 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
3648
3649         * Makefile.in (OBJS-common): Add regcprop.o.
3650         (regcprop.o): New.
3651         * timevar.def (TV_CPROP_REGISTERS): New.
3652         * regrename.c (regrename_optimize): Return 0.
3653         (rest_of_handle_regrename): Delete.
3654         (pass_rename_registers): Point to regrename_optimize.
3655         (struct value_data_entry, struct value_data, 
3656         kill_value_one_regno, kill_value_regno, kill_value,
3657         set_value_regno, init_value_data, kill_clobbered_value,
3658         kill_set_value, kill_autoinc_value, copy_value,
3659         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
3660         replace_oldest_value_reg, replace_oldest_value_addr,
3661         replace_oldest_value_mem, copyprop_hardreg_forward_1,
3662         debug_value_data, validate_value_data): Move...
3663         * regcprop.c: ... here.
3664         (rest_of_handle_cprop): Delete.
3665         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
3666
3667 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
3668
3669         PR middle-end/40057
3670         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
3671         GEN_INT for 1 << bitnum.
3672         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
3673         build_int_cst_type.
3674
3675 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
3676
3677         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
3678         Remove wrong description of "nand" operation.
3679
3680 2009-05-06  Richard Guenther  <rguenther@suse.de>
3681             Adam Nemet  <anemet@caviumnetworks.com>
3682
3683         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
3684         comment.  Add that if LHS is not a gimple register, then RHS1 has
3685         to be a single object (GIMPLE_SINGLE_RHS).
3686
3687 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
3688
3689         * expr.c (get_def_for_expr): Move it up in the file.
3690         (store_field): When expanding a bit-field store, look at the
3691         defining gimple stmt for the masking conversion.
3692
3693 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
3694
3695         PR middle-end/39986
3696         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
3697         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
3698         32-bit memcpy into long.
3699
3700 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
3701
3702         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
3703         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
3704         new_reg_loc_descr.
3705         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
3706         instead of appending DW_OP_deref*.
3707
3708 2009-05-06  Michael Matz  <matz@suse.de>
3709
3710         PR middle-end/40021
3711         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
3712         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
3713
3714 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
3715
3716         * Makefile.in (install-plugin): Fix srcdir handling.
3717
3718 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
3719
3720         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
3721         when processing for not_regs_needed bitmap.
3722         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
3723         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
3724         handling it for rhs. 
3725
3726 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3727
3728         * config/i386/i386.md (unnamed inc/dec peephole): Use
3729         optimize_insn_for_size_p instead of optimize_size.
3730         * config/i386/predicates.md (incdec_operand): Likewise.
3731         (aligned_operand): Likewise.
3732         * config/i386/sse.md (divv8sf3): Likewise.
3733         (sqrtv8sf2): Likewise.
3734
3735 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3736
3737         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
3738
3739         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
3740
3741 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3742
3743         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
3744         ssemodesuffixf2c with avxmodesuffixf2c.
3745
3746 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
3747
3748         PR c/40032
3749         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
3750
3751 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
3752
3753         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
3754         (struct tree_base): Adjust spacing for 8 bit boundaries.
3755         (struct tree_decl_common): Add decl_by_reference_flag bit.
3756         (DECL_BY_REFERENCE): Adjust.
3757         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
3758         print DECL_BY_REFERENCE bit.
3759         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
3760         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
3761         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
3762         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
3763         unconditionally.
3764
3765         PR middle-end/39666
3766         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
3767         range of the type, but default label is missing, add it with one
3768         of the existing labels instead of adding a new label for it.
3769
3770 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
3771
3772         * dwarf.h: Remove.
3773
3774 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
3775
3776         * Makefile.in (enable_plugin, plugin_includedir): New.
3777         (install): Depend on install-plugin.
3778         (PLUGIN_HEADERS): New.
3779         (install-plugin): New.
3780         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
3781
3782 2009-05-05  Richard Guenther  <rguenther@suse.de>
3783
3784         PR tree-optimization/40022
3785         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
3786         the only vuse.
3787         (phivn_valid_p): Fix tuplification error, simplify.
3788         (phiprop_insert_phi): Add dumps.
3789         (propagate_with_phi): Simplify.
3790
3791 2009-05-05  Richard Guenther  <rguenther@suse.de>
3792
3793         PR middle-end/40023
3794         * builtins.c (gimplify_va_arg_expr): Properly build the address.
3795
3796 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
3797
3798         * tree.h (strip_float_extensions): Remove duplicate declaration.
3799         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
3800         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
3801         block_ultimate_origin): Rearrange the declarations line to match the
3802         comment that indicates the .c file which the functions are defined.
3803         (dwarf2out_*, set_decl_rtl): Add comment.
3804         (get_base_address): Adjust comment.
3805         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
3806         declarations line and add comment.
3807         (is_builtin_name): Add blank after function name, for clarity.
3808
3809 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3810
3811         * attribs.c (decl_attributes): Use %qE for identifiers in
3812         diagnostics.
3813         * cgraphunit.c (verify_cgraph_node): Translate function names to
3814         locale character set in diagnostics.
3815         * coverage.c (get_coverage_counts): Use %qE for identifiers in
3816         diagnostics.
3817         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
3818         Document that functions are named in UTF-8.
3819         * expr.c (expand_expr_real_1): Translate function names to locale
3820         character set in diagnostics.
3821         * gimplify.c (omp_notice_variable, omp_is_private,
3822         gimplify_scan_omp_clauses): Use %qE for identifiers in
3823         diagnostics.
3824         * langhooks.c (lhd_print_error_function): Translate function names
3825         to locale character set.
3826         * langhooks.h (decl_printable_name): Document that return value is
3827         in internal character set.
3828         * stmt.c: Include pretty-print.h
3829         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
3830         diagnostics.
3831         (resolve_operand_name_1): Translate named operand name to locale
3832         character set.
3833         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
3834         diagnostics.
3835         * toplev.c (announce_function): Translate function names to locale
3836         character set.
3837         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
3838         (default_tree_printer): Use pp_identifier or translate identifiers
3839         to locale character set.  Mark "<anonymous>" for translation.
3840         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
3841         for identifiers in diagnostics.
3842         * tree.c (handle_dll_attribute): Use %qE for identifiers in
3843         diagnostics.
3844         * varasm.c (output_constructor): Use %qE for identifiers in
3845         diagnostics.
3846
3847 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
3848
3849         * configure.ac: use ` ` instead of $()
3850         * configure: Regenerate.
3851
3852 2009-05-05  Ben Elliston  <bje@au.ibm.com>
3853
3854         * config/pa/linux-atomic.c: Eliminate conditional include of
3855         errno.h on non-LP64 systems to simplify build requirements.
3856
3857 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3858
3859         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
3860         diagnostics.
3861         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
3862         and pass value to identifier_to_locale.
3863         (warn_variable_length_array): Make name a tree.
3864         (grokdeclarator): Separate diagnostic texts for named and unnamed
3865         declarators.  Use %qE for named declarators.
3866         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
3867         diagnostics.
3868         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
3869         identifiers in diagnostics.
3870         * c-typeck.c (push_member_name, start_init): Pass identifiers to
3871         identifier_to_locale.  Mark "anonymous" strings for translation.
3872
3873 2009-05-04  Michael Eager <eager@eagercon.com>
3874
3875         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
3876         address for DImode/DFmode only if double-precision FP regs.
3877
3878 2009-05-04  Michael Eager <eager@eagercon.com>
3879
3880         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
3881         TARGET_SINGLE_FLOAT check.
3882
3883 2009-05-04  Michael Eager <eager@eagercon.com>
3884
3885         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
3886
3887 2009-05-04  Michael Eager <eager@eagercon.com>
3888
3889         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
3890         * config/rs6000/t-xilinx: New
3891
3892 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
3893
3894         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
3895         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
3896         * gcc/explow.c (memory_address): Use target hook.
3897         * gcc/targhooks.c (default_legitimize_address): New.
3898         * gcc/targhooks.h (default_legitimize_address): New.
3899         * gcc/target.h (legitimize_address): New.
3900         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
3901         (TARGET_INITIALIZER): Include it.
3902         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
3903
3904         * config/bfin/bfin-protos.h (legitimize_address): Remove.
3905         * config/bfin/bfin.c (legitimize_address): Remove.
3906         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
3907         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
3908         Remove.
3909         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
3910         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
3911
3912         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
3913         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
3914         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
3915         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
3916         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
3917         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
3918         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
3919         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
3920         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
3921         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
3922         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
3923         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
3924         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
3925         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
3926         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
3927         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
3928         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
3929         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
3930         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
3931         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
3932         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
3933         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
3934         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
3935
3936         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
3937         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
3938         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
3939         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
3940         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
3941         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
3942         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
3943         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
3944         (thumb_legitimize_address): Delete.
3945         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
3946         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
3947         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
3948         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
3949         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
3950         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
3951         Delete.
3952         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
3953         Delete.
3954
3955         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
3956         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
3957         * config/m32r/m32r.c (m32r_legitimize_address): New.
3958         * config/m68k/m68k.c (m68k_legitimize_address): New.
3959         * config/score/score.c (score_legitimize_address): Standardize.
3960         * config/score/score3.c (score3_legitimize_address): Standardize.
3961         * config/score/score3.h (score3_legitimize_address): Adjust.
3962         * config/score/score7.c (score7_legitimize_address): Standardize.
3963         * config/score/score7.h (score7_legitimize_address): Adjust.
3964         * config/sh/sh.c (sh_legitimize_address): New.
3965         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
3966
3967         * gcc/config/s390/s390.c (legitimize_address): Rename to...
3968         (s390_legitimize_address): ... this.
3969         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
3970         (sparc_legitimize_address): ... this.
3971         * gcc/config/i386/i386.c (legitimize_address): Rename to...
3972         (ix86_legitimize_address): ... this.
3973         * gcc/config/avr/avr.c (legitimize_address): Rename to...
3974         (avr_legitimize_address): ... this.
3975         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
3976         (mn10300_legitimize_address): ... this.
3977         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
3978         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
3979         (alpha_expand_mov): Adjust call.
3980
3981         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
3982         * config/spu/spu.c (spu_legitimize_address): Likewise.
3983         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
3984         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
3985
3986 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
3987
3988         * intl.c (locale_encoding, locale_utf8): New.
3989         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
3990         * intl.h (locale_encoding, locale_utf8): Declare.
3991         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
3992         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
3993         New.
3994         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
3995         argument.
3996         (pp_tree_identifier): Define to call pp_base_tree_identifier.
3997         (pp_base_tree_identifier): Declare as function.
3998         (identifier_to_locale): Declare.
3999         * Makefile.in (pretty-print.o): Update dependencies.
4000         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
4001
4002 2009-05-04  Richard Guenther  <rguenther@suse.de>
4003
4004         PR middle-end/40015
4005         * builtins.c (fold_builtin_memory_op): Do not decay to element
4006         type if the size matches the whole array.
4007
4008 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4009
4010         * expmed.c (synth_mult): When trying out a shift, pass the result
4011         of a signed shift.
4012
4013 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
4014
4015         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
4016         (shiftsub1_cost): New.
4017         (init_expmed): Compute shiftsub1_cost.
4018         (synth_mult): Optimize multiplications by constants of the form
4019         -(2^^m-1) for some constant positive integer m.
4020
4021 2009-05-03  Richard Guenther  <rguenther@suse.de>
4022
4023         PR c/39983
4024         * c-typeck.c (array_to_pointer_conversion): Do not built
4025         ADDR_EXPRs of arrays of pointer-to-element type.
4026         * c-gimplify.c (c_gimplify_expr): Revert change fixing
4027         up wrong ADDR_EXPRs after-the-fact.
4028         * c-common.c (strict_aliasing_warning): Strip pointer
4029         conversions for obtaining the original type.
4030         * builtins.c (fold_builtin_memset): Handle array types.
4031         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
4032         and array types
4033
4034 2009-05-03  Richard Guenther  <rguenther@suse.de>
4035
4036         PR middle-end/23329
4037         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
4038         Do not lose casts from array types with unknown extent to array
4039         types with known extent.
4040         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
4041         alias set compatibility.
4042
4043 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
4044
4045         * flags.h (extra_warnings): Delete.
4046         * toplev.c (process_options): Handle Wuninitialized here.
4047         * opts.c (extra_warnings): Delete.
4048         (set_Wextra): Delete.
4049         (common_handle_option): -Wextra can be handled automatically.
4050         * c-opts.c (c_common_handle_option): Delete obsolete code.
4051         (c_common_post_options): Simplify comment.
4052         * common.opt (W): Add Var.
4053         (Wextra): Add Var.
4054         (Wuninitialized): Initialize to -1.
4055
4056 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
4057             Richard Guenther  <rguenther@suse.de>
4058
4059         * expr.c (get_def_for_expr): New function.
4060         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
4061         SSA rather than trees.
4062         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
4063         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
4064         
4065 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
4066
4067         * c-common.c (reswords): Add _Imaginary.
4068         * c-common.c (enum rid): Add RID_IMAGINARY.
4069
4070 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
4071
4072         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
4073         Patch by Richard Guenther.
4074
4075 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
4076
4077         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
4078         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
4079         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
4080         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
4081         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
4082         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
4083         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
4084         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
4085         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
4086         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
4087         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
4088         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
4089         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
4090         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
4091         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
4092         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
4093         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
4094         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
4095
4096 2009-05-02  Richard Guenther  <rguenther@suse.de>
4097
4098         PR tree-optimization/39940
4099         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
4100         doing so.
4101
4102 2009-05-02  Richard Guenther  <rguenther@suse.de>
4103
4104         PR middle-end/40001
4105         * tree-ssa.c (execute_update_addresses_taken): Properly check
4106         if we can mark a variable DECL_GIMPLE_REG_P.
4107         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
4108         back to the end of the function.
4109         (is_gimple_reg_type): Remove complex type special casing.
4110         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
4111         if not optimizing.
4112
4113 2009-05-02  Ben Elliston  <bje@au.ibm.com>
4114
4115         * doc/collect2.texi (Collect2): Document search path behaviour
4116         when configured with --with-ld.
4117
4118 2009-05-02  Jan Hubicka  <jh@suse.cz>
4119
4120         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
4121         parameter; update callers.
4122         (coalesce_cost_edge): EH edges are costier because they needs
4123         splitting even if not critical and even more costier when there are
4124         multiple EH predecestors.
4125
4126 2009-05-02  Jan Hubicka  <jh@suse.cz>
4127
4128         * except.c (remove_eh_handler_and_replace): Handle updating after
4129         removing TRY blocks.
4130
4131 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
4132
4133         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
4134
4135 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
4136
4137         * varasm.c: Do not include c-pragma.h.
4138         * attribs.c: Do not incude c-common.h.
4139
4140 2009-05-01  Michael Matz  <matz@suse.de>
4141
4142         * calls.c (initialize_argument_information): Handle SSA names like
4143         decls with a non MEM_P DECL_RTL.
4144
4145 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4146
4147         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
4148         * ipa-utils.c: Likewise.
4149         * ipa-type-escape.c: Likewise.
4150         * cgraphunit.c Do not include c-common.h.
4151         * ipa-pure-const.c: Likewise.
4152         * tree-if-conv.c: Likewise.
4153         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
4154         * ipa-struct-reorg.c: Likewise.
4155         * tree-nomudflap.c: Likewise.
4156         * tree-ssa-structalias.c: Likewise.
4157
4158 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
4159
4160         * store-motion.c: Many cleanups to make this pass a first-class
4161         citizen instead of an appendix to gcse load motion.  Add TODO list
4162         to make this pass faster/cleaner/better.
4163
4164         (struct ls_expr): Post gcse.c-split cleanups.
4165         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
4166         "stores" field to "avail_stores".
4167         (pre_ldst_mems): Rename to store_motion_mems.
4168         (pre_ldst_table): Rename to store_motion_mems_table.
4169         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
4170         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
4171         (ldst_entry): Rename to st_expr_entry, update users.
4172         (free_ldst_entry): Rename to free_st_expr_entry, update users.
4173         (free_ldst_mems): Rename to free_store_motion_mems, update users.
4174         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
4175         update caller.
4176         (first_ls_expr): Rename to first_st_expr, update users.
4177         (next_ls_expr): Rename to next_st_expr, update users.
4178         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
4179         fields properly for store motion instead of names inherited from load
4180         motion in gcse.c.
4181         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
4182         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
4183         are done with it.
4184
4185         (ae_kill): Rename to st_kill, update users.
4186         (ae_gen): Rename to st_avloc, update users.
4187         (transp): Rename to st_transp, update users.
4188         (pre_insert_map): Rename to st_insert_map, update users.
4189         (pre_delete_map): Rename to st_delete_map, update users.
4190         (insert_store, build_store_vectors, free_store_memory,
4191         one_store_motion_pass): Update for abovementioned changes.
4192
4193         (gcse_subst_count, gcse_create_count): Remove.
4194         (one_store_motion_pass): New statistics counters "n_stores_deleted"
4195         and "n_stores_created", local variables.
4196
4197         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
4198         use for_each_rtx.
4199
4200         (regvec, compute_store_table_current_insn): Remove.
4201         (reg_set_info, reg_clear_last_set): Remove.
4202         (compute_store_table): Use DF caches instead of local dataflow
4203         solvers.
4204
4205 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
4206
4207         * c-objc-common.c (c_tree_printer): Print identifiers with
4208         pp_identifier, not pp_string.  Mark "({anonymous})" for
4209         translation.
4210         * c-pretty-print.c (pp_c_ws_string): New.
4211         (pp_c_cv_qualifier, pp_c_type_specifier,
4212         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
4213         pp_c_storage_class_specifier, pp_c_function_specifier,
4214         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
4215         pp_c_primary_expression, pp_c_postfix_expression,
4216         pp_c_unary_expression, pp_c_shift_expression,
4217         pp_c_relational_expression, pp_c_equality_expression,
4218         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
4219         use pp_string and pp_c_ws_string in place of pp_identifier and
4220         pp_c_identifier for non-identifiers.  Mark English strings for
4221         translation.
4222         * c-pretty-print.h (pp_c_ws_string): Declare.
4223
4224 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
4225             Roland McGrath <roland@redhat.com>
4226
4227         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
4228         (ENABLE_LD_BUILDID): New configuration option.
4229         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
4230         (LINK_BUILDID_SPEC): New macro.
4231         (init_spec): If defined, prepend it between LINK_EH_SPEC and
4232         link_spec.
4233         * doc/install.texi: Document --enable-linker-build-id option.
4234         * configure: Rebuild.
4235         * config.in: Rebuild.
4236
4237 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
4238
4239         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
4240         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
4241         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
4242         MIPS_GP_SAVE_AREA_SIZE.
4243         * config/mips/mips.c (struct mips_frame_info): Update comment
4244         before arg_pointer_offset and hard_frame_pointer_offset.
4245         (mips_compute_frame_info): Update diagram before function: to
4246         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
4247         indicate the position of frame_pointer_rtx with -fstack-protector and
4248         to show args_size.  Don't allocate cprestore area for leaf functions
4249         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
4250         cprestore_size.
4251         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
4252
4253 2009-04-30  Michael Matz  <matz@suse.de>
4254
4255         PR tree-optimization/39955
4256         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
4257
4258 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
4259
4260         * ira.c (setup_cover_and_important_classes):  Use safe macro
4261         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
4262         directly.
4263         * genpreds.c (write_tm_preds_h):  Output suitable definition of
4264         REG_CLASS_FOR_CONSTRAINT.
4265
4266 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4267
4268         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
4269         instead of an int.
4270         * bitmap.c (bitmap_descriptor): Likewise.
4271         * ggc-common.c (loc_descriptor): Likewise.
4272         * varray.c (varray_descriptor): Likewise.
4273         * vec.c (vec_descriptor): Likewise.
4274
4275 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
4276
4277         * Makefile.in (dce.o): Add $(EXCEPT_H).
4278         * dce.c: Include except.h and delete redundant vector definitions.
4279         (deletable_insn_p): Return false for non-call insns that can throw
4280         if DF is running.
4281
4282 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
4283
4284         * gcse.c (ae_gen): Remove.
4285         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
4286         and make non-static function to make it available in store-motion.c.
4287         Update call sites with search-and-replace.
4288         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
4289         extract_mentioned_regs, extract_mentioned_regs_helper,
4290         find_moveable_store, compute_store_table, load_kills_store, find_loads,
4291         store_killed_in_insn, store_killed_after, store_killed_before,
4292         build_store_vectors, insert_insn_start_basic_block, insert-store,
4293         remove_reachable_equiv_notes, replace_store_insn, delete_store,
4294         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
4295         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
4296         * store-motion.c: ...new file.  Also copy data structures from gcse.c
4297         and clean up to remove parts not used by store motion.
4298         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
4299         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
4300
4301 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4302
4303         PR target/38571
4304         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
4305         when optimizing for size.
4306
4307 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
4308
4309         * gcse.c (gcse_constant_p): Fix typo in last change.
4310
4311 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
4312
4313         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
4314
4315 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
4316
4317         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
4318
4319 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
4320
4321         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
4322         CONST_HIGH_PART result.
4323
4324 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
4325
4326         * config/avr/avr.c (initial_elimination_offset): Rename to
4327         avr_initial_elimination_offset.
4328         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
4329         change return type to bool.
4330         (avr_can_eliminate): New function.
4331         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
4332         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
4333         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
4334         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
4335         avr_initial_elimination_offset.
4336         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
4337         (avr_initial_elimination_offset): Define.
4338
4339 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
4340             Steven Bosscher  <steven@gcc.gnu.org>
4341
4342         PR rtl-optimization/39938
4343         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
4344         * cfgrtl.c: Include insn-attr.h.
4345         (rest_of_pass_free_cfg): New function.
4346         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
4347         * resource.c (init_resource_info): Remove call to df_analyze.
4348
4349 2009-04-29  Richard Guenther  <rguenther@suse.de>
4350
4351         PR target/39943
4352         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
4353         allow conversion to signed integers.
4354
4355 2009-04-29  Richard Guenther  <rguenther@suse.de>
4356
4357         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
4358         shifts of floating point vectors if the shift amount is
4359         a constant multiple of the element size.
4360
4361 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
4362             Michael Matz  <matz@suse.de>
4363
4364         PR middle-end/39927
4365         PR bootstrap/39929
4366         * tree-outof-ssa.c (emit_partition_copy): New function.
4367         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
4368         insert_part_to_rtx_on_edge): Perform the partition base var
4369         copy using emit_partition_copy.
4370         (insert_value_copy_on_edge): Convert constants to the right mode.
4371         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
4372         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
4373
4374 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4375
4376         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
4377         scan backwards to try to find a constant to initialize it.
4378
4379         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
4380         insn before the loop_end instruction, don't look past labels.
4381
4382 2009-04-29  Richard Guenther  <rguenther@suse.de>
4383
4384         PR middle-end/39937
4385         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4386         loose type conversions.
4387         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
4388         stmts only if there are no uses of its definition.
4389
4390 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4391
4392         * config/bfin/bfin.h (splitting_loops): Declare.
4393         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
4394         Reorder bit definitions to be ascending.
4395         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
4396         * config/bfin/bfin.c (splitting_loops): New variable.
4397         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
4398         (struct loop_info): Remove members INIT and LOOP_INIT.
4399         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
4400         the LSETUP sequence.  Allow LC to be loaded from any register, but
4401         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
4402         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
4403         set to 1.
4404         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
4405         of reload_completed.
4406
4407         From Jie Zhang:
4408         * config/bfin/bfin.md (movsi_insn): Refine constraints.
4409
4410 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
4411
4412         * Makefile.in (PLUGIN_VERSION_H): New.
4413         (OBJS-common): Remove plugin-version.o.
4414         (plugin.o): Depend on (PLUGIN_VERSION_H).
4415         (plugin-version.o): Remove.
4416         * configure: Regenerate
4417         * configure.ac: Create plugin-version.h.
4418         * gcc-plugin.h (plugin_gcc_version): Remove.
4419         (plugin_default_version_check): Change signature.
4420         * plugin-version.c: Remove.
4421         * plugin.c: Include plugin-version.h.
4422         (str_plugin_gcc_version_name): Remove.
4423         (try_init_one_plugin): Pass gcc version to plugin_init.
4424         (plugin_default_version_check): Both gcc and plugin versions are now
4425         arguments.
4426
4427 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4428         
4429         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
4430         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
4431         Remove special case testing for last insn of inner loops. Don't fail
4432         if the loop ends with a jump, emit an extra nop instead.
4433
4434         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
4435         DREGS rather than comparing directly.  Remove code that tries to
4436         account for latencies.
4437
4438 2009-04-29  Richard Guenther  <rguenther@suse.de>
4439
4440         PR tree-optimization/39941
4441         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
4442         eliminating an indirect call.
4443
4444 2009-04-29  Richard Guenther  <rguenther@suse.de>
4445
4446         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
4447         parameter.  Allow invariants as base if !require_lvalue.
4448         (verify_gimple_assign_single): Adjust.
4449
4450 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4451
4452         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
4453         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
4454         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
4455         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
4456         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
4457         a VEC_SELECT.
4458         * config/bfin/bfin.c (bfin_expand_builtin,
4459         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
4460
4461 2009-04-28  Richard Guenther  <rguenther@suse.de>
4462
4463         * tree-vect-loop.c (get_initial_def_for_induction): Use
4464         correct types for pointer increment.
4465
4466 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4467
4468         * toplev.c (print_version): Update GMP version string calculation.
4469
4470 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
4471
4472         PR rtl-optimization/39938
4473         * resource.c (init_resource_info): Add call to df_analyze.
4474
4475 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4476
4477         * config/alpha/alpha.md (usegp): Cast the result of
4478         alpha_find_lo_sum_using_gp to enum attr_usegp.
4479         * config/alpha/alpha.c (override_options): Remove end-of-structure
4480         marker element from cpu_table.  Use array size of cpu_table to handle
4481         -mcpu and -mtune options.
4482         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
4483
4484 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
4485
4486         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
4487         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
4488         tune_32 and tune_64.
4489         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
4490         support on PowerPC.
4491         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
4492         * config/rs6000/option-defaults.h: ... here.  New file.
4493         (OPT_64, OPT_32): Define.
4494         (MASK_64BIT): Define to 0 if not already defined.
4495         (OPT_ARCH64, OPT_ARCH32): Define.
4496         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
4497         and tune_64.
4498
4499 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4500
4501         * config/arm/arm.c (arm_override_options): Emit error on using
4502         fpa with AAPCS.
4503
4504 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4505
4506         PR rtl-optimization/39914
4507         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
4508         registers for allocnos created from user-defined variables only
4509         when not optimizing.
4510
4511 2009-04-28  Richard Guenther  <rguenther@suse.de>
4512
4513         PR middle-end/39937
4514         * fold-const.c (fold_binary): Use distribute_real_division only
4515         on float types.
4516
4517 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
4518
4519         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
4520         add hpux-stdint.h to tm_file.
4521         (hppa[12]*-*-hpux11*): Ditto.
4522         (ia64*-*-hpux*): Ditto.
4523         * config/hpux-stdint.h: New.
4524         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
4525         __STDC_EXT__ for all compiles.
4526         * config/pa/pa-hpux.h: Ditto.
4527         * config/pa/pa-hpux10.h: Ditto.
4528         * config/pa/pa-hpux11.h: Ditto.
4529
4530 2009-04-28  Catherine Moore  <clm@codesourcery.com>
4531
4532         * debug.h (set_name): Add comment.
4533
4534 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
4535
4536         PR target/39929
4537         * config/darwin.c (machopic_gen_offset): Check
4538         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
4539         * config/arm/arm.c (require_pic_register): Likewise.
4540
4541 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
4542
4543         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
4544         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
4545         m32c_promote_prototypes): Delete.
4546
4547 2009-04-28  Michael Matz  <matz@suse.de>
4548
4549         PR middle-end/39922
4550         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
4551         constants.
4552
4553 2009-04-28  Richard Guenther  <rguenther@suse.de>
4554
4555         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
4556
4557 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4558
4559         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
4560         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
4561         * config/arm/arm-tune.md: Regenerate.
4562
4563 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
4564
4565         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
4566         block if there are complex incoming edges.
4567         (sel_merge_blocks): Remove useless assert.
4568         (sel_redirect_edge_and_branch): Check that edge was redirected.
4569         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
4570         (sel_find_rgns): Delete declaration.
4571         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
4572         the region when it is not a preheader.
4573
4574 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4575
4576         PR c/39323
4577         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
4578
4579 2009-04-28  Richard Guenther  <rguenther@suse.de>
4580
4581         * tree.h (SSA_NAME_VALUE): Remove.
4582         (struct tree_ssa_name): Remove value_handle member.
4583         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
4584         array for jump threading.
4585         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
4586         SSA_NAME_VALUEs.
4587         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
4588         * tree-flow.h (threadedge_initialize_values): Declare.
4589         (threadedge_finalize_values): Likewise.
4590         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
4591         (SSA_NAME_VALUE): Define.
4592         (threadedge_initialize_values): New function.
4593         (threadedge_finalize_values): Likewise.
4594         * tree-ssa-dom.c (ssa_name_values): New global variable.
4595         (SSA_NAME_VALUE): Define.
4596         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
4597
4598 2009-04-28  Ira Rosen  <irar@il.ibm.com>
4599
4600         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
4601         Use REPORT_VECTORIZED_LOCATIONS instead 
4602         REPORT_VECTORIZED_LOOPS.
4603         * tree-vectorizer.c (vect_verbosity_level): Make static.
4604         (vect_loop_location): Rename to vect_location.
4605         (vect_set_verbosity_level): Update comment.
4606         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
4607         and vect_location.
4608         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
4609         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
4610         instead REPORT_UNVECTORIZED_LOOPS.
4611         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
4612         and vect_loop_def to vect_external_def and vect_internal_def.
4613         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
4614         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
4615         REPORT_UNVECTORIZED_LOCATIONS.
4616         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
4617         and vect_used_in_loop and to vect_unused_in_scope and 
4618         vect_used_in_scope.
4619         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
4620         (vect_verbosity_level): Remove declaration.
4621         (vect_analyze_operations): Likewise.
4622         (vect_analyze_stmt): Declare.
4623         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
4624         REPORT_UNVECTORIZED_LOCATIONS.
4625         (vect_get_loop_niters): Fix indentation.
4626         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
4627         (vect_analyze_loop_operations): New function.
4628         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
4629         vect_analyze_operations.
4630         (vect_is_simple_reduction): Use new names.
4631         (vectorizable_live_operation, vect_transform_loop): Likewise.
4632         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
4633         to specify whether the data references can be a part of interleaving
4634         chain.
4635         (vect_analyze_data_ref_dependence): Use new names.
4636         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
4637         (vect_create_addr_base_for_vector_ref): Remove redundant code.
4638         * tree-vect-patterns.c (widened_name_p): Use new names.
4639         (vect_recog_dot_prod_pattern): Likewise.
4640         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
4641         (process_use, vect_mark_stmts_to_be_vectorized, 
4642         vect_model_simple_cost, vect_model_store_cost,
4643         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
4644         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
4645         vectorizable_operation, vectorizable_type_demotion,
4646         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
4647         vectorizable_condition): Likewise.
4648         (vect_analyze_operations): Split into vect_analyze_loop_operations
4649         and ...
4650         (vect_analyze_stmt): ... new function.
4651         (new_stmt_vec_info): Use new names.
4652         (vect_is_simple_use): Use new names and fix comment.
4653         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
4654         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
4655
4656 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
4657
4658         PR target/39911
4659         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
4660         and integer modes for x87 operands.  Do not ICE for unsupported size,
4661         generate error instead.  Generate error for unsupported operand types.
4662         ['z']: Do not handle HImode memory operands specially.  Warning
4663         for floating-point operands.  Fallthru to 'Z' for unsupported operand
4664         types.  Do not ICE for unsupported size, generate error instead.
4665         (output_387_binary_op): Use %Z to output operands.
4666         (output_fp_compare): Ditto.
4667         (output_387_reg_move): Ditto.
4668
4669 2009-04-28  Ben Elliston  <bje@au.ibm.com>
4670
4671         PR c++/35652
4672         Revert:
4673
4674         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4675
4676         * builtins.c (c_strlen): Do not warn here.
4677         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
4678         * c-common.c (pointer_int_sum): Take an explicit location.
4679         Warn about offsets out of bounds.
4680         * c-common.h (pointer_int_sum): Adjust declaration.
4681
4682 2009-04-27  Ian Lance Taylor  <iant@google.com>
4683
4684         * collect2.c (is_ctor_dtor): Change type of ret field in struct
4685         names to symkind.
4686         * dce.c (run_fast_df_dce): Change type of old_flags to int.
4687         * df-core.c (df_set_flags): Change return type to int.  Change
4688         type of old_flags to int.
4689         (df_clear_flags): Likewise.
4690         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
4691         (df_get_conditional_uses): Likewise.
4692         * df.h (df_set_flags, df_clear_flags): Update declarations.
4693         * dwarf2out.c (struct indirect_string_node): Change type of form
4694         field to enum dwarf_form.
4695         (AT_string_form): Change return type to enum dwarf_form.
4696         * fixed-value.c (fixed_compare): Add cast to enum type.
4697         * fwprop.c (update_df): Change 0 to VOIDmode.
4698         * gensupport.c: Change 0 to UNKNOWN.
4699         * gimple.h (gimple_cond_code): Add cast to enum type.
4700         * haifa-sched.c (reemit_notes): Add cast to enum type.
4701         * hooks.c (hook_int_void_no_regs): Remove function.
4702         * hooks.h (hook_int_void_no_regs): Remove declaration.
4703         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
4704         * predict.c (combine_predictions_for_insn): Add casts to enum type.
4705         * real.c (real_arithmetic): Add cast to enum type.
4706         (real_compare): Likewise.
4707         * target.h (struct gcc_target): Change return type of
4708         branch_target_register_class to enum reg_class.
4709         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
4710         default_branch_target_register_class.
4711         * targhooks.c (default_branch_target_register_class): New function.
4712         * targhooks.h (default_branch_target_register_class): Declare.
4713         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
4714         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
4715         cast to int.
4716         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
4717         ERROR_MARK.
4718         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
4719         vect_uninitialized_def.  Change 0 to ERROR_MARK.
4720         * tree-vect-stmts.c (supportable_widening_operation): Don't
4721         initialize icode1 and icode2.
4722         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
4723         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
4724         and to STD_C89.
4725         (cmn_err_flag_specs): Change 0 to STD_C89.
4726         (cmn_err_char_table): Likewise.
4727         * config/arm/arm.c (get_arm_condition_code): Change type of code
4728         to enum arm_cond_code.
4729         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
4730         (IWMMXT_BUILTIN2): Likewise.
4731         (neon_builtin_type_bits): Don't define typedef.
4732         (neon_builtin_datum): Change type of bits field to int.
4733         (arm_expand_neon_args): Add cast to enum type.
4734         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
4735         TLS_MODEL_NONE.
4736         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
4737         casts to enum type.
4738         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
4739         MIPS_FP_COND_f.
4740         * config/mips/mips.md (jal_macro): Return enum constant.
4741         (single_insn): Likewise.
4742         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
4743         CODE_FOR_nothing.
4744         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
4745         casts to enum type.
4746         * config/s390/s390.c (s390_tune_flags): Change type to int.
4747         (s390_arch_flags): Likewise.
4748         (s390_handle_arch_option): Change flags field of struct pta to int.
4749         * config/s390/s390.h (s390_tune_flags): Update declaration.
4750         (s390_arch_flags): Likewise.
4751         * config/sh/sh.c (prepare_move_operands): Compare
4752         tls_symbolic_operand result with enum constant.
4753         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
4754         (sh_expand_prologue): Add cast to enum type.
4755         (sh_expand_epilogue): Likewise.
4756         (tls_symbolic_operand): Change return type to enum tls_model.
4757         (fpscr_set_from_mem): Add cast to enum type.
4758         (legitimize_pic_address): Compare tls_symbolic_operand result with
4759         enum constant.
4760         (sh_target_reg_class): Change return type to enum reg_class.
4761         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
4762         PROCESSOR_xxx.
4763         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
4764         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
4765         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
4766         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
4767         (delayed_branch, tls_call_delay): Likewise.
4768         (eligible_for_sibcall_delay): Likewise.
4769         (eligible_for_return_delay): Likewise. 
4770         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
4771         (spu_expand_builtin_1): Likewise.
4772
4773         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
4774         for all types of conversions.
4775         (output_init_element): Issue -Wc++-compat warning if needed when
4776         initializing a bitfield with enum type.
4777         * c-parser.c (c_parser_expression): Set original_type to
4778         original_type of right hand operand of comman operator.
4779
4780 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4781
4782         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
4783         grammar nits.
4784         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
4785         * doc/cpp.texi (Standard Predefined Macros)
4786         (Implementation-defined behavior): Likewise.
4787         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
4788         * doc/gimple.texi (GIMPLE Exception Handling)
4789         (@code{GIMPLE_ASSIGN}): Likewise.
4790         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
4791         * doc/invoke.texi (Warning Options, Optimize Options)
4792         (AVR Options, Darwin Options): Likewise.
4793         (Optimize Options): Reformulate -fwhole-program description.
4794         * doc/loop.texi (Lambda): Likewise.
4795         * doc/md.texi (Output Template, Define Constraints)
4796         (Standard Names, Insn Splitting): Likewise.
4797         * doc/options.texi (Option properties): Likewise.
4798         * doc/passes.texi (Tree-SSA passes): Likewise.
4799         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
4800         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
4801         (File Names and DBX): Likewise.
4802         * doc/trouble.texi (Incompatibilities): Likewise.
4803
4804 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4805
4806         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
4807         instruction is correct.
4808
4809 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4810
4811         Allow non-constant arguments to conversion intrinsics.
4812         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
4813         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
4814         * spu.c (print_operand): Handle 'v' and 'w'.
4815         (exp2_immediate_p, spu_gen_exp2): Define.
4816         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
4817         spu_convtf_1): Update parameter descriptions.
4818         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
4819         * constraints.md ('v', 'w'): New.
4820         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
4821         Remove.
4822         (i2f, I2F): New define_mode_attr.
4823         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
4824         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
4825         fixuns_truncv4sfv4si2):  Update to use mode attribute.
4826         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
4827         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
4828         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
4829         patterns for combine.
4830
4831 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
4832
4833         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
4834         (cprop, hoist, pre, store_motion): New debug counters.
4835         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
4836         is not an RTL pass anymore.
4837         (pass_profiling): Remove extern decl for pass removed in 2005.
4838         (pass_gcse, pass_jump_bypass): Remove.
4839         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
4840         to 0 for clean state.
4841         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
4842         * cse.c (gate_handle_cse_after_global_opts,
4843         rest_of_handle_cse_after_global_opts): New functions.
4844         (pass_cse_after_global_opts): New pass, does local CSE.
4845         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
4846         (TV_CPROP): New timevar.
4847         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
4848         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
4849         (gcse_main, recompute_all_luids): Remove.
4850         (compute_hash_table_work): Call max_reg_num instead of reading
4851         max_gcse_regno.
4852         (cprop_jump): Don't set run_jump_opt_after_gcse.
4853         (constprop_register): Always allow to alter jumps.
4854         (cprop_insn): Likewise.
4855         (do_local_cprop): Likewise.
4856         (local_cprop_pass): Likewise.  Return non-zero if something changed.
4857         (cprop): Remove function, fold interesting bits into one_cprop_pass.
4858         (find_implicit_sets): Add note about missed optimization opportunity.
4859         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
4860         pass_rtl_cprop execute function.
4861         Don't bother tracking the pass number, each pass gets its own dumpfile
4862         now anyway.
4863         Always allow to alter jumpsand bypass jumps.
4864         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
4865         will just find no suitable set.
4866         (pre_edge_insert): Fix dumping, this function is for PRE only.
4867         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
4868         pass_rtl_pre execute function.
4869         (hoist_code): Return non-zero if something changed.  Keep track of
4870         substitutions and insertions for statistics gathering similar to PRE.
4871         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
4872         called from the pass_rtl_hoist execute function.  Show pass statistics.
4873         (compute_store_table): Use max_reg_num directly instead of using the
4874         formerly global max_gcse_regno.
4875         (build_store_vectors): Likewise.
4876         (replace_store_insn): Fix dumping.
4877         (store_motion): Rename to ...
4878         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
4879         pass, called from the pass_rtl_store_motion execute function.  Keep
4880         track of substitutions and insertions for statistics gathering similar
4881         to PRE.
4882         (bypass_jumps): Remove, fold interesting bits into ...
4883         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
4884         from the pass_rtl_cprop execute function.
4885         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
4886         pass_jump_bypass): Remove.
4887         (gate_handle_gcse, rest_of_handle_gcse): Remove.
4888         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
4889         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
4890         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
4891         (gate_rtl_store_motion, execute_rtl_store_motion,
4892         pass_rtl_store_motion): New.
4893         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
4894         make it clear that -fcse-skip-blocks is a no-op for backward compat.
4895         * passes.c (init_optimization_passes): Remove pass_gcse and
4896         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
4897         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
4898         instead of pass_jump_bypass.
4899
4900 2009-04-27  Richard Guenther  <rguenther@suse.de>
4901
4902         PR middle-end/39928
4903         * gimplify.c (gimplify_expr): If we are required to create
4904         a temporary make sure it ends up as register.
4905
4906 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
4907
4908         PR target/39903
4909         * config/i386/i386.c (construct_container): Don't call
4910         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
4911         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
4912
4913 2009-04-27  Michael Matz  <matz@suse.de>
4914
4915         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
4916         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
4917         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
4918         (dump_replaceable_exprs): Take a bitmap.
4919         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
4920         array.
4921         (expand_gimple_basic_block): Likewise.
4922         * tree-ssa-ter.c (struct temp_expr_table_d): Make
4923         replaceable_expressions member a bitmap.
4924         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
4925         (mark_replaceable): Likewise.
4926         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
4927         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
4928
4929 2009-04-27  Richard Guenther  <rguenther@suse.de>
4930
4931         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
4932         (verify_stmts): Dispatch to gimple/type verification code.
4933         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
4934         issue with call argument types.
4935
4936 2009-04-27  Michael Matz  <matz@suse.de>
4937
4938         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
4939         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
4940         to above.
4941
4942 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
4943             Eric Botcazou  <ebotcazou@adacore.com>
4944
4945         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
4946         a label's basic block.
4947         (mark_target_live_regs): Tidy and rework obsolete comments.
4948         Change back DF problem to LIVE.  If a label starts a basic block,
4949         assume that all registers that used to be live then still are.
4950         (init_resource_info): If a label starts a basic block, set its
4951         BLOCK_FOR_INSN accordingly.
4952         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
4953
4954 2009-04-27  Richard Guenther  <rguenther@suse.de>
4955
4956         * tree-flow-inline.h (function_ann): Remove.
4957         (get_function_ann): Likewise.
4958         * tree-dfa.c (create_function_ann): Remove.
4959         * tree-flow.h (struct static_var_ann_d): Remove.
4960         (struct function_ann_d): Likewise.
4961         (union tree_ann_d): Remove fdecl member.
4962         (function_ann_t): Remove.
4963         (function_ann, get_function_ann, create_function_ann): Remove
4964         declarations.
4965
4966 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
4967
4968         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
4969
4970 2009-04-27  Jan Hubicka  <jh@suse.cz>
4971
4972         * ipa-pure-const.c (struct funct_state_d): New fields
4973         state_previously_known, looping_previously_known; remove
4974         state_set_in_source.
4975         (analyze_function): Use new fields.
4976         (propagate): Avoid assumption that state_set_in_source imply
4977         nonlooping.
4978
4979         * tree-ssa-loop-niter.c (finite_loop_p): New function.
4980         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
4981         * cfgloop.h (finite_loop_p): Declare.
4982
4983 2009-04-26  Michael Matz  <matz@suse.de>
4984
4985         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
4986
4987 2009-04-26  Michael Matz  <matz@suse.de>
4988
4989         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
4990         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
4991         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
4992         pass_mark_used_blocks): Remove.
4993         * tree-optimize.c (pass_free_datastructures,
4994         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
4995         * passes.c (init_optimization_passes): Don't call
4996         pass_mark_used_blocks, remove dead code.
4997
4998 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
4999
5000         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
5001         * tree-ssa-live.h (register_ssa_partition): Likewise.
5002
5003 2009-04-26  Michael Matz  <matz@suse.de>
5004
5005         Expand from SSA.
5006         * builtins.c (fold_builtin_next_arg): Handle SSA names.
5007         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
5008         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
5009         SSA names. 
5010         (compare_pairs): Swap cost comparison.
5011         (coalesce_ssa_name): Don't use change_partition_var.
5012         * tree-nrv.c (struct nrv_data): Add modified member.
5013         (finalize_nrv_r): Set it.
5014         (tree_nrv): Use it to update statements.
5015         (pass_nrv): Require PROP_ssa.
5016         * tree-mudflap.c (mf_decl_cache_locals,
5017         mf_build_check_statement_for): Use make_rename_temp.
5018         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
5019         * alias.c (find_base_decl): Handle SSA names.
5020         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
5021         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
5022         * rtl.h (set_reg_attrs_for_parm): Declare.
5023         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
5024         to "optimized", remove unused locals at finish.
5025         (execute_free_datastructures): Make global, call
5026         delete_tree_cfg_annotations.
5027         (execute_free_cfg_annotations): Don't call
5028         delete_tree_cfg_annotations.
5029
5030         * ssaexpand.h: New file.
5031         * expr.c (toplevel): Include ssaexpand.h.
5032         (expand_assignment): Handle SSA names the same as register variables.
5033         (expand_expr_real_1): Expand SSA names.
5034         * cfgexpand.c (toplevel): Include ssaexpand.h.
5035         (SA): New global variable.
5036         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
5037         (SSAVAR): New macro.
5038         (set_rtl): New helper function.
5039         (add_stack_var): Deal with SSA names, use set_rtl.
5040         (expand_one_stack_var_at): Likewise.
5041         (expand_one_stack_var): Deal with SSA names.
5042         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
5043         before unique numbers.
5044         (expand_stack_vars): Use set_rtl.
5045         (expand_one_var): Accept SSA names, add asserts for them, feed them
5046         to above subroutines.
5047         (expand_used_vars): Expand all partitions (without default defs),
5048         then only the local decls (ignoring those expanded already).
5049         (expand_gimple_cond): Remove edges when jumpif() expands an
5050         unconditional jump.
5051         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
5052         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
5053         SSA name.
5054         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
5055         members of SA; deal with PARM_DECL partitions here; expand
5056         all PHI nodes, free tree datastructures and SA.  Commit instructions
5057         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
5058         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
5059         info and statements at start, collect garbage at finish.
5060         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
5061         (VAR_ANN_PARTITION) Remove.
5062         (change_partition_var): Don't declare.
5063         (partition_to_var): Always return SSA names.
5064         (var_to_partition): Only accept SSA names.
5065         (register_ssa_partition): Only check argument.
5066         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
5067         member.
5068         (delete_var_map): Don't free it.
5069         (var_union): Only accept SSA names, simplify.
5070         (partition_view_init): Mark only useful SSA names as used.
5071         (partition_view_fini): Only deal with SSA names.
5072         (change_partition_var): Remove.
5073         (dump_var_map): Use ssa_name instead of partition_to_var member.
5074         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
5075         basic blocks.
5076         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
5077         (struct _elim_graph): New member const_dests; nodes member vector of
5078         ints.
5079         (set_location_for_edge): New static helper.
5080         (create_temp): Remove.
5081         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
5082         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
5083         (new_elim_graph): Allocate const_dests member.
5084         (clean_elim_graph): Truncate const_dests member.
5085         (delete_elim_graph): Free const_dests member.
5086         (elim_graph_size): Adapt to new type of nodes member.
5087         (elim_graph_add_node): Likewise.
5088         (eliminate_name): Likewise.
5089         (eliminate_build): Don't take basic block argument, deal only with
5090         partition numbers, not variables.
5091         (get_temp_reg): New static helper.
5092         (elim_create): Use it, deal with RTL temporaries instead of trees.
5093         (eliminate_phi): Adjust all calls to new signature.
5094         (assign_vars, replace_use_variable, replace_def_variable): Remove.
5095         (rewrite_trees): Only do checking.
5096         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
5097         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
5098         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
5099         contains_tree_r, MAX_STMTS_IN_LATCH,
5100         process_single_block_loop_latch, analyze_edges_for_bb,
5101         perform_edge_inserts): Remove.
5102         (expand_phi_nodes): New global function.
5103         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
5104         functions, initialize new parameter, remember partitions having a
5105         default def.
5106         (finish_out_of_ssa): New global function.
5107         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
5108         don't reset in_ssa_p here, don't disable TER when mudflap.
5109         (pass_del_ssa): Remove.
5110         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
5111         partition members.
5112         (execute_free_datastructures): Declare.
5113         * Makefile.in (SSAEXPAND_H): New variable.
5114         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
5115         * basic-block.h (commit_one_edge_insertion): Declare.
5116         * passes.c (init_optimization_passes): Move pass_nrv and
5117         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
5118         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
5119         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
5120         (redirect_branch_edge): Deal with super block when expanding, split
5121         out jump patching itself into ...
5122         (patch_jump_insn): ... here, new static helper.
5123
5124 2009-04-26  Michael Matz  <matz@suse.de>
5125
5126         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
5127         beyond num_ssa_names.
5128         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
5129         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
5130
5131 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5132
5133         PR inline-asm/39543
5134         * fwprop.c (forward_propagate_asm): New function.
5135         (forward_propagate_and_simplify): Propagate also into __asm, if it
5136         doesn't increase the number of referenced registers.
5137
5138         PR c/39889
5139         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
5140
5141 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
5142
5143         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
5144         note_nonlocal_vla_type for nonlocal VLAs.
5145         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
5146         contains_remapped_vars, remap_vla_decls): New functions.
5147         (convert_nonlocal_reference_stmt): If not optimizing, call
5148         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
5149         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
5150         if it wasn't found in var_map.
5151         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
5152         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
5153         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
5154         declare_vars.
5155         * gimplify.c (nonlocal_vlas): New variable.
5156         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
5157         referenced VLAs.
5158         (gimplify_body): Create and destroy nonlocal_vlas.
5159
5160         * dwarf2out.c (loc_descr_plus_const): New function.
5161         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
5162         mem_loc_descriptor, loc_descriptor_from_tree_1,
5163         descr_info_loc, gen_variable_die): Use it.
5164
5165         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
5166         !TREE_STATIC VAR_DECLs.
5167         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
5168         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
5169         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
5170         DECL_BY_REFERENCE is valid.
5171         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
5172         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
5173         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
5174         Copy DECL_BY_REFERENCE.
5175         (struct nesting_copy_body_data): New type.
5176         (nesting_copy_decl): New function.
5177         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
5178         if they have variable length.
5179
5180 2009-04-26  Michael Matz  <matz@suse.de>
5181
5182         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
5183         mark new temporaries for renaming.
5184
5185 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5186
5187         PR c/39581
5188         * c-decl.c (global_bindings_p): Return negative value.
5189         (c_variable_size): New.  Based on variable_size from
5190         stor-layout.c.
5191         (grokdeclarator): Call c_variable_size not variable_size.
5192
5193 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
5194
5195         * config/i386/i386.c (print_operand) ['z']: Fix typo.
5196
5197 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
5198
5199         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
5200         Redefine it to just use mingw/include.
5201         (ASM_SPEC): Rules for -m32 and -m64.
5202         (LINK_SPEC): Use Likewise.
5203         (SPEC_32): New define.
5204         (SPEC_64): Likewise.
5205         (SUB_LINK_SPEC): Likewise.
5206         (MULTILIB_DEFAULTS): New define.
5207         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
5208         Add multilib options.
5209         (MULTILIB_DIRNAMES): Likewise.
5210         (MULTILIB_OSDIRNAMES): Likewise.
5211         (LIBGCC): Likewise.
5212         (INSTALL_LIBGCC): Likewise.
5213
5214 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
5215
5216         PR c/39556
5217         * c-tree.h (enum c_inline_static_type): New.
5218         (record_inline_static): Declare.
5219         * c-decl.c (struct c_inline_static, c_inline_statics,
5220         record_inline_static, check_inline_statics): New.
5221         (pop_file_scope): Call check_inline_statics.
5222         (start_decl): Call record_inline_static instead of pedwarning
5223         directly for static in inline function.
5224         * c-typeck.c (build_external_ref): Call record_inline_static
5225         instead of pedwarning directly for static referenced in inline
5226         function.
5227
5228 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
5229
5230         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
5231         not new but only being rescanned.
5232         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
5233         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
5234         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
5235         record_set_info, compute_set, grealloc): Remove.
5236         (recompute_all_luids): New function.
5237         (gcse_main): Don't compute sets, and don't do related memory
5238         allocations/free-ing.  If something changed before the end of the
5239         pass, update LUIDs using recompute_all_luids.
5240         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
5241         (free_gcse_mem): Don't free it either.
5242         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
5243         Use the df insn LUIDs.
5244         (load_killed_in_block): Likewise.
5245         (compute_hash_table_work): Don't compute reg_set_in_block.
5246         (compute_transp): Use DF_REG_DEF_CHAINs.
5247         (local_cprop_pass): Don't use compute_sets and related functions.
5248         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
5249         Use get_max_uid() instead of max_cuid.
5250         (insert_insn_end_basic_block, pre_insert_copy_insn,
5251         update_ld_motion_stores): Don't try to
5252         keep reg_set tables up to date.
5253         (pre_insert_copies): Use df insn LUIDs.
5254         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
5255         (reg_set_info): Don't use extra bitmap argument.
5256         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
5257         information to compute regs_set_in_block.
5258         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
5259         (bypass_jumps): Don't use compute_sets and friends.
5260
5261 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5262
5263         PR testsuite/39710
5264         * opts.c (undocumented_msg): Do not leave blank even with
5265         ENABLE_CHECKING.
5266
5267 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5268
5269         * c-decl.c (build_enumerator): Allow values folding to integer
5270         constants but not integer constant expressions with a pedwarn if
5271         pedantic.
5272
5273 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5274
5275         PR c/39582
5276         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
5277         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
5278         type is an integer constant.
5279
5280 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5281
5282         PR target/39897
5283         * config/i386/i386.c (print_operand) ['z']: Revert handling of
5284         HImode operands.
5285
5286 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
5287
5288         PR c/39564
5289         * c-decl.c (grokdeclarator): Diagnose declarations of functions
5290         with variably modified return type and no storage class
5291         specifiers, except for the case of nested functions.  Distinguish
5292         extern declarations of functions with variably modified return
5293         types from those of objects with variably modified types.
5294
5295 2009-04-25  Jan Hubicka  <jh@suse.cz>
5296
5297         * tree.c (list_equal_p): New function.
5298         * tree.h (list_equal_p): Declare.
5299         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5300         basic_block_def, basic_block, const_basic_block): New.
5301         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
5302         (redirect_eh_edge): New function.
5303         (make_eh_edge_update_phi): EH edges are not abnormal.
5304         * except.c: Include tree-flow.h.
5305         (list_match): New function.
5306         (eh_region_replaceable_by_p): New function.
5307         (replace_region): New function.
5308         (hash_type_list): New function.
5309         (hash_eh_region): New function.
5310         (eh_regions_equal_p): New function.
5311         (merge_peers): New function.
5312         (remove_unreachable_regions): Verify EH tree when checking;
5313         merge peers.
5314         (copy_eh_region_1): New function.
5315         (copy_eh_region): New function.
5316         (push_reachable_handler): New function.
5317         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
5318         regions without label but with live RESX.
5319         * except.h (redirect_eh_edge_to_label): New.
5320         * tree-flow.h (redirect_eh_edge): New.
5321         * coretypes.h (edge_def, edge, const_edge, basic_block_def
5322         basic_block_def, basic_block, const_basic_block): Remove.
5323         * Makefile.in (except.o): Add dependency on tree-flow.h
5324         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
5325         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
5326         Remove.
5327
5328 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
5329
5330         PR bootstrap/39645
5331         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
5332         on the destination of memcpy.
5333
5334 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
5335
5336         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
5337         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
5338         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
5339
5340 2009-04-25  Jan Hubicka  <jh@suse.cz>
5341
5342         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
5343         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
5344         to be reached by different label than left.
5345         (update_eh_edges): Update comment; remove edge_to_remove if possible
5346         and return true if suceeded.
5347         (cleanup_empty_eh): Accept sharing map; handle shared regions.
5348         (cleanup_eh): Compute sharing map.
5349         * except.c (remove_eh_handler_and_replace): Add argument if we should
5350         update regions.
5351         (remove_unreachable_regions): Update for label sharing.
5352         (label_to_region_map): Likewise.
5353         (get_next_region_sharing_label): New function.
5354         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
5355         prev_try pointers.
5356         (remove_eh_handler): Update.
5357         (remove_eh_region_and_replace_by_outer_of): New function.
5358         * except.h (struct eh_region): Add next_region_sharing_label.
5359         (remove_eh_region_and_replace_by_outer_of,
5360         get_next_region_sharing_label): Declare.
5361         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
5362
5363 2009-04-25  Jan Hubicka  <jh@suse.cz>
5364
5365         * tree-cfg.c (split_critical_edges): Split also edges where we can't
5366         insert code even if they are not critical.
5367
5368 2009-04-25  Jan Hubicka  <jh@suse.cz>
5369
5370         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5371         (gimple_can_remove_branch_p): EH edges won't remove branch by
5372         redirection.
5373         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
5374         updating of non-abnormal EH edges.
5375         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
5376         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
5377         (split_critical_edges): Split also edges where emitting code on them
5378         will lead to splitting later.
5379
5380 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
5381             H.J. Lu  <hongjiu.lu@intel.com>
5382
5383         PR target/39590
5384         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
5385         the configured assembler supports fildq and fistpq mnemonics.
5386         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
5387         * configure: Regenerated.
5388         * config.in: Ditto.
5389
5390         * config/i386/i386.c (print_operand): Handle 'Z'.
5391         ['z']: Remove handling of special fild/fist suffixes.
5392         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
5393         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
5394         suffix of fild insn.
5395         (*floatsi<mode>2_vector_mixed): Ditto.
5396         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
5397         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
5398         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
5399         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
5400         * config/i386/gas.h (GAS_MNEMONICS): Remove.
5401
5402 2009-04-25  Ben Elliston  <bje@au.ibm.com>
5403  
5404         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
5405         the source of a set operation.
5406
5407 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
5408
5409         * target.h (struct gcc_target): Add case_values_threshold field.
5410         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
5411         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
5412         * targhooks.c (default_case_values_threshold): New function.
5413         * targhooks.h (default_case_values_threshold): Declare function.
5414         * stmt.c (expand_case): Use case_values_threshold target hook.
5415         * expr.h (case_values_threshold): Remove declartation.
5416         * expr.c (case_values_threshold): Remove function.
5417         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
5418
5419         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
5420         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5421         (avr_case_values_threshold): Declare as static.
5422         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
5423
5424         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
5425         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
5426         (mn10300_case_values_threshold): New function.
5427
5428 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5429
5430         * ira.c (setup_cover_and_important_classes): Add enum cast.
5431
5432 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
5433
5434         * genpreds.c (write_enum_constraint_num): Output definition of
5435         CONSTRAINT_NUM_DEFINED_P macro.
5436         * ira.c (setup_cover_and_important_classes): Use
5437         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
5438         
5439 2009-04-24  DJ Delorie  <dj@redhat.com>
5440
5441         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
5442         __SH2A_SINGLE_ONLY__ also.
5443
5444 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
5445
5446         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
5447         (movdf_internal): Ditto.
5448         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
5449         SFmode and DFmode constants.
5450         (ia64_print_operand): Add 'G' format for printing
5451         floating point constants.
5452
5453 2009-04-24  Richard Guenther  <rguenther@suse.de>
5454
5455         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
5456         from unsigned additions.
5457
5458 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
5459
5460         * c-typeck.c (set_init_index): Allow array designators that are
5461         not integer constant expressions with a pedwarn if pedantic.
5462
5463 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5464
5465         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
5466         zero if no overlap in nonzero bits between the operands.
5467
5468 2009-04-24  Ian Lance Taylor  <iant@google.com>
5469
5470         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
5471         (record_dead_and_set_regs): Likewise.
5472         * df.h (struct df_mw_hardreg): Change flags field to int.
5473         (struct df_base_ref): Likewise.
5474         (struct df): Change changeable_flags field to int.
5475         * df-scan.c (df_defs_record): Change clobber_flags to int.
5476         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
5477         constants rather than #define macros.
5478         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
5479         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
5480         (enum dwarf_calling_convention): Likewise.
5481         (enum dwarf_line_number_x_ops): Likewise.
5482         (enum dwarf_call_frame_info): Likewise.
5483         (enum dwarf_source_language): Likewise.
5484         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
5485         (add_calling_convention_attribute): Likewise.
5486         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
5487         (combine_comparisons): Change compcode to int.  Add cast to enum type.
5488         * genrecog.c (maybe_both_true_2): Change c to int.
5489         (write_switch): Likewise.  Add cast to enum type.
5490         * gimplify.c (gimplify_omp_for): Handle return values from
5491         gimplify_expr using MIN rather than bitwise or.
5492         (gimplify_expr): Add cast to enum type.
5493         * ipa-prop.c (update_jump_functions_after_inlining): Change
5494         IPA_BOTTOM to IPA_JF_UNKNOWN.
5495         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
5496         Add casts to enum type.
5497         (setup_cover_and_important_classes): Change cl to int.  Add casts
5498         to enum type.
5499         (setup_class_translate): Change cl and mode to int.
5500         (ira_init_once): Change mode to int.
5501         (free_register_move_costs): Likewise.
5502         (setup_prohibited_mode_move_regs): Add casts to enum type.
5503         * langhooks.c (add_builtin_function_common): Rework assertion that
5504         value fits bitfield.
5505         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
5506         * omega.c (omega_do_elimination): Avoid math on enum types.
5507         * optabs.c (expand_vec_shift_expr): Remove casts to int.
5508         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
5509         int local to handle integral_argment value.
5510         * regmove.c (try_auto_increment): Change PUT_MODE to
5511         PUT_REG_NOTE_KIND.
5512         * reload.c (push_secondary_reload): Add casts to enum type.
5513         (secondary_reload_class, find_valid_class): Likewise.
5514         * reload1.c (emit_input_reload_insns): Likewise.
5515         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
5516         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
5517         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
5518         constant.
5519         * tree.c (build_common_builtin_nodes): Add casts to enum type.
5520         * tree-complex.c (complex_lattice_t): Typedef to int rather than
5521         enum type.
5522         (expand_complex_libcall): Add casts to enum type.
5523         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
5524         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
5525         with ERROR_MARK, not NUM_TREE_CODES.
5526         (vect_create_epilog_for_reduction): Likewise.
5527         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
5528         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
5529         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
5530         enum machine_mode.
5531         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
5532         vect_unused_in_loop.  Change 0 to loop_vect.
5533         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
5534         * var-tracking.c (get_init_value): Change return type to enum
5535         var_init_status.
5536         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
5537         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
5538         arm_fp_model.
5539         (arm_override_options): Add casts to enum type.
5540         (arm_emit_tls_decoration): Likewise.
5541         * config/i386/i386.c (ix86_function_specific_restore): Add casts
5542         to enum type.
5543         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
5544         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
5545         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
5546         enum type.
5547         * config/s390/s390.c (code_for_builtin_64): Change to array of
5548         enum insn_code.
5549         (code_for_builtin_31): Likewise.
5550         (s390_expand_builtin): Change code_for_builtin to enum insn_code
5551         const *.
5552         * config/sparc/sparc.c (sparc_override_options): Change value
5553         field in struct code_model to enum cmodel.  In initializer change
5554         0 to NULL and add cast to enum type.
5555
5556         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
5557         Change all callers.  Issue a -Wc++-compat warning using
5558         lhs_origtype if necessary.
5559         (convert_for_assignment): Issue -Wc++-compat warnings about
5560         invalid conversions to enum type on assignment.
5561         * c-common.h (build_modify_expr): Update declaration.
5562
5563 2009-04-24  Nick Clifton  <nickc@redhat.com>
5564
5565         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
5566         (function_arg_advance): Likewise.
5567         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
5568         5th alternative.
5569
5570 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5571
5572         * config/s390/constraints.md ('I', 'J'): Fix condition.
5573
5574 2009-04-24  Diego Novillo  <dnovillo@google.com>
5575
5576         * gengtype-parse.c (parse_error): Add newline after message.
5577
5578 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
5579
5580         * config/i386/sse.md (avxmodesuffixs): Removed.
5581         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
5582         (*avx_pinsr<ssevecsize>): This.
5583
5584 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
5585
5586         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
5587         follow chains of regs with a single definition, and allow expressions
5588         that are function_invariant_p.
5589         (simple_rhs_p): Allow expressions that are function_invariant_p.
5590
5591 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
5592
5593         PR middle-end/39867
5594         * fold-const.c (fold_cond_expr_with_comparison): When folding
5595         > and >= to MAX, make sure the MAX uses the same type as the
5596         comparison's operands.
5597
5598 2009-04-24  Nick Clifton  <nickc@redhat.com>
5599
5600         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
5601         addressing for DImode accesses.
5602         (frv_print_operand_address): Handle PLUS case.
5603         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
5604
5605 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
5606
5607         PR rtl-optimization/39794
5608         * alias.c (canon_true_dependence): Add x_addr argument.
5609         * rtl.h (canon_true_dependence): Adjust prototype.
5610         * cse.c (check_dependence): Adjust canon_true_dependence callers.
5611         * cselib.c (cselib_invalidate_mem): Likewise.
5612         * gcse.c (compute_transp): Likewise.
5613         * dse.c (scan_reads_nospill): Likewise.
5614         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
5615         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
5616         canon_base_addr of the group, plus optional offset.
5617         (struct group_info): Rename canon_base_mem to
5618         canon_base_addr.
5619         (get_group_info): Set canon_base_addr to canon_rtx of base, not
5620         canon_rtx of base_mem.
5621
5622 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
5623
5624         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
5625         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
5626
5627 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5628
5629         * config/spu/spu-builtins.h: Delete file.
5630
5631         * config/spu/spu.h (enum spu_builtin_type): Move here from
5632         spu-builtins.h.
5633         (struct spu_builtin_description): Likewise.  Add GTY marker.
5634         Do not use enum spu_function_code or enum insn_code.
5635         (spu_builtins): Add extern declaration.
5636
5637         * config/spu/spu.c: Do not include "spu-builtins.h".
5638         (enum spu_function_code, enum spu_builtin_type_index,
5639         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
5640         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
5641         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
5642         unsigned_V2DI_type_node): Move here from spu-builtins.h.
5643         (spu_builtin_types): Make static.  Add GTY marker.
5644         (spu_builtins): Add extern declaration with GTY marker.
5645         Include "gt-spu.h".
5646
5647         * config/spu/spu-c.c: Do not include "spu-builtins.h".
5648         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
5649         Check programmatically whether all parameters are scalar.
5650
5651         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
5652
5653 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
5654
5655         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
5656         assignment from the constructor either if the target is volatile.
5657
5658 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
5659
5660         * config/arm/arm.md (insv): Do not share operands[0].
5661
5662 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
5663
5664         * config/vxlib-tls.c (active_tls_threads): Delete.
5665         (delete_hook_installed): New.
5666         (tls_delete_hook): Don't delete the delete hook.
5667         (tls_destructor): Delete it here.
5668         (__gthread_set_specific): Adjust installing the delete hook.
5669         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
5670         __gthread_leave_tsd_dtor_context.
5671
5672 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
5673
5674         * c-format.c (gcc_tdiag_char_table): Add support for %E.
5675
5676 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
5677
5678         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
5679         enum type.
5680         (alpha_rtx_costs): Ditto.
5681         (emit_unlikely_jump): Use add_reg_note.
5682         (emit_frame_store_1): Ditto.
5683         (alpha_expand_prologue): Ditto.
5684         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5685         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
5686
5687 2009-04-23  Nick Clifton  <nickc@redhat.com>
5688
5689         * config/v850/v850.md (epilogue): Remove suppressed code.
5690         (return): Rename to return_simple and remove test of frame size.
5691         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
5692         to gen_return_simple.
5693
5694 2009-04-22  Jing Yu  <jingyu@google.com>
5695
5696         PR testsuite/39781
5697         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
5698
5699 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5700
5701         PR C/31499
5702         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
5703         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
5704         value is a VECTOR_CST, the element type is the element type of the
5705         vector.
5706
5707 2009-04-22  DJ Delorie  <dj@redhat.com>
5708
5709         * config/m32c/m32c.h: Update GTY annotations to new syntax.
5710
5711 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
5712
5713         * alias.c (find_base_term): Move around LO_SUM case, so that
5714         CONST falls through into PLUS/MINUS handling.
5715
5716         PR c/39855
5717         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
5718         into 0, use omit_one_operand.
5719
5720 2009-04-23  Ben Elliston  <bje@au.ibm.com>
5721
5722         * config/rs6000/linux-unwind.h (get_regs): Remove type
5723         puns. Change the type of `pc' to an array of unsigned ints and
5724         update all users.  Constify frame24.
5725
5726 2009-04-22  DJ Delorie  <dj@redhat.com>
5727
5728         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
5729         declarations before code.
5730         (current_function_special_page_vector): Likewise.
5731         (m32c_expand_insv): Silence a warning.
5732
5733 2009-04-21  Taras Glek  <tglek@mozilla.com>
5734
5735         * alias.c: Update GTY annotations to new syntax.
5736         * basic-block.h: Likewise.
5737         * bitmap.h: Likewise.
5738         * c-common.h: Likewise.
5739         * c-decl.c: Likewise.
5740         * c-parser.c: Likewise.
5741         * c-pragma.c: Likewise.
5742         * c-tree.h: Likewise.
5743         * cfgloop.h: Likewise.
5744         * cgraph.h: Likewise.
5745         * config/alpha/alpha.c: Likewise.
5746         * config/arm/arm.h: Likewise.
5747         * config/avr/avr.h: Likewise.
5748         * config/bfin/bfin.c: Likewise.
5749         * config/cris/cris.c: Likewise.
5750         * config/darwin.c: Likewise.
5751         * config/frv/frv.c: Likewise.
5752         * config/i386/i386.c: Likewise.
5753         * config/i386/i386.h: Likewise.
5754         * config/i386/winnt.c: Likewise.
5755         * config/ia64/ia64.h: Likewise.
5756         * config/iq2000/iq2000.c: Likewise.
5757         * config/mips/mips.c: Likewise.
5758         * config/mmix/mmix.h: Likewise.
5759         * config/pa/pa.c: Likewise.
5760         * config/pa/pa.h: Likewise.
5761         * config/rs6000/rs6000.c: Likewise.
5762         * config/s390/s390.c: Likewise.
5763         * config/sparc/sparc.c: Likewise.
5764         * config/xtensa/xtensa.c: Likewise.
5765         * cselib.h: Likewise.
5766         * dbxout.c: Likewise.
5767         * dwarf2out.c: Likewise.
5768         * except.c: Likewise.
5769         * except.h: Likewise.
5770         * fixed-value.h: Likewise.
5771         * function.c: Likewise.
5772         * function.h: Likewise.
5773         * gimple.h: Likewise.
5774         * integrate.c: Likewise.
5775         * optabs.c: Likewise.
5776         * output.h: Likewise.
5777         * real.h: Likewise.
5778         * rtl.h: Likewise.
5779         * stringpool.c: Likewise.
5780         * tree-data-ref.c: Likewise.
5781         * tree-flow.h: Likewise.
5782         * tree-scalar-evolution.c: Likewise.
5783         * tree-ssa-address.c: Likewise.
5784         * tree-ssa-alias.h: Likewise.
5785         * tree-ssa-operands.h: Likewise.
5786         * tree.c: Likewise.
5787         * tree.h: Likewise.
5788         * varasm.c: Likewise.
5789         * varray.h: Likewise.
5790         * vec.h: Likewise.
5791         * coretypes.h: Do not define GTY macro if it is already defined.
5792         * doc/gty.texi: Update GTY documentation to new syntax.
5793         * gengtype-lex.l: Enforce attribute-like syntax for GTY
5794         annotations on structs.
5795         * gengtype-parse.c: Likewise.
5796
5797 2009-04-22  Mark Heffernan  <meheff@google.com>
5798
5799         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
5800
5801 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
5802
5803         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
5804         where appropriate.
5805
5806 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
5807
5808         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
5809         the same as a PLUS without a shift.  Increase the cost of a
5810         CONST_INT in MULT.
5811
5812 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5813
5814         * Makefile.in: Update dependencies.
5815         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
5816         * errors.h: Remove bogus comment about compatibility.
5817         (warning): Update declaration.
5818         * genautomata.c: Update all calls to warning.
5819         * gimple.c: Do not include errors.h. Include toplev.h.
5820         * tree-ssa-structalias.c: Do not include errors.h.
5821         * omega.c: Likewise.
5822         * tree-ssa-reassoc.c: Likewise.
5823         * config/spu/spu-c.c: Likewise.
5824         * config/spu/t-spu-elf: Update dependencies.
5825
5826 2009-04-22  Richard Guenther  <rguenther@suse.de>
5827
5828         PR tree-optimization/39824
5829         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
5830         make sure the types are compatible.
5831
5832 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5833
5834         PR c++/14875
5835         * c-common.c (c_parse_error): Take a token_flags parameter.
5836         Use token_type for the token type instead.
5837         Pass token_flags to cpp_type2name.
5838         * c-common.h (c_parse_error): Update declaration.
5839         * c-parser.c (c_parser_error): Pass 0 as token flags.
5840
5841 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
5842
5843         PR rtl-optimization/39580
5844         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
5845         
5846 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5847
5848         * function.c (expand_function_end): Do not emit a jump to the "naked"
5849         return label for fall-through returns.
5850         * except.c (sjlj_emit_function_exit): Always place the call to the
5851         unregister function at the location installed by expand_function_end.
5852
5853 2009-04-22  Richard Guenther  <rguenther@suse.de>
5854
5855         PR tree-optimization/39845
5856         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
5857         (gen_inbound_check): Likewise.
5858
5859 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
5860
5861         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
5862         padding for PPC.
5863         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
5864         * config/vxlib.c (__gthread_once): Add race guard for PPC.
5865
5866 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5867
5868         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
5869         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
5870         shift counts to avoid out-of-bounds array accesses.
5871
5872 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5873
5874         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
5875         (Pmode): Move above.
5876
5877 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
5878
5879         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
5880         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
5881         GET_CODE macro.  Use IN_RANGE macro where appropriate.
5882         * config/alpha/alpha.h: Ditto.
5883         * config/alpha/alpha.md: Ditto.
5884         * config/alpha/constraints.md: Ditto.
5885         * config/alpha/predicates.md: Ditto.
5886         
5887 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
5888
5889         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
5890         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5891         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5892         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5893         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5894         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5895         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5896         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5897         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5898         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5899         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5900         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5901         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5902         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5903         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5904         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5905         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5906         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5907         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5908         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5909         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5910         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5911         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5912         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5913         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5914         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5915         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
5916
5917 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5918
5919         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
5920         references from comments.
5921         * cfgbuild.c: (count_basic_blocks): Delete.
5922         (find_basic_blocks_1): Delete.
5923         (find_basic_blocks): Delete.
5924         * except.c (finish_eh_generation): Make static.  Move comment from
5925         except.h here.  Remove find_basic_blocks references from comments.
5926         * except.h (finish_eh_generation): Delete.
5927         * basic-block.h (find_basic_blocks): Delete.
5928         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
5929
5930 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
5931
5932         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
5933         (sdbout_parms):  Likewise.
5934
5935 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
5936
5937         * config/sh/sh.c (prepare_cbranch_operands): Use
5938         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
5939         (expand_cbranchdi4): Likewise.
5940         (from_compare): Add cast to enum type.
5941         (expand_cbranchsi4): Use add_reg_note.
5942         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
5943         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
5944         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
5945         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
5946         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
5947         instead of CODE_FOR_nothing.
5948         (cbranchdi4): Likewise.  Fix the order of arguments for
5949         gen_rtx_fmt_ee.
5950         (push_fpscr): Use add_reg_note.
5951         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
5952         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
5953         
5954 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
5955
5956         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
5957         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
5958         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
5959         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
5960         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
5961         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
5962         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
5963         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
5964         config/alpha/x-vms, config/arc/t-arc,
5965         config/arm/README-interworking, config/arm/arm-c.c,
5966         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
5967         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
5968         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
5969         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
5970         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
5971         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
5972         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
5973         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
5974         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
5975         config/cris/t-elfmulti, config/crx/t-crx,
5976         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
5977         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
5978         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
5979         config/h8300/t-h8300, config/i386/athlon.md,
5980         config/i386/darwin-libgcc.10.4.ver,
5981         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
5982         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
5983         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
5984         config/i386/t-linux64, config/i386/t-nwld,
5985         config/i386/t-rtems-i386, config/i386/t-sol2-10,
5986         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
5987         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
5988         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
5989         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
5990         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
5991         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
5992         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
5993         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
5994         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
5995         config/m68k/t-uclinux, config/mcore/t-mcore,
5996         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
5997         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
5998         config/mips/crtn.asm, config/mips/irix-crti.asm,
5999         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
6000         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
6001         config/mips/mips-fixed.md, config/mips/sb1.md,
6002         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
6003         config/mips/t-iris6, config/mips/t-isa3264,
6004         config/mips/t-libgcc-mips16, config/mips/t-linux64,
6005         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
6006         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
6007         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
6008         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
6009         config/mn10300/t-linux, config/mn10300/t-mn10300,
6010         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
6011         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
6012         config/picochip/libgccExtras/clzsi2.asm,
6013         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
6014         config/rs6000/darwin-libgcc.10.4.ver,
6015         config/rs6000/darwin-libgcc.10.5.ver,
6016         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
6017         config/rs6000/t-aix43, config/rs6000/t-aix52,
6018         config/rs6000/t-darwin, config/rs6000/t-fprules,
6019         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
6020         config/rs6000/t-lynx, config/rs6000/t-netbsd,
6021         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
6022         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
6023         config/rs6000/t-rtems, config/rs6000/t-spe,
6024         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
6025         config/score/t-score-elf, config/sh/divcost-analysis,
6026         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
6027         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
6028         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
6029         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
6030         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
6031         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
6032         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
6033         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
6034         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
6035         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
6036         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
6037         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
6038         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
6039         limitx.h, version.c, xcoff.h: Add copyright and license notices.
6040         * config/h8300/genmova.sh: Include copyright and license notices
6041         in generated output.
6042         * config/h8300/mova.md: Regenerate.
6043         * doc/install.texi2html: Include word "Copyright" in copyright
6044         notice and use name "Free Software Foundation, Inc.".
6045         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
6046         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
6047         ChangeLog-2007, ChangeLog-2008: Correct dates.
6048
6049 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
6050
6051         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
6052         NE_EXPR operations as well.
6053         * c-parser.c (c_parser_condition): Do not set location information on
6054         the condition.
6055         (c_parser_conditional_expression): Likewise.
6056         (c_parser_binary_expression): Set location information on operators.
6057         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
6058         TRUTH_NOT_EXPR has been folded.
6059         * fold-const.c (fold_truth_not_expr): Copy location information from
6060         the incoming expression to the outgoing one.
6061         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
6062         recursive calls on the LHS of the operator but pass that of the
6063         operator to recursive calls on the RHS of the operator.  Set it
6064         on the COND_EXPR.
6065         (shortcut_cond_expr): Set the locus of the operator on the second
6066         COND_EXPR and that of the expression on the first in degenerate cases.
6067         Pass the locus of the expression to calls to shortcut_cond_r.
6068         Set the locus of the 'then' block on the associated jump, if any.
6069         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
6070         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
6071         expression to call to gimplify_boolean_expr.
6072
6073 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
6074
6075         * config.gcc: Add additional configuration for
6076         i686-w64-mingw* and x86_64-w64-mingw* triplet.
6077         * config/i386/mingw-w64.h: New mingw-w64 specific header.
6078         (CPP_SPEC): Redefine for allowing -municode option.
6079         (STARTFILE_SPEC): Likewise.
6080         * config/i386/t-mingw-w64: New.
6081         * config/i386/mingw-w64.opt: New.
6082         (municode): Add new target option.
6083         * doc/invoke.texi (municode): Add documentation for new option.
6084
6085 2009-04-21  Ian Lance Taylor  <iant@google.com>
6086
6087         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6088         Correct test for number of arguments.
6089         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
6090
6091 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
6092
6093         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
6094         argument of emit_library_call.
6095
6096 2009-04-21  Richard Guenther  <rguenther@suse.de>
6097
6098         PR middle-end/39829
6099         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
6100         inside VIEW_CONVERT_EXPRs.
6101
6102 2009-04-21  Martin Jambor  <mjambor@suse.cz>
6103
6104         * tree-switch-conversion.c (build_constructors): Split a long line.
6105         (constructor_contains_same_values_p): New function.
6106         (build_one_array): Create assigns of constants if possible, do not
6107         call mark_sym_for_renaming, call update_stmt.
6108         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
6109         make_rename_temp.  Do not call mark_symbols_for_renaming, call
6110         update_stmt.
6111         (gen_def_assigns): Do not call mark_symbols_for_renaming or
6112         find_new_referenced_vars, call update_stmt.
6113         (gen_inbound_check): Use create_tmp_var and create ssa names manually
6114         instead of calling make_rename_temp.  Do not call
6115         find_new_referenced_vars or mark_symbols_for_renaming, call
6116         update_stmt.
6117
6118 2009-04-21  Richard Guenther  <rguenther@suse.de>
6119
6120         PR tree-optimization/39827
6121         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
6122         (tree_ssa_phiprop): Pass the correct array size.
6123
6124 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
6125
6126         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
6127
6128 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6129
6130         PR 16202
6131         * c-typeck.c (lvalue_p): Move declaration ...
6132         * c-common.h (lvalue_p): ... to here.
6133         * c-common.c (candidate_equal_p): New.
6134         (add_tlist): Use it.
6135         (merge_tlist): Use it.
6136         (warn_for_collisions_1): Likewise.
6137         (warning_candidate_p): Accept more candidates.
6138         (verify_tree): A warning candidate can be an expression. Use
6139         candidate_equal_p.
6140
6141 2009-04-21  Ben Elliston  <bje@au.ibm.com>
6142
6143         PR target/5267
6144         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
6145         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
6146         options.  Remove -mcall-solaris documentation.
6147
6148 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6149
6150         PR c++/13358
6151         * doc/invoke.texi (-Wlong-long): Update description.
6152         * c-lex (interpret_integer): Only warn if there was no previous
6153         overflow and -Wlong-long is enabled.
6154         * c-decl.c (declspecs_add_type): Drop redundant flags.
6155         * c.opt (Wlong-long): Init to -1.
6156         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
6157         and front-end warn_long_long. Wlong-long only depends on other
6158         flags if it is uninitialized.
6159         * c-parser.c (disable_extension_diagnostics): warn_long_long is
6160         the same for CPP and FE.
6161         (restore_extension_diagnostics): Likewise.
6162
6163 2009-04-20  Ian Lance Taylor  <iant@google.com>
6164
6165         Fix enum conversions which are invalid in C++:
6166         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
6167         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
6168         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
6169         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
6170         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
6171         (dbxout_parms): Likewise.
6172         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
6173         (df_clear_flags): Likewise.
6174         * df-problems.c (df_rd_bb_local_compute_process_def): Change
6175         top_flag parameter to int.
6176         (df_chain_create_bb_process_use): Likewise.
6177         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
6178         Remove cast.
6179         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
6180         (df_ref_create_structure, df_def_record_1): Likewise.
6181         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
6182         (df_notes_rescan): Change 0 to VOIDmode in function call.
6183         (df_get_call_refs, df_insn_refs_collect): Likewise.
6184         (df_bb_regs_collect): Likewise.
6185         (df_entry_block_defs_collect): Likewise.
6186         (df_exit_block_uses_collect): Likewise.
6187         * df.h: Update declarations.
6188         * double-int.c (double_int_divmod): Add cast to enum type.
6189         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
6190         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
6191         (based_loc_descr): Likewise.
6192         (loc_descriptor_from_tree_1): Change first_op and second_op to
6193         enum dwarf_location_atom.  Add cast to enum type.
6194         * expmed.c (init_expmed): Change 0 to SET in function call.
6195         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
6196         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
6197         (do_store_flag): Likewise.
6198         * fixed-value.h (struct fixed_value): Change mode to enum
6199         machine_mode.
6200         * function.c (assign_parms): Change 0 to VOIDmode in function call.
6201         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
6202         function call.
6203         (insert_insn_decl, insert_decl, insert_state): Likewise.
6204         (automata_list_finish): Likewise.
6205         * genrecog.c (process_define_predicate): Add cast to enum type.
6206         * gensupport.c (init_predicate_table): Add cast to enum type.
6207         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
6208         function call.
6209         (gimple_build_call_1, gimple_build_label): Likewise.
6210         (gimple_build_goto, gimple_build_asm_1): Likewise.
6211         (gimple_build_switch_1, gimple_build_cdt): Likewise.
6212         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
6213         (enum fallback): Rename from enum fallback_t.
6214         (fallback_t): Typedef as int.
6215         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
6216         GSI_SAME_STMT in function call.
6217         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
6218         enum type.
6219         (setup_reg_class_relations): Likewise.
6220         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
6221         (setup_prohibited_class_mode_regs): Add cast to enum type.
6222         (setup_prohibited_mode_move_regs): Likewise.
6223         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
6224         (record_address_regs): Change i to enum reg_class.
6225         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
6226         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
6227         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
6228         (GET_MODE_2XWIDER_MODE): Likewise.
6229         (GET_CLASS_NARROWEST_MODE): Likewise.
6230         * omp-low.c (expand_omp_for): Add cast to enum type.
6231         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
6232         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
6233         * postreload.c (reload_cse_simplify_operands): Change rclass local
6234         to enum reg_class.
6235         * predict.c (combine_predictions_for_insn): Change best_predictor
6236         and predictor to enum br_predictor.
6237         (combine_predictions_for_bb): Likewise.
6238         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
6239         use SET_PREDICT_EXPR_OUTCOME.
6240         * real.c (real_arithmetic): Change icode to code in function call.
6241         * reginfo.c (init_move_cost): Add casts to enum type.
6242         (init_reg_sets_1, init_fake_stack_mems): Likewise.
6243         * regmove.c (regclass_compatible_p): Change class0 and class1 to
6244         enum reg_class.
6245         * reload.c (find_valid_class): Add casts to enum type.
6246         (push_reload): Change 0 to NO_REGS in function call.
6247         (find_reloads): Change this_alternative to array of enum
6248         reg_class.  Remove some now-unnecessary casts.
6249         (make_memloc): Change 0 to VOIDmode in function call.
6250         * reload1.c (reload): Change 0 to VOIDmode in function call.
6251         (eliminate_regs_1, elimination_effects): Likewise.
6252         (eliminate_regs_in_insn): Likewise.
6253         (emit_input_reload_insns): Add cast to enum type.
6254         (delete_output_reload): Change 0 to VOIDmode in function call.
6255         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
6256         to enum type in function call.
6257         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
6258         (SET_PREDICT_EXPR_OUTCOME): Define.
6259         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
6260         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
6261         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
6262         (dump_function): Likewise.
6263         * tree-dump.h: Update declarations.
6264         * tree-pass.h: Update declarations.
6265         * varasm.c (assemble_integer): Change mclass to enum mode_class.
6266         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
6267         enum type.
6268         (arm_rtx_costs_1): Correct parenthesization.
6269         (arm_rtx_costs): Add casts to enum type.
6270         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
6271         (vfp_emit_fstmd): Use add_rg_note.
6272         (emit_multi_reg_push, emit_sfm): Likewise.
6273         (thumb_set_frame_pointer): Likewise.
6274         (arm_expand_prologue): Likewise.
6275         (arm_regno_class): Change return type to enum reg_class.
6276         (thumb1_expand_prologue): Use add_reg_note.
6277         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
6278         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
6279         in function call.
6280         * config/arm/gentune.sh: Add cast to enum type.
6281         * config/arm/arm-tune.md: Rebuild.
6282         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
6283         (ix86_split_fp_branch, predict_jump): Likewise.
6284         (ix86_expand_multi_arg_builtin): Change sub_code from enum
6285         insn_code to enum rtx_code.
6286         (ix86_builtin_vectorized_function): Add cast to enum type.
6287         * config/i386/i386.md (truncdfsf2): Change slot to enum
6288         ix86_stack_slot.
6289         (truncxf<mode>2, isinf<mode>2): Likewise.
6290         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
6291         enum type.
6292         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
6293         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
6294         (insert_bundle_state): Change 1 to INSERT in function call.
6295         (ia64_add_bundle_selector_before): Likewise.
6296         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
6297         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
6298         (restore_stack_nonlocal): Likewise.
6299         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
6300         function call.
6301         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
6302         function call.
6303         (mips_rtx_costs): Likewise.
6304         (mips_override_options): Add casts to enum type.
6305         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
6306         in function call.
6307         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
6308         (store_reg, set_reg_plus_d): Likewise.
6309         (hppa_expand_prologue, hppa_profile_hook): Likewise.
6310         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
6311         cast to enum type.
6312         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
6313         function call.
6314         (emit_unlikely_jump): Use add_reg_note.
6315         (rs6000_emit_allocate_stack): Likewise.
6316         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
6317         (output_toc): Change 1 to INSERT in function call.
6318         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
6319         (rs6000_initialize_trampoline): Likewise.
6320         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
6321         function call.
6322         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
6323         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
6324         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
6325         (save_gprs): Use add_reg_note.
6326         (s390_emit_prologue): Likewise.
6327         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
6328         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
6329         (sparc_fold_builtin): Add cast to enum type.
6330         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
6331         enum insn_code.
6332         (spu_expand_prologue): Use add_reg_note.
6333         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
6334
6335 2009-04-20  Ian Lance Taylor  <iant@google.com>
6336
6337         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
6338         (c_parser_postfix_expression_after_primary): Get VEC for list of
6339         arguments.  Get original types of arguments.  Call
6340         build_function_call_vec.
6341         (cached_expr_list_1, cached_expr_list_2): New static variables.
6342         (c_parser_expr_list): Change return type to VEC *.  Add
6343         p_orig_types parameter.  Change all callers.
6344         (c_parser_release_expr): New static function.
6345         (c_parser_vec_to_tree_list): New static function.
6346         * c-typeck.c (build_function_call): Rewrite to build a VEC and
6347         call build_function_call_vec.
6348         (build_function_call_vec): New function, based on old
6349         build_function_call.
6350         (convert_arguments): Remove nargs and argarray parameters.  Change
6351         values to a VEC.  Add origtypes parameter.
6352         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
6353         (convert_for_assignment): Add origtype parameter.  Change all
6354         callers.  If warn_cxx_compat, check for conversion to an enum
6355         type when calling a function.
6356         (store_init_value): Add origtype parameter.  Change all callers.
6357         (digest_init): Likewise.
6358         (struct init_node): Add origtype field.
6359         (add_pending_init): Add origtype parameter.  Change all callers.
6360         (output_init_element): Likewise.
6361         (output_pending_init_elements): Pass origtype from init_node to
6362         output_init_element.
6363         (process_init_element): Pass origtype from c_expr to
6364         output_init_element.
6365         (c_finish_return): Add origtype parameter.  Change all callers.
6366         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
6367         caller.
6368         (sync_resolve_params): Likewise.
6369         (sync_resolve_return): Change params to first_param.  Change caller.
6370         (resolve_overloaded_builtins): Change params to VEC *.  Change
6371         callers.  Save first parameter around call to build_function_call_vec.
6372         * c-decl.c (finish_decl): Add origtype parameter.  Change all
6373         callers.  Call build_function_call_vec rather than
6374         build_function_call for cleanup.
6375         * c-tree.h: Update declarations.
6376         * c-common.h: Update declarations.
6377         * stub-objc.c (objc_rewrite_function_call): Change parameter from
6378         params to first_param.
6379         * target.h (struct gcc_target): Change resolve_overloaded_builtin
6380         params parameter from tree to void *.
6381         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
6382         Change arglist parameter to have type void *, and to be a pointer
6383         to a VEC.
6384         * config/rs6000/rs6000-protos.h
6385         (altivec_resolve_overloaded_builtin): Update declaration.
6386         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
6387         fnargs parameter to have type void *, and to be a pointer to a
6388         VEC.  Call build_function_call_vec instead of
6389         build_function_call.
6390         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
6391
6392 2009-04-20  Joey Ye  <joey.ye@intel.com>
6393             Xuepeng Guo  <xuepeng.guo@intel.com>
6394             H.J. Lu  <hongjiu.lu@intel.com>
6395
6396         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
6397
6398         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
6399         (IX86_LEA_PRIORITY): Likewise.
6400         (distance_non_agu_define): New function.
6401         (distance_agu_use): Likewise.
6402         (ix86_lea_for_add_ok): Likewise.
6403         (ix86_dep_by_shift_count): Likewise.
6404
6405         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
6406         should split for LEA.
6407
6408         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
6409         function.
6410         (ix86_dep_by_shift_count): Likewise.
6411
6412 2009-04-20  Richard Guenther  <rguenther@suse.de>
6413
6414         * expr.c (handled_component_p): Move ...
6415         * tree.h (handled_component_p): ... here.
6416         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
6417         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
6418         and REALPART_EXPR to be in one group.
6419
6420 2009-04-20  Richard Guenther  <rguenther@suse.de>
6421
6422         * basic-block.h (get_all_dominated_blocks): Declare.
6423         * dominance.c (get_all_dominated_blocks): New function.
6424         * tree-cfg.c (get_all_dominated_blocks): Remove.
6425         (remove_edge_and_dominated_blocks): Adjust.
6426         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
6427         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
6428         instead of recursing.
6429
6430 2009-04-20  Doug Kwan  <dougkwan@google.com>
6431
6432         * cgraph.h (cgraph_node_ptr): New type for vector functions.
6433         (struct cgraph_node_set_def): New type.
6434         (cgraph_node_set) New type. Also declare vector functions.
6435         (struct cgraph_node_set_element_def): New type.
6436         (cgraph_node_set_element): Ditto.
6437         (cgraph_node_set_iterator): New iterator type.
6438         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
6439         cgraph_node_set_remove, dump_cgraph_node_set,
6440         debug_cgraph_node_set): New prototypes.
6441         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
6442         cgraph_node_set_size): New inlines.
6443         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
6444         including cgraph.h.
6445         (struct ipa_opt_pass): Add struct cgraph_node_set_def
6446         argument to function 'write_summary'.
6447         * ipa.c: Include ggc.h.
6448         (hash_cgraph_node_set_element,
6449         eq_cgraph_node_set_element, cgraph_node_set_new,
6450         cgraph_node_set_add, cgraph_node_set_remove,
6451         cgraph_node_set_find, dump_cgraph_node_set,
6452         debug_cgraph_node_set): New functions.
6453         * Makefile.in (ipa.o): Add dependency on GGC_H.
6454
6455 2009-04-20  Ira Rosen  <irar@il.ibm.com>
6456
6457         PR tree-optimization/39675
6458         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
6459         check of the return code of vect_schedule_slp. Check that
6460         stmt_vec_info still exists for the statement, before checking its
6461         vectorization type.
6462
6463 2009-04-20  Michael Matz  <matz@suse.de>
6464
6465         * Makefile.in (generated_files): Take out $(simple_generated_c).
6466
6467 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
6468
6469         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
6470         (UINTPTR_TYPE):  Likewise.
6471
6472 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6473
6474         PR c/37481
6475         * c-typeck.c (digest_init): Check for initializing an array with a
6476         string literal.
6477
6478 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6479
6480         PR c/19771
6481         * c-semantics.c (pop_stmt_list): Propagate
6482         STATEMENT_LIST_HAS_LABEL to parent statement list.
6483
6484 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
6485
6486         * config/mips/mips.h (mips_tune_attr): New macro.
6487         * config/mips/mips.md (cpu): Use it.
6488
6489 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
6490
6491         PR c/38243
6492         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
6493         declaring a tag.
6494
6495 2009-04-19  Diego Novillo  <dnovillo@google.com>
6496
6497         * toplev.c (compile_file): Move call to coverage_finish ...
6498         * cgraphunit.c (ipa_passes): ... here.
6499         Call cgraph_process_new_functions.
6500         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
6501         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
6502
6503 2009-04-19  Jan Hubicka  <jh@suse.cz>
6504
6505         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
6506         cfun.
6507         (dump_cgraph_node): Dump can throw external flag.
6508         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
6509
6510 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6511
6512         PR c/32061
6513         PR c++/36954
6514         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
6515         * common.opt (Wlogical-op): Move from here...
6516         * c.opt (Wlogical-op): ... to here.
6517         * c-typeck.c (parser_build_binary_op): Update call to
6518         warn_logical_operator.
6519         * c-opts.c (c_common_post_options): Enable warn_logical_op with
6520         extra_warnings.
6521         * c-common.c (warn_logical_op): Update.
6522         * c-common.h (warn_logical_op): Update declaration.
6523
6524 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
6525
6526         * tree.c (protected_set_expr_location): Fix formatting.
6527
6528 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6529
6530         PR c/27676
6531         * c-typeck.c (readonly_warning): new.
6532         (build_unary_op, build_modify_expr): Use readonly_warning for
6533         storing into something readonly but not const-qualified.
6534
6535 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6536
6537         PR c/22367
6538         * c-typeck.c (build_unary_op): Check for taking address of
6539         expression of type void.
6540
6541 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
6542
6543         PR c/35210
6544         * c-typeck.c (build_function_call): Check for calling a function
6545         with qualified void return types.  Call require_complete_type when
6546         generating a trap.
6547
6548 2009-04-18  Jan Hubicka  <jh@suse.cz>
6549
6550         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
6551         Set nothrow flag.
6552         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
6553         can_throw_external flag.
6554         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
6555         * ipa-pure-const.c (ignore_edge): New function.
6556         (propagate): Compute order for NOTHROW computation; set NOTHROWs
6557         only over can_throw_external edges.
6558         (local_pure_const): Add nothrow flag.
6559         * ipa-utils.c (searchc): Add ignore_edge callback.
6560         (ipa_utils_reduced_inorder): Add ignore_edge callback.
6561         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
6562         (set_nothrow_function_flags): Update cgraph.
6563         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
6564
6565 2009-04-18  Richard Guenther  <rguenther@suse.de>
6566
6567         PR middle-end/39804
6568         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
6569         (fold_stmt): ... this and ...
6570         (fold_stmt_inplace): ... this.
6571         (fold_stmt_1): Fold references in calls and asms.
6572         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
6573
6574 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6575
6576         * tree-vrp.c (ssa_name_nonzero_p): Remove.
6577         * tree.h: Remove the prototype for ssa_name_nonzero_p.
6578
6579 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6580
6581         * tree.c (function_args_count): Remove.
6582         * tree.h: Remove the prototype for function_args_count.
6583
6584 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6585
6586         * tree-iterator.c (expr_only): Remove.
6587         * tree.h: Remove the prototype for expr_only.
6588
6589 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6590
6591         * reginfo.c (cannot_change_mode_set_regs): Remove.
6592         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
6593
6594 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
6595
6596         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
6597         whether operands 0 and 1 overlaps.
6598
6599 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6600
6601         PR middle-end/36902
6602         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
6603         pointer. Use warning_at instead of warning.
6604         (search_for_addr_array): Likewise.
6605         (check_array_bounds): Likewise.
6606         (check_all_array_refs): Check that the incoming edge is not in the
6607         list of edges to be removed.
6608         (check_all_array_refs): Avoid the temporal pointer.
6609         (vrp_visit_cond_stmt): Fix typo.
6610         (simplify_switch_using_ranges): Handle the case where the switch
6611         index is an integer constant.
6612
6613 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
6614
6615         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
6616
6617 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
6618
6619         * doc/extend.texi, doc/invoke.texi: Fix typos.
6620
6621 2009-04-17  Cary Coutant  <ccoutant@google.com>
6622
6623         * tree-flow-inline.h (get_lineno): Fix inverted test.
6624
6625 2009-04-17  Diego Novillo  <dnovillo@google.com>
6626
6627         * tree-ssa-pre.c (create_expression_by_pieces): Remove
6628         assertion for AVAIL_OUT.
6629
6630 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
6631
6632         PR target/38627
6633         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
6634         * config/sh/linux-atomic.asm: Likewise.
6635
6636 2009-04-17  Diego Novillo  <dnovillo@google.com>
6637
6638         * except.c (debug_eh_tree): New.
6639         (struct eh_region, struct eh_status): Move ...
6640         * except.h: ... here.
6641         (add_type_for_runtime): Declare extern.
6642         (lookup_type_for_runtime): Likewise.
6643         (debug_eh_tree): Declare.
6644         * Makefile.in (GTFILES): List except.h before except.c
6645
6646 2009-04-17  Diego Novillo  <dnovillo@google.com>
6647
6648         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
6649         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
6650         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
6651         (find_vars_r): ... here.
6652         * tree-flow.h (find_referenced_vars_in): Declare.
6653         * tree-ssa-pre.c (create_expression_by_pieces): Assert
6654         that AVAIL_OUT exists for BLOCK.
6655         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
6656         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
6657         (tree-parloops.o): Likewise.
6658
6659 2009-04-17  Simon Baldwin  <simonb@google.com>
6660
6661         * toplev.c (default_tree_printer): Add handling for %E format.
6662
6663 2009-04-17  Diego Novillo  <dnovillo@google.com>
6664
6665         * tree-pretty-print.c (dump_generic_node): Add break after
6666         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
6667         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
6668         FUNCTION_TYPE together.  Call print_struct_decl when printing
6669         structures and TDF_SLIM is not given.
6670         (print_struct_decl): Fix logic for detecting recursion.
6671
6672 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6673
6674         PR 31567
6675         * gcc.c (create_at_file): New.
6676         (compile_input_file_p): New.
6677         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
6678         * main.c (main): Update call to toplev_main.
6679         * toplev.c (toplev_main): Change signature. Call expandargv.
6680         * toplev.h (toplev_main): Change signature.
6681
6682 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6683
6684         * dwarf2out.c (field_byte_offset): Use the type size as the field size
6685         if the latter is not constant.
6686
6687 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
6688
6689         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
6690
6691 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
6692
6693         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
6694         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
6695
6696 2009-04-17  Richard Guenther  <rguenther@suse.de>
6697
6698         * tree-ssa-structalias.c (get_constraint_for_component_ref):
6699         Handle component references view-converting an invariant address.
6700
6701 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
6702
6703         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
6704         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
6705         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
6706         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
6707         Use @deftypevr rather than @deftypevar.
6708
6709 2009-04-17  Richard Guenther  <rguenther@suse.de>
6710
6711         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
6712         (get_prop_source_stmt): Likewise.
6713         (can_propagate_from): Likewise.
6714
6715 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
6716
6717         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
6718         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
6719         (--with-multilib-list): Add default value.
6720         * configure: Regenerate.
6721         * Makefile.in (TM_ENDIAN_CONFIG): Define.
6722         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
6723         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
6724         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
6725         Don't add default cpu to multilib list unnecessarily, but do enable
6726         the relevant compiler option..
6727         Add support for --with-multilib-list=<blank> and
6728         --with-multilib-list=!<somelib> to supress unwanted multilibs.
6729         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
6730         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
6731         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
6732         TM_MULTILIB_CONFIG.
6733         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
6734         (MULTILIB_OSDIRNAMES): New variable.
6735         * config/sh/t-1e: Delete file.
6736         * config/sh/t-mlib-sh1: Delete file.
6737         * config/sh/t-mlib-sh2: Delete file.
6738         * config/sh/t-mlib-sh2a: Delete file.
6739         * config/sh/t-mlib-sh2a-nofpu: Delete file.
6740         * config/sh/t-mlib-sh2a-single: Delete file.
6741         * config/sh/t-mlib-sh2a-single-only: Delete file.
6742         * config/sh/t-mlib-sh2e: Delete file.
6743         * config/sh/t-mlib-sh3e: Delete file.
6744         * config/sh/t-mlib-sh4: Delete file.
6745         * config/sh/t-mlib-sh4-nofpu: Delete file.
6746         * config/sh/t-mlib-sh4-single: Delete file.
6747         * config/sh/t-mlib-sh4-single-only: Delete file.
6748         * config/sh/t-mlib-sh4a: Delete file.
6749         * config/sh/t-mlib-sh4a-nofpu: Delete file.
6750         * config/sh/t-mlib-sh4a-single: Delete file.
6751         * config/sh/t-mlib-sh4a-single-only: Delete file.
6752         * config/sh/t-mlib-sh4al: Delete file.
6753         * config/sh/t-mlib-sh5-32media: Delete file.
6754         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
6755         * config/sh/t-mlib-sh5-64media: Delete file.
6756         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
6757         * config/sh/t-mlib-sh5-compact: Delete file.
6758         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
6759         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
6760         * doc/install.texi (Options specification): Add
6761         --with-multilib-list and --with-endian.
6762
6763 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
6764
6765         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
6766         REVISION_c.
6767         (OBJS-common): Add plugin-version.o.
6768         (plugin-version.o): New.
6769         * gcc-plugin.h (plugin_gcc_version): New.
6770         (plugin_default_version_check): New.
6771         (plugin_init_func, plugin_init): Add version argument.
6772         * plugin-version.c: New.
6773         * plugin.c (str_plugin_gcc_version_name): New.
6774         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
6775         pass it to the init function.
6776         (plugin_default_version_check): New.
6777
6778 2009-04-17  Richard Guenther  <rguenther@suse.de>
6779
6780         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
6781         for decl-vs-decl disambiguation.
6782
6783 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
6784
6785         * config/s390/s390.h (s390_tune_attr): New macro definition.
6786         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
6787
6788 2009-04-17  Richard Guenther  <rguenther@suse.de>
6789
6790         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
6791         (fold_stmt_r): Likewise.
6792         (maybe_fold_reference): New function.
6793         (fold_gimple_assign): Handle cases fold_stmt_r did.
6794         (fold_stmt): Do not use fold_stmt_r.
6795         (fold_stmt_inplace): Likewise.
6796
6797 2009-04-17  Richard Guenther  <rguenther@suse.de>
6798
6799         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
6800         (record_equivalences_from_stmt): Remove useless checks and
6801         simplifications.
6802         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
6803         the type is already suitable.
6804
6805 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
6806
6807         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
6808
6809 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
6810
6811         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
6812         (CMPtype): Define as __gcc_CMPtype.
6813
6814 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
6815
6816         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
6817         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
6818
6819 2009-04-17  Richard Guenther  <rguenther@suse.de>
6820
6821         PR tree-optimization/39746
6822         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
6823         special-casing for builtins and static variable use/def.
6824         (call_may_clobber_ref_p_1): Likewise.
6825
6826 2009-04-16  Ian Lance Taylor  <iant@google.com>
6827
6828         * df.h: Include "timevar.h".
6829         (struct df_problem): Change tv_id field to timevar_id_t.
6830         * tree-pass.h: Include "timevar.h".
6831         (struct opt_pass): Change tv_id field to timevar_id_t.
6832         * timevar.h (timevar_id_t): Define TV_NONE.
6833         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
6834         TV_NONE rather than tv_id != 0.
6835         (execute_one_pass): Likewise.
6836         * Makefile.in (DF_H): Add $(TIMEVAR_H).
6837         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
6838         dependencies to $(TREE_PASS_H).
6839         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
6840         to TV_NONE.
6841         (pass_branch_target_load_optimize2): Likewise.
6842         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
6843         (pass_outof_cfg_layout_mode): Likewise.
6844         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
6845         (pass_rebuild_cgraph_edges): Likewise.
6846         (pass_remove_cgraph_callee_edges): Likewise.
6847         * df-core.c (pass_df_initialize_opt): Likewise.
6848         (pass_df_initialize_no_opt): Likewise.
6849         (pass_df_finish): Likewise.
6850         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
6851         * except.c (pass_set_nothrow_function_flags): Likewise.
6852         (pass_convert_to_eh_region_ranges): Likewise.
6853         * final.c (pass_compute_alignments): Likewise.
6854         * function.c (pass_instantiate_virtual_regs): Likewise.
6855         (pass_init_function): Likewise.
6856         (pass_leaf_regs): Likewise.
6857         (pass_match_asm_constraints): Likewise.
6858         * gimple-low.c (pass_lower_cf): Likewise.
6859         (pass_mark_used_blocks): Likewise.
6860         * init-regs.c (pass_initialize_regs): Likewise.
6861         * integrate.c (pass_initial_value_sets): Likewise.
6862         * ira.c (pass_ira): Likewise.
6863         * jump.c (pass_cleanup_barriers): Likewise.
6864         * omp-low.c (pass_expand_omp): Likewise.
6865         (pass_lower_omp): Likewise.
6866         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
6867         * recog.c (pass_split_all_insns): Likewise.
6868         (pass_split_after_reload): Likewise.
6869         (pass_split_before_regstack): Likewise.
6870         (pass_split_before_sched2): Likewise.
6871         (pass_split_for_shorten_branches): Likewise.
6872         * reginfo.c (pass_reginfo_init): Likewise.
6873         (pass_subregs_of_mode_init): Likewise.
6874         (pass_subregs_of_mode_finish): Likewise.
6875         * passes.c (pass_postreload): Likewise.
6876         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
6877         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
6878         (pass_warn_function_return): Likewise.
6879         (pass_warn_function_noreturn): Likewise.
6880         * tree-complex.c (pass_lower_complex): Likewise.
6881         (pass_lower_complex_O0): Likewise.
6882         * tree-if-conv.c (pass_if_conversion): Likewise.
6883         * tree-into-ssa.c (pass_build_ssa): Likewise.
6884         * tree-mudflap.c (pass_mudflap_1): Likewise.
6885         (pass_mudflap_2): Likewise.
6886         * tree-nomudflap.c (pass_mudflap_1): Likewise.
6887         (pass_mudflap_2): Likewise.
6888         * tree-nrv.c (pass_return_slot): Likewise.
6889         * tree-object-size.c (pass_object_sizes): Likewise.
6890         * tree-optimize.c (pass_all_optimizations): Likewise.
6891         (pass_early_local_passes): Likewise.
6892         (pass_all_early_optimizations): Likewise.
6893         (pass_cleanup_cfg): Likewise.
6894         (pass_cleanup_cfg_post_optimizing): Likewise.
6895         (pass_free_datastructures): Likewise.
6896         (pass_free_cfg_annotations): Likewise.
6897         (pass_fixup_cfg): Likewise.
6898         (pass_init_datastructures): Likewise.
6899         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
6900         (pass_late_warn_uninitialized): Likewise.
6901         (pass_update_address_taken): Likewise.
6902         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
6903         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
6904         (pass_cse_sincos): Likewise.
6905         (pass_convert_to_rsqrt): Likewise.
6906         * tree-ssa-structalias.c (pass_build_alias): Likewise.
6907         * tree-stdarg.c (pass_stdarg): Likewise.
6908         * tree-tailcall.c (pass_tail_recursion): Likewise.
6909         (pass_tail_calls): Likewise.
6910         * tree-vect-generic.c (pass_lower_vector): Likewise.
6911         (pass_lower_vector_ssa): Likewise.
6912         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
6913
6914 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
6915
6916         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
6917         XLR entry.
6918         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
6919         Handle -march=xlr.
6920         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
6921         logical and signext.
6922
6923 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
6924
6925         PR target/39767
6926         * config/sh/predicates.md (arith_operand): Check if the operand
6927         of TRUNCATE is a REG.
6928
6929 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6930
6931         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
6932         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
6933
6934 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6935
6936         * tree-iterator.c (tsi_split_statement_list_after,
6937         tsi_split_statement_list_before): Remove.
6938         * tree-iterator.h: Remove the prototypes for
6939         tsi_split_statement_list_after and tsi_split_statement_list_before.
6940
6941 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6942
6943         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
6944         * tree-ssa-propagate.h: Remove the prototype for
6945         stmt_makes_single_load.
6946
6947 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6948
6949         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
6950         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
6951
6952 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6953
6954         * tree-iterator.c (EXPR_LAST_BODY): Remove.
6955
6956 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6957
6958         * except.c (eh_region_outer_p): Remove.
6959         * except.h: Remove the prototype for eh_region_outer_p.
6960
6961 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
6962
6963         * function.c (current_function_assembler_name): Remove.
6964         * function.h: Remove the prototype for
6965         current_function_assembler_name.
6966
6967 2009-04-16  Ian Lance Taylor  <iant@google.com>
6968
6969         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
6970         (add_reg_note): Call alloc_reg_note.
6971         * rtl.h (alloc_reg_note): Declare.
6972         * combine.c (try_combine): Use alloc_reg_note.
6973         (recog_for_combine, move_deaths): Likewise.
6974         (distribute_notes): Use alloc_reg_note and add_reg_note.
6975         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
6976         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
6977         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
6978
6979 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
6980
6981         PR rtl-optimization/39762
6982         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
6983         ira_may_move_out_cost): Add comments about way of their usage.
6984         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
6985
6986         * ira-conflicts.c (process_regs_for_copy): Use function
6987         ira_get_register_move_cost instead of global
6988         ira_register_move_cost.
6989
6990         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
6991         color_pass, move_spill_restore, update_curr_costs): Ditto.
6992
6993         * ira-lives.c (process_single_reg_class_operands): Ditto.
6994
6995         * ira-emit.c (emit_move_list): Ditto.
6996
6997         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
6998         (record_reg_classes): Ditto.  Use functions
6999         ira_get_register_move_cost and ira_get_may_move_cost instead of
7000         global vars ira_register_move_cost, ira_may_move_out_cost and
7001         ira_may_move_in_cost.
7002         (record_address_regs): Don't call ira_init_register_move_cost.
7003         Use function ira_get_may_move_cost instead of global
7004         ira_may_move_in_cost.
7005         (process_bb_node_for_hard_reg_moves): Use function
7006         ira_get_register_move_cost instead of global ira_register_move_cost.
7007         (ira_costs): Don't call ira_init_register_move_cost.
7008
7009 2009-04-16  Richard Guenther  <rguenther@suse.de>
7010
7011         * tree-cfg.c (verify_gimple_assign_binary):
7012         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
7013         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
7014         (create_general_new_stmt): Note that this function is broken.
7015
7016 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7017
7018         * common.opt (fhelp): Add Var(help_flag).
7019         * gcc-plugin.h (plugin_info): Add help.
7020         * plugin.c (plugin_name_args): Add help.
7021         (register_plugin_info): Set plugin->help.
7022         (print_help_one_plugin): New.
7023         (print_plugins_help): New.
7024         * plugin.h (print_plugins_help): New.
7025         * toplev.c (toplev_main): Call print_plugins_help if needed.
7026
7027 2009-04-16  Richard Guenther  <rguenther@suse.de>
7028
7029         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
7030         (gimple_ior_addresses_taken_1): New function.
7031         (gimple_ior_addresses_taken): Likewise.
7032         * gimple.h (struct gimple_statement_with_ops_base): Remove
7033         addresses_taken member.
7034         (gimple_ior_addresses_taken): Declare.
7035         (gimple_addresses_taken, gimple_addresses_taken_ptr,
7036         gimple_set_addresses_taken): Remove.
7037         * ipa-reference.c (mark_address): New function.
7038         (scan_stmt_for_static_refs): Use it for marking addresses taken.
7039         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
7040         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
7041         (gimple_add_to_addresses_taken): Remove.
7042         (get_tmr_operands): Call mark_address_taken.
7043         (get_asm_expr_operands): Likewise.
7044         (get_expr_operands): Likewise.
7045         (build_ssa_operands): Do not clear the addresses_taken bitmap.
7046         (free_stmt_operands): Do not free it.
7047         * tree-ssa.c (delete_tree_ssa): Likewise.
7048         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
7049
7050 2009-04-16  Richard Guenther  <rguenther@suse.de>
7051
7052         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
7053         (walk_stmt_load_store_ops): Likewise.
7054         * gimple.c (get_base_loadstore): New function.
7055         (walk_stmt_load_store_addr_ops): Likewise.
7056         (walk_stmt_load_store_ops): Likewise.
7057         * ipa-pure-const.c (check_op): Simplify.
7058         (check_load, check_store): New functions.
7059         (check_stmt): Use walk_stmt_load_store_ops.
7060         * ipa-reference.c (mark_load): Adjust signature.
7061         (mark_store): Likewise.
7062         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
7063
7064 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7065
7066         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
7067         (plugin_info): New.
7068         * opts.c (common_handle_option): Don't call print_version.
7069         * plugin.c (plugin_name_args): Add version.
7070         (register_plugin_info): New.
7071         (register_callback): Handle PLUGIN_INFO.
7072         (try_init_one_plugin): New.
7073         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
7074         if failed to init.
7075         (finalize_one_plugin): New.
7076         (finalize_plugins): New.
7077         (print_one_plugin): New.
7078         (print_plugins_versions): New.
7079         * plugin.h (print_plugins_versions): New.
7080         (finalize_plugins): New.
7081         * toplev.c (compile_file): Don't call initialize_plugins.
7082         (print_version): Call print_plugins_versions.
7083         (toplev_main): Call initialize_plugins. Print version if needed.
7084         Call finalize_plugins.
7085
7086 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
7087
7088         * common.opt (fversion): New.
7089         * gcc.c (print_version): New.
7090         (process_command): Don't print the version. Just set print_version.
7091         (main): Print version. Call subprocesses if print_version and
7092         verbose_flag are set.
7093         * opts.c (common_handle_option): Handle OPT_fversion.
7094
7095 2009-04-16  Richard Guenther  <rguenther@suse.de>
7096             Ira Rosen  <irar@il.ibm.com>
7097
7098         PR tree-optimization/39698
7099         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
7100         type of the reduction variable.  Only generate the def if
7101         it is needed.
7102
7103         * omp-low.c (expand_omp_for_generic): When converting to a pointer
7104         make sure to first convert to an integer of the same precision.
7105         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
7106         the type of the evolution correctly in computing the new
7107         induction variable base.
7108
7109 2009-04-16  Richard Guenther  <rguenther@suse.de>
7110
7111         PR middle-end/39625
7112         * tree-cfg.c (make_blocks): Split statements with to-be
7113         abnormal SSA names on the lhs.
7114
7115 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
7116
7117         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
7118         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
7119         * c-typeck.c (really_start_incremental_init): Likewise.
7120         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
7121         (TARGET_INITIALIZER): Remove it.
7122         * target.h (struct target): Remove vector_opaque_p.
7123         * tree.c (build_opaque_vector_type): New.
7124         * tree.h (TYPE_VECTOR_OPAQUE): New.
7125         (build_opaque_vector_type): Declare.
7126         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
7127         * config/rs6000/rs6000.c (build_opaque_vector_type,
7128         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
7129         (rs6000_init_builtins): Use build_opaque_vector_type for
7130         opaque_V4SI_type_node.
7131
7132 2009-04-15  Catherine Moore  <clm@codesourcery.com>
7133
7134         * debug.h (set_name):  Declare.
7135         * dwarf2out.c (dwarf2out_set_name): Declare.
7136         (dwarf2_debug_hooks): Add set_name.
7137         (find_AT_string): New.
7138         (add_AT_string): Call find_AT_string.
7139         (dwarf2out_set_name): New.
7140         * cp/decl.c (grokdeclarator): Call set_name.
7141         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
7142         * debug.c (do_nothing_debug_hooks):  Likewise.
7143         * dbxout.c (dbx_debug_hooks): Likewise.
7144         * sdbout.c (sdb_debug_hooks): Likewise.
7145
7146 2009-04-15  Michael Eager  <eager@eagercon.com>
7147
7148         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
7149         reg for single-precision FPU.
7150         * config/rs6000/rs6000.md (movsi_internal1): Only for
7151         !TARGET_SINGLE_FPU.
7152         (movsi_internal1_single): New. Add pattern to move SI values to/from
7153         single-precision FP regs.
7154
7155 2009-04-15  Richard Guenther  <rguenther@suse.de>
7156
7157         * omp-low.c (lower_rec_input_clauses): Build correct address
7158         expressions.
7159         (expand_omp_for_generic): Fix multiplication type.
7160         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
7161         (generate_memset_zero): Fix types.
7162         * tree-profile.c (prepare_instrumented_value): Correctly
7163         widen a pointer.
7164
7165 2009-04-15  Ian Lance Taylor  <iant@google.com>
7166
7167         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
7168         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
7169         for -Wall and for -Wc++-compat.
7170         (c_common_post_options): For C++, set warn_enum_compare if not
7171         already set.
7172         * c-tree.h (struct c_expr): Add field original_type.
7173         (build_external_ref): Update declaration.
7174         * c-parser.c (c_parser_braced_init): Set original_type.
7175         (c_parser_initelt): Likewise.
7176         (c_parser_expr_no_commas): Likewise.
7177         (c_parser_conditional_expression): Likewise.
7178         (c_parser_cast_expression): Likewise.
7179         (c_parser_unary_expression): Likewise.  Pull setting of
7180         original_code to top of function.
7181         (c_parser_sizeof_expression): Set original_type.
7182         (c_parser_alignof_expression): Likewise.
7183         (c_parser_postfix_expression): Likewise.  Pull setting of
7184         original_code to top of function.
7185         (c_parser_postfix_expression_after_paren_type): Set original_type.
7186         (c_parser_postfix_expression_after_primary): Likewise.
7187         (c_parser_expression): Likewise.
7188         * c-typeck.c (build_external_ref): Add type parameter.  Change all
7189         callers.
7190         (c_expr_sizeof_expr): Set original_type field.
7191         (parser_build_unary_op): Likewise.
7192         (parser_build_binary_op): Likewise.  Optionally warn about
7193         comparisons of enums of different types.
7194         (digest_init): Set original_type field.
7195         (really_start_incremental_init): Likewise.
7196         (push_init_level, pop_init_level): Likewise.
7197         * doc/invoke.texi (Warning Options): -Wenum-compare now
7198         supported in C.
7199
7200 2009-04-15  Richard Guenther  <rguenther@suse.de>
7201
7202         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
7203         out a necessary conversion.
7204         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
7205         names we didn't value number.
7206         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
7207
7208 2009-04-15  Richard Guenther  <rguenther@suse.de>
7209
7210         PR tree-optimization/39764
7211         * tree-ssa-ccp.c (get_value): Canonicalize value with
7212         canonicalize_float_value.
7213
7214 2009-04-15  Jan Hubicka  <jh@suse.cz>
7215
7216         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
7217         Wrong version of patch.
7218
7219 2009-04-15  Jan Hubicka  <jh@suse.cz>
7220
7221         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
7222
7223 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
7224
7225         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
7226         our distinct integral and vector types.
7227
7228 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
7229
7230         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
7231         * init.c (build_vtbl_address): Remove call to assemble_external.
7232
7233 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
7234
7235         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
7236         output for other floating point modes.
7237
7238 2009-04-14  Diego Novillo  <dnovillo@google.com>
7239
7240         * diagnostic.c (diagnostic_report_diagnostic): Do not
7241         warn about loaded plugins for DK_ERROR and DK_WARNING.
7242         * c-decl.c (declspecs_add_type): Move call to
7243         invoke_plugin_callbacks ...
7244         * c-parser.c (c_parser_declspecs): ... here.
7245         * plugin.c (dump_active_plugins): Tidy output.
7246
7247 2009-04-14  Diego Novillo  <dnovillo@google.com>
7248             Le-Chun Wu  <lcwu@google.com>
7249
7250         * configure.ac: Add --enable-plugin support.
7251         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
7252         * Makefile.in (PLUGIN_H): Define.
7253         Export ENABLE_PLUGIN and GMPINC to site.exp.
7254         Add PLUGINLIBS to link command.
7255         Add/modify dependencies for plugin.o and files including plugin.h.
7256         (plugin.o): New.
7257         * config.in: Regenerate.
7258
7259         * opts.c (common_handle_option): Handle OPT_fplugin_ and
7260         OPT_fplugin_arg_.
7261
7262 2009-04-14  Le-Chun Wu  <lcwu@google.com>
7263
7264         * tree-pass.h (register_one_dump_file): Add a prototype for
7265         register_one_dump_file.
7266         * toplev.c (compile_file): Call initialize_plugins.
7267         (do_compile): Call invoke_plugin_callbacks.
7268         (toplev_main): Call invoke_plugin_callbacks.
7269         * common.opt: Add -fplugin= and -fplugin-arg-.
7270         * gcc-plugin.h: New public header file for plugins to include.
7271         * plugin.c: New source file.
7272         * plugin.h: New internal header file.
7273         * passes.c (register_one_dump_file): Make it external.
7274
7275         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
7276
7277 2009-04-14  Diego Novillo  <dnovillo@google.com>
7278
7279         * doc/plugins.texi: New.
7280         * doc/gccint.texi: Add reference to Plugins chapter.
7281         * doc/invoke.texi: Document -fplugin and -fplugin-arg
7282         * diagnostic.c (diagnostic_report_diagnostic): Warn about
7283         loaded plugins, if any.
7284         * timevar.def (TV_PLUGIN_INIT): Define.
7285         (TV_PLUGIN_RUN): Define.
7286         * plugin.c: Include timevar.h
7287         (plugins_active_p): New.
7288         (dump_active_plugins): New.
7289         (debug_active_plugins): New.
7290
7291 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
7292
7293         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
7294         library paths.
7295         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
7296
7297 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
7298
7299         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
7300         the same as a minus without a shift.
7301
7302 2009-04-14  Nick Clifton  <nickc@redhat.com>
7303
7304         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
7305         comparisons with small integers will always produce a short
7306         branch.
7307
7308 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
7309
7310         Merge:
7311         2008-12-19  Diego Novillo  <dnovillo@google.com>
7312
7313         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
7314
7315 2009-04-14  Richard Guenther  <rguenther@suse.de>
7316
7317         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
7318         verification.
7319         (verify_gimple_assign_binary): Likewise.  Handle shifts and
7320         rotates correctly.
7321         (verify_gimple_phi): Print the mismatched argument position.
7322         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
7323         Fix types.
7324         (vect_update_init_of_dr): Likewise.
7325         * matrix-reorg.c (transform_access_sites): Do what the
7326         comment suggests.
7327         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
7328
7329 2009-04-13  Michael Eager  <eager@eagercon.com>
7330
7331         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
7332         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
7333         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
7334         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
7335         remove duplicate config
7336
7337 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7338
7339         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
7340         file_name:line_number type locator of the call site.
7341
7342 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7343
7344         * genautomata.c: Put blank after comma.
7345         (automaton_decls): New.
7346         (struct unit_usage): Add comments to member next.
7347         (store_alt_unit_usage): Keep the list ordered.
7348         (unit_present_on_list_p, equal_alternatives_p): New.
7349         (check_regexp_units_distribution): Check units distribution
7350         correctness correctly.
7351         (main): Don't write automata if error is found.  Return correct
7352         exit code.
7353
7354         * config/m68k/cf.md (cfv4_ds): Remove.
7355         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
7356         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
7357
7358         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
7359         power4-load-ext, power4-store, power4-store-update,
7360         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
7361         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
7362         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
7363         power4-sqrt, power4-isync): Modify reservation to make correct
7364         unit distribution to automata.
7365
7366         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
7367         power5-store-update, power5-two, power5-three, power5-lmul,
7368         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
7369
7370 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
7371
7372         * except.c (pass_set_nothrow_function_flags): Set name and add
7373         TODO_dump_func.
7374         (set_nothrow_function_flags): Mention in the dump file when
7375         changing a function to nothrow.
7376
7377 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
7378
7379         PR/39066
7380         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
7381         instead of unsigned long.
7382
7383 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7384
7385         * config/arm/arm.c (return_used_this_function): Remove.
7386         (arm_output_function_prologue): Remove use of
7387         return_used_this_function.
7388         (output_return_instruction): Replace use of
7389         return_used_this_function
7390         by cfun->machine->return_used_this_function.
7391         (arm_output_epilogue): Likewise.
7392         (arm_output_function_epilogue): Likewise.
7393         (thumb_unexpanded_epilogue): Likewise.
7394         * config/arm/arm.h (struct machine_function):
7395         New member return_used_this_function.
7396
7397 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
7398
7399         * doc/install.texi: Correct description of default directory for
7400         --with-gxx-include-dir.
7401
7402 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7403
7404         * fold-const.c (build_range_check): Properly deal with enumeral and
7405         boolean base types.
7406
7407 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
7408
7409         * doc/invoke.texi (max_gcse_passes): Remove documentation.
7410         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
7411         * params.h (MAX_GCSE_PASSES): Remove.
7412         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
7413         in sequence.  Remove ability to run multiple passes.
7414         (bypass_jumps): Report run as third CPROP pass.
7415
7416 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
7417
7418         PR middle-end/39651
7419         * except.c (can_throw_external): Look at each insn in a SEQUENCE
7420         when deciding whether the whole SEQUENCE can throw.
7421
7422 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
7423
7424         PR target/39740
7425         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
7426         offseted label references.
7427
7428 2009-04-11  Jan Hubicka  <jh@suse.cz>
7429
7430         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
7431
7432 2009-04-11  Richard Guenther  <rguenther@suse.de>
7433
7434         PR middle-end/39732
7435         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
7436         return variables as TREE_ADDRESSABLE.
7437
7438 2009-04-11  Richard Guenther  <rguenther@suse.de>
7439
7440         PR tree-optimization/39713
7441         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
7442         reference trees have SSA_NAME operands.
7443
7444 2009-04-11  Richard Guenther  <rguenther@suse.de>
7445
7446         PR c/39712
7447         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
7448         address expressions.
7449
7450 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
7451
7452         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
7453         match changes in Cygwin 1.7
7454         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
7455         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
7456
7457 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7458
7459         PR tree-optimization/39701
7460         * doc/invoke.texi (Optimization Options): Document change in
7461         meaning and initialization of -fdelete-null-pointer-checks.
7462
7463 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7464
7465         PR middle-end/39701
7466         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
7467
7468         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
7469         here.
7470
7471         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
7472
7473 2009-04-10  Chao-ying Fu  <fu@mips.com>
7474
7475         * doc/tm.texi (Instruction Output): Document
7476         TARGET_ASM_FINAL_POSTSCAN_INSN.
7477         * target.h (final_postscan_insn): New field in asm_out.
7478         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7479         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
7480         * final.c (final_scan_insn): Call
7481         targetm.asm_out.final_postscan_insn after outputting
7482         an asm macro and a normal instruction.
7483
7484         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
7485         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
7486         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
7487         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
7488         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
7489
7490 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
7491
7492         PR middle-end/39701
7493         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
7494         variables as non-NULL even with -fdelete-null-pointer-checks.
7495
7496 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
7497
7498         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
7499
7500 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
7501
7502         PR target/39678
7503         * config/i386/i386.c (classify_argument): Handle SCmode with
7504         (bit_offset % 64) != 0.
7505
7506 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
7507
7508         * doc/invoke.texi (Optimize Options): Add cross-reference to
7509         -Q --help=optimizers examples.
7510
7511 2009-04-10  Ben Elliston  <bje@au.ibm.com>
7512
7513         PR target/36800
7514         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
7515         regalign for the reg == fpr and TDmode case.
7516
7517 2009-04-09  David Ayers  <ayers@fsfe.org>
7518
7519         PR objc/29200
7520         * objc/objc-act.c (warn_with_method): Remove helper function.
7521         (check_duplicates): Call warning and inform directly.
7522         (really_start_method): Likewise.
7523
7524 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7525
7526         * expmed.c (expand_divmod): Always use a comparison for a division
7527         by a large unsigned integer.
7528
7529         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
7530         for things others than variables or functions as nonzero.
7531
7532 2009-04-09  Nick Clifton  <nickc@redhat.com>
7533
7534         * unwind-compat.c: Change copyright header to refer to version
7535         3 of the GNU General Public License with version 3.1 of the
7536         GCC Runtime Library Exception and to point readers at the
7537         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
7538         * config/alpha/crtfastmath.c: Likewise.
7539         * config/alpha/linux-unwind.h: Likewise.
7540         * config/alpha/qrnnd.asm: Likewise.
7541         * config/alpha/vms-crt0-64.c: Likewise.
7542         * config/alpha/vms-crt0.c: Likewise.
7543         * config/alpha/vms-dwarf2.asm: Likewise.
7544         * config/alpha/vms-dwarf2eh.asm: Likewise.
7545         * config/alpha/vms-psxcrt0-64.c: Likewise.
7546         * config/alpha/vms-psxcrt0.c: Likewise.
7547         * config/alpha/vms_tramp.asm: Likewise.
7548         * config/arc/initfini.c: Likewise.
7549         * config/arc/lib1funcs.asm: Likewise.
7550         * config/arm/bpabi-v6m.S: Likewise.
7551         * config/arm/bpabi.S: Likewise.
7552         * config/arm/bpabi.c: Likewise.
7553         * config/arm/crti.asm: Likewise.
7554         * config/arm/crtn.asm: Likewise.
7555         * config/arm/ieee754-df.S: Likewise.
7556         * config/arm/ieee754-sf.S: Likewise.
7557         * config/arm/lib1funcs.asm: Likewise.
7558         * config/arm/libunwind.S: Likewise.
7559         * config/arm/linux-atomic.c: Likewise.
7560         * config/arm/mmintrin.h: Likewise.
7561         * config/arm/pr-support.c: Likewise.
7562         * config/arm/unaligned-funcs.c: Likewise.
7563         * config/arm/unwind-arm.c: Likewise.
7564         * config/arm/unwind-arm.h: Likewise.
7565         * config/avr/libgcc.S: Likewise.
7566         * config/bfin/crti.s: Likewise.
7567         * config/bfin/crtlibid.s: Likewise.
7568         * config/bfin/crtn.s: Likewise.
7569         * config/bfin/lib1funcs.asm: Likewise.
7570         * config/bfin/linux-unwind.h: Likewise.
7571         * config/cris/arit.c: Likewise.
7572         * config/cris/cris_abi_symbol.c: Likewise.
7573         * config/darwin-64.c: Likewise.
7574         * config/darwin-crt2.c: Likewise.
7575         * config/darwin-crt3.c: Likewise.
7576         * config/darwin.h: Likewise.
7577         * config/dbxelf.h: Likewise.
7578         * config/dfp-bit.c: Likewise.
7579         * config/dfp-bit.h: Likewise.
7580         * config/elfos.h: Likewise.
7581         * config/fixed-bit.c: Likewise.
7582         * config/fixed-bit.h: Likewise.
7583         * config/fp-bit.c: Likewise.
7584         * config/fp-bit.h: Likewise.
7585         * config/fr30/crti.asm: Likewise.
7586         * config/fr30/crtn.asm: Likewise.
7587         * config/fr30/lib1funcs.asm: Likewise.
7588         * config/freebsd-spec.h: Likewise.
7589         * config/frv/cmovd.c: Likewise.
7590         * config/frv/cmovh.c: Likewise.
7591         * config/frv/cmovw.c: Likewise.
7592         * config/frv/frvbegin.c: Likewise.
7593         * config/frv/frvend.c: Likewise.
7594         * config/frv/lib1funcs.asm: Likewise.
7595         * config/glibc-stdint.h: Likewise.
7596         * config/h8300/clzhi2.c: Likewise.
7597         * config/h8300/crti.asm: Likewise.
7598         * config/h8300/crtn.asm: Likewise.
7599         * config/h8300/ctzhi2.c: Likewise.
7600         * config/h8300/fixunssfsi.c: Likewise.
7601         * config/h8300/lib1funcs.asm: Likewise.
7602         * config/h8300/parityhi2.c: Likewise.
7603         * config/h8300/popcounthi2.c: Likewise.
7604         * config/i386/ammintrin.h: Likewise.
7605         * config/i386/att.h: Likewise.
7606         * config/i386/avxintrin.h: Likewise.
7607         * config/i386/biarch64.h: Likewise.
7608         * config/i386/bmmintrin.h: Likewise.
7609         * config/i386/cpuid.h: Likewise.
7610         * config/i386/cross-stdarg.h: Likewise.
7611         * config/i386/crtfastmath.c: Likewise.
7612         * config/i386/crtprec.c: Likewise.
7613         * config/i386/cygming-crtbegin.c: Likewise.
7614         * config/i386/cygming-crtend.c: Likewise.
7615         * config/i386/cygwin.asm: Likewise.
7616         * config/i386/emmintrin.h: Likewise.
7617         * config/i386/gmm_malloc.h: Likewise.
7618         * config/i386/gthr-win32.c: Likewise.
7619         * config/i386/i386.h: Likewise.
7620         * config/i386/immintrin.h: Likewise.
7621         * config/i386/linux-unwind.h: Likewise.
7622         * config/i386/linux64.h: Likewise.
7623         * config/i386/mm3dnow.h: Likewise.
7624         * config/i386/mmintrin-common.h: Likewise.
7625         * config/i386/mmintrin.h: Likewise.
7626         * config/i386/nmmintrin.h: Likewise.
7627         * config/i386/pmm_malloc.h: Likewise.
7628         * config/i386/pmmintrin.h: Likewise.
7629         * config/i386/smmintrin.h: Likewise.
7630         * config/i386/sol2-c1.asm: Likewise.
7631         * config/i386/sol2-ci.asm: Likewise.
7632         * config/i386/sol2-cn.asm: Likewise.
7633         * config/i386/sol2-gc1.asm: Likewise.
7634         * config/i386/tmmintrin.h: Likewise.
7635         * config/i386/unix.h: Likewise.
7636         * config/i386/w32-unwind.h: Likewise.
7637         * config/i386/wmmintrin.h: Likewise.
7638         * config/i386/x86-64.h: Likewise.
7639         * config/i386/x86intrin.h: Likewise.
7640         * config/i386/xmmintrin.h: Likewise.
7641         * config/ia64/crtbegin.asm: Likewise.
7642         * config/ia64/crtend.asm: Likewise.
7643         * config/ia64/crtfastmath.c: Likewise.
7644         * config/ia64/crti.asm: Likewise.
7645         * config/ia64/crtn.asm: Likewise.
7646         * config/ia64/fde-glibc.c: Likewise.
7647         * config/ia64/lib1funcs.asm: Likewise.
7648         * config/ia64/linux-unwind.h: Likewise.
7649         * config/ia64/quadlib.c: Likewise.
7650         * config/ia64/unwind-ia64.c: Likewise.
7651         * config/linux.h: Likewise.
7652         * config/m32c/m32c-lib1.S: Likewise.
7653         * config/m32c/m32c-lib2-trapv.c: Likewise.
7654         * config/m32c/m32c-lib2.c: Likewise.
7655         * config/m32r/initfini.c: Likewise.
7656         * config/m68hc11/larith.asm: Likewise.
7657         * config/m68hc11/m68hc11-crt0.S: Likewise.
7658         * config/m68k/cf.md: Likewise.
7659         * config/m68k/crti.s: Likewise.
7660         * config/m68k/crtn.s: Likewise.
7661         * config/m68k/lb1sf68.asm: Likewise.
7662         * config/m68k/linux-unwind.h: Likewise.
7663         * config/mcore/crti.asm: Likewise.
7664         * config/mcore/crtn.asm: Likewise.
7665         * config/mcore/lib1.asm: Likewise.
7666         * config/mips/linux-unwind.h: Likewise.
7667         * config/mips/loongson.h: Likewise.
7668         * config/mips/mips16.S: Likewise.
7669         * config/mmix/crti.asm: Likewise.
7670         * config/mmix/crtn.asm: Likewise.
7671         * config/pa/fptr.c: Likewise.
7672         * config/pa/hpux-unwind.h: Likewise.
7673         * config/pa/lib2funcs.asm: Likewise.
7674         * config/pa/linux-atomic.c: Likewise.
7675         * config/pa/linux-unwind.h: Likewise.
7676         * config/pa/milli64.S: Likewise.
7677         * config/pa/quadlib.c: Likewise.
7678         * config/pa/stublib.c: Likewise.
7679         * config/picochip/libgccExtras/adddi3.asm: Likewise.
7680         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
7681         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
7682         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
7683         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
7684         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
7685         * config/picochip/libgccExtras/divmod15.asm: Likewise.
7686         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
7687         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
7688         * config/picochip/libgccExtras/longjmp.asm: Likewise.
7689         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
7690         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
7691         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
7692         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
7693         * config/picochip/libgccExtras/setjmp.asm: Likewise.
7694         * config/picochip/libgccExtras/subdi3.asm: Likewise.
7695         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
7696         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
7697         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
7698         * config/rs6000/750cl.h: Likewise.
7699         * config/rs6000/altivec.h: Likewise.
7700         * config/rs6000/biarch64.h: Likewise.
7701         * config/rs6000/crtresfpr.asm: Likewise.
7702         * config/rs6000/crtresgpr.asm: Likewise.
7703         * config/rs6000/crtresxfpr.asm: Likewise.
7704         * config/rs6000/crtresxgpr.asm: Likewise.
7705         * config/rs6000/crtsavfpr.asm: Likewise.
7706         * config/rs6000/crtsavgpr.asm: Likewise.
7707         * config/rs6000/darwin-asm.h: Likewise.
7708         * config/rs6000/darwin-fallback.c: Likewise.
7709         * config/rs6000/darwin-fpsave.asm: Likewise.
7710         * config/rs6000/darwin-ldouble.c: Likewise.
7711         * config/rs6000/darwin-tramp.asm: Likewise.
7712         * config/rs6000/darwin-unwind.h: Likewise.
7713         * config/rs6000/darwin-vecsave.asm: Likewise.
7714         * config/rs6000/darwin-world.asm: Likewise.
7715         * config/rs6000/e500crtres32gpr.asm: Likewise.
7716         * config/rs6000/e500crtres64gpr.asm: Likewise.
7717         * config/rs6000/e500crtres64gprctr.asm: Likewise.
7718         * config/rs6000/e500crtrest32gpr.asm: Likewise.
7719         * config/rs6000/e500crtrest64gpr.asm: Likewise.
7720         * config/rs6000/e500crtresx32gpr.asm: Likewise.
7721         * config/rs6000/e500crtresx64gpr.asm: Likewise.
7722         * config/rs6000/e500crtsav32gpr.asm: Likewise.
7723         * config/rs6000/e500crtsav64gpr.asm: Likewise.
7724         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
7725         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
7726         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
7727         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
7728         * config/rs6000/eabi-ci.asm: Likewise.
7729         * config/rs6000/eabi-cn.asm: Likewise.
7730         * config/rs6000/eabi.asm: Likewise.
7731         * config/rs6000/linux-unwind.h: Likewise.
7732         * config/rs6000/linux64.h: Likewise.
7733         * config/rs6000/paired.h: Likewise.
7734         * config/rs6000/paired.md: Likewise.
7735         * config/rs6000/ppc64-fp.c: Likewise.
7736         * config/rs6000/ppu_intrinsics.h: Likewise.
7737         * config/rs6000/rs6000.h: Likewise.
7738         * config/rs6000/si2vmx.h: Likewise.
7739         * config/rs6000/sol-ci.asm: Likewise.
7740         * config/rs6000/sol-cn.asm: Likewise.
7741         * config/rs6000/spe.h: Likewise.
7742         * config/rs6000/spu2vmx.h: Likewise.
7743         * config/rs6000/sysv4.h: Likewise.
7744         * config/rs6000/tramp.asm: Likewise.
7745         * config/rs6000/vec_types.h: Likewise.
7746         * config/s390/linux-unwind.h: Likewise.
7747         * config/s390/tpf-unwind.h: Likewise.
7748         * config/score/crti.asm: Likewise.
7749         * config/score/crtn.asm: Likewise.
7750         * config/sh/crt1.asm: Likewise.
7751         * config/sh/crti.asm: Likewise.
7752         * config/sh/crtn.asm: Likewise.
7753         * config/sh/divtab-sh4-300.c: Likewise.
7754         * config/sh/divtab-sh4.c: Likewise.
7755         * config/sh/divtab.c: Likewise.
7756         * config/sh/lib1funcs-4-300.asm: Likewise.
7757         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
7758         * config/sh/lib1funcs.asm: Likewise.
7759         * config/sh/lib1funcs.h: Likewise.
7760         * config/sh/linux-atomic.asm: Likewise.
7761         * config/sh/linux-unwind.h: Likewise.
7762         * config/sh/shmedia.h: Likewise.
7763         * config/sh/sshmedia.h: Likewise.
7764         * config/sh/ushmedia.h: Likewise.
7765         * config/sparc/crtfastmath.c: Likewise.
7766         * config/sparc/linux-unwind.h: Likewise.
7767         * config/sparc/sol2-c1.asm: Likewise.
7768         * config/sparc/sol2-ci.asm: Likewise.
7769         * config/sparc/sol2-cn.asm: Likewise.
7770         * config/spu/divmodti4.c: Likewise.
7771         * config/spu/divv2df3.c: Likewise.
7772         * config/spu/float_disf.c: Likewise.
7773         * config/spu/float_unsdidf.c: Likewise.
7774         * config/spu/float_unsdisf.c: Likewise.
7775         * config/spu/float_unssidf.c: Likewise.
7776         * config/spu/mfc_multi_tag_release.c: Likewise.
7777         * config/spu/mfc_multi_tag_reserve.c: Likewise.
7778         * config/spu/mfc_tag_release.c: Likewise.
7779         * config/spu/mfc_tag_reserve.c: Likewise.
7780         * config/spu/mfc_tag_table.c: Likewise.
7781         * config/spu/multi3.c: Likewise.
7782         * config/spu/spu_internals.h: Likewise.
7783         * config/spu/spu_intrinsics.h: Likewise.
7784         * config/spu/spu_mfcio.h: Likewise.
7785         * config/spu/vec_types.h: Likewise.
7786         * config/spu/vmx2spu.h: Likewise.
7787         * config/stormy16/stormy16-lib2.c: Likewise.
7788         * config/svr4.h: Likewise.
7789         * config/sync.c: Likewise.
7790         * config/v850/lib1funcs.asm: Likewise.
7791         * config/vxlib-tls.c: Likewise.
7792         * config/vxlib.c: Likewise.
7793         * config/vxworks-dummy.h: Likewise.
7794         * config/xtensa/crti.asm: Likewise.
7795         * config/xtensa/crtn.asm: Likewise.
7796         * config/xtensa/ieee754-df.S: Likewise.
7797         * config/xtensa/ieee754-sf.S: Likewise.
7798         * config/xtensa/lib1funcs.asm: Likewise.
7799         * config/xtensa/lib2funcs.S: Likewise.
7800         * config/xtensa/linux-unwind.h: Likewise.
7801         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
7802         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
7803         * coretypes.h: Likewise.
7804         * crtstuff.c: Likewise.
7805         * defaults.h: Likewise.
7806         * dwarf2.h: Likewise.
7807         * emutls.c: Likewise.
7808         * gbl-ctors.h: Likewise.
7809         * gcov-io.h: Likewise.
7810         * ginclude/float.h: Likewise.
7811         * ginclude/iso646.h: Likewise.
7812         * ginclude/stdarg.h: Likewise.
7813         * ginclude/stdbool.h: Likewise.
7814         * ginclude/stddef.h: Likewise.
7815         * ginclude/stdfix.h: Likewise.
7816         * ginclude/stdint-gcc.h: Likewise.
7817         * ginclude/tgmath.h: Likewise.
7818         * gthr-aix.h: Likewise.
7819         * gthr-dce.h: Likewise.
7820         * gthr-gnat.c: Likewise.
7821         * gthr-gnat.h: Likewise.
7822         * gthr-lynx.h: Likewise.
7823         * gthr-mipssde.h: Likewise.
7824         * gthr-nks.h: Likewise.
7825         * gthr-posix.c: Likewise.
7826         * gthr-posix.h: Likewise.
7827         * gthr-posix95.h: Likewise.
7828         * gthr-rtems.h: Likewise.
7829         * gthr-single.h: Likewise.
7830         * gthr-solaris.h: Likewise.
7831         * gthr-tpf.h: Likewise.
7832         * gthr-vxworks.h: Likewise.
7833         * gthr-win32.h: Likewise.
7834         * gthr.h: Likewise.
7835         * libgcc2.c: Likewise.
7836         * libgcc2.h: Likewise.
7837         * libgcov.c: Likewise.
7838         * tsystem.h: Likewise.
7839         * typeclass.h: Likewise.
7840         * unwind-c.c: Likewise.
7841         * unwind-compat.h: Likewise.
7842         * unwind-dw2-fde-compat.c: Likewise.
7843         * unwind-dw2-fde-darwin.c: Likewise.
7844         * unwind-dw2-fde-glibc.c: Likewise.
7845         * unwind-dw2-fde.c: Likewise.
7846         * unwind-dw2-fde.h: Likewise.
7847         * unwind-dw2.c: Likewise.
7848         * unwind-dw2.h: Likewise.
7849         * unwind-generic.h: Likewise.
7850         * unwind-pe.h: Likewise.
7851         * unwind-sjlj.c: Likewise.
7852         * unwind.inc: Likewise.
7853         * config/arm/neon-gen.ml: Change generated copyright header to
7854         refer to version 3 of the GNU General Public License with
7855         version 3.1 of the GCC Runtime Library Exception and to point
7856         readers at the COPYING3 and COPYING3.RUNTIME files and the
7857         FSF's license web page.
7858         * config/arm/arm_neon.h: Regenerate.
7859
7860 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
7861
7862         * config/cris/cris.md: Change copyright header to refer to version
7863         3 of the GNU General Public License.
7864         * doc/install.texi2html: Change copyright header to refer to version
7865         3 of the GNU General Public License and to point readers at the
7866         COPYING3 file and the FSF's license web page.
7867         * config/vax/linux.h: Likewise.
7868
7869 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
7870
7871         * config/i386/i386.md (cmpcc): New.
7872         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
7873         (sync_compare_and_swap_cc*): Delete.
7874
7875         * config/s390/s390.c (s390_compare_emitted): Remove.
7876         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
7877         s390_compare_emitted used to be handled.  Assert that modes match.
7878         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
7879         refer to sync_compare_and_swap_ccsi.
7880         * config/s390/s390.h (s390_compare_emitted): Remove.
7881         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
7882         instead of s390_compare_emitted.
7883         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
7884         instead of s390_compare_emitted.
7885         * config/s390/s390.md (cmpcc): New.
7886         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
7887         CC_REGNUM, do not pretend it's set.
7888         (sync_compare_and_swap_cc*): Delete.
7889         * config/s390/predicates.md (cc_reg_operand): New.
7890
7891         * expr.c (sync_compare_and_swap_cc): Delete.
7892         * optabs.h (sync_compare_and_swap_cc): Delete.
7893         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
7894         is being used with can_compare_p.
7895         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
7896         (find_cc_set): New.
7897         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
7898         look for a MODE_CC set instead.  Use emit_store_flag.
7899         (expand_compare_and_swap_loop): Likewise, with some additional
7900         complication to avoid a force_reg when useless.  Use
7901         emit_cmp_and_jump_insns.
7902         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
7903         * doc/md.texi (sync_compare_and_swap_cc): Merge with
7904         sync_compare_and_swap documentation.
7905
7906 2009-04-09  Jan Hubicka  <jh@suse.cz>
7907
7908         * except.c (find_prev_try): Break out from ....
7909         (duplicate_eh_regions): ... here; properly update prev_try pointers
7910         when duplication part of tree.
7911         (dump_eh_tree): Improve dumping.
7912         (verify_eh_region): New.
7913         (verify_eh_tree): Use it.
7914
7915 2009-04-06  Richard Guenther  <rguenther@suse.de>
7916
7917         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
7918         &ARRAY addresses by adjusting their types and prepending
7919         a conversion.
7920         * tree-cfg.c (verify_gimple_assign_single): Verify that
7921         addresses are correct.
7922
7923 2009-04-09  Richard Guenther  <rguenther@suse.de>
7924
7925         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
7926         indices into an array reference if possible.
7927         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
7928         Fold POINTER_PLUS_EXPR statements with invariant address.
7929
7930 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
7931
7932         PR target/39634
7933         * config.gcc (powerpc64-*-linux*): Always build biarch.
7934
7935 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
7936
7937         PR c/39613
7938         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
7939         it and pedwarn if this results in an INTEGER_CST.
7940
7941 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7942
7943         * doc/install.texi: Update minimum GMP version.  Remove obsolete
7944         text in MPFR section.
7945
7946 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
7947
7948         * dwarf2out.c (class_scope_p): New static inline.
7949         (class_or_namespace_scope_p): Use it.
7950         (gen_variable_die): Use DW_TAG_member tag for static data member
7951         declarations instead of DW_TAG_variable.
7952
7953         PR middle-end/39573
7954         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
7955         variables.
7956
7957 2009-04-08  Richard Guenther  <rguenther@suse.de>
7958
7959         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
7960         valueize random data.
7961
7962 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
7963
7964         * config.gcc (aix tm_file):  Add aix-stdint.h.
7965         (aix tm clause use_gcc_stdint):  Set to wrap.
7966         * config/rs6000/aix-stdint.h:  New file.
7967
7968 2009-04-08  Richard Guenther  <rguenther@suse.de>
7969
7970         PR middle-end/36291
7971         * tree-dfa.c (add_referenced_var): Do not recurse into
7972         global initializers.
7973         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
7974         exposed variables.
7975         (fold_const_aggregate_ref): Likewise.
7976
7977 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
7978
7979         * recog.c (ordered_comparison_operator): New.
7980         * gensupport.c (std_preds): Add it.
7981         * doc/md.texi (Machine-Independent Predicates): Document it.
7982
7983 2009-04-08  Jan Hubicka  <jh@suse.cz>
7984
7985         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
7986         * function.h (rtl_eh): Remove exception_handler_label_map.
7987         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
7988         remove_exception_handler_label, for_each_eh_label_1): Remove.
7989         (rtl_remove_unreachable_regions): Remove.
7990         (convert_from_eh_region_ranges): Do not remove unreachable regions.
7991         (find_exception_handler_labels): Don't build the hashtable.
7992         (maybe_remove_eh_handler): Remove.
7993         (for_each_eh_label): Rewrite to walk the tree.
7994         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
7995         * except.h (maybe_remove_eh_handler): Remove.
7996         * passes.c (init_optimization_passes): Schedule second EH cleanup
7997         before out-of-ssa.
7998         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
7999         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
8000
8001 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
8002
8003         * genoutput.c (validate_optab_operands): New.
8004         (gen_insn, gen_expand): Call it.
8005
8006         * genflags.c (gen_insn): Detect misused iterators.
8007         (main): Pass line_no to gen_insn, exit with status 1 on error.
8008
8009         * genextract.c (line_no): Make global.
8010         (VEC_safe_set_locstr): Change assertion to error message.
8011         (main): Exit with status 1 on error.
8012
8013 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
8014
8015         PR c/39614
8016         PR c/39673
8017         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
8018         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
8019         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
8020         * c-convert.c (convert): Do not call fold on results of conversion
8021         functions when the result is a C_MAYBE_CONST_EXPR.
8022         * c-parser.c (c_parser_postfix_expression): Do not fold condition
8023         of __builtin_choose_expr.
8024         * c-typeck.c (remove_c_maybe_const_expr): New.
8025         (build_unary_op, build_conditional_expr, build_compound_expr,
8026         build_binary_op, c_objc_common_truthvalue_conversion): Call
8027         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
8028         integer operands.
8029
8030 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
8031
8032         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
8033         CODE to produce a new one. Add a prototype to use fold_convert_const
8034
8035 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
8036
8037         PR bootstrap/39660
8038         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
8039         mix declarations and code.
8040
8041 2009-04-08  Ben Elliston  <bje@au.ibm.com>
8042
8043         * gcc.c: Replace `CC' with `GCC' throughout.
8044
8045 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
8046
8047         * doc/invoke.texi: Document Atom support.
8048
8049 2009-04-07  Jason Merrill  <jason@redhat.com>
8050
8051         PR c++/25185
8052         * c-common.h, c-common.c: Add flag_pretty_templates.
8053         * c-opts.c (c_common_handle_option): Set it.
8054         * c.opt: Add -fno-pretty-templates.
8055         * doc/invoke.texi (C++ Dialect Options): Likewise.
8056
8057 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
8058
8059         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
8060         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
8061         (ia64_expand_builtin): Likewise.
8062
8063 2009-04-07  Martin Jambor  <mjambor@suse.cz>
8064
8065         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
8066         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
8067         ADDR_EXPRS are include too.
8068
8069 2009-04-07  Richard Guenther  <rguenther@suse.de>
8070
8071         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
8072         decls are only used if passes as parameters or if they are
8073         local statics and the call is not to a builtin.
8074         (call_may_clobber_ref_p_1): Likewise.
8075
8076 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8077
8078         * expr.c (do_store_flag): Remove last argument.  Simplify code
8079         to avoid duplication of tests already done by can_compare_p.
8080         (expand_expr_real_1): Adjust caller.
8081
8082 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8083
8084         * optabs.c (can_compare_p): Test the predicate of a
8085         cbranch and cstore pattern.
8086
8087 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8088
8089         * expr.c (convert_move): Use emit_store_flag instead of
8090         "emulating" it.
8091
8092 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
8093
8094         * config/i386/i386.c (ix86_compare_emitted): Remove.
8095         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
8096         ix86_compare_op0 like ix86_compare_emitted used to be handled.
8097         * config/i386/i386.h (ix86_compare_emitted): Remove.
8098         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
8099         instead of ix86_compare_emitted.
8100         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
8101
8102 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
8103
8104         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
8105         Add t-sysroot-suffix to tmake_file.
8106         * config/print-sysroot-suffix.sh: New file.
8107         * config/t-sysroot-suffix: New file.
8108
8109 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8110
8111         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
8112         as the latter produces a warning when the target does not support
8113         infinity.
8114
8115 2009-04-07  Ben Elliston  <bje@au.ibm.com>
8116
8117         * dfp.c: Replace type punning assignments with memcpy throughout.
8118         * Makefile.in (dfp.o-warn): Remove.
8119
8120 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
8121
8122         PR target/39634
8123         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
8124         Include soft-fp/t-softfp after rs6000/t-linux64.
8125
8126 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8127
8128         * stor-layout.c (set_sizetype): Use the full precision of their
8129         machine mode for bitsize types.
8130
8131 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
8132
8133         * config/i386/i386.md: Revert 2 accidental checkins.
8134
8135 2009-04-06  Joey Ye  <joey.ye@intel.com>
8136             Xuepeng Guo  <xuepeng.guo@intel.com>
8137             H.J. Lu  <hongjiu.lu@intel.com>
8138
8139         Atom pipeline model, tuning and insn selection.
8140         * config.gcc (atom): Add atom config options and target.
8141
8142         * config/i386/atom.md: New.
8143
8144         * config/i386/i386.c (atom_cost): New cost.
8145         (m_ATOM): New macro flag.
8146         (initial_ix86_tune_features): Set m_ATOM.
8147         (x86_accumulate_outgoing_args): Likewise.
8148         (x86_arch_always_fancy_math_387): Likewise.
8149         (processor_target): Add Atom cost.
8150         (cpu_names): Add Atom cpu name.
8151         (override_options): Set Atom ISA.
8152         (ix86_issue_rate): New case PROCESSOR_ATOM.
8153         (ix86_adjust_cost): Likewise.
8154
8155         * config/i386/i386.h (TARGET_ATOM): New target macro.
8156         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
8157         (TARGET_OPT_AGU): New target option.
8158         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
8159         (processor_type): Add PROCESSOR_ATOM.
8160
8161         * config/i386/i386.md (cpu): Add new value "atom".
8162         (use_carry, movu): New attr.
8163         (atom.md): Include atom.md.
8164         (adddi3_carry_rex64): Set attr "use_carry".
8165         (addqi3_carry): Likewise.
8166         (addhi3_carry): Likewise.
8167         (addsi3_carry): Likewise.
8168         (*addsi3_carry_zext): Likewise.
8169         (subdi3_carry_rex64): Likewise.
8170         (subqi3_carry): Likewise.
8171         (subhi3_carry): Likewise.
8172         (subsi3_carry): Likewise.
8173         (x86_movdicc_0_m1_rex64): Likewise.
8174         (*x86_movdicc_0_m1_se): Likewise.
8175         (x86_movsicc_0_m1): Likewise.
8176         (*x86_movsicc_0_m1_se): Likewise.
8177         (*adddi_1_rex64): Emit add insn as much as possible.
8178         (*addsi_1): Likewise.
8179         (return_internal): Set atom_unit.
8180         (return_internal_long): Likewise.
8181         (return_pop_internal): Likewise.
8182         (*rcpsf2_sse): Set atom_sse_attr attr.
8183         (*qrt<mode>2_sse): Likewise.
8184         (*prefetch_sse): Likewise.
8185
8186         * config/i386/i386-c.c (ix86_target_macros_internal): New case
8187         PROCESSOR_ATOM.
8188         (ix86_target_macros_internal): Likewise.
8189
8190         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
8191         (*prefetch_sse_rex): Likewise.
8192         (sse_rcpv4sf2): Likewise.
8193         (sse_vmrcpv4sf2): Likewise.
8194         (sse_sqrtv4sf2): Likewise.
8195         (<sse>_vmsqrt<mode>2): Likewise.
8196         (sse_ldmxcsr): Likewise.
8197         (sse_stmxcsr): Likewise.
8198         (*sse_sfence): Likewise.
8199         (sse2_clflush): Likewise.
8200         (*sse2_mfence): Likewise.
8201         (*sse2_lfence): Likewise.
8202         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
8203         (<sse>_movup<ssemodesuffixf2c>): Likewise.
8204         (avx_movdqu<avxmodesuffix>): Likewise.
8205         (avx_lddqu<avxmodesuffix>): Likewise.
8206         (sse2_movntv2di): Change attr "type" to "ssemov".
8207         (sse2_movntsi): Likewise.
8208         (rsqrtv8sf2): Change attr "type" to "sseadd".
8209         (sse3_addsubv2df3): Set attr "atom_unit".
8210         (sse3_h<plusminus_insn>v4sf3): Likewise.
8211         (*sse2_pmaddwd): Likewise.
8212         (*vec_extractv2di_1_rex64): Likewise.
8213         (*vec_extractv2di_1_avx): Likewise.
8214         (sse2_psadbw): Likewise.
8215         (ssse3_phaddwv8hi3): Likewise.
8216         (ssse3_phaddwv4hi3): Likewise.
8217         (ssse3_phadddv4si3): Likewise.
8218         (ssse3_phadddv2si3): Likewise.
8219         (ssse3_phaddswv8hi3): Likewise.
8220         (ssse3_phaddswv4hi3): Likewise.
8221         (ssse3_phsubwv8hi3): Likewise.
8222         (ssse3_phsubwv4hi3): Likewise.
8223         (ssse3_phsubdv4si3): Likewise.
8224         (ssse3_phsubdv2si3): Likewise.
8225         (ssse3_phsubswv8hi3): Likewise.
8226         (ssse3_phsubswv4hi3): Likewise.
8227         (ssse3_pmaddubsw128): Likewise.
8228         (sse3_pmaddubsw: Likewise.
8229         (ssse3_palignrti): Likewise.
8230         (ssse3_palignrdi): Likewise.
8231
8232 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
8233
8234         * doc/install.texi (Specific): Fix two cross-references to MinGW.
8235
8236 2009-04-06  Richard Guenther  <rguenther@suse.de>
8237
8238         PR tree-optimization/28868
8239         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
8240         of which PHI results we inserted.
8241         (insert_into_preds_of_block): Record inserted PHIs.
8242         (eliminate): Eliminate redundant PHI nodes.
8243         (init_pre): Init inserted_phi_names.
8244
8245 2009-04-06  Richard Guenther  <rguenther@suse.de>
8246
8247         PR tree-optimization/39643
8248         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
8249         IMAGPART_EXPRs of complex constants.
8250         (execute_fold_all_builtins): If we folded a call queue
8251         TODO_update_address_taken.
8252
8253 2009-04-06  Jan Hubicka  <jh@suse.cz>
8254
8255         PR middle-end/39659
8256         * except.c (remove_unreachable_regions): Propagate may_contain_throw
8257         flag.
8258
8259 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
8260
8261         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
8262         delay slot.
8263         (ic_invalidate_array): Likewise.
8264
8265 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
8266
8267         * calls.c (emit_library_call_value_1): Fix a problem with parameter
8268         alignment for library calls.
8269
8270 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
8271
8272         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
8273         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
8274         * config/i386/mingw-stdint.h:  New file.
8275
8276 2009-04-05  Richard Guenther  <rguenther@suse.de>
8277
8278         PR tree-optimization/39648
8279         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
8280         our &A vs. &A[0] IL deficiencies.
8281
8282 2009-04-04  Jan Hubicka  <jh@suse.cz>
8283
8284         * except.c (sjlj_find_directly_reachable_regions): Be ready for
8285         removed toplevel regions.
8286         (sjlj_mark_call_sites): Likewise.
8287
8288 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
8289
8290         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
8291         (cygwin tm clause use_gcc_stdint):  Set to wrap.
8292         * config/i386/cygwin-stdint.h:  New file.
8293
8294 2009-04-04  Richard Guenther  <rguenther@suse.de>
8295
8296         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
8297         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
8298         single-argument PHIs if we are in loop-closed SSA form.
8299         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
8300         for the pre-condition.
8301         (slpeel_tree_peel_loop_to_edge): Likewise.
8302         (vect_build_loop_niters): Take an optional sequence to append stmts.
8303         (vect_generate_tmps_on_preheader): Likewise.
8304         (vect_do_peeling_for_loop_bound): Take extra guards for the
8305         pre-condition.
8306         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
8307         the cost model check.
8308         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
8309         guards if we are going to peel.  Do not apply versioning in that case.
8310         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
8311         (vect_do_peeling_for_loop_bound): Likewise.
8312         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
8313         loop bound only record extra pre-conditions, do not apply loop
8314         versioning.
8315
8316 2009-04-04  Richard Guenther  <rguenther@suse.de>
8317
8318         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
8319         renaming code.
8320
8321 2009-04-04  Jan Hubicka  <jh@suse.cz>
8322
8323         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
8324         last_basic_block for size of bb->index indexed array.
8325         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
8326         compute_out, link_btr_uses, build_btr_def_use_webs,
8327         build_btr_def_use_webs, migrate_btr_defs): Likewise.
8328
8329 2009-04-04  Jan Hubicka  <jh@suse.cz>
8330
8331         * except.c (remove_eh_handler_and_replace): Break out from ...
8332         (remove_eh_handler): ... here.
8333         (bring_to_root): New function.
8334         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
8335         handled ones, bring others to root of tree.
8336
8337 2009-04-04  Jan Hubicka  <jh@suse.cz>
8338
8339         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
8340         (all_phis_safe_to_merge): New function.
8341         (update_info): New structure.
8342         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
8343         (cleanup_empty_eh): Update SSA if possible.
8344
8345 2009-04-04  Richard Guenther  <rguenther@suse.de>
8346
8347         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
8348         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
8349         (append_vuse): Likewise.
8350
8351 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
8352
8353         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
8354         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
8355         instead of REG_UNSAVED for DW_CFA_undefined.
8356         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
8357         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
8358         outermost frame.
8359
8360 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
8361
8362         PR target/39501
8363         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
8364         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
8365         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
8366
8367 2009-04-04  Richard Guenther  <rguenther@suse.de>
8368
8369         PR tree-optimization/8781
8370         PR tree-optimization/37892
8371         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
8372         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
8373         (valueize_refs): Call it for *& valueizations.
8374         (shared_reference_ops_from_ref): Rename to ...
8375         (valueize_shared_reference_ops_from_ref): ... this and valueize.
8376         (shared_reference_ops_from_call): Rename to ...
8377         (valueize_shared_reference_ops_from_call): ... this and valueize.
8378         (vn_reference_lookup): Update.
8379         (visit_reference_op_call): Likewise.
8380         * tree-ssa-pre.c (phi_translate_1): Fold *&.
8381         (eliminate): Value-replace the call address in call statements.
8382
8383 2009-04-04  Richard Guenther  <rguenther@suse.de>
8384
8385         PR tree-optimization/39636
8386         * tree-ssa-forwprop.c
8387         (forward_propagate_addr_into_variable_array_index): Check for
8388         GIMPLE_ASSIGN before accessing the rhs code.
8389
8390 2009-04-03  Jason Merrill  <jason@redhat.com>
8391
8392         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
8393
8394 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
8395
8396         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
8397         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
8398         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
8399         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
8400         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
8401         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
8402         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
8403         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
8404         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
8405         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
8406         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
8407         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
8408         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
8409         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
8410         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
8411         Use fr_reg_or_fp01_operand instead of fr_register_operand
8412
8413         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
8414         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
8415         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
8416
8417 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
8418
8419         PR rtl-optimization/39607
8420         PR rtl-optimization/39631
8421
8422         Revert:
8423
8424         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
8425         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
8426         instead of DF_LR_OUT.
8427         * ira-lives.c (process_bb_node_lives): Ditto.
8428         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
8429         instead of DF_LR_{OUT,IN}.
8430         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
8431         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
8432
8433 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
8434
8435         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
8436         (execute_lower_omp): Always run but take the short way out if -fopenmp
8437         is not given.
8438         (gate_lower_omp): Remove, forcing the pass manager to always run the
8439         pass and always set PROP_gimple_lomp.
8440         (pass_lower_omp): Remove gate function.
8441         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
8442         PROP_trees.  Instead, require it.
8443         * ipa-cp.c (pass_ipa_cp): Likewise.
8444         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
8445         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
8446         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
8447         and PROP_gimple_leh.
8448
8449 2009-04-03  Richard Guenther  <rguenther@suse.de>
8450
8451         PR middle-end/13146
8452         PR tree-optimization/23940
8453         PR tree-optimization/33237
8454         PR middle-end/33974
8455         PR middle-end/34093
8456         PR tree-optimization/36201
8457         PR tree-optimization/36230
8458         PR tree-optimization/38049
8459         PR tree-optimization/38207
8460         PR tree-optimization/38230
8461         PR tree-optimization/38301
8462         PR tree-optimization/38585
8463         PR middle-end/38895
8464         PR tree-optimization/38985
8465         PR tree-optimization/39299
8466         * tree-ssa-structalias.h: Remove.
8467         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
8468         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
8469         (struct vuse_element_d): Remove.
8470         (struct vuse_vec_d): Likewise.
8471         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
8472         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
8473         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
8474         VUSE_ELEMENT_VAR): Likewise.
8475         (struct voptype_d): Likewise.
8476         (NUM_VOP_FREE_BUCKETS): Likewise.
8477         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
8478         (struct stmt_operands_d): Remove.
8479         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
8480         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
8481         VDEF_NUM, VDEF_VECT): Likewise.
8482         (copy_virtual_operands): Remove.
8483         (operand_build_cmp): Likewise.
8484         (create_ssa_artificial_load_stmt): Likewise.
8485         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
8486         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
8487         vuse_index and mayuse_index members.  Pack and move done and iter_type
8488         members to the front.
8489         (SSA_OP_VMAYUSE): Remove.
8490         (SSA_OP_VIRTUAL_USES): Adjust.
8491         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
8492         (unlink_stmt_vdef): Declare.
8493         (add_to_addressable_set): Remove.
8494         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
8495         (vrp_visit_stmt): Likewise.
8496         * doc/tree-ssa.texi (Alias analysis): Update.
8497         * doc/invoke.texi (max-aliased-vops): Remove docs.
8498         (avg-aliased-vops): Likewise.
8499         * tree-into-ssa.c (syms_to_rename): Remove.
8500         (need_to_update_vops_p): Likewise.
8501         (need_to_initialize_update_ssa_p): Rename to ...
8502         (update_ssa_initialized_fn): ... this.  Track function we are
8503         initialized for.
8504         (symbol_marked_for_renaming): Simplify.
8505         (add_new_name_mapping): Do not set need_to_update_vops_p.
8506         (dump_currdefs): Use SYMS_TO_RENAME.
8507         (rewrite_update_stmt): Always walk all uses/defs.
8508         (dump_update_ssa): Adjust.
8509         (init_update_ssa): Take function argument.  Track what we are
8510         initialized for.
8511         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
8512         (create_new_def_for): Initialize for cfun, assert we are initialized
8513         for cfun.
8514         (mark_sym_for_renaming): Simplify.
8515         (mark_set_for_renaming): Do not initialize update-ssa.
8516         (need_ssa_update_p): Simplify.  Take function argument.
8517         (name_mappings_registered_p): Assert we ask for the correct function.
8518         (name_registered_for_update_p): Likewise.
8519         (ssa_names_to_replace): Likewise.
8520         (release_ssa_name_after_update_ssa): Likewise.
8521         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
8522         (dump_decl_set): Do not print a newline.
8523         (debug_decl_set): Do it here.
8524         (dump_update_ssa): And here.
8525         * tree-ssa-loop-im.c (move_computations): Adjust.
8526         (movement_possibility): Likewise.
8527         (determine_max_movement): Likewise.
8528         (gather_mem_refs_stmt): Likewise.
8529         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
8530         or NAME_MEMORY_TAG.
8531         * tree-complex.c (update_all_vops): Remove.
8532         (expand_complex_move): Adjust.
8533         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
8534         Simplify test for memory referencing statement.  Exclude
8535         non-invariant ADDR_EXPRs.
8536         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
8537         * tree-loop-distribution.c (generate_memset_zero): Adjust.
8538         (rdg_flag_uses): Likewise.
8539         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
8540         related code.
8541         (tree_optimize_tail_calls_1): Also split the
8542         edge from the entry block if we have degenerate PHI nodes in
8543         the first basic block.
8544         * tree.c (init_ttree): Remove memory-tag related code.
8545         (tree_code_size): Likewise.
8546         (tree_node_structure): Likewise.
8547         (build7_stat): Re-write to be build6_stat.
8548         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
8549         (SSA_VAR_P): Adjust.
8550         (struct tree_memory_tag): Remove.
8551         (struct tree_memory_partition_tag): Likewise.
8552         (union tree_node): Adjust.
8553         (build7): Re-write to be build6.
8554         * tree-pass.h (pass_reset_cc_flags): Remove.
8555         (TODO_update_address_taken): New flag.
8556         (pass_simple_dse): Remove.
8557         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
8558         * params.h (MAX_ALIASED_VOPS): Remove.
8559         (AVG_ALIASED_VOPS): Likewise.
8560         * omp-low.c (expand_omp_taskreg): Update SSA form.
8561         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
8562         aliases the lhs in a copy stmt.
8563         * tree-ssa-dse.c (struct address_walk_data): Remove.
8564         (memory_ssa_name_same): Likewise.
8565         (memory_address_same): Likewise.
8566         (get_kill_of_stmt_lhs): Likewise.
8567         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
8568         unused stores.  Look through PHI nodes into post-dominated regions.
8569         (dse_optimize_stmt): Simplify.  Properly remove stores.
8570         (tree_ssa_dse): Compute dominators.
8571         (execute_simple_dse): Remove.
8572         (pass_simple_dse): Likewise.
8573         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
8574         gimple_loaded_syms and gimple_stored_syms computation.
8575         * toplev.c (dump_memory_report): Dump alias and pta stats.
8576         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
8577         (vn_reference_eq): Likewise.
8578         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
8579         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
8580         valueize_vuses): Remove.
8581         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
8582         (get_def_ref_stmt_vuse): ... this.
8583         (vn_reference_lookup_2): New function.
8584         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
8585         walking equivalent vuses.  Simplify.
8586         (vn_reference_lookup): Likewise.
8587         (vn_reference_insert): Likewise.
8588         (vn_reference_insert_pieces): Likewise.
8589         (visit_reference_op_call): Simplify.
8590         (visit_reference_op_load): Likewise.
8591         (visit_reference_op_store): Likewise.
8592         (init_scc_vn): Remove shared_lookup_vuses initialization.
8593         (free_scc_vn): Remove shared_lookup_vuses freeing.
8594         (sort_vuses, sort_vuses_heap): Remove.
8595         (get_ref_from_reference_ops): Export.
8596         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
8597         vector with single vuse pointer.
8598         (vn_reference_lookup_pieces, vn_reference_lookup,
8599         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
8600         (shared_vuses_from_stmt): Remove.
8601         (get_ref_from_reference_ops): Declare.
8602         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
8603         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
8604         memory-tag related code.
8605         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
8606         (likely_value): Add comment, skip static-chain of call statements.
8607         (surely_varying_stmt_p): Adjust.
8608         (gimplify_and_update_call_from_tree): Likewise.
8609         (execute_fold_all_builtins): Do not rebuild alias info.
8610         (gimplify_and_update_call_from_tree): Properly update VOPs.
8611         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
8612         (copy_ref_info): Remove memory-tag related code.
8613         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
8614         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
8615         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
8616         computation.
8617         * tree-ssa-dom.c (gimple_p): Remove typedef.
8618         (eliminate_redundant_computations): Adjust.
8619         (record_equivalences_from_stmt): Likewise.
8620         (avail_expr_hash): Likewise.
8621         (avail_expr_eq): Likewise.
8622         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
8623         (stmt_makes_single_load): Likewise.
8624         (stmt_makes_single_store): Likewise.
8625         * tree-ssa-alias.c: Rewrite completely.
8626         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
8627         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
8628         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
8629         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
8630         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
8631         Remove public functions.
8632         (pass_reset_cc_flags): Remove.
8633         (pass_build_alias): Move ...
8634         * tree-ssa-structalias.c (pass_build_alias): ... here.
8635         * tree-ssa-alias.c (may_be_aliased): Move ...
8636         * tree-flow-inline.h (may_be_aliased): ... here.
8637         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
8638         count_uses_and_derefs): Move ...
8639         * gimple.c: ... here.
8640         * gimple.h (count_uses_and_derefs): Declare.
8641         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
8642         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
8643         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
8644         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
8645         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
8646         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
8647         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
8648         New functions.
8649         * tree-dfa.c (refs_may_alias_p): Move ...
8650         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
8651         * tree-ssa-alias.h: New file.
8652         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
8653         (statement_sink_location): Likewise.
8654         * opts.c (decode_options): Do not adjust max-aliased-vops or
8655         avg-aliased-vops values.
8656         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
8657         (TV_CALL_CLOBBER): Likewise.
8658         (TV_FLOW_SENSITIVE): Likewise.
8659         (TV_FLOW_INSENSITIVE): Likewise.
8660         (TV_MEMORY_PARTITIONING): Likewise.
8661         (TV_ALIAS_STMT_WALK): New timevar.
8662         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
8663         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
8664         (get_address_description): Remove memory-tag related code.
8665         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
8666         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
8667         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
8668         and immediate uses in statements.  Document.
8669         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
8670         (dump_symbols): Remove.
8671         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
8672         * alias.c (get_deref_alias_set): New function split out from ...
8673         (get_alias_set): ... here.
8674         * alias.h (get_deref_alias_set): Declare.
8675         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
8676         type parameter.  Remove restrict pointer handling.  Create a
8677         ref-all pointer in case type-based alias sets do not conflict.
8678         (vect_analyze_data_refs): Remove SMT related code.
8679         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
8680         (vectorizable_load): Likewise.
8681         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
8682         (DR_SYMBOL_TAG, DR_VOPS): Remove.
8683         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
8684         Ignore vops and SMTs.
8685         (dr_analyze_alias): Likewise..
8686         (free_data_ref): Likewise.
8687         (create_data_ref): Likewise.
8688         (analyze_all_data_dependences): Likewise.
8689         (get_references_in_stmt): Adjust.
8690         * tree-flow-inline.h (gimple_aliases_computed_p,
8691         gimple_addressable_vars, gimple_call_clobbered_vars,
8692         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
8693         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
8694         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
8695         gimple_mem_ref_stats): Remove.
8696         (gimple_vop): New function.
8697         (op_iter_next_use): Remove vuses and mayuses cases.
8698         (op_iter_next_def): Remove vdefs case.
8699         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
8700         (clear_and_done_ssa_iter): Do not set removed fields.
8701         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
8702         Assert we are not iterating over vuses or vdefs if not also
8703         iterating over uses or defs.
8704         (op_iter_init_use): Likewise.
8705         (op_iter_init_def): Likewise.
8706         (op_iter_next_vdef): Remove.
8707         (op_iter_next_mustdef): Likewise.
8708         (op_iter_init_vdef): Likewise.
8709         (compare_ssa_operands_equal): Likewise.
8710         (link_use_stmts_after): Handle vuse operand.
8711         (is_call_used): Use is_call_clobbered.
8712         (is_call_clobbered): Global variables are always call clobbered,
8713         query the call-clobbers bitmap.
8714         (mark_call_clobbered): Ignore global variables.
8715         (clear_call_clobbered): Likewise.
8716         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
8717         virtual operands sanity check.
8718         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
8719         Remove.
8720         (TARGET_MEM_REF): Remove TMR_TAG operand.
8721         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
8722         Remove call-clobber related code.
8723         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
8724         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
8725         partitions or escape reason.
8726         (get_single_def_stmt, get_single_def_stmt_from_phi,
8727         get_single_def_stmt_with_phi): Remove.
8728         (dump_referenced_vars): Tidy.
8729         (get_ref_base_and_extent): Allow bare decls.
8730         (collect_dfa_stats): Adjust.
8731         * graphite.c (rename_variables_in_stmt): Adjust.
8732         (graphite_copy_stmts_from_block): Likewise.
8733         (translate_clast): Likewise.
8734         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
8735         (EXPR_DIES): New.
8736         (translate_vuse_through_block): Use the oracle.
8737         (phi_translate_1): Adjust.
8738         (value_dies_in_block_x): Use the oracle.  Cache the outcome
8739         in EXPR_DIES.
8740         (valid_in_sets): Check if the VUSE for
8741         a REFERENCE is available.
8742         (eliminate): Do not remove stmts during elimination,
8743         instead queue and remove them afterwards.
8744         (do_pre): Do not rebuild alias info.
8745         (pass_pre): Run TODO_rebuild_alias before PRE.
8746         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
8747         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
8748         (mark_all_v_defs_stmt): Remove.
8749         (mark_all_v_defs_seq): Adjust.
8750         (sra_replace): Likewise.
8751         (scalarize_use): Likewise.
8752         (scalarize_copy): Likewise.
8753         (scalarize_init): Likewise.
8754         (scalarize_ldst): Likewise.
8755         (todoflags): Remove.
8756         (tree_sra): Do not rebuild alias info.
8757         (tree_sra_early): Adjust.
8758         (pass_sra): Run TODO_update_address_taken before SRA.
8759         * tree-predcom.c (set_alias_info): Remove.
8760         (prepare_initializers_chain): Do not call it.
8761         (mark_virtual_ops_for_renaming): Adjust.
8762         (mark_virtual_ops_for_renaming_list): Remove.
8763         (initialize_root_vars): Adjust.
8764         (initialize_root_vars_lm): Likewise.
8765         (prepare_initializers_chain): Likewise.
8766         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
8767         (may_propagate_copy_into_stmt): Likewise.
8768         (merge_alias_info): Do nothing for now.
8769         (propagate_tree_value_into_stmt): Adjust.
8770         (stmt_may_generate_copy): Likewise.
8771         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
8772         not mark symbols for renaming.
8773         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
8774         with the same statement, make sure to update the new pointed-to one.
8775         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
8776         call statements, do not mark symbols for renaming.
8777         (mark_operand_necessary): Dump something.
8778         (ref_may_be_aliased): New function.
8779         (mark_aliased_reaching_defs_necessary_1): New helper function.
8780         (mark_aliased_reaching_defs_necessary): Likewise.
8781         (mark_all_reaching_defs_necessary_1): Likewise.
8782         (mark_all_reaching_defs_necessary): Likewise.
8783         (propagate_necessity): Do not process virtual PHIs.  For
8784         non-aliased loads mark all reaching definitions as necessary.
8785         For aliased loads and stores mark the immediate dominating
8786         aliased clobbers as necessary.
8787         (visited): New global static.
8788         (perform_tree_ssa_dce): Free visited bitmap after propagating
8789         necessity.
8790         (remove_dead_phis): Perform simple dead virtual PHI removal.
8791         (remove_dead_stmt): Properly unlink virtual operands when
8792         removing stores.
8793         (eliminate_unnecessary_stmts): Schedule PHI removal after
8794         stmt removal.
8795         * tree-ssa-ter.c (is_replaceable_p): Adjust.
8796         (process_replaceable): Likewise.
8797         (find_replaceable_in_bb): Likewise.
8798         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
8799         based on the single gimple vop.
8800         (verify_flow_insensitive_alias_info): Remove.
8801         (verify_flow_sensitive_alias_info): Likewise.
8802         (verify_call_clobbering): Likewise.
8803         (verify_memory_partitions): Likewise.
8804         (verify_alias_info): Likewise.
8805         (verify_ssa): Adjust..
8806         (execute_update_addresses_taken): Export.  Update SSA
8807         manually.  Optimize only when optimizing.  Use a local bitmap.
8808         (pass_update_address_taken): Remove TODO_update_ssa, add
8809         TODO_dump_func.
8810         (pass_update_address_taken): Just use TODO_update_address_taken.
8811         (init_tree_ssa): Do not initialize addressable_vars.
8812         (verify_ssa): Verify new VUSE / VDEF properties.
8813         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
8814         Do not call verify_alias_info.
8815         (delete_tree_ssa): Clear the VUSE, VDEF operands.
8816         Do not free the loaded and stored syms bitmaps.  Reset the escaped
8817         and callused solutions.  Do not free addressable_vars.
8818         Remove memory-tag related code.
8819         (warn_uninitialized_var): Aliases are always available.
8820         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
8821         * lambda-code.c (can_put_in_inner_loop): Adjust.
8822         (can_put_after_inner_loop): Likewise.
8823         (perfect_nestify): Likewise.
8824         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
8825         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
8826         (vectorizable_conversion): Do not mark symbols for renaming.
8827         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
8828         (expand_call_inline): Unlink the calls virtual operands before
8829         replacing it.
8830         (tree_function_versioning): Do not call update_ssa if we are not
8831         updating clones.  Simplify.
8832         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
8833         (propagate_with_phi): Likewise..
8834         * tree-outof-ssa.c (create_temp): Remove memory tag and call
8835         clobber code.  Assert we are not aliased or global.
8836         * tree-flow.h: Include tree-ssa-alias.h
8837         (enum escape_type): Remove.
8838         (struct mem_sym_stats_d): Likewise.
8839         (struct mem_ref_stats_d): Likewise.
8840         (struct gimple_df): Add vop member.  Remove global_var,
8841         call_clobbered_vars, call_used_vars, addressable_vars,
8842         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
8843         escaped and callused members.
8844         (struct ptr_info_def): Remove all members, add points-to solution
8845         member pt.
8846         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
8847         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
8848         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
8849         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
8850         (tree-ssa-alias.o): Likewise.
8851         (toplev.o): Add tree-ssa-alias.h
8852         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
8853         * gimple.c (gimple_set_bb): Fix off-by-one error.
8854         (is_gimple_reg): Do not handle memory tags.
8855         (gimple_copy): Also copy virtual operands.
8856         Delay updating the statement.  Do not reset loaded and stored syms.
8857         (gimple_set_stored_syms): Remove.
8858         (gimple_set_loaded_syms): Likewise.
8859         (gimple_call_copy_skip_args): Copy the virtual operands
8860         and mark the new statement modified.
8861         * tree-ssa-structalias.c (may_alias_p): Remove.
8862         (set_uids_in_ptset): Take the alias set to prune with as
8863         parameter.  Fold in the alias test of may_alias_p.
8864         (compute_points_to_sets): Compute whether a ptr is dereferenced
8865         in a local sbitmap.
8866         (process_constraint): Deal with &ANYTHING on the lhs, reject all
8867         other ADDRESSOF constraints on the lhs.
8868         (get_constraint_for_component_ref): Assert that we don't get
8869         ADDRESSOF constraints from the base of the reference.
8870         Properly generate UNKNOWN_OFFSET for DEREF if needed.
8871         (struct variable_info): Remove collapsed_to member.
8872         (get_varinfo_fc): Remove.
8873         (new_var_info): Do not set collapsed_to.
8874         (dump_constraint): Do not follow cycles.
8875         (dump_constraint_graph): Likewise.
8876         (build_pred_graph): Likewise.
8877         (build_succ_graph): Likewise.
8878         (rewrite_constraints): Likewise.
8879         (do_simple_structure_copy): Remove.
8880         (do_rhs_deref_structure_copy): Remove.
8881         (do_lhs_deref_structure_copy): Remove.
8882         (collapse_rest_of_var): Remove.
8883         (do_structure_copy): Re-implement.
8884         (pta_stats): New global variable.
8885         (dump_pta_stats): New function.
8886         (struct constraint_expr): Make offset signed.
8887         (UNKNOWN_OFFSET): Define special value.
8888         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
8889         (solution_set_expand): New helper function split out from ...
8890         (do_sd_constraint): ... here.
8891         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
8892         (do_ds_constraint): Likewise.
8893         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
8894         and CALLUSED = *CALLUSED.
8895         (set_union_with_increment): Make inc argument signed.
8896         (type_safe): Remove.
8897         (get_constraint_for_ptr_offset): Handle unknown and negative
8898         constant offsets.
8899         (first_vi_for_offset): Handle offsets before start.  Bail
8900         out early for offsets beyond the variable extent.
8901         (first_or_preceding_vi_for_offset): New function.
8902         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
8903         Together with ESCAPED = *ESCAPED this properly computes reachability.
8904         (find_what_var_points_to): New function.
8905         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
8906         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
8907         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
8908         pt_solutions_intersect): New functions.
8909         (compute_call_used_vars): Remove.
8910         (compute_may_aliases): New main entry into PTA computation.
8911         * gimple.h (gimple_p): New typedef.
8912         (struct gimple_statement_base): Remove references_memory_p.
8913         (struct gimple_statement_with_memory_ops_base): Remove
8914         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
8915         members.
8916         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
8917         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
8918         gimple_set_references_memory): Remove.
8919         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
8920         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
8921         New functions.
8922         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
8923         (verify_expr): Allow RESULT_DECL.
8924         (gimple_duplicate_bb): Do not copy virtual operands.
8925         (gimple_duplicate_sese_region): Adjust.
8926         (gimple_duplicate_sese_tail): Likewise.
8927         (mark_virtual_ops_in_region): Remove.
8928         (move_sese_region_to_fn): Do not call it.
8929         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
8930         and pass_simple_dse.
8931         (execute_function_todo): Handle TODO_update_address_taken,
8932         call execute_update_addresses_taken for TODO_rebuild_alias.
8933         (execute_todo): Adjust.
8934         (execute_one_pass): Init dump files early.
8935         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
8936         call-clobbered.
8937         (create_general_new_stmt): Clear vops.
8938         * tree-ssa-reassoc.c (get_rank): Adjust.
8939         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
8940         symbols for renaming.
8941         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
8942         (PARAM_AVG_ALIASED_VOPS): Likewise.
8943         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
8944         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
8945         * tree-ssa-operands.c: Simplify for new virtual operand representation.
8946         (operand_build_cmp, copy_virtual_operands,
8947         create_ssa_artificial_load_stmt, add_to_addressable_set,
8948         gimple_add_to_addresses_taken): Remove public functions.
8949         (unlink_stmt_vdef): New function.
8950
8951 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
8952
8953         * config.gcc (powerpc-*-linux*): Merge variants.
8954
8955 2009-04-02  Chao-ying Fu  <fu@mips.com>
8956             James Grosbach  <james.grosbach@microchip.com>
8957
8958         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
8959         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
8960         cop0_sp_offset.
8961         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
8962         keep_interrupts_masked_p, use_debug_exception_return_p.
8963         (mips_attribute_table): Add interrupt, use_shadow_register_set,
8964         keep_interrupts_masked, use_debug_exception_return.
8965         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
8966         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
8967         New functions.
8968         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
8969         (mips_print_operand): Process COP0 registers to print $0 .. $31
8970         correctly for GAS to process.
8971         (mips_interrupt_extra_call_saved_reg_p): New function.
8972         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
8973         extra registers.
8974         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
8975         (mips_compute_frame_info): Add supports for interrupt context that
8976         includes doubleword accumulators and COP0 registers.
8977         (mips_for_each_saved_acc): New function.
8978         (mips_for_each_saved_gpr_and_fpr): Change the function name from
8979         mips_for_each_saved_reg.
8980         (mips_save_reg): Save accumulators.
8981         (mips_kernel_reg_p): A new for_each_rtx callback.
8982         (mips_expand_prologue): Support interrupt handlers.
8983         (mips_restore_reg): Restore accumulators.
8984         (mips_expand_epilogue): Support interrupt handlers.
8985         (mips_can_use_return_insn): Return false for interrupt handlers.
8986         (mips_epilogue_uses): New function.
8987         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
8988         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
8989         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
8990         cop0_move): New instructions.
8991         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
8992         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
8993         defines.
8994         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
8995         New defines.
8996         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
8997         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
8998         interrupt handlers, we use K0 as the temporary register.
8999         (EPILOGUE_USES): Change to a function call.
9000         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
9001         handlers, we use K0 as the temporary register.
9002
9003         * doc/extend.texi (Function Attributes): Document interrupt,
9004         use_shadow_register_set, keep_interrupts_masked,
9005         use_debug_exception_return for MIPS attributes.
9006
9007 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
9008
9009         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
9010         Remove a number of t-files from tmake_file.
9011         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
9012         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
9013         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
9014         target_prototype, not TARGET_PROTOTYPE.
9015         (LINK_OS_GNU_SPEC): Define.
9016         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
9017         and darwin-ldoubdle.c.
9018
9019 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
9020
9021         PR driver/39293
9022         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
9023         (cpp_options): Ditto.
9024         (default_compilers): Ditto.
9025         (display_help): Ditto.
9026         (process_command): Ditto.
9027         (do_spec_1): Ditto.
9028         (set_input): Use lbasename instead of duplicate code.
9029         (save_temps_prefix): New static for -save-temps=obj.
9030         (save_temps_length): Ditto.
9031
9032         * doc/invoke.texi (-save-temps=obj): Document new variant to
9033         -save-temps switch.
9034
9035 2009-04-02  Jeff Law  <law@redhat.com>
9036
9037         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
9038         variable.
9039
9040 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9041
9042         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
9043         * configure: Regenerated.
9044
9045 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9046
9047         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
9048         share the argument list.
9049
9050 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9051
9052         Merge
9053
9054         2009-02-12  Diego Novillo  <dnovillo@google.com>
9055
9056         * varpool.c (debug_varpool): New.
9057         * cgraph.h (debug_varpool): Declare.
9058
9059 2009-04-02  Jan Hubicka  <jh@suse.cz>
9060
9061         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
9062         pass.
9063
9064 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
9065
9066         * config/i386/i386.c (ix86_abi): Move initialization to ...
9067         (override_options): Here.
9068
9069 2009-04-02  Christian Bruel  <christian.bruel@st.com>
9070
9071         * config/sh/sh.c (sh_dwarf_register_span): New function.
9072         (TARGET_DWARF_REGISTER_SPAN): Define.
9073         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
9074
9075 2009-04-02  Ira Rosen  <irar@il.ibm.com>
9076
9077         PR tree-optimization/39595
9078         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
9079         interleaved loads group is not  greater than the SLP group size.
9080
9081 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
9082
9083         * builtins.c (is_builtin_name): New.
9084         (called_as_built_in): Use is_builtin_name.
9085         * tree.h (is_builtin_name): New.
9086         * varasm.c (incorporeal_function_p): Use is_builtin_name
9087
9088 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
9089
9090         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
9091
9092 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
9093
9094         PR c++/26693
9095         * c-decl.c (clone_underlying_type): Move this ...
9096         * c-common.c (set_underlying_type): ... here.
9097         Also, make sure the function properly sets TYPE_STUB_DECL() on
9098         the newly created typedef variant type.
9099         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
9100         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
9101         points.
9102
9103 2009-04-02  Richard Guenther  <rguenther@suse.de>
9104
9105         PR tree-optimization/37221
9106         * tree-flow.h (degenerate_phi_result): Declare.
9107         * tree-ssa-dom.c (degenerate_phi_result): Export.
9108         * tree-scalar-evolution.c (analyze_initial_condition): If
9109         the initial condition is defined by a degenerate PHI node
9110         use the degenerate value.
9111
9112 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
9113
9114         PR rtl-optimization/39588
9115         * combine.c (merge_outer_ops): Do not set the constant when this
9116         is not necessary.
9117         (simplify_shift_const_1): Do not modify it either in this case.
9118
9119 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
9120
9121         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
9122         tuning is deprecated if -mtune value is set to an Itanium1 variant.
9123
9124 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
9125
9126         PR c/29027
9127         * c-lex.c (interpret_float): Default (no suffix) is double.
9128
9129 2009-04-1  Xinliang David Li  <davidxl@google.com>
9130
9131         * config/i386/i386.c (legitimate_constant_p): Recognize
9132         all one vector constant.
9133
9134 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9135
9136         * config/vax/vax.c: Add #includes to silence warnings.
9137         Change #include order to silence two warnings.
9138
9139 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9140
9141         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
9142         (ASM_SPEC): Pass -k to the assembler for PIC code.
9143
9144 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9145
9146         * config.gcc: Add vax-*-linux* to the switch.
9147         * config/vax/linux.h: New file. (TARGET_VERSION,
9148         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
9149
9150 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9151
9152         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
9153         Use predicate macros instead of GET_CODE() == foo.
9154         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
9155         ashlsi3, rotrsi3, <unnamed>): Likewise.
9156
9157 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9158
9159         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
9160         jbbccihi, jbbccisi): Remova trailing whitespace.
9161         * config/vax/constraints.md: Likewise.
9162         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
9163         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
9164         * config/vax/predicates.md: Likewise.
9165         * config/vax/vax.c (print_operand_address, vax_output_int_move,
9166         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
9167         * config/vax/vax.h: Likewise.
9168         * config/vax/vax.md (nonlocal_goto): Likewise.
9169
9170 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9171
9172         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
9173         (indirectable_address_p, adjacent_operands_p): Add spaces around
9174         braces.
9175         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
9176
9177 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9178
9179         * config/vax/vax.c (legitimate_constant_address_p,
9180         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
9181         index_term_p, reg_plus_index_p, legitimate_address_p,
9182         vax_mode_dependent_address_p): Update comments to match functions
9183         modified by the recent int->bool conversion.
9184
9185 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9186
9187         * config/vax/builtins.md: Update copyright message.
9188         * config/vax/constraints.md: Likewise.
9189         * config/vax/netbsd-elf.h: Likewise.
9190         * config/vax/predicates.md: Likewise.
9191         * config/vax/vax-protos.h: Likewise.
9192         * config/vax/vax.c: Likewise.
9193         * config/vax/vax.h: Likewise.
9194         * config/vax/vax.md: Likewise.
9195         * config/vax/vax.opt: Likewise.
9196
9197 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
9198
9199         * config/vax/builtins.md (ffssi2, ffssi2_internal,
9200         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
9201         * config/vax/constraints.md (B, R): Likewise.
9202         * config/vax/predicates.md (external_memory_operand,
9203         nonimmediate_addsub_di_operand): Likewise.
9204         * config/vax/vax.c (vax_output_int_add): Likewise.
9205         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
9206         untyped_call): Likewise.
9207
9208 2009-04-01  Matt Thomas  <matt@3am-software.com>
9209
9210         * config/vax/predicates.md: New file.
9211         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
9212         external_const_operand, nonsymbolic_operand, external_memory_operand,
9213         indirect_memory_operand, indexed_memory_operand,
9214         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
9215         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
9216         predicate.
9217         * config/vax/constraints.md: New file.
9218         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
9219         New constraint.
9220         * config/vax/builtins.md: New file.
9221         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
9222         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
9223         jbbccisi): Define.
9224         * config/vax/vax.opt (mqmath): Add option.
9225         * config/vax/vax.md (isfx): Extend with DI.
9226         (VAXintQH, VAXintQHSD): Define.
9227         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
9228         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
9229         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
9230         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
9231         (movdi): Update constraints and use vax_output_int_move().
9232         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
9233         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
9234         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
9235         nonlocal_goto): New.
9236         (mov<mode>): Extend accepted operand types.
9237         (subdi3_old): Rename from subdi3, change update constraints and use
9238         a new implementation.
9239         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
9240         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
9241         MOVE_RATIO, CLEAR_RATIO): Define.
9242         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
9243         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
9244         (PRINT_OPERAND): Redefine using a function instead of inlined code.
9245         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
9246         (split_quadword_operands): Make static and really allow variable
9247         splitting.
9248         (print_operand_address): Update for PIC generation.
9249         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
9250         indexable_address_p, fixup_mathdi_operand,
9251         vax_expand_addsub_di_operands, adjacent_operands_p): New.
9252         (vax_float_literal, legitimate_constant_p,
9253         indirectable_constant_address_p, index_term_p,
9254         reg_plus_index_p): Return bool instead of int.
9255         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
9256         where needed.
9257         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
9258         generation.
9259         (vax_output_conditional_branch): Indent.
9260         (legitimate_constant_address_p, indirectable_constant_address_p,
9261         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
9262         vax_mode_dependent_address_p): Return bool instead of int, update for
9263         PIC generation.
9264         * config/vax/vax-protos.h (legitimate_constant_address_p,
9265         legitimate_constant_p, legitimate_address_p,
9266         vax_mode_dependent_address_p): Change declaration to bool.
9267         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
9268         vax_expand_addsub_di_operands, vax_output_int_subtract,
9269         vax_output_movmemsi): Declare.
9270         (split_quadword_operands, vax_float_literal): Delete declaration.
9271         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
9272         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
9273         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
9274         ASM_OUTPUT_DWARF_PCREL): Define.
9275         (ASM_SPEC): Change definition to allow PIC generation.
9276
9277 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
9278
9279         * doc/sourcebuild.texi: Update front-end requirements.
9280
9281 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9282
9283         PR target/39226
9284         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
9285         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
9286         (booldi3_internal3): Use boolean_or_operator instead of
9287         boolean_operator.
9288
9289 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
9290
9291         PR c/39605
9292         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
9293         declarator whose size is not an integer constant expression but
9294         folds to an integer constant, then treat it as a constant
9295         subsequently.
9296
9297 2009-04-01  Richard Guenther  <rguenther@suse.de>
9298
9299         * fold-const.c (fold_plusminus_mult_expr): Do not fold
9300         i * 4 + 2 to (i * 2 + 1) * 2.
9301
9302 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9303
9304         PR c/37772
9305         * c-parser.c (c_parser_asm_statement): Skip until close paren and
9306         return if c_parser_asm_string_literal returned NULL.
9307
9308 2009-04-01  Nick Clifton  <nickc@redhat.com>
9309
9310         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
9311         already defined.
9312         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
9313         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
9314         other typedefs to avoid conflicts with libgcc2.c.  Define labels
9315         to gain 16-bit bit-manipulation functions from libgcc2.c and then
9316         include it.
9317         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
9318         to gain 16-bit trapping arithmetic functions from libgcc2.c and
9319         then include it.
9320
9321 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
9322
9323         * varasm.c (default_function_rodata_section): Declare DOT as
9324         const char*.
9325
9326 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
9327             Andrey Galkin  <agalkin@hypercom.com>
9328
9329         PR/39492
9330         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
9331         Make object_name unique for each process.
9332
9333 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
9334
9335         PR other/39591
9336         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
9337         addressable variables in the parallel that could go out of scope while
9338         running queued tasks.
9339
9340 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
9341
9342         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
9343         (CASE_VALUES_THRESHOLD): Redefine.
9344         * config/avr/avr.c (avr_override_options): Remove initialization of
9345         avr_case_values_threshold variable.
9346         (avr_case_values_threshold): Remove variable. Add new function.
9347         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
9348         * config/avr/avr.opt (mno-tablejump): Remove option.
9349         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
9350
9351 2009-04-01  DJ Delorie  <dj@redhat.com>
9352
9353         * varasm.c (default_function_rodata_section): Don't assume
9354         anything about where the first '.' in the section name is.
9355
9356 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
9357
9358         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
9359         rs6000_emit_stack_tie.
9360
9361 2009-03-31  Ian Lance Taylor  <iant@google.com>
9362
9363         * tree-eh.c (tree_remove_unreachable_handlers): Compare
9364         gimple_code with GIMPLE_RESX, not RESX.
9365
9366 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9367
9368         * c-common.c (c_get_ident): New.
9369         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
9370
9371 2009-04-01  Ben Elliston  <bje@au.ibm.com>
9372
9373         * config/rs6000/sysv4.opt (msdata): Improve option description.
9374
9375 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
9376
9377         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
9378         (divdf3_internal_lat): Remove.
9379         (divxf3_internal_lat): Remove.
9380         (divxf3_internal_thr): Remove.
9381         (divxf): Use divxf3_internal.
9382         * config/ia64/div.md (divsf3_internal_lat): New.
9383         (divdf3_internal_lat): New.
9384         (divxf3_internal): New.
9385
9386 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9387
9388         PR c/448
9389         * Makefile.in (USE_GCC_STDINT): Define.
9390         (stmp-int-hdrs): Install stdint.h if applicable.
9391         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
9392         if known.
9393         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
9394         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
9395         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9396         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9397         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9398         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9399         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9400         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9401         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9402         (c_common_nodes_and_builtins): Initialize
9403         underlying_wchar_type_node.  Do not initialize
9404         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
9405         nodes for new types.
9406         (c_stddef_cpp_builtins): Define macros for new types.
9407         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
9408         Remove.
9409         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
9410         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
9411         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
9412         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
9413         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
9414         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
9415         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
9416         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
9417         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
9418         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
9419         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
9420         int16_type_node, int32_type_node, int64_type_node,
9421         uint8_type_node, uint16_type_node, c_uint32_type_node,
9422         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
9423         int_least32_type_node, int_least64_type_node,
9424         uint_least8_type_node, uint_least16_type_node,
9425         uint_least32_type_node, uint_least64_type_node,
9426         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
9427         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
9428         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
9429         uintptr_type_node): Define.
9430         * c-cppbuiltin.c (builtin_define_constants,
9431         builtin_define_type_minmax): New.
9432         (builtin_define_stdint_macros): Define more macros.
9433         (c_cpp_builtins): Define more limit macros.
9434         (type_suffix): New.
9435         (builtin_define_type_max): Define in terms of
9436         builtin_define_type_minmax.  Remove is_long parameter.  All
9437         callers changed.
9438         * config.gcc (use_gcc_stdint): Define.
9439         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
9440         Add newlib-stdint.h for generic targets.
9441         * config/glibc-stdint.h, config/newlib-stdint.h,
9442         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
9443         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
9444         * config/score/score.h (UINTPTR_TYPE): Define.
9445         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
9446         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
9447         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9448         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9449         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9450         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9451         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9452         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
9453         * config/spu/spu.h (STDINT_LONG32): Define.
9454         * configure.ac (use_gcc_stdint): Substitute.
9455         * configure: Regenerate.
9456         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
9457         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
9458         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
9459         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
9460         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
9461         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
9462         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
9463         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
9464         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
9465         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
9466         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
9467         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
9468         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
9469         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
9470         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
9471         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
9472         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
9473         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
9474         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
9475         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
9476         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
9477         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
9478         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
9479         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
9480         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
9481         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
9482         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
9483         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
9484         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
9485
9486 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
9487
9488         * loop-iv.c (suitable_set_for_replacement): Renamed from
9489         simplify_using_assignment; changed to return bool and to accept new
9490         args DEST and SRC.  Return true iff we find a source/destination pair
9491         that can be used to make a replacement, and fill SRC and DEST if so.
9492         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
9493         changed.
9494         (simplify_using_initial_values): Deal with altered regs here and track
9495         more precisely the effect they have on the validity of our expression.
9496
9497         * loop-iv.c (simplify_using_condition): A condition of the form
9498         (EQ REG CONST) can be used to simply make a substitution.
9499         (simplify_using_initial_values): Keep track of conditions we have seen
9500         and keep using them to simplify new expressions, while applying the
9501         same substitutions to them as to the expression.
9502
9503         * simplify-rtx.c (simplify_relational_operation_1): Simplify
9504         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
9505         GEU/LTU reversed.
9506
9507         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
9508         changed.  Use this when trying to improve the upper bound.
9509         Generate the comparison by using simplify_gen_relational.
9510
9511         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
9512
9513         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
9514         functions.
9515         (simplify_using_assignment, simplify_using_initial_values): Call
9516         replace_in_expr to make replacements.  Call replace_single_def_regs
9517         once on the initial version of the expression.
9518
9519 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9520
9521         PR target/27237
9522         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
9523
9524 2009-03-31  Richard Guenther  <rguenther@suse.de>
9525
9526         PR middle-end/31029
9527         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
9528         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
9529
9530 2009-03-31  Richard Guenther  <rguenther@suse.de>
9531
9532         * tree.h (div_if_zero_remainder): Declare.
9533         * fold-const.c (div_if_zero_remainder): Export.
9534         * tree-ssa-forwprop.c
9535         (forward_propagate_addr_into_variable_array_index): Handle
9536         constant array index addition outside of the variable index.
9537
9538 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9539
9540         PR target/39592
9541         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
9542         define_splits, floatunssi<mode>2): Require x87 conversions from
9543         DImode to be permitted.
9544
9545 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
9546
9547         PR preprocessor/15638
9548         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
9549
9550 2009-03-31  Richard Guenther  <rguenther@suse.de>
9551
9552         PR middle-end/23401
9553         PR middle-end/27810
9554         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
9555         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
9556         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
9557         a separate statement.
9558         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
9559         (lookup_tmp_var): Likewise.
9560         (is_gimple_formal_tmp_or_call_rhs): Remove.
9561         (is_gimple_reg_or_call_rhs): Rename to ...
9562         (is_gimple_reg_rhs_or_call): ... this.
9563         (is_gimple_mem_or_call_rhs): Rename to ...
9564         (is_gimple_mem_rhs_or_call): ... this.
9565         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
9566         DECL_GIMPLE_REG_P only if is_formal is true.
9567         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
9568         for non-proper post-modify expression gimplification.
9569         (gimplify_self_mod_expr): For post-modify expressions gimplify
9570         the lvalue to a minimal lvalue.
9571         (rhs_predicate_for): Remove formal temp case.
9572         (gimplify_modify_expr_rhs): Likewise.
9573         (gimplify_addr_expr): Use is_gimple_reg.
9574         (gimplify_expr): Remove formal temp cases.
9575         (gimple_regimplify_operands): Likewise.
9576         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
9577         and FILTER_EXPR like constants.
9578         * gimple.c (walk_gimple_op): Fix val_only initialization, use
9579         is_gimple_reg.
9580         (is_gimple_formal_tmp_rhs): Remove.
9581         (is_gimple_reg_rhs): Remove special casing.
9582         (is_gimple_mem_rhs): Fix.
9583         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
9584         (is_gimple_formal_tmp_var): Remove.
9585         (is_gimple_formal_tmp_reg): Likewise.
9586         (is_gimple_min_lval): Allow invariant component ref parts.
9587         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
9588         is_gimple_formal_tmp_reg): Remove declarations.
9589         * tree-cfg.c (verify_expr): Verify that variables with address
9590         taken do not have DECL_GIMPLE_REG_P set.
9591         * tree-mudflap.c (mf_build_check_statement_for): Use
9592         force_gimple_operand instead of gimplify_expr.
9593
9594 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
9595
9596         * modulo-sched.c (sms_schedule_by_order): Pass the actual
9597         schedulable rows to compute_split_row.
9598
9599 2009-03-31  Ben Elliston  <bje@au.ibm.com>
9600
9601         PR target/31635
9602         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
9603         OPT_mvrsave.
9604
9605 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9606
9607         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
9608         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
9609         * configure: Regenerate.
9610         * config.in: Regenerate.
9611         * config/rs6000/rs6000.opt (mtls-markers): Add.
9612         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
9613         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
9614         (tls_ld_aix, tls_ld_sysv): Likewise.
9615         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
9616         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
9617
9618 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
9619
9620         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
9621
9622 2009-03-30  Jan Hubicka  <jh@suse.cz>
9623
9624         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
9625         out of RESX.
9626         (tree_remove_unreachable_handlers): Cleanup EH predecestor
9627         detection and label handling.
9628
9629 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9630
9631         * ira-int.h (ira_allocno): Rename left_conflicts_num to
9632         left_conflicts_size.
9633         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
9634         ALLOCNO_LEFT_CONFLICTS_SIZE.
9635
9636         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
9637         remove_allocno_from_bucket_and_push,
9638         allocno_spill_priority_compare, push_allocnos_to_stack,
9639         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9640         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
9641         (setup_allocno_left_conflicts_num): Ditto.  Rename to
9642         setup_allocno_left_conflicts_size.
9643         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
9644         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
9645         setup_allocno_left_conflicts_size instead of
9646         setup_allocno_left_conflicts_num.
9647
9648         * ira-build.c (ira_create_allocno): Use
9649         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
9650         ALLOCNO_LEFT_CONFLICTS_NUM.
9651
9652 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
9653
9654         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
9655         instead of DF_LR_OUT.
9656
9657         * ira-lives.c (process_bb_node_lives): Ditto.
9658
9659         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
9660         instead of DF_LR_{OUT,IN}.
9661
9662         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
9663
9664         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
9665
9666 2009-03-30  Jan Hubicka  <jh@suse.cz>
9667
9668         * except.c (label_to_region_map): Fix thinko.
9669
9670 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
9671
9672         PR middle-end/38237
9673         * tree.h (tree_find_value): New declaration.
9674         * tree.c (tree_find_value): New function.
9675         * varasm.c (assemble_external): Avoid duplicate entries on lists.
9676
9677 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
9678
9679         PR debug/39563
9680         * c-decl.c (struct c_binding): Add locus field.
9681         (bind): Add locus argument, set locus field from it.
9682         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
9683         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
9684         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
9685         implicitly_declare, undeclared_variable, lookup_label,
9686         declare_label, c_make_fname_decl, c_builtin_function,
9687         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
9688         bind callers.
9689
9690 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
9691
9692         PR target/38781
9693         * config/i386/i386.c (classify_argument): Check total size of
9694         structure.
9695
9696 2009-03-30  Martin Jambor  <mjambor@suse.cz>
9697
9698         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
9699         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
9700         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
9701         respectively.
9702
9703         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
9704         seen_variable_array_ref while also traversing a union.
9705
9706         * tree-inline.c (optimize_inline_calls): Do not call
9707         cgraph_node_remove_callees.
9708         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
9709         (pass_remove_cgraph_callee_edges): New variable.
9710         * passes.c (init_optimization_passes): Add
9711         pass_remove_cgraph_callee_edges after early inlining and before all
9712         late intraprocedural passes.
9713
9714         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
9715
9716 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9717
9718         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
9719         Fix typos in names.
9720
9721 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9722
9723         * combine.c (simplify_comparison): Use have_insn_for.
9724         * dojump.c (do_jump): Likewise.
9725
9726 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9727
9728         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
9729         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
9730         sparc_compare_op0 like sparc_compare_emitted used to be handled.
9731         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
9732         instead of sparc_compare_emitted.
9733         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
9734         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
9735         instead of sparc_compare_emitted.
9736
9737 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9738
9739         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
9740         enter/exit cfglayout mode.
9741         (pass_partition_block): Require it.
9742         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
9743         (combine_instructions): Track basic blocks instead of labels.
9744         (update_cfg_for_uncondjump): New.
9745         (try_combine): Use it.  Update jumps after rescanning.
9746         (pass_combine): Require PROP_cfglayout.
9747         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
9748
9749 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9750
9751         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
9752         Provide/destroy PROP_cfglayout respectively.
9753         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
9754         * tree-pass.h (PROP_cfglayout): New.
9755
9756 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
9757
9758         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
9759         fold_convert_const_fixed_from_fixed,
9760         fold_convert_const_fixed_from_int,
9761         fold_convert_const_fixed_from_real, fold_negate_const): Do not
9762         set TREE_CONSTANT_OVERFLOW.
9763         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
9764         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
9765
9766 2009-03-30  Ira Rosen  <irar@il.ibm.com>
9767
9768         * tree-vect-loop-manip.c: New file.
9769         * tree-vectorizer.c: Update documentation and included files.
9770         (vect_loop_location): Make extern.
9771         (rename_use_op): Move to tree-vect-loop-manip.c
9772         (rename_variables_in_bb, rename_variables_in_loop,
9773         slpeel_update_phis_for_duplicate_loop,
9774         slpeel_update_phi_nodes_for_guard1,
9775         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
9776         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
9777         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
9778         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
9779         find_loop_location): Likewise.
9780         (new_stmt_vec_info): Move to tree-vect-stmts.c.
9781         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
9782         get_vectype_for_scalar_type, vect_is_simple_use,
9783         supportable_widening_operation, supportable_narrowing_operation):
9784         Likewise.
9785         (bb_in_loop_p): Move to tree-vect-loop.c.
9786         (new_loop_vec_info, destroy_loop_vec_info,
9787         reduction_code_for_scalar_code, report_vect_op,
9788         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
9789         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
9790         (vect_supportable_dr_alignment): Likewise.
9791         * tree-vectorizer.h (tree-data-ref.h): Include.
9792         (vect_loop_location): Declare.
9793         Reorganize function declarations according to the new file structure.
9794         * tree-vect-loop.c: New file.
9795         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
9796         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
9797         * tree-vect-data-refs.c: New file.
9798         * tree-vect-patterns.c (timevar.h): Don't include.
9799         * tree-vect-stmts.c: New file.
9800         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
9801         tree-vect-slp.c, tree-vect-loop.c.
9802         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
9803         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
9804         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
9805         (tree-vect-analyze.o): Remove.
9806         (tree-vect-transform.o): Likewise.
9807         (tree-vect-data-refs.o): Add rule.
9808         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
9809         tree-vect-slp.o): Likewise.
9810         (tree-vect-patterns.o): Remove redundant dependencies.
9811         (tree-vectorizer.o): Likewise.
9812         * tree-vect-slp.c: New file.
9813
9814 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9815
9816         * optc-gen.awk: Warn if an option flag has multiple different
9817         help strings.
9818
9819 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
9820
9821         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
9822         -floop-block): Document dependences on PPL, CLooG and Graphite.
9823
9824 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
9825
9826         PR rtl-optimization/323
9827         * c-common.c (c_fully_fold, convert_and_check,
9828         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
9829         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
9830         * c-common.def (EXCESS_PRECISION_EXPR): New.
9831         * c-cppbuiltin.c (builtin_define_float_constants): Define
9832         constants with enough digits for long double.
9833         * c-lex.c (interpret_float): Interpret constant with excess
9834         precision where appropriate.
9835         * c-opts.c (c_common_post_options): Set
9836         flag_excess_precision_cmdline.  Give an error for
9837         -fexcess-precision=standard for C++ for processors where the
9838         option is significant.
9839         * c-parser.c (c_parser_conditional_expression): Handle excess
9840         precision in condition.
9841         * c-typeck.c (convert_arguments): Handle arguments with excess
9842         precision.
9843         (build_unary_op): Move excess precision outside operation.
9844         (build_conditional_expr): Likewise.
9845         (build_compound_expr): Likewise.
9846         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
9847         (build_modify_expr): Handle excess precision in RHS.
9848         (convert_for_assignment): Handle excess precision in converted
9849         value.
9850         (digest_init, output_init_element, process_init_element): Handle
9851         excess precision in initializer.
9852         (c_finish_return): Handle excess precision in return value.
9853         (build_binary_op): Handle excess precision in operands and add
9854         excess precision as needed for operation.
9855         * common.opt (-fexcess-precision=): New option.
9856         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
9857         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
9858         For standard excess precision, output explicit conversion to and
9859         truncation from XFmode.
9860         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
9861         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
9862         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
9863         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
9864         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
9865         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
9866         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
9867         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
9868         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
9869         define_splits, sqrt<mode>2): Disable where appropriate for
9870         standard excess precision.
9871         * convert.c (convert_to_real): Do not shorten arithmetic to type
9872         for which excess precision would be used.
9873         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
9874         * doc/invoke.texi (-fexcess-precision=): Document option.
9875         (-mfpmath=): Correct index entry.
9876         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
9877         flag_excess_precision): New.
9878         * langhooks.c (lhd_post_options): Set
9879         flag_excess_precision_cmdline.
9880         * opts.c (common_handle_option): Handle -fexcess-precision=.
9881         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
9882         init_excess_precision): New.
9883         (lang_dependent_init_target): Call init_excess_precision.
9884         * tree.c (excess_precision_type): New.
9885         * tree.h (excess_precision_type): Declare.
9886
9887 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
9888
9889         PR c/35235
9890         * c-typeck.c (build_component_ref): Do not copy qualifiers from
9891         non-lvalue to component.
9892
9893 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
9894
9895         PR preprocessor/34695
9896         * Makefile.in (c-opts.o): Depend on c-tree.h.
9897         * c-common.c: Move down include of diagnostic.h.
9898         (done_lexing, c_cpp_error): New.
9899         * c-common.h (done_lexing): Declare.
9900         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
9901         (parse_in).
9902         * c-opts.c: Include c-tree.h.
9903         (c_common_init_options): Set preprocessor error callback.
9904         (c_common_handle_option): Do not set preprocessor
9905         inhibit_warnings, warnings_are_errors, warn_system_headers,
9906         pedantic_errors or inhibit_warnings flags.
9907         (c_common_post_options): Do not check cpp_errors (parse_in).
9908         (c_common_finish): Do not output dependencies if there were
9909         errors.  Do not check return value of cpp_finish.
9910         * c-ppoutput.c (pp_file_change): Set input_location.
9911         * c-tree.h (c_cpp_error): Declare.
9912         * diagnostic.c (diagnostic_set_info_translated): Also initialize
9913         override_column.
9914         (diagnostic_build_prefix): Check override_column.
9915         * diagnostic.h (diagnostic_info): Add override_column field.
9916         (diagnostic_override_column): Define.
9917
9918 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
9919
9920         * c-common.c (c_expand_expr, c_staticp): Remove.
9921         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
9922         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
9923         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
9924         * c-gimplify.c (gimplify_compound_literal_expr,
9925         optimize_compound_literals_in_ctor): Remove.
9926         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
9927         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
9928         * c-semantics.c (emit_local_var): Remove.
9929
9930         * langhooks-def.h (lhd_expand_expr): Remove.
9931         * langhooks.c (lhd_expand_expr): Remove.
9932         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
9933
9934         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
9935         handling from c-semantics.c; don't call into langhook.
9936         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
9937         * gimplify.c (gimplify_compound_literal_expr,
9938         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
9939         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
9940         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
9941         as was done in c-gimplify.c.
9942         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
9943         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
9944         Move from c-common.h.
9945         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
9946
9947         * tree.c (staticp): Do not call langhook.
9948         * langhooks.c (lhd_staticp): Delete.
9949         * langhooks-def.h (lhd_staticp): Delete prototype.
9950         (LANG_HOOKS_STATICP): Delete.
9951         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
9952
9953         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
9954         instead of DECL_STMTs.
9955
9956 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
9957
9958         PR c/456
9959         PR c/5675
9960         PR c/19976
9961         PR c/29116
9962         PR c/31871
9963         PR c/35198
9964         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
9965         void_type_node.
9966         (fold_call_expr): Return a NOP_EXPR from folding rather than the
9967         contained expression.
9968         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
9969         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
9970         conditional expressions for C.
9971         (decl_constant_value_for_optimization): Move from
9972         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
9973         whether optimizing and that the expression is a VAR_DECL not of
9974         array type instead of doing such checks in the caller.  Do not
9975         check pedantic.  Call gcc_unreachable for C++.
9976         * c-common.def (C_MAYBE_CONST_EXPR): New.
9977         * c-common.h (c_fully_fold, c_save_expr,
9978         decl_constant_value_for_optimization): New prototypes.
9979         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
9980         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
9981         EXPR_INT_CONST_OPERANDS): Define.
9982         * c-convert.c (convert): Strip nops from expression.
9983         * c-decl.c (groktypename): Take extra parameters expr and
9984         expr_const_operands.  Update call to grokdeclarator.
9985         (start_decl): Update call to grokdeclarator.  Add statement for
9986         expressions used in type of decl.
9987         (grokparm): Update call to grokdeclarator.
9988         (push_parm_decl): Update call to grokdeclarator.
9989         (build_compound_literal): Add parameter non_const and build a
9990         C_MAYBE_COSNT_EXPR if applicable.
9991         (grokdeclarator): Take extra parameters expr and
9992         expr_const_operands.  Track expressions used in declaration
9993         specifiers and declarators.  Fold array sizes and track whether
9994         they are constant expressions and whether they are integer
9995         constant expressions.
9996         (parser_xref_tag): Set expr and expr_const_operands fields in
9997         return value.
9998         (grokfield): Update call to grokdeclarator.
9999         (start_function): Update call to grokdeclarator.
10000         (build_null_declspecs): Set expr and expr_const_operands fields in
10001         return value.
10002         (declspecs_add_type): Handle expressions in typeof specifiers.
10003         * c-parser.c (c_parser_declspecs): Set expr and
10004         expr_const_operands fields for declaration specifiers.
10005         (c_parser_enum_specifier): Likewise.
10006         (c_parser_struct_or_union_specifier): Likewise.
10007         (c_parser_typeof_specifier): Likewise.  Update call to
10008         groktypename.  Fold expression as needed.  Return expressions with
10009         type instead of adding statements.
10010         (c_parser_attributes): Update calls to c_parser_expr_list.
10011         (c_parser_statement_after_labels): Fold expression before passing
10012         to objc_build_throw_stmt.
10013         (c_parser_condition): Fold expression.
10014         (c_parser_asm_operands): Fold expression.
10015         (c_parser_conditional_expression): Use c_save_expr.  Update call
10016         to build_conditional_expr.
10017         (c_parser_alignof_expression): Update call to groktypename.
10018         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
10019         original_code.  Fold expression argument of va_arg.  Create
10020         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
10021         argument to va_arg.  Update calls to groktypename.  Fold array
10022         index for offsetof.  Verify that first argument to
10023         __builtin_choose_expr has integer type.
10024         (c_parser_postfix_expression_after_paren_type): Update calls to
10025         groktypename and build_compound_literal.  Handle expressions with
10026         side effects in type name.
10027         (c_parser_postfix_expression_after_primary): Update call to
10028         c_parser_expr_list.  Set original_code for calls to
10029         __builtin_constant_p.
10030         (c_parser_expr_list): Take extra parameter fold_p.  Fold
10031         expressions if requested.
10032         (c_parser_objc_type_name): Update call to groktypename.
10033         (c_parser_objc_synchronized_statement): Fold expression.
10034         (c_parser_objc_receiver): Fold expression.
10035         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
10036         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
10037         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
10038         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
10039         (struct c_typespec): Add elements expr and expr_const_operands.
10040         (struct c_declspecs): Add elements expr and expr_const_operands.
10041         (groktypename, build_conditional_expr, build_compound_literal):
10042         Update prototypes.
10043         (in_late_binary_op): Declare.
10044         * c-typeck.c (note_integer_operands): New function.
10045         (in_late_binary_op): New variable.
10046         (decl_constant_value_for_broken_optimization): Move to c-common.c
10047         and rename to decl_constant_value_for_optimization.
10048         (default_function_array_conversion): Do not strip nops.
10049         (default_conversion): Do not call
10050         decl_constant_value_for_broken_optimization.
10051         (build_array_ref): Do not fold result.
10052         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
10053         result when operand is a VLA.
10054         (c_expr_sizeof_type): Update call to groktypename.  Handle
10055         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
10056         result when operand names a VLA type.
10057         (build_function_call): Update call to build_compound_literal.
10058         Only fold result for calls to __builtin_* functions.  Strip
10059         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
10060         the function designator.
10061         (convert_arguments): Fold arguments.  Update call to
10062         convert_for_assignment.
10063         (build_unary_op): Handle increment and decrement of
10064         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
10065         decrement earlier.  Fold operand of increment and decrement.
10066         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
10067         built for integer operand.  Wrap returns that are INTEGER_CSTs
10068         without being integer constant expressions or that have integer
10069         constant operands without being INTEGER_CSTs.
10070         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
10071         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
10072         result is an integer constant expression or can be used in
10073         unevaluated parts of one and avoid folding and wrap as
10074         appropriate.  Fold operands before possibly doing -Wsign-compare
10075         warnings.
10076         (build_compound_expr): Wrap result for C99 if operands can be used
10077         in integer constant expressions.
10078         (build_c_cast): Update call to digest_init.  Do not ignore
10079         overflow from casting floating-point constants to integers.  Wrap
10080         results that could be confused with integer constant expressions,
10081         null pointer constants or floating-point constants.
10082         (c_cast_expr): Update call to groktypename.  Handle expressions
10083         included in type name.
10084         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
10085         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
10086         Update calls to convert_for_assignment.
10087         (convert_for_assignment): Take new parameter
10088         null_pointer_constant.  Do not strip nops or call
10089         decl_constant_value_for_broken_optimization.  Set
10090         in_late_binary_op for conversions to boolean.
10091         (store_init_value): Update call to digest_init.
10092         (digest_init): Take new parameter null_pointer_constant.  Do not
10093         call decl_constant_value_for_broken_optimization.  pedwarn for
10094         initializers not constant expressions.  Update calls to
10095         convert_for_assignment.
10096         (constructor_nonconst): New.
10097         (struct constructor_stack): Add nonconst element.
10098         (really_start_incremental_init, push_init_level, pop_init_level):
10099         Handle constructor_nonconst and nonconst element.
10100         (set_init_index): Call constant_expression_warning for array
10101         designators.
10102         (output_init_element): Fold value.  Set constructor_nonconst as
10103         applicable.  pedwarn for initializers not constant expressions.
10104         Update call to digest_init.  Call constant_expression_warning
10105         where constant initializers are required.
10106         (process_init_element): Use c_save_expr.
10107         (c_finish_goto_ptr): Fold expression.
10108         (c_finish_return): Fold return value.  Update call to
10109         convert_for_assignment.
10110         (c_start_case): Fold switch expression.
10111         (c_process_expr_stmt): Fold expression.
10112         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
10113         ensure statement expression is not evaluated in constant expression.
10114         (build_binary_op): Track whether results are integer constant
10115         expressions or may occur in such, disable folding and wrap results
10116         as applicable.  Fold operands for -Wsign-compare warnings unless
10117         in_late_binary_op.
10118         (c_objc_common_truthvalue_conversion): Handle results folded to
10119         integer constants that are not integer constant expressions.
10120         * doc/extend.texi: Document when typeof operands are evaluated,
10121         that condition of __builtin_choose_expr is an integer constant
10122         expression, and more about use of __builtin_constant_p in
10123         initializers.
10124
10125 2009-03-29  Richard Guenther  <rguenther@suse.de>
10126
10127         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
10128         propagate addresses of array references.
10129
10130 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
10131
10132         * regmove.c (perhaps_ends_bb_p): Remove.
10133         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
10134         from INSN and check that the main loop stays within that basic block.
10135         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
10136         (regmove_forward_pass): Split out from regmove_optimize.  Use
10137         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
10138         (regmove_backward_pass): Split out from regmove_optimize.  Use
10139         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
10140         (regmove_optimize): Simplify.
10141
10142 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10143
10144         PR target/39545
10145         * config/i386/i386.c (classify_argument): Ignore flexible array
10146         member in struct and warn ABI change.
10147
10148 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
10149
10150         * config/i386/i386-protos.h (ix86_agi_dependent): New.
10151
10152         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
10153         (ix86_adjust_cost): Updated.
10154
10155 2009-03-29  Jan Hubicka  <jh@suse.cz>
10156
10157         PR middle-end/28850
10158         * tree-pass.h (pass_cleanup_eh): New function.
10159         (remove_unreachable_regions): Break code handling RTL
10160         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
10161         that can not be reached by runtime.
10162         (can_be_reached_by_runtime): New function.
10163         (label_to_region_map): New function.
10164         (num_eh_regions): New function.
10165         (rtl_remove_unreachable_regions): New function.
10166         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
10167         (remove_eh_region): New function.
10168         * except.h: Include sbitmap and vecprim.
10169         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
10170         num_eh_regions): Declare.
10171         * passes.c (init_optimization_passes): Schedule cleanup_eh.
10172         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
10173         * tree-eh.c (tree_remove_unreachable_handlers): New function.
10174         (tree_empty_eh_handler_p): New function.
10175         (cleanup_empty_eh): New function.
10176         (cleanup_eh): New function.
10177         (pass_cleanup_eh): New function.
10178
10179 2009-03-29  Jan Hubicka  <jh@suse.cz>
10180
10181         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
10182         for removed regions.
10183
10184 2009-03-29  Jan Hubicka  <jh@suse.cz>
10185
10186         * except.c (dump_eh_tree): Dump all datastructures.
10187
10188 2009-03-29  Jan Hubicka  <jh@suse.cz>
10189
10190         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
10191         (duplicate_eh_regions_1): Likewise.
10192         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
10193         vector; call EH verification.
10194         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10195         Be ready for region being removed.
10196
10197 2009-03-29  Jan Hubicka  <jh@suse.cz>
10198
10199         * bitmap.c (bitmap_last_set_bit): New function.
10200         * bitmap.h (bitmap_last_set_bit): Declare.
10201
10202 2009-03-29  David Ayers  <ayers@fsfe.org>
10203
10204         PR objc/27377
10205         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
10206         by calling objc_compare_types and surpress warnings about
10207         incompatible C pointers that are compatible ObjC pointers.
10208
10209 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
10210
10211         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
10212         call initialize_inline_failed.
10213         (initialize_inline_failed): Move it from here ...
10214         * cgraph.c (initialize_inline_failed): ... to here.
10215         (cgraph_create_edge): Call initialize_inline_failed rather than
10216         setting inline_failed directly.
10217
10218 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10219
10220         PR target/32542
10221         * sysv4.opt (msdata): Improve comment.
10222         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
10223         * sysv4.h (SVR4_ASM_SPEC): Likewise.
10224
10225 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10226
10227         PR target/30451
10228         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
10229         load and store attributes.
10230
10231 2009-03-29  Ben Elliston  <bje@au.ibm.com>
10232
10233         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
10234         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
10235         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
10236         * doc/extend.texi (X86 Built-in Functions): Add index entries for
10237         __builtin_infq and __builtin_huge_valq.
10238
10239 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
10240
10241         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
10242         atmega8m1 devices.
10243         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
10244         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
10245
10246 2009-03-28  Xinliang David Li  <davidxl@google.com>
10247
10248         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
10249         (do_dbg_cnt): New function.
10250
10251 2009-03-28  Jan Hubicka  <jh@suse.cz>
10252
10253         Merge from pretty-ipa:
10254
10255         2009-03-27  Jan Hubicka  <jh@suse.cz>
10256
10257         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10258         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
10259         * passes.c (function_called_by_processed_nodes_p): New.
10260         * ipa-pure-const.c (check_call): Fix handling of operands.
10261         (analyze_function): Dump debug output for skipped bodies.
10262         (local_pure_const): Use function_called_by_processed_nodes_p.
10263         * dwarf2out.c (reference_to_unused): Use output.
10264         * passes.c (do_per_function_toporder): Likewise.
10265
10266         2008-11-12  Jan Hubicka  <jh@suse.cz>
10267
10268         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
10269         * ipa-pure-const.c (funct_state_d): Add can throw field; make
10270         state_set_in_source enum
10271         (check_decl): Ignore memory tags; do not set fake looping flags;
10272         dump diagnostics.
10273         (check_operand, check_tree, check_rhs_var, check_lhs_var,
10274         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
10275         (check_call, analyze_function): Rewrite.
10276         (check_stmt): New.
10277         (add_new_function): Update call of analyze_function.
10278         (generate_summary): Add call of analyze_function.
10279         (propagate): Propagate can_throw; handle state_set_in_source correctly.
10280         (local_pure_const): New function.
10281         (pass_local_pure_const): New pass.
10282         * ipa-inline.c (inline_transform): Set after_inlining.
10283         * tree-eh.c (stmt_can_throw_external): New.
10284         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
10285         work with aliasing built.
10286         * tree-flow.h (stmt_can_throw_external): New.
10287         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
10288         and local pure/const pass in early and late optimization queue.
10289
10290 2009-03-28  Martin Jambor  <mjambor@suse.cz>
10291
10292         * fold-const.c (get_pointer_modulus_and_residue): New parameter
10293         allow_func_align.
10294         (fold_binary): Allow function decl aligment consideration is the
10295         second argument is integer constant one.
10296         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
10297         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
10298         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
10299
10300 2009-03-28  Jan Hubicka  <jh@suse.cz>
10301
10302         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
10303         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
10304         * function.h (rtl_data): Add nothrow flag.
10305         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
10306         set DECL_NOTHROW for AVAILABLE functions.
10307
10308 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
10309
10310         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
10311         following vector keyword has expansion starting with pixel or bool
10312         keyword, expand vector to __vector and pixel or bool to __pixel or
10313         __bool.
10314
10315         PR c++/39554
10316         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
10317         warn_if_disallowed_function_p): Removed.
10318         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
10319         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
10320         warning_if_disallowed_function_p.
10321         * flags.h (warn_if_disallowed_function_p,
10322         warn_disallowed_functions): Removed.
10323         * common.opt (Wdisallowed-function-list=): Removed.
10324         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
10325
10326 2009-03-28  Richard Guenther  <rguenther@suse.de>
10327
10328         PR tree-optimization/38723
10329         * tree-ssa-pre.c (compute_avail): Add all default definitions to
10330         the entry block.
10331
10332 2009-03-28  Jan Hubicka  <jh@suse.cz>
10333
10334         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
10335         test introduced by my previous patch.
10336
10337 2009-03-28  Richard Guenther  <rguenther@suse.de>
10338
10339         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
10340         the PHIs value undefined.
10341
10342 2009-03-28  Jan Hubicka  <jh@suse.cz>
10343
10344         * tree-pass.h (pass_fixup_cfg): New pass.
10345         * ipa-inline.c (inline_transform): Set
10346         always_inline_functions_inlined/after_inlining.
10347         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
10348         (pass_fixup_cfg): New pass.
10349         * passes.c (init_optimization_passes): Add fixup_cfg.
10350
10351 2009-03-28  Richard Guenther  <rguenther@suse.de>
10352
10353         PR tree-optimization/38458
10354         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
10355         argument use the arguments copy-of value.
10356
10357 2009-03-28  Richard Guenther  <rguenther@suse.de>
10358
10359         PR tree-optimization/38180
10360         * tree-ssa-ccp.c (get_default_value): Simplify.
10361         (likely_value): Likewise.
10362         (surely_varying_stmt_p): Properly handle VOP case.
10363         (ccp_initialize): Likewise.
10364         (ccp_fold): Handle propagating through *&.
10365         (fold_const_aggregate_ref): Also handle decls.
10366
10367 2009-03-28  Jan Hubicka  <jh@suse.cz>
10368
10369         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
10370         * cgraph.h (cgraph_node): Likewise.
10371         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
10372         (cgraph_reset_node): Use process flag.
10373         (cgraph_mark_functions_to_output): Likewise.
10374         (cgraph_expand_function): Likewise.
10375         (cgraph_expand_all_functions): Likewise.
10376         (cgraph_output_in_order): Likewise.
10377         * dwarf2out.c (reference_to_unused): Likewise.
10378         * passes.c do_per_function_toporder): Likewise.
10379
10380 2009-03-28  Jan Hubicka  <jh@suse.cz>
10381
10382         Bring from lto-branch:
10383
10384         2008-09-03  Doug Kwan  <dougkwan@google.com>
10385
10386         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
10387         enums instead of reason strings.
10388         * cgraph.c (cgraph_create_edge): Same.
10389         (cgraph_inline_failed_string): New function.
10390         * cgraph.h (cgraph_inline_failed_t): New enum type.
10391         (cgraph_inline_failed_string): New prototype.
10392         (struct cgraph_edge): Change type of INLINED_FAILED from constant
10393         char pointer to cgraph_inline_failed_t.
10394         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
10395         (cgraph_default_inline_p): Ditto.
10396         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
10397         to cgraph_inline_failed_t pointer.
10398         * cif-code.def: New file.
10399         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
10400         reason string.
10401         (cgraph_check_inline_limits): Change type of REASON to pointer to
10402         cgraph_inline_failed_t.  Replace reason strings with enums.
10403         (cgraph_default_inline_p): Ditto.
10404         (cgraph_recursive_inlining_p): Ditto.
10405         (update_caller_keys): Change type of FAILED_REASON to
10406         cgraph_inline_failed_t.
10407         (cgraph_set_inline_failed): Change type of REASON to pointer to
10408         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
10409         convert enums to strings for text output.
10410         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
10411         to be of type cgraph_inline_failed_t.  Replace reason strings with
10412         enums.  Call cgraph_inline_failed_string to covert enums
10413         to strings for text output.
10414         (cgraph_decide_inlining): Replace reason strings with enums.
10415         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
10416         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
10417         for text output.
10418         * tree-inline.c (expand_call_inline): Change type of REASON
10419         to cgraph_inline_failed_t.  Replace reason strings with enums.
10420         Call cgraph_inline_failed_string for text output.
10421         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
10422         (cgraph.o): Ditto.
10423
10424 2009-03-28  Jan Hubicka  <jh@suse.cz>
10425
10426         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
10427         cgraph_clone_node): Remove master clone handling.
10428         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10429         * cgraph.h (master_clone): Remove.
10430         (cgraph_is_master_clone, cgraph_master_clone): Remove.
10431         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
10432         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
10433
10434 2009-03-28  Jan Hubicka  <jh@suse.cz>
10435
10436         * cgraph.c (cgraph_function_body_availability): Functions declared
10437         inline are always safe to assume that it is not going to be replaced.
10438
10439 2009-03-28  Richard Guenther  <rguenther@suse.de>
10440
10441         PR tree-optimization/38513
10442         * tree-ssa-pre.c (eliminate): Remove redundant stores.
10443         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
10444         EXC_PTR_EXPR and FILTER_EXPR.
10445         (get_ref_from_reference_ops): Likewise.
10446
10447 2009-03-28  Richard Guenther  <rguenther@suse.de>
10448
10449         PR tree-optimization/38968
10450         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
10451         Use FLOOR_MOD_EXPR to compute misalignment.
10452
10453 2009-03-28  Richard Guenther  <rguenther@suse.de>
10454
10455         PR tree-optimization/37795
10456         * tree.h (combine_comparisons): Declare.
10457         * fold-const.c (combine_comparisons): Export.
10458         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
10459         comparisons.
10460         (ifcombine_iforif): Use combine_comparisons.
10461
10462 2009-03-28  Jan Hubicka  <jh@suse.cz>
10463
10464         * tree-eh.c (inlinable_call_p): New function.
10465         (make_eh_edges): Use it.
10466         (verify_eh_edges): Use it.
10467         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
10468         * except.c (reachable_next_level): Add inlinable_function argument
10469         (sjlj_find_directly_reachable_regions): Update.
10470         (add_reachable_handler): Do not set saw_any_handlers.
10471         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
10472         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
10473         Add new inlinable call parameter.
10474         (can_throw_internal, can_throw_external): Update.
10475         * except.h (can_throw_internal_1, can_throw_external_1,
10476         foreach_reachable_handler): Update declaration.
10477
10478 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
10479
10480         * config/arm/t-arm-coff, config/h8300/coff.h,
10481         config/i386/i386-aout.h, config/i386/i386-coff.h,
10482         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
10483         config/pdp11/2bsd.h, config/rs6000/aix41.h,
10484         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
10485         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
10486         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
10487         sys-types.h: Remove.
10488         * Makefile.in: Remove protoize and fixproto support and references
10489         in comments.
10490         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
10491         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
10492         Remove.
10493         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
10494         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
10495         unprotoize$(exeext).
10496         (rest.encap): Don't depend on $(STMP_FIXPROTO)
10497         (.PHONY): Don't depend on proto.
10498         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
10499         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
10500         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
10501         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
10502         build/gen-protos.o, build/scan.o, xsys-protos.h,
10503         build/fix-header$(build_exeext), build/fix-header.o,
10504         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
10505         stmp-install-fixproto): Remove.
10506         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
10507         SYSCALLS.c or fixproto files.
10508         (install-common): Don't install protoize.
10509         (install-headers-tar, install-headers-cpio, install-headers-cp):
10510         Don't depend on $(STMP_FIXPROTO).
10511         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
10512         install fixproto files or write out fixproto settings.
10513         (uninstall): Don't uninstall protoize.
10514         * config.gcc (use_fixproto): Remove.
10515         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
10516         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
10517         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
10518         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
10519         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
10520         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
10521         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
10522         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
10523         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
10524         * config/t-vxworks (STMP_FIXPROTO): Remove.
10525         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
10526         STMP_FIXPROTO): Remove.
10527         * config.in, configure: Regenerate.
10528         * crtstuff.c (gid_t, uid_t): Don't undefine.
10529         * doc/install.texi: Change m68k-coff to m68k-elf in example.
10530         (arm-*-coff, arm-*-aout: Remove target entries.
10531         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
10532         Remove mention of AIX 4.1.
10533         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
10534         * doc/invoke.texi (Running Protoize): Remove.
10535         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
10536         (Protoize Caveats): Remove.
10537         * tsystem.h: Update comments on headers assumed to exist.
10538
10539 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
10540
10541         * genautomata.c: Add a new year to the copyright.  Add a new
10542         reference.
10543         (struct insn_reserv_decl): Add comments for member bypass_list.
10544         (find_bypass): Remove.
10545         (insert_bypass): New.
10546         (process_decls): Use insert_bypass.
10547         (output_internal_insn_latency_func): Output all bypasses with the
10548         same input insn in one switch case.
10549
10550         * rtl.def (define_bypass): Describe bypass choice.
10551         * doc/md.texi (define_bypass): Ditto.
10552
10553 2009-03-27  Richard Guenther  <rguenther@suse.de>
10554
10555         * gimplify.c (mark_addressable): Export.
10556         * tree-flow.h (mark_addressable): Declare.
10557         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
10558         * tree-ssa.c (verify_phi_args): Verify that address taken
10559         variables have TREE_ADDRESSABLE set.
10560
10561 2009-03-27  Richard Guenther  <rguenther@suse.de>
10562
10563         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
10564         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
10565         Do not mark decls TREE_ADDRESSABLE.
10566         (build_fold_addr_expr): Adjust.
10567         (fold_addr_expr): Remove.
10568         (fold_unary): Use build_fold_addr_expr.
10569         (fold_comparison): Likewise.
10570         (split_address_to_core_and_offset): Likewise.
10571         * coverage.c (tree_coverage_counter_addr): Mark the array decl
10572         TREE_ADDRESSABLE.
10573         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
10574         (gimplify_modify_expr_to_memcpy): Mark source and destination
10575         addressable.
10576         * omp-low.c (create_omp_child_function): Mark the object decl
10577         TREE_ADDRESSABLE.
10578         (lower_rec_input_clauses): Mark the var we take the address of
10579         TREE_ADDRESSABLE.
10580         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
10581
10582 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10583
10584         PR middle-end/39315
10585         * cfgexpand.c (expand_one_stack_var_at): Change alignment
10586         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
10587
10588 2009-03-27  Richard Guenther  <rguenther@suse.de>
10589
10590         PR tree-optimization/39120
10591         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
10592         constraints.
10593         (handle_lhs_call): Process return constraints.  Add escape
10594         constraints if necessary.
10595         (handle_const_call): Fill out return constraints.  Make nested
10596         case more precise.  Avoid consttmp if possible.
10597         (handle_pure_call): Fill out return constraints.  Avoid
10598         callused if possible.
10599         (find_func_aliases): Simplify call handling.
10600
10601 2009-03-27  Richard Guenther  <rguenther@suse.de>
10602
10603         PR tree-optimization/39120
10604         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
10605         as a representative.
10606         (solve_graph): Do propagate CALLUSED.
10607         (handle_pure_call): Use a scalar constraint from CALLUSED for
10608         the return value.
10609         (find_what_p_points_to): CALLUSED shall not appear in poins-to
10610         solutions.
10611
10612 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10613
10614         PR c/39323
10615         * c-common.c (handle_aligned_attribute): Properly check alignment
10616         overflow.  Use (1U << i) instead of (1 << i).
10617
10618         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
10619
10620         * expr.h (get_mem_align_offset): Updated.
10621
10622         * tree.h (tree_decl_common): Change align to "unsigned int" and
10623         move it before pointer_alias_set.
10624
10625 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10626             Jakub Jelinek  <jakub@redhat.com>
10627
10628         PR target/38034
10629         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
10630         gr_register_operand with gr_reg_or_0_operand.
10631         (cmpxchg_rel_di): Likewise.
10632         (sync_lock_test_and_set<mode>): Likewise.
10633
10634 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10635
10636         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
10637         (true_regnum): Likewise.
10638
10639         * rtlanal.c (subreg_info): Moved to ...
10640         * rtl.h (subreg_info): Here.  New.
10641         (subreg_get_info): New.
10642
10643         * rtlanal.c (subreg_get_info): Make it extern.
10644
10645 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10646
10647         PR target/39472
10648         * config/i386/i386.c (ix86_abi): New.
10649         (override_options): Handle -mabi=.
10650         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
10651         (ix86_call_abi_override): Likewise.
10652         (init_cumulative_args): Likewise.
10653         (function_arg_advance): Likewise.
10654         (function_arg_64): Likewise.
10655         (function_arg): Likewise.
10656         (ix86_pass_by_reference): Likewise.
10657         (ix86_function_value_regno_p): Likewise.
10658         (ix86_build_builtin_va_list_abi): Likewise.
10659         (setup_incoming_varargs_64): Likewise.
10660         (is_va_list_char_pointer): Likewise.
10661         (ix86_init_machine_status): Likewise.
10662         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
10663         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
10664         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
10665         (ix86_function_abi): Make it static and return enum calling_abi.
10666         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
10667         with ix86_abi.
10668         (ix86_fn_abi_va_list): Updated.
10669
10670         * config/i386/i386.h (ix86_abi): New.
10671         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
10672         (CONDITIONAL_REGISTER_USAGE): Likewise.
10673         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
10674         (machine_function): Likewise.
10675
10676         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
10677         with ix86_abi.
10678         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
10679         (STACK_BOUNDARY): Likewise.
10680         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
10681
10682         * config/i386/i386.opt (mabi=): New.
10683
10684         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
10685         return enum calling_abi.
10686         (ix86_function_type_abi): Likewise.
10687         (ix86_function_abi): Removed.
10688
10689         * doc/invoke.texi: Document -mabi= option for x86.
10690
10691 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10692
10693         * builtins.c (real_dconstp): Delete.
10694         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
10695
10696 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
10697             Jakub Jelinek  <jakub@redhat.com>
10698
10699         PR debug/37959
10700         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
10701         (gen_subprogram_die): When a function is explicit, generate the
10702         DW_AT_explicit attribute.
10703         * langhooks.h (struct lang_hooks_for_decls): Add
10704         function_decl_explicit_p langhook.
10705         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
10706         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
10707
10708 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
10709
10710         * builtins.c (fold_builtin_memory_op): Optimize memmove
10711         into memcpy if we can prove source and destination don't overlap.
10712
10713         * tree-inline.c: Include gt-tree-inline.h.
10714         (clone_fn_id_num): New variable.
10715         (clone_function_name): New function.
10716         (tree_function_versioning): Use it.
10717         * Makefile.in (GTFILES): Add tree-inline.c.
10718
10719 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
10720
10721         * BASE-VER: Change to 4.5.0.
10722
10723 2009-03-27  Xinliang David Li  <davidxl@google.com>
10724
10725         PR tree-optimization/39557
10726         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
10727
10728 2009-03-27  Xinliang David Li  <davidxl@google.com>
10729
10730         PR tree-optimization/39548
10731         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
10732         candidate check.
10733
10734 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10735
10736         * c-common.c (pointer_int_sum): Use %wd on return from
10737         tree_low_cst.
10738
10739 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
10740
10741         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
10742         on return from tree_low_cst.
10743
10744 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10745
10746         PR c++/36799
10747         * ginclude/stdarg.h (va_copy): Define also for
10748         __GXX_EXPERIMENTAL_CXX0X__.
10749
10750 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10751
10752         PR c++/35652
10753         * builtins.h (c_strlen): Do not warn here.
10754         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
10755         * c-common.c (pointer_int_sum): Take an explicit location.
10756         Warn about offsets out of bounds.
10757         * c-common.h (pointer_int_sum): Adjust declaration.
10758
10759 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10760
10761         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
10762         markup glitch.
10763
10764 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
10765
10766         PR c++/39554
10767         * opts.c (warn_if_disallowed_function_p): Don't assume
10768         get_callee_fndecl must return non-NULL.
10769
10770 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
10771
10772         PR rtl-optimization/39522
10773         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
10774         when reg_reloaded_valid is set.
10775
10776 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10777
10778         * config/spu/divv2df3.c: New file.
10779         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
10780         (DPBIT_FUNCS): Filter out _div_df.
10781
10782 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
10783
10784         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
10785         a jump insn, count that jump in the distance to the loop start.
10786
10787 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
10788
10789         PR target/39523
10790         * config/sh/sh.c (calc_live_regs): Fix condition for global
10791         registers except PIC_OFFSET_TABLE_REGNUM.
10792
10793 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
10794
10795         PR/39518
10796         * doc/invoke.texi (-mconsole): New.
10797         (-mcygwin): New.
10798         (-mno-cygwin): New.
10799         (-mdll): New.
10800         (-mnop-fun-dllimport): New.
10801         (-mthread): New.
10802         (-mwin32): New.
10803         (-mwindows): New.
10804         (sub section "i386 and x86-64 Windows Options"): New.
10805
10806 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
10807
10808         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
10809         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
10810
10811 2009-03-25  Richard Guenther  <rguenther@suse.de>
10812
10813         PR middle-end/39497
10814         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
10815         of -Wno-error.
10816
10817 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
10818
10819         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
10820         neither of haifa/selective schedulers are working.
10821
10822 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10823
10824         * doc/invoke.texi (Debugging Options): Fix description of
10825         -fno-merge-debug-strings.
10826
10827 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
10828
10829         * config/cris/libgcc.ver: New version-script.
10830         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
10831
10832         * configure.ac <GAS features, nop mnemonic>: Add pattern
10833         crisv32-*-* for "nop".
10834         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
10835         * configure: Regenerate.
10836
10837 2009-03-24  Ira Rosen  <irar@il.ibm.com>
10838
10839         PR tree-optimization/39529
10840         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
10841         mark_sym_for_renaming for the tag copied to the new vector
10842         pointer.
10843
10844 2009-03-24  Arthur Loiret  <aloiret@debian.org>
10845
10846         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
10847         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
10848         EXTRA_SPEC_FUNCTIONS.
10849         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
10850         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
10851         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
10852         -march and -mtune options.
10853
10854 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
10855
10856         * config/m68k/t-rtems: Add m5329 multilib.
10857
10858 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
10859             Jakub Jelinek  <jakub@redhat.com>
10860
10861         PR debug/39524
10862         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
10863         nodes.
10864
10865 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
10866
10867         PR c/39495
10868         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
10869         instead of c_parser_expression_conv, if original_code isn't one of the
10870         4 allowed comparison codes, fail.
10871
10872 2009-03-23  Richard Guenther  <rguenther@suse.de>
10873
10874         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
10875         * tree.h (struct tree_type): Likewise.
10876         * reload.h (struct insn_chain): Likewise.
10877         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
10878         * function.h (struct function): Likewise.
10879         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
10880
10881 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
10882
10883         PR tree-optimization/39516
10884         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
10885
10886 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
10887
10888         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
10889         should be set true if BITS_PER_WORD of target is bigger than 32
10890
10891 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
10892
10893         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
10894         Translate -B-options to -rpath-link.  Correct existing
10895         rpath-link and conditionalize on !nostdlib.
10896
10897 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10898
10899         * doc/extend.texi (Function Attributes, Variable Attributes):
10900         Fix typos.
10901         * doc/invoke.texi (Debugging Options, Optimize Options)
10902         (i386 and x86-64 Options, MCore Options): Likewise.
10903
10904 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
10905
10906         PR debug/37890
10907         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
10908         it for block local namespace aliases.
10909         (gen_decl_die): Pass context_die to gen_namespace_die.
10910
10911 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
10912
10913         PR c/39495
10914         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
10915         minimum or maximum value.
10916
10917 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
10918
10919         * reginfo.c (globalize_reg): Recompute derived reg sets.
10920
10921 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
10922
10923         PR target/39063
10924         * libgcc2.c (mprotect): Do not use signed arguments for
10925         VirtualProtect, use DWORD arguments.  Also fix the 'may
10926         be used uninitialized' warning for the np variable.
10927
10928 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
10929
10930         PR target/39496
10931         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
10932         functions using regparm calling conventions when not optimizing.
10933         (ix86_function_sseregparm): Similarly for sseregparm calling
10934         conventions.
10935
10936 2009-03-19  Li Feng  <nemokingdom@gmail.com>
10937
10938         PR middle-end/39500
10939         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
10940         dependence if the first conflict is after niter iterations.
10941
10942 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
10943
10944         PR middle-end/38609
10945         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
10946         functions with dynamic stack-pointer adjustments.
10947
10948 2009-03-19  Ben Elliston  <bje@au.ibm.com>
10949
10950         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
10951         option; change to -msdata=data.
10952
10953 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10954
10955         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
10956         and -fopenmp.
10957
10958 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
10959
10960         PR target/35180
10961         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
10962
10963 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
10964
10965         * doc/invoke.texi (Code Gen Options): Expand discussion of
10966         -fno-common.
10967
10968 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
10969
10970         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
10971         * matrix-reorg.c (struct matrix_info): Likewise.
10972         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
10973         * rtl.h (struct mem_attrs): Likewise.
10974         * df.h (struct df): Likewise.
10975         * tree-data-ref.h (struct data_dependence_relation): Likewise.
10976         * ira-int.h (struct ira_allocno): Likewise.
10977         * df-scan.c (struct df_collection_rec): Likewise.
10978         * ira.c (struct equivalence): Likewise.
10979         * function.c (struct temp_slot): Likewise.
10980         * cfgloop.h (struct loop): Likewise.
10981
10982         PR debug/39485
10983         * function.c (use_register_for_decl): When not optimizing, disregard
10984         register keyword for variables with types containing methods.
10985
10986 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
10987
10988         PR middle-end/39447
10989         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
10990         (is_simple_operand): Call contains_component_ref_p before calling data
10991         reference analysis that would fail on COMPONENT_REFs.
10992
10993         * tree-vrp.c (search_for_addr_array): Fix formatting.
10994
10995 2009-03-18  Richard Guenther  <rguenther@suse.de>
10996
10997         * tree-vect-transform.c (vect_loop_versioning): Fold the
10998         generated comparisons.
10999         * tree-vectorizer.c (set_prologue_iterations): Likewise.
11000         (slpeel_tree_peel_loop_to_edge): Likewise.
11001
11002 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11003
11004         PR middle-end/37805
11005         * opts.c (print_specific_help): In addition to `undocumented',
11006         accept `separate' and `joined' flags if passed alone.  Describe
11007         output by the first matched one of those.
11008         (common_handle_option): Skip over empty strings.
11009         * gcc.c (display_help): Fix help string for `--help='.
11010         * doc/invoke.texi (Option Summary, Overall Options): With
11011         `--help=', classes and qualifiers can both be repeated, but
11012         only the latter can be negated.  One should not pass only
11013         negated qualifiers.  Fix markup and examples.
11014
11015         Revert
11016         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
11017         PR middle-end/37805
11018         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
11019         and -fhelp=separate.
11020
11021 2009-03-17  Jing Yu  <jingyu@google.com>
11022
11023         PR middle-end/39378
11024         * function.h (struct rtl_data): Move is_thunk from here...
11025         (struct function): ...to here.
11026         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
11027         * varasm.c (assemble_start_function): Change is_thunk from crtl to
11028         cfun.
11029         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
11030         cfun.
11031         (alpha_does_function_need_gp, alpha_start_function): Likewise.
11032         (alpha_output_function_end_prologue): Likewise.
11033         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
11034         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
11035         (rs6000_output_function_epilogue): Likewise.
11036         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
11037
11038 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
11039
11040         PR target/39482
11041         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
11042         from different units in a single alternative.
11043         (*truncdfsf_i387): Ditto.
11044         (*truncxfsf2_mixed): Ditto.
11045         (*truncxfdf2_mixed): Ditto.
11046
11047 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
11048
11049         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
11050         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
11051
11052         PR debug/39474
11053         * tree-ssa-live.c (remove_unused_locals): Don't remove local
11054         unused non-artificial variables when not optimizing.
11055
11056         PR debug/39471
11057         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
11058         DW_TAG_imported_module even if decl is IMPORTED_DECL with
11059         NAMESPACE_DECL in its DECL_INITIAL.
11060
11061         PR middle-end/39443
11062         * optabs.c (set_user_assembler_libfunc): New function.
11063         * expr.h (set_user_assembler_libfunc): New prototype.
11064         * c-common.c: Include libfuncs.h.
11065         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
11066         for memcmp, memset, memcpy, memmove and abort.
11067         * Makefile.in (c-common.o): Depend on libfuncs.h.
11068
11069         PR debug/39412
11070         * dwarf2out.c (gen_inlined_enumeration_type_die,
11071         gen_inlined_structure_type_die, gen_inlined_union_type_die,
11072         gen_tagged_type_instantiation_die): Removed.
11073         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
11074         do nothing.
11075
11076 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
11077
11078         PR testsuite/38526
11079         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
11080         its use.
11081         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
11082         (check-parallel-%): Ditto.
11083         (check-consistency): Ditto.
11084
11085 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
11086
11087         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
11088         local variable rhs by NULL_TREE.
11089
11090 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11091
11092         PR target/39477
11093         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
11094
11095 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11096
11097         PR target/39476
11098         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
11099
11100 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
11101
11102         PR target/39473
11103         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
11104         for ms->sysv ABI calls only in 64bit mode.
11105
11106         * config/i386/i386.md (untyped_call): Support 32bit.
11107
11108 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
11109
11110         * doc/extend.texi: Replace x86_65 with x86_64.
11111
11112 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
11113
11114         PR tree-optimization/39455
11115         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
11116         mismatches for POINTER_TYPE_P (type).
11117         (number_of_iterations_le): Likewise.
11118
11119 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11120
11121         * config/picochip/picochip.c: Removed profiling support.
11122         * config/picochip/picochip.md: Removed profiling instruction.
11123         * config/picochip/picochip.h: Removed profiling builtin.
11124
11125 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
11126
11127         * doc/install.texi (--with-host-libstdcxx): Document.
11128
11129 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
11130
11131         PR target/34299
11132         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
11133         generate a warning if the function name does not begin with
11134         "__vector" and the function has either the 'signal' or 'interrupt'
11135         attribute, from here to ...
11136         (avr_declare_function_name): ...here. New function.
11137         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
11138         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
11139
11140 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
11141
11142         PR bootstrap/39454
11143         * cse.c (fold_rtx): Don't modify original const_arg1 when
11144         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
11145         separate variable instead.
11146         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
11147         from out of range shift counts.
11148         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
11149
11150 2009-03-13  Catherine Moore  <clm@codesourcery.com>
11151
11152         * config/i386/x-mingw32 (host-mingw32.o): Replace
11153         diagnostic.h with $(DIAGNOSTIC_H).
11154
11155 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
11156
11157         PR target/39431
11158         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
11159         predicate.
11160         * config/i386/sync.md (sync_compare_and_swap<mode>,
11161         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
11162         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
11163         into a register.
11164         (sync_double_compare_and_swapdi_pic,
11165         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
11166         cmpxchg8b_pic_memory_operand instead of just memory_operand.
11167
11168 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11169
11170         PR target/39445
11171         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
11172
11173 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11174
11175         PR target/39327
11176         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11177         (avx_addsubv4df3): Likewise.
11178         (*avx_addsubv4sf3): Likewise.
11179         (sse3_addsubv4sf3): Likewise.
11180
11181 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
11182
11183         PR target/38824
11184         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
11185
11186 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
11187
11188         PR debug/39432
11189         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
11190         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
11191         registers for allocnos created from user-defined variables.
11192
11193 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11194
11195         PR target/39181
11196         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
11197         of non-integer mode as well.
11198
11199 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
11200
11201         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
11202         for functions for which the parameter types are unknown.
11203
11204 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
11205
11206         PR target/39137
11207         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
11208         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
11209         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
11210         * config/i386/i386.c (ix86_local_alignment): For
11211         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
11212         long long variables on the stack to avoid dynamic realignment.
11213         Allow the first argument to be a decl rather than type.
11214         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
11215
11216 2009-03-11  Nick Clifton  <nickc@redhat.com>
11217
11218         PR target/5362
11219         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
11220         options.
11221         Add description to mno-lsim option.
11222         * config/mcore/mcore.h: Remove comment about deprecated m4align
11223         option.
11224         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
11225         * doc/invoke.texi: Add description of mno-lsim and
11226         mstack-increment options.
11227
11228         * config/fr30/fr30.opt: Document the -mno-lsim option.
11229         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
11230         and -mno-lsim options.
11231
11232 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11233
11234         * fold-const.c (fold_comparison): Only call fold_inf_compare
11235         if the mode supports infinities.
11236
11237 2009-03-11  Jason Merrill  <jason@redhat.com>
11238
11239         PR debug/39086
11240         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
11241         end already did.  Notice GIMPLE_CALL modifications of the result.
11242         Don't copy debug information from an ignored decl or a decl from
11243         another function.
11244
11245 2009-03-10  Richard Guenther  <rguenther@suse.de>
11246             Nathan Froyd  <froydnj@codesourcery.com>
11247
11248         PR middle-end/37850
11249         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
11250         (__divMODE3): Likewise.
11251
11252 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
11253
11254         PR tree-optimization/39394
11255         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
11256         DECL_SIZE_UNIT of variable length FIELD_DECLs.
11257
11258 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11259
11260         * recog.c (verfiy_changes): Disallow renaming of hard regs in
11261         inline asms for register asm ("") declarations.
11262
11263 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
11264
11265         * fold-const.c (fold_unary): Fix comment.
11266
11267 2009-03-07  Jan Hubicka  <jh@suse.cz>
11268
11269         PR target/39361
11270         * tree-inline.c (setup_one_parameter): Do replacement of const
11271         argument by constant in SSA form.
11272
11273 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11274
11275         PR middle-end/38028
11276         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
11277         determine alignment passed to assign_stack_local.
11278         (assign_parms_unsplit_complex): Likewise.
11279         * except.c (sjlj_build_landing_pads): Likewise.
11280
11281 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11282
11283         PR middle-end/39360
11284         * tree-flow.h (add_referenced_var): Return bool instead of void.
11285         * tree-dfa.c (add_referenced_var): Return result of
11286         referenced_var_check_and_insert call.
11287         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
11288         of referenced_var_check_and_insert.
11289
11290         PR debug/39372
11291         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
11292         (gen_variable_die): Emit DW_AT_location on abstract static variable's
11293         DIE, don't emit it if abstract origin already has it.
11294         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
11295         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
11296
11297 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11298
11299         * genpreds.c (needs_variable): Fix parentheses at variable name
11300         detection.
11301         (write_tm_constrs_h): Indent generated code.
11302
11303 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11304
11305         * doc/extend.texi (Function Attributes): Add documentation
11306         for isr attributes.
11307
11308 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
11309
11310         PR debug/39387
11311         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
11312         take locus from its DECL_SOURCE_LOCATION instead of input_location.
11313
11314 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
11315
11316         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
11317         the loop as bad.
11318
11319 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
11320
11321         PR debug/39379
11322         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
11323         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
11324
11325 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
11326
11327         * config/i386/i386.md (R8_REG, R9_REG): New constants.
11328         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
11329         constants instead of magic numbers.
11330         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
11331         (QI_REG_P): Ditto.
11332         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
11333         (x86_64_ms_abi_int_parameter_registers): Ditto.
11334         (x86_64_int_return_registers): Ditto.
11335         (ix86_maybe_switch_abi): Ditto.
11336         (ix86_expand_call): Ditto for clobbered_registers array.
11337         (ix86_hard_regno_mode_ok): Ditto.
11338         (x86_extended_QIreg_mentioned_p): Ditto.
11339
11340 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
11341
11342         PR tree-optimization/39349
11343         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
11344
11345         * combine.c (gen_lowpart_for_combine): Use omode when generating
11346         clobber.
11347
11348 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
11349
11350         PR rtl-optimization/39235
11351         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
11352
11353 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11354
11355         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
11356
11357 2009-03-04  Richard Guenther  <rguenther@suse.de>
11358
11359         PR tree-optimization/39362
11360         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
11361         that occur in abnormal PHIs should be varying.
11362
11363 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
11364
11365         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
11366         Extend comments.
11367         (simple_iv):  Take loop as an argument instead of statement.
11368         * tree-scalar-evolution.h (simple_iv): Declaration changed.
11369         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
11370         to simple_iv.
11371         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
11372         Ditto.
11373         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
11374         * matrix-reorg.c (analyze_transpose): Ditto.
11375         * tree-data-ref.c (dr_analyze_innermost): Ditto.
11376         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
11377         * tree-predcom.c (ref_at_iteration): Ditto.
11378         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
11379
11380 2009-03-04  Richard Guenther  <rguenther@suse.de>
11381
11382         PR tree-optimization/39358
11383         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
11384         escaped_id and callused_id.
11385         (solve_graph): Likewise.
11386
11387 2009-03-04  Richard Guenther  <rguenther@suse.de>
11388
11389         PR tree-optimization/39339
11390         * tree-sra.c (try_instantiate_multiple_fields): Make it
11391         no longer ICE on the above.
11392
11393 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
11394
11395         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
11396         that fits within Pmode.
11397
11398 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11399
11400         PR middle-end/10109
11401         * tm.texi (LIBCALL_VALUE): Update description.
11402
11403 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
11404
11405         PR middle-end/34443
11406         * doc/extend.texi (section): Update description.
11407
11408 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
11409
11410         PR middle-end/39345
11411         * tree-inline.c (remapped_type): New.
11412         (can_be_nonlocal): Call remapped_type instead of remap_type.
11413
11414 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11415
11416         PR fortran/39354
11417         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
11418         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
11419
11420 2009-03-03  Richard Guenther  <rguenther@suse.de>
11421
11422         PR middle-end/39272
11423         * tree.c (tree_nonartificial_location): New function.
11424         * tree.h (tree_nonartificial_location): Declare.
11425         * builtins.c (expand_builtin_memory_chk): Provide location
11426         of the call location for artificial function pieces.
11427         (maybe_emit_chk_warning): Likewise.
11428         (maybe_emit_sprintf_chk_warning): Likewise.
11429         (maybe_emit_free_warning): Likewise.
11430         * expr.c (expand_expr_real_1): Likewise.
11431
11432 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
11433
11434         PR tree-optimization/39343
11435         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
11436         COMPONENT_REF t has ARRAY_TYPE.
11437
11438 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
11439
11440         PR middle-end/39335
11441         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
11442         when the type precision of the induction variable should be
11443         larger than the type precision of nit.
11444         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
11445         * graphite.c (graphite_loop_normal_form): Same.
11446         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
11447
11448 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11449
11450         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
11451         (*call_1_rex64_ms_sysv): Use named constants instead of magic
11452         numbers to describe clobbered registers.
11453         (*call_value_0_rex64_ms_sysv): Ditto.
11454         * config/i386/mmx.md (mmx_emms): Ditto.
11455         (mmx_femms): Ditto.
11456
11457 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
11458
11459         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
11460         of ABI_64.
11461
11462 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11463
11464         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
11465         (spu_section_type_flags): New function.
11466
11467 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
11468
11469         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
11470         reg_class_contents of FLOAT_REGS into a temporary.
11471
11472 2009-03-02  Richard Guenther  <rguenther@suse.de>
11473             Ira Rosen  <irar@il.ibm.com>
11474
11475         PR tree-optimization/39318
11476         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
11477         information to the vectorized statement.
11478
11479 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
11480
11481         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
11482         variable.  Use defined names instead of magic constants for REX SSE
11483         registers.
11484
11485 2009-03-01  Richard Guenther  <rguenther@suse.de>
11486
11487         PR tree-optimization/39331
11488         * omp-low.c (lower_send_shared_vars): Do not receive new
11489         values for the reference of DECL_BY_REFERENCE parms or results.
11490
11491 2009-03-01  Jan Hubicka  <jh@suse.cz>
11492
11493         PR debug/39267
11494         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
11495         BLOCK_NONLOCALIZED_VAR): New macros.
11496         (tree_block): Add nonlocalized_vars.
11497         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
11498         gen_decl_die): Add origin argument.  Allow generation of die with
11499         origin at hand only.
11500         (gen_member_die, gen_type_die_with_usage, force_decl_die,
11501         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
11502         of gen_*.
11503         (gen_block_die): Fix checking for unused blocks.
11504         (process_scope_var): Break out from .... ; work with origins only.
11505         (decls_for_scope) ... here; process nonlocalized list.
11506         (dwarf2out_ignore_block): Look for nonlocalized vars.
11507         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
11508         vars.
11509         (dump_scope_block): Dump them.
11510         * tree-inline.c (remap_decls): Handle nonlocalized vars.
11511         (remap_block): Likewise.
11512         (can_be_nonlocal): New predicate.
11513         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
11514
11515 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11516
11517         * configure: Regenerate.
11518
11519 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11520
11521         * optc-gen.awk: No need to duplicate option flags twice.
11522         Reuse help texts for duplicate options which do not have any.
11523
11524         * gcc.c (display_help): Document --version.
11525
11526         * gcc.c (main): If print_help_list and verbose_flag, ensure
11527         driver output comes before subprocess output.
11528
11529         * optc-gen.awk: Assign all remaining fields to help string,
11530         space-separated, for multi-line help in *.opt.
11531
11532         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
11533         -Wno-pedantic-ms-format is for MinGW targets only.
11534
11535         * doc/options.texi (Option file format): Fix bad indentation,
11536         restoring dropped sentence.
11537
11538 2009-02-28  Jan Hubicka  <jh@suse.cz>
11539
11540         * tree-inline.c (tree_function_versioning): Output debug info.
11541
11542 2009-02-28  Jan Hubicka  <jh@suse.cz>
11543
11544         PR debug/39267
11545         * tree-inline.c (setup_one_parameter): Do not copy propagate
11546         arguments when not optimizing.
11547
11548 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
11549
11550         PR target/39327
11551         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
11552         (avx_addsubv4df3): Likewise.
11553         (*avx_addsubv4sf3): Likewise.
11554         (sse3_addsubv4sf3): Likewise.
11555         (*avx_addsubv2df3): Likewise.
11556         (sse3_addsubv2df3): Likewise.
11557         (avx_unpckhps256): Correct item selectors.
11558         (avx_unpcklps256): Likewise.
11559         (avx_unpckhpd256): Likewise.
11560         (avx_unpcklpd256): Likewise.
11561
11562 2009-02-28  Jan Hubicka  <jh@suse.cz>
11563
11564         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
11565         static vars.
11566         (copy_arguments_for_versioning): If var is declared don't declare it.
11567         (tree_function_versioning): First setup substitutions and then copy
11568         args.
11569
11570 2009-02-27  Jan Hubicka  <jh@suse.cz>
11571
11572         PR debug/39267
11573         * cgraph.h (varpool_output_debug_info): Remove.
11574         * cgraphunit.c (varpool_output_debug_info): Remove.
11575         * dwarf2out.c (deferred_locations_struct): New struct
11576         (deferred_locations): New type.
11577         (deferred_locations_list): New static var.
11578         (deffer_location): New function.
11579         (gen_variable_die): Use it.
11580         (decls_for_scope): Output info on local static vars.
11581         (dwarf2out_finish): Process deferred locations.
11582         * varpool.c (varpool_output_debug_info): Remove.
11583
11584 2009-02-27  Jan Hubicka  <jh@suse.cz>
11585
11586         PR debug/39267
11587         * tree.h (TREE_PROTECTED): Fix comment.
11588         (BLOCK_HANDLER_BLOCK): Remove.
11589         (struct tree_block): Remove handler_block add body_block.
11590         (inlined_function_outer_scope_p): New.
11591         (is_body_block): Remove.
11592         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
11593         * dwarf2out.c (is_inlined_entry_point): Remove.
11594         (add_high_low_attributes): Use inlined_function_outer_scope_p.
11595         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
11596         code.
11597         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
11598         * gimplify.c (gimplify_expr): Gimplify body blocks.
11599         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
11600         block with multiple subblocks.
11601         (dump_scope_block): Prettier output; dump more flags and info.
11602         (dump_scope_blocks): New.
11603         (remove_unused_locals): Use dump_scope_blocks.
11604         * tree-flow.h (dump_scope_blocks): Declare.
11605         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
11606         * stmt.c (is_body_block): Remove.
11607         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
11608         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
11609
11610 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
11611
11612         PR middle-end/39308
11613         * graphite.c (graphite_loop_normal_form): Do not call
11614         number_of_iterations_exit from a gcc_assert.
11615
11616 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
11617
11618         * config/s390/s390.c (s390_swap_cmp): Look for conditional
11619         jumps if COND is NULL.
11620         (find_cond_jump): New function.
11621         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
11622         * config/s390/s390.md: Remove z10_cobra attribute value.
11623
11624 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
11625
11626         * config/alpha/alpha.h (alpha_expand_mov): Return false if
11627         force_const_mem returns NULL_RTX.
11628
11629 2009-02-26  Jan Hubicka  <jh@suse.cz>
11630
11631         PR debug/39267
11632         * cgraph.h (varpool_output_debug_info): Remove.
11633         * cgraphunit.c (varpool_output_debug_info): Remove.
11634         * dwarf2out.c (deferred_locations_struct): New struct
11635         (deferred_locations): New type.
11636         (deferred_locations_list): New static var.
11637         (deffer_location): New function.
11638         (gen_variable_die): Use it.
11639         (decls_for_scope): Output info on local static vars.
11640         (dwarf2out_finish): Process deferred locations.
11641         * varpool.c (varpool_output_debug_info): Remove.
11642
11643 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
11644
11645         PR rtl-optimization/39241
11646         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
11647         to subreg_offset_representable_p.
11648
11649 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11650
11651         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
11652         execute function prototype.  Get f and nregs from max_reg_num
11653         and get_insns.  Remove the first backward pass as it's dead,
11654         guard the forward pass by flag_expensive_optimizations.
11655         (rest_of_handle_regmove): Delete.
11656         (pass_regmove): Replace it with regmove_optimize.
11657
11658 2009-02-25  Martin Jambor  <mjambor@suse.cz>
11659
11660         PR tree-optimization/39259
11661         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
11662         calls_alloca function flags.
11663         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
11664         calls are detected.
11665
11666 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
11667
11668         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
11669         flags_set_1_rtx, flags_set_1_set): Delete.
11670         (regmove_optimize): Do not call mark_flags_life_zones.
11671
11672 2009-02-24  Julian Brown  <julian@codesourcery.com>
11673
11674         PR target/35965
11675         * config/arm/arm.c (require_pic_register): Only set
11676         cfun->machine->pic_reg once per function.
11677
11678 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
11679
11680         * doc/invoke.texi (Link Options): Document an easier way to pass
11681         options that take arguments to the GNU linker using -Xlinker and -Wl.
11682
11683 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
11684
11685         PR target/33785
11686         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
11687
11688 2009-02-24  Richard Guenther  <rguenther@suse.de>
11689
11690         PR debug/39285
11691         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
11692
11693 2009-02-24  Richard Guenther  <rguenther@suse.de>
11694             Zdenek Dvorak  <ook@ucw.cz>
11695
11696         PR tree-optimization/39233
11697         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
11698         from converting them to a generic type.
11699
11700 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
11701
11702         PR tree-optimization/39260
11703         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
11704         contains a condition with a real type.
11705         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
11706
11707 2009-02-23  Jason Merrill  <jason@redhat.com>
11708
11709         PR c++/38880
11710         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
11711         narrowing_initializer_constant_valid_p.
11712         (narrowing_initializer_constant_valid_p): Don't return
11713         null_pointer_node for adding a pointer to itself.
11714
11715 2009-02-23  Jan Hubicka  <jh@suse.cz>
11716
11717         PR c/12245
11718         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
11719         resizing.
11720
11721 2009-02-23  Jan Hubicka  <jh@suse.cz>
11722
11723         PR tree-optimization/37709
11724         * tree.c (block_ultimate_origin): Move here from dwarf2out.
11725         * tree.h (block_ultimate_origin): Declare.
11726         * dwarf2out.c (block_ultimate_origin): Move to tree.c
11727         * tree-ssa-live.c (remove_unused_scope_block_p):
11728         Eliminate blocks containig no instructions nor live variables nor
11729         nested blocks.
11730         (dump_scope_block): New function.
11731         (remove_unused_locals): Enable removal of dead blocks by default;
11732         enable dumping at TDF_DETAILS.
11733
11734 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11735
11736         * config/i386/i386.c (classify_argument): Don't allow COImode
11737         and OImode.
11738         (function_arg_advance_32): Don't allow OImode.
11739         (function_arg_32): Likewise.
11740         (function_value_32): Likewise.
11741         (return_in_memory_32): Likewise.
11742         (function_arg_64): Remove OImode comment.
11743
11744 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11745
11746         PR target/39261
11747         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
11748         ix86_expand_vector_set for V4DImode in 64bit mode only.
11749         (ix86_expand_vector_init_one_var): Likewise.
11750
11751 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
11752
11753         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
11754
11755 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
11756
11757         PR bootstrap/39257
11758         * loop-iv.c: Revert last change.
11759         * emit-rtl.c: Likewise.
11760
11761 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
11762
11763         PR target/39256
11764         * config/i386/i386.c (type_natural_mode): Remove an extra
11765         space in the warning message.
11766         (function_value_32): Handle 32-byte vector modes.
11767         (return_in_memory_32): Likewise.
11768
11769 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
11770
11771         * loop-iv.c (truncate_value): New function.
11772         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
11773         of lowpart_subreg.
11774         (lowpart_subreg): Move to...
11775         * emit-rtl.c: ...here.
11776
11777 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
11778
11779         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
11780         accidental and undocumented change at revision 140860.
11781
11782 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
11783
11784         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
11785         take gimple_seq * arguments.
11786         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
11787         types_compatible_p langhook.
11788
11789 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
11790             Joseph Myers  <joseph@codesourcery.com>
11791
11792         * config/arm/arm.c (arm_builtin_va_list): New function.
11793         (arm_expand_builtin_va_start): Likewise.
11794         (arm_gimplify_va_arg_expr): Likewise.
11795         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
11796         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
11797         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
11798         (va_list_type): New variable.
11799         (arm_mangle_type): Mangle va_list_type appropriately.
11800
11801 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
11802
11803         PR middle-end/39157
11804         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
11805         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
11806         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
11807         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
11808         parameter to 1000 for -O1 by default.
11809         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
11810         parameter.
11811         * loop-invariant.c: Include params.h.
11812         (move_loop_invariants): Don't call move_single_loop_invariants on
11813         very large loops.
11814
11815 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
11816
11817         * calls.c (emit_library_call_value_1): Use slot_offset instead of
11818         offset when calculating bounds for indexing stack_usage_map.  Fixes
11819         a buffer overflow with certain target setups.
11820
11821 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
11822
11823         PR target/39240
11824         * calls.c (expand_call): Clear try_tail_call if caller and callee
11825         disagree in promotion of function return value.
11826
11827 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
11828
11829         PR target/39175
11830         * c-common.c (c_determine_visibility): If visibility changed and
11831         DECL_RTL has been already set, call make_decl_rtl to update symbol
11832         flags.
11833
11834 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
11835
11836         PR c++/39188
11837         * varasm.c (assemble_variable): Don't check DECL_NAME when
11838         globalizing a variable.
11839
11840 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
11841
11842         PR c/38483
11843         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
11844         expression before any __builtin_trap call.
11845         * c-typeck.c (build_function_call): Convert and check function
11846         arguments before generating a call to a trap.  Evaluate the
11847         function arguments before the trap.
11848
11849 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
11850
11851         PR target/39228
11852         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
11853         (UNSPEC_FXAM_MEM): New unspec.
11854         (fxam<mode>2_i387_with_temp): New insn and split pattern.
11855         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
11856         memory using fxam<mode>2_i387_with_temp to remove excess precision.
11857
11858 2009-02-19  Richard Guenther  <rguenther@suse.de>
11859
11860         PR tree-optimization/39207
11861         PR tree-optimization/39074
11862         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
11863         storedanything_tree): New.
11864         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
11865         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
11866         (build_succ_graph): Add edges from STOREDANYTHING to all
11867         non-direct nodes.
11868         (init_base_vars): Initialize STOREDANYTHING.
11869         (compute_points_to_sets): Free substitution info after
11870         building the succ graph.
11871         (ipa_pta_execute): Likewise.
11872
11873         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
11874         field.
11875         (do_ds_constraint): Do not add to special var or non-pointer
11876         field solutions.
11877         (type_could_have_pointers): Split out from ...
11878         (could_have_pointers): ... here.  For arrays use the element type.
11879         (create_variable_info_for): Initialize may_have_pointers.
11880         (new_var_info): Likewise.
11881         (handle_lhs_call): Make the HEAP variable unknown-sized.
11882         (intra_create_variable_infos): Use a type with pointers for
11883         PARM_NOALIAS, make it unknown-sized.
11884
11885 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
11886
11887         PR target/39224
11888         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
11889
11890 2009-02-18  Jason Merrill  <jason@redhat.com>
11891
11892         PR target/39179
11893         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
11894         value if DECL_EXTERNAL.
11895         * tree-sra.c (sra_walk_gimple_assign): Likewise.
11896         * target.h (gcc_target::binds_local_p): Clarify "module".
11897         * tree.h (TREE_PUBLIC): Clarify "module".
11898
11899 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
11900
11901         PR target/38891
11902         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
11903         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
11904
11905 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
11906
11907         PR target/39082
11908         * c.opt (Wabi): Support C and ObjC.
11909         (Wpsabi): New.
11910
11911         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
11912
11913         * config/i386/i386.c (classify_argument): Warn once about the ABI
11914         change when passing union with long double.
11915
11916         * doc/invoke.texi: Update -Wabi for warning psABI changes.
11917
11918 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
11919
11920         PR c/35447
11921         * c-parser.c (c_parser_compound_statement): Always enter and leave
11922         a scope.
11923
11924 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11925
11926         PR target/34587
11927         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
11928
11929 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
11930
11931         PR tree-optimization/36922
11932         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
11933         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
11934         Likewise.
11935
11936 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11937
11938         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
11939         to 0 for EABI64.
11940
11941 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11942
11943         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
11944
11945 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
11946
11947         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
11948         tree sharing.
11949
11950 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
11951             Richard Sandiford  <rdsandiford@googlemail.com>
11952
11953         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
11954         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
11955         (loongson_biadd): ...this.
11956
11957 2009-02-17  Richard Guenther  <rguenther@suse.de>
11958
11959         PR tree-optimization/39202
11960         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
11961         a var make sure to follow existing collapses.
11962
11963 2009-02-17  Richard Guenther  <rguenther@suse.de>
11964
11965         PR middle-end/39214
11966         * langhooks.c (lhd_print_error_function): Check for NULL block.
11967
11968 2009-02-17  Richard Guenther  <rguenther@suse.de>
11969
11970         PR tree-optimization/39204
11971         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
11972         of the PHI arg.
11973
11974 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
11975
11976         * config/soft-fp/double.h: Update from glibc CVS.
11977
11978 2009-02-17  Richard Guenther  <rguenther@suse.de>
11979
11980         PR tree-optimization/39207
11981         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
11982         strict-aliasing warnings for pointers pointing to NULL.
11983
11984 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
11985
11986         PR c/35446
11987         * c-parser.c (c_parser_braced_init): Call pop_init_level when
11988         skipping until next close brace.
11989
11990 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
11991
11992         PR target/37049
11993         * config/i386/i386.c (ix86_expand_push): Set memory alignment
11994         to function argument boundary.
11995
11996 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
11997
11998         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
11999         in the lea_add. Reload eventually constraints it properly.
12000         * config/picochip/constraints.md: Remove the target constraint
12001         "b", since it is not needed anymore.
12002
12003 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
12004
12005         * gthr-dce.h: Uglify function parameter and local variable names.
12006         * gthr-gnat.h: Likewise.
12007         * gthr-mipssde.h: Likewise.
12008         * gthr-nks.h: Likewise.
12009         * gthr-posix95.h: Likewise.
12010         * gthr-posix.h: Likewise.
12011         * gthr-rtems.h: Likewise.
12012         * gthr-single.h: Likewise.
12013         * gthr-solaris.h: Likewise.
12014         * gthr-tpf.h: Likewise.
12015         * gthr-vxworks.h: Likewise.
12016         * gthr-win32.h: Likewise.
12017
12018 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
12019
12020         PR target/39196
12021         * config/i386/i386.md: Restrict the new peephole2 to move
12022         between MMX/SSE registers.
12023
12024 2009-02-15  Richard Guenther  <rguenther@suse.de>
12025
12026         Revert
12027         2009-02-13  Richard Guenther  <rguenther@suse.de>
12028
12029         * configure.ac: Enable LFS.
12030         * configure: Re-generate.
12031         * config.in: Likewise.
12032
12033 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12034
12035         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
12036         spu_srqwbyte, spu_srqwbytebc): Define.
12037         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
12038         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
12039         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
12040         "shrqby_<mode>"): New insn-and-split patterns.
12041         * config/spu/spu.c (expand_builtin_args): Determine and return
12042         number of operands using spu_builtin_description data.
12043         (spu_expand_builtin_1): Use it.
12044
12045 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
12046
12047         PR target/38056
12048         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
12049         TARGET_CONST_GP.
12050
12051 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12052
12053         PR target/39149
12054         * config/i386/i386.c (override_options): Correct warning
12055         messages for -malign-loops, -malign-jumps and -malign-functions.
12056
12057 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12058
12059         PR target/39152
12060         * config/i386/i386.md: Restrict the new peephole2 to move
12061         between the general purpose registers.
12062
12063 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
12064
12065         PR target/39162
12066         * config/i386/i386.c (type_natural_mode): Add a new argument.
12067         Return the original mode and warn ABI change if vector size is 32byte.
12068         (function_arg_advance): Updated.
12069         (function_arg): Likewise.
12070         (ix86_function_value): Likewise.
12071         (ix86_return_in_memory): Likewise.
12072         (ix86_sol10_return_in_memory): Likewise.
12073         (ix86_gimplify_va_arg): Likewise.
12074         (function_arg_32): Don't warn ABX ABI change here.
12075         (function_arg_64): Likewise.
12076
12077 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
12078
12079         * loop-iv.c (implies_p): In the final case, test that operands 0
12080         of the two comparisons match.
12081
12082         * config/bfin/bfin.c (find_prev_insn_start): New function.
12083         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
12084         (find_next_insn_start): Move.
12085
12086 2009-02-13  Richard Guenther  <rguenther@suse.de>
12087
12088         * configure.ac: Enable LFS.
12089         * configure: Re-generate.
12090         * config.in: Likewise.
12091
12092 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
12093
12094         PR c/35444
12095         * c-parser.c (c_parser_parms_list_declarator): Discard pending
12096         sizes on syntax error after some arguments have been parsed.
12097
12098 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12099
12100         * doc/invoke.texi (-fira): Remove.
12101
12102 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12103
12104         * caller-save.c: Replace regclass.c with reginfo.c in comments.
12105         * recog.c: Likewise.
12106         * rtl.h: Likewise.
12107
12108 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
12109
12110         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
12111         (umul_ppmm): Likewise.
12112         (count_leading_zeros): Likewise.
12113         (count_trailing_zeros): Likewise.
12114         (UMUL_TIME): Likewise.
12115
12116 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12117
12118         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
12119         soft-fp/t-softfp to tmake_file.
12120
12121         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
12122         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
12123         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
12124         IA64_BUILTIN_INFQ]: New.
12125         (ia64_init_builtins): Initialize __builtin_infq,
12126         __builtin_fabsq and __builtin_copysignq if not HPUX.
12127         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
12128         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
12129
12130         * config/ia64/lib1funcs.asm (__divtf3): Define only if
12131         SHARED is defined.
12132         (__fixtfti): Likewise.
12133         (__fixunstfti): Likewise.
12134         (__floattitf): Likewise.
12135
12136         * config/ia64/libgcc-glibc.ver: New.
12137         * config/ia64/t-fprules-softfp: Likewise.
12138         * config/ia64/sfp-machine.h: Likewise.
12139
12140         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
12141         (LIBGCC2_TF_CEXT): Likewise.
12142         (TF_SIZE): Likewise.
12143         (TARGET_INIT_LIBFUNCS): Likewise.
12144
12145         * config/ia64/t-glibc (SHLINB_MAPFILES):
12146         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
12147
12148 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
12149
12150         * config/i386/i386.c (construct_container): Rewrite processing
12151         BLKmode with X86_64_SSE_CLASS.
12152
12153 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
12154
12155         PR target/39152
12156         * config/i386/i386.md: Replace simplify_replace_rtx with
12157         replace_rtx in the new peephole2.
12158
12159 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
12160
12161         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
12162         loop unrolling do not happen at -O2.
12163
12164 2009-02-12  Michael Matz  <matz@suse.de>
12165
12166         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
12167
12168 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
12169
12170         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
12171         for -g3.
12172
12173 2009-02-12  Ben Elliston  <bje@au.ibm.com>
12174
12175         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
12176         patterns when updating the back chain.  Missed in the 2009-02-10
12177         change.
12178
12179 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
12180
12181         * doc/extend.texi (Decimal Floating Types): Update identifier of
12182         draft TR and list of missing support.
12183
12184 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
12185
12186         PR middle-end/39154
12187         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
12188         bit to variable length decl's flags, add it also to its
12189         pointer replacement variable.
12190
12191 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
12192             Jakub Jelinek  <jakub@redhat.com>
12193
12194         PR target/39118
12195         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
12196         (memory_blockage): New expander.
12197         (*memory_blockage): New insn pattern.
12198         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
12199         instead of general blockage at the end of function prologue when
12200         frame pointer is used to access red zone area.  Do not emit blockage
12201         when profiling, it is emitted in generic code.
12202         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
12203         function epilogue when frame pointer is used to access red zone area.
12204
12205 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
12206
12207         PR target/38824
12208         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
12209         by arithmetic with memory operands.
12210         * config/i386/predicates.md (commutative_operator): New.
12211
12212 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
12213
12214         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
12215         bulleted lists.
12216
12217 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
12218
12219         * alias.h (record_alias_subset): Declare.
12220         * alias.c (record_alias_subset): Make global.
12221
12222 2009-02-10  Nick Clifton  <nickc@redhat.com>
12223
12224         * tree-parloops.c: Change license to GPLv3.
12225         * ipa-struct-reorg.c: Change license to GPLv3.
12226         * ipa-struct-reorg.h: Change license to GPLv3.
12227
12228 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
12229
12230         PR c/39084
12231         * c-decl.c (start_struct): Return NULL on error.
12232
12233 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
12234
12235         PR middle-end/39124
12236         * cfgloopmanip.c (remove_path): Call remove_bbs after
12237         cancel_loop_tree, not before it.
12238
12239         PR target/39139
12240         * function.h (struct function): Add has_local_explicit_reg_vars bit.
12241         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
12242         VAR_DECLs were seen.
12243         * tree-ssa-live.c (remove_unused_locals): Recompute
12244         cfun->has_local_explicit_reg_vars.
12245         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
12246         copies or clearings if cfun->has_local_explicit_reg_vars.
12247
12248 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
12249
12250         PR target/39118
12251         * config/i386/i386.c (expand_prologue): Emit blockage at the end
12252         of function prologue when frame pointer is used to access
12253         red zone area.
12254
12255 2009-02-10  Richard Guenther  <rguenther@suse.de>
12256
12257         PR middle-end/39127
12258         * gimplify.c (gimple_regimplify_operands): Always look if
12259         we need to create a temporary.
12260
12261 2009-02-10  Richard Guenther  <rguenther@suse.de>
12262
12263         PR tree-optimization/39132
12264         * tree-loop-distribution.c (todo): New global var.
12265         (generate_memset_zero): Trigger TODO_rebuild_alias.
12266         (tree_loop_distribution): Return todo.
12267
12268 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
12269
12270         PR target/39119
12271         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
12272         (x86_64_reg_class_name): Removed.
12273         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
12274         first one isn't X86_64_SSE_CLASS or any other ones aren't
12275         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
12276         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
12277         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
12278         and 3 X86_64_SSEUP_CLASS.
12279         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
12280         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
12281
12282 2009-02-10  Ben Elliston  <bje@au.ibm.com>
12283
12284         * config/rs6000/rs6000.md (allocate_stack): Always use an update
12285         form instruction to update the stack back chain word, even if the
12286         user has disabled the generation of update instructions.
12287         (movdi_<mode>_update_stack): New.
12288         (movsi_update_stack): Likewise.
12289         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
12290         always use an update form instruction to update the stack back
12291         chain word.
12292
12293 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
12294
12295         PR middle-end/38953
12296         * graphite.c (if_region_set_false_region): After moving a region in
12297         the false branch of a condition, remove the empty dummy basic block.
12298         (gloog): Remove wrong fix for PR38953.
12299
12300 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12301
12302         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
12303         generation due to implicit sign extension.
12304
12305 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
12306
12307         PR middle-end/38981
12308         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
12309         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
12310
12311 2009-02-09  Richard Guenther  <rguenther@suse.de>
12312
12313         PR middle-end/35202
12314         * convert.c (convert_to_real): Disable (float)fn((double)x)
12315         to fnf(x) conversion if errno differences may occur and
12316         -fmath-errno is set.
12317
12318 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
12319
12320         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
12321         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
12322         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
12323
12324 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12325
12326         PR c/35434
12327         * c-common.c (handle_alias_attribute): Disallow attribute for
12328         anything not a FUNCTION_DECL or VAR_DECL.
12329
12330 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
12331
12332         PR c/39035
12333         * real.c (do_compare): Special-case compare of zero against
12334         decimal float value.
12335
12336 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
12337
12338         PR c/36432
12339         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
12340         as indicating flexible array members unless the field itself is
12341         being declarared as the incomplete array.
12342
12343 2009-02-06  Jan Hubicka  <jh@suse.cz>
12344
12345         PR tree-optimization/38844
12346         * ipa-inline.c (try_inline): Stop inlining recursion when edge
12347         is already inlined.
12348
12349 2009-02-06  Richard Guenther  <rguenther@suse.de>
12350
12351         PR middle-end/38977
12352         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
12353         fork because we may expand it as __gcov_fork.
12354
12355 2009-02-06  Nick Clifton  <nickc@redhat.com>
12356
12357         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
12358
12359 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
12360
12361         PR tree-optimization/35659
12362         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
12363         vn_phi_eq): Shortcut if hashcode does not match.
12364         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
12365         NULL operands.
12366         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
12367         and avoid iterative_hash_expr.
12368         (FOR_EACH_VALUE_ID_IN_SET): New.
12369         (value_id_compare): Remove.
12370         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
12371         sort expressions by value id.
12372
12373 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
12374
12375         PR target/38991
12376         * config/sh/predicates.md (general_movsrc_operand): Don't check
12377         the subreg of system registers here.
12378
12379 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
12380
12381         PR c++/39106
12382         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
12383         on the copied decl.
12384
12385 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
12386
12387         PR rtl-optimization/39110
12388         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
12389         addresses, not aligned ones.
12390
12391 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
12392             Richard Guenther  <rguenther@suse.de>
12393
12394         PR tree-optimization/39100
12395         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
12396         comment says and add edges.
12397
12398 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
12399
12400         PR c/35435
12401         * c-common.c (handle_tls_model_attribute): Ignore attribute for
12402         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
12403
12404 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
12405
12406         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
12407         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
12408         register_bb_in_sese, new_sese, free_sese): Moved.
12409         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
12410         outermost_loop_in_scop, build_scop_iteration_domain,
12411         expand_scalar_variables_ssa_name, get_vdef_before_scop,
12412         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
12413         Use loop_in_sese_p instead of loop_in_scop_p.
12414         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
12415         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
12416         (scopdet_basic_block_info): Fix bug in scop detection.
12417         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
12418         eq_loop_to_cloog_loop): Remove.
12419         (nb_loops_around_loop_in_scop, nb_loop
12420         ref_nb_loops): Moved here...
12421         * graphite.h (ref_nb_loops): ... from here.
12422         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
12423         (loop_domain_dim, loop_iteration_vector_dim): Remove.
12424         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
12425         * testsuite/gcc.dg/graphite/scop-19.c: New
12426
12427 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
12428             Hans-Peter Nilsson  <hp@axis.com>
12429
12430         PR rtl-optimization/37889
12431         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
12432         Move offset handling from PLUS to before the switch.  Use new
12433         arguments when considering SYMBOL_REFs too.
12434         (rtx_addr_can_trap_p): Pass dummy offset and size.
12435         (enum may_trap_p_flags): Remove.
12436         (may_trap_p_1): Pass size from MEM_SIZE.
12437
12438         PR rtl-optimization/38921
12439         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
12440         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
12441         * rtlanal.c (may_trap_after_code_motion_p): Delete.
12442         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
12443
12444 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
12445
12446         AVX Programming Reference (January, 2009)
12447         * config/i386/sse.md (*vpclmulqdq): New.
12448
12449 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
12450
12451         PR tree-optimization/38977
12452         PR gcov-profile/38292
12453         * calls.c (special_function_p): Disregard __builtin_ prefix.
12454
12455 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
12456
12457         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
12458         non-indexable addresses even before reload.
12459
12460 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12461
12462         PR c/29129
12463         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
12464         as having variable size.  Do not give an error for unnamed
12465         parameters with [*] declarators.  Give a warning for type names
12466         with [*] declarators and mark them as variable size.
12467         * c-parser.c (c_parser_sizeof_expression): Do not give an error
12468         for sizeof applied to [*] type names.
12469
12470 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12471
12472         PR C++/36607
12473         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
12474
12475 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12476
12477         * gcc.c (process_command): Update copyright notice dates.
12478         * gcov.c (print_version): Likewise.
12479         * gcov-dump.c (print_version): Likewise.
12480         * mips-tfile.c (main): Likewise.
12481         * mips-tdump.c (main): Likewise.
12482
12483 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
12484
12485         PR c/35433
12486         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
12487         for composite type involving a zero-length array type.
12488
12489 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
12490
12491         PR target/35318
12492         * function.c (match_asm_constraints_1): Skip over
12493         initial optional % in the constraint.
12494
12495         PR inline-asm/39059
12496         * c-parser.c (c_parser_postfix_expression): If fixed point is not
12497         supported, don't accept FIXED_CSTs.
12498         * c-decl.c (finish_declspecs): Error if fixed point is not supported
12499         and _Sat is used without _Fract/_Accum.  Set specs->type to
12500         integer_type_node for cts_fract/cts_accum if fixed point is not
12501         supported.
12502
12503 2009-02-02  Catherine Moore  <clm@codesourcery.com>
12504
12505         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
12506
12507 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
12508
12509         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
12510         (ABI_HAS_64BIT_SYMBOLS): Use it.
12511         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
12512
12513 2009-02-02  Paul Brook  <paul@codesourcery.com>
12514
12515         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
12516
12517 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
12518
12519         PR inline-asm/39058
12520         * recog.h (asm_operand_ok): Add constraints argument.
12521         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
12522         recurse on matching constraint.
12523         (check_asm_operands): Pass constraints as 3rd argument to
12524         asm_operand_ok.  Don't look up matching constraint here.
12525         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
12526         to asm_operand_ok.
12527
12528 2009-02-02  Ben Elliston  <bje@au.ibm.com>
12529
12530         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
12531         TARGET_NARROW_VOLATILE_BITFIELD macro names.
12532
12533 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12534
12535         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
12536         information.  Remove some obsolete information.  Reorganize.
12537
12538         * config/pa/fptr.c: Revert license to GPL 2.
12539         * config/pa/milli64.S: Likewise.
12540
12541 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12542
12543         PR target/38904
12544         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
12545         LIBRARY name in, instead of hard-coding it.
12546         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
12547         extra target make frag to tmake_files according to EH model.
12548         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
12549         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
12550         frags that define makefile variable EH_MODEL appropriately.
12551         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
12552         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
12553         to "-sjlj" according to type of EH configured.
12554         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12555         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
12556         to "_sjlj" according to type of EH configured.
12557         (LIBGCC_SONAME):  Concatenate it to shared library base name.
12558         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
12559         (SHLIB_LINK):  Add missing semicolon to if-else construct.
12560         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12561         string value of "pe_dll" command-line option.
12562         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
12563         (SHLIB_SONAME):  Use it when overriding t-cygming default.
12564         (SHLIB_IMPLIB):  Override t-cygming default.
12565         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
12566         string value of "pe_dll" command-line option.
12567
12568 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
12569
12570         PR target/38952
12571         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
12572         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
12573
12574 2009-01-31  Richard Guenther  <rguenther@suse.de>
12575
12576         PR tree-optimization/38937
12577         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
12578         computing the transitive closure.
12579
12580 2009-01-30  Richard Guenther  <rguenther@suse.de>
12581
12582         PR tree-optimization/39041
12583         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
12584         Propagate variable indices only if the types match for this stmt.
12585
12586 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
12587
12588         PR target/39013
12589         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
12590         inline but never defined.
12591
12592 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
12593
12594         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
12595         (*insv_h_di_reg_extimm): New insn.
12596         (*insv_l<mode>_reg_extimm): New insn.
12597
12598 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12599
12600         * config/picochip/picochip.c (flag_conserve_stack): set
12601         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
12602         fconserve-stack. Reduce call-overhead used by inliner.
12603
12604 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
12605
12606         PR/38157
12607         * common.opt (flag_conserve_stack): Initialised to zero.
12608
12609 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
12610
12611         PR/39002
12612         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
12613         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
12614         method.
12615
12616 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
12617
12618         * ira-color.c (allocno_reload_assign): Update comments.
12619         * regmove.c (regmove_optimize): Likewise.
12620
12621         * ra.h: Removed.
12622
12623 2009-01-29  Robert Millan  <rmh@aybabtu.com>
12624
12625         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
12626         * config/i386/kopensolaris-gnu.h: New file.  Undefine
12627         `MD_UNWIND_SUPPORT'.
12628         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
12629
12630 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
12631
12632         PR tree-optimization/39007
12633         * tree-loop-distribution.c (generate_builtin): Use
12634         recompute_dominator to compute the immediate dominator of the
12635         basic block just after the loop.
12636
12637 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12638
12639         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
12640         (ASM_OUTPUT_DWARF_PCREL): Define.
12641
12642 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
12643
12644         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
12645         * doc/passes.texi: Remove entries about regclass, local-alloc, and
12646         global.  Modify entries about regmove and IRA.
12647
12648         * ra-conflict.c: Remove the file.
12649
12650         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
12651
12652         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
12653         (pass_regclass_init): Rename to pass_reginfo_init.
12654
12655         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
12656
12657         * toplev.h (flag_ira): Remove.
12658
12659         * caller-save.c (setup_save_areas): Remove flag_ira.
12660
12661         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
12662
12663         * global.c: Remove the file.
12664
12665         * opts.c (decode_options): Remove flag_ira.
12666
12667         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
12668
12669         * regmove.c: Modify file description.
12670         (find_use_as_address, try_auto_increment): Define them only if
12671         AUTO_INC_DEC is defined.
12672         (replacement_quality, replace_in_call_usage, fixup_match_1,
12673         stable_and_no_regs_but_for_p): Remove.
12674         (reg_set_in_bb): Make it static.
12675         (regmove_optimize): Remove flag_ira and code which worked for
12676         !flag_ira.
12677
12678         * local-alloc.c: Remove the file.
12679
12680         * common.opt (fira): Remove.
12681
12682         * ira.c: Include except.h.
12683         (eliminable_regset): Move from global.c.
12684         (mark_elimination): Ditto.  Remove flag_ira.
12685         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
12686         equiv_mem_modified, validate_equiv_mem_from_store,
12687         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
12688         contains_replace_regs, memref_referenced_p, memref_used_between_p,
12689         no_equiv, recorded_label_ref): Move from local-alloc.c.
12690         (update_equiv_regs): Ditto.  Make it static.
12691         (print_insn_chain, print_insn_chains): Move it from global.c.
12692         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
12693         (build_insn_chain): Ditto.  Make it static.
12694         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
12695         Rename to init_live_subregs.
12696         (gate_ira): Remove flag_ira.
12697
12698         * regclass.c: Rename reginfo.c.  Change file description.
12699         (FORBIDDEN_INC_DEC_CLASSES): Remove.
12700         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
12701         (init_reg_sets_1): Remove code for evaluation of
12702         reg_class_superclasses and losing_caller_save_reg_set.
12703         (init_regs): Remove init_reg_autoinc.
12704         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
12705         ok_for_base_p_nonstrict): Remove.
12706         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
12707         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
12708         corresponding entries.
12709         (dump_regclass, record_operand_costs, scan_one_insn,
12710         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
12711         record_address_regs, auto_inc_dec_reg_p): Remove.
12712         (gt-regclass.h): Rename to gt-reginfo.h.
12713
12714         * rtl.h (dump_global_regs, retry_global_alloc,
12715         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
12716
12717         * Makefile.in (RA_H): Remove.
12718         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
12719         Rename regclass.o to reginfo.o.
12720         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
12721         gt-reginfo.h.
12722         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
12723         (GTFILES): Rename regclass.c to reginfo.c.
12724
12725         * passes.c (init_optimization_passes): Remove pass_local_alloc and
12726         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
12727
12728         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
12729         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
12730         Remove flag_ira.
12731         (finish_spills): Ditto.  Remove code for !flag_ira.
12732
12733 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
12734
12735         PR middle-end/35854
12736         * doc/invoke.texi (rtl debug options): Complete rewrite.
12737         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
12738         to auto_inc_dec".
12739         * mode-switching.c (pass_mode_switching): Rename pass from
12740         "mode-sw" to "mode_sw".
12741         * except.c (pass_convert_to_eh_ranges): Rename pass from
12742         "eh-ranges" to "eh_ranges".
12743         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
12744         to "subreg1".
12745
12746
12747 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
12748             Alexander Monakov  <amonakov@ispras.ru>
12749
12750         PR middle-end/38857
12751         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
12752         register.
12753         (move_exprs_to_boundary): Change return type and pass through
12754         should_move from move_op.  Relax assert.  Update usage ...
12755         (schedule_expr_on_boundary): ... here.  Use should_move instead of
12756         cant_move.
12757         (move_op_orig_expr_found): Indicate that insn was disconnected from
12758         stream.
12759         (code_motion_process_successors): Do not call after_merge_succs
12760         callback if original expression was not found when traversing any of
12761         the branches.
12762         (code_motion_path_driver): Change return type.  Update prototype.
12763         (move_op): Update comment.  Add a new parameter (should_move).  Update
12764         prototype.  Set *should_move based on indication provided by
12765         move_op_orig_expr_found.
12766
12767 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
12768
12769         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
12770         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
12771         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
12772         * config/rs6000/rs6000.c (rs6000_override_options): Default
12773         avoid-indexed-addresses on for Power6, off for everything else.
12774         (avoiding_indexed_address_p): New function.
12775         (rs6000_legitimize_address): Use it.
12776         (rs6000_legitimate_address): Likewise.
12777         * config/rs6000/rs6000.md (movXX_updateX): Likewise
12778
12779 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
12780
12781         PR tree-optimization/38997
12782         * tree-loop-distribution.c (generate_memset_zero): Use
12783         POINTER_PLUS_EXPR for a pointer addition.
12784
12785 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
12786
12787         * config/s390/s390.md (bswap<mode>2): New pattern added.
12788
12789 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12790
12791         * config/s390/s390.md (*tls_load_31): Added type attribute.
12792
12793 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12794
12795         * config/s390/s390.md: Fix a few comments.
12796
12797 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
12798
12799         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
12800         (*tm<mode>_full): Fixed z10prop attribute.
12801         (*tst<mode>_extimm): Fixed z10prop attribute.
12802         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
12803         (*tstqiCCT_cconly): Fixed z10prop attribute.
12804         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
12805         (*movsi_larl): Fixed z10prop attribute.
12806         (*movsi_zarch): Fixed z10prop attribute.
12807         (*movsi_eas): Fixed z10prop attribute.
12808         (*movhi): Fixed z10prop attribute.
12809         (*movqi): Fixed z10prop attribute.
12810         (*movstrictqi): Fixed z10prop attribute.
12811         (*mov<mode>): Fixed z10prop attribute.
12812         (*movcc): Fixed z10prop attribute.
12813         (*sethighpartdi_64): Fixed z10prop attribute.
12814         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
12815         (*negdi2_sign_cc): Fixed z10prop attribute.
12816         (*negdi2_sign): Fixed z10prop attribute.
12817         (*absdi2_sign_cc): Fixed z10prop attribute.
12818         (*absdi2_sign): Fixed z10prop attribute.
12819         (*negabsdi2_sign_cc): Fixed z10prop attribute.
12820         (*negabsdi2_sign): Fixed z10prop attribute.
12821         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
12822         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
12823         (doloop_si64): Fixed z10prop attribute.
12824         (doloop_si31): Fixed z10prop attribute.
12825         (doloop_long): Fixed z10prop attribute.
12826         (indirect_jump): Fixed z10prop attribute.
12827         (nop): Fixed z10prop attribute.
12828         (main_base_64): Fixed z10prop attribute.
12829         (reload_base_64): Fixed z10prop attribute.
12830
12831 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
12832
12833         PR rtl-optimization/38740
12834         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
12835         if !optimize.
12836         * config/mips/mips.c (mips_reorg): Likewise.
12837
12838 2009-01-28  Richard Guenther  <rguenther@suse.de>
12839
12840         PR tree-optimization/38926
12841         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
12842         with the correct value id to a value.
12843         (do_regular_insertion): Use the value number of edoubleprime
12844         for the value number of the expr.
12845
12846         Revert
12847         2008-08-21  Richard Guenther  <rguenther@suse.de>
12848
12849         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
12850         a PHI ask VN if it is already available.
12851         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
12852         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
12853
12854 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
12855
12856         PR middle-end/38934
12857         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
12858         set to varying whenever max has TREE_OVERFLOW set, similarly
12859         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
12860
12861 2009-01-28  Richard Guenther  <rguenther@suse.de>
12862
12863         PR middle-end/38908
12864         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
12865         uninitialized aggregate uses in call arguments.
12866
12867 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
12868
12869         PR tree-optimization/38984
12870         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
12871         the nothing_id variable if -fno-delete-null-pointer-checks.
12872
12873 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
12874
12875         PR target/38988
12876         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
12877         (set_got_offset_rex64): Ditto.
12878
12879 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
12880
12881         PR target/38941
12882         * doc/extend.texi: Improve local variable with asm reg.
12883
12884 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
12885
12886         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
12887         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
12888         was not supplied then set warn_packed_bitfield_compat to the
12889         default value of 1.
12890         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
12891         against 1.
12892
12893 2009-01-27  Richard Guenther  <rguenther@suse.de>
12894
12895         PR tree-optimization/38503
12896         * cfgexpand.c (expand_gimple_basic_block): Ignore
12897         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
12898         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
12899         variables that cannot have TBAA applied.
12900         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
12901         statements.
12902
12903 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
12904
12905         PR middle-end/38969
12906         * calls.c (initialize_argument_information): Do not wrap complex
12907         arguments in SAVE_EXPR.
12908
12909 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
12910
12911         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
12912         (INSTALL_LIBGCC): Revert typo commit.
12913
12914 2009-01-26  Richard Guenther  <rguenther@suse.de>
12915
12916         PR tree-optimization/38745
12917         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
12918         from special handling.
12919
12920 2009-01-26  Richard Guenther  <rguenther@suse.de>
12921
12922         PR tree-optimization/38745
12923         * tree-ssa.c (execute_update_addresses_taken): Do not include
12924         variables that cannot possibly be a register in not_reg_needs.
12925         Do not clear TREE_ADDRESSABLE on vars that may not become
12926         registers.
12927         * tree-ssa.c (update_alias_info_1): Include those in the set
12928         of addressable vars.
12929
12930 2009-01-26  Richard Guenther  <rguenther@suse.de>
12931
12932         PR middle-end/38851
12933         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
12934         * tree-ssa-dse.c: Include langhooks.h
12935         (execute_simple_dse): Remove stores with zero size.
12936
12937 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
12938
12939         PR c/38957
12940         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
12941         as PLUS_EXPR.
12942
12943 2009-01-24  Julian Brown  <julian@codesourcery.com>
12944
12945         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
12946         config/arm/linux-atomic.c.
12947         * config/arm/linux-atomic.c: New.
12948
12949 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
12950
12951         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
12952         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
12953         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
12954
12955 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
12956
12957         PR c/38938
12958         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
12959         properly.
12960
12961 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
12962
12963         PR tree-optimization/38953
12964         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
12965         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
12966         (gloog): Split the exit of the scop when the scop exit is a loop exit.
12967         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
12968         changed the CFG.
12969
12970 2009-01-24  Paul Brook  <paul@codesourcery.com>
12971
12972         * config/arm/neon.md (neon_type): Move to arm.md.
12973         (neon_mov<VSTRUCT>): Add neon_type attribute.
12974         * config/arm/arm.md (neon_type): Move to here.
12975         (conds): Add "unconditioal" and use as default for NEON insns.
12976
12977 2009-01-24  Ben Elliston  <bje@au.ibm.com>
12978
12979         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
12980         void *' warning from -Wc++-compat.
12981         * Makefile.in (dominance.o-warn): Remove.
12982
12983 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
12984
12985         PR tree-optimization/38932
12986         * fold-const.c (fold_unary_ignore_overflow): New.
12987         * tree.h (fold_unary_ignore_overflow): Declare.
12988         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
12989         * tree-ssa-sccvn.c (visit_reference_op_load,
12990         simplify_unary_expression): Likewise.
12991
12992 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
12993
12994         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
12995         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
12996         regardless of their type.
12997         * c-common.c (handle_packed_attribute): Don't ignore packed on
12998         bitfields.
12999         * c.opt (Wpacked-bitfield-compat): New warning option.
13000         * stor-layout.c (place_field): Warn if offset of a field changed.
13001         * doc/extend.texi (packed): Mention the ABI change.
13002         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
13003         (Warning Options): Add it to the list.
13004
13005 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
13006
13007         * c-opts.c (c_common_post_options): Fix a typo in comments.
13008
13009 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
13010
13011         PR middle-end/38615
13012         * gimplify.c (gimplify_init_constructor): Fix promotion of const
13013         variables to static.
13014         * doc/invoke.texi (-fmerge-all-constants): Update description.
13015
13016 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
13017
13018         PR target/38931
13019         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
13020         (*movdi_1_rex64): Use type "mmx" for alternative 5.
13021
13022 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
13023
13024         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
13025         a word boundary.
13026         (LOCAL_ALIGNMENT): Similarly.
13027
13028 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13029             Joseph Myers  <joseph@codesourcery.com>
13030
13031         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
13032         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
13033         * config/arm/arm-tune.md: Regenerate.
13034         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
13035         -march=iwmmxt2.
13036
13037 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
13038
13039         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
13040         version number to five.
13041
13042 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
13043
13044         PR c++/38930
13045         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
13046         * c-common.c (set_underlying_type): Likewise.
13047         (is_typedef_decl ): Likewise
13048         * tree.h: Likewise
13049         (set_underlying_type): Likewise.
13050         (is_typedef_type): Likewise.
13051
13052 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
13053
13054         PR middle-end/38587
13055         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
13056         crossing setjmps.
13057
13058 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
13059
13060         PR bootstrap/37660
13061         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
13062         (LIBGCC_SPEC):  Don't define.
13063         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
13064
13065 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
13066
13067         PR rtl-optimization/38879
13068         * alias.c (base_alias_check): Unaligned access via AND address can
13069         alias all surrounding object types except those with sizes equal
13070         or wider than the size of unaligned access.
13071
13072 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
13073
13074         PR c++/26693
13075         * c-decl.c (clone_underlying_type): Move this ...
13076         * c-common.c (set_underlying_type): ... here.
13077         Also, make sure the function properly sets TYPE_STUB_DECL() on
13078         the newly created typedef variant type.
13079         (is_typedef_decl ): New entry point.
13080         * tree.h: Added a new member member_types_needing_access_check to
13081         struct tree_decl_non_common.
13082         (set_underlying_type): New entry point.
13083         (is_typedef_type): Likewise.
13084
13085 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
13086
13087         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
13088         Check whether two instructions have memory references that
13089         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
13090         are helper functions for traversing.
13091         * alias.h (insn_alias_sets_confilict_p): New prototypes.
13092         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
13093         not to draw dependency edge for instructions with non-conflicting
13094         alias sets.
13095
13096 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
13097
13098         PR other/38758
13099         * longlong.h: Update copyright years.  Use soft-fp license notice.
13100         Sync __clz_tab declaration with glibc.
13101
13102 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
13103
13104         PR target/30687
13105         * doc/extend.texi (syscall_linkage): New.
13106         (version_id): Modify.
13107
13108 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13109             Richard Guenther  <rguenther@suse.de>
13110
13111         PR tree-optimization/38747
13112         PR tree-optimization/38748
13113         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
13114         conversion if the base address is an indirect reference and the
13115         aliasing sets could cause issues.
13116
13117 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13118
13119         * common.opt (fgraphite, fgraphite-identity): Add comment for
13120         explaining why these options are not documented.
13121
13122 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
13123
13124         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
13125         gimple_call_lhs is NULL.
13126
13127 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
13128
13129         PR target/38868
13130         * emit-rtl.c (adjust_address_1): Make sure memref is never
13131         overwritten.
13132
13133 2009-01-20  Ben Elliston  <bje@au.ibm.com>
13134
13135         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13136         const qualifier from arg parameter. Remove unnecessary cast to char *.
13137         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
13138         const qualifier from arg 2.
13139
13140 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
13141
13142         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
13143
13144 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
13145
13146         PR c/38869
13147         * rtl.h (reinit_regs): New prototype.
13148         * regclass.c: Include ira.h.
13149         (reinit_regs): New.
13150         * Makefile.in (regclass.o): Add ira.h.
13151         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
13152
13153 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
13154
13155         PR target/38736
13156         * c-common.c (handle_aligned_attribute): Use
13157         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
13158         default alignment value.
13159
13160         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
13161
13162         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
13163         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
13164
13165         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
13166         __BIGGEST_ALIGNMENT__.
13167
13168         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
13169
13170 2009-01-18  Richard Guenther  <rguenther@suse.de>
13171
13172         PR tree-optimization/38819
13173         * tree-flow.h (operation_could_trap_helper_p): Declare.
13174         * tree-eh.c (operation_could_trap_helper_p): Export.
13175         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
13176         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
13177         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
13178         are about to insert a possibly trapping instruction and fail
13179         in this case.
13180
13181 2009-01-18  Andreas Schwab  <schwab@suse.de>
13182
13183         * doc/install.texi (Configuration): Remove obsolete paragraph
13184         about use of --with-gnu-ld with --with-gnu-as.
13185
13186 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
13187
13188         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
13189         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
13190         Follow spelling conventions.
13191
13192 2009-01-18  Ben Elliston  <bje@au.ibm.com>
13193
13194         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
13195         C++ warning about implicit conversion from void * to struct
13196         bitmap_head_def *.
13197         (bitmap_obstack_free): Likewise for bitmap_element *.
13198         * Makefile.in (bitmap.o-warn): Remove.
13199
13200 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
13201
13202         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
13203
13204 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
13205             Tobias Grosser  <tobi.grosser@amd.com>
13206
13207         * graphite.c (graphite_trans_scop_block): Do not block single
13208         nested loops.
13209
13210 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
13211
13212         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
13213         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
13214         test with assertion.
13215
13216 2009-01-16  Richard Guenther  <rguenther@suse.de>
13217
13218         PR tree-optimization/38835
13219         PR middle-end/36227
13220         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
13221         and INT + PTR -> (INT)(PTR p+ INT) folding.
13222         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
13223
13224 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
13225
13226         PR target/38554
13227         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
13228         the subreg from a lowpart subreg if it is also casting the value.
13229
13230 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13231             Tobias Grosser  <tobi.grosser@amd.com>
13232
13233         * graphite.c (compare_prefix_loops): New.
13234         (build_scop_canonical_schedules): Rewritten.
13235         (graphite_transform_loops): Move build_scop_canonical_schedules
13236         after build_scop_iteration_domain.
13237
13238 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
13239             Tobias Grosser  <tobi.grosser@amd.com>
13240
13241         * graphite.c (add_conditions_to_domain): Add the loops to
13242         the dimension of the iteration domain.  Do copy the domain
13243         only when it exists.
13244         (build_scop_conditions_1): Do not call add_conditions_to_domain.
13245         (add_conditions_to_constraints): New.
13246         (can_generate_code_stmt, can_generate_code): Removed.
13247         (gloog): Do not call can_generate_code.
13248         (graphite_transform_loops): Call add_conditions_to_constraints
13249         after building the iteration domain.
13250
13251 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
13252
13253         PR tree-optimization/38789
13254         * tree-ssa-threadedge.c
13255         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
13256         __builtin_constant_p.
13257
13258 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
13259
13260         * dce.c (delete_unmarked_insns): Reversed the order that insns are
13261         examined before deleting them.
13262
13263 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
13264
13265         * function.c (aggregate_value_p): Correctly extract the function
13266         type from CALL_EXPR_FN lookup.
13267
13268 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
13269
13270         * config/picochip/picochip.c (picochip_override_options): Revert
13271         CFI asm flag disable commited previously.
13272
13273 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
13274             Tobias Grosser  <tobi.grosser@amd.com>
13275             Jan Sjodin  <jan.sjodin@amd.com>
13276
13277         * graphite.c (scan_tree_for_params): On substractions negate
13278         all the coefficients of the term.
13279         (clast_to_gcc_expression_red): New.  Handle reduction expressions
13280         of more than two operands.
13281         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
13282         (get_vdef_before_scop): Handle also the case of default definitions.
13283
13284 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
13285
13286         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
13287         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
13288         Also use them when walking CALL_INSN_FUNCTION_USAGE.
13289
13290 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
13291             Joey Ye  <joey.ye@intel.com>
13292
13293         PR middle-end/37843
13294         * cfgexpand.c (expand_stack_alignment): Don't update stack
13295         boundary nor check incoming stack boundary here.
13296         (gimple_expand_cfg): Update stack boundary and check incoming
13297         stack boundary here.
13298
13299 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
13300
13301         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
13302
13303 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
13304
13305         PR rtl-optimization/38245
13306         * calls.c (expand_call): Add stack arguments to
13307         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13308         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
13309         in regs and partially in memory or BLKmode arguments.
13310         (emit_library_call_value_1): Add stack arguments to
13311         CALL_INSN_FUNCTION_USAGE even for pure calls (when
13312         ACCUMULATE_OUTGOING_ARGS).
13313         * dce.c: Include tm_p.h.
13314         (find_call_stack_args): New function.
13315         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
13316         argument.
13317         (mark_insn): Call find_call_stack_args for CALL_Ps.
13318         (prescan_insns_for_dce): Walk insns backwards in bb rather than
13319         forwards.  Allocate and free arg_stores bitmap if needed, pass it
13320         down to deletable_insn_p, don't mark stores set in arg_stores
13321         bitmap, clear the bitmap at the beginning of each bb.
13322         * Makefile.in (dce.o): Depend on $(TM_P_H).
13323
13324 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
13325
13326         PR target/22599
13327         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
13328         to make sure the insn is a conditional test (bug 22599).  Reformat a
13329         few long lines.
13330
13331 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
13332
13333         PR middle-end/38431
13334         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
13335         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
13336         (gloog): Do not call cleanup_tree_cfg.
13337         (graphite_transform_loops): Call cleanup_tree_cfg after all
13338         scops have been code generated.
13339
13340 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
13341         * doc/gty.texi (Invoking the garbage collector): Added new node
13342         and section documenting ggc_collect.
13343
13344 2009-01-14  Richard Guenther  <rguenther@suse.de>
13345
13346         PR tree-optimization/38826
13347         PR middle-end/38477
13348         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
13349         initialization notes only if we actually emitted a warning.
13350         (intra_create_variable_infos): Add constraints for a result decl
13351         that is passed by hidden reference.
13352         (build_pred_graph): Mark all related variables non-direct on
13353         address-taking.
13354
13355 2009-01-14  Nick Clifton  <nickc@redhat.com>
13356
13357         * ira-conflicts.c: Include addresses.h for the definition of
13358         base_reg_class.
13359         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
13360         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
13361
13362 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
13363
13364         PR target/38811
13365         * Makefile.in (ira-lives.o): Add except.h.
13366
13367         * ira-lives.c: Include except.h.
13368         (process_bb_node_lives): Process can_throw_internal.
13369
13370 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
13371
13372         PR rtl-optimization/38774
13373         * combine.c (simplify_set): When undoing cc_use change, don't do
13374         PUT_CODE on the newly created comparison, but instead put back the
13375         old comparison.
13376
13377 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
13378
13379         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
13380         values.  Remove duplicate arm8 entry.
13381
13382 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13383
13384         PR tree-optimization/38786
13385         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
13386         the SSA_NAME case of expand_scalar_variables_expr.
13387         Set the type of an expression to the type of its assign statement.
13388         (expand_scalar_variables_expr): Also gather the scalar computation
13389         used to index the memory access.  Do not pass loop_p.
13390         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
13391         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
13392         the gimple_stmt_iterator where it inserts new code.
13393         Do not pass loop_p.
13394         (copy_bb_and_scalar_dependences): Do not pass loop_p.
13395         (translate_clast): Update call to copy_bb_and_scalar_dependences.
13396
13397 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
13398
13399         * graphite.h (debug_value): Removed.
13400         * graphite.c (debug_value): Removed.
13401
13402 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13403
13404         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
13405         ldrd/strd with two 32-bit instructions.
13406
13407 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
13408
13409         * config/arm/arm.c (struct processors): Pass for speed down into
13410         cost helper functions.
13411         (const_ok_for_op): Handle COMPARE and inequality nodes.
13412         (arm_rtx_costs_1): Rewrite.
13413         (arm_size_rtx_costs): Update prototype.
13414         (arm_rtx_costs): Pass speed down to helper functions.
13415         (arm_slowmul_rtx_costs): Rework cost calculations.
13416         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
13417         (arm_9e_rtx_costs): Likewise.
13418
13419 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
13420
13421         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
13422         relocations of local symbols wider than UNITS_PER_WORD are not valid.
13423         (alpha_legitimize_address): Do not split local symbols wider than
13424         UNITS_PER_WORD into HIGH/LO_SUM parts.
13425
13426 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
13427
13428         PR bootstrap/38580
13429         * gcc.c (process_command): Replace call to execvp with calls
13430         to pex_one and exit.
13431
13432 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
13433
13434         PR target/29141
13435         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
13436         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
13437         variant for devices with 3-byte PC.
13438         (__tablejump_elpm__): New.
13439
13440 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13441
13442         PR c/32041
13443         * c-parser.c (c_parser_postfix_expression): Allow `->' in
13444         offsetof member-designator, handle it as `[0].'.
13445
13446 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13447
13448         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
13449         function when not using named sections on targets with named sections
13450         if branch distance is less than 262132.
13451
13452 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
13453
13454         * combine.c (combine_instructions):  Recompute
13455         optimize_this_for_speed_p  for each BB in the main combine loop.
13456
13457 2009-01-12  Tomas Bily  <tbily@suse.cz>
13458
13459         PR middlend/38385
13460         * tree-loop-distribution.c (prop_phis): New function.
13461         (generate_builtin): Call prop_phis.
13462         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
13463
13464 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
13465
13466         PR tree-optimization/38807
13467         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
13468         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
13469
13470 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
13471
13472         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
13473         subreg of op0 to the original op0.
13474
13475 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
13476
13477         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
13478
13479 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
13480
13481         PR debug/7055
13482         * mips-tfile.c (parse_def): Fix parsing of def strings
13483         starting with digits.
13484
13485 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
13486
13487         PR target/38695
13488         * config/arm/arm.c (arm_is_long_call_p): Don't call
13489         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
13490
13491 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
13492
13493         * regrename.c (regrename_optimize): Fix dumping.
13494         (find_oldest_value_reg): Preserve REG_POINTER.
13495         (copy_hardreg_forward_1): Likewise.
13496
13497 2009-01-09  Diego Novillo  <dnovillo@google.com>
13498
13499         * gimple.h (struct gimple_statement_base) <uid>: Document
13500         the restrictions on its use.
13501         (gimple_uid): Tidy.
13502         (gimple_set_uid): Tidy.
13503
13504 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13505
13506         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
13507         zero guard even if align_bytes != 0 and count is smaller than
13508         size_needed.
13509
13510 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
13511
13512         PR rtl-optimization/38495
13513         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
13514         (add_range_and_copies_from_move_list): Print all added ranges.
13515         Add ranges to memory optimized destination.
13516
13517 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13518
13519         PR target/38686
13520         PR target/38708
13521         * config/i386/i386.c (override_options): Reject
13522         -mstringop-strategy=rep_8byte with -m32.
13523         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
13524         to 1.  Do count comparison against epilogue_size_needed at compile
13525         time even when count_exp was constant forced into register.  For
13526         size_needed don't jump to epilogue, instead just avoid aligning
13527         and invoke the body algorithm.  If need_zero_guard, add zero guard
13528         even if count is non-zero, but smaller than size_needed + number of
13529         bytes that could be stored for alignment.
13530         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
13531         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
13532         but smaller than size_needed + number of bytes that could be stored
13533         for alignment.  Compare size_needed with epilogue_size_needed instead
13534         of desired_align - align, don't adjust size_needed, pass
13535         epilogue_size_needed to the epilogue expanders.
13536
13537         PR c/35742
13538         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
13539
13540 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13541
13542         * pa.c (last_address): Change to unsigned.
13543         (update_total_code_bytes): Change argument to unsigned.  Don't
13544         check if insn addresses are set.
13545         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
13546         addresses are not set.
13547         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
13548
13549 2009-01-09  Nick Clifton  <nickc@redhat.com>
13550
13551         * config/sh/symbian.c: Replace uses of DECL_INLINE with
13552         DECL_DECLARED_INLINE_P.
13553
13554 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
13555
13556         PR middle-end/38347
13557         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
13558         GET_MODE (op0) in operand_subword_force calls.
13559
13560         PR middle-end/38771
13561         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
13562         fold_convert arg0 operands to TREE_TYPE (op0) first.
13563
13564 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
13565
13566         * params.def (ira-max-conflict-table-size): Decrease default value
13567         to 1000.
13568
13569 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
13570
13571         PR tree-optimization/37031
13572         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
13573         on parameter_set.
13574         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
13575         allocate it using gc instead of heap, use VEC_quick_push instead of
13576         VEC_safe_push.
13577         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
13578         instead of heap, use VEC_quick_push instead of VEC_safe_push.
13579         * tree-data-ref.h (struct access_matrix): Change matrix to gc
13580         allocated vector from heap allocated.
13581         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
13582         * tree-loop-linear.c (linear_transform_loops): Allocate nest
13583         vector only after perfect_loop_nest_depth call.
13584
13585 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
13586             Jan Sjodin  <jan.sjodin@amd.com>
13587
13588         PR tree-optimization/38559
13589         * graphite.c (debug_value, copy_constraint,
13590         swap_constraint_variables, scale_constraint_variable, ): New.
13591         (get_lower_bound, get_upper_bound): Removed.
13592         (graphite_trans_bb_strip_mine): Clean up this code that works
13593         only for constant number of iterations.  Fully copy upper and
13594         lower bound constraints, not only the constant part of them.
13595         * graphite.h (debug_value): Declared.
13596
13597 2009-01-08  Ira Rosen  <irar@il.ibm.com>
13598
13599         PR tree-optimization/37194
13600         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
13601         Don't add the cost of cost model guard in prologue to scalar
13602         outside cost in case of known number of iterations.
13603
13604 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
13605             Alan Modra  <amodra@bigpond.net.au>
13606
13607         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
13608         non-word-aligned REG+CONST addressing.
13609
13610 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13611
13612         PR target/38706
13613         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
13614         free_after_compilation when outputting a thunk.
13615         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
13616         Do not call free_after_compilation here.
13617
13618 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
13619
13620         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
13621         (ix86_valid_target_attribute_inner_p): Ditto.
13622
13623 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
13624
13625         PR tree-optimization/38492
13626         PR tree-optimization/38498
13627         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
13628         * tree-chrec.h (scev_is_linear_expression): Declared.
13629         * graphite.c (graphite_cannot_represent_loop_niter): New.
13630         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
13631         (graphite_loop_normal_form): Use gcc_assert.
13632         (scan_tree_for_params): Use CASE_CONVERT.
13633         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
13634         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
13635         Use gcc_assert.  Discard scops that contain unhandled cases.
13636         (build_scop_conditions): Return a boolean status for unhandled cases.
13637         (strip_mine_profitable_p): Print the loop number, not its depth.
13638         (is_interchange_valid): Pass the depth of the loop nest, don't
13639         recompute it wrongly.
13640         (graphite_trans_bb_block): Same.
13641         (graphite_trans_bb_block): Print tentative of loop blocking.
13642         (graphite_trans_scop_block): Do not print that the loop has been
13643         blocked.
13644         (graphite_transform_loops): Do not handle scops that contain condition
13645         scalar phi nodes.
13646
13647 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
13648
13649         AVX Programming Reference (December, 2008)
13650         * config/i386/avxintrin.h (_mm256_stream_si256): New.
13651         (_mm256_stream_pd): Likewise.
13652         (_mm256_stream_ps): Likewise.
13653
13654         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
13655         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
13656         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
13657         (bdesc_special_args): Add __builtin_ia32_movntdq256,
13658         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
13659         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
13660         (ix86_expand_special_args_builtin): Likewise.
13661
13662         * config/i386/sse.md (AVXMODEDI): New.
13663         (avx_movnt<mode>): Likewise.
13664         (avx_movnt<mode>): Likewise.
13665         (<sse>_movnt<mode>): Remove AVX support.
13666         (sse2_movntv2di): Likewise.
13667
13668 2009-01-07  Richard Guenther  <rguenther@suse.de>
13669
13670         PR middle-end/38751
13671         * fold-const.c (extract_muldiv): Remove obsolete comment.
13672         (fold_plusminus_mult_expr): Undo MINUS_EXPR
13673         to PLUS_EXPR canonicalization for the canonicalization.
13674
13675 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
13676
13677         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
13678         hosted cross-compilers generating less efficient code.
13679
13680 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13681
13682         * function.h (rtl_data): Add a dbr_scheduled_p field.
13683         * reorg.c (dbr_schedule): Set it.
13684         (gate_handle_delay_slots): Check it.
13685         * config/mips/mips.c (mips_base_delayed_branch): Delete.
13686         (mips_reorg): Check flag_delayed_branch instead of
13687         mips_base_delayed_branch.
13688         (mips_override_options): Don't set mips_base_delayed_branch
13689         or flag_delayed_branch.
13690
13691 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
13692
13693         PR rtl-optimization/38426.
13694         * ira.c (ira): Set current_function_is_leaf earlier.
13695
13696 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
13697
13698         PR rtl-optimization/38722
13699         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
13700         too early, only set a flag and modify after last possible
13701         undo_all point.
13702
13703 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
13704
13705         PR c/34252
13706         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
13707         * real.c (decimal_single_format): Correct values of emin and emax.
13708         (decimal_double_format): Ditto.
13709         (decimal_quad_format): Ditto.
13710         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
13711         computation of DECnn_MIN and DECnn_MAX for corrected values of
13712         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
13713         __DECnn_MIN__, and adjust its computation for the corrected value
13714         of emin.
13715
13716 2009-01-06  Jan Hubicka  <jh@suse.cz>
13717
13718         PR target/38744
13719         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
13720
13721 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
13722
13723         * doc/contrib.texi (Contributors): Slightly adjust the end note.
13724         Add Robert Clark to the list of testers.
13725
13726 2009-01-06  Jan Hubicka  <jh@suse.cz>
13727             Kai Tietz  <kai.tietz@onevision.com>
13728
13729         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
13730         * config/i386/i386.c (ix86_expand_call): Add clobbers.
13731
13732 2009-01-06  Jan Hubicka  <jh@suse.cz>
13733             Kai Tietz  <kai.tietz@onevision.com>
13734
13735         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
13736         for w64 ABI.
13737         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
13738         (ix86_nsaved_regs): Count only general purpose regs.
13739         (ix86_nsaved_sseregs): New.
13740         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
13741         to 16 for w64; compute padding and size of sse reg save area.
13742         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
13743         general purpose regs.
13744         (ix86_emit_save_sse_regs_using_mov): New.
13745         (ix86_expand_prologue): Save SSE regs if needed.
13746         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
13747         (ix86_emit_restore_sse_regs_using_mov): New.
13748         (ix86_expand_epilogue): Save SSE regs if needed.
13749
13750 2009-01-06  Jan Hubicka  <jh@suse.cz>
13751             Kai Tietz  <kai.tietz@onevision.com>
13752
13753         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
13754         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
13755         functions when accumulate outgoing args is off.
13756
13757 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
13758
13759         PR bootstrap/38742
13760         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
13761         before using pseudos_have_intersected_live_ranges_p.
13762
13763         * ira-int.h (ira_assert): Always define.
13764
13765 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
13766
13767         AVX Programming Reference (December, 2008)
13768         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
13769         (_mm256_permute2_pd): Likewise.
13770         (_mm_permute2_ps): Likewise.
13771         (_mm256_permute2_ps): Likewise.
13772         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
13773         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
13774
13775         * config/i386/i386.c (ix86_builtins): Remove
13776         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
13777         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
13778         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
13779         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
13780         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
13781         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
13782         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
13783         __builtin_ia32_vpermil2ps256.
13784         (ix86_init_mmx_sse_builtins): Updated.
13785         (ix86_expand_args_builtin): Likewise.
13786
13787 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13788
13789         * pa.c (output_call): Relocate non-jump insns in the delay slot of
13790         long absolute calls when generating PA 2.0 code.
13791
13792 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
13793
13794         PR rtl-optimization/38583
13795         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
13796
13797         * params.def (ira-max-conflict-table-size): New.
13798
13799         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
13800
13801         * ira.h (ira_conflicts_p): New external definition.
13802
13803         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
13804         table.  Report this.  Return result of building.
13805         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
13806         building conflict table.
13807
13808         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
13809         (ira_color): Use ira_conflicts_p.
13810
13811         * global.c: Include ira.h.
13812         (pseudo_for_reload_consideration_p, build_insn_chain): Use
13813         ira_conflicts_p.
13814
13815         * Makefile.in (global.o): Add ira.h.
13816
13817         * ira-build.c (mark_all_loops_for_removal,
13818         propagate_some_info_from_allocno): New.
13819         (remove_unnecessary_allocnos): Call
13820         propagate_some_info_from_allocno.
13821         (remove_low_level_allocnos): New.
13822         (remove_unnecessary_regions): Add parameter.  Call
13823         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
13824         parameter to remove_unnecessary_regions.
13825         (ira_build): Remove all regions but root if the conflict table was
13826         not built.  Update conflict hard regs for allocnos crossing calls.
13827
13828         * ira.c (ira_conflicts_p): New global.
13829         (ira): Define and use ira_conflicts_p.
13830
13831         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
13832         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
13833         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
13834
13835 2009-01-06  Ben Elliston  <bje@au.ibm.com>
13836
13837         * gengtype-lex.l (YY_NO_INPUT): Define.
13838
13839 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13840
13841         PR c/34911
13842         * c-common.c (handle_vector_size_attribute): Also reject
13843         BOOLEAN_TYPE types.
13844
13845 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
13846
13847         PR tree-optimization/38492
13848         * graphite.c (rename_map_elt, debug_rename_elt,
13849         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
13850         rename_map_elt_info, eq_rename_map_elts,
13851         get_new_name_from_old_name, bb_in_sese_p): Moved around.
13852         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
13853         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
13854         (sese_build_livein_liveouts): New.
13855         (new_sese, free_sese): New.
13856         (new_scop): Call new_sese.
13857         (free_scop): Call free_sese.
13858         (rename_variables_from_edge, rename_phis_end_scop): Removed.
13859         (register_old_new_names): Renamed register_old_and_new_names.
13860         (register_scop_liveout_renames, add_loop_exit_phis,
13861         insert_loop_close_phis, struct igp,
13862         default_liveout_before_guard, add_guard_exit_phis,
13863         insert_guard_phis, copy_renames): New.
13864         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
13865         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
13866         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
13867         (scop_adjust_phis_for_liveouts): New.
13868         (gloog): Call scop_adjust_phis_for_liveouts.
13869
13870         * graphite.h (struct sese): Documented.  Added fields liveout,
13871         num_ver and livein.
13872         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
13873         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
13874         (struct scop): Added field liveout_renames.
13875         (SCOP_LIVEOUT_RENAMES): New.
13876
13877 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13878
13879         PR tree-optimization/38510
13880         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
13881         (translate_clast): Call recompute_all_dominators before
13882         graphite_verify.
13883         (gloog): Call recompute_all_dominators before graphite_verify.
13884
13885 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13886             Jan Sjodin  <jan.sjodin@amd.com>
13887
13888         PR tree-optimization/38500
13889         * graphite.c (create_sese_edges): Call fix_loop_structure after
13890         splitting blocks.
13891
13892 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
13893
13894         * config.gcc: Add m32r*-*-rtems*.
13895         * config/m32r/rtems.h: New file.
13896
13897 2009-01-05  Ben Elliston  <bje@au.ibm.com>
13898
13899         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
13900         (.po.pox): Likewise.
13901         (po/gcc.pot): Likewise.
13902
13903 2009-01-04  David S. Miller  <davem@davemloft.net>
13904
13905         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
13906         (STARTING_FRAME_OFFSET): Always set to zero.
13907
13908 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
13909
13910         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
13911         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
13912         fixed-point types, and vectors of the same.
13913
13914 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
13915
13916         * config/mips/sync.md (*mb_barrier): Rename to...
13917         (*memory_barrier): ...this.
13918
13919 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
13920
13921         * doc/extend.texi (Function Attributes): Move @cindex after @item
13922         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
13923         and put in alphabetical order. Fix 'target' name and put in order.
13924         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
13925         typos.
13926
13927 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
13928
13929         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
13930         (memory_barrier): Expand as unspec instead of unspec_volatile.
13931         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13932         (*memory_barrier): Define as unspec instead of unspec_volatile.
13933         Use (match_dup 0) as input operand.
13934
13935         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
13936         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
13937         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
13938         scratch register.  Remove operand 1.
13939         (*stbar): Define as unspec instead of unspec_volatile.
13940         Use (match_dup 0) as input operand, remove (const_int 8).
13941         (*membar): Define as unspec instead of unspec_volatile.
13942         Use (match_dup 0) as input operand, remove input operand 2.
13943
13944         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
13945         (memory_barrier): Expand as unspec instead of unspec_volatile.
13946         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13947         (*memory_barrier): Define as unspec instead of unspec_volatile.
13948         Use (match_dup 0) as input operand.
13949
13950         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
13951         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13952         Set volatile flag on operand 0.
13953         (*memory_barrier): New insn pattern.
13954
13955         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
13956         insn operands.
13957         (*memory_barrier): Use (match_dup 0) as input operand.
13958
13959         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
13960         Remove mem:BLK from insn operands.  Use Pmode scratch register.
13961         Set volatile flag on operand 0.
13962         (*mb_internal): New insn pattern.
13963
13964         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
13965
13966 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
13967
13968         PR middle-end/38586
13969         * function.c (struct temp_slot): Move to the section of the file
13970         that deals with temp slots.  Remove field 'address'.
13971         (temp_slot_address_table): New hash table of address -> temp slot.
13972         (struct temp_slot_address_entry): New struct, items for the table.
13973         (temp_slot_address_compute_hash, temp_slot_address_hash,
13974         temp_slot_address_eq, insert_temp_slot_address): Support functions
13975         for the new table.
13976         (find_temp_slot_from_address): Rewrite to use the new hash table.
13977         (remove_unused_temp_slot_addresses): Remove addresses of temp
13978         slots that have been made available.
13979         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
13980         worker function for remove_unused_temp_slot_addresses.
13981         (assign_stack_temp_for_type): Don't clear the temp slot address list.
13982         Add the temp slot address to the address -> temp slot map.
13983         (update_temp_slot_address): Update via insert_temp_slot_address.
13984         (free_temp_slots): Call remove_unused_temp_slot_addresses.
13985         (pop_temp_slots): Likewise.
13986         (init_temp_slots): Allocate the address -> temp slot map, or empty
13987         the map if it is already allocated.
13988         (prepare_function_start): Initialize temp slot processing.
13989
13990 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
13991
13992         PR middle-end/38584
13993         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
13994         Calculate the size of all stack vars assuming no packing of stack
13995         vars will happen, replacing a quadratic algorithm with a linear one.
13996
13997 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
13998
13999         PR target/38707
14000         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
14001         can't be used.
14002
14003 2009-01-03  Diego Novillo  <dnovillo@google.com>
14004
14005         * doc/contrib.texi: Update contributions.
14006
14007 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
14008
14009         PR c++/38705
14010         * builtins.c (fold_builtin_memory_op): Give up if either operand
14011         is volatile.  Set srctype or desttype to non-qualified version
14012         of the other type.
14013
14014         PR c/38700
14015         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
14016         and FUNCTION_DECLs.
14017
14018 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
14019
14020         PR rtl-optimization/35805
14021         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
14022         problem if fast dce is able to remove any instructions.
14023         * dce.c (dce_process_block): Fix dump message.
14024
14025 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
14026
14027         PR 33649
14028         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
14029
14030 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
14031
14032         PR middle-end/38690
14033         * tree-flow.h (op_code_prio, op_prio): New prototypes.
14034         * tree-pretty-print.c (op_code_prio): New function.
14035         (op_prio): No longer static.  Use op_code_prio.
14036         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
14037         Use op_prio and op_code_prio to determine if () should be
14038         printed around operand(s) or not.
14039
14040         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
14041         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
14042         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
14043         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
14044         pp_character instead of pp_string for single letter printing.
14045
14046 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
14047
14048         * doc/extend.texi: Fix '#pragma GCC option' typo.
14049
14050 2009-01-02  Richard Guenther  <rguenther@suse.de>
14051
14052         * doc/install.texi (--enable-checking): Mention different
14053         default for stage1.
14054         (--enable-stage1-checking): Document.
14055
14056 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
14057
14058         PR middle-end/30142
14059         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
14060         case to be an error.
14061
14062 2009-01-02  Ben Elliston  <bje@au.ibm.com>
14063
14064         * config/fp-bit.h (pack_d): Constify argument.
14065         * config/fp-bit.c (makenan): Constify return type. Remove casts.
14066         (isnan): Constify argument.
14067         (isinf): Likewise.
14068         (iszero): Likewise.
14069         (pack_d): Likewise.
14070         (_fpadd_parts): Constify return type.
14071         (_fpmul_parts): Likewise.
14072         (_fpdiv_parts): Likewise.
14073
14074 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
14075
14076         PR c/36489
14077         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
14078         warn about overwriting initializer with side-effects or
14079         -Woverride-init if !IMPLICIT.
14080         (output_init_element): Likewise.  Pass IMPLICIT down to
14081         add_pending_init.
14082         (process_init_element): Add IMPLICIT argument.  Pass it down
14083         to output_init_element.
14084         (push_init_element, pop_init_level, set_designator): Adjust
14085         process_init_element callers.
14086         (set_nonincremental_init, set_nonincremental_init_from_string):
14087         Adjust add_pending_init callers.
14088         (output_pending_init_elements): Adjust output_init_element callers.
14089         * c-tree.h (process_init_element): Adjust prototype.
14090         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
14091         process_init_element callers.
14092
14093 \f
14094 Copyright (C) 2009 Free Software Foundation, Inc.
14095
14096 Copying and distribution of this file, with or without modification,
14097 are permitted in any medium without royalty provided the copyright
14098 notice and this notice are preserved.